From 173c5dd98ba96fe60ed0084ea6b64ae9213329b5 Mon Sep 17 00:00:00 2001 From: Ivan Kondov <ivan.kondov@kit.edu> Date: Fri, 21 Jul 2017 19:07:57 +0200 Subject: [PATCH] added inputs for exercise 3 --- .../3_files_and_commands/A/image_tiling.json | 140 ++++++++++++++++++ .../inputs/3_files_and_commands/A/letter.png | Bin 0 -> 9117 bytes .../inputs/3_files_and_commands/A/piece-1.png | Bin 2242 -> 2801 bytes .../inputs/3_files_and_commands/A/piece-2.png | Bin 1781 -> 2692 bytes .../inputs/3_files_and_commands/A/tile-0.png | Bin 0 -> 3060 bytes .../inputs/3_files_and_commands/A/tile-1.png | Bin 0 -> 3102 bytes .../inputs/3_files_and_commands/A/tile-2.png | Bin 0 -> 3166 bytes .../inputs/3_files_and_commands/A/tile-3.png | Bin 0 -> 2807 bytes .../3_files_and_commands/C/image_tiling.json | 140 ++++++++++++++++++ .../inputs/3_files_and_commands/C/letter.png | Bin 0 -> 9990 bytes .../inputs/3_files_and_commands/C/piece-1.png | Bin 0 -> 3243 bytes .../inputs/3_files_and_commands/C/piece-2.png | Bin 0 -> 3584 bytes .../inputs/3_files_and_commands/C/tile-0.png | Bin 0 -> 3661 bytes .../inputs/3_files_and_commands/C/tile-1.png | Bin 0 -> 3022 bytes .../inputs/3_files_and_commands/C/tile-2.png | Bin 0 -> 3947 bytes .../inputs/3_files_and_commands/C/tile-3.png | Bin 0 -> 3233 bytes .../3_files_and_commands/D/image_tiling.json | 140 ++++++++++++++++++ .../inputs/3_files_and_commands/D/letter.png | Bin 0 -> 6827 bytes .../inputs/3_files_and_commands/D/piece-1.png | Bin 0 -> 3437 bytes .../inputs/3_files_and_commands/D/piece-2.png | Bin 0 -> 922 bytes .../inputs/3_files_and_commands/D/tile-0.png | Bin 0 -> 815 bytes .../inputs/3_files_and_commands/D/tile-1.png | Bin 0 -> 3466 bytes .../inputs/3_files_and_commands/D/tile-2.png | Bin 0 -> 820 bytes .../inputs/3_files_and_commands/D/tile-3.png | Bin 0 -> 3476 bytes .../3_files_and_commands/E/image_tiling.json | 140 ++++++++++++++++++ .../inputs/3_files_and_commands/E/letter.png | Bin 0 -> 1049 bytes .../inputs/3_files_and_commands/E/piece-1.png | Bin 0 -> 507 bytes .../inputs/3_files_and_commands/E/piece-2.png | Bin 0 -> 479 bytes .../inputs/3_files_and_commands/E/tile-0.png | Bin 0 -> 471 bytes .../inputs/3_files_and_commands/E/tile-1.png | Bin 0 -> 442 bytes .../inputs/3_files_and_commands/E/tile-2.png | Bin 0 -> 488 bytes .../inputs/3_files_and_commands/E/tile-3.png | Bin 0 -> 516 bytes .../3_files_and_commands/H/image_tiling.json | 140 ++++++++++++++++++ .../inputs/3_files_and_commands/H/letter.png | Bin 0 -> 1043 bytes .../inputs/3_files_and_commands/H/piece-1.png | Bin 0 -> 512 bytes .../inputs/3_files_and_commands/H/piece-2.png | Bin 0 -> 534 bytes .../inputs/3_files_and_commands/H/tile-0.png | Bin 0 -> 519 bytes .../inputs/3_files_and_commands/H/tile-1.png | Bin 0 -> 513 bytes .../inputs/3_files_and_commands/H/tile-2.png | Bin 0 -> 511 bytes .../inputs/3_files_and_commands/H/tile-3.png | Bin 0 -> 508 bytes .../3_files_and_commands/M/image_tiling.json | 140 ++++++++++++++++++ .../inputs/3_files_and_commands/M/letter.png | Bin 0 -> 10102 bytes .../inputs/3_files_and_commands/M/piece-1.png | Bin 0 -> 2995 bytes .../inputs/3_files_and_commands/M/piece-2.png | Bin 0 -> 2833 bytes .../inputs/3_files_and_commands/M/tile-0.png | Bin 0 -> 3120 bytes .../inputs/3_files_and_commands/M/tile-1.png | Bin 0 -> 2910 bytes .../inputs/3_files_and_commands/M/tile-2.png | Bin 0 -> 2979 bytes .../inputs/3_files_and_commands/M/tile-3.png | Bin 0 -> 3058 bytes .../3_files_and_commands/N/image_tiling.json | 140 ++++++++++++++++++ .../inputs/3_files_and_commands/N/letter.png | Bin 0 -> 5948 bytes .../inputs/3_files_and_commands/N/piece-1.png | Bin 0 -> 1249 bytes .../inputs/3_files_and_commands/N/piece-2.png | Bin 0 -> 3007 bytes .../inputs/3_files_and_commands/N/tile-0.png | Bin 0 -> 2986 bytes .../inputs/3_files_and_commands/N/tile-1.png | Bin 0 -> 1262 bytes .../inputs/3_files_and_commands/N/tile-2.png | Bin 0 -> 1189 bytes .../inputs/3_files_and_commands/N/tile-3.png | Bin 0 -> 2891 bytes .../3_files_and_commands/O/image_tiling.json | 111 ++++++++++++++ .../inputs/3_files_and_commands/O/letter.png | Bin 0 -> 11392 bytes .../inputs/3_files_and_commands/O/piece-1.png | Bin 0 -> 3775 bytes .../inputs/3_files_and_commands/O/tile-0.png | Bin 0 -> 3827 bytes .../inputs/3_files_and_commands/O/tile-1.png | Bin 0 -> 3899 bytes .../inputs/3_files_and_commands/O/tile-2.png | Bin 0 -> 4189 bytes .../inputs/3_files_and_commands/O/tile-3.png | Bin 0 -> 3788 bytes .../3_files_and_commands/S/image_tiling.json | 140 ++++++++++++++++++ .../inputs/3_files_and_commands/S/letter.png | Bin 0 -> 10182 bytes .../inputs/3_files_and_commands/S/piece-1.png | Bin 0 -> 3201 bytes .../inputs/3_files_and_commands/S/piece-2.png | Bin 0 -> 3925 bytes .../inputs/3_files_and_commands/S/tile-0.png | Bin 0 -> 3819 bytes .../inputs/3_files_and_commands/S/tile-1.png | Bin 0 -> 3303 bytes .../inputs/3_files_and_commands/S/tile-2.png | Bin 0 -> 3230 bytes .../inputs/3_files_and_commands/S/tile-3.png | Bin 0 -> 3894 bytes .../3_files_and_commands/T/image_tiling.json | 140 ++++++++++++++++++ .../inputs/3_files_and_commands/T/letter.png | Bin 0 -> 960 bytes .../inputs/3_files_and_commands/T/piece-1.png | Bin 0 -> 504 bytes .../inputs/3_files_and_commands/T/piece-2.png | Bin 0 -> 537 bytes .../inputs/3_files_and_commands/T/tile-0.png | Bin 0 -> 507 bytes .../inputs/3_files_and_commands/T/tile-1.png | Bin 0 -> 513 bytes .../inputs/3_files_and_commands/T/tile-2.png | Bin 0 -> 505 bytes .../inputs/3_files_and_commands/T/tile-3.png | Bin 0 -> 505 bytes .../3_files_and_commands/U/image_tiling.json | 140 ++++++++++++++++++ .../inputs/3_files_and_commands/U/letter.png | Bin 0 -> 5991 bytes .../inputs/3_files_and_commands/U/piece-1.png | Bin 0 -> 2865 bytes .../inputs/3_files_and_commands/U/piece-2.png | Bin 0 -> 543 bytes .../inputs/3_files_and_commands/U/tile-0.png | Bin 0 -> 505 bytes .../inputs/3_files_and_commands/U/tile-1.png | Bin 0 -> 505 bytes .../inputs/3_files_and_commands/U/tile-2.png | Bin 0 -> 3042 bytes .../inputs/3_files_and_commands/U/tile-3.png | Bin 0 -> 2895 bytes .../3_files_and_commands/V/image_tiling.json | 140 ++++++++++++++++++ .../inputs/3_files_and_commands/V/letter.png | Bin 0 -> 10611 bytes .../inputs/3_files_and_commands/V/piece-1.png | Bin 0 -> 3343 bytes .../inputs/3_files_and_commands/V/piece-2.png | Bin 0 -> 2740 bytes .../inputs/3_files_and_commands/V/tile-0.png | Bin 0 -> 3514 bytes .../inputs/3_files_and_commands/V/tile-1.png | Bin 0 -> 3349 bytes .../inputs/3_files_and_commands/V/tile-2.png | Bin 0 -> 2926 bytes .../inputs/3_files_and_commands/V/tile-3.png | Bin 0 -> 3189 bytes .../3_files_and_commands/W/image_tiling.json | 140 ++++++++++++++++++ .../inputs/3_files_and_commands/W/letter.png | Bin 0 -> 17849 bytes .../inputs/3_files_and_commands/W/piece-1.png | Bin 0 -> 4849 bytes .../inputs/3_files_and_commands/W/piece-2.png | Bin 0 -> 3949 bytes .../inputs/3_files_and_commands/W/tile-0.png | Bin 0 -> 5539 bytes .../inputs/3_files_and_commands/W/tile-1.png | Bin 0 -> 5162 bytes .../inputs/3_files_and_commands/W/tile-2.png | Bin 0 -> 4893 bytes .../inputs/3_files_and_commands/W/tile-3.png | Bin 0 -> 4761 bytes .../3_files_and_commands/X/image_tiling.json | 111 ++++++++++++++ .../inputs/3_files_and_commands/X/letter.png | Bin 0 -> 10440 bytes .../inputs/3_files_and_commands/X/piece-1.png | Bin 0 -> 3096 bytes .../inputs/3_files_and_commands/X/tile-0.png | Bin 0 -> 3268 bytes .../inputs/3_files_and_commands/X/tile-1.png | Bin 0 -> 3425 bytes .../inputs/3_files_and_commands/X/tile-2.png | Bin 0 -> 3150 bytes .../inputs/3_files_and_commands/X/tile-3.png | Bin 0 -> 3604 bytes .../3_files_and_commands/Y/image_tiling.json | 140 ++++++++++++++++++ .../inputs/3_files_and_commands/Y/letter.png | Bin 0 -> 8559 bytes .../inputs/3_files_and_commands/Y/piece-1.png | Bin 0 -> 1281 bytes .../inputs/3_files_and_commands/Y/piece-2.png | Bin 0 -> 3349 bytes .../inputs/3_files_and_commands/Y/tile-0.png | Bin 0 -> 3758 bytes .../inputs/3_files_and_commands/Y/tile-1.png | Bin 0 -> 3500 bytes .../inputs/3_files_and_commands/Y/tile-2.png | Bin 0 -> 1166 bytes .../inputs/3_files_and_commands/Y/tile-3.png | Bin 0 -> 1242 bytes .../3_files_and_commands/Z/image_tiling.json | 140 ++++++++++++++++++ .../inputs/3_files_and_commands/Z/letter.png | Bin 0 -> 5201 bytes .../inputs/3_files_and_commands/Z/piece-1.png | Bin 0 -> 2933 bytes .../inputs/3_files_and_commands/Z/piece-2.png | Bin 0 -> 1261 bytes .../inputs/3_files_and_commands/Z/tile-0.png | Bin 0 -> 1083 bytes .../inputs/3_files_and_commands/Z/tile-1.png | Bin 0 -> 3062 bytes .../inputs/3_files_and_commands/Z/tile-2.png | Bin 0 -> 2791 bytes .../inputs/3_files_and_commands/Z/tile-3.png | Bin 0 -> 1275 bytes 126 files changed, 2182 insertions(+) create mode 100644 exercises/inputs/3_files_and_commands/A/image_tiling.json create mode 100644 exercises/inputs/3_files_and_commands/A/letter.png create mode 100644 exercises/inputs/3_files_and_commands/A/tile-0.png create mode 100644 exercises/inputs/3_files_and_commands/A/tile-1.png create mode 100644 exercises/inputs/3_files_and_commands/A/tile-2.png create mode 100644 exercises/inputs/3_files_and_commands/A/tile-3.png create mode 100644 exercises/inputs/3_files_and_commands/C/image_tiling.json create mode 100644 exercises/inputs/3_files_and_commands/C/letter.png create mode 100644 exercises/inputs/3_files_and_commands/C/piece-1.png create mode 100644 exercises/inputs/3_files_and_commands/C/piece-2.png create mode 100644 exercises/inputs/3_files_and_commands/C/tile-0.png create mode 100644 exercises/inputs/3_files_and_commands/C/tile-1.png create mode 100644 exercises/inputs/3_files_and_commands/C/tile-2.png create mode 100644 exercises/inputs/3_files_and_commands/C/tile-3.png create mode 100644 exercises/inputs/3_files_and_commands/D/image_tiling.json create mode 100644 exercises/inputs/3_files_and_commands/D/letter.png create mode 100644 exercises/inputs/3_files_and_commands/D/piece-1.png create mode 100644 exercises/inputs/3_files_and_commands/D/piece-2.png create mode 100644 exercises/inputs/3_files_and_commands/D/tile-0.png create mode 100644 exercises/inputs/3_files_and_commands/D/tile-1.png create mode 100644 exercises/inputs/3_files_and_commands/D/tile-2.png create mode 100644 exercises/inputs/3_files_and_commands/D/tile-3.png create mode 100644 exercises/inputs/3_files_and_commands/E/image_tiling.json create mode 100644 exercises/inputs/3_files_and_commands/E/letter.png create mode 100644 exercises/inputs/3_files_and_commands/E/piece-1.png create mode 100644 exercises/inputs/3_files_and_commands/E/piece-2.png create mode 100644 exercises/inputs/3_files_and_commands/E/tile-0.png create mode 100644 exercises/inputs/3_files_and_commands/E/tile-1.png create mode 100644 exercises/inputs/3_files_and_commands/E/tile-2.png create mode 100644 exercises/inputs/3_files_and_commands/E/tile-3.png create mode 100644 exercises/inputs/3_files_and_commands/H/image_tiling.json create mode 100644 exercises/inputs/3_files_and_commands/H/letter.png create mode 100644 exercises/inputs/3_files_and_commands/H/piece-1.png create mode 100644 exercises/inputs/3_files_and_commands/H/piece-2.png create mode 100644 exercises/inputs/3_files_and_commands/H/tile-0.png create mode 100644 exercises/inputs/3_files_and_commands/H/tile-1.png create mode 100644 exercises/inputs/3_files_and_commands/H/tile-2.png create mode 100644 exercises/inputs/3_files_and_commands/H/tile-3.png create mode 100644 exercises/inputs/3_files_and_commands/M/image_tiling.json create mode 100644 exercises/inputs/3_files_and_commands/M/letter.png create mode 100644 exercises/inputs/3_files_and_commands/M/piece-1.png create mode 100644 exercises/inputs/3_files_and_commands/M/piece-2.png create mode 100644 exercises/inputs/3_files_and_commands/M/tile-0.png create mode 100644 exercises/inputs/3_files_and_commands/M/tile-1.png create mode 100644 exercises/inputs/3_files_and_commands/M/tile-2.png create mode 100644 exercises/inputs/3_files_and_commands/M/tile-3.png create mode 100644 exercises/inputs/3_files_and_commands/N/image_tiling.json create mode 100644 exercises/inputs/3_files_and_commands/N/letter.png create mode 100644 exercises/inputs/3_files_and_commands/N/piece-1.png create mode 100644 exercises/inputs/3_files_and_commands/N/piece-2.png create mode 100644 exercises/inputs/3_files_and_commands/N/tile-0.png create mode 100644 exercises/inputs/3_files_and_commands/N/tile-1.png create mode 100644 exercises/inputs/3_files_and_commands/N/tile-2.png create mode 100644 exercises/inputs/3_files_and_commands/N/tile-3.png create mode 100644 exercises/inputs/3_files_and_commands/O/image_tiling.json create mode 100644 exercises/inputs/3_files_and_commands/O/letter.png create mode 100644 exercises/inputs/3_files_and_commands/O/piece-1.png create mode 100644 exercises/inputs/3_files_and_commands/O/tile-0.png create mode 100644 exercises/inputs/3_files_and_commands/O/tile-1.png create mode 100644 exercises/inputs/3_files_and_commands/O/tile-2.png create mode 100644 exercises/inputs/3_files_and_commands/O/tile-3.png create mode 100644 exercises/inputs/3_files_and_commands/S/image_tiling.json create mode 100644 exercises/inputs/3_files_and_commands/S/letter.png create mode 100644 exercises/inputs/3_files_and_commands/S/piece-1.png create mode 100644 exercises/inputs/3_files_and_commands/S/piece-2.png create mode 100644 exercises/inputs/3_files_and_commands/S/tile-0.png create mode 100644 exercises/inputs/3_files_and_commands/S/tile-1.png create mode 100644 exercises/inputs/3_files_and_commands/S/tile-2.png create mode 100644 exercises/inputs/3_files_and_commands/S/tile-3.png create mode 100644 exercises/inputs/3_files_and_commands/T/image_tiling.json create mode 100644 exercises/inputs/3_files_and_commands/T/letter.png create mode 100644 exercises/inputs/3_files_and_commands/T/piece-1.png create mode 100644 exercises/inputs/3_files_and_commands/T/piece-2.png create mode 100644 exercises/inputs/3_files_and_commands/T/tile-0.png create mode 100644 exercises/inputs/3_files_and_commands/T/tile-1.png create mode 100644 exercises/inputs/3_files_and_commands/T/tile-2.png create mode 100644 exercises/inputs/3_files_and_commands/T/tile-3.png create mode 100644 exercises/inputs/3_files_and_commands/U/image_tiling.json create mode 100644 exercises/inputs/3_files_and_commands/U/letter.png create mode 100644 exercises/inputs/3_files_and_commands/U/piece-1.png create mode 100644 exercises/inputs/3_files_and_commands/U/piece-2.png create mode 100644 exercises/inputs/3_files_and_commands/U/tile-0.png create mode 100644 exercises/inputs/3_files_and_commands/U/tile-1.png create mode 100644 exercises/inputs/3_files_and_commands/U/tile-2.png create mode 100644 exercises/inputs/3_files_and_commands/U/tile-3.png create mode 100644 exercises/inputs/3_files_and_commands/V/image_tiling.json create mode 100644 exercises/inputs/3_files_and_commands/V/letter.png create mode 100644 exercises/inputs/3_files_and_commands/V/piece-1.png create mode 100644 exercises/inputs/3_files_and_commands/V/piece-2.png create mode 100644 exercises/inputs/3_files_and_commands/V/tile-0.png create mode 100644 exercises/inputs/3_files_and_commands/V/tile-1.png create mode 100644 exercises/inputs/3_files_and_commands/V/tile-2.png create mode 100644 exercises/inputs/3_files_and_commands/V/tile-3.png create mode 100644 exercises/inputs/3_files_and_commands/W/image_tiling.json create mode 100644 exercises/inputs/3_files_and_commands/W/letter.png create mode 100644 exercises/inputs/3_files_and_commands/W/piece-1.png create mode 100644 exercises/inputs/3_files_and_commands/W/piece-2.png create mode 100644 exercises/inputs/3_files_and_commands/W/tile-0.png create mode 100644 exercises/inputs/3_files_and_commands/W/tile-1.png create mode 100644 exercises/inputs/3_files_and_commands/W/tile-2.png create mode 100644 exercises/inputs/3_files_and_commands/W/tile-3.png create mode 100644 exercises/inputs/3_files_and_commands/X/image_tiling.json create mode 100644 exercises/inputs/3_files_and_commands/X/letter.png create mode 100644 exercises/inputs/3_files_and_commands/X/piece-1.png create mode 100644 exercises/inputs/3_files_and_commands/X/tile-0.png create mode 100644 exercises/inputs/3_files_and_commands/X/tile-1.png create mode 100644 exercises/inputs/3_files_and_commands/X/tile-2.png create mode 100644 exercises/inputs/3_files_and_commands/X/tile-3.png create mode 100644 exercises/inputs/3_files_and_commands/Y/image_tiling.json create mode 100644 exercises/inputs/3_files_and_commands/Y/letter.png create mode 100644 exercises/inputs/3_files_and_commands/Y/piece-1.png create mode 100644 exercises/inputs/3_files_and_commands/Y/piece-2.png create mode 100644 exercises/inputs/3_files_and_commands/Y/tile-0.png create mode 100644 exercises/inputs/3_files_and_commands/Y/tile-1.png create mode 100644 exercises/inputs/3_files_and_commands/Y/tile-2.png create mode 100644 exercises/inputs/3_files_and_commands/Y/tile-3.png create mode 100644 exercises/inputs/3_files_and_commands/Z/image_tiling.json create mode 100644 exercises/inputs/3_files_and_commands/Z/letter.png create mode 100644 exercises/inputs/3_files_and_commands/Z/piece-1.png create mode 100644 exercises/inputs/3_files_and_commands/Z/piece-2.png create mode 100644 exercises/inputs/3_files_and_commands/Z/tile-0.png create mode 100644 exercises/inputs/3_files_and_commands/Z/tile-1.png create mode 100644 exercises/inputs/3_files_and_commands/Z/tile-2.png create mode 100644 exercises/inputs/3_files_and_commands/Z/tile-3.png diff --git a/exercises/inputs/3_files_and_commands/A/image_tiling.json b/exercises/inputs/3_files_and_commands/A/image_tiling.json new file mode 100644 index 0000000..79aa69f --- /dev/null +++ b/exercises/inputs/3_files_and_commands/A/image_tiling.json @@ -0,0 +1,140 @@ +{ + "name": "Image tiling", + "fws": [ + { + "fw_id": 1, + "name": "Render an image from a character", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["character"], + "outputs": ["image"], + "command_spec": { + "command": [ + "convert", "-size", "800x800", + "-background", "white", + "-pointsize", "800", + "-fill", "blue", + "-gravity", "Center", + "-trim" + ], + "character": { + "binding": { + "prefix": "caption", + "separator": ":" + }, + "source": { + "type": "data", + "value": "A" + } + }, + "image": { + "target": { + "type": "path", + "value": "/tmp/letter.png" + } + } + } + } + ] + } + }, + { + "fw_id": 2, + "name": "Tile the image into four tiles", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["image", "tiled image"], + "command_spec": { + "command": [ + "convert", + "-crop", "2x2@" + ], + "image": { + "source": "image" + }, + "tiled image": { + "source": { + "type": "data", + "value": "/tmp/tile.png" + } + } + } + } + ] + } + }, + { + "fw_id": 3, + "name": "Rotate one tile 90 degrees clockwise", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["rotation angle", "piece 2"], + "outputs": ["top left"], + "command_spec": { + "command": ["convert", "-rotate"], + "rotation angle": { + "source": { + "type": "data", + "value": 90 + } + }, + "top left": { + "target": { + "type": "path", + "value": "/tmp/piece-2.png" + } + }, + "piece 2": { + "source": "piece 2" + } + } + } + ], + "piece 2": { + "type": "path", + "value": "/tmp/tile-0.png" + } + } + }, + { + "fw_id": 4, + "name": "Flip another tile vertically", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["piece 1"], + "outputs": ["bottom right"], + "command_spec": { + "command": ["convert", "-flip"], + "bottom right": { + "target": { + "type": "path", + "value": "/tmp/piece-1.png" + } + }, + "piece 1": { + "source": "piece 1" + } + } + } + ], + "piece 1": { + "type": "path", + "value": "/tmp/tile-3.png" + } + } + } + ], + "links": { + "1": [2], + "2": [3, 4] + }, + "metadata": {} +} diff --git a/exercises/inputs/3_files_and_commands/A/letter.png b/exercises/inputs/3_files_and_commands/A/letter.png new file mode 100644 index 0000000000000000000000000000000000000000..e44ef681640261267f37fad784a1b06446552d60 GIT binary patch literal 9117 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 N40KGiOEeuK{vTlP<^uo# literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/A/piece-1.png b/exercises/inputs/3_files_and_commands/A/piece-1.png index f035b2840e595cae557ab9e2c27060d031541210..f1ccb0f67f5fd1be8464ede3a8fb47ac7f43e16d 100644 GIT binary patch literal 2801 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 literal 2242 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 K47|EkkpFKbry_O$ diff --git a/exercises/inputs/3_files_and_commands/A/piece-2.png b/exercises/inputs/3_files_and_commands/A/piece-2.png index 6eab055743f7f8a3b20e1e023714e28ad3690bd9..247b3e532e879b0ca28b975d3b9f998b7dbcde31 100644 GIT binary patch literal 2692 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 literal 1781 zcmeHI{WqIu7>?>tt+vq(CDtx#aY`~@sgE#<1l3j71rg$-K0;b5T`IH|-6}p#q>glr zHgwt=B|(x}NU?rs6s^!{Lj*;rp+UzQRI#T&?uY#c`{8+?b6xj+UHA3g=e*}FIDX9E z$k5yn0)ZF>2Kb$TKy=U_j{zVc6*L<qxVDlHe{&e3lY7%)ni~!9mXksLevr+)qV5L( zZA%LX{~iJ{HU4;X$mM;&Lk|(?cNm|cnp52hg9YtwALrT@+lJxb#l^*)odNL&cCN-B zaC9`@d(XJQ4_+J)e<#oM)ldSNOrEDL*UjD=jefp_DZSkj$h3L!iB>oA1UiTR1>Wcu z#URAD+T2I6o1c69f2!IX9_b}6A3JU^{!AFAwQb#Y<K42p7L&Ctn>0MD?-I4rJ3HjL z=8&30Dra~!j86C}o0>n!8O8eJ58qD}tlKR4?3;rlau_PC9<u_)nAN8rH4`=Wq58hs zff+#cA<FK)=aVKMc2T;fa9+|M;`rxUI&W+^Ys|vyhOnOxo{_}S&~tE175)WkF_kE} zN!lvtpMyte1%nrXqBOhoB=&7ni3L>0E)w1w4O&CQCMMmY+J2IR0^n&317lGf6> zea#jY8Zn0AR1yg)6h}auPKRncGHQWWux5cuK(4mtZ+_ZMLe9aruLM8(px`VGnQG~7 zwf&YhDTC2dBI07rIO*3&$-MW><@L;+0%jt;xJ}_x+7hrzLC(X`eCE{UO52cA8bUKs z^1M$>lT+qkK?8Lr=5E~jDCBQxcJk_}O#<&br0Xa)NfEgKmr))qpxWxD-Vt~tq|}3( zh*&FWic3xx((hlc9F(NHx^olns3xWeJj+?DeI0$8BY7SgxCZxo_X1qw-J$%Nn>gUs zvnY0Mk?(H+WqX8~CpVGoCRYQh%S;PQusFwbJ9&@8FO{U6k&}j)7K0X<A1)o5p4)X4 zW+S%RzXEhy%(P<XwYAunamm__UT+X2`@Kgk0Q6p*8vr!D98%7DSLVxCSmkJG(1@<J zb|4Y|mv_N>O?U_fG$f^-1GA#Ty_rCSF!}Zafw%r+<<B5YHp$JJ4%Ie&7INA&Hk%O3 z1WPAhZ9=8plx<WUyt^-`!K<3n4KnoBApQg)A}CMkcJd9*Q%6fss%W+YrJ|T?*?`-^ zx!z*1w(8sfEGDkM1&Pk0{sx0m-KW7bN%ta{eI@1Ec{@2nxc3UkQ-qFh1C}+7g&@d- z7d$GEU)5tPvC3fQnMqLjG1LeIh$as_2Oy=&60~`BH*WwRf#wZ(uLoVsO8{IdTM@BD z<r5wAs5S-*u?d!6;<~g9hVIC226YP$qL(OotdF}6DZv|wjV!c#V5;1V>~l{TOqUvB zp^#o;tM!e{6mVOIqeSKE&I^*snZ(Bowkbwo%$8EMf@B$cNzB6yn|Ugn)yHOqRZtgA z5}Ga5(N%EBY-!YE1;?K)^+gD*BiPbiPw+uj^Ch_9dMfDFvg@m$O>sv+H+>H<iUr(5 zia9k#!Yp!aRdM`>%P7w*sZIhUO(qvM%Ah5cDm5;$iqf@I^tw=*rQmeDF<QF-3k_-< z?NOFbiij@i`_5kK#W2=(Gb)zf-tQk-LlMtF!$ic#R`p2|<!rt!33<p(eGt!@V@ur? zL<_2f-(H1_Y^R8CK*O4dr{iTI!hTu46`r->54%Iu;D&kYb2|m?sj|%VlBc!WLu#cC zER;2pk0HB&kMlf?YQo3Tt$G5`WUHQ|lIdhwINxNX&^1nRy9i1a^75c$F%e`c3}rR? zmyJ;Vc$@D;l56svqL3;WSfBN>Mf#U?MbyH5UTJE-z%#39rQ{_I&9ahbpr4Un4|%yy zz|)gg5EbA*Vok#mXz{VM1oybJ3E+Y_+B>))?a@dF7rcXuyR(zK;~`snM|XSsQx=9X e{}QB}iBC?<{BMCd?(Q%UKmxJH{OWyTe)<O-=}Tq+ diff --git a/exercises/inputs/3_files_and_commands/A/tile-0.png b/exercises/inputs/3_files_and_commands/A/tile-0.png new file mode 100644 index 0000000000000000000000000000000000000000..0207495f4974e831b9d65c13bf2ad8c62a7c7da5 GIT binary patch literal 3060 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/A/tile-1.png b/exercises/inputs/3_files_and_commands/A/tile-1.png new file mode 100644 index 0000000000000000000000000000000000000000..0f721fbe99612def82c48a01354c77cae8217fc6 GIT binary patch literal 3102 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/A/tile-2.png b/exercises/inputs/3_files_and_commands/A/tile-2.png new file mode 100644 index 0000000000000000000000000000000000000000..f8d9e46685f5abcc5006f5ada90624fd261db457 GIT binary patch literal 3166 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/A/tile-3.png b/exercises/inputs/3_files_and_commands/A/tile-3.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac7064a672e9ad30f67ae552215d8734c7525ba GIT binary patch literal 2807 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/C/image_tiling.json b/exercises/inputs/3_files_and_commands/C/image_tiling.json new file mode 100644 index 0000000..887ba9e --- /dev/null +++ b/exercises/inputs/3_files_and_commands/C/image_tiling.json @@ -0,0 +1,140 @@ +{ + "name": "Image tiling", + "fws": [ + { + "fw_id": 1, + "name": "Render an image from a character", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["character"], + "outputs": ["image"], + "command_spec": { + "command": [ + "convert", "-size", "800x800", + "-background", "white", + "-pointsize", "800", + "-fill", "blue", + "-gravity", "Center", + "-trim" + ], + "character": { + "binding": { + "prefix": "caption", + "separator": ":" + }, + "source": { + "type": "data", + "value": "C" + } + }, + "image": { + "target": { + "type": "path", + "value": "/tmp/letter.png" + } + } + } + } + ] + } + }, + { + "fw_id": 2, + "name": "Tile the image into four tiles", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["image", "tiled image"], + "command_spec": { + "command": [ + "convert", + "-crop", "2x2@" + ], + "image": { + "source": "image" + }, + "tiled image": { + "source": { + "type": "data", + "value": "/tmp/tile.png" + } + } + } + } + ] + } + }, + { + "fw_id": 3, + "name": "Rotate one tile 90 degrees clockwise", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["rotation angle", "piece 2"], + "outputs": ["top left"], + "command_spec": { + "command": ["convert", "-rotate"], + "rotation angle": { + "source": { + "type": "data", + "value": 90 + } + }, + "top left": { + "target": { + "type": "path", + "value": "/tmp/piece-2.png" + } + }, + "piece 2": { + "source": "piece 2" + } + } + } + ], + "piece 2": { + "type": "path", + "value": "/tmp/tile-0.png" + } + } + }, + { + "fw_id": 4, + "name": "Flip another tile vertically", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["piece 1"], + "outputs": ["bottom right"], + "command_spec": { + "command": ["convert", "-flip"], + "bottom right": { + "target": { + "type": "path", + "value": "/tmp/piece-1.png" + } + }, + "piece 1": { + "source": "piece 1" + } + } + } + ], + "piece 1": { + "type": "path", + "value": "/tmp/tile-3.png" + } + } + } + ], + "links": { + "1": [2], + "2": [3, 4] + }, + "metadata": {} +} diff --git a/exercises/inputs/3_files_and_commands/C/letter.png b/exercises/inputs/3_files_and_commands/C/letter.png new file mode 100644 index 0000000000000000000000000000000000000000..c0451f1e5bb044965eaf59184b40d0bbfdcb4a62 GIT binary patch literal 9990 zcmZ`<Wn5F={~uBU0xAju5{iIIcZ?8_5^0r`kW?7mEhr!$DV>UlNH}VAOr(Vo0)r7# z8U{?d&u{xa`#<<UxUbJW?@zzaIrnw%+1}~tsMAujP(vUPT1}0I1`r6zAp~;4<{~Kp znP}V5BM34FC2b`Lq%wi#)S8?yCh;^-SB6v!-drUNIBhfxv>}iH9tb4t4FqybfWlTF z5N}}!WX%c!k<EZWnA~z2_2nQCQi$H;C#nE|^K-Df3l<i@*cj;S1huuGs0gH`fyhYU z;{)vNfsql=)C3P70!2k2BLl?6fshcme;;sj15QrB!UC>e2bV7c8X7=B0Z2%|g$sb1 z8qm=J1_r>y1Xx)C2M6Hd0=&F{j}OSo0yQ;YU;r#EfRhvO^#u_TARz%{XM^HmP+bjv z`~VXZ0EYu-XJBs+U@)M)9mK={S6A@l3AlC*kdXlh1TZp!2M@s0r{L8q5E=?Td;q1T zptlz+FN42-K~ob*PX|Fkz}gxpDFI7M5E24%azJAvK%>F_KG@s@pFRO9Dsbx-aCZlp znE;6dtE=GMJ78l2<m5nfG^no!OG_Xu3}|bEn>T^3E_nSKEG~koD)9I*U}gr79)aOu zkdy@U^uUc9Ku{1kJA-fEfWAJsdKJ8Q0SXGh%nTSB0*Q&>$`zoh3gY9z=qPym7D!2f zg9C7U3|d;i^XK635NvG$6B9sB53H;J0s)SWKwTX;IRUh^z~3MI{tXHXfrtng7yzfI z01gN0>Ofc+pitoAML<ajY;A$OJkZbpZ{7fYelR@^1Oz~NIhdRTq@-Yc9GIB_QBh!M z2*}BSw>QA!K~@%MYXfX-z}Of_N`j9c!Q32}odte=U}FPBMS<_%K}H5}bOZ_t;NCru zk^*#efP@4{O$E}@V0|56v7osbxVeEZU%>nKfQJWodIA^>?CgNRK#-gaN=m@U2)J|! zsHgx32jJxee*Of1{(#%J!O9Bg=m1bCSX%?Z!Qj^~u)PiP^FeMd$jbxa;o#ptU~Ue| z%0O!?h>Zp8?4YLy+`S9z>_9*Oc=;04)PVVUP*DM<ra(gj@bCa)VxY1T^z{K#Q_$ZJ z?%V;-o`LReprr){2SHpMP*w(AUBJZ!eEtl+eg#EM`JTj0^g>JhAtaidO@lC?a#d3! zf_a3C2Etx-Ly`!(X_yc}qJaiPt=CC`2>Q4wIS{rI=YLnt6KN9&<aVv*L!~EvQyaPO zB6P+$x>{6Bsy@u{`<TRv_IUJOy`5b9P@CJVY7}+#d(rTXQ}G{9#w+dnN0du6CSTpZ zrT-}QYOleXQAvo{)rd_0xt&&214{njEaW^aaBxR%XSU&B+Ou_z-$eP6uJO3D(eqq+ z^+EHAg~1f5x!Q?EAw9U>pWCXjZ`B`0s$Un<uX?g7YS+Km)*AFSCiT8i!=J8iV=j#i z0pfw<%3;61n(&<n)UKObesPiKgWO(EcXD&;P<x*}J^tjJ;xT8V$qvS>hTpQnk@ID- zu3sk9w6?W+;5lq^>W$Y+U$Ya&x}~i!np2P4vP-L82lBb{&L4lYiMJfj3O-+7*E%(b zvA}G%o<OT5qGUzJ*!|$}=SjtjA6@8;Vy#Q*wHpr{e^)bc?Zke-&3rP2BIrLp+~o>p z-{>DWy>R91m_FK?^(yt}Hwtc-p&R}8r2TsI{8vWRcWr>b*A3`G+}+=B(;FC0qpO~U zo+^sEhxjW}{q!8~92Vva(Iv;4ee|K?7{PQbn_<&ss1A2bLb+r-EbCv~_v45B&>l#1 zF5dPgMmC~Ezt;DGrSVN99LX?0Nx`DIn~|1+{zI<$y;ovVkfr-WAAO}w#1OV^TOSqr zLhZ2~Wh58kkD;^T0H^iTXc7+I{<zI>79XU4HamjL@X}i#IZDiC7Hj-vtNuCmr^6Tc zjQ9On5>(abaK9(aR{r3TEb4wIotk1bWzXP%R^}*o4qJ@;uUy_?OWTmrJ3gHINugQO zcwmiGu4`#MveK7$r=XRV)WC&SLZiHG(1_~H%8Xo+cj_tu*F)8$5I`=CKR6Gj7@Hw@ z%P&P&CCQEockxC|?$fvpx!lwK$$MxWul?)J6Ku%7%Vs~?UR}qy7Ynbvy&O<$mYWT$ zOS#b+nH#13rd-=LaD)Go+MAy$7CZ6Ig}L3{36+M!gN;<qDQuc8OfzSN2bbXGL9bs< zC#AB*t5rqfm2-6|T7Jf>GYtzdIb^RpTa+N<HE4Dws^5Fdv6>&oE&D&6{S(A6i-wiT zj9J<QzPiXTT}#sT>>{p^tg@0B%763Udu3;*r+UBJ-sLjI*bB}HBz&1&-#k<Y$)hwA z(g|sThw6%rS23y#{`1;CF375TiWn8Kdreun=5EtZ-fR?<?B*f|1#fJc|JX;F^T6zj znS}qjRt|_|ahst@C^VY3o!1{P!+hS5xKBWx=YBbqzZTj($Tm(La_5&2@JG>BY0y}g zn)C)Ds%SlFb00ra2oc5zGU;P-7P{ZA^*YEqi*X-q_)k7-h<jvzr)}^<<b@@8L~e<q zSN;H^_btx0crE**hr%P$D_d2bd!2zgFDaHq)1*&h2Q<3(B0On&<12y`+U{WTA4l^W z_#A(8nA?&U_U&}IzXz=F=+s!t{*;6Fv_;92Vmq<Nbb`sXz5borx1TLI?fnV%)xmfh z?Zwf&<B0<+E!kPkjW%vuB`rB-R-Om!KCR5dEtfFa;@7e<<%aXTTLvx{(uRV!Xx?{) zJl=eoBlw(cYV6e<1ww3j^<;X1L?S}q+O$t!m@WmQ*E0!(!_9_7u@G5I`n5+B{-?cP z9_UN#(@#!uW|psA&<V;_#8Y5WN6HmuKC7Dk_<&N#Sc?W{nuCEQPMEN@o|sBX38VOL zmFu0``Z#R4wN7A7LVt%Cm&X~cC+=vOsqSD0+Qa5a9fXWOzA9I4toADik5w=$inqv% zJ-&<?)!z_cU&_$i9ZI*p)Sz;5X*rk4FNe*CWlHRlM!*KQknZ+tq3-0VS)Pp--NCQF zUkp8GZT<4yruNK3WRc@sY8~B&sxJ6CGZJg*iDuSfwyZ&^IC`9a75lk$&$fC~btCu5 zHQYd5Tdn+&(c~vXDvaazmAwAke+MB~P}(-I*2O3&mJ=3UUUZ+KttnGL`uWsG4$Ntr zysrAXLkX;Ky0JVL^9wn8Dg#Y%?HtE+E0ph@)Yz2{<Rl5ea7j}UrQTVvd;uGWe_JjJ z?_^$>Wfog(WGFM;!Q81<u`6zFI>sJR;_i={Cw=v3(vBV9YfZ4GTvJ?+NB=e~XVL!D z{UuUa_mW*yNmna96m3njWe+&aUI-b*vVE2nL3mkO&)|F~D~(NXPD0Smu=;`coe1@N zBm3w|`n_=*92qHhK=e76YRe7zck?jxt34f7pCF{0Rmnaq!1apl;s|?SOH}H?PiWkk zr-a!D@ev<wMMqRiSRpFrNZs6N0Ht(<JGb&SKM_^sjrxu{?!7d?ol}kB<8?+Xq1%pP za&J(((v+7@wcuvF%=A4suQMl<HXiCboozDsJn}bk#YHStR{uzT>R^)=V2EQFdG7iz zA|)HG`SG1)>2L)FLVnIaZ#*lIiOI{RA>2^^_!87EJ$k~si#>!3$|aARsEaq^oMorl z@eT<vb<fI86qHOIwV!f8T#U9X5;<tzXOE~({kOI5QT{<di(OW?ckz)`abZe*zSoh@ zciL)TGRI=Ouz_<FPbnz<?5lrvGV*E#DlvjY6dSS(&pB<ol<b$dj;009bl{Ag+Y3wh zj6Q9ij}Fu>hIGB;R@lX^e(r8f3n-SiFrz<wDj1T}MyAUoaL&Cd0NIVHnCAHWyS5+^ zAInH-IV`hm=^boUHgDH$&E*b8t*!lhgT>+}YKyVYgrJwqUY6RCy6^@wgqRs_^1)1< zd@h;Z*L?Ug@X@O;tF}YBAJYQU_-VX$v2vfB5TttxtwUq|HOz36j$?;^{{ogwwRJab zR74K=O<X3d?5+!l(ejmZAE<oHY)X4nz+H3g^4Bu%gXLx%nep!-e9Q-x4mtH#M|bOn z!)`M*-iQ&RI}`{xc)r^$>!CP5ZJ;JOMC!V7hS!`e;W|i;9D_cH0BRUk`OY=jeM8;j z_ZxDVa9?cRAf>K;w~=kJuTIVDQ9NbwIhu-YOg|@p2IE7iM-F=>y1$Yc&!Voj+c~Z+ z*X%k$+p{|J<<`OMtwuLbW<~Yz;2GN8v1<1GKqc+<zApC*8@RFhhTI>^c{%T4^@iwp z3##vsY}4jQ+Obh|2sEnD%4r>`(BBq^IwL_~bZ*n5r|Xn<rs7>M&JF0lA4S`ePCVqJ zG=;m;qJrzHO}R%_>GzpDg}HgCa{~?T=49x9lsy!ikw`QNjvAcl>y?~x50k3YQO?ot ziL|hSv-I>0EY^@Sk+WaOU<j)8$*5F)Coytk{ogUx!AtCP<(C|ySI2gmx~vzOU&tCe zct(oo9<*g1UpxuVMd^7>Zn)<DX8En;SE=swg%X<Y(B8n?P{3ZxZqdmSY~)sbbg>0| z62(|{UyYo>?7O*Dmyivf#X+f)oIaBOUZqtMz;xXSkMPyz_MpWfv(7YxJ(aeu_(j4h z3Xy_I6rLVFme(W?EUH#{#J)Tjm}UFf5+W+;Yts0S#3#ZG%l#Uo{bMN}b9KQ0@nGXz z80#+=HXtt<2`d|Ari58->lBQl={6%2!Z%8Hkn9iXcZJ8+(bIG9Y%ps<;}6=R&)Cs- z<gn$nIh%EnB*D%7Oz4|aR-U0#n<3F^$)qp+4Xg$h1C>2>lXn=-;q=EM;suN!JmIXu zh)MwoGDqL<sjq)Q%*+Cfy%B|x!epxfWk$glFqLnae5+_B-Y$Q%eAV?;7h)E?WhR8t zvk7CQ57zSc(<O1llcIgHIv}67>{6rVE)BHg=X}`7X6e;fPW7#7qoB2jf5->FyxP2m zq{fZ>(KKn&hXk0OC;r8nB}H&)dA@<T_h_fL{0{MyD2S4pOXO(2%8<BJDv*Itr-Mm2 zKwsW?nzVGF&vHz^Ftol%`MoQ<hq8?FsoMF)V@IP{*k^ZVvPMPCA`E>^-%__T>i}s$ z)!#BOA27&C8S)NR=#Nu91`S|-Q#syD@0;b_c>%ghSbEU?mVKo@cjMDLPQ~BXc24qx z%ogU%p3Bg3K!(DTL-MtvHrHH#?hk1^<Kn^x@;&s&7Ko`dj_F}PklQC>P$Jd0OS3gw zvfB?CGLY1Y-9cBR?H?xYNh_z7zP@EVaLRHuAWr#Zi(b8kv9$2pZy~h)H;(EglVAmv zUgTe}bA$Vl?N_w=<4Yg(lE+ymDUzxkkjG2M!txs)lXfL8=pI-sc)$#N5y49%%o!1u zP3uWx@$7a@4x&Buc6EpBgArw=_Y!=R!uW6Dy00`AhjpZ;ZFwk#$@M-NI&g!Abv(5W zbP!K~q`-rGAr~rUdkUZH-QnbmKbk&6K%|YO5Z;kuH#6R%stl{cA_i=r4$?h&u2Dg> zlGml4{Tp^(zO)=-g=Y<ltEG^BriF0-BF0|dE&oGZO4N3zTGDww&OuW6{qszEZ+Vx` z$@fnV-|p5^+z492e18!p#dOc(y10~4XVOummaTh><s^dYoU|-_SfB1uR)iEYQ;;xB zge<#(%CDHCmyzp`9v^2fgJ4v8t?yAxuQ^UaZ_p#wq9l%7w6OG<U?Ic1c`+dvk)d)$ z?ntd$S`pIm{lWIe_|Yr4Pa=YcdCmgi7uxrx><AKYPB_`67b!s|oTRF1FH#4E(^&M) zW{|n<3|J5&bp5$6d@Y5sio%`oAR;urTvZS2YmT?9CYU~HCkL!%u~<cRbCM5Nx9tWw z!_*zu-~`R-TN(vQv)BR%ylXOuSmi2wnj@KZkHQ^NH&b!@KTQO_pIAoze0b;^VpJL9 z&Cbt1GnF28{|Il3ARt!Mn>s@3j*tIx3Ldf(O=}6gY~4z!Crt}vMqE=OL2(-6X(mm{ z$gBQt?!G79gq2t96Dz~A47?2_0?&Sg=l7-E{;CII4B{jBydKtsV}sLFnQoH7X$S0y zrA5?Z4=M>h&E)+pOlC0!7hI6f=yWsR6qE5En*T=>IR;0R4DLu>Yo{yM{H~`p@uOMD zU6|Aq2_fGCWO({~vfAr)9%!b3svaka(diN=p~ZF{<4uE&zPnx6@VSoh+jrfh_zyHa z9!%Xy`w?#WlTcI`pKoe5!Q&$b{~@FEz3>ZpFW^{9D?$oK>i!woeu592iK!XaB>GO* zx<S1clcR|}?rrTLxVl|rJUt<}P;YgFryGi^y@o2(Mi4?--{AKvadx~~Xx(6@{vRXW zYaBL&i1pM=r?SL$g{&KV6ZcqC+F{>>dWez87*9Efkp!%f33ggnp0tngDIy7qL=MIv z9b$jC;n?)bqKnjiTvkXFF_tt%|4d^PVTQ2cf``sTYIOgGr_+)1=wD|Fk|TEB51)>$ zD!O=onug~5(tn(mgj^#?Wo~0UupuUaRiyEZsQu&QKRhQUKe9r8CnnFJqiLlk8mb%P zrQn1JSkuRSMkXnE?9^o#k^GAhi!Qk@2sbP7G$EIWxh|OFqllf-&4;HiUE>+P$#lv? zXq3bX;H8MT&Yy6O0Roj_P(G(#6B9z?4W-?L{)X5YPahNeLs=nttBI*3C%cG6i${`M zh7-8_Lt%{Po-`o4?(&-4GKL7a8{_AQMae;ELZk>){-86)8<fr7^+1LTwG+9#z<6p- z3<-l{i;1C{ZzH34<~qW+hzaq${C@uRVlm}#?4tMJ-SHpc>Et&H56Kvt`6pRAm*H3% zVinC7X<8MCvA5t@N&@ZocL~{Zh}pf3@%lur`mK;rM9Uy*8iiz{LdY2Z>;jRBrg|*> zf7>sNrWHy69!QwucZeKpc9Vl^L<^&OtP^puL$dYQ><BDoB+#_pCo0&@@&9fAxGr+V z@N!kXTQ?a`mx<Zx?MJkTBn-BPgFIrkJN$<#L`7(OIEuIw^+*^`y@>!}0j1j$=FpFZ zvDvv%EJh8EEoULF4lXyOD{;!&uUFTG*b{CbjAfz8gd`C3hb402qAYepf<eL@4P9dj zvLga-G>q{Pgvzf|6Ugf&Qp?7FSVGJ~PoQn&qS`+aem^H-kC2KNEwy39U`8y+tR6xT zh@7Oq6j9^0>Oy=7J-8%zSoz;ZE^68%Na_|VB-0DxBHSqZ&bycJ_(GkR1KWR_go5c* zo@iO$w>U0JtV5t4TSt5<Li(|%34|n8a)O6q#2DVzNcDK4k00ql3aX2cR+y3LRF3Eq z<&IpoC3e}0dP<as%uJ_u2?`SIiFsL+fSMlUK!JCLI_|=ug0BRzPJD0$^?&ljoX7^j zE(g~tN<|Q3@d9f2eA0GoH@uVZRC{EsC4a5ZIF2UdmRYPBa~+Gu-VRfFI86vChO=(_ zsvuYYEBEtH?GY(S*3MDp)cEd~Ci%H-D<W74R27@Yy@n)YsQ3A&Jf(W4eQW4~LEo(i z%d@Sg?!ouVEYWlgDfI#E(<y&J3yx}9m8L)4ge{J2$;G?bZF0Z8w8A=Y;nBC-5n%p@ z-5jY!tvrUysEU+1D4iyK?=OpvDF<BMgL@_siE8wlDXA|_vmu!GaYmp*{x#OyKS`^N zhb7Zc#Xg|Ow=XZE$5)M^1sg77d&jS3Sv0!|VC^QVo_pM)Olt7e*y*C3egX5gYg$ka zqY+3C*2sR}<nq@Mp}ol^BzmaDLIa64HXE3fY@kC4+v2rGEsopTX+nGUd%eq)mR#5# z2d<8_)1d557G$#s@9YvAMe_Bt;vR|AgQkvnl%>apWth?V2iOP9jrd<J6GaoVRL#4O z5c-0o4f;GAbq$`U6wO{#_g>MEA3^L*XoXt*f<*CC#e}m88mr~yYZfiIwI0Cb;mFu$ z>xj=5YLbOhB$rLSxJOTWzU^Bf((c47&yo1x)^j=T#0I9eAj5_IJJ_*0_<#pPc49-Z zVFC4o-FVd+ag26odS+w}1h8X;Q&lq_SB6}x#xX|bq3qk+qiC0gXnn%bSmWR0`6RGV z)Wsdg(xW22I?lgJ-5jJZgb|tun`TVkzc!$1e~a=kX(Qb!tSi~&dDU4D$$~j~jNA~` zp-4>G>k1aay{JMPxnk^yUma&BPphvfYjN&2zp!m?LoKrUK8a1{M?PV!Oy{`CJ<4Xo zv0b1OEQAsDg<oa~%G;%!jJ{dOLKy0?u$(6CQXY}XM3zl(^-vGYyh=X5YjmsoVtOM2 zl1RyJkdbnJ_n&G~#Pp!#0PT}EOA7q55!NoM@!J#_aVG34Ic=-2+WgHobe>EY$(`5F znySjW#aN1=UKwo8m|qTLl81}TbZ@33ZGsufIrTLXmJ1qq?aW^uTC6-6L2znxsVePA zXa3VblQtO4iEFfmcUi;wZSStMwC3ex)5iCrv8DE+*Y+*uqBnB><ou+V<4^erKR9l6 zcV3VCB3sj(yQlXhLTPI+bJm>95(2&OCHaVJLSU#;!JhE8*YoQ7y;I&%B>W&?T?*k( zAtuY5{Wf8AeJEl3<s(~~Z#O%a@^Aw|(zuq8FTcg<G92K@gI$rE2z;bB4MxF6^TB2S zBIqm@72Z0bc*oU?#DhW7*D2;ZNn2OEFE8eS;p&@#kKa*}`q;oTW*O5fm-Cd-H|dVp zw*zp|RnZKW#o+ghRf6b`n0<bRjKm0DHjRi-Tng;j=tbWut&|tPf~rGb?mHH{dq}=b zd(>MR0aLLtNj+uWHNqEI9*KQ*qdG$}H!q+H@-Cp2cB-C>CrCTGL;GWHZcV_k1G(wr zT}-FgYtpav&uN=nseI5B+m;qdomec#f#<X=);-^r_2rHAu$d5)$O!5+Z+Q2BkQpwu zo(&hO9_rda#n;XSIuRrM733I8%vRFyy4u^W$`<i=Syl(vExsZxU-6gHV;-mUkV{$? z&EBagwWC&TwQ71v2m3e^WpJozjc-HRn3YcwzHyXl4np}Zu}3*8Wjw0<LR}aoo>yYE zo_^Q+QUm>&1Ml_nGcwbdyQzO3b=1WwCxkL!^i}*Wz)nkF%@?-On|RJorm-kpLOckj z<|xrF;Mwo7pq7HmON3JnA^7rbSflfhpKl;aC@x0{c%>@ajNQYjqS{S+e8wQ>%Gr6p zO}weual<iBURA=p<%Y4^!fAUo$9J%?($8dsFvi8CFbbb|rr*3*63*2eOb)8vdrRXx zS@}c~Yq#hAAbAC?%+{UT)eFlZrO}FtR0;`Cw?*@*@}#hlC>qDx*oeTA<{rt3Ugt>6 z^B}JW3?^(;`I_}@m^S4k3b!U+GHC|qmR(Q&?WzrL{wBOj9hKXCi6k}$)Q&L5viPq* z$EJ5l7)J@ke8hLDhz+=k(iRL6K6ze6abDh2b*$<CVOJxA##dJPUx&GA1(NbR93%BX zI$BCr_wwk`#h{$En~HF4A5Mu!e}ebd<DAvRe_sy5=^+LNxp-%nT4$|zK1k@RZ1XOL zb=u+h;(d=a+zh{!-|{O}#5fjLYDe@c%^KO*uW7Vux}|uqN=P)zmuysMN0rNl=RZl= zs7=9JooJtRgjqR^$vjfu9wj{q!s<ji3fF7k`?*uS$y^0K$TEWwuMCRNh@cv+BH8n% zp!-h=M->!aiz!dienNO61zv=b__v=#33+F*u24>D-SAb@!n5sH3;2?)KUxz$knfoe zaHN{OpOXq}WN<9%nA*;0@Q+;AJh!DqtOspQ{KcIWOll9qxwukgZ&}i>4@7w#%CheF zeYVjQNi}z#?|rCP-Z>rtr>an4vOh|{tZ4JEfzj~ff?~MD__gLeQA{8Y3>!6!5}}dq zJoLy4PeA|h$?vXgH09sWW0UD!$_lSrW3xL!{h-+dJ3?BOqqr}8N16STREa}w2KQ25 zoWMuR-c^(Yy<Qkaq6QyiIaXDR27C%=9VrrB5%IZ5w$C)WD;B^YKMIeZO6Krkg;HQL z4J}jBQ~r5&<}Wq3f7auRm}rRO;Z6CNu)9p+%cG?g#WAUm?%QAYVxCm)_Ui74b$@;* zhy{9y_1~IFiS|c7r~pIW7a>2sdtT2x<X8st^VN+q@zX3R3H3>A(a%=`6=U|kcjU<C zdIy)ubkBdRB-v37rkni)8v$d?&13h;;`IU*hL`7Df*nTX{A+mHEV}!n3-LKaj&tcO zyyyB=;|r)?4!niwD@Nj36HnLM`fi#=)I~Nlo_L)a=gyv$d2bG{@9|h}iTTJLM>jn! z_H4wo-AowCZub7sPp8397`Rqb-XSux1D<%|$GfMv^&De_OtR9{rpWz5MskDRy~8Dn z!!1=Z2?yzPqe6dTXBt!LOzSJA|IL}+e{BA_h3&SE(^sq;Gwlnsrqa9FkCWdOaVC4G zrh)ipX9GBR*v%n?%|E$!-5Xavt&;U{KYZe&Jr?(|+B<u%{<*=vqs(+5Gb>#+Lx-^L zdU5#^d(1&n;d@%7S(3})Fo$EwOmTFz<eG_-`nKTVaQ+yewtZS<nCSaKpqKT$@Bq<O zcT^w#<MnP9b&do}pWB!2$UyWe`QX2&KGL?nPaU7DD^*~rRMOq#ebpzeQ4cV0*(&*t zzMAmNZaD-w$I7VgqbvB2m70?4WOc+~inE6>$x~n5A{M1-COl6)v*GMl$<*O|#>(FG zt$W8yD_^@ZN%oGr;q$xM%vtfRmYOC8i|~Q0HS41OUkv*IO7q714A$6hHlAE;eA{>G zMo^!jh2Y^WE9rR-_^P~A>WQPM{BvjR+50}WY|zQaN1q<)v(EISw;Re1=B1~_K0f~0 z&~{8J0}EQIEJJh3_LHOXu1oT|4xGABL;rYDHPyXoQG2quc2*uS(_7p;Ex%g->T9mU z<Q~O=P-qo*n^P$M-j;}rGy3_8R9;6^&Go3h=n4zOtK4Npv5zYw*^@s|VgWsxCyNKK z`qIje?pWE!1<a5X^GlW29$B8qq?vb)=RT@wWub4~HIi19H)DHNTMR3eNKcH&JyP`B zII-{~_Xek#yW|ejHL3b{hRbudhrex9H!ld34&~c4`|!nsN;`gS{3isiT}W6#QOv(T zCiv6Z&VC77%Tb_wQSq70&?}$mmyWMGDt`PbN%wWoX59?SyT`SCIZbfn@@CnLqsmED zita}|gOJb=bI7s)19i28X=rs}Yn-|t*b)5L^H(9^<zc`d6M3ukCkVuo5C_U&@<56F zi%$zy@I{lw*!XG5jbT~(o%{e(gv{b=1zPou>GVI@KiBhKHuLppFVDMdCV3X5@mQ0H zCLZ3Cw8@g@JM#RnCX3ih49qGyme{O##nsATp`qJW(B3dEBjk~ek2o*fA-QS+KgIT0 za^T$e4;$m!aGhJsGD};z0tz?KwU-@~2ARm&nwbCmzKW1)eMk5iYwfGU&VGpa0a}o@ zE_i6WxKlprJBLJY$L3X?lVD4oBpF<g*wWXHIbM~hs|oPYfw*_?oI|Jk;B)9n`@w`k z|5DHEl_!(E$1lWuRY!}iNfp?QZr?>{ZE{TxRxy!OPYlj1-cqV;!96~+iP^}mn9+VB z;PdG`xt0UNCneHbK+$ZuVAr(Bz6L#&-!%AJ^K6lx+Xw2`A}BA17<=R{HOdB$ut>t> z9u;-)v!LtKFL&KD>7z=c=3xx!OJ1y*-9Fu1CRN{T!biv-p~smA_$fE5w;8s~oOgb4 zA6<jC6!Zv!71H^~l0IHa+c(b2-X?vR7`-&BGcMmPIs5?8`0<uu_@=#F1=nyI!a!1Z zU_3yt%WzE`DtyCa&LR8d<?k{+Ox}=(35jQQ=SgV7vG;+OzpEg|fa~r7JM^w}A+%Ck zBFyM!fX034tR3BSXtt72CD+K$Mp<VkHf>UsldZ$o4qCy8rg-j#%K7`Xw_hHxVXUG? zs+plIGr0TR`{>u#O4h2<>vyC3?=7zj7N(MZtDZvUY&#dTsea^`e2tDQ{>E0`Gho#l zrSlD0k^8Tf_G_Ls<xG5aAv{~AVKNUIc4~tb5v~{beefc!dH6T1M(OWr<?9Xkq@TT% zXcBz1<<gtm_1B)cyvRmz<92L)$jEMoF!xI4>F%k0M2PX-t`o~%o*aDrU1c?rqjF?d zVCR9_^4*_<9Tn(M({@RWi618F2SdnTvf|x-&&$J#=G}v;Vl4_=za%F!{VHS^{w9BA z1)qF+J*8b|{|;9BXf~iC+nEjuqVo>3)?>c@&d1GecxhzSx{a>SBvThRJFCA(ViqLQ zgAmVaMzwiA;R<Hn`%1SsywQE+;ys7F0bNme!3AyP)EEr@O<O#zc{B9T%qNUQ|Am`` zm{zI`CCW9Q|3&xLo)}pFVjbPBrRvTU^vh$d$=>3{_iP%|8Rdg*tLgQ7n-b22(>+;6 zflLk#*|*;LZ(+99MqSOXhO8TQ`v-1wF)hB@>`U1g{NZ_8O=X8Ru`D=ul4+y<^E?H? zu(O%}e3Cv$>)Ba@-Fvy-N!{HXA+y~DFNG|x4d39wzHHglHJe#>=tS!$(?3V_GrnFa zr-N+DKfWy0xo$kuSth}KR`&JE99ytA$#TCv+?^)W|I~U+YKZm0%+m&5A&lJben#HI zF2i8k?EQn*ROlS^wE~1upy@mvR_%gw$EeSvU%Uy!KjV;{&tng5Isdy58O84GcGgu= z-6mkz=$2&NE0$8$^YcZe_ld&qN^E3E?6aBS4ZV)OYM&6<?*o6FyQeev0m(|H{b*^& z15@I^TD(+^y=<)Ayk5GxKvddF=x-B1ZX#%F?PVux<6%b-5K&<fDFI<A0a1}BBGR%V tGO{A#e8Qr#!oup6$hZH;0p@D^(%%37caX&S%MctOnyNYvE0nFm{|7Q#CYk^M literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/C/piece-1.png b/exercises/inputs/3_files_and_commands/C/piece-1.png new file mode 100644 index 0000000000000000000000000000000000000000..347552477e389f079ef41c7e4f61824acc098ec9 GIT binary patch literal 3243 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�x0xRLjebv$S( z=K{?PwY$<Ns`TvleYPDG;W>ra%Tm?*KOqJlSRwi<=SxjX)H+J+obY4~e{id4tDp~( z+P=K;r_i%+)gDP(l%E<KP8@xL15Sxl17GNjbN>m-1y2idY|ZL)WGPh*)98{)j$Ie* zt?7HcGePhWx%I_-UfhSrOdfGO+X5eRR}Oc(ENXG&i!o+?V?mKPy}B+mK3q#}m!gd6 zC6j|z$Xa8=W|A1f<15$|oeSd+KRIAxejQutZQ^TE8=z6|?8CjS7`%ax*2q3ce8<<H zQQ_jI5U+~M+SXk`y{?XXYu}rKVKbJlOp?taU0!TdjoN-1Vet%N`<^VX67CBT7qV#5 zZcU?QJC36_mu@($R~NCj<d;b?hP&=8C!jZbT}n3i1BgxKy^pDB2XVJ2{F+EVX2N{L zF`cWji^@r?`d>%zF^>(gYMD)Zlu|2@h#=YxBw&WEaPv9c#iJHDOo!z^4JD)Ntu?+x z%36~8`lc1~b|*6_gQ?2+Z|y7(C!bR*dp41$?2T>vMrRN33J_m*_b=G%jxlZZIg%y1 zW7+aOg@%nhn6L%^p^=zLK?4b5e}72i`xah|;>)oU!<T|gH{};i9$r=zA&L$LU#O_d zEe@R;W9Hm1Hf-U;*oKW^3H5ln2S=%ik_C6sARED$ty0ADo>;3xUHtjQp4lq`O5~3f zJot<T{&`BV5hGOyryg@7&FyaijD&1f?OyDfuUO*#z~xrO#KcMt$L6(exG9Ee*O-v| zWk~V}2IIqKXZoX3wMSagI@kN<jfj+_(S<iOXPc(OZVy?Llg>)HyKuG5q?IgxlprFX zKT~&Ksa8nOKtE4xq<%Ed`KlQ1a{-INyn4A?g%tlacrJMl&hLTF`fCbmKI*};V%Ikk z{3&Qf`tY51C88~ZU0<&z@_poZrl6BOK0gCxKKHz9T>i*8k%Cq~WxsA8muxPiPVF9| zV1+%18<fG00pq=_D0loDT;pcU@GW*2DXT##m2qu&UP^}fP+x09(2|3{#r6uG>nKPy zymrnyn5alxF}Rnb{l_&{;x5+yLrmM7Cw#YcUHW|E5KerjPV|jM=V?xDD@RWHZYeAG zN);!_lKe4wXhFx}u0on&O3G-5(7Xw2TqUHz6MtAGtP!goy=K+A9wVo`#{aeLnPEsn zqed0S&Vl^(+w_B(K3!3iZB(^Vn}b^8vD9_bE}l^dtXsZxjO?85m)>$TmU6gV)Pb|- z>>8v~pVldlk1L*GHU^z2n)iqo9NO<#|3NtJM;)noc6t2_vxPNI>lpc2ceu*sg~Rg( zzQAu)1?J@_V|;1Vi!01=m!}O!J?z#5Tsfns*_m|our-^H%oKb$J`mx+**&C^2JZ2R zC++BI*pb9!e1iysSK2KByRm0(X*Iqaz4=$N)z|oziUd&BAO<qaAJfrir5sULvS8Q= z*SC$r7!m924GmZF(4*^0bhOHfeu9oVm2&pcQSs@BLKYo;x=qS3M<zzukKxuXk`^Uc zH%doyt=T>iO!@xLr9NclLuDm{dos8%JC_?WxWzMz;fYw>a@{FejkWXrViA|<Xl!K1 zfMGjYnoeHLV4j{w13N_x<)x@O+>E1xj5lX%yI1zuc2{yn;->|tcJx*T$Hbcxox!1I zGAG@~bqI}#UOT;I_Y(tEUH$%VdxK9xoF*K1?Wor8uS)2#GohXyL7~2+K;$UnF=iJR z{_z{0_XzdU^9=Ul3Zg~O)KMeosA*~1X&%zk)Ya2GphD2nBM?lV)yMx=Ab@n<*E`~W V2M&IZ(B%dY^JA7KmB#K@{td1@mX!bi literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/C/piece-2.png b/exercises/inputs/3_files_and_commands/C/piece-2.png new file mode 100644 index 0000000000000000000000000000000000000000..86ab59d1705bb3af9f7434cb10b7c14863e7ec72 GIT binary patch literal 3584 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/C/tile-0.png b/exercises/inputs/3_files_and_commands/C/tile-0.png new file mode 100644 index 0000000000000000000000000000000000000000..5f32451612ff6d497c3dc89a81442e504c8f8458 GIT binary patch literal 3661 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/C/tile-1.png b/exercises/inputs/3_files_and_commands/C/tile-1.png new file mode 100644 index 0000000000000000000000000000000000000000..4607d5cec11684d11e9ffc79bf86098f10300b44 GIT binary patch literal 3022 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 We-{q@IH%1iAm#*X;|fFX3;zKrHXuI$ literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/C/tile-2.png b/exercises/inputs/3_files_and_commands/C/tile-2.png new file mode 100644 index 0000000000000000000000000000000000000000..53090e547c621e85a2d860182dab4fe252414f3a GIT binary patch literal 3947 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/C/tile-3.png b/exercises/inputs/3_files_and_commands/C/tile-3.png new file mode 100644 index 0000000000000000000000000000000000000000..7c08e5bb0b49ec01d7a729e23d4d64cfb0272b1f GIT binary patch literal 3233 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 F{2LLjp=tmC literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/D/image_tiling.json b/exercises/inputs/3_files_and_commands/D/image_tiling.json new file mode 100644 index 0000000..c06720c --- /dev/null +++ b/exercises/inputs/3_files_and_commands/D/image_tiling.json @@ -0,0 +1,140 @@ +{ + "name": "Image tiling", + "fws": [ + { + "fw_id": 1, + "name": "Render an image from a character", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["character"], + "outputs": ["image"], + "command_spec": { + "command": [ + "convert", "-size", "800x800", + "-background", "white", + "-pointsize", "800", + "-fill", "blue", + "-gravity", "Center", + "-trim" + ], + "character": { + "binding": { + "prefix": "caption", + "separator": ":" + }, + "source": { + "type": "data", + "value": "D" + } + }, + "image": { + "target": { + "type": "path", + "value": "/tmp/letter.png" + } + } + } + } + ] + } + }, + { + "fw_id": 2, + "name": "Tile the image into four tiles", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["image", "tiled image"], + "command_spec": { + "command": [ + "convert", + "-crop", "2x2@" + ], + "image": { + "source": "image" + }, + "tiled image": { + "source": { + "type": "data", + "value": "/tmp/tile.png" + } + } + } + } + ] + } + }, + { + "fw_id": 3, + "name": "Rotate one tile 90 degrees clockwise", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["rotation angle", "piece 2"], + "outputs": ["top left"], + "command_spec": { + "command": ["convert", "-rotate"], + "rotation angle": { + "source": { + "type": "data", + "value": 90 + } + }, + "top left": { + "target": { + "type": "path", + "value": "/tmp/piece-2.png" + } + }, + "piece 2": { + "source": "piece 2" + } + } + } + ], + "piece 2": { + "type": "path", + "value": "/tmp/tile-0.png" + } + } + }, + { + "fw_id": 4, + "name": "Flip another tile vertically", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["piece 1"], + "outputs": ["bottom right"], + "command_spec": { + "command": ["convert", "-flip"], + "bottom right": { + "target": { + "type": "path", + "value": "/tmp/piece-1.png" + } + }, + "piece 1": { + "source": "piece 1" + } + } + } + ], + "piece 1": { + "type": "path", + "value": "/tmp/tile-3.png" + } + } + } + ], + "links": { + "1": [2], + "2": [3, 4] + }, + "metadata": {} +} diff --git a/exercises/inputs/3_files_and_commands/D/letter.png b/exercises/inputs/3_files_and_commands/D/letter.png new file mode 100644 index 0000000000000000000000000000000000000000..2af5059a94849c05c91edb43b031cf768dbbe6b9 GIT binary patch literal 6827 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 N1HH?-6*~6e{{xhK{`~*| literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/D/piece-1.png b/exercises/inputs/3_files_and_commands/D/piece-1.png new file mode 100644 index 0000000000000000000000000000000000000000..787f060544122e57a708864045cbd237c0ee28f6 GIT binary patch literal 3437 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/D/piece-2.png b/exercises/inputs/3_files_and_commands/D/piece-2.png new file mode 100644 index 0000000000000000000000000000000000000000..a6760161ecc29f7f1f87f88875bbf7268ad2c7f6 GIT binary patch literal 922 zcmeAS@N?(olHy`uVBq!ia0y~yU{nFJUvMx3$-=74r9g@$-O<;Pfnj4m_n$;oAfK@~ z$lZxy-8q?;K#oGPN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bX-A zBnS9}xEdS(XJGiBp8j7)=RXkS=l{>m{hyTdKPKjXSlIu-!2jOf|J~gFJ2?Eew*GHw z`d>rizqt7SfB*iovHfRa`v3Loe@@Q-PoDhe=l_4@%70PO|A!C%mzMs&Y14m2#s3Qz z{#RH3Z#?li$lZ)d-tI0e{TVj{fgH|!H@9M-*mEFzKZA&)iaAKIz#|eU$lw9SZYQ(t zK!Rljj_C{x%nD$<CBz~UsO_1ji(^Q|t+$uL{bU107!JA{oNVwtHe<{G&`mA3Fa43} zT{S)6)nUiieOq{fI0hAbQLyK?-!|pB@Akz{P;hKA(eMCLvqV&YlrNVMkWypi1X7cm zSU822csc^9OG|+2STcja$~6a}@+B7}my{l#aBZ%0R5@ejUDYL};S;X?ZQJrr>e4Q0 zkJovMYkxCm-i`No{Z2u5cm0j5FFWd&EI+Gk`(FNKs_~`Q|0e#+b*s8<f9d~OkN3ab zf8FT$va^24`m-MQ?R{I;INwy?zX_BKN?apKk`oI`GV}8oToljFY6J?Zf&^0%OH!?p zi&B9UgOP!uxvqh^u90Dgp@o%^p_QS9wt<nAfdQ9FFAIu>-29Zxv`X9>sw+)*05vdp My85}Sb4q9e0D^)n>i_@% literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/D/tile-0.png b/exercises/inputs/3_files_and_commands/D/tile-0.png new file mode 100644 index 0000000000000000000000000000000000000000..ec1838d38080516857daac5fc2c9840510d54f55 GIT binary patch literal 815 zcmeAS@N?(olHy`uVBq!ia0vp^FBljYRXCV|EFrC4Lm<VH?&#~tz_78O`%fY(kk42g z<nF|<?wrg^AV(qDBgmJ5p-PQ`p`nF=;TKS-0cb+00RzLU1O^7H84L{K1#@-<+5jbz z1AIbUjg9{^F#Km?`p?PvpP&D~sOW!b>Hms~|JBw1>*)N?&;OsB`#(MXe^S!_n3(@z zVgCaI|9gA?cXRvi;PBtt`oF2^e+`ZQ;^P0=*!}~-zkmO~e*ORC$^R=?{vSU4f77P_ z3m5)BlKcMw&^pE>Z+92TH+fq-fE><zH@9LSy&s508Q7RVR)GWyJR(7Y9$@TtGTRO$ zSXSVe&cMK|0LEKFEFytMReQQPhE&{od;Vmg2m^!b!GoeHA}(RBivKls`Y?qRR(xG; z-E1dw?pW=QA1^;oU;n)Q=Znr4QWs4ZWxHJOSSJ{(yvwbmmt=u2|6^-b@35)+Us(G0 z^Rw%3@BTgfc(;4Mzvuq{Hvj*A|FlcqR!~$_)K_5G61nd88JJzfa`l}1mw@7?#5JNM zIkBK5Ge3{PMe*#cMxdZ7NH8U_B-JXpC>2OC7#SFv>l&Er8X1NdT38twS{Yhs8yHy` j7;vfdvY=?l%}>cptHiCLy3%w9Py>UftDnm{r-UW|t`YV) literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/D/tile-1.png b/exercises/inputs/3_files_and_commands/D/tile-1.png new file mode 100644 index 0000000000000000000000000000000000000000..b4832d446caf444df8f7876b1eabcfdb2e39d013 GIT binary patch literal 3466 zcmZ{mc{tQ<7sr30ELo#Gq_iQAB}|wZBH77ELklI6eH&)6L}(#ft1LBRYncc=lI$WP z89%$8CJD))87-4S<-F7T-}}dVU)Q<M`F^hJd(M6TabMS+dVpXnC7~>VAc&N`oz+1> z<{-$b9b&?Q>iyP{MnMwsw{WsRkjl$ze|fJK=vCx{w)>C@RAp8mw)of`bV86=bp%N~ zk08qelsJPRR6PWl^Fk1OE`lhM==Cn92qH9kV85%ijt=bJ4R}24-3vB0uzx=sJP0RG z0)+x8DUg>3Wo6LZ4E_D^{yi)#fM6jAh>C);GMJmg;lmIW1=-n9T@Ay-z~_U40$?x@ z83|XfLS-fN^})7n;Oq=>aZpkM%geB44eZ(l$Bsd2Dm-}tlasKr0<yATX9wrb!MAT9 zEDVN*KqA3|2QWPi$B#p9E({LB@86)P2;ScC=@V?)1pfYDZ4F#5h=_ob6EK;ub}e{# zfV?~e1i-Ur5FHKg-odI>P*Vfjw?jq-h>1aWHy9Z~Q4#$30bjmAVj|4XgOn7+#K7Df zNJs#g3?U(~dNl+E!R#zZOT)#BpsEV@?*kSK&!5AgLohZ5R4UxP3-<OfJ`UHe!LMIn zYz$}4z~Un8+zD-M5F8AD{|y5JaN`DS+z3yf!q1-|BLfc~!uj)HU;z2~5D@`WQ^01! zh7EwC(9!~zF2U*3keLY#23)xUo}OS~0Xud;PY<}d!mC$MUJgf(!sEyA<_+L*z+%DD z5_ENeyF2{#7fejR)~%qe4WB<lRu&KlASns0t)Qm|r%u7^*PyElNlBok1qlhTWec>o z!+`_v;RBpK3!68CkPw_W0fB*V^Cn!r49Ur`XAf{VP*nvgD)99ybauk`?;s}!W@ezI z1Uw!bIRd7pP+JRDR^Z|SVPSCL0>s9Gh6a?DLPG<Hi-V63ym$fo_QB8)6c<BB2e`RG zVIiog!R^~{?;dDsLVZ2Z=|H1_i3z-X36_@N-~gkeaOVzGRDixd<mABh>)_}Jy}b|` z3UzgmmIk)AFf#+;;h?S#O-(Q|0tE$d>lUnA2kX~^c-+RYKM&-jqpg+fjYm@20wEr5 zV?!1&rl4MrIDd)7{(&UBqXLN7{Wom7g3bOw8p*;RL4>#bHy*oUj|$jvdn*gqX!eJ< zKNBwd{w4a^`(isaQ-y42R2jZhaVI|2DBBXVE#=8gvR!hdS(Ys0MM-w?0l6C^UFX-O zO5<I$Qtm%SXBTC@WxUEY<iGu1_vt6GccJYEhx5C>;1hrJ$HM3<s;yO))`_i;PTqaV zaV?1rtLB%!x&r=I0Yw)}m0UjlVpHcv9(-CJVBwvu&#nF2Fl4B<3)(y~Fy^`;u`X4y z{S~{08u`)fyPwutcmJFCvD<LoR4(TjyVSjJLCu3SZ9VFnQ`7ux!PkS7zu5bv&cJMH znXQB67l$^C9Ik7Q+lV%vu052#2pv@=A!uX3yP_`%<Lf<WOhx^}hn+}Ll@s5#Rr)Xs zgVUv$iuSLDJ}?YdF+3^r12?{fo}<S0H@~T_a5_XU?b_79mnvPwRMgzF?pRwH*6s9@ z2Gp=8Z7|)l>0wlP)ue0afxDN33)VAhym)VVtNYT3)gV<;kty&78n4st*1@{n4oh3O zKs1bR*?R)(CMrc+&aRwx-DEK2J=a=Hr2gBpLMoM3oseO6WKgbef6V))ey*l=@fJI( z^iut>D#1yaF|n38mm8gcHH_zC1ueoG-l`IYzicp$ucgeLPhBAe4ejvwbg+gnd{2CZ zG&iLwAYZMC@e{5(;oh5Hj1L74{+@7UcrVvEP7X~Zb0oD1O>H4_*E>o=Gu1Cg)0N3g zb9yPJr^&vAt{lkysGLL882uo_l+F`uX#RUaRsTknkQu}koN?iM3XxjjOvlSKo!Lqa zvee5OF5$;b4k?*M%<U1xjson0XCc2i=7+i7Q)aMB|JAs)Xv{C;EA?K>GgoB@c2PQ7 z3K5)>j3v1ylFNhVJ*hUv5vg*V)E7tCA=8#F6{#BAc;006{naJA+rEnRhho3X`1mn8 zea4HWyN_EQHVqq_we}j3*E)>5V6&~X4xMAAvxfQk6tQ>-J*G@|o}zQ_k@u4B&x;4s zF9a7vh=lqL&ssN8KOV>4&adVwh*J}EQM1SVgKr4C^51<vOP#rCa7I-pbMThF&TOu) z((=jIo9pkAWA!K1x-o4zZ?V=De+5!kWUE`Q67RfAMmH37cYp2wXFuWUxRxQ$LMyvS zr9OjjRT;DFajto;Z&oMBGp%ZhRXRN|>m+vA{VaNBtb{l<A4x0R=;*O?Riwkrm}A*q zQ4?C)DVdsy{pP*Z#8ZR88w!Iva8WO(Z(ZxLY^aM$3(<eNuJ`X@cLi=%xp0Oh(P8l3 zTAo7QN_}8}q6D+O*;|>-c&4coFSYAgO_TkE!Yq4Cn_`kmJQ$UGq1k#eD}tASCpxex z&$5U@dooa^jz?JQ?A&9Cou*Fjv!bup{bZ<hlW$TSf@03~6`2ymJwwsDa;v6J7T$OC z&2(YIMY=(CroR6nd)mM)n!}4xp?inLzt(jy*3I}yx}SB{on~xnaKhEBE}?(Dq#2;4 z>)$ezKymx`_*5BI?J-N1VwyuN*18#?p6qeSuS?S-I4{Y}ZaT~C18Z;16`UINq8#Va z=MkOnbc22tE%|flyf*%B<yFbHQ1A8BH<XuN+l7@!xV@zquTx(hnbCjO9b!cO)|2le zy|m`x)!tYM{d}uuHtj)snT-|h`>{y3$+zz5U6HPym*nk6-nMhHxUZu*xmD8l<Czp= zy~0oOc;6jkN0a*VVw5(=KIu`?r9Yy`jN;PzHGhnYJ{G@?5l-NoX_?82j{ZRE6|rG{ zyC4&=*1=yr?%e2=lm7e)`q!;-mt88I@C@ADt?VT^CPwU`*i!C*W<eq2IWL?tBUyB! zIPkg3>d8LM)BVEk`x|s}2o?#}jyQfw91}hAEv{LONgPRH{Ip}Vb{+9&DLHDq#eX1v zP8``vCH$8BsA4&nrSdsZcL&w4F`b%U;@(wFH0#7`6nImoNAtd{-cVmKq-j}+`j(-x zMpgeXXLz0Si~(hnLeV3PqNM{I=|fD@q)mO>oXfpQBc0j*DAq~%l3rTe=gXF3jO1qb z>(14NNiemOr2|~z$vFCneT<YqMx@wmhGQXB_pEe)T>KS#I<cs0Y5QYB$gJ)1Q;)Jo z*r#X5YEKN}?+Ohp89kK0xsxq_hZ@F6K7YpYqe4LFAyH3`&>eF8L}sQbA?Zo7?kFws z1x|TZrRO8dCcDOUin{Mak$qkxYX4$m&4F|Wb$_GCkFKGfOjCriS&eoky)nXh*V}uM z(pF=&xJCj_lH$3aTP8tyvL_THmxEc4bHj#uY|kNHp<Z`OWdtXoM(yawMD#;DD*Na~ zh1X!10kctzvOzn+muw`AUuz`mL;jxLhWoUI_R@xq3C2`bNqp|mIq=(o6Cy;Z*iK7M zw5?ZI9Czd>c!_r2A?kQ8(jOw>qr{Y;uQ(3EsB1?vEU^B*Cz)|6<a~!@IlRX>eO9At z_&h2TLHM2juM*=tdCZ=x;8n#@&1IC6(Cep-l^Eue^ao$B-^xHm==`auP#Y%F%SAsK zIM0gY%VtB&m4PLBRH=(wmP|GhlQmK8#8u-fiHXmz{mf&$8mHH>2wntl(<(lVPS&WB zU)&PZ%T*W`zh&X)zXQdkyvE6Mxb0liL~?}>ZT>l~24j*WGkTjv7#B9yY3Ke@GA^wA zBcjX&-j*I;+E@lTzm5BAHAe;IO5SOux8*V(2~C&T^Nxv=)on2*2^Vk+?tcE;>14wy zvOJpC#w|-B&->9vT5t_|CcYb4G3VK-!7-1{vQxXeWQu7*&VjRSTzWdWLohjB`Q1rc zMF)<Y%cvrubu4rl%aLLcW@X4`);!ZSWTU&ZNw$qjF-<oaciF`xLbSh;z~inW2kow^ zGDh=yxFUW8bpw-v=ePtP+R7!ev@cD_ymHFG1QUS@uF*PN`D-t)ouTQO$F5s5J!;Eq zcbc+wG0|$JZ!BS`w$N=$7`2k~aY39lxqO!(jWF*gY3!q-(?haV^0i2LFIQyq&a578 zSvpzQmquvCar8`7TX78rCgvSD4+9h1ae8?kqov(m!;j-f$E3W@OCqnda<i;*`OZQ9 z&bfS#APwD#97kUJrY?gV_L3rNNxqsNp38R=j0&Dx6QofQK+>)z?_n)TS7TOBo7(Z( zt8syLJUT+2FQ(bF(1q_aY`sxkKupZUj`;m>aQpN7qF5iH_;`~jf#G3@)z+SyNdl<$ z2cGh#_~LyceFX_I(9<{8(KFUD(0A3x;tlli`dBSJ1H7J|#Ewjn|1pGyp9=Jg`TvH~ SF^07Q17dGYu&UVSb@o4p#tLHq literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/D/tile-2.png b/exercises/inputs/3_files_and_commands/D/tile-2.png new file mode 100644 index 0000000000000000000000000000000000000000..ac4660c723502de63009ff802dca866409312ae4 GIT binary patch literal 820 zcmeAS@N?(olHy`uVBq!ia0vp^FBljYl{uJ!EPnmHoj{5u-O<;Pfnj4m_n$;oAfK@~ z$lZxy-8q?;K#oGPN02WALzNl>LqiJ#!!Mvv1JHz00|tgy2@DKYGZ+}e3+C(!v;j&a z1o(uw8XNy-VECV&{vQawfB*mN+5an7{vSU4f77P_3m5*^(fOaB|35ePe@4dt<mCUc zvHv3?{s#s9_x1hn?*8A&>A$V*e>1cHT3Y`lCI549{AXhN&&T&)MC8Ae)PDtq|7vRg z-Ktv)fOat^dAqwX3-b7U0&+O>-Q0?S^nReYC4=3E5062D1s;(gK@Tu?JDF_<5-cll zOlM$VRsiEIAr_H9EzO=Tjv*Dd-ky*26JcOrJt&wWm>L?%`o7-VZqFf=vba_L7fLN^ zEW^~7KjmAnV8Q>}Ok6-Pi&I2I#6(a-LnA{eARyp^3s7o7r-P%Tqi|zWQ<EAKD=Vun z3rHcyP*Zq8>&xq#KaW1$uI#jaU-+-W+T!Z+{~tbIe}8=W^Xc{F?k(GxW4TLoFKl(V z&O{L-y{fkI_ve2fzYEWwskD>(uOTRba+bJ8lq4q>lw{`TF}Nt6oz(~wR0Rp9B$lLF zB^RXvDF!10LvvjNb6q3D5JL+qBSR}g3vB}<D+2>Am0lJU4Y~O#nQ4`{HB?uc?f`0F N@O1TaS?83{1OQfC54!*W literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/D/tile-3.png b/exercises/inputs/3_files_and_commands/D/tile-3.png new file mode 100644 index 0000000000000000000000000000000000000000..9a98e07fd9e2d273cd6ee901db20ffb62a0cb859 GIT binary patch literal 3476 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 W{C`1Mh(Zl2Kn!pf&X(#p-}n!ujP>LI literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/E/image_tiling.json b/exercises/inputs/3_files_and_commands/E/image_tiling.json new file mode 100644 index 0000000..a1f0f31 --- /dev/null +++ b/exercises/inputs/3_files_and_commands/E/image_tiling.json @@ -0,0 +1,140 @@ +{ + "name": "Image tiling", + "fws": [ + { + "fw_id": 1, + "name": "Render an image from a character", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["character"], + "outputs": ["image"], + "command_spec": { + "command": [ + "convert", "-size", "800x800", + "-background", "white", + "-pointsize", "800", + "-fill", "blue", + "-gravity", "Center", + "-trim" + ], + "character": { + "binding": { + "prefix": "caption", + "separator": ":" + }, + "source": { + "type": "data", + "value": "E" + } + }, + "image": { + "target": { + "type": "path", + "value": "/tmp/letter.png" + } + } + } + } + ] + } + }, + { + "fw_id": 2, + "name": "Tile the image into four tiles", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["image", "tiled image"], + "command_spec": { + "command": [ + "convert", + "-crop", "2x2@" + ], + "image": { + "source": "image" + }, + "tiled image": { + "source": { + "type": "data", + "value": "/tmp/tile.png" + } + } + } + } + ] + } + }, + { + "fw_id": 3, + "name": "Rotate one tile 90 degrees clockwise", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["rotation angle", "piece 2"], + "outputs": ["top left"], + "command_spec": { + "command": ["convert", "-rotate"], + "rotation angle": { + "source": { + "type": "data", + "value": 90 + } + }, + "top left": { + "target": { + "type": "path", + "value": "/tmp/piece-2.png" + } + }, + "piece 2": { + "source": "piece 2" + } + } + } + ], + "piece 2": { + "type": "path", + "value": "/tmp/tile-0.png" + } + } + }, + { + "fw_id": 4, + "name": "Flip another tile vertically", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["piece 1"], + "outputs": ["bottom right"], + "command_spec": { + "command": ["convert", "-flip"], + "bottom right": { + "target": { + "type": "path", + "value": "/tmp/piece-1.png" + } + }, + "piece 1": { + "source": "piece 1" + } + } + } + ], + "piece 1": { + "type": "path", + "value": "/tmp/tile-3.png" + } + } + } + ], + "links": { + "1": [2], + "2": [3, 4] + }, + "metadata": {} +} diff --git a/exercises/inputs/3_files_and_commands/E/letter.png b/exercises/inputs/3_files_and_commands/E/letter.png new file mode 100644 index 0000000000000000000000000000000000000000..76a229b925782106d1f539c57a5632635fdebe14 GIT binary patch literal 1049 zcmeAS@N?(olHy`uVBq!ia0y~yU|h_=z~s)t3=}!vrg9EQv7|ftIx;Y9?C1WI$O_~$ z76-XIF|0c$^AgBWNcITwWnidMV_;}#VPN<L6l!?Ez))(y!0;-8fx&791A}<MoLzx7 zKnaNepAc6DhW|j|==eWB|Nr#q|LyJnXJ`LEa^ydgx)2{w4P%nGy9?ugCf$2L4rjib zTQQKn2E?Kanm^V9O=jRM@Q4HndVsOp$!t52U|E4<Is*f<0vK-zv4{lvVuPoPV@SoV zx91HRn}BK@l|0y#0vNmm4&MAXxtX<rmG8gMAO6G1J@)HYTSsMiUZ1o;)zQ0Y8jCJx zl+YHH49^Rs3CKjxN;|M|X=w==dIy`9ga7sJ#!wIzF#jB!x%6#qcKWny7cY_)m@oq< zi4a<wG1vR@n;&nYC+UQ<Z@F^GnNsUci%%A9Trh`WW(X)jm$*ihBqtV>Waj5FxQ3lt zB@Pr+1qr4kmZVxG7o`Fz1|tJQb6o>-T_eK~LklY-BP(M|Z381K0|Qn^D^S)&Xvob^ Z$xN%nt)WDwsR*cn!PC{xWt~$(69B;8UQ7T0 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/E/piece-1.png b/exercises/inputs/3_files_and_commands/E/piece-1.png new file mode 100644 index 0000000000000000000000000000000000000000..562d08b651ef90d177f391a976868f90bf968ee1 GIT binary patch literal 507 zcmeAS@N?(olHy`uVBq!ia0vp^7a15Bm06g9tT@Y`RX~a*-O<;Pfnj4m_n$;oAfK@~ z$lZxy-8q?;K#oGPN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bX-A z2nG0rxH2&OpFaJ6e*XU>NB#prcJ_aLosB1evW!XI?k+6-88-ug9L{_<w_>2!3LyIk zgIbHtW{_ZkM<h^?!2^ulPG;MI1j`B>(-|0;6~K5)h(#n&aE7OgV@SoVw`Ua@85DRJ zHn=M=b9OW=VEViI!N>hS!x98t-9l50X8Nd2K8Z$U8J$(q_M4cCRgz>uuQ_@1^1WbI zyfU$kGq(A4K4~T}gcvwWTq8=76AMZ*^Ya*7!%nRd2MVf!1XB`AQmvAUQh^kMk%6JP zu7SC(kzt6Tg_V(!m9eF^fsvJg0js0cITQ`K`6-!cmAEyO$TSrJH86O(`njxgN@xNA D^2DA) literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/E/piece-2.png b/exercises/inputs/3_files_and_commands/E/piece-2.png new file mode 100644 index 0000000000000000000000000000000000000000..c3ae442ba01b6ac5434f46ec4422a445dd193a95 GIT binary patch literal 479 zcmeAS@N?(olHy`uVBq!ia0y~yU{nFJFR?HKNx|#|`9O*#-O<;Pfnj4m_n$;oAfK@~ z$lZxy-8q?;K#oGPN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bX-A z@CW#WxH2&OpFaJ+qvL-d$j|@3Gxw4yP>M0h+uem(kjLi}ki(hp=2i?8dk$n@V^~o4 z<t9k5z#|eU$lw9SZYQ(tK!Rljj_C{x%nD$<CBz~UC|K|5;uunK>+Ly5K?Vg51_P}d z4SXUS>b0y76xMBH=?1ERf`*BkHKUi_Dw#Tkdf?wwxp?=t$7Wlm+yL6bS>hT|lAKsj zl9`{!;2L&nl{ipP6(pFFSdwa$T$Bo=7>o=I&2<gTb&U)|3@xmTjI4|;wGE7{3=CKu ft<Irn$jwj5OsmALp+u&s2;@0WS3j3^P6<r_zHXTh literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/E/tile-0.png b/exercises/inputs/3_files_and_commands/E/tile-0.png new file mode 100644 index 0000000000000000000000000000000000000000..bc22db992d1867c29ba92d0f6fedab5ac2e3210e GIT binary patch literal 471 zcmeAS@N?(olHy`uVBq!ia0vp^mlzlrRalsTtQFiv2Z0nzx}&cn1H;CC?mvmFKt5w} zkh>GZx^prwfgFWok04(LhAK4%hK3dfhF?ITh8GMBr3MTPuM!v-tY$DUh!@P+6=(yL z;1BQ#ab;lm@96kHKmY&q>HmSCtM1fMpcG@0x4R2Vf5y!~Acr&G&8-+nUjt%M2F)Mq zfd(>g7I;L01U<mm?PRtcNU*HHF`a>dSpkf<gjhrZ1<O5M978H@y*+El%V5C4U|`~N z$V4IWpXpg9&X^^p7dU`QfZ)dKJNs@;S${soXr_<a<dYOotAv5Z9hk#!^Hg>Z$FrxP zFyt(8jVMV@EGWs$&tq^6JGDw2D5we&Oi3(BwMs5Z1yT$~28QOk2Ijg(h9QO)Rz^lv q#+KR!Mpgy}td3UaP&DM`r(~v8;?__i(^Lf1z~JfX=d#Wzp$PyAgNw-k literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/E/tile-1.png b/exercises/inputs/3_files_and_commands/E/tile-1.png new file mode 100644 index 0000000000000000000000000000000000000000..ba896da08f1b05c1930da05274050e9bab596216 GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^7a15BRhXE8tTQz>NkEDv-O<;Pfnj4m_n$;oAfK@~ z$lZxy-8q?;K#oGPN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bX-A za0d8<xH2&O2ZH?k|G6@EcLD_&lf2zs82>Zr-UF$~cXKNSimd>$MH%)jKk*hMSl|%} z6lCxKW4Dvpb|AsB0>^X)24)2?-V$OF2^385ba4#HxcBy!Auof10E?qkP2wZfOA98k zuz#05nPbma*0UipRNGa=H4uVAg6D4d8)CXhqYEcmF+bGiB}94ZE2dBJojM;1xHUlz zC~=J_Nlq*%$;{7Va1A@PN*pMt3KC37EJ?LWE=mPb3`Pcq=DG&vx<-Z}h89*vMpnj_ o+6G2e1_rE-R_9PO<mRVjrd8tBP$JV*1k}Lb>FVdQ&MBb@0NZMPd;kCd literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/E/tile-2.png b/exercises/inputs/3_files_and_commands/E/tile-2.png new file mode 100644 index 0000000000000000000000000000000000000000..f63e870b4e4f01c6a06a315a9e8f40d10c80a77f GIT binary patch literal 488 zcmeAS@N?(olHy`uVBq!ia0vp^mlzlrm06g9tgU=bl|YIm-O<;Pfnj4m_n$;oAfK@~ z$lZxy-8q?;K#oGPN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bX-A zhz9tCxH2&Ox3~YFo&A6M^#4HM==eWB|Np}3awnhy#w2fd7nc5vn}I+MXTF<TF_69n z6t`p$<X%?@5-jkD1POY8vD?XPJCI;mfnz!Y1G54cZwax81PV5Jx;TbZ+<JS~ke5M$ zhhame1C!K*1~!!k@l0aVbQt@tIVdwQJeYUwb<yP+rD~H;rWnoip^#d3{qn8Sot!|+ zfuOFK;ccnXW$it6SAjgv64!{5<ivuK%=|nC*RWHo#DRjUAi<Qxl2ohYqEsNoU}Ruu zu4`bfYh)N=Xkle!WMyorZD3?&V8H5Vbq+;CZhlH;S|x4`B{EG#Kn)C@u6{1-oD!M< DZ2gg- literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/E/tile-3.png b/exercises/inputs/3_files_and_commands/E/tile-3.png new file mode 100644 index 0000000000000000000000000000000000000000..bcf8802ddff7cddd1edb52207242e4fa2abdffe1 GIT binary patch literal 516 zcmeAS@N?(olHy`uVBq!ia0vp^7a15Bm06g9tT@Y`RX~a*-O<;Pfnj4m_n$;oAfK@~ z$lZxy-8q?;K#oGPN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bX-A z2nG0rxH2&O2ZHSE|M~g<j~w|weft0A-k3<BEMt<ly9?ugCf$2L4rjibTQN{<1rS>@ zw1u230SOj(L;?jFJiyrPWVRhhu&lr_oq>T_0gShVSb)r0=;`7ZQgQ3;9Yetb3Jffc zDlFU^1(-b!?3cRbaMoC)n(f-bsgqX!t8NnLbWxh<p(6B>?d9369$y1ggrEWxQA?J5 zkzJ)KKR0+T#B_ASZfWwmC+}!kov_0V<bx8|h?3;Qf|AVqJO<aWQ>(;*f~p|Fl*E!$ ztK_0oAjM#0U}&yuV6JOq7-DE)Wn^S!Y^iNvWMyE$>S%QiMMG|WN@iLmZVe?eO+`Qr N44$rjF6*2UngF?im0AD* literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/H/image_tiling.json b/exercises/inputs/3_files_and_commands/H/image_tiling.json new file mode 100644 index 0000000..3d1b54d --- /dev/null +++ b/exercises/inputs/3_files_and_commands/H/image_tiling.json @@ -0,0 +1,140 @@ +{ + "name": "Image tiling", + "fws": [ + { + "fw_id": 1, + "name": "Render an image from a character", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["character"], + "outputs": ["image"], + "command_spec": { + "command": [ + "convert", "-size", "800x800", + "-background", "white", + "-pointsize", "800", + "-fill", "blue", + "-gravity", "Center", + "-trim" + ], + "character": { + "binding": { + "prefix": "caption", + "separator": ":" + }, + "source": { + "type": "data", + "value": "H" + } + }, + "image": { + "target": { + "type": "path", + "value": "/tmp/letter.png" + } + } + } + } + ] + } + }, + { + "fw_id": 2, + "name": "Tile the image into four tiles", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["image", "tiled image"], + "command_spec": { + "command": [ + "convert", + "-crop", "2x2@" + ], + "image": { + "source": "image" + }, + "tiled image": { + "source": { + "type": "data", + "value": "/tmp/tile.png" + } + } + } + } + ] + } + }, + { + "fw_id": 3, + "name": "Rotate one tile 90 degrees clockwise", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["rotation angle", "piece 2"], + "outputs": ["top left"], + "command_spec": { + "command": ["convert", "-rotate"], + "rotation angle": { + "source": { + "type": "data", + "value": 90 + } + }, + "top left": { + "target": { + "type": "path", + "value": "/tmp/piece-2.png" + } + }, + "piece 2": { + "source": "piece 2" + } + } + } + ], + "piece 2": { + "type": "path", + "value": "/tmp/tile-0.png" + } + } + }, + { + "fw_id": 4, + "name": "Flip another tile vertically", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["piece 1"], + "outputs": ["bottom right"], + "command_spec": { + "command": ["convert", "-flip"], + "bottom right": { + "target": { + "type": "path", + "value": "/tmp/piece-1.png" + } + }, + "piece 1": { + "source": "piece 1" + } + } + } + ], + "piece 1": { + "type": "path", + "value": "/tmp/tile-3.png" + } + } + } + ], + "links": { + "1": [2], + "2": [3, 4] + }, + "metadata": {} +} diff --git a/exercises/inputs/3_files_and_commands/H/letter.png b/exercises/inputs/3_files_and_commands/H/letter.png new file mode 100644 index 0000000000000000000000000000000000000000..498dbd0d5188381b00e72e22131115497b47e3c6 GIT binary patch literal 1043 zcmeAS@N?(olHy`uVBq!ia0y~yU_8XYz~s)t3>5je*t-Epv7|ftIx;Y9?C1WI$O_~$ z76-XIF|0c$^AgBWNcITwWnidMV_;}#VPN<L6l!?Ez))(y!0;-8fx&791A}<MoLzx7 zKnaxqpAgrgqW{9e|DBxv1Ht+8|I^d|Gcf!&HvWJ5^nWd_|Jm99Lqq?INr-s^)iWk} zySp$8^7woLayawd+=_wpE+7_V2s@W>5+qpQ5eX9X0Ash4*>)hovI56+1_ovYFy0bk z5ef9sJWm(LkcwMxZ#()rGcvdwRBB{l_i$iTD+pjpw^3kYyxQI<_mA<@u9r5f)=b~N ze5hFPe0ubouP44NzkK_5<G!pjSNHY%{8vyx1#6U5RNf4Kyhs0GLCbH!ckVmnAJ$RG zU~ipozx~Ej{?_Ne1b)BQk8~mo4p})l9kLs)_)xXrKPDdksvyS#zZg*REpd$~Nlq*% z$;{7V@X)BfwhAby3KC37EJ?LWE=mPb3`Pcq=DG&vx<-Z}h89*vCRT=~+6G2e1_r&i g)EiJV<mRVjrd8tB@TYw~D04D+y85}Sb4q9e0ENYB8vp<R literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/H/piece-1.png b/exercises/inputs/3_files_and_commands/H/piece-1.png new file mode 100644 index 0000000000000000000000000000000000000000..e849c495224be9bd257aa95d2e5ec4d140abbd28 GIT binary patch literal 512 zcmeAS@N?(olHy`uVBq!ia0vp^4;dI3m06g9EVEP9PC$w!-O<;Pfnj4m_n$;oAfK@~ z$lZxy-8q?;K#oGPN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bX-A z@CW#Wxc>kD|Mcnq3=IFXv;T*N{tupM$_tcYO!9VjVd!9$^#F1>^WEHvfnu|P>>~_I zvOG6{1PeSOfr1Pm1s)7;C$sH9f@KAc=?o0a3Shh?#3B+XxWLoJF{I+w+p~te3<?4) z2ahvKZD9DfHSuA$^1>Nw&1bHPNG_daIl)6ksMAGhB5f)8ZtH8AU2AnEVD|jjTEX~h z=Eg3~-(n#k50tn@lq4q>lw{`TF?eWHUt0wfR0Rp9B$lLFB^RXvDF!10LvvjNb6q3D w5JL+qBNHn_Q*8qyD+7bxTj~uc8glbfGSez?YxvVX9~2V|p00i_>zopr0GAJua{vGU literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/H/piece-2.png b/exercises/inputs/3_files_and_commands/H/piece-2.png new file mode 100644 index 0000000000000000000000000000000000000000..3f749b9af87bf6e285963dc67e04886d939a2beb GIT binary patch literal 534 zcmeAS@N?(olHy`uVBq!ia0y~yU{nFJAF?n5$;qu(bAS{}x}&cn1H;CC?mvmFKt5w} zkh>GZx^prwfgFWok04(LhAK4%hK3dfhF?ITh8GMBr3MTPuM!v-tY$DUh!@P+6=(yL z5DoANaZOMEUsUv;f#JWf@PA|D|4vT-fnZr;wlz=zW0JSK3tM8^j#?mxGvCdv7%27} z$lk?}X?CFqBv{}P2^3`T0Ash4*>)hovI56+1_ovYFy0bk5eXFB;OXKRQgQ3;IY+?; z0|ADOhq)pcwSP=+X#BU^ScS_dxcE$Du_h24)c_J#i6GW^fA>4T=}X?yCDaFBCSPLr zDp~er_JmijK^`h`jVMV@EGWs$&tve=sJ^xeD5we&Oi3(BwMs5Z1yT$~28QOk2Ijg( yh9QO)Rz@aPhNjvEMpgy}y|>gGP&DM`r(~v8;@0q|eLg6D7(8A5T-G@yGywn|p}H*q literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/H/tile-0.png b/exercises/inputs/3_files_and_commands/H/tile-0.png new file mode 100644 index 0000000000000000000000000000000000000000..b5af3e8cbc4df9140bdeabe1c645b7487f8c6ddf GIT binary patch literal 519 zcmeAS@N?(olHy`uVBq!ia0vp^4;dI3RalsTEba5&zkn1=x}&cn1H;CC?mvmFKt5w} zkh>GZx^prwfgFWok04(LhAK4%hK3df29WxO7Yq!g1`G_Z5*Qe)W-u^_7tGleXakfG z4e$wZEh_piEd1Ze=|2#pr~hYQ_-}0df6Bt>$3O*)N#5=*%z`{VpMV_Bd^fjZAiWEu zlOgO}!by-|fkz}r&;yL!PG;MI1j`B>(-|0;6~K5)h(#n&aG|G*V@SoVw`Uy%83Y6v z9F$HhXpofrQ>$`ee>0c);q!TozB^g2{PXcnX3bfAF~dZv*NtY>eo6URsHPvA{gGjU z)mznTR@w7FJ}7aGC`nE%D9OyvWAM<ZzP1V|s0tEHNi0dVN-jzTQVd20hUU5k=DJ3P xA%+%KMkZE<rrHKZRt5&Wx6~U@H00)|WTsW(*6^o&J}5#MJYD@<);T3K0RUw@q#6JK literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/H/tile-1.png b/exercises/inputs/3_files_and_commands/H/tile-1.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba08c338ef2c7bb30d1990c79965a3560046534 GIT binary patch literal 513 zcmeAS@N?(olHy`uVBq!ia0vp^4;dI3RalsTEba5&zkn1=x}&cn1H;CC?mvmFKt5w} zkh>GZx^prwfgFWok04(LhAK4%hK3df29WxO7Yq!g1`G_Z5*Qe)W-u^_7tGleXakhs z5AX?b{r~^}`SbsUh5w&E{hxv1zw`co`+!o6N#5=*3>~bp9zYIfzMESyP;54kEy`fy zx%VANu)re{D98X(;KAT_GTRO$SXSVe&cMK|0LEKFEFyt|3q4&NLn>~)J?qHHpdi3- zP?&qhL6)`+^~+WlJZPMM^ZOx}Ev98lud*N8GnH?mhl)_AixSPK`$sNalR!27qo>dR zqz>&0e#e6#AC$O8lq4q>lw{`TF?eWHUt0wfR0Rp9B$lLFB^RXvDF!10LvvjNb6q3D w5JL+qBNHn_Q*8qyD+7bxTj~uc8glbfGSez?YxvVX9~2b~p00i_>zopr0Jc|^-T(jq literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/H/tile-2.png b/exercises/inputs/3_files_and_commands/H/tile-2.png new file mode 100644 index 0000000000000000000000000000000000000000..af54a5ff428d6b8044704059b92daa5ca985c831 GIT binary patch literal 511 zcmeAS@N?(olHy`uVBq!ia0vp^4;dI3m06g9EVEP9PC$w!-O<;Pfnj4m_n$;oAfK@~ z$lZxy-8q?;K#oGPN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bX-A z@CW#WxTdH7XJGiRrS(5M`#%uK>@AxGlwwTsc6VXv&$t-~<Z$M@xfKKHT|jY5hCJKE z0FYpTM<htl1B~5HX4`=T%L*LR85o!qz<5iDMI=ygzNd?0NX4zUXB{~i6a*Lyatmg; zY-r&BoxZ7wUyyGbllIoXqDM1Kq<Y;JU(E2a|Mv6D4(Vk3%{?G4RFr0v;pqwn#_UgD zj6O44gWO-@8c~v*SWuFgpU2>#QGIO{P*4>ln37nMYL#4+3Zxi}3=GY64a{|o3_}bp utc*;o3{ABSjI0a{dT*&WplHa=PsvQH#I4~^`+QJDFnGH9xvX<aXaWH9z@FOx literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/H/tile-3.png b/exercises/inputs/3_files_and_commands/H/tile-3.png new file mode 100644 index 0000000000000000000000000000000000000000..c6437c3512a4e862b00bf75e6ecf40a0696d43c4 GIT binary patch literal 508 zcmeAS@N?(olHy`uVBq!ia0vp^4;dI3m06g9EVEP9PC$w!-O<;Pfnj4m_n$;oAfK@~ z$lZxy-8q?;K#oGPN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bX-A z@CW#WxH2&OKYjXtcJ}|!(EmWtJh^%;P>M0h+uenwKjUT~ki(hp=2i?8n+?R43@p3$ zl!F8dJR*UD3?5+Yb~4)zBv@A9n9jh!tN_MaLM$SIf^$4w978H@y*=y5$)Lc)aKP1| zSxxZG{F7Y5$K;B_A1KZ0eRm<lM5@<q@x_c9sq~psW&CI6Lix0%>U+i4S?+AT{P3a- z$nhnv5hclq1tppJc?=#J)z?-51yw<UDTyViR>?)FK#IZ0z|dURz+BhJFvQTp%E-jZ p&{W&N$jZQ=_m+ACiiX_$l+3hB+#3G0&j-Z<gQu&X%Q~loCID!YpQ!)< literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/M/image_tiling.json b/exercises/inputs/3_files_and_commands/M/image_tiling.json new file mode 100644 index 0000000..9df3456 --- /dev/null +++ b/exercises/inputs/3_files_and_commands/M/image_tiling.json @@ -0,0 +1,140 @@ +{ + "name": "Image tiling", + "fws": [ + { + "fw_id": 1, + "name": "Render an image from a character", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["character"], + "outputs": ["image"], + "command_spec": { + "command": [ + "convert", "-size", "800x800", + "-background", "white", + "-pointsize", "800", + "-fill", "blue", + "-gravity", "Center", + "-trim" + ], + "character": { + "binding": { + "prefix": "caption", + "separator": ":" + }, + "source": { + "type": "data", + "value": "M" + } + }, + "image": { + "target": { + "type": "path", + "value": "/tmp/letter.png" + } + } + } + } + ] + } + }, + { + "fw_id": 2, + "name": "Tile the image into four tiles", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["image", "tiled image"], + "command_spec": { + "command": [ + "convert", + "-crop", "2x2@" + ], + "image": { + "source": "image" + }, + "tiled image": { + "source": { + "type": "data", + "value": "/tmp/tile.png" + } + } + } + } + ] + } + }, + { + "fw_id": 3, + "name": "Rotate one tile 90 degrees clockwise", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["rotation angle", "piece 2"], + "outputs": ["top left"], + "command_spec": { + "command": ["convert", "-rotate"], + "rotation angle": { + "source": { + "type": "data", + "value": 90 + } + }, + "top left": { + "target": { + "type": "path", + "value": "/tmp/piece-2.png" + } + }, + "piece 2": { + "source": "piece 2" + } + } + } + ], + "piece 2": { + "type": "path", + "value": "/tmp/tile-0.png" + } + } + }, + { + "fw_id": 4, + "name": "Flip another tile vertically", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["piece 1"], + "outputs": ["bottom right"], + "command_spec": { + "command": ["convert", "-flip"], + "bottom right": { + "target": { + "type": "path", + "value": "/tmp/piece-1.png" + } + }, + "piece 1": { + "source": "piece 1" + } + } + } + ], + "piece 1": { + "type": "path", + "value": "/tmp/tile-3.png" + } + } + } + ], + "links": { + "1": [2], + "2": [3, 4] + }, + "metadata": {} +} diff --git a/exercises/inputs/3_files_and_commands/M/letter.png b/exercises/inputs/3_files_and_commands/M/letter.png new file mode 100644 index 0000000000000000000000000000000000000000..87097fdaa071d7114b5ccca0ab98b7b3fa999077 GIT binary patch literal 10102 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	MUj){d=?%91*cKYC2-p6K(^eyN50Q$(2Ee!1$#T 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 KYd_a?i25Iy3ixCI literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/M/piece-1.png b/exercises/inputs/3_files_and_commands/M/piece-1.png new file mode 100644 index 0000000000000000000000000000000000000000..fd89acccccd263a297aa478a714bba57160fe69d GIT binary patch literal 2995 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/M/piece-2.png b/exercises/inputs/3_files_and_commands/M/piece-2.png new file mode 100644 index 0000000000000000000000000000000000000000..50abc83d970ff17100c5f917903ff3394761a29b GIT binary patch literal 2833 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 AIRF3v literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/M/tile-0.png b/exercises/inputs/3_files_and_commands/M/tile-0.png new file mode 100644 index 0000000000000000000000000000000000000000..d6683ae1874f12777fb29b6b799619d0a2bd6d11 GIT binary patch literal 3120 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/M/tile-1.png b/exercises/inputs/3_files_and_commands/M/tile-1.png new file mode 100644 index 0000000000000000000000000000000000000000..e802aacac4e0aca1539b0bcd79064d6dbc3bf18a GIT binary patch literal 2910 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/M/tile-2.png b/exercises/inputs/3_files_and_commands/M/tile-2.png new file mode 100644 index 0000000000000000000000000000000000000000..e497c5925649434dbed55909910f66d48c188604 GIT binary patch literal 2979 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 DMN}yp literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/M/tile-3.png b/exercises/inputs/3_files_and_commands/M/tile-3.png new file mode 100644 index 0000000000000000000000000000000000000000..a1beb9b3b8db8410244cb18eff1e09d1dee83c33 GIT binary patch literal 3058 zcmZ`*c{r478-HcUBukcri83#(BnpEOg?Z<MR9YOqgHWl#G-QpC%2M>c>ToQjQk`~G zvXm_?lO>Iou~U|#V~I+X<NlucuJ5|OzrH`7dFJ^&_x-zn_x;@WHIwY>!cmx~H4nou z1ukK~4a1~V&|=C-BSiQrRugTseRj@v7*>=nKjR~V&Qc-UI2*A$O^hLQSmH};bH=bJ z0}P8x#IPR-iu()04jW_GCvOb1%)&4Yes1|zYYdz7($&e$0RRREK}rfR3>GegnHku( z4@^zr+&MUK05)uZ>S|cD2+p2`g9o9e1~fGxFc55P;K>sh7yvCT_~#$U$bjHrc={9= z3^;TM*lc+I9QylV@nV>r1&V@@5D*GMR~JG<!P**LzJ$I$Sh56262iiup#k*tAR+>+ zte~k0a2(E@fv6~GZibH^!N35H905y95Q$*<a!5~ym>6hjfe#;G#R^DEgQG`*#ez3) zVAU#!j|U42c=rx^d%@5UPM?Nj$3QHGHEZDbaWFTBwl?VLfwgPl)G0V|0@~Zb!~~L( zz|0IfJ7L{ANKJ*56zJ}T_3NRl3zCyz&K$6_gUn1A8iI}v*t7{wo`kF{`1A?v?IAlG zq^05SzroQFa&v)3gW+Ky2snQpjE!M*6n^;y^7BDP2FAv~$q6oA1X)>VZ3Sm%NKAyw zmtlMywrqhbSHQ>!=FWwQ3D~+7u3ZB;Ir#Dgwr_{)*MUxluV3N)d)To95)$CX4VX6% zcJ72*w_x>Zke7#V-(dG{xN`^Q&xgrLc>5N9{T1Tkps)}W6yW=J@brY@VpzEn6cu4= z3V!<y?%xL`CGhfs2M<758K$Sf#|L6#;o(DAumFDi0AF7yD+5(k@b`y`3Q$vnpFiR8 zV_3Ef)YW1CeyFU3*RO%cgXn0et%aZ<sH+2gebCkhJ|CVvgIBL0G7=6ShWdJ7GGXab z2oHzGM$plL7cW2{fIt2K2M5T>0S*W9@?c~HE?t7ppTWfi3JSp06|P=|n>S(CF1URg z+}+{sUGVmXk`man2TDspMFj!^psETqG@v}fKTI+Xdp2|Iu_T$r1Uk@z9UVgumV*`x zqm@4jmw<f29f6p{fWRDu2W=!^7~gImhDk5^&${ns;f`T*-*fHl+#=dKTMi#pc2j$H z$SnD_>LKFPze=Po`}XahyQ#z0yKcW@$|c1!Y7TDY4pLXF-0Uq^uP(0}4eCAyQ;O%K z$3kpg#YhcyeEH`{?3G_4qv*-uws%7{r{w*MbZ6k@w91NewAljdS($^ldi4djvrM~+ z>xtpMrwdG`$dx*?-lu3IS8p)rZO+9fgHDn8ogG6TRZEB)@ld)st-w;;*ttT0udfd7 z_}H&;m1qt+@Dka)nGl^`p>jW`?YCH;lmf-6R5un??rk36l2)KIl^nW3?{{Qr(kJ=I zlTgQO(K|tC#U0(hoI}ZkwY(6L>tw5%>oSuTBa*8E+`UIBo5e!k2fFMV&fLe2Hg8Kq zvd(2N0~BJHv|mV4M|WldJh0}Ukz5I3bh@4+VHx++N}{IEf<?LX{AjXq;GN0u3?-RE z^Mb|(`iSyl?a>kHYwZMUO4++4eAm1d$m9FXAAcn#s{0@J6Qk1M-^W+)iR+8yhga$# z+IR`KSGV2~6fQOjSBks&v!0xfnJaxY+PG{5&0I-@s;9Y{lMrTFS0$HIpzLYwmR=y| zY3+pQ_eNj~OoVd$F@lZUw+isf)ejt&+Lxk;$D{DeH4mgE1(`@la^*TEcvSq2l!u;U zYDyc8C_5%{6T(`!>3$Za_isxyq}uA)Q$;;Z&!TW|^JI4c;yAo9`Lm?{f01XOm>KNM zWNOL=-BNZ+bTm=x$SUB>3EQ5#L?X;6S1uKad88v$=6Q|NSX6RPC0ELUz%y!Mls=)L zP9#bqa(RK=N!rMO51Wb?mt0SOLC%+b$kuX8+-M@#F`1=97ds2rNnT{g$6*nQZu*tb zc^-DI;Vg4VX*64XccQIGsbjrII&FAwlc&Tk@}k3sjQmdPiyV<g`??Jg=C8TuY36Ko zPux;Chu_i?g-GQ4Q3B`bYgBSjWOp_-SjbLYSWl|OMgMNEoa{s?jk@1JiQMCrp&B%% zEYdr~Z4TP`iTqkqa_d(^PO)r9u~`b?Mjh_?eefGm9rW(`kbwa=m@kw+WWR^{Iw$kd zpPXW;_M$@>693Jly&jd{`REo$r0P)=naU9E<UcLhtv61T99tFk7a7+%+@X&ucF!uC zScfuTN8!;$GCwEl$-V@6#X8kw2a&WV-xZ}e;93`?htMxx$;(xek@g*IDo8x_UQuHD z(JOt0%E>-Ci&+Jh%G|J!uUQPP2LH$SpL$zSwk|KoQU-5ISlU^)#IAy+z6+P-?&D7d zNJ?h9ub;3?xL5DEFxfUCEW{<P?s4+z*i~WXy(sOjG((m11#F8SizTKa|30EiW?5#s zkxDLV<V%d?gC`a4s8!`Oqp}WuOieV1RAS6jN?J#d!r*H2N9WSWYILXjk}ORxEYeui znW%49QT9TazL`=;dyJ#Jx2KAnU8(w>H*IQUKHl2%#*L-&ex7zVnw;h!5le3=_fFg< z)Bg@JcQb!r2SwN-Ee8eosHNG&i44?6WkMA?N5o)6ZbkzzP@cgolW}>pQI+n9@^MeA zTmMA1L?CJ2R%_A~H?N5gl+d-YSk%>?N0auXExKCVPjo2oJkum}tXehtCJ~L1xk~ab znJZNi`?M?qE6`{*?nL6`v`gYwsU)E8&eIX@;ES~+rLplNF<ha>eL4#NR^u)sz>QS3 z-)0(qxPVJD-ln4+)oX)CofYD+HA^~5&F72!Bzq`dWN(%fuJXNTjfW=H-jiR%Qv#&N zSFF>8>hE}uHIvaHJ9x@FWNO(oE!Q-qu{RG<CEf15fU7gMzj*g~3!1jL+r4>pSA4cl zh!@Qwukw3qXENT%UJLd2jabH&su-#+`MgCyXNa-`dyx=>)WF_6{K`VJ%ThVD8_;91 z&5j?XQpHJi<-B>_xZ=oFEst6&?vw1Eq?bJU7(TS$oG#e|Gz#hJVr3M8&gIF4;7`NK zi#D31jd-W~S-00PxZ|{vV=Rixla0nN6l*q+PI<L^jX4vV9yL0`L7q$qzWrK}dINc+ z#<7qyp|6cRgu8gO5WJ;Tc9PgzsL(*3ZSd31V*c^eppavd<LsU0*W_sy&!QrEQqj2A zJ(&iw0Ztftr}cT5#j&X|F*ZOfH1w0sVoslrsbW*Q;_o?3_mZrbDi)<b{AGk(?SCOS z&97B3IXyt^EWG=WQ%uD?W>GtCw!TM(^)_8P!t~*fjpVKFI-4$raLaJ}2szVG*~t(- zGaPPjBxh=EI(3A1hg%v+UP+rmx}Ww>K{Re9&dg!9mZip&v8c}BCnMyrk8V(!Uw7<e z?*O4#I99?DoQZkJqBfmu4bNdtpN=VEQ{Aoma+s_GW!j2D-Qk-kim<YcA@q7K-i6>M zn>HOGee(4H;nFsG!cLG9bB|564CgeGxvcuiRtDF7QaDL86>Tx&Y-@`$ALq{Q_2Q-X z=}tZ!AZ87pREil~^~st^;zqHO8HeIk<%sdY*6+`l(@O7*?i5~Jr$m$d?uR<;4)yin zhXw=(Va~f3=;<R+Ujq91g!)_h3jEQAnHaA%H#9akG+FDm*22=n%+lC&m9dGXv9ZC9 jTFHO%|2YH(`vvTc{QnNS<f5)12aN0BVt;3&cf!8`gU9TV literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/N/image_tiling.json b/exercises/inputs/3_files_and_commands/N/image_tiling.json new file mode 100644 index 0000000..c842b5a --- /dev/null +++ b/exercises/inputs/3_files_and_commands/N/image_tiling.json @@ -0,0 +1,140 @@ +{ + "name": "Image tiling", + "fws": [ + { + "fw_id": 1, + "name": "Render an image from a character", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["character"], + "outputs": ["image"], + "command_spec": { + "command": [ + "convert", "-size", "800x800", + "-background", "white", + "-pointsize", "800", + "-fill", "blue", + "-gravity", "Center", + "-trim" + ], + "character": { + "binding": { + "prefix": "caption", + "separator": ":" + }, + "source": { + "type": "data", + "value": "N" + } + }, + "image": { + "target": { + "type": "path", + "value": "/tmp/letter.png" + } + } + } + } + ] + } + }, + { + "fw_id": 2, + "name": "Tile the image into four tiles", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["image", "tiled image"], + "command_spec": { + "command": [ + "convert", + "-crop", "2x2@" + ], + "image": { + "source": "image" + }, + "tiled image": { + "source": { + "type": "data", + "value": "/tmp/tile.png" + } + } + } + } + ] + } + }, + { + "fw_id": 3, + "name": "Rotate one tile 90 degrees clockwise", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["rotation angle", "piece 2"], + "outputs": ["top left"], + "command_spec": { + "command": ["convert", "-rotate"], + "rotation angle": { + "source": { + "type": "data", + "value": 90 + } + }, + "top left": { + "target": { + "type": "path", + "value": "/tmp/piece-2.png" + } + }, + "piece 2": { + "source": "piece 2" + } + } + } + ], + "piece 2": { + "type": "path", + "value": "/tmp/tile-0.png" + } + } + }, + { + "fw_id": 4, + "name": "Flip another tile vertically", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["piece 1"], + "outputs": ["bottom left"], + "command_spec": { + "command": ["convert", "-flip"], + "bottom left": { + "target": { + "type": "path", + "value": "/tmp/piece-1.png" + } + }, + "piece 1": { + "source": "piece 1" + } + } + } + ], + "piece 1": { + "type": "path", + "value": "/tmp/tile-2.png" + } + } + } + ], + "links": { + "1": [2], + "2": [3, 4] + }, + "metadata": {} +} diff --git a/exercises/inputs/3_files_and_commands/N/letter.png b/exercises/inputs/3_files_and_commands/N/letter.png new file mode 100644 index 0000000000000000000000000000000000000000..9bc20ea871ad929f0af3a0dbf9eb06b4483dc395 GIT binary patch literal 5948 zcmZ`-dpwle*PkwOB>5#>P*k3w!ITh(LMS{lxnu}Axnx4+azYnL3h8u_?8eAY$R(HL z&PgG4P8yL*H&aKd!;w;*BT;VaUC!_Q=l$dL`8>1NUTg2~T6?Xv*LohO9qn!8<|@x+ zFc@;Q?PeziV}_W)m}&FFEabFQ>^z9WY<~+o3kIVsQFg*d3g<JzoNO!^Hy$k;z{v_< zTPHgP<A?@>aXgN}7(>?acMQe>T?XU5H-lkviNRR%b9(KzjSR*thT~S}Ep2VEa3L5N zz_)LJf1#mZX$cP>0)qk3(cte7`uZRx1y7!Uu`x_cz{QI&ZyvmT3tP9s)D-0B!{Wv8 z@gw;7!0p?xY88C_3I`6rtXa_73hUOv_&A(712Qu3#~)y21sNHzU;(^)2X1aqQ31=A z!O#!{2EvRPaQ{ANYs2^NaN-2anFG(B!G;YmISE1`$jL!(FE}_rQ4uUz0-rvCuP@Zs z14Y5e2pm2P?d_0|0CVTUt5>jP3tYVl@883Y9Z+2js;cni3xtHgg9pH7LtGqmb%CiV zq^83B`Owz~+qOY*F(@g)=g;8h2aS!Op#h_#5E%)xXG2E^7#hNb3m_{CuU~_$E#%~Y zq9T0w06TZWufM{I6)-#uGiO3`Gpt<;V`FgY6i7?Mix;qI6QrfVfBpmg{ow2jrKO;( z41fO(d-lM+d$4*nL`A`mKLR1}<_&PUaP1l_S_FfG;Oz~!Zb5iBoIVXd`~WXs!j&tq zeLMW~5A53qxw)XF1@ZB4{5U*)3Su#sn843JLvk|w`6t-fL17^b41j_HWM#pwU9fpG z)YU<EH>j(_*|Tuy5S%*)US5!w2k!1b(@<3f!NIV8Jv23ejt(3-0<p2cWWw|3(9i&U zK3uv4OP7M9BiP%+_3N;EH{7`cEEfFs8=OB6Jw0G!1KHW|*Iytn4<Zr#^b?qyLro1x zB%r1S`}f1ilfdIaNeKi5z}>sh(gK>AaP%mwTnUdK!_AvuWCWg`kdy=*4kRW*Z7oDZ zKv)>)>cTI-z~##z5P*vdl$C*s3LHBId-uYP8{p&w1qBck1P2eo^5sxj33__q>I#{e z5EBE|*5Kg*W@fN)Bb1jzXD3)#z?wCXo(_*5!SBCAN(!udEjl-SiFR>qHqTBBkZi+= zOo+907><?rEMf%yHsj_r^JiQ4X{PPJkF|K8*);Ru&ldi8l~(-wR676Y&R{5fpf_7M zAAa$%dpzyI?y08zEeS6T-NrU6-P^oU`MPM?<LeiAkIw8?_Q^h{94JUKRAF&~R-RGN zDiYXM$FAa-tf6fNHhFlM1XVrV9{F)pGxFoH@nb<Hsn7fCdrJDvy>F{NpU`_ARcGGU zoGk6S@?L>e!7Ba;r%x*~+@<UB>}PE&iqy8xC8;iwmvJsfm{C>l2lvNl{Z6L(r^i;Z zesB46nF0gu*u8}#8)qc%rK4v@UOCRG;TOLcjJnI}CR4T}W^V+cbhKh*rZ?vn|FX`A zWtQL|?UhpJxH{KU@0M!h)lHnboRW-tuU4PyTsx5H7ouoA!`3k1fhy~lnHPqesKI2* z)wAhnoygq(%(X1v<~y==hGJY!$lWWf<9AVBc8C*w!qzb8zN*$&sZ|4s{_@FVmPsu^ zk36+Lo?JEHQOS2m9*RjCZt%wOZc^ZZnUO`|OU~z*uS+!DUMOqZnem&d_S2J;q*gAn z*kB3C2}vvM=j^wj#|{qObo$ASeB4kv$_eqI$1X}Db8GHUQ8pvq1#AN`Z%A@Bx2m0* zTsu9!rYbg+X>#{8(qnUvh$qx!9Xd0bU+G+yS}nOL8(HbRI5X$7sMM9~yOJ~ZxT`3) zYz6b-A>TIP-59}ex1=JsRF@egKN38k?I^xd*L5%V#wO<Ez~CDv*L-rbPVz9f*pV5f zR>z-u9+NyAC3&2C{b#1fSKpA78+Vh3C%=;KuV)H}XLbFVTX=yfJ%3k8N}i=~*uV5S zmuJBp)0ce7%`at2%lmvzxpG%H+^`GBnJL3ol396q?aWh)N|$WqW^u<Vx@7ZmUo&M- zRcLOd8*%=1WficF(&jOBJ|<^2h4!u<`K4g>Od3AK)$LL~W6_y$&vTvJmX*dw=0)CD zR6Lnuo?_}d_l#9%M$@Y#FN*k{?Xv1TySdYqFHf&sEZ*N=k-}ecHm4!;l4&kwk>KyZ zq8%4%l-CHT{2pp>9aHAL<;W#6d;K20NIN>F_LsUmYTM41D?E~!Cnz1oRRx2l%+v1` zMlx{`JGL&Lve?<|=}a>9ipn*U5kxskyeuQ9;apt-W%2aVBUKlYc`T*W6-5svMI41E z=TZmVQOn$s>tyr#vvozdO1w*6n|5?9KZT11j|}c+$`saD$ro(V9w^!6fRc*-(i#+T zWFmh;lSHOBD2w%bTRdG!<_(_`ZQ8l1tRKaBVUlsguNsVM<=D^Q{$=PdALuevE92eV zlNKRP*Aq8Ck7Z8E4W2CKEFPV~^?T&&5a`_5+9t(YqdT;+>Iq$|(nyZ2jPxxcbw^^D z9&2|cqWmj^JC>#}(rnG#dB~uzbuhV@v&M6#FwiT_v|<~5NY<^hr}>JckYBE77oigA zpG|_@XO;F29UW=6W_Hgl&1tx7TInKAAM+Luh7RT?aB7c8yqoXsiWaADr(Kum41D%> z2y)RYn(tQLs5kNq_vn;PCux(R*1)IDyjOQsUl#VZD0z#SXC?bolEbwd$&~zHRWV1S zs9kWVtRI(IC(P!K1m1u3GCxOUhH&^$#b~vbd(?V2y;0SX*9iExrEXsxTXGh6@4G{$ z%tqdBXMTB(2Q2n=2zKu5mKP3Bsz-^_kI*%$cHbG1VMS!Q;c=#PwNE07t7dV>%ryp| zCU7+5ud>v3l^~D3S5EkcZk*|@ZFJ3lbOzM?+Jas5LS~4D7L0sCg}1ks_P&@o@;AC{ zQE86XJ=Ir*{QK6Wd>_q`ArxnO(+wuo@&#BJ@(|J2A;hJ8c9dDs7mbk-6#tH5W1qwj z=gysRc}LSt>s`cbk4BQ+RQlXVYv2loLsRm>Be~^eeBRMBrVVJq@+ke`0nfonbZ)&j z4f7(SiwL{J$f~K;f7a6E@H!;N6)U99acUo<_uQ+GyU^cS+htx#W}~{DsE$oiS{mtE z^GsHTw~AYGT+h7j+LH<1&YjC;g~M%S3$AlCno#Dijc9WIvCM0NQYA#oMl>nI*l9FJ z(5#L{Q+$`Xh5CP6n|e<W?i$0KJRA5!5!rI<4mr8DjEOtC(Y(-iYg4U~!%H$*Ub}g2 z$;<SWb&NwzUf#{mxiw#Bz>C|p)S7wGE1Tt7z7BWTU2Y`$e&y?te2(fCRmcBV-JG<0 z`8glrrrO(Xtg1eRnx%CHdiarU$t~tmI>y1$D!-xl2jOsJEMCW7b2cd1eP8VHTOt3{ zh__f0)<xmTTfJ#7mQUK!<gLM$y!uwdby@>^pE0=hq84i;U(Mi-9g?iZR4L42jh4Bf z0fq0<vc~(%-H{x{L~09MTtt)}w+j->cOr}1PE_=}bP-rKpjj($X%S(@Hj>mYU3$nG zM_ug7FSE*QYvtPopG)^#=ghb4nOD5+Vvw(MryK_L-a^Ck+r+o00-762_aoea;ya{j zZ^Z#5$5EMW^?4Vuklik@DT_c>WV?}7iho%YlJe*l_3A_yv7huEBKg|23Dq^BpXvD? z5At)y742@uu=y_K`_)VNvGIYcvdO2tn3ST@gmWB?<aR+u84|U|cr@<fiX<d!?vQ#J z6>%Z|A5Vk6ra)#kxuG}a_wIyWpaznw+&ZHl_?2t98!XmIeVP7|@7#G=S~$$!QJ#f+ zH9G_u6<OCg2esve*yKE#^K&AX=?pk*9q0b##=O`X(0sAW8L!2X;nwyOL0#L?)B<n1 z$I!=DDY>QKcwS)BeLby#=B$wT>d$wcAsH;q9s3%{E+XF_b_kYBe!>kw0n=U26RF~W zX4Am6MWkxq2_`naMl?VjjknzErDwAyb=mp6jmd03XN73}%CIGdsaUL(+&W>sPnuHl z^(j5kkU=%_Mx9o=l^-=S6rq@fXKS>s&~h(bXeWs+_QSwz;f@Uc?x(LMGv=WBWFXM6 zh*-^uWrp=vbfYr;MpExE=BfAcLb!h>YrOo;bxyU?55n~JM7F<krzt}??3MSCS+Pib zyQEz(t1BE$mO(#zNSA%Y-EA1RS=E<a=!w?$QORNSN*H>j(W>hRuKNcAs9k-<MSRn) zLtrI2imaY?a&K<eF{IW9G*@&T+s@Q<n8{sytaXk7X6qd6ltmR%SfzS0SvI9e)SgCN z>NaIENFrQ=mXC^Zvd+|EyNKm4+w*fas72|A4=**miawa<)|v6px>8H>VUIyyaP>4x zaYtz2g0v1ypqX~=Nv#1c3di)rf09i6K_+VKu_Vf#kzBxgdLy9upFrFHE&6e%Nsevp z2FzBY(-eysXJoQq4SgnOd_Jn`<kL=6w~aR)okSTE_rLKfQFKzcO%`)B#g?oZxUq?6 zpG?_={x#2_k2#I=u!B6-!zEiit$6jC2$N=}pp)wELKNvyEexb^gh+m+ru^QuF%icr zJ0$+urD<&&WOW9jry<>S=h;QvL_<C;sN@%?PGg?x5V+bBbz}Z4QK)cQva%B22GOvK z)d9`5r1v%>__4B1>P`n#a!A3g^ZD9w`2u<<qwn%Bc^h|-^w&mK{zd}onhK_w(<+*y zq=JB4@^}<oouG_F6~?WAGH&fo%-d*B(nqqGX@(c6Ylk`nO<b~Y!Y?2=j1H~Eo)PU8 zujX{I*P<`TiZ^9R(yJX9+-i{~Z9m<kWAw%^h$zT?YZlOalJpv=P1@Xgc9s$kSeNER z>n2gTo~9iFBQD{|SMtZ_linxG?IOx4W432Z-r#E5z9y5I($6JM(=GWHW!xAN@0Wr` zEJEMA4K(nDz0q3N%tS-;>CnPcQ|%7@Ye=s%cH&zaBuC&PZ5MGC4`9h%<E}&7AG*rA zg@#Z01<2E(J5CD+-3!;IGQT$nuUqn7v1$8ktV3auc<>*v)7L0^>2Zf_3hR~aA~Gmr zIh&q&K~?C5XUCaQ;1ns=5v#GI*`lEt=mIsiacKf&Tx`Re+D6h%Ds6aIShW2|tfBF? z#A#@SXvhZ@#?>pmS4*O<oeU8BNTGE#47;1wB>k`5G5CUr=bvt`2{7#|^W9r9P1ex% ziC38$LI`!OAfUMwvoLw91@DSFZNDU&X_JUZ{p|t=4tXrZ+VKS)DpT3pwTgCX9#^pY zevUH!YSlAu`Js9wq_|@tXPI;XbHeZ4SM;z7rtsZ^Xt;{bKn>>SlR<`P$P(wW?3)MB zVe2h;W*EH$l`K|93U$r5gYY;M%`%>2_dN!s=?Qrg7b)YNCxw5UK8%jADmlDXG~`5w zzBo~@wBs8=k&JM7Eexl$kckkj7bo*>Zzbsm(P(=_b8Q!tpiTon15s!$WqdhSn7)oj z1O)5p2Bvrq&)=X=h4c=a><D$mtbP*`?}@&=T;53jJZMWEtCr^Uj4$-W&}a&x=Zc2d zbm;qEgz2U>B;DScw;j!tiPj$u!m}u`CHZ9(i)oa_DnVa~*0&4B(MiiId#7%q_g&@e zB8n+vmn}W>S|>e8`YWsh2}&d<u0d(X7LvZk0^cby&z7_cp3a}N+DkS&>n*kWex5R} zOB7z;#v|!wn|QATwxl!j1a>*JjDh#^1p+@;vx_LgWY~wtwj=4Ethj5;bI=oUPs^o5 zL+WUmbd<iq_y#(346ly47;k_d)<tc!?Z--f>~1_eOBA{XFXXqhtPGkwej0%9i%gnT z5SJIYinb5KduuMFuGO>?X%S7F{*el3mS>6!u&)JtGR5p)po8CN0xI`vSwM3eQ#`P- zl3#QHQ7O?-5sWh{C~kIeUx&aPZT>Srd?E-V`(0a99)ucqBDNal8?S??m|*JKOBwVX zp+mJ!Vd{Ry*uCr^`@Wzl(Z-_CM9R23UfA-9qU~+2vRvW8sV9{CnWr~S<{iaopWnni z_z4lkZ~mLQ7)LWq=#(t{NV`bozF(WoYPdjMOPSjtaKJO34G>?8#KSb&8}ub$kx*o( zZtx=Mx+-eU8E>7&U8(QBa!Tj&j&3LEk2Z7d-(hxQmui?8MaSx#eQ_rwem<h9wG$6% zM0w?kE<u0J#y7)J^gvi;?`s9x>2A-w$yCf=yvkp#kbSta_t8w+NhI5#G<KCTo|I#| zf2+dejm_IQo;eMCPs72IcOHRjI*7Ur0uRZFLS67w3pF!YC72!m1c*C)DZ1dBhe4k< z=?ym<^ULqSO463eY+8)#ORjYYLhy$20>t~1QKPIupVaUF=9meloV^wI(UsLShjumS zn{G1feaG`Au*P+t5T+Zr6G5n%1+QM4w(r5B_Y6}wv7KC^A|CAaId+N?hb&gHBl$PH zi)e)>ElPog_$`&*szE!7_XQf!F(NY}r%5}Ol)s^53dbaY#&pb>@-cm9lJjWSV_Lzv zQMdXsWnp@^`XW_$N^%&#{`j*z97v|>t`8{f6t?2#pdA&Hl+1goI)k$4yZm5|fLcA# z>PVB?6YSNrqmqgwj?DgQI^ma3(UYk`$O;>+SiqFotERGz<iFaj%~4RCnilSS;D=wD zw}S$0=$IGt8<ezYr?&Ey_*wXCBBj2^Y&`KG*?b_IQZI0Ipsk(c>HAKHXzR|mOmZ%# zjZ&h;PPDbczd*$o_*CDM6h8GdHu{|n$$8JwBLPNM%+sIb==+_Q$vLVM?R)FN65DdN z(|W{uU2r_7+(3Dy*tW2K2T3xxJs5(F@Ez)6+h#9qv2CpvDXa7(Nl&usQ2k{}ofY9o zk}C7JPA^mRSdGg(R)}pyDTr9O3TKxz#I{GANtuBQNpjZPLXw7WQ@#VnXs)mr&DBJ6 zBfQY6vE<*;65*C8rV`EmoXn@bu9-~BB06cGgnVlK2E?r8lCme8QT4A$l=^@h9z66M zdgD<bV!0sH+dBMNo_iQWw);gI(pPulPd7Q28-|#^)?7XED2Y!o({Pq%f-}{Ne9EN+ zk>3m0V%rxyWde+YVe{hu-rwmq{lBpAEpFkyK0k-=2?=J{H!cm!KqhmV$@dB0ZQ>ic z8wZA-?m8p3t`S>ro%6aMP4sn5^o+H2^-Oei=UrG|{C_qCh4A<IMg0F8qFNIc;06Z0 M#eVY*OYfNf0cH=DRR910 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/N/piece-1.png b/exercises/inputs/3_files_and_commands/N/piece-1.png new file mode 100644 index 0000000000000000000000000000000000000000..16a3267088932e5ad023f5a4de64b015069b0afb GIT binary patch literal 1249 zcmds$>r>Qa9L1mIDlj{e(*^@Xjzldo;DW<#N!WFk%TioizztzTU>9VFST5U7HVcBZ zQC?sKRziT6AcTI(=vc7mc7c>7D;hvaAWD8*8e;|GA}pMK>$_g`5A@9U%=w<r%z5+7 z^PEhGi{je5*b_py(rAf{b%qd*$2LoLTOSMzVa+N>94jWIv)aLwVa;Yvu`Fsop?`Fn zW5dp@Xjv>F+7}2Ze~+!OsC<?Xjew9p4-+E%m=Gs*L-&D~*xs`VuOvkb41f@@=iWVR zZXzrUXU}4K8r!!cF%eg;;L#(vxF9zdy}ejl1D}twG7JyH+8RP3>gw>|0k~XjZ6PiW z?d_PKhm#YOO6c`iS%Ie~v|0=f!paIJ69NKo`ZOjd;otzN6fG@y_z*lE($k^SVR;$5 zc0r@Tojb6wz{Upr{7_Ye@p0JMK_bDqbC{dMjvY932-mM;X$kJ`P^;134-N<G>+tcx zi4zzdg{>{Z!%<(4nHe}bA~_kIomg0at1I&I(ANhqFO-*KWCS)g2o1%VGnkq}d^|cj zU^K$n87dVzwZm!V8_s+=N@9`ia7@VtyMoBbV%D#*>Lq{AEYFysIy%J+qn{|UKQGJ- z-&Bip2(jGxMAwpnQwXsrmP*7)M}Ph6r-;m_50HpK-y>-it%VfzqDW1>zqzOKDaYJ4 zPNf`8x{9~7H>UMNsWoZUH8uXeF)@Z7zL(e1`HL5SsA9pM|0`&>XMS<1-BbneKMLaU z<sBX3u1jsAu5MP@`CNl0*4nVls*M}K4+`Y*gYs$7=x>WNw2~RoQ`X*J#>$)BUI!(o zi*7aOGV4OA;pVY@t8^06SV|q=y*l46?kd|-d}6S)^-gdX_Ds^z%m>FQ&)wDT?V^z2 zo3pftIoU@sUh$2W#HHHXibBKQ@8)9?8~4d87fnCwzO8lgJ=ok+Qo5!{F?f5-pOU?H z<KVkR>bHj!QiH39(Ox#ulU%vDGOH`9rM@5IU1;b^tz4Y=N++vb&GAkMI~u$~J2Dp* zC>8&?@HWwCnecad8*^1kdGed|pNk(C{h{C(<R2QlFCW`%v0?5%Lwzd0S)X5cSHlc# z1X2q5J4ZBk3z=K-JpM-0{c%m|<IfmHYh8M4>VzgGWNl=H9xxccFbX?N3s-HJ%OjMY zGiCZ(zvwn*G{4D`h*wLpGSnrx1#ghJZ=8#pSm<en%8U|~Fsn$#8u1tS1^EbqeEj{A t{DOsh1?+eW{DlHR@_F^-zY6&U%G~VI|1La_+vXocq!DovdjH{ye*h$aSVRB- literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/N/piece-2.png b/exercises/inputs/3_files_and_commands/N/piece-2.png new file mode 100644 index 0000000000000000000000000000000000000000..d256c1f957552595c9f9e8565715a593e6e8ddd8 GIT binary patch literal 3007 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 KtWxH-xc>mZCA?q& literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/N/tile-0.png b/exercises/inputs/3_files_and_commands/N/tile-0.png new file mode 100644 index 0000000000000000000000000000000000000000..30ea36f56ad492ac5c403e0ae56e6b88bf80c784 GIT binary patch literal 2986 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/N/tile-1.png b/exercises/inputs/3_files_and_commands/N/tile-1.png new file mode 100644 index 0000000000000000000000000000000000000000..7f70835c2c4768f64aaaf1bbee19d6c4596e1541 GIT binary patch literal 1262 zcmds#+fUnd7{<Ttuce#@xN)Xiel8UWOQkIxgW|A7D6I&amF&Pm0^`usjTOtm!2~Ii zY+SJYHk=VG5(#V}#yT9ZFbsw?N*jV9&_srgYzm^~v~U=Q0gu0W=Y{`(7jK^T`Q&+S z-n<PbGt>5YhkFx3_GvXKI#y>0;fOpbcJmA_{+<<{UX`IDr2B@?P9C52oKjs{GO_+7 z{EIbozDAcpNL3^uwe^H-v#9n@LdqqCxN-?md`3t}iRIxtud}`IlW%9G0x+3y-~f`7 zq1S^D#KvN22?Yfh9E3=O=g(1D35vql802!ic!9=7cza`d8frE6_R!uAmka04p|1~z z4q<f_Mk6>JI2;g*v9*QzdI$uVoJ3L*c6ZU-41a&j&O)by)rzn%EH9&|2tz}NjKszU zu3Q0+hw*X5#bIX$3<Dn@Jb41G7M-0448;6Aa&pk$51Pi>8n|4Hj36ck+uOK$6;o4C zDq*o8AOLf7$jU-@HzFeN>=_IO*ldW3!saGwYQX2i=|p@ynwsG2i>FVKo{qbB5gd$# z1vqA2YjvOZe0o|6xyC=JVU3qjtuAF*GrI?o_szmtH!RVdWg&3~G(_#VkmQCHB`Q53 z6#dWiWW}E)g!{2JMU{1VYH{+1?10?B`aI>Z-@U{D{=h)cy@B~XqpdgMbbM?QHXaWR zB<dq0TRyjBH=ODW`^eaPs{N?JL&MOjPx<>rcB`_E_b7<916;5D1*d6M-GaAB!{nHG zUf&*JLlyt$5K^oeZwl?@hHF&Ux}kyU&&zK)uYB*_mfw_@rf>CyGE<7yA48cIZNAW6 z{L4f*rAw^1li<-&(V5^k<6P<)u62IVGi-KF%kAc0AG{%!(dD$*MEf6ltI1b$FzHrY z7^7&3OJME~k4I6u(&33{O84q`w7^vJ@+g~?jhg84=tUEKqD^b_)wE{Vgqqg$5utrG zWL!?^LMG&bmGRl0(OT#2uM8GW*9C)xs@zp)>y@q|$K=k5n-6dQk-$7y?x^<YSh`c~ z*Rj-T_M6!i7{26mIeNy-A8tlv$m#XV(qcK?`$?RFxj#bD>!Rw%2~3rOyYgt2!&FJR zx|lTOVAXM=Gpd!YMNj(&%L1j#=4rpt=Am?zUc4B0c)gG}^Rtny9$&kD=H|APyE69; z!nPtde*dn@d3Yt${i9{6XUg*PO3DnzOC)nBw6u+duef1BURj|c-&Dv7kx8V-#FArT xnKVlpuZWc>WC=$kGKECq%N+gsUxi|0fuX4KzYEo)jW4kUqD{?Au_ou%{S97b7VrQ7 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/N/tile-2.png b/exercises/inputs/3_files_and_commands/N/tile-2.png new file mode 100644 index 0000000000000000000000000000000000000000..09750c6bf443952d1775c86e70bb8d2b9295ffe9 GIT binary patch literal 1189 zcmds#?N5_e7{*U)siR#7Gj@=cF`{9qBgB>sON)aP%S*$krGTK>L`I9NjncHRD0_jR zm@Ldd+=JVs*~&g(0thl33+jA}#85&V8VNWVCiu{GAcz&^rS{sX-}Yhuz)o`KI@d4f zy6=;d^OZrLEfPosgb<M~M{A_Y62jU1$~wAR9o?p)!rQOO(-6|zBn*^=QO|K0volDy zC&oujTzQT$kC2+T38_0qBNWyBMM$-rkiYj4qW+GMD4X*_{&t#s)9^uI=I}5G0bOP@ z78Vd4jjk>PgV?zf4<AA#!l_eu@dBx-7#jnhkGeW6FJsFV3=V?Bfz^t|MM$OS?L|=$ zyk0~`qO}$2>6n<n`t>+|9ILBHOvKO-Y&Q7)h>b;mKlbc_&xZ{g(AEa67L$_*4@YAo z*4Cg<U}OYbE~=}sw1iEYaPcBaOEEVGu^8>`(CP5t0fa&{HzN>0axz9o!Q-K(2G5=$ zJ|0)Dz+}SwJffn|*$KTK)6-~afm)5bcM%qb+FHnDxN!p(3m!j)M1phYP*8xG8AL?j z^l7A}VSF4vHNNK#z3|7m*;;Oe@N*M2;gwlg4yxxVSCK*`i3>qn&h8M*d0AOQ*0d1( z)TY@_$hx?fb-plVHz8c5POB+AeDBe{n?Jw7i##?u8~Nqc1l8t~j*a=eOuL?2Uw?fq zouB&cMxpzF&;R~4=SN#BEWXZLw{HiYpIv@B8@%am>69>i7cvG)?zo)4%t{!4b%TAS zmCtrf{qAy}5WDkQrA(jMdeq)uB>Q#Y6NASiVCOmv^MBIwl?lx7XHv#Ld7017^%!DP z#$C=GZ%J!PzqY?tENhB6Xz=t3*q9!}4=EEaXMxx~=;O0a)gLaWL+tiXDP`X45hC|M zNn2p?44?h5!{E6kb`KZROXN1#7wOFI;F!y46}xAZ62{@*b<}>SShjGVw*5`O-tRG_ z9i{`bY1?T&yM5((&(qvpo;w2eNgtmL1TSe+Ti;<?_imGUn*{8o4#VYOpGH+%B=hDq zJb5%Fa<81p7zlK0R0|2r4xR4%sQ7sEUWQ?g<Qt7Mng3_7#NoGJJy1Sn{U-FUsxnKe z%FAq3mdZm!e=XYaBZcuHXez5RtIO?XDkMp+P$tTiiAjn=MT+`exjIReAWu@u<*zm; fpZ!<hV5P}Yapb=PUyPi1od$?5Q?KpL*jN7#pF<zw literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/N/tile-3.png b/exercises/inputs/3_files_and_commands/N/tile-3.png new file mode 100644 index 0000000000000000000000000000000000000000..6c55f62abbb732725054def3e34fc6676696e075 GIT binary patch literal 2891 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/O/image_tiling.json b/exercises/inputs/3_files_and_commands/O/image_tiling.json new file mode 100644 index 0000000..bda0e93 --- /dev/null +++ b/exercises/inputs/3_files_and_commands/O/image_tiling.json @@ -0,0 +1,111 @@ +{ + "name": "Image tiling", + "fws": [ + { + "fw_id": 1, + "name": "Render an image from a character", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["character"], + "outputs": ["image"], + "command_spec": { + "command": [ + "convert", "-size", "800x800", + "-background", "white", + "-pointsize", "800", + "-fill", "blue", + "-gravity", "Center", + "-trim" + ], + "character": { + "binding": { + "prefix": "caption", + "separator": ":" + }, + "source": { + "type": "data", + "value": "O" + } + }, + "image": { + "target": { + "type": "path", + "value": "/tmp/letter.png" + } + } + } + } + ] + } + }, + { + "fw_id": 2, + "name": "Tile the image into four tiles", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["image", "tiled image"], + "command_spec": { + "command": [ + "convert", + "-crop", "2x2@" + ], + "image": { + "source": "image" + }, + "tiled image": { + "source": { + "type": "data", + "value": "/tmp/tile.png" + } + } + } + } + ] + } + }, + { + "fw_id": 3, + "name": "Rotate one tile 90 degrees clockwise", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["rotation angle", "piece 1"], + "outputs": ["top left"], + "command_spec": { + "command": ["convert", "-rotate"], + "rotation angle": { + "source": { + "type": "data", + "value": 90 + } + }, + "top left": { + "target": { + "type": "path", + "value": "/tmp/piece-1.png" + } + }, + "piece 1": { + "source": "piece 1" + } + } + } + ], + "piece 1": { + "type": "path", + "value": "/tmp/tile-0.png" + } + } + } + ], + "links": { + "1": [2], + "2": [3] + }, + "metadata": {} +} diff --git a/exercises/inputs/3_files_and_commands/O/letter.png b/exercises/inputs/3_files_and_commands/O/letter.png new file mode 100644 index 0000000000000000000000000000000000000000..97166f2e55d6ef3a5ec3a8ba42a6d7b04665dc73 GIT binary patch literal 11392 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 MkW-PZmNx$Me;8<S5dZ)H literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/O/piece-1.png b/exercises/inputs/3_files_and_commands/O/piece-1.png new file mode 100644 index 0000000000000000000000000000000000000000..7d4adf113bba5c41dfedaeffa8de5820271735e7 GIT binary patch literal 3775 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 H3_AHAr$u&) literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/O/tile-0.png b/exercises/inputs/3_files_and_commands/O/tile-0.png new file mode 100644 index 0000000000000000000000000000000000000000..cf6807fe74f7c329ebdfa53d00531c58462560ea GIT binary patch literal 3827 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 TSLAkZ42Zq8i&eFSZ_<ANYI~L| literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/O/tile-1.png b/exercises/inputs/3_files_and_commands/O/tile-1.png new file mode 100644 index 0000000000000000000000000000000000000000..ddffc77a3b31f46e91213b5758dab568b0b81876 GIT binary patch literal 3899 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/O/tile-2.png b/exercises/inputs/3_files_and_commands/O/tile-2.png new file mode 100644 index 0000000000000000000000000000000000000000..3f66b899629791350f703940ac71415acc8b135a GIT binary patch literal 4189 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 U98Z<o&1*o}SlV0E9`sK74{qNhoB#j- literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/O/tile-3.png b/exercises/inputs/3_files_and_commands/O/tile-3.png new file mode 100644 index 0000000000000000000000000000000000000000..e0945441ccf5d4f0de3e1d6e7f7d8b87111e4d24 GIT binary patch literal 3788 zcmZ{mc{o&W8^;eKTYhbRV@X<2GGrN&M2e!ZuY*a%3^QemM4PomDzclDEhEMnL)L_p zY%z$j6GAGKExF&*```P=`^R&A&gXmG_w(G(xvq0vC*0Kd%octzegr|b80hPoBM65W zx|Ddi&?J`U=}i=yTy>0e5TqzlVBLuubq*i%GbfS!wq4Vx>~YpNH$sqWG6)hBh9GNb z6!Zl_t|%hNj3a_*Bq9jLE4ji<6G1q~Obspd0N~(3KoAHB0C{=1as`x>z{?916yV}T zkd*}r1*E0H(-ZdW0daA-aRdJS7eYc{+cvm&54LQ9$VlMjg}6B2;({knU}FQ)(_wWL zUc7*xKOsLKrl*0)1U4HgE1|g=>gu4n8s5K$wl+vff$na2{1`??U~v(AeSwDuNF)#y z1#4@NlLLKy(9!~Rbucr7y?epM1+HF&A3xy!efabVo<4<|8YnCTIvwik;o(E*=>Z}U z*4E(EDG(BZLx(_H8yp;<qXTZ;f`|xkbA!P_IDHy8IAH&N*tH9O|AtMQKvNU!?V+Lq zu3v|Q1fbEt*cg_VVSXOozJ;SlAu$oCR0t1;(oz^3gMa>kmoMSiF$fC-S67IMf!D8L zb{2|@K|}<uT?1WR(9r>JZx9fG_I7A$g7|pYw+|W`;PPeQ=7u9j;L8`t%!HgAaCC(6 zagdMz8yooW0gfMs$w}C}8GikO&Q7qj1Tit-=ZCa3$jSm$Rk(W>T3W!v1B8VkDG4|^ z!O99woPen*U@#yy7P`7XP!OV{VPXP4e}>*(*tru{R=~*#Mn~bo1u!**ckcj;g{UYf zDS@wFVSOEzmOxSx{``T!Krl1}77NatfubV#_6_Fd;QMzN9tI2s2n68c0~`+g{Ggx! zwr&L}DL8o&s;c0?0ocAB4j+bd=fKVmLPG(MhyH$e^avh2fSDO+Y=j*<AU78*EWqC% zhK9h$2Mi1#BLh@a;Q4bfF@e55P*a121qcoXXJ^pUgEw#B_H8(O7R=3|tPGNq;ngb$ z3W9+FxO54~WRQ`8XV1Xh9a>u<H5G2&gx$Nr$Oy8tLG{(V%iquB0{)CHa*ta=9~C~& z)2DsVjE1h`2;+WE&)?8X-xdv#zXkfp>86WXe?vbn9ajY5+VkI4VySM6ApA)Nx;mEr z?763_Db`jTcPCOgIhC;WOD{u%upb^tUAU(>#{Ti4P(K8#Y|IxD#3^(UyFVi6eU94* z(xkj4;^nCrr^GvMr1U*;b_BBCpP>U$|Ae-wH~&uleSE5GQBt#gYG}E7d7zl+tw)Ge z+DYm@gtNIo$v0<wBtFcP&9Y9Djm*qWwN5MN!CRQ+owVS?TiE8ET$INed1=>M72*u2 z!n7O$jf!H1KodjZf;BQ?@*ANQ?kFU%M(3FPhJtd=Guh`HXM8APFU~oNU8abkCgww- zp+>t*p`n&P(TTIEtSuSoEU~Pt#f^0mv;2Z7Z!;-*DC#pQ48P#)#>{euIZhugYx+6E zIZoDYJWD6<Bx@U<Wq?8y&(cF7jQ7c~yG<95pX{d!CyE@|2#8^G(~ns<4&?d;Pru15 z*PG*9lu$4-VG6Y55or!oOk)2lTy?jC;(%N%<!?=Wrh!>y?ZBhBX$E?6E<DR9?_|Bv z-g1jPPOe*(Rd{rQBMFncnF4|<+0rG;Vb{xX@?8pw!xNp)bIv)gIg!SGp}Q?RQPvn% zj-5P?6dp7-FH$B)vAM~L36r<blea3gE~7moZmo`}aS>^BDn{hn?_|*&KPS<~I6ik; zLnx6piVnApNYg^`m`F225lp1r?NY!N)evbNRMGfSV$#oAy1G_NW|L`U?Tr-tA{RQ= zkyVyvx?k|9UyPzNTI^h|OwP5tGhvqBqK+Qsuh8m@?!-r=g;O!{B?d%Vt=5cITbz=~ z3lc#ll)`B*<%h8$-)D34+!ztKWF)X!i|L)&^dq?4(5ksmvnj4g@arjove%hObU&vg zp&^st;{xpntHrXpu!WP=V%?nDu;xR$^&;Mh<C8G$C_3etTAX{AGIpdvOvOe%G`i7! zokG3M)D=uVeql13M2N1%1-tWq<TKpSv*6+Nr0(OtGed&$vKjGCqC#}O*|4BhZ$%>l ztEhH*S!Pz2x#g@jswuvet|63fR{g0_83b}Ln}@WQKsGaFi5Hv~q$g#T>IBfLQsQ5@ zo4#_leGtA`)yy5YT2*H09{Tb@RZ4W1nv{~qVaXl6bZUDPX^ls9sXW<mM^_as*0l*I z*QFu#IajRsa)sSp7vUr_lYPf!%W9`Y568vs_sa9CREelqJr`Q4+L%2)Ua39%ioSKm zGV2CY=>6gsy&YXee8L^Lz4B$dO25If#oj2DqB`2K?Q)^?0G&Cm&Q0<=0?p>QqJ!yt zl)H74Zb_;1o0q3fJbj&V>-o~?t4GytYuPtXd<>?gT3^aN@LEf>cvPCX^^Dr}j!h+; z)cs`zKLVcF2zaNa5JK1~UcUc6kx7-8QY#|$+%7gb`91CuEy&n=pe3H~OUbfiJ;_0c zyy1{5kW7wX^E%5B>4R#_ZEu(4MscIqk9nIDlv=w^?>wp<+-%rnC1>_E^)Ss*OFOf! zfR}#l6m$Dq<F$0r0=0DHh<(io^1)%OPc2JTAu7*0y;mnesj}<r))mjfK2&Q1Lqh`w zu5%x@(2BbH&8Fk%!>Q~nzYwHM`%ko9@Gkdo?aoa;F0IeJ{gbX-?=}|<U5TJ4v%}L4 zoTs;GF?ZIL{<%S0qRQUkx{>53-fhmSvZ_ojx8vU{tSSF>-{w%ls0Bpbj+iWD^QXPM zt=yz@<A%nCv<H1@rTco9Ed)q8S8XnGbfu8T)3eih_95-aE8Xs`HH8HKVKt|gitmp- zG7JHE6xAE!I+4!jID0QP#a32DIw+4&tMX#ehryQfruNIKv_m^@L3fckd19Pe6h^Td zY}2zalaE)t9_W$PV)lJl&S$bu)>($px?TD<RNV~zRL1DuF13t_|ByIIWo`=Z6RFZ@ zS7O?wS2;0Sq=pl)F$d}#+LW1gAvj0O_~icf#Vh6Z9e+M6I5XJtO4rzOi+HB}g_bZI z*{O`4C)Dz=M2>=-mUese$&ECJ=}i<YNC~weV0{X+*$Ug96=NC`Y1B&HmAF=AtzqN- z=05EB;#{mx#((u)rJelv{9G5VohlmXnN?;&_^UsS<ts@%YZb(!Y9GczhXUu9{KS^> z2NgGljH~5udQ|9Yn|Nk1zj%D$E*fs%q1x$DDAAbshT3G_Au{-}#_?8OJXY9((R)~> z^_}f$S%ZH!|5S+H5NDEQ37*b_Z$1$iJ=mi~?9CYm7wws@O-bOe)5#D6x7@^RZ#`L$ z78=U)XLET96Ggb_IYxN>uUEg6UmFhc6yKI#reaWm2(74c`+a%jXBHO#vdl~2Zq~9n zisXSy%u5D|9!|5Nb?+A_PX_LI5+rZEe`mn-m^Wbb@2yj$=d#Os8+KRAd{CU^@@)L| zEVay7AtbW~n|q_!xx}d@wvjq9Ry0D`l%bs9J$8!eQ{=X)({S!V_ODXA3Xul8f!zTj zJ3OEFD9{FMjP)cN@7|0viTv`M*ICOv0`oSXzbRUgoZj!*|4UqVUBoBc$T*?TKhVlb zr1;}#woR5v4d$1Hp_bpV%Csr`@hRN}j!eZ0bqzn}AEt_Rsi3Tm=mC@0XJ@UFhAVJE z%I{_+3X2lrzLPGeth&)A0{k7~ld7fq>*6yrFFZR&x{MJN)lDgjL0(^V`EqFLpTKp( zy6aD2t&YR>535(EU+7HC$v?zO_fa|zZJFAjtj=W2@N%0Q<8+@DZ?vECpsBRRrSx;E zi%*D?z74h8sb$-!WRK<KFKjMPzh^I5zSex+Rl<Jd#1x+>{yePP9uv2;9Ua*=i@9%C z6np93NPQ{0$oI2eQSW(q+e3FEAErJ?plD3$nl;wr=1JTBP#Ai6!?jZ#Ve^MuB|7p% zEE(}pty%l!#%*cEW;LqWB>c(C?Y#B=ag&QZkK^YLw&uRLtI=KeRyyExgHx4(&rI?A zX8-8P!m%gli&y{pDfg50MNDX0y6Oh?`@W_MBh^5nyTeY=Sv@DBNwI%~S5vUvhImp` zj=;Dt?ejLa)gda>_2p@GSW2WSc7jaGT#m6RZ=cXto97;;d+sI^Y;*EW5%HOdB7M`r z(Tln3V^&vooM8<FlvUizpyXg5!{PEI`r5%PnJ$J8@xuH{^^AxIy(xEOKud2%3UhDy zagDx4GCAv5Al@T$dO1}i<OyYrv5{{)LZ-E-2zg#f6;zov$cntnx_$JTU!>hoD=xr( zmu>zyfwt0SGAMG@OTIO{{&!c82mR=;$TX_!0hUW^g|+-wGA%zw0!+4NPA{1ZxABJ4 z@z;J&3T+uKk0IB#CDp7ioTkYXFWw)gp24sT?bI_W?LNN69e63Zw4n9!>Er;$xulsj zXc)6zfVsA^9O!b~=;`S4&xP+^n}1UdJ=7eVFUZfsC1o9ge#T%=hJnSE#TO18xoN*- zje36XH=*D85fee52Jb%UylM!&!`h|kOK%k^xP$qcm1MaQ!>}%KoBiSU<Z%||YW{5S zbL;A!u(b^HF<ivr<dt0F`1G5~(m#>X<@%aF-fMS+roPE7E_7!p@4kMO)llp?xL{md zE@`~{yL;=1c7u}tMBmf8w!eR_zIp^-XD2UTil+x+QYv|h4-KXNhAvLNBn{`wBov6U zqS6t0#Ut{{N|s9M8Y-$9IAu9SWer6|g^rBa|7mddbfJ&~{(r;y2jU0O2E;(mSU3Nq HW5|C1-Nde> literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/S/image_tiling.json b/exercises/inputs/3_files_and_commands/S/image_tiling.json new file mode 100644 index 0000000..72a4faf --- /dev/null +++ b/exercises/inputs/3_files_and_commands/S/image_tiling.json @@ -0,0 +1,140 @@ +{ + "name": "Image tiling", + "fws": [ + { + "fw_id": 1, + "name": "Render an image from a character", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["character"], + "outputs": ["image"], + "command_spec": { + "command": [ + "convert", "-size", "800x800", + "-background", "white", + "-pointsize", "800", + "-fill", "blue", + "-gravity", "Center", + "-trim" + ], + "character": { + "binding": { + "prefix": "caption", + "separator": ":" + }, + "source": { + "type": "data", + "value": "S" + } + }, + "image": { + "target": { + "type": "path", + "value": "/tmp/letter.png" + } + } + } + } + ] + } + }, + { + "fw_id": 2, + "name": "Tile the image into four tiles", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["image", "tiled image"], + "command_spec": { + "command": [ + "convert", + "-crop", "2x2@" + ], + "image": { + "source": "image" + }, + "tiled image": { + "source": { + "type": "data", + "value": "/tmp/tile.png" + } + } + } + } + ] + } + }, + { + "fw_id": 3, + "name": "Rotate one tile 90 degrees clockwise", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["rotation angle", "piece 2"], + "outputs": ["top left"], + "command_spec": { + "command": ["convert", "-rotate"], + "rotation angle": { + "source": { + "type": "data", + "value": 90 + } + }, + "top left": { + "target": { + "type": "path", + "value": "/tmp/piece-2.png" + } + }, + "piece 2": { + "source": "piece 2" + } + } + } + ], + "piece 2": { + "type": "path", + "value": "/tmp/tile-0.png" + } + } + }, + { + "fw_id": 4, + "name": "Flip another tile vertically", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["piece 1"], + "outputs": ["bottom left"], + "command_spec": { + "command": ["convert", "-flip"], + "bottom left": { + "target": { + "type": "path", + "value": "/tmp/piece-1.png" + } + }, + "piece 1": { + "source": "piece 1" + } + } + } + ], + "piece 1": { + "type": "path", + "value": "/tmp/tile-2.png" + } + } + } + ], + "links": { + "1": [2], + "2": [3, 4] + }, + "metadata": {} +} diff --git a/exercises/inputs/3_files_and_commands/S/letter.png b/exercises/inputs/3_files_and_commands/S/letter.png new file mode 100644 index 0000000000000000000000000000000000000000..a627c918a5dcf985de6ba326b9bbbe3236d35701 GIT binary patch literal 10182 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 X(Eq>TZs_7aw`iKGPgNR}?B4zl)R+x} literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/S/piece-1.png b/exercises/inputs/3_files_and_commands/S/piece-1.png new file mode 100644 index 0000000000000000000000000000000000000000..0225ce58dfcaa998d2bd3bf1446cc60a1ec19f6f GIT binary patch literal 3201 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/S/piece-2.png b/exercises/inputs/3_files_and_commands/S/piece-2.png new file mode 100644 index 0000000000000000000000000000000000000000..a1f542d05e2ff5d8caa6f0d9d58a07889a645159 GIT binary patch literal 3925 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 S$6Cow0D&_&uV1BiIqW}LC)kbv literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/S/tile-0.png b/exercises/inputs/3_files_and_commands/S/tile-0.png new file mode 100644 index 0000000000000000000000000000000000000000..cd669bcf009b41bbbc615b7c7aa59bc15926e67c GIT binary patch literal 3819 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 V!{4sWhcp9Xpku6Et?6**e*i$Br#k=u literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/S/tile-1.png b/exercises/inputs/3_files_and_commands/S/tile-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f7644d9de8ec4a0c97ec8ee0f81fd08a219d659f GIT binary patch literal 3303 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 T`gGwAzX7o@u_mw%d;k3(>JgFs literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/S/tile-2.png b/exercises/inputs/3_files_and_commands/S/tile-2.png new file mode 100644 index 0000000000000000000000000000000000000000..aee03915bd55d47c252dbd4144d8a10af8baea18 GIT binary patch literal 3230 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 F>EAg&S^oe4 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/S/tile-3.png b/exercises/inputs/3_files_and_commands/S/tile-3.png new file mode 100644 index 0000000000000000000000000000000000000000..d4e295a64b6b380f25e21139a6086f8c25f8b885 GIT binary patch literal 3894 zcmZ{mc{CJk8^*`Jlio^HmJl=aVvt>SW-MW5Fk~zlOQgk4p?GC0jG3|}%b>|FkrGPC z*q2sYl1jAL(nRjh`~CO*@jd5U=en-ndG2%n^_=sh*xOkO@k{U{5C|cRm6_v?&m$0Q zYP=jfsd0$L*fCB&V_RbcqCP`l%ZqELvxPWXnjmTh4=(H!=~GsYwg^P@5d<PW5rO!< zgW^9U5Mina#1~HlLN^D25Ia}!&_N%8VE<-sgEvPYfSn!u{b6ANc8;(xq^82JUmz<B zEiFJK!lzFlA_6yW!k<5&r3Is-z{LegNwB#Inws$PCGhY-dOB=vfu0_`dk4FAK}`*u zJ`F#A!ry<xt5?9!4|ncBSQwa@!O{{)OT+Lm@bN)i9k8(hg#zc#gQFwp=)m{ypsETA z3NSYZlanAW4ighFI}3${;OYuuVjw9A+uLycI$*INAOMFC!-o&RV!_j=5E~1eoN(j_ ztgOJjdvNwFC@F!83M?<f$B$523LYMC-~gDK0+kB(_Tc6Q&!0nLA{ZF~H#bB?!1_8o zcmScHu(${e29U`hBLf^9(AEZ1Q;?er1Ooi^7tGASzyPGAfQ1FDt-;0yL`TE1W8mxz z-@ZXW0HmeC+qYnC4UZmyvNGJd1)`#W!$DUU+_(WFBM=t{M~}jb7m%F|#>Q~<DvXcA z>(>wy0~#9O=?Q{@@cum<It10#(A*4TW8mux*RH{pD`05}fq~%S0=>QP<_);JLw`S1 zR6u+@I5`0t4d>2*q9TNZKx->xX2QdVuzNQI2gBE|ARz%iet@nnba%t*DqOe#Qc}>@ z2M!KEqru+2Ff;`E`cPgDXU>3u0pRiA<pq~6fvqik{tVO8@c1!US;5`Ake3G+FG5fd zn3#Z_9bhof*a(J(@cTCi34y#ksHuUsH=H;D_wU2;<4{xtQBhD_414xKRTc2^LS!T~ zHGz!{{PPbaB*2p=(9;98wb0Q4K0a{rBp{KHlLPzq!TdZtdj_XYL0K7;l)&Z7K&Jzf z34?=RZVr`|kdXnmZ-bm1WMx5pJ)ls~-VWN@;O7S<5)>3bcsT6e4-E~ludw&azfZ>7 z+R}_O!~c!LPT@OiVG**!@^)l^s7$^4@?Ut)ins$2R{xbnZ=m77F#Mdc9|FN4{a-cW zwTTD>{|3g)7$5m|ek#rdPmtjGks!GucCDi*jS-*Xzv~W_pCogYE8vM#v0^bb-jhAG z1X=ETI`uiFCOIdG#UVfL$aL4lF*x1F!<6o$%O-=uLfj)J&P+@}c=r|G_}rF_!I;6Q z?;-6&bF068^b~BYPPT*$8GM?I;e8^}EPM!wH*-7K_2;skuKn)OmNZFfV(8a$9{J_S z;UW%snJI(yB018u#UVw$<%MD%`307M$4*{Y&y=LnBcu#=;$p?lZIR&w%36$z2-f6x z<-^d_8rSpeJfDp*SGd0zW4H}Uc;xwnM-nKRmV1A0n7yh*7c+HvOZo`;bx)%0DKc1# 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/T/image_tiling.json b/exercises/inputs/3_files_and_commands/T/image_tiling.json new file mode 100644 index 0000000..7b4b56c --- /dev/null +++ b/exercises/inputs/3_files_and_commands/T/image_tiling.json @@ -0,0 +1,140 @@ +{ + "name": "Image tiling", + "fws": [ + { + "fw_id": 1, + "name": "Render an image from a character", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["character"], + "outputs": ["image"], + "command_spec": { + "command": [ + "convert", "-size", "800x800", + "-background", "white", + "-pointsize", "800", + "-fill", "blue", + "-gravity", "Center", + "-trim" + ], + "character": { + "binding": { + "prefix": "caption", + "separator": ":" + }, + "source": { + "type": "data", + "value": "T" + } + }, + "image": { + "target": { + "type": "path", + "value": "/tmp/letter.png" + } + } + } + } + ] + } + }, + { + "fw_id": 2, + "name": "Tile the image into four tiles", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["image", "tiled image"], + "command_spec": { + "command": [ + "convert", + "-crop", "2x2@" + ], + "image": { + "source": "image" + }, + "tiled image": { + "source": { + "type": "data", + "value": "/tmp/tile.png" + } + } + } + } + ] + } + }, + { + "fw_id": 3, + "name": "Rotate one tile 90 degrees clockwise", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["rotation angle", "piece 2"], + "outputs": ["top left"], + "command_spec": { + "command": ["convert", "-rotate"], + "rotation angle": { + "source": { + "type": "data", + "value": 90 + } + }, + "top left": { + "target": { + "type": "path", + "value": "/tmp/piece-2.png" + } + }, + "piece 2": { + "source": "piece 2" + } + } + } + ], + "piece 2": { + "type": "path", + "value": "/tmp/tile-0.png" + } + } + }, + { + "fw_id": 4, + "name": "Flip another tile vertically", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["piece 1"], + "outputs": ["bottom right"], + "command_spec": { + "command": ["convert", "-flip"], + "bottom right": { + "target": { + "type": "path", + "value": "/tmp/piece-1.png" + } + }, + "piece 1": { + "source": "piece 1" + } + } + } + ], + "piece 1": { + "type": "path", + "value": "/tmp/tile-3.png" + } + } + } + ], + "links": { + "1": [2], + "2": [3, 4] + }, + "metadata": {} +} diff --git a/exercises/inputs/3_files_and_commands/T/letter.png b/exercises/inputs/3_files_and_commands/T/letter.png new file mode 100644 index 0000000000000000000000000000000000000000..859c1532642afe3b10c2a0542cd786ab3bcd88ee GIT binary patch literal 960 zcmeAS@N?(olHy`uVBq!ia0y~yU_8yhz~sTg3>5kE;L>~`#ggvm>&U>cv7h@-A}f&3 zSRCZ;#IWw1%u66gA=x9ymw};5je((|g@NH0P^jSr14F3+1H-EX1_rAc3=HB0b9M#V z041aYd_r6wKK!4b|NqF5|EEv?XJGh0efobOc>45zef@tS+eTTSGR7otcNezAv>mlT z4rjibTQQK{1jM2YyXHPx0un6nhy)3GfU(=jY&(!(S%G6Z0|T=H7;g!&hy;2h#M8ww zq~g}w3x<r%4h$>@`&ncZl=zw$R00+<vUk3TSnxA#W@th2<E=IeO80DM-;&&RNT)TD zYqLn2=9!=wOAWjer;#l1_VJuMYo+ZcyUWZN1;Z!=F3-IF-tGR)GxqsW>t{9iCQb$= zx)RrjlH|mKlFa-(h7g;ouBSjjRghpxVo9o1a#1RfVlXl=G}kpS*EKQ>F|@EUwzM)b o)iyA)GB7Y#EfGf1kei>9nO2EggImR!^*{{_p00i_>zopr04a{NaR2}S literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/T/piece-1.png b/exercises/inputs/3_files_and_commands/T/piece-1.png new file mode 100644 index 0000000000000000000000000000000000000000..32a28b4a77e245f8d5348f70c04f16d8c9fda8f3 GIT binary patch literal 504 zcmeAS@N?(olHy`uVBq!ia0vp^PZ<~(RalsTEG3oK4M2(|-O<;Pfnj4m_n$;oAfK@~ z$lZxy-8q?;K#oGPN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bX-A z@CW#WxYpPIfBN)45HK+OKYjYYgDiV0P>M0h+uemJjk_iV$l=U)b1Mdl0rfH*X2{*Y z_9jTMz#|eU$lw9SZYQ(tK!Rljj_C{x%nD$<CBz~UC^*B@#WAGf*4wj&f(!~gEF0Df z^Kn0jmu9jme<;N4IqTNuFu&rte#<YvEU}^=bx!^qyX4^;X+j4Qn?MdPag8WRPAn+N z%+F&8v8n0;hB|{PNH8U_B-JXpC>2OC7#SFv>l&Er8X1NdT38udS{a#Y8yHy`7?`V; f2%~7o%}>cptHiCrt>Vmjpaup{S3j3^P6<r_j<%~J literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/T/piece-2.png b/exercises/inputs/3_files_and_commands/T/piece-2.png new file mode 100644 index 0000000000000000000000000000000000000000..1521676eecbb29f9fdca2bfaf02b69e680e965c9 GIT binary patch literal 537 zcmeAS@N?(olHy`uVBq!ia0y~yU{nFJpRq6l$-aiCSAY~tx}&cn1H;CC?mvmFKt5w} zkh>GZx^prwfgFWok04(LhAK4%hK3dfhF?ITh8GMBr3MTPuM!v-tY$DUh!@P+6=(yL z;1BQ#asB`Q|LN2JA3prg!0<mm|Nlm<rUgJL#w2fd7lsa2Sq~tGGvCdv7%27}$lk=T z@O@MjNU*>o5-7+3QsBYhb~4)zBv@A9n9jh!tN_MaLM$SIf;&B3978H@y}fHF$Y99B z>=^tb;N<7yVjNjEa^lrnyHXdddb#g{r1(|dzaDf1yh}=+UyD;)db9#$>1`(<xFsee zBy?%p1R&Vf+H%FM>bik$-=oTfvLK(8xJHyDCl-`s=I1el*i>~r1q!Ny1XB`AQmvAU zQh^kMk%6JPu7SC(kzt6Tg_W_Tm655ofsvJgfw^jlFp7rU{FKbJO57UUD$cA2YGCkm L^>bP0l+XkKo>!kB literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/T/tile-0.png b/exercises/inputs/3_files_and_commands/T/tile-0.png new file mode 100644 index 0000000000000000000000000000000000000000..fe5c927c6c01e513a02b77c42c9a681d187b894b GIT binary patch literal 507 zcmeAS@N?(olHy`uVBq!ia0vp^&lngORalsTtdqh4%|MDJ-O<;Pfnj4m_n$;oAfK@~ z$lZxy-8q?;K#oGPN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bX-A z@CW#WxITRNKR^Hf>C^ui82$r6O>N#JpcG@0x4R2Vf5y!~Acr&G&8-+nZvtXbhFx<X zEddD@ctnB(J;2!QWVRhhu&lr_oq>T_0gShVSVRH^XM4IhhE&{od)85qL4kw8peKP% zDWdV;OrD1)n{RXJT+0)$yk$ApZ~5hyC06Lv^BJ4%ys^qqL2%z3@ntTHF07uVz8mEB z64!{5<ivuK%=|ot5Syy5r$9kfkYGw;Nvc(HQ7VvPFfuSS*EKNLH8Kn_w6HR^v@$Z) nHZZa>Ffdmw5k}FFo1c=IR*74KTg936Kn)C@u6{1-oD!M<8ey=r literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/T/tile-1.png b/exercises/inputs/3_files_and_commands/T/tile-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c392beb66b17b1b898f0d26b64679ed82470413d GIT binary patch literal 513 zcmeAS@N?(olHy`uVBq!ia0vp^PZ<~(RalsTEG3oK4M2(|-O<;Pfnj4m_n$;oAfK@~ z$lZxy-8q?;K#oGPN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bX-A z2nG0rxaQ~oKXT+h1H=F6)Bm47{T~RDCLH|%lx0lvc6VX@k^k~Iki(hp=2i?818Qdw zW!QE1yaPzEz#|eU$lw9SZYQ(tK!Rljj_C{x%nD$<CBz~UC^*m4#WAGf*4wj&ybKBg zEE^^_ur)C(+3?^#msrG)#w~2Krewc-y6p1H605m>%Q2|Bn!dl+im*yiF8KU!C4-5! z<4FNGCjpT2OI#yLk`oI`GV}8oLTswKfWgn83KC37EJ?LWE=mPb3`Pcq=DG&vx<-Z} wh89-FmR3fl+6G2e1_tJ;CBi5ga`RI%(<*UmaH}}89;kuA)78&qol`;+0NKp7QUCw| literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/T/tile-2.png b/exercises/inputs/3_files_and_commands/T/tile-2.png new file mode 100644 index 0000000000000000000000000000000000000000..a13c55edb174c060b9507e9d5c889c27eaed956c GIT binary patch literal 505 zcmeAS@N?(olHy`uVBq!ia0vp^&lngORalsTtdqh4%|MDJ-O<;Pfnj4m_n$;oAfK@~ z$lZxy-8q?;K#oGPN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bX-A z@CW#Wxc>kD|Mcnq3=IFDKK)-`|6kd~(E}*OnB?v5!qCAg3*vC*ySWtu=}ka!ONOSr z$F?BB0*^?LAV`4+gWJh$JCI;mfnz!Y1G54cZwax81Paddba4!+xb^nzK?Vi~4u%a9 zP8|;g&dt|sxcBuIi`Yh;>>GM>{gz*TSz<*$>fGede-|?L9ldB9AyUZ;a(RhsL`iaD zK}lwQ9z%#tRo7FXpejf(C9x#cD!C{XNHG{07@F%EnCluDh8S8{8CzNznQ9vtSs56Z htCk3(Xvob^$xN%nt--D0%zB^(22WQ%mvv4FO#t-Dt-AmK literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/T/tile-3.png b/exercises/inputs/3_files_and_commands/T/tile-3.png new file mode 100644 index 0000000000000000000000000000000000000000..8c54531e00a3e49577dbfdc019ef7e46fec28a1f GIT binary patch literal 505 zcmeAS@N?(olHy`uVBq!ia0vp^PZ<~(RalsTEG3oK4M2(|-O<;Pfnj4m_n$;oAfK@~ z$lZxy-8q?;K#oGPN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bX-A z@CW#WxH2&OKYjW?5Y*TIfBN*l@h^E9pcG@0x4R2d8h1?!ki(hp=2i?81L|e8WN6Ym zcM~L7;1LNFWbgoEx0Bg+Ai=T%$8-h;W(6?b5@Hbv6rAbl;uunK>+M-XK?VgLmJP=_ z!?_>COEXzb*EF24B+@kd_{$Qjxqizp(~tU7IPaO?e14PKzKTz$4{C#4Ug8>2lAKsj zl9`{!5Moo+1q^luRghpxVo9o1a#1RfVlXl=G}kpS*EKQ>F|@EUwzM)b)iyA)GB7Y# gEfGf1kei>9nO2EggImR!^*{{_p00i_>zopr053DGE&u=k literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/U/image_tiling.json b/exercises/inputs/3_files_and_commands/U/image_tiling.json new file mode 100644 index 0000000..1140bd9 --- /dev/null +++ b/exercises/inputs/3_files_and_commands/U/image_tiling.json @@ -0,0 +1,140 @@ +{ + "name": "Image tiling", + "fws": [ + { + "fw_id": 1, + "name": "Render an image from a character", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["character"], + "outputs": ["image"], + "command_spec": { + "command": [ + "convert", "-size", "800x800", + "-background", "white", + "-pointsize", "800", + "-fill", "blue", + "-gravity", "Center", + "-trim" + ], + "character": { + "binding": { + "prefix": "caption", + "separator": ":" + }, + "source": { + "type": "data", + "value": "U" + } + }, + "image": { + "target": { + "type": "path", + "value": "/tmp/letter.png" + } + } + } + } + ] + } + }, + { + "fw_id": 2, + "name": "Tile the image into four tiles", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["image", "tiled image"], + "command_spec": { + "command": [ + "convert", + "-crop", "2x2@" + ], + "image": { + "source": "image" + }, + "tiled image": { + "source": { + "type": "data", + "value": "/tmp/tile.png" + } + } + } + } + ] + } + }, + { + "fw_id": 3, + "name": "Rotate one tile 90 degrees clockwise", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["rotation angle", "piece 2"], + "outputs": ["top left"], + "command_spec": { + "command": ["convert", "-rotate"], + "rotation angle": { + "source": { + "type": "data", + "value": 90 + } + }, + "top left": { + "target": { + "type": "path", + "value": "/tmp/piece-2.png" + } + }, + "piece 2": { + "source": "piece 2" + } + } + } + ], + "piece 2": { + "type": "path", + "value": "/tmp/tile-0.png" + } + } + }, + { + "fw_id": 4, + "name": "Flip another tile vertically", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["piece 1"], + "outputs": ["bottom right"], + "command_spec": { + "command": ["convert", "-flip"], + "bottom right": { + "target": { + "type": "path", + "value": "/tmp/piece-1.png" + } + }, + "piece 1": { + "source": "piece 1" + } + } + } + ], + "piece 1": { + "type": "path", + "value": "/tmp/tile-3.png" + } + } + } + ], + "links": { + "1": [2], + "2": [3, 4] + }, + "metadata": {} +} diff --git a/exercises/inputs/3_files_and_commands/U/letter.png b/exercises/inputs/3_files_and_commands/U/letter.png new file mode 100644 index 0000000000000000000000000000000000000000..09a59610de427b9d41a40d8289c783c67ff61db2 GIT binary patch literal 5991 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 VP(douJ1#)nRM%B2`NuZue*i0`QzZZZ literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/U/piece-1.png b/exercises/inputs/3_files_and_commands/U/piece-1.png new file mode 100644 index 0000000000000000000000000000000000000000..52e1b365816a85582180697a74befa8ad842bf52 GIT binary patch literal 2865 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 O0mRPQ*{a5pefS>-S~QIS literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/U/piece-2.png b/exercises/inputs/3_files_and_commands/U/piece-2.png new file mode 100644 index 0000000000000000000000000000000000000000..1a075fb1be153b0d951fa3d83d24a79ea0be65bd GIT binary patch literal 543 zcmeAS@N?(olHy`uVBq!ia0y~yVAKV&AFwb3$t7oWK@>~6qpu?a!^VE@KZ&eBK4Wo^ zyA#8@b22Z19ED_$AYTTCDm4a%h86~fUqGRT7Yq!g1`G_Z5*Qe)W-u^_7tGleXakhs z5AX?bWnlPUU;lsl^#7+%{|ADu($oKdQjAI7?k+6-88-ug9L{_<w_>2!eIR=e!*$nB zCLqBAk4T^(g9jM9oy@ia36>Q&rZX@wD}eEq5Q|8l;C@dR$B>F!Z_haj9#9Zq*f=?W zS7Sws-K%(EEs1XvHBR_kDz<*`6a++{JbilgArbgu?b;>f|CXFTeOmkQ>C>xehhM+Q zX4aM|;M+6h6euV;OI#yLk`oI`GV}8oLcMEufkHqPB$$#|l4_M)lnSI6j0_CTbq&mQ zjSNE!Ev!rotxS!y4UDV|3=XXp`;4L?H$NpatrE9}&EMAf12r&sy85}Sb4q9e00q+L AqW}N^ literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/U/tile-0.png b/exercises/inputs/3_files_and_commands/U/tile-0.png new file mode 100644 index 0000000000000000000000000000000000000000..55c658dd8c0106e1f5118e3368fe45cf175d275c GIT binary patch literal 505 zcmeAS@N?(olHy`uVBq!ia0vp^4;UC2by=8!tjA1+JV1&i-O<;Pfnj4m_n$;oAfK@~ z$lZxy-8q?;K#oGPN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bX-A z@CW#WxYpPIKYjW?5HK+OpFaJ+SbW|+pcG@0x4R2d8h1?!ki(hp=2i@(_W-d7!_1yd zQ$d0S9+4nH4={E+nQaFWEGuwKXJBAf0OKto7Lh=~nVv3=Ar-gYo^|A9FyLU>aJiu+ zaz^t{aZ_%U4>`OhFIQ|<+y0od)oEdXh6oq^s6z|+1y(iaUo^IU0&;nYYeY$MVnIn} zejY=pckM2a-&8?@DTyViR>?)FK#IZ0z|dURz+BhJFvQTp%EZvh)JWUF$jZRr&}y;I eC>nC}Q!>*kackK8ZJj?*1B0ilpUXO@geCy$1&+1= literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/U/tile-1.png b/exercises/inputs/3_files_and_commands/U/tile-1.png new file mode 100644 index 0000000000000000000000000000000000000000..be4a188d40d368a30c6e1703615730101ca5ebe9 GIT binary patch literal 505 zcmeAS@N?(olHy`uVBq!ia0vp^4;UC2by=8!tjA1+JV1&i-O<;Pfnj4m_n$;oAfK@~ z$lZxy-8q?;K#oGPN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bX-A z@CW#Wxc>kD|Mcnq_4WU!Pyf%r@ZbB+Y@pc;j7i?^E({&4vK~MVXTF<TF;Hv{kS)Ss z5xz$pBv{}P2^3@iDez!$JDF_<5-cllOlM$VRsiEIAr_H9!I_>ejv*Dd-kvoSWH8`h z+3@_;lBiel!MX+;CQ5i1Ez3K8XZmNW7N>;)8X{b+bfXR}eaIf|-rIU*`m8S?mzTIk zlq4q>lw{`TF@$>8?gIHu6(pFFSdwa$T$Bo=7>o=I&2<gTb&U)|3@xlo46RI!v<-}` l3=9sf7W<5%AvZrIGp!Q0hRxsB`2#gDc)I$ztaD0e0stU8kPH9- literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/U/tile-2.png b/exercises/inputs/3_files_and_commands/U/tile-2.png new file mode 100644 index 0000000000000000000000000000000000000000..85f86afaa6a6e0639717565e3ae3f716ba16ebd7 GIT binary patch literal 3042 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/U/tile-3.png b/exercises/inputs/3_files_and_commands/U/tile-3.png new file mode 100644 index 0000000000000000000000000000000000000000..9bc097610f239615673c50e57e14496c5fe6a825 GIT binary patch literal 2895 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/V/image_tiling.json b/exercises/inputs/3_files_and_commands/V/image_tiling.json new file mode 100644 index 0000000..8b9091c --- /dev/null +++ b/exercises/inputs/3_files_and_commands/V/image_tiling.json @@ -0,0 +1,140 @@ +{ + "name": "Image tiling", + "fws": [ + { + "fw_id": 1, + "name": "Render an image from a character", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["character"], + "outputs": ["image"], + "command_spec": { + "command": [ + "convert", "-size", "800x800", + "-background", "white", + "-pointsize", "800", + "-fill", "blue", + "-gravity", "Center", + "-trim" + ], + "character": { + "binding": { + "prefix": "caption", + "separator": ":" + }, + "source": { + "type": "data", + "value": "V" + } + }, + "image": { + "target": { + "type": "path", + "value": "/tmp/letter.png" + } + } + } + } + ] + } + }, + { + "fw_id": 2, + "name": "Tile the image into four tiles", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["image", "tiled image"], + "command_spec": { + "command": [ + "convert", + "-crop", "2x2@" + ], + "image": { + "source": "image" + }, + "tiled image": { + "source": { + "type": "data", + "value": "/tmp/tile.png" + } + } + } + } + ] + } + }, + { + "fw_id": 3, + "name": "Rotate one tile 90 degrees clockwise", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["rotation angle", "piece 2"], + "outputs": ["top left"], + "command_spec": { + "command": ["convert", "-rotate"], + "rotation angle": { + "source": { + "type": "data", + "value": 90 + } + }, + "top left": { + "target": { + "type": "path", + "value": "/tmp/piece-2.png" + } + }, + "piece 2": { + "source": "piece 2" + } + } + } + ], + "piece 2": { + "type": "path", + "value": "/tmp/tile-0.png" + } + } + }, + { + "fw_id": 4, + "name": "Flip another tile vertically", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["piece 1"], + "outputs": ["bottom right"], + "command_spec": { + "command": ["convert", "-flip"], + "bottom right": { + "target": { + "type": "path", + "value": "/tmp/piece-1.png" + } + }, + "piece 1": { + "source": "piece 1" + } + } + } + ], + "piece 1": { + "type": "path", + "value": "/tmp/tile-3.png" + } + } + } + ], + "links": { + "1": [2], + "2": [3, 4] + }, + "metadata": {} +} diff --git a/exercises/inputs/3_files_and_commands/V/letter.png b/exercises/inputs/3_files_and_commands/V/letter.png new file mode 100644 index 0000000000000000000000000000000000000000..846c9c1bbeaca300754f518057a92c029464ed97 GIT binary patch literal 10611 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/V/piece-1.png b/exercises/inputs/3_files_and_commands/V/piece-1.png new file mode 100644 index 0000000000000000000000000000000000000000..1176756124952b6e46e8167122488dd17cabe376 GIT binary patch literal 3343 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 b^z`io|KBhe>$O|90}{F+GVr{AYRP{91=OXA literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/V/piece-2.png b/exercises/inputs/3_files_and_commands/V/piece-2.png new file mode 100644 index 0000000000000000000000000000000000000000..2aaf322df12d1c80ec2f14c0da222b9656c33ca4 GIT binary patch literal 2740 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/V/tile-0.png b/exercises/inputs/3_files_and_commands/V/tile-0.png new file mode 100644 index 0000000000000000000000000000000000000000..7fb3529c39ff361080b8d6b673648345c2c1c1ad GIT binary patch literal 3514 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/V/tile-1.png b/exercises/inputs/3_files_and_commands/V/tile-1.png new file mode 100644 index 0000000000000000000000000000000000000000..9f810e219c46fd5f0809fb7f7d773ec802090e10 GIT binary patch literal 3349 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 Fe*lBO?Ck&m literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/V/tile-2.png b/exercises/inputs/3_files_and_commands/V/tile-2.png new file mode 100644 index 0000000000000000000000000000000000000000..f25c631a88f4adf79a6e1b08fba743722e8b5832 GIT binary patch literal 2926 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/V/tile-3.png b/exercises/inputs/3_files_and_commands/V/tile-3.png new file mode 100644 index 0000000000000000000000000000000000000000..fb5b83828bfb4d3d0677a4cf047ad8b99c3f2ddf GIT binary patch literal 3189 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 WKjG0P0voG<_<F7PyuNn((SHN>ZE$)3 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/W/image_tiling.json b/exercises/inputs/3_files_and_commands/W/image_tiling.json new file mode 100644 index 0000000..9057391 --- /dev/null +++ b/exercises/inputs/3_files_and_commands/W/image_tiling.json @@ -0,0 +1,140 @@ +{ + "name": "Image tiling", + "fws": [ + { + "fw_id": 1, + "name": "Render an image from a character", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["character"], + "outputs": ["image"], + "command_spec": { + "command": [ + "convert", "-size", "800x800", + "-background", "white", + "-pointsize", "800", + "-fill", "blue", + "-gravity", "Center", + "-trim" + ], + "character": { + "binding": { + "prefix": "caption", + "separator": ":" + }, + "source": { + "type": "data", + "value": "W" + } + }, + "image": { + "target": { + "type": "path", + "value": "/tmp/letter.png" + } + } + } + } + ] + } + }, + { + "fw_id": 2, + "name": "Tile the image into four tiles", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["image", "tiled image"], + "command_spec": { + "command": [ + "convert", + "-crop", "2x2@" + ], + "image": { + "source": "image" + }, + "tiled image": { + "source": { + "type": "data", + "value": "/tmp/tile.png" + } + } + } + } + ] + } + }, + { + "fw_id": 3, + "name": "Rotate one tile 90 degrees clockwise", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["rotation angle", "piece 2"], + "outputs": ["top left"], + "command_spec": { + "command": ["convert", "-rotate"], + "rotation angle": { + "source": { + "type": "data", + "value": 90 + } + }, + "top left": { + "target": { + "type": "path", + "value": "/tmp/piece-2.png" + } + }, + "piece 2": { + "source": "piece 2" + } + } + } + ], + "piece 2": { + "type": "path", + "value": "/tmp/tile-0.png" + } + } + }, + { + "fw_id": 4, + "name": "Flip another tile vertically", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["piece 1"], + "outputs": ["bottom right"], + "command_spec": { + "command": ["convert", "-flip"], + "bottom right": { + "target": { + "type": "path", + "value": "/tmp/piece-1.png" + } + }, + "piece 1": { + "source": "piece 1" + } + } + } + ], + "piece 1": { + "type": "path", + "value": "/tmp/tile-3.png" + } + } + } + ], + "links": { + "1": [2], + "2": [3, 4] + }, + "metadata": {} +} diff --git a/exercises/inputs/3_files_and_commands/W/letter.png b/exercises/inputs/3_files_and_commands/W/letter.png new file mode 100644 index 0000000000000000000000000000000000000000..439e4662ece5de79540746607c150a37bd0ca570 GIT binary patch literal 17849 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 D8Lp5* literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/W/piece-1.png b/exercises/inputs/3_files_and_commands/W/piece-1.png new file mode 100644 index 0000000000000000000000000000000000000000..0d8694a292b1e620eca467c174830cdde8d24a7c GIT binary patch literal 4849 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 P2mz(1Wu%E$zj6OR!z{$! literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/W/piece-2.png b/exercises/inputs/3_files_and_commands/W/piece-2.png new file mode 100644 index 0000000000000000000000000000000000000000..83d505de4916f1a6be61c1190167fc67fdcc4cca GIT binary patch literal 3949 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 NEY0jpYmHB*{|CpNvU>mk literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/W/tile-0.png b/exercises/inputs/3_files_and_commands/W/tile-0.png new file mode 100644 index 0000000000000000000000000000000000000000..13290c0aeb424c17770d1711bd338345f72e9a8f GIT binary patch literal 5539 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 U-6&#kvjAgn<8q*WKknlH0f0O!p#T5? literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/W/tile-1.png b/exercises/inputs/3_files_and_commands/W/tile-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f799085b7b738f20c3534114e19c5f79dc3ce60f GIT binary patch literal 5162 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 E4-7ta(f|Me literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/W/tile-2.png b/exercises/inputs/3_files_and_commands/W/tile-2.png new file mode 100644 index 0000000000000000000000000000000000000000..7d22e8c204136220ff57850aae608cde22cc5adb GIT binary patch literal 4893 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 B#DV|- literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/W/tile-3.png b/exercises/inputs/3_files_and_commands/W/tile-3.png new file mode 100644 index 0000000000000000000000000000000000000000..b5fed5f76ea75d8a7855aee4880c26630f2b4be5 GIT binary patch literal 4761 zcmZ`+X*`te+a5|nNQx5Km3{1)GNQ3&-?s_bo*9KO%2pzw&``FrL<xhDGRl?|DG6bW zB~(aevgH|~IRE4M_I`LjoWJuvj{7?I>-t^yonm8U!pkkfjX)rH%}g<N2n1UoOQd)2 zU@>p*^qpa;odE`x1_(s$ZJxj094yQhW@loEAoqyQv4Dh+shuSP5haH}#9c=qHds{L z4+MgML?Gy12m~q@fe;SKZ?rv$K(KGxSU4B~z~&|h3j+cHJ9fb0BD{G6{QU6uFL-)F zRTZS9fTbloehj|8U~LWQ>A+wB8ykp;!PXWWH~_u9psfv5DvXW6zI|}z3Z$h$aWUB1 z!rQlCWCQ^LkeLa8{=nY7z{v^!{tL>=Ffag)jzFQn(h?LDKu{1gG{E#U$jQOgtB{=y z<KsZ10f7L#ym0U!G&h5l6@2;xuCDO=H*j;qo;|R>4mmk+?;coKKx->tv2gb;T)G4@ zG9W4ns;V$I2h!5;{X0B)0)>ST7zhs@Ktu#gPQtTi;Nk)&PlAL5tgOJUUEu8vr%%JX zcTiFSw{AgP9866?e?REzf`bEyhyXh~%+G_LADlY}6&3L13y?^#umI=J!?9zat`0aH zT)PH0Z^HZcU}y+0Ujm&Df`Y)o0oSjCk`g?93g+f;;Q|N<0GSN4voJISNF?Ov!{y6x z=MG%F2(MnjnKSV7C)n6PT^(p@LU=etMZv@boH_+ZkHW?V{Q3pK!O-0eIy&(DIWU=E zYz!S8ATAEEu`n|OCr*Ht7F1S3Obi@30xd1z?+>f1P+bjY&w{=_=;=XE545#GVj?6Z z!S3Dg@gwZq3Cqji;Q=)@@aPfn@PLU43=czcG7yPiY6^UOU~dmEUO;Lp+`kXszJa_v zC@4T^DCFfqV<Y_d0c&f(#Racl!^jA9cEZDl;Oq>wwczd!xw)`^KYaKA2?@~G2VP!K zUJhTsf|L~a_<)KEWM#qU&mb!cMMV%20vHU0g~8w;96t_+55u8DfI>lZG<0==n;W3f zfX9QH8bn4ydpnq!!R^~nS_(IAKvNTpjzWDsWMqJb2H4rbKmR~k8N|nfkPtXIfutlT zD#G}Lc>eYYI(NndgGlBOGi3p;U}NJj7MI5oU4&VvSj;vVV(Q8w5!(w)5ytNW(c5H1 zh(Q1Xu|wiNsdG5)ia_w4F~b-*Tppb-NV<Q3Dt2R0{fx_A=^3f`MDo77Qbrk1`=!mf z*l$V2$8qefO2$@j|Fhr5pw>oP!R|mu^3A;%gVcSg>=9{tC2F4z`ed3!=qUaS{m`Ai z)_qCk_ZHiwE0ceg_C(JXu3xEj@p{^I88PCQ;5nk&DzQtc#3Q{$ZPVt6nQhxd9A^kw z5%1W^hq3$H&q5c;iYZuUvf-n0k>^^T%_6fKUbPGtg3MdV`nQ#B7393qh}dJ9Q%LtI zv7QFBVKvH$=e_ON&}G7L8i7jkVbTS4MMQD9=7+~=CY6qz=Xf(DTAyloNKdye7?NE7 zz?goggjqU8!^6jdLbFkh61F7DSkCXErG~}kyM?oLE7vw;jo`z`?&W&Ief{HCwRNkJ z)XozjP3aw0r=Hf;tBt1Q;%m~}!Xz(@3Am2Vx*eRC=^=1ZzDuE`yiu;XRT{I6H%3DR zutX$Q*<y&-elzfB5N&X!;LdtmqYtU22mih!KfYb}Kv5;<Y-8EzMYR^<@s{O=D{mSW z9!7X{<4p5k{`S~JQa7nLuSx|YGRovO2XH|<x|wtMjwan5T$+0e@e+?mPuO3$tdl@I z70_ny_|1dg>F~tIy)u0xOAe>isN;k2YZB;GQ_a7koJk7P9+WS7y8J2OXw<-N3(BPj zql<;97^zwq)9Ad;{k7Hq5E6e}0C#Ys?<>0n^B>AYW`5dr5yN!NU171sqd{gWhKATZ zR(EsK8je)dyJwyu+T_FwVsBKez9r3P%glyK4Zb)TRHBHaI+JFyAM@^GC<HyIRHM<# z$FpzfJ{sn^f0W_Y%_QKTmo^+pA#iK=^5)VNe$rgymrapBj}CI>GM4erqBR7#v{OWq zBJnn_d?_O>dGR}&GDHG2zl;2Zds4!>y;QQY#z)Is`q#8Ue?jDdln8c>Zq06HIE98m zayAC}-)P_n8@HR+5@<ClG4SjU>hN%nnrb7C5zoJ~j@BTq<a7A;Is{t2Q<C|-^W5Dr zdFq51zA~jjkSnP<$4)p*&-Q|r+Ov#js!Rsk!+$$Gbe!BRUyI6&V_(T!vL|(pL@oF4 z|GxCWW5r;h*dcn2R3MiSSszifF0tlAo~<a5lSUUMJC{CPmbjxv;~BKN^K|d~fGfXd z_{^DcF_ivCfBCq6$ITsFpE^e4C#A`i34~fbNX5x>)5?s*3uGgAo4t4!!cDejcvJfJ zD;e)oQOjp%47hRYSw4TQE>rRqo5>hJou1b?;A+}EqnLW*%SIj9=8wgDY16kRY5pvf z+{v-(lHyzCqq$?Kj5)lA(sLJCBfF-9N={?q^vLyjH|9*c9CrzZ#JX9R`#ttPlKE@x zKa|5l*VcPhAGPgtDRNT$=FD@y+r_fo1HaVG$ryOu<K;RfFEcw(T+_?)^Ux_TTg$X( ziBqTnUG0a@!bJ+bZ_xgiS&OdT_|_GpUv)Y&eRp(Zl{G_xVk-WZ&8!jqb0*JFruXM! zPx)m&Gm-j{=pCh_Cv27bIeS}A$za8Pxwb#NOaCyFwSL8GB4X^|!Z(X1hDxDb;J+MU zxeM7L!mT-><3`n=gzpopd<?No%0p#-7qoVpH|y`KkIoHjHLXyYGOY+esbKnp_`>Gi z9HXgL$ZkyEHXY4*<8d!i<k>Cf!F{png1VRLWZT8D9z{cP6ih2Jc-N-<@5EZPay{RB zIctf?=et^wLuCi(yX3w)$^^H55q`T-N7Q*FC3)p!hE98<U6u8R9&RDUzlXR)FJtA0 z%Cz)-f@rnFfu`SHG0a)j|H5Bmd%>mqP~fs8tN&DYW#sN|_x%P%W?r#wHI<tj*K{8V zglrp9EUQ)bc56HsZBx0)#9eS^@L>3USu1_n4iQ-D=7~IOXvnF!_-dnW!FG(t*jgt1 z38B=X$jP449EYsA&S}mXXPy{E_{okGvFRpt)~xT1Vr_CcYz>C8&c(VN9$bij9plOO zlzf*y;8x}&ocp;m`7_&p?>t;D`Z{3Z|9CpHB6D16E}!L<c>#n{m!j;*t7g;9DLdC% zx6MY2g@kWBC;oW3_CuodWK(YGs?d!<;*a1z&7)qX6x!)|<vrb(cv>0ed0MW8&VF}C z-4CXxhGXYW5E&r>+B40!uCFza>rm4hdK5~?$%N}`w1&H_qM>@07nDU8rN8Pg5vtRO z^q&XtfnSp$(R48wD<4+%afMV_n&@|8-z2TEe~1_ellEc>b6U)2<o%2RZjfp|=#QOC zLZ?sL#JYWGvy2va)0{OkRc%GGW=K<Nm(CmQ{O#gw&cwx5X$uuv?`1;|W!c5L^(jbl z*j6i+Zq$h`cv<z9CCAq>ddtz(y@M|;jtkl@MK*q5`TNL1UJ7#k<n4uz%VQ5MJGUF$ z+irXIfLQn3I(r7uA1hBSGg=4`UP4MqS~?z~mL2$(W}cHP(9vi|vJNa8&6YHg5VE`4 z8Mje4x~}g#BgYWnm8Wgz5H?7*@IKpV-LTzT^>MS}B;ENU{I)-4iCdOhw|BgQ>eT62 zxA}2$_u89*<mBS_s;5|mRA~EIZP^)OZvL0Z?at|*mE-56*0%&m)`}SZ+hH+@xu!44 z`{@G;Ic#FxINY^z(?+u9mgH1p$*7=#=!j;1I2I>vOmQ}w=eoB3RcoZNztw=u?-Xe0 z^^zv*?mT+S7ONqR${l#hu6z34d93_OAm&GC8146-+KkIs+>y}wt`#~-)*vQr_&4fn zfU1{6v`M9`fs)~QnX}GaqSe1hel}-3%%67cMeVCm+|0Z<ZZp4oimlzG<i8C|G~|5l zy|v3~u-K4^qu40EK6oqtdDDqDy#w?C)D_PL?BX|cyJ<Y3)TYSkFhzpckesnI@Zke= zH6PwU;*zBC>e=maQg>&(ccf=Yr~Yi&E|vRpCPVYIz|rWIQVu4L;KVTS-a0!Rh?O5K zquN(<CRVJuxYO+`(A8+Xo|3baoq4rl;zr#@<;<(ksV?%AZ5O{*{6plHFSVOj9Nn-f z8p^}#B73Eu57{xyi_z6>k{Y@n(vq|H{fC0^TF39~Rh1peGK_VbB~ia19e2x;YFIh$ zcw-!zb0IlbkLOM?T6vOiEAP!L3vKzc#&2BN;qpbHz5B@67HcIB^_&vXq-Hw}V^YWP z7dy<y1)qLaU>Az;VUN`E^|_hR-$K(XWX+UmrS8C~HKD7Y^@+Dv$hLvC>|qL<WrWg} zLo`|iW%z42#%dXTE%9BM<FaF5US$65VR_adP6~+EWS>h3Bd#<7NY*P2lxdA1?>vi% z`w`i?^ep$1!@ydEpF)6S)Xkx+BR6A)mW=U7>klUXuE73wwI~`2r|b)y9+dgJpS+!- z8!2lzVg1?@ukDU9(?*l^au>xpJej%Z>YsUd>DA*0)CM(;nYeZL8^q%L)MI!n)<!K} z^}a(+E}3GTtJy*H`F<|jL6NA%sL$sq{P(BpkBU-y{a7=oAPgt2tCb3}@}r%+{XsOz zG%9IspwZ&O8<md&X79fF*0inQ4`<_U{$u#UasIV-Cy96QyA*|IEasth^Zm5%xX=FD z4uZHIo;+;cA}2m0L2Z#_Ih;gK(e$q!y&lVFdqU-LHtXS=BQ^8ZWu=u9xdUNj)@PXY zy`vY4xbYv1L?5i~<?wq(y~neTnU~zRQK2RLq_HrPxaSKuWtJU9QpW7~x9jDhqzYxs zX`vP4xI?$P!+dwDRvJZ5Q2rQmhDB*tT1HPeP!h_2khSL{CrM(MxB664izJ>SW4YFi znY}p^k=8OHT3G!3kb2^w$`10R&EaI?Vmmq5h9{ZG=SKBgt+4CWY$g-NoeT8shRm@w zI{ZWfi|odUN9p47X<4MCdF$s47bV~*X5@UF?LGFO16iEwg}!3ET-`?qBm7QwEw$IX z3XRy#bIV)mv>ED%^sJ{kt%dqYx-6-i$)Nwp(703aV^5DZA(V~(rbn<dr|=WZbW|zo zMO=ardC`_r_*Io6uZ2A!h-*fc%*f?0ycVN+aq}Lk{(6^1f%hqG7L#&{hm*b5O3ZEN zK)}J&v-CbGJeP+vQv8H;1?L4FenUUPKL>cFom)<exxQ7)XeumCS9)kRO^z;?W*k>I zM|Cu=5M+2YPX5(+8#A5iXV6ZbwC5D+7aH9;pM#^nGDjJcP|=B~noO09Mlv~FG11kT zo<pX;aBDQ0+rSarl!Y<nQIUnH>g)lj@XZWVRc<rer-m&TF{h7*J~f~X3LHN^c;~?X z&N;v_EZmo@Z*P(%C@z%6@TZqY_1x-W?kCvkNlV+cgikJdS$#O>i^WB$IC2uM-7dM< zLXGL~o}K*kVxppFjy(rc(ugIa%6O(djwCX4>A69Da@@2tgYx5FmX3MwJCubdFr;n9 z@$iFnb6oyIu5k(oPfS_G^4qbr{3>>m-1CFGq1%6b|J@I^0pT|)>aowAj)o^WpKsbS zFX$877>?K^p^8s`_ID<H+$>Ab)qD1{am%WpS9YO}5tWH5Iy0?Gp>M<z&}F$k_Dudi z?q@vk3M1j0;sn(57j2IjcLwJ^OQ9!A7>@Mt^xD2cI{(#|*qmupG+Ey<AS}&zbtsE$ z8xWSBRMl|BUhJc;(3l;TIXgzcWsihz#-Z|}eK)<{Gsoz@e7}-qY0`sjqQ0eKRB)UP z6*$8%@3o%|&75=c2zKfW&5U&N(6MFd0&R!ZQmYv`W|wP7i%mh7ZQ;`|8_|SgCaykh zOeWnX{g+ZrR5j|(v%mb8HXBfx&zh5(UV4hj3+S`&-xWXhwAT)^{jV8r<Pz@V9TJWU z4njDWhK+f$NZD=D*E`$~<rC`1QV4aVnvOD3M_FCXLG3t7Qv;=mR79$ykjR2STIByR dxDf1%^N;-h4Ss3|cd!f)W=2*RvY}V}{{X;Logx4L literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/X/image_tiling.json b/exercises/inputs/3_files_and_commands/X/image_tiling.json new file mode 100644 index 0000000..c6d9d6c --- /dev/null +++ b/exercises/inputs/3_files_and_commands/X/image_tiling.json @@ -0,0 +1,111 @@ +{ + "name": "Image tiling", + "fws": [ + { + "fw_id": 1, + "name": "Render an image from a character", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["character"], + "outputs": ["image"], + "command_spec": { + "command": [ + "convert", "-size", "800x800", + "-background", "white", + "-pointsize", "800", + "-fill", "blue", + "-gravity", "Center", + "-trim" + ], + "character": { + "binding": { + "prefix": "caption", + "separator": ":" + }, + "source": { + "type": "data", + "value": "X" + } + }, + "image": { + "target": { + "type": "path", + "value": "/tmp/letter.png" + } + } + } + } + ] + } + }, + { + "fw_id": 2, + "name": "Tile the image into four tiles", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["image", "tiled image"], + "command_spec": { + "command": [ + "convert", + "-crop", "2x2@" + ], + "image": { + "source": "image" + }, + "tiled image": { + "source": { + "type": "data", + "value": "/tmp/tile.png" + } + } + } + } + ] + } + }, + { + "fw_id": 3, + "name": "Rotate one tile 90 degrees clockwise", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["rotation angle", "piece 1"], + "outputs": ["top left"], + "command_spec": { + "command": ["convert", "-rotate"], + "rotation angle": { + "source": { + "type": "data", + "value": 90 + } + }, + "top left": { + "target": { + "type": "path", + "value": "/tmp/piece-1.png" + } + }, + "piece 1": { + "source": "piece 1" + } + } + } + ], + "piece 1": { + "type": "path", + "value": "/tmp/tile-0.png" + } + } + } + ], + "links": { + "1": [2], + "2": [3] + }, + "metadata": {} +} diff --git a/exercises/inputs/3_files_and_commands/X/letter.png b/exercises/inputs/3_files_and_commands/X/letter.png new file mode 100644 index 0000000000000000000000000000000000000000..f867045ba941ac8b26a098d9a0f45922d3604cfc GIT binary patch literal 10440 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 EA6;Cvy#N3J literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/X/piece-1.png b/exercises/inputs/3_files_and_commands/X/piece-1.png new file mode 100644 index 0000000000000000000000000000000000000000..e3b5ca8d527730885028950cfdbb4ad6e4efda9d GIT binary patch literal 3096 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/X/tile-0.png b/exercises/inputs/3_files_and_commands/X/tile-0.png new file mode 100644 index 0000000000000000000000000000000000000000..398445bfefaeafbdbdd80846f8b61210518d398f GIT binary patch literal 3268 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/X/tile-1.png b/exercises/inputs/3_files_and_commands/X/tile-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c1b8505090757ed6037443f22d8af70ff2a2f572 GIT binary patch literal 3425 zcmZ`*Ydn-`8-EH#QeqvVkPNjB4T@4TB1BG+oTeONnvHQNQe>QxO|fkxc?aWEHp(z^ zD50dpVxnS(m6FyutHx~2G_Loa_O~D25ATP0uKWJq*Z=Tb&ojT7^n)(@<yNV!!Z1wE z!QRFlRUw8g(~*`yt2ea`L#RkntemYdtmcaBw?HYhUl!%Q-x{mx-7tkVT0!>i&KMS_ zi(yHr7$!ha(j<nR#$(uY0ESuIz%Z4_{0DA(Fl@Q#pp%C!0Q~$jC@Mm8GrW2QQc{3n z5F8BOzJZw;Y}y2$KEb6+uzWc@c>-K6NK3=nvmg?|?%l9$8+`c!SFgf~74Y&UjEuml zRgjSZR#sqX2{&$loE*G;3-8`RaWO0{!T$Z=?hXtFsHniq41D+i^73%+9=Nywg#x#3 z!RF2I`7=yS!Lw&@_%NJ12Y2s+i3xoD3UhO?awWWe4M&c^ufIZVEm&K_Uw?tRI;>p_ zV`C5$1Z8FL-~niA!us_vI}0Hp(9i&n9>L-w;Bdg>!O4>#ApxD8uxuG5Cc@u;!<H?u zeLDyQAR_~VgV5a#+1X%d2)4E`J`R0-ASnsu<>2E3X=(8BBMc0{&Ychz2AP>KJPg18 z4n!iPq`<XnAQZyrD9FmfzI|~0I?(B0Zx8R^!<sdqpa6gV2?q{9MFo_Uz{CWsTL&9A z!u&kAxxww*Fg*=QO7P>4;Oz~)y--~Z7cPLRD(u<?{{HaCA5dQp|M?GW*Z_`>aQry@ z@B=)22vt>}r3D%q(AEZgK14@@fdM>!4liE7)~#^yBJ9}%Jw32`H53#;dOBEGz?Ca- z<_zrJ3;q3IX9q<^;Oq>Oli=Y2m6h=HDJUyLTpW-{U~CL5792YUjg3%R3P1e>EiIs} z4G|G=;sms}gPtD5#6Us<bajELDbQ$;l?7}zq^5$J8eF~%Z{9$1GUVk!P7XLYfU7Hb zdO~C*96bt6O%NIij~|1M4xBm#t*y|}0Z~y98w*B8kdy@Z`S8mxu&@9&HgNDDkjYR} z19&_H1VDH=oIVZl@o@e;?AQTbUclkN{rf<rg03#)=0ag1+`I{Q?!eFx`1ygpKA4*W zlL>)=Kp?=OLr_--zx@WjzVNi<Q>pkHbj)$T4R%p#qdnTlMA+FyAuJEAm9Ue^8$O7^ zNP8ayV&VpS%&s$(C<bF9ttc2Kq4oW9&ts<#!W12BtUS&Rjf|wzdk?EVTL@w~W!5~r z9_YT0*~Zb`9`w9L>AbO>X_(rDE|aaekl;}h*0mi<zF~&GbF8{`S8-eCitmN^SM?@F zYApUSC?e7zWpqMN;3zu66z)`^=UkLHtxQtB6MVb>MprfY@fdqWAKM||WlD}zpW^Q| z<i}lJ7+0S~eyp9dm)CWeb1&eq6|XFW>Qg=4sU^IRs=b`N=%F-Sc{X02a8nmad9He% zu#BW^;Hz%aitoB5)g*1hJd|rF>$y!Sn905_b=eH-Q)iLisU=TlzT~h1R5}7D)15i2 zNM|c%^LlmVj|%bx!g)j4fro3-3b`qUvV#h|p>5<RZFS50NF7UhPV{=!xF$Z;r*Tcu z;G3&*vV$@<5o$sPUZ%j9XOvq*erL3@nO{ZqZVcBFd_d*SGu61iHBf({YFx}VGlL`9 z8#0>B)s>AJ)}|%cYLJwxw9^U`amcxXnjs274bOI{3hHV==6zhy<ZT+aI&x4cU{=Jb zj*OjB6)aM36shBR^&*5zWa0TP$l^<~svr~LbUcsfgZA{#n|QNUXz@ItJ5;kRO-Aif zG2`g-v<ppS)zrcxg>teg%}Sq#B7&Ys%5}VmxFTxJjyaQ&^kRNPXWE6!zqCE%H*xS* zXM!dTxkgsDrJH!?o>d3FD+w}Y68K=45%nI=E2QQYEhuX7((fZ*2l=?i!S#+We&|kT zbj8So5ap~}2OsHW(AN~N)j!@O+4Cs>i;!bv6?WWuvUYWRTO(Iqkgtshq8o~U4db?i z8Kn{n=CYzUrxKZR!?>S_;~ltNBZwjUV4t7Ry56zhTAFtCg6oZyitBjpmr<(28YvI? zKXZ*7dbD`^#}MGCWm)d)TQH|^&1?Oqq1>9IS!sJG<qYE6JkC=Wof>b<DR`Wf8n1H= zY|<gDDn1iXt8+9jy-1xyIc2nDEJ@Jg|D6|qWuMD8Me6mkW6#;QSI?U6Qi)Zta*ex$ zf~k+UcPtUJnSZ)Vjyxh}NA-P>j_Wd{=9ZCvRcuY^$$HhWF@-qLrsoumOYx)Z8OGh- z{0}4Ib%C^iYUcPV<U4Wxgd|~My_sV_nXNs`uJI`u(3)h6mFJ}-3AH+O+zBU@RMAP) ze_1+CPL_fHh?8tSYG~%@-nJ)IL`Jy2v>*iG;f5*19&r-Fz@}MKj)B|EI-VRg=eNv@ zj6*)?rotcVVg#WTA{=i|A8qqYk5gKRs<^v?pO^o;w`7qQzM4HgoVIgenERvKZg~<x zS$uF#W3OxT`5uKj#gk*|HHS+MXxGQ-qN?S^XdcM#QCPGXYZp(fsFH2)eLRwTM}q?x zoedlJvJ-OdDlD!To31rSihTpvg9|j>Q4$u{l1$U}KiB@6(!@dd2o@Knn5Z}BiA|Qy zAZ0u4Dx!LaXZocUxgus@W$>cJ3yK<t@+p%cQ9a7`>>QFPnkSbA6R;x7dr5Z{E;I`6 z1jvwZGaDa;j&|C0R;(?eb0}>`XxHOSNw~_@Z|hp0+I0@CEV{y4kjWnKVQ5eSQ9RAR zhPDNk1~<!!yH6R-BoRm2(a4L4gb8_d+zkHhgvWf18|&0E5<!=r7r&o3bu*^gjV15J z$P@R!r_thYvO=epQbDvLD&-i7poz{`HB7(s8v2rY633fT^h5$Hu=+TsS<}EO;<>At z3jAUs?W3{T0p+*TwfSGE*9_1Q=-e%VO}wdj64L#(lATo*R2pn+*`GMataWQ6z9?U7 z_DM#fQPBO2m~FXG%kvl7Qm<9#E>3Bxe@)%mKRO*dfPz~ts7$x=J<$o0VpKb~O;7vN z>Wwlp6=Iq#Mi6!WkVr8ih|zg}NkAfq@8J`z%B7)(Jw8*BIA$44Pu=*k^}7eN*n*at zjvkbcK<^DAMiF}5%7?}M#ozn&%i+C(y3h$l^$Vnz(Qdm~1{`B_4m#2*^%n5MI(NEk z76)50!?I$I6oex~b01n|c^g*m;QfX&&20X0SZ6NPLgcB>zze(>>$#LuRezNULd8kY zY-vw*9fZE32@gB;?p^k9Pn;{~=$^=}c-b15U8YnSu^1nUBpF}ShN3s4sn5T1{pM!o z;A^;8$#(JmnwmZ^aBCv5$IL<KCu$dGetiht)N}E8<nB$C3R%wm2?s3~%+Ld^9J@D# zOyZsEz8A|1##y9zv64Md>oE3;Nt_8nMuP|FevwLaov`lEA-*CtYbWwqF@$sr`fuqm zj%Sxm`O{*Ebe-_?X0(PJSJgB2bPe+?=dA0my@!`JBb;d_(yO=s!*s~9{6PoG5p{pa zi}B$OIlG-uOdDIvvK?D-0`jLR$U3Q#eP`D6YyD4*FACJFjZYDU#bS>i@q1uG^EO6W z75sF~Ugh-AV%lO}4o!DrEYa;2+ZeU%_7b*3m$HmwWO*HvC`6;LxBS#(GSY?oZkFr6 zjCw=P9*>zr>dR&aRk@VqoV&B8n`X&ejY82GQwDyTf6bh;p-^<LK8@1AVoO$&xD;!S ze*oz$--Nn~-C~sNT+CH8XW{k;*O{eKm{c;uVYJXEbM7rS;+W}KzTVw$?~l`(@@TqA zqHwbm3OwQHWt7l-kJcwsAlvyZw`bOLYWUyFve^zUn_XK@`j*;PLl>v{_hf4L&~UA0 zAqA2}vwMUZl?*(Lym{KyZt!SHLD(6~7tOAm_(!YuTn&RxneR!U7LIfivs*@b(S^1} zSRBj$@F)EI(SLYOYzfCKP1sB3!t_`^`fYUWuAL9E#Iu*Agt4(PyM<2E;)~$>itpb& zYkGV5^Y<vVD{C~bQ-C4bnwXY2AYv}fB-{d;dF=z4>R}(!>xSI$&IG@bkr&(ZS_oAa zMeQLXi63H)#TaI&jf(#>McaBu2L(n(pNI&@ymxdz>qQ_=3<d{AlP!Wykx{`+@W$qb zcymJ&V-Mq<7Tb4NnC#HUn^@rSlG@1{|3e6i2tIK<_Wu)3C+;di1kAzK#iq(SAmzV| C#3lg% literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/X/tile-2.png b/exercises/inputs/3_files_and_commands/X/tile-2.png new file mode 100644 index 0000000000000000000000000000000000000000..2f10a5dc5e33906442dd9e602f9c6c3ea4882133 GIT binary patch literal 3150 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 NY^@wE3pRM3_$T}!kJbPH literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/X/tile-3.png b/exercises/inputs/3_files_and_commands/X/tile-3.png new file mode 100644 index 0000000000000000000000000000000000000000..7e37d3e18e9d1f042cfaa6cf28af03979be7d9e8 GIT binary patch literal 3604 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 X!vEh8o4U6YX+SyH9I`Io@0b2R(CmUX literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/Y/image_tiling.json b/exercises/inputs/3_files_and_commands/Y/image_tiling.json new file mode 100644 index 0000000..6c7fcdf --- /dev/null +++ b/exercises/inputs/3_files_and_commands/Y/image_tiling.json @@ -0,0 +1,140 @@ +{ + "name": "Image tiling", + "fws": [ + { + "fw_id": 1, + "name": "Render an image from a character", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["character"], + "outputs": ["image"], + "command_spec": { + "command": [ + "convert", "-size", "800x800", + "-background", "white", + "-pointsize", "800", + "-fill", "blue", + "-gravity", "Center", + "-trim" + ], + "character": { + "binding": { + "prefix": "caption", + "separator": ":" + }, + "source": { + "type": "data", + "value": "Y" + } + }, + "image": { + "target": { + "type": "path", + "value": "/tmp/letter.png" + } + } + } + } + ] + } + }, + { + "fw_id": 2, + "name": "Tile the image into four tiles", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["image", "tiled image"], + "command_spec": { + "command": [ + "convert", + "-crop", "2x2@" + ], + "image": { + "source": "image" + }, + "tiled image": { + "source": { + "type": "data", + "value": "/tmp/tile.png" + } + } + } + } + ] + } + }, + { + "fw_id": 3, + "name": "Rotate one tile 90 degrees clockwise", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["rotation angle", "piece 2"], + "outputs": ["top left"], + "command_spec": { + "command": ["convert", "-rotate"], + "rotation angle": { + "source": { + "type": "data", + "value": 90 + } + }, + "top left": { + "target": { + "type": "path", + "value": "/tmp/piece-2.png" + } + }, + "piece 2": { + "source": "piece 2" + } + } + } + ], + "piece 2": { + "type": "path", + "value": "/tmp/tile-0.png" + } + } + }, + { + "fw_id": 4, + "name": "Flip another tile vertically", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["piece 1"], + "outputs": ["bottom right"], + "command_spec": { + "command": ["convert", "-flip"], + "bottom right": { + "target": { + "type": "path", + "value": "/tmp/piece-1.png" + } + }, + "piece 1": { + "source": "piece 1" + } + } + } + ], + "piece 1": { + "type": "path", + "value": "/tmp/tile-3.png" + } + } + } + ], + "links": { + "1": [2], + "2": [3, 4] + }, + "metadata": {} +} diff --git a/exercises/inputs/3_files_and_commands/Y/letter.png b/exercises/inputs/3_files_and_commands/Y/letter.png new file mode 100644 index 0000000000000000000000000000000000000000..32cec4d803391307230c024eb59d1effa4d367e9 GIT binary patch literal 8559 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 UBH6J<kOJ)Dd5mGDzDwNy078kvmjD0& literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/Y/piece-1.png b/exercises/inputs/3_files_and_commands/Y/piece-1.png new file mode 100644 index 0000000000000000000000000000000000000000..e6b7316888f403f4648c54c7187dc60ab6974e37 GIT binary patch literal 1281 zcmcJPZA_b06o7A6y_Jt{-47@7v5_c4W9nWIdCQAJT3RT>7D|{KIFd5h7?42&MWHaE z)P*=;AGn2&4MrlYHOfHTf`M*>%)!Vaon3>-0y12Lx2~YHP-L*<t$+Ms{5NlM?m6c< z=iGa8b8|jTQ6})c{k;)F{6x7l6(J6n$SW_99dSNCXCdmjT(Lro(ATGZHnN`g;F8n? z3A!>K$Py<wTb`;wNVglI>Q4|_C#ZS>p;8JVyBZ;;8KIXn7Y9`DkibUDducL+AU7At zQmet+8)j!gp@64Pp{EA|17Ud?ii?5E1&ak}8a6hdsR_1igZX*L$bi8?2nhkV8>*@R zW0;%-i3B=3VaE<wT!fJk5DH;^9qQ}h;X_DHhTdKX3IeASv|6}#4@4r^+=P}E5C~vl z0S+Dnvl;Yy;PGH;3Zzo#>VmvH;Bes19oVx6o;-nu2JrELxj9g&psx>h?gW<$N=w0N z1%`pvR@lBBSQauf;l>RJ4TZHesHuSm4?rdZqY?c4U}*{R^I>cZ!ot8lA(4}J;2cUy zkZw8RQ<*~?ucG+)62i_C`#aRGer?DDHS%-<ktbV@;>QYNJn%z}I2R#q@ZWMZO_Yw% zmaB<Uaa!4wV{-rd=Tw3dKcrIhp>eMl1yt5hwfD)W+CMF~U+<VMXtP&2qHC5O_kXZ& zu%cphtJ~37&EaBSKT19H{}^+ppV9fjo6o9A>%Ur}UN*F7k8%w^9cQg(u_N}3^7{bW zur{A-h^xKdU2b3+3y-O()}+y2`Syj%fykniQR_9n@2N}jc|vlSe!aMDuRD?w9p4>v zkv4t9&SE@2Zme_S(yX#7V^yT7j(vo2)0@T%PJAo+%gtJGW?}+OeXA2@w$Y{&+EQ}& zZ|q~Ucv_xIQ>F{-BF1$|?C)l=(0D7rufDMBt`lGDYgJkTY#GdT{jejNT_xFyev)0m zu3;P()q5&C#eIK;?>n)p)9J)38Ub(O4_~`#;HG{!c<Wc${<dFS)ffjPTYZ-CiYr|w zndxXZhDK16m1k$p(55Dq&-b<O(@D98ZinlnS$tjDb5u>~K5IWqo7%pJ=~a$&%v}B` zf+};zy!&cV$}Vf1zn^W?)rj$>7^CqK-=3t~%QdX@u)=b~dSo|m!pq<0b~R%h`|;%; zNqE0b!8J7e%tn#$TjzNbH>XS1Vl$W6UeBl2$_{9=vozYgqC%7|xx0FRzz`42$<iKX zvWpKBg~F*YT1e5t@UXNn5fec(Z;Rfb!WoJxxE<vgIsX(KE6T|`QvTls{>}P$Qh*X= KO6e7ey5=u&0Ta>y literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/Y/piece-2.png b/exercises/inputs/3_files_and_commands/Y/piece-2.png new file mode 100644 index 0000000000000000000000000000000000000000..02f862d8251cd6e3f28a40d6a08f8bff6c00c47d GIT binary patch literal 3349 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 QqoM-D%EF#fYwnr&e@vTmg#Z8m literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/Y/tile-0.png b/exercises/inputs/3_files_and_commands/Y/tile-0.png new file mode 100644 index 0000000000000000000000000000000000000000..260e0a8e975987ae0e86d65631262bcb58d082eb GIT binary patch literal 3758 zcmZ`+dpJ~k7v9X2ZQS-`T%wpUT`;+&aw#%1aw{2^4Bf`1BdJhP(Nv5X_uQgXVth@- zL6az*4uc7yl1fUabkIeqgQO;1*0($Ve1CoWdDdQQz3Y9~e)jXM_5AkE;H-DoAQ_Ml z1kv#HaP>nFB_eJMPy&wpOl;P~9dSF;n~5N`xoY1-XW_ZhK0kLBa;azDTRfqLd-!=H zNa7*{NfIK+3=SoYB1pV7g1ies5XWK!(Tgp);kyb!l*c&h0@gG%0D^#*7ySGQ__c8( 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 SIN1#sAf9X1yIx|22>uIdD*U?u literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/Y/tile-1.png b/exercises/inputs/3_files_and_commands/Y/tile-1.png new file mode 100644 index 0000000000000000000000000000000000000000..6ec5a10e4fb0a05bea6bbf00cdfb127be983b9b4 GIT binary patch literal 3500 zcmZ`+dpuP6|2}HSkjhLcMN6*HY~y}ShFo(QOd6DRmyt}lM#Nxa8?l9uTTzW^(DZFo zT8W)h2>BvSDP2~V!Pd5F3GeS`X8-v8_50(TGw<i~yr1X!obx*G*O>yUmy43ZMg<JR zl-yi*`C^#Na&&0Rqcf&<sUZbjaM2V`3Wo8E6c<8eQ7x0;>*9bl_p5zCg+{omuP273 z>0($`E{4q`DC<3jC6O`gV+e*>mt)v^W>uSyEru<}s2(&Y0Qk>;0K<UAf`9%2EiKT~ zgA*s<&K-FB78DgBI2eM0Kv@|+d;p;kDl1`O0gQ~m+8P!Yp`rqCI2am&nHeAwAvqc1 z;$ZV;`1@~Iz8tPygQX>)P{79ru3UlFuVHo;PMw0|$6@<+`2HPUz65!Bkdc8055Uh4 zVq)O8-(dZE`14Pgp9e!jxO54A{S|iYg4L^G#R?FKAR+>?v!S;abalbX3fkM@!Ufp3 z5B~ZKHf(@3YvBERc={A%Wx>)C+}+{vW4L}D5)(mN8`Ra|%NNMchpSiNk3YcM8x$1a z)hl4L!Pppn{1LjlVeMLoj)p^rKt%=q`(J2i00#$<lLH+c`1TEM--f_IIC~Z>Ea2lu z7#M)aNH}r?`uadk4O&{Dz8*Y1K~)tdCLkpRe)$DRB-p(h?%e}{0M@O8>1lZK1Tr$< z>sPpS3+QxMwF=(7gVItkGXowEmMw$+e)!=BU@{>q3pQ<nrY4}#0FQ^$r{VYCAu0+U zJ%XtzsH=mWJ7IJbjva$7Tj1tR*t-`B3ZSF}R;~n7Q`o;B;^V=@1U7Dj&!6GkIdF4> z7cXFV7#tnJzyRjvpsNeQ!ayvB+FIDL14c$5Ee$j^p|utE>;WYuNKJ)j&*0N1@bCaG z7hGLod>r!fU~&?+ZiTydAtVF{1gNeCTU*f3fZ}54>49zAAT}1xoB<98oSnhO26A%X z;zjWFg{mqbli}e*U@)M$8JwITDGB&|IC>PQR46Qj8#mzoeK>g%4jh1=euDCH7#xIz z1n~EVjt=nhg0V5k%!IZ!2nc|(GB7uX!-wJgd9b&K=g*<02ExO^&JNPk;qqnp`Df_t zgwRkpco1@Pp|KHMTtHtR-n@aLB51fipeK2W!gjmt!t!O+T~UFLcXm!dSSk9w4wG|y zULygSt^o+dBm`H?`C+V`1Waa9qS33QAw90sECUc0<hF}KOBIb&e>gi3srGY6w_R(u zF*|bJ;90qHp^i;}ahWN*dYfY}M_!rB7mhI$oSt6GJ1`aQ{nWk3|8dln!QhgiV9Q0B zf$3v23AOLij9T`8JDM49_r&TBWkS(vi|bq3Ijb{<7BMW_Tf>b0w~;$?jxkK4|8hC4 zt6yiHa9JaU<&ZZL)xS1$k#LB5&WgCF#FWB+%`l60FV@ZfvC%x?5^ZHn&Je>SrKea| zKgcU?(&Hh0NX~-$s0!bEM)#&$++_cw2K*L7&ZDYEdf9b~j-bM()Qw0h@H=PaXI5iE zaWF&3jp7<glAzqi%$4}Ol7m#ENJDahk*JwrO;2W!1Yqv($IX7c^5}VteVUxoNZ5?2 z`-I2fSgi@;vu;E5APxCUH{dH9?>&!s!7`!r+6+g{l<4lrAux<m0(B1S9+)0bH9PQo zg+^;rU|)4|!%tn+Xyu6Dod<L8HBn#nDkS1Vn)FiG%1`z^DP#J^WAN6=z&>^VuxYMJ zf*yBMG;78T1$vI`cMONklze<xQFk_Q<;0<WT>EZh`@zwjmw|F!CB$}6<0e;a<zH&` zJ$dVQcV6j87}g*Z9nX@=wY!ky?A>|axb2v0fuPwXn&uzY?)@+3f^^*8XpfF%GmNrU zSPo231nciQRtc^315h+qcU}&XTAiS~fxt!kv@0>DybDE47t4W=n<B+JJ3aoXPw&|q zZF`Q&X^jM9^_E22y06O~jMN%;zP~>#Ns)G2q?lDg?>&LqqDt_mH}6fCDJF=CjP00j z*rV!ZmE{^bqejw7{mNH|3GLCtZ;(=haK1sLs4?YI5yEnb9uC<O$zr=PwrBnQutez+ zr+v*OU)}Q2ebcgJ_8EGuZ@Q+fXT`*0>a^@2iWs#=u-;xxkDp9MxMM|KnRoQ?^|BJB znmy^79+y1^?VIw*Ij8CA{WNKm1jcrpS6GG}s+fe>p>2Zo%k=pD{;`@&f>_b6+Q+S6 z)=8iu!F;6H&9#E{UHf`W$}f*PxK<35hh!uD37u}7s>yJmyw=u^+&l&;m*d37t8Dj4 z*W7l|Hm3jqyWGPvtZ1l?@F>3J(Uf<!>NNceSFomQ9UC7U(D>CM^%o<G&_L>Rhdauu z(;h9~Cas$NV<}XExRTnGXYa;yiyaA+uM)O-HOW%kcw$2&VOfxr6R5~KO}F4SY3LW2 z*>nUdYHsUJl^fs)H0F(U>2F6=&5jy{ve?cHQobiUn(7=U%eN{ecMg&e(8P|u>WP4C zqt36$<LWiU{6`%vykbXxsuU@N>1pxr%peK<yQy;VoF<JlvhLW$R!PF~;A$VMf}|pm z0&@SB_P2UL)){*J*(;J5NoW2=k0v?)p*@<+FqC%>Yj=vvdt6NJJl4|B>AdREB^S?a zBAXL*^*;{0OKmw_M5c5FF%0u>F6Jt|@DB=A)9@JVYB6D`paAu)UGJUBC&sC9vPK2P zba9-25G8j7eqf?lr0|9u%CcQLcIul!iLlZ;F0a#-Cp+xBfh`Qw_moz<M<i9+V2g=? z7T@_SEhv;sh>a1fmDA#T{dl>xD@1!#jj?s5bJ&gxWnKDr?q;$cC@>7!^|{ehH&WiO zmZD77w*~8ZIln1A*VLa#dHk|s`cCTZ(A*nOy_vBWP=fMBoU#D9eE2@4XSo^e>WIjj z+HxmQp<YpwKS|r2y@n7Q-qFt~5sGLeNx<!m7wzQ>1d*ZA6lGK?gNPVx;l^kFQpyip z31zl9LQ2VOC|fo+mdWxS_R`1|ZhY!Qk~J1CsUG7dFS82WNl6*#=i~}2nZ6|1BRxy1 zRsJ^FQ+?*Obtzi~Yagh7k7m-RaYu$SS?kURD&!Q?{eq<aNn8;=x0wEY^}qf~0;0So zUxj8PiHk;>FLIi%kWzxulbv<Yq!<{H*w5#Q@PF{;aCfSGauOzqyAn~0u#j9k@tX)A zSu=;L&akPET4(%nq6G1-&*8L=&8z*nM=q*7p6ok~Bg~l9hO~+B7hC6W^*{L8WNUky zyqpLX5PPh@;OFxgdTYK5E9WnY@b~QanHT*X_};u}BuF5LpD^^+eizOc21=Gj)mxG! zYcIK_)G4AkB{;)n3wn}hQ0SHHm>if$7Z7^NUW^h~GMbYe=3XqQs`(k7@B5{-CM1@V zybNCy<Xs%FXFAt-Y~d_<Z&R*uNc$}AJMxh`(N{}R77*NJzX(P4O*oVLX{;K_PA&S5 z<9BjOsju6Dyg!9=k{yh^d2U5lr0xd=1olzMM3cr1A9mOOT9CvG#CO~BPd#gtf?tN+ z$&&?1tavmp9Jrq)1H+yCuBo=uL7<F!_fL(hCPi)*E9r7eL)rqp2X$$N=h-*Bcon^f zcbivB2^J`On2GU>xml|hhHGm>+B*#dggz%RKGSzoXSv>Jc?CnKd<7C@NCg+IkN|=k z0vI|Qz6jIY;&9<L^e5>l&H`_q-mo(YGs_dn-?!#RUFH;q^by4}{|0$Gu4<M#l*(eC zKqQkUqIjI4RrRr(xGngCIScLC;!0simsvOQ;OY@~a>oYmH64y|IKO^t{u0-`>sEwq zr}zcBTk5lHi<><2t`7)^XJ}R#brXdVjZz;cf%2)OuyOIT<5^L)l7Ugk<PpX98JcQh zVOz@uk-X%t`EGhe*BiY&;$S%{nQ79Xqdtlf@K8;L%WH*Kw_AzYrihkkx}>wvtkT8z z;*nZ8h0G;#rrdFE9@8MPwR)n38i)G?9Z9@t+~@Vf!Sc_V7uydm?Ec5GN!Exo*Hg<e zXeBO8KSA>+L-%vgn`ow2oa~`B?dIjTo+YzP7+Vu_^8Y%2IBdN7QW?u4e=MSkUc{|# z4qqO=DlNs?tX89~DA28=Q;VUsD0gPjroJ-1*pbxmaw1>k($TqaeAsSYX=#sm-)fL) zb<@7!-n*(p^6i!AL{AJ4WhTbNAHo70dcV>Us3QR*LK7pc!;eIw3ua6<vLKNyNXAAq yBTH*j3u`k=L$a|onH+o1O7idM{~F@rBVwYC{{Iad%d?$P1Lo%BwX4}7g!Mlk4Z?N+ literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/Y/tile-2.png b/exercises/inputs/3_files_and_commands/Y/tile-2.png new file mode 100644 index 0000000000000000000000000000000000000000..540b874c2d30214d006def52af11ad63d40b19e2 GIT binary patch literal 1166 zcmb7@e@xV69LJwK?%*rl!8gb-1^nJ_X${fiNPgS|j_>^>0l(f*BuXJX32t^bIW%Y? zKTeT_xtyEgi2Rl$a|<h|-7Ip}qG7XQJA(nTrnbQiSbBIV$MNoaR%`vyMt^+vc|NZ_ zug{*(v*&5!3Qh9JHIal6d7fEsAw(n*LP>=Q<j#?kp9@J+nOl%c$R{UPE|yD$T2x~( zv84Bh_-UbFD$JGwLh9EO(&!>&K|qaDgw(1C@s<&yIZH^Kqw~s+t%CO?mtSN6;PoOl z7KDK3v9tue9upIwD73X<VF8;r<N9@o#c(*_^C2-2{rxB|#?%yO8l9a829cA4(NTnl zqooCp9w8|SgM$!>V6)-gJ*-`e%a>uX;O<>SMd8dDXf(Ka6H+M}8u0KTHf+GPYp_}| zH;1@5T)Kq(eB8bbnGB~+VQ~>@X&4@cM1s0H`2A2SF))C#GR(|i)hcv%!)(UnBqAfx z-i|;3YBg@$fYXWjc`yvzZj_c{dKxh?IDZ~G9mdDe+KNq^Ff;_a9ry1eApw1T*tij? zsj#2h{zB+tU)g5TljG6^vrw$C8;vzWen;S$By88|?htgCOF}TT!Ay)pw(Jl*<jAcg zB#e0+{Y4oigovNZ)8`hwJ~lhP^We@Mw08J}OZzeXQp<Yx7t+IrJFwNQqYQg)y<a{1 z#C*x#;PAzzkzF6{>9d>&o<8zwvg_Q75&VZEx*j=Qy<h1X>wlU((8QHiDm-bFu7<7- zL{Xo`va@4y-am7c3oxFgFxvZzg4z<zN3Cn(ObS^-3-{f2ZI6`t#{VV77j`vs7Zsk4 zKH3}a;(fIDYXeogf-QLY7+2iO_Sk6ef}E=LJ>|M0=jSGla=$aOTdmx-XvU)x8Z1(5 zR)d)DVtXooRCwOHn(2#wW3=r-3_DOS=O?wR>sRuV1FhUTMmFv<Q4gv*-n%f^RrBea z$GFtJjAz99Zr$5izg`H0^IxHn%TdUJ&D>RmwvmX$5{hP)w@@8g?#{p4uFhI^^S_k# z#O0soPsJGhKSp@0d=T-ksgqp4MP$40{H)A=_NUNGavF9!E6N?tD*J1sg#F&XTY%4m z;J$LFRa0@$DkP#-rKBgT(v#IGMJXAY=hHP?GLlqkjY?(vHZ%19{}B$@_f_q$`)^^* R*(RePkUT@7zLza){sX>SuRs6* literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/Y/tile-3.png b/exercises/inputs/3_files_and_commands/Y/tile-3.png new file mode 100644 index 0000000000000000000000000000000000000000..f70ac8f58f8b8c3c1a12dc638f1459f4dbc995cd GIT binary patch literal 1242 zcmbu9YfPI}7{^bo76m#+)D2hImJqf?WW0rKEe+0qEtd?mdeX+v|INpY~i?&<1 zye39BwtZk5Eb5{_227xW$r7MMqK=`4;)Fp8l(J2GSq2+rfaUV{?P8)|{GdC@|2*gU zo&3)&C(p;(hf;-s+X4w8!t^wGE+ITVr^u(dp70v$tXz0fla!f6$k%6r){36;V_j}) zGU*r&cXP>3by{vFA;w*VRDDQ@k3&^1LJSlk9-0tYJt14QpZ4S=auaLW8A=5q5R0+8 z3a;^Z7#c!pDZ;`qKab0op-^CB0|5b;oJ36xcJIc@3i|t@QXw=HZZ|GogiMC@b@2JP zaRUYewr|JcBD%VelY^ij+`5I@TExcU`gN3)V9OTF&7rv&aye`^R97P^3d_sr>qB87 zHgAT@g@y)5r5G83UXO?fc)c*2k(GtOK+MkK)G5Toz~{rYYtU%W)P&?@2n3jzKxHL* zdr?q;kPtYXxNrdy3D(wNwW6W|;o(?VKxZd1GvRQ6rtxB6K{odeytfag%K4$e84FzU z43m<g<JdV)3FLrzI=~OLY55!^X^)gLRCd4*k7<)Mgz$Gh(l<(JJ|R!krpuF*@7wN8 zXmXV~VTv5(&n;mi`=fsk4-E~j?{4v43R0VWuOD3<>xrDutoP1LO`T;1hgI<_f~fi# zmDMd=8Z9%jmQ~L_%fN;)gV8$Zmv>3>q)Nsu+%*20k&Qh0u+Hvy*U}`B9u9E}PhV>J zXi;$R;c2_$POCAsoJvqxUBcnfXd~P0^gM4F_`@h?v|rdqM1_4y#wFY{{;ZMxts${- zQz=#1{3eIn0~Q729pii>D>76vTHRr5%XcrlG}Y!cv6F@qjMiDMnh{N1xou)s4JPKk zqiEVLN^JYp#16)vNQwBKUTE4gFZ}%GtYzTGZdsosuf5mAIt|Ad^U{~YbHbZ<J$Cwb zv1(e>*Vbra#|=7$`Xt^{Cty5x?6mGV&1h?|z5mKd6T58CGSvBa&tAa}kKOK2e>N#P z?kjXI3EuM9?2fxvd-hA}k9Vp~><&X2bKm>Mv`zHhSgU1V{=xdWjWPOOmdYktYkw7d z_Lqo}FpB=RipLiO|L?)sS02Os&%Ifn_;Jtj*K(t0{>zPM*Hz(HgOOdax(8eRzg4fu z)2oZL`Vyv`<R|~Ml*hp+KRi;TFP5n*in&1ID6u4llElP`m13!EuSB*_8coH?D5~s- h1b;30+i;XQQu59R|8Ce;U!B4kNV?*Xyd#;e`4j$o5b6K` literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/Z/image_tiling.json b/exercises/inputs/3_files_and_commands/Z/image_tiling.json new file mode 100644 index 0000000..83619aa --- /dev/null +++ b/exercises/inputs/3_files_and_commands/Z/image_tiling.json @@ -0,0 +1,140 @@ +{ + "name": "Image tiling", + "fws": [ + { + "fw_id": 1, + "name": "Render an image from a character", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["character"], + "outputs": ["image"], + "command_spec": { + "command": [ + "convert", "-size", "800x800", + "-background", "white", + "-pointsize", "800", + "-fill", "blue", + "-gravity", "Center", + "-trim" + ], + "character": { + "binding": { + "prefix": "caption", + "separator": ":" + }, + "source": { + "type": "data", + "value": "Z" + } + }, + "image": { + "target": { + "type": "path", + "value": "/tmp/letter.png" + } + } + } + } + ] + } + }, + { + "fw_id": 2, + "name": "Tile the image into four tiles", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["image", "tiled image"], + "command_spec": { + "command": [ + "convert", + "-crop", "2x2@" + ], + "image": { + "source": "image" + }, + "tiled image": { + "source": { + "type": "data", + "value": "/tmp/tile.png" + } + } + } + } + ] + } + }, + { + "fw_id": 3, + "name": "Rotate one tile 90 degrees clockwise", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["rotation angle", "piece 2"], + "outputs": ["top left"], + "command_spec": { + "command": ["convert", "-rotate"], + "rotation angle": { + "source": { + "type": "data", + "value": 90 + } + }, + "top left": { + "target": { + "type": "path", + "value": "/tmp/piece-2.png" + } + }, + "piece 2": { + "source": "piece 2" + } + } + } + ], + "piece 2": { + "type": "path", + "value": "/tmp/tile-0.png" + } + } + }, + { + "fw_id": 4, + "name": "Flip another tile vertically", + "spec": { + "_tasks": [ + { + "_fw_name": "CommandLineTask", + "inputs": ["piece 1"], + "outputs": ["bottom left"], + "command_spec": { + "command": ["convert", "-flip"], + "bottom left": { + "target": { + "type": "path", + "value": "/tmp/piece-1.png" + } + }, + "piece 1": { + "source": "piece 1" + } + } + } + ], + "piece 1": { + "type": "path", + "value": "/tmp/tile-2.png" + } + } + } + ], + "links": { + "1": [2], + "2": [3, 4] + }, + "metadata": {} +} diff --git a/exercises/inputs/3_files_and_commands/Z/letter.png b/exercises/inputs/3_files_and_commands/Z/letter.png new file mode 100644 index 0000000000000000000000000000000000000000..7fd66c8f17df7d7da7aa2ac29b60bcaf22ad26d9 GIT binary patch literal 5201 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/Z/piece-1.png b/exercises/inputs/3_files_and_commands/Z/piece-1.png new file mode 100644 index 0000000000000000000000000000000000000000..1117efc307d00cd03cb46037c7ba4dbb5411c4c8 GIT binary patch literal 2933 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 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/Z/piece-2.png b/exercises/inputs/3_files_and_commands/Z/piece-2.png new file mode 100644 index 0000000000000000000000000000000000000000..4054ecbd9da588c7558e5e6ed827d0b3438b1046 GIT binary patch literal 1261 zcmds$?@wD*7{|}OrA%mGBf!8Sc(c_JhK$1856D1D_|eNYHlR)+vje&f2!VEMH-QF+ zWG~P-RxgPVCB|TrCWf%GQK6W+g=MG=rj#tjAuMyGSg?p2P!Q<XTi@s#{{c^OzR&Y~ z&ht%9o}Bak$^6`)Kye@;B#4z~6%s;8`26t;0$wYHN;4n)DrCoHg!En)ZI%i7n$i~L zW|E!<FS+=FQOOIB6VkAUkfy7I{K=!HUkSM+C1k#okkk%BA~c<Y1xI+F_~bD~Hh?Ej zaQ{BkY7l~s4tTvda|SCb*tZW;Q`o*8y}hWf$HoRSGvRU}Dhk8H5DL-OhT>u@FC#u4 zlamMvLU%W`TBN7L=|p5ChK3*z;Mz4P6nORwv9Wmg5F!ywCe+qqeH|$&n4Lv<IBYi1 zG+J74;slnKAdz5v90397>Oy5D*4A*~0764ywSuD1+>EU)<mJKb2E$-%4BNJ$vlA*6 zJRT$`V`c^+A+T7`*oe(d<m6ys0WmQc8G*k)+S{R2A~+akGwSLflR+%Ty?gNU1IOX{ zbL`y<hXazf7xR4MEkBx@MOuW>a=r*q=j3R4Hpl0Kr0U?07kyA8FXkcfHONWM_toh> zcv&N>AVk3Yz55i0iwU8d*({l&?veY^n}u%_L}r!U*?DW%2bA{IXjjMXJ&Mr~op(aB z<Bof=sCw-4+os!>-MvY>{<Xxqr=itjwo<<udx<uY#O*d@&;dpxFA@XilZ?DTUg)^E z|Ji{!$nIo4EwrTOr+H;Tld)!MdVipyPi4~QQe0nkzn-PI)nisu7*q9opZ+LcxL=-6 zFt^I>qm-wUmP8+!ohfQE-o3Rb6Uyx$Q8V;HtMQ9(fBrPkpxeBvS5RF3XX42ObBNsT z+Q0a=P@bxPkk(Duxx|6?aE6UYwDyNHRf{+Erzx)I^rai|8FtIU-2vgjFm~|5M4Fkf z{myBT$e`P3)tB=((m2v?64o<39nUkor$0||G3gDz#e8yIl2$*jENL=U{4iZ4GAx&m z+bo1_SRb){Mc5mU2j+G%E;pxFQ{3{RO@D#n(qH{LHiB_IjrBNbNu$@k8dj0Pee-dn z!@^h^9V?7$>K)G#Epg?JM?^<)@8(<k`EG~Wvqnp{isP)pPJRSm>aS3o*Q*tL=<j;n zIlA)QsT~u(_ZpzfeoLn+)99+ywWMTf$n*;jU-7}SWx8{zs*C6NK$4|NhZ3ZR5|Wb? vNrzKkOG%YV<E6>G1`Al<|M<sHqdr@8zW%=rSCoIO@&>|Y=V$d~mNx$dgUAj9 literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/Z/tile-0.png b/exercises/inputs/3_files_and_commands/Z/tile-0.png new file mode 100644 index 0000000000000000000000000000000000000000..050e08f8a07012f655755c96031a8cb25753139f GIT binary patch literal 1083 zcmbV}eN2;A6vl6X%8)=~gg|g3O@<?ZVM>)%IxH!nrJ(hr>p&JQ9~IFMDY11>mp3rN z93x?7qDTgstVY>~X<-{9bnq@A0f$7kW??0EP~93WcC_+kg%^2tyZ`pbvSc?o_qosS zoO5$??nj3Y7Q}2#+DZtCDOBZasJaQ^rMwhQPhI@DIw}#>a<!b0{)^EY6@2P>MomE; zu}-}_PmNHo(x?eJ{~94pErhI7)Z``PoQRMo<%CGP2uY~xu^-8yeMyH8XcYh^CqW1v zK7_#lrxVM|NK3=!CQ3_j=@Q1q5D|g-c_bx);~<x#p#gn;aJdj0i`7-^+6A2sSFhsk zU2NF`pAX5&*w}zl35LPI0OsbfZ5x6?h{e$B(bI!__YfJ0g#`$Oc<};7MQCou&=7b$ zY~POO&ykgdQ>S3Dz~Mkt6rMgsN(v4gLTf8VMi3STj|cJbSX)DOHfn3p+l%RGL`P$3 z38|^jYSG?~(NTnl<Iy7|CPF5I(TLl(F*Adh7_6)yJslk#7#|0pj~zRZmj|;M{rwOK zP*#SnE_7d<sSJ&`a(_WSY30A7q9)3qR2r$;X~dJ_sq%>stW%YSV5mSvloK_w5PY{z zUQI~2@bCCmySJ2H^>bmqT-$Je;lASR6<%D6<4(*{SW9F?eSN*a@3-TONFQ+}S8-D_ z=<A7JkpvuGTj$%YpRm8KtlqLon2~v(y3DYC{ugIAJNN&PD|h`?=ZA?r`oRBMs2S4; zjvh-d$yjYxWL>x3yx#YDaf!+O>41aT?MoXne9c<8H?$`Ac$>d_Hg0y%ynkn~eX!W% z{;tjMVqdiz9$Sn2u902~_l!c8!bYJz@ZhsH|C`4gOhKAG;O+Oaf25`j1w3C+c-+BM zPbq`yYhQWT<pi3pR0NNI>18KNESyzG;o@qW|NA2jMq*F|XW6$V7-N09J)on;=4B%V zH@M_|R$A53=6_FGrVFsuKi%MT!#xt4(e0VuFkj<zf*)&s3!YTz-0Wb$!p$`%UUm)` za`wG$t8w3X->l|j%*X!jHSr!>mD}TcFx<(wFFZc?C&xAoUtqq;wQ!p`CA+!t+=R<c zYrr|W^h7ed_`wfmnUJN!j4~;Xn)DTQrqhO6@{Vh?_jd|+hTw?`Q<YSIwu%Z7i!vn{ zB1wigQ=7S0x+hyI5~Yj8bdL=$Ec!>o8N-RwC(Zxf(5PE{7W%_N#ld`QUU~Chr$iG+ literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/Z/tile-1.png b/exercises/inputs/3_files_and_commands/Z/tile-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f3eb2c620fbf08bc5fb6ef123aa8d4fe9d153ab8 GIT binary patch literal 3062 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 QaRK7y<mFi7u<yiw0FNIsl>h($ literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/Z/tile-2.png b/exercises/inputs/3_files_and_commands/Z/tile-2.png new file mode 100644 index 0000000000000000000000000000000000000000..9835356c38c2318a05a322d030c02ab1b0f78935 GIT binary patch literal 2791 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 R7?uVQE{?7nO6>O}{RchI-v$5x literal 0 HcmV?d00001 diff --git a/exercises/inputs/3_files_and_commands/Z/tile-3.png b/exercises/inputs/3_files_and_commands/Z/tile-3.png new file mode 100644 index 0000000000000000000000000000000000000000..a21d6f61b2d12517c0d1cf0b92a4c5b1f775776b GIT binary patch literal 1275 zcmdUvZA_C_7={m2K87G_$RIcb21UYTmImZ|3#6s32(^r5t5FpBns!oB(ebWB(6Eh# zB`kobOgd8CNJelY0p1M?6EzHI0unMiTJnNK7$BvgXsdwSd+Wdb*suNCN$%%<?kjmt zPEJnFS4T2MULO7)gb*)@Sdhg!Lx@v|JBRJg+?Co`+g6m4kwQpE?e@)F7dAVc%MzuM z+oNwRvLPr>oRvYyr(uLtRuQt!qRItA&hrRaI!Q>vH9~w#ZuH2K*g5|rhqHx*z}Xr7 z{a{yhHKbC!e2I_{SS)aN$AbrGX+cpDqNDNrId<>H%nY2IK-0K%31Tq<1F^geS6Aru zXllZV6WH3qfdhE<4Bp<DnnFhhC<>{m*xbaPJy=|Xiwgz^QC|<a91#&%TZ5-33<k8d zL8U@c64uw@>x=n$a5%Vg2Q@Xw$^w^*)m3<SU}6HdZb6~I!GrMe!R#!0dQeq`^mGIV zV`T+yZWtX!b2IYu5fufy9Xoe|VbIx$@^T1;2nfKFCm0?^V<V0o!~Xqv`V?MXn4Cm= zJCsV?zmKa|anUx=@3`Jm=^_DVm*-(C8(veUrJZBhbyo32q6+xT0ZYVk783C*r41|I zali{DDMf^Ef?laJJ5ElB^EVPfN_LsiJo&!rip)pwsK!<5JP?ywIkQq6{L98>>%g{_ zq4I^LqZREjm$x(*{)oRh?$<8w-SIH4XMEje3|HP8v>8K{r`}V4Tt`#sYDELxl^io- zdYI!scXoO_r|EG<X4jWt)I_2w@uu#$`MQkpv}kGvOnt3={9#k?Ps#id(=_8Z7ZCR+ zbM0|J!jy)s@x~mMD7?S67MeD+x?f+|`a_kE%G5b^beXpA?UBUEy}onJZ%(hl+L%ex zT&ifayH!a2Wz=hRYvx=T^LdRqSHgU+Hy@WUSK7>S8PjF^G2F6FR$lx@#TIvqxD;JX z#|o)WjP+VwuURN#lIKN+2+AJV>BgldyiIDYPGpXkF?q`(!<jOvrrQuojcMrL1(e<# zDPwAE4dKeU0`;Lf`_g%}q{03}a_ETK#O#{u`&MZYTbYWF#>Cdw-|hZDKz(Nn(dx$T zQGOfSEqa6Pi%^TnZmSBnh}0>KhP^>jjV?H>_C}J*Iy4-z@Bh=pmNH|(c185UMcQqs zexI`XKcAl6F)*(9=R$tumcsF1ONAen=H-@@o>mr<qo%v9vn=E~V190CK|-FYfHlJB zMa4$)Vk7xc*->!`(eVj9-dj9ATX%3IhyF2eR+)dgkoxz5ikwx)Z$>1-Ou_Bclb8Pn Di`aG* literal 0 HcmV?d00001 -- GitLab