Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- The function get_name() should return a single string that is the name of the puzzle.
- --
- function get_name()
- return "NUMBER BASE CONVERTER"
- 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 BASE 10 NUMBER FROM IN.A",
- "READ BASE FROM IN.B",
- "CONVERT NUMBER TO PROVIDED BASE",
- "WRITE CONVERTED NUMBER TO OUT"}
- 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_vals = {}
- input_bases = {}
- output = {}
- for i = 1,39 do
- input_bases[i] = math.random(2, 10)
- -- max val below based on highest displayable in this number base
- input_vals[i] = math.random(1, (input_bases[i] ^ 3) - 1)
- -- convert random number to provided base
- out_string = ""
- num = input_vals[i]
- base = input_bases[i]
- while num ~= 0 do
- remainder = tostring(num % base)
- num = math.floor(num / base)
- out_string = remainder .. out_string
- end
- output[i] = tonumber(out_string)
- end
- return {
- { STREAM_INPUT, "IN.A", 1, input_vals },
- { STREAM_INPUT, "IN.B", 2, input_bases },
- { STREAM_OUTPUT, "OUT", 2, output },
- }
- 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement