Created
June 18, 2015 19:50
-
-
Save jamie/6d0a7b9a390678639501 to your computer and use it in GitHub Desktop.
Easy custom problem specification for bonus campaign
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- The function get_name() should return a single string that is the name of the puzzle. | |
-- | |
function get_name() | |
return "EVEN / ODD" | |
end | |
-- The function get_description() should return an array of strings, where each string is | |
-- a line of description for the puzzle. The text you return from get_description() will | |
-- be automatically formatted and wrapped to fit inside the puzzle information box. | |
-- | |
function get_description() | |
return { "READ A NUMBER FROM IN.A", "IF THE NUMBER IS EVEN, WRITE IT TO OUT.A", "IF THE NUMBER IS ODD, WRITE IT TO OUT.B" } | |
end | |
-- The function get_streams() should return an array of streams. Each stream is described | |
-- by an array with exactly four values: a STREAM_* value, a name, a position, and an array | |
-- of integer values between -999 and 999 inclusive. | |
-- | |
-- STREAM_INPUT: An input stream containing up to 39 numerical values. | |
-- STREAM_OUTPUT: An output stream containing up to 39 numerical values. | |
-- STREAM_IMAGE: An image output stream, containing exactly 30*18 numerical values between 0 | |
-- and 4, representing the full set of "pixels" for the target image. | |
-- | |
-- NOTE: Arrays in Lua are implemented as tables (dictionaries) with integer keys that start | |
-- at 1 by convention. The sample code below creates an input array of 39 random values | |
-- and an output array that doubles all of the input values. | |
-- | |
-- NOTE: To generate random values you should use math.random(). However, you SHOULD NOT seed | |
-- the random number generator with a new seed value, as that is how TIS-100 ensures that | |
-- the first test run is consistent for all users, and thus something that allows for the | |
-- comparison of cycle scores. | |
-- | |
-- NOTE: Position values for streams should be between 0 and 3, which correspond to the far | |
-- left and far right of the TIS-100 segment grid. Input streams will be automatically | |
-- placed on the top, while output and image streams will be placed on the bottom. | |
-- | |
function get_streams() | |
input = {} | |
evens = {} | |
odds = {} | |
for i = 1,10 do | |
input[i] = math.random(10, 99) | |
if input[i] % 2 == 0 then | |
table.insert(evens, input[i]) | |
else | |
table.insert(odds, input[i]) | |
end | |
end | |
for i = 11,29 do | |
input[i] = math.random(-99, 99) | |
if input[i] % 2 == 0 then | |
table.insert(evens, input[i]) | |
else | |
table.insert(odds, input[i]) | |
end | |
end | |
input[30] = 0 | |
table.insert(evens, 0) | |
for i = 31,39 do | |
input[i] = 800 + math.random(-199, 199) | |
if input[i] % 2 == 0 then | |
table.insert(evens, input[i]) | |
else | |
table.insert(odds, input[i]) | |
end | |
end | |
return { | |
{ STREAM_INPUT, "IN.A", 1, input }, | |
{ STREAM_OUTPUT, "OUT.A", 1, evens }, | |
{ STREAM_OUTPUT, "OUT.B", 2, odds }, | |
} | |
end | |
-- The function get_layout() should return an array of exactly 12 TILE_* values, which | |
-- describe the layout and type of tiles found in the puzzle. | |
-- | |
-- TILE_COMPUTE: A basic execution node (node type T21). | |
-- TILE_MEMORY: A stack memory node (node type T30). | |
-- TILE_DAMAGED: A damaged execution node, which acts as an obstacle. | |
-- | |
function get_layout() | |
return { | |
TILE_COMPUTE, TILE_COMPUTE, TILE_COMPUTE, TILE_COMPUTE, | |
TILE_COMPUTE, TILE_COMPUTE, TILE_COMPUTE, TILE_COMPUTE, | |
TILE_COMPUTE, TILE_COMPUTE, TILE_COMPUTE, TILE_COMPUTE, | |
} | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment