[
  {
    "number": 1,
    "name": "Mail Room",
    "instructions": "Drag commands into this area to build a program.\n\nYour program should tell your worker to grab each thing from the INBOX, and drop it into the OUTBOX.",
    "commands": [ "INBOX", "OUTBOX" ],
    "examples": [
      {
        "inbox": [ 1, 9, 4 ],
        "outbox": [ 1, 9, 4 ]
      },
      {
        "inbox": [ 4, 3, 3 ],
        "outbox": [ 4, 3, 3 ]
      }
    ],
    "challenge": {
      "size": 6,
      "speed": 6
    }
  },
  {
    "number": 2,
    "name": "Busy Mail Room",
    "instructions": "Grab each thing from the INBOX, and drop each one into the OUTBOX.\n\nYou got a new command! You can drag JUMP's arrow to jump to different lines within your program.",
    "commands": [ "INBOX", "OUTBOX", "JUMP" ],
    "examples": [
      {
        "inbox": [ "B", "O", "O", "T", "S", "E", "Q", "U", "E", "N", "C", "E" ],
        "outbox": [ "B", "O", "O", "T", "S", "E", "Q", "U", "E", "N", "C", "E" ]
      }
    ],
    "challenge": {
      "size": 3,
      "speed": 25
    }
  },
  {
    "number": 3,
    "name": "Copy Floor",
    "instructions": "Ignore the INBOX for now, and just send the following 3 letters to the OUTBOX:\n\nB U G\n\nThe Facilities Management staff has placed some items over there on the carpet for you. If only there were a way you could pick them up...",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "JUMP" ],
    "floor": {
      "columns": 3,
      "rows": 2,
      "tiles": [ "U", "J", "X", "G", "B", "E" ]
    },
    "examples": [
      {
        "inbox": [ -99, -99, -99, -99 ],
        "outbox": [ "B", "U", "G" ]
      }
    ],
    "challenge": {
      "size": 6,
      "speed": 6
    }
  },
  {
    "number": 4,
    "name": "Scrambler Handler",
    "instructions": "Grab the first TWO things from the INBOX and drop them into the OUTBOX in the reverse order. Repeat until the INBOX is empty.\n\nYou got a new command! Feel free to COPYTO wherever you like on the carpet. It will be cleaned later.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "JUMP" ],
    "floor": {
      "columns": 3,
      "rows": 1
    },
    "examples": [
      {
        "inbox": [ 4, 8, "A", "E", 2, 5 ],
        "outbox": [ 8, 4, "E", "A", 5, 2 ]
      }
    ],
    "challenge": {
      "size": 7,
      "speed": 21
    }
  },
  {
    "number": 5,
    "name": "Coffee Time",
    "cutscene": true
  },
  {
    "number": 6,
    "name": "Rainy Summer",
    "instructions": "For each two things in the INBOX, add them together, and put the result in the OUTBOX.\n\nYou got a new command! It ADDs the contents of a tile on the floor to whatever value you're currently holding.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "JUMP" ],
    "floor": {
      "columns": 3,
      "rows": 1
    },
    "examples": [
      {
        "inbox": [ 3, 3, 1, 4, -3, 5, 0, -1 ],
        "outbox": [ 6, 5, 2, -1 ]
      }
    ],
    "challenge": {
      "size": 6,
      "speed": 24
    }
  },
  {
    "number": 7,
    "name": "Zero Exterminator",
    "instructions": "Send all things that ARE NOT ZERO to the OUTBOX.\n\nYou got a new command! It jumps ONLY if the value you are holding is ZERO. Otherwise it continues to the next line.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "JUMP", "JUMPZ" ],
    "floor": {
      "columns": 3,
      "rows": 3
    },
    "examples": [
      {
        "inbox": [ 8, 0, -4, "A", 0, 0, 9, 0 ],
        "outbox": [ 8, -4, "A", 9 ]
      }
    ],
    "challenge": {
      "size": 4,
      "speed": 23
    }
  },
  {
    "number": 8,
    "name": "Tripler Room",
    "instructions": "For each thing in the INBOX, TRIPLE it. And OUTBOX the result.\n\nSelf improvement tip: Where are we going with this? Please leave the high level decisions to management.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "JUMP" ],
    "floor": {
      "columns": 3,
      "rows": 1
    },
    "examples": [
      {
        "inbox": [ 7, -5, 5, 0 ],
        "outbox": [ 21, -15, 15, 0 ]
      }
    ],
    "challenge": {
      "size": 6,
      "speed": 24
    }
  },
  {
    "number": 9,
    "name": "Zero Preservation Initiative",
    "instructions": "Send only the ZEROs to the OUTBOX.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "JUMP", "JUMPZ" ],
    "floor": {
      "columns": 3,
      "rows": 3
    },
    "examples": [
      {
        "inbox": [ 2, 0, 1, "B", 0, 0, 6, 0 ],
        "outbox": [ 0, 0, 0, 0 ]
      }
    ],
    "challenge": {
      "size": 5,
      "speed": 25
    }
  },
  {
    "number": 10,
    "name": "Octoplier Suite",
    "instructions": "For each thing in the INBOX, multiply it by 8, and put the result in the OUTBOX.\n\nUsing a bunch of ADD commands is easy, but WASTEFUL! Can you do it using only 3 ADD commands? Management is watching.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "JUMP" ],
    "floor": {
      "columns": 5,
      "rows": 1
    },
    "examples": [
      {
        "inbox": [ 2, -1, 3, 0 ],
        "outbox": [ 16, -8, 24, 0 ]
      }
    ],
    "challenge": {
      "size": 9,
      "speed": 36
    }
  },
  {
    "number": 11,
    "name": "Sub Hallway",
    "instructions": "For each two things in the INBOX, first subtract the 1st from the 2nd and put the result in the OUTBOX. AND THEN, subtract the 2nd from the 1st and put the result in the OUTBOX. Repeat.\n\nYou got a new command! SUBtracts the contents of a tile on the floor FROM whatever value you're currently holding.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "JUMP", "JUMPZ" ],
    "floor": {
      "columns": 3,
      "rows": 1
    },
    "examples": [
      {
        "inbox": [ 4, 5, 8, 4, -9, -9, 5, -3 ],
        "outbox": [ 1, -1, -4, 4, 0, 0, -8, 8 ]
      }
    ],
    "challenge": {
      "size": 10,
      "speed": 40
    }
  },
  {
    "number": 12,
    "name": "Tetracontiplier",
    "instructions": "For each thing in the INBOX, multiply it by 40, and put the result in the OUTBOX.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "JUMP" ],
    "floor": {
      "columns": 5,
      "rows": 1
    },
    "examples": [
      {
        "inbox": [ 2, -6, 5, 0 ],
        "outbox": [ 80, -240, 200, 0 ]
      }
    ],
    "challenge": {
      "size": 14,
      "speed": 56
    }
  },
  {
    "number": 13,
    "name": "Equalization Room",
    "instructions": "Get two things from the INBOX. If they are EQUAL, put ONE of them in the OUTBOX. Discard non-equal pairs. Repeat!\n\nYou got... COMMENTS! You can use them, if you like, to mark sections of your program.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "JUMP", "JUMPZ" ],
    "comments": true,
    "floor": {
      "columns": 1,
      "rows": 3
    },
    "examples": [
      {
        "inbox": [ 6, 1, 8, 8, 5, 0, -4, -4 ],
        "outbox": [ 8, -4 ]
      }
    ],
    "challenge": {
      "size": 9,
      "speed": 27
    }
  },
  {
    "number": 14,
    "name": "Maximization Room",
    "instructions": "Grab TWO things from the INBOX, and put only the BIGGER of the two in the OUTBOX. If they are equal, just pick either one. Repeat!\n\nYou got a new command! Jumps only if the thing you're holding is negative. (Less than zero.) Otherwise continues to the next line.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "JUMP", "JUMPZ", "JUMPN" ],
    "comments": true,
    "floor": {
      "columns": 3,
      "rows": 1
    },
    "examples": [
      {
        "inbox": [ 4, 9, -8, -4, 9, 9, -6, -3 ],
        "outbox": [ 9, -4, 9, -3 ]
      }
    ],
    "challenge": {
      "size": 10,
      "speed": 34
    }
  },
  {
    "number": 15,
    "name": "Employee Morale Insertion",
    "cutscene": true
  },
  {
    "number": 16,
    "name": "Absolute Positivity",
    "instructions": "Send each thing from the INBOX to the OUTBOX, BUT, if a number is negative, first remove its negative sign.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "JUMP", "JUMPZ", "JUMPN" ],
    "comments": true,
    "floor": {
      "columns": 1,
      "rows": 3
    },
    "examples": [
      {
        "inbox": [ 2, -6, -5, 0, -3, -7, 9 ],
        "outbox": [ 2, 6, 5, 0, 3, 7, 9 ]
      }
    ],
    "challenge": {
      "size": 8,
      "speed": 36
    }
  },
  {
    "number": 17,
    "name": "Exclusive Lounge",
    "instructions": "For each TWO things in the INBOX:\n\nSend a 0 to the OUTBOX if they have the same sign. (Both positive or both negative.)\n\nSend a 1 to the OUTBOX if their signs are different. Repeat until the INBOX is empty.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "JUMP", "JUMPZ", "JUMPN" ],
    "comments": true,
    "floor": {
      "columns": 2,
      "rows": 3,
      "tiles": {
        "4": 0,
        "5": 1
      }
    },
    "examples": [
      {
        "inbox": [ 3, 5, -2, -6, 1, -9, -8, 7 ],
        "outbox": [ 0, 0, 1, 1 ]
      }
    ],
    "challenge": {
      "size": 12,
      "speed": 28
    }
  },
  {
    "number": 18,
    "name": "Sabbatical Beach Paradise",
    "cutscene": true
  },
  {
    "number": 19,
    "name": "Countdown",
    "instructions": "For each number in the INBOX, send that number to the OUTBOX, followed by all numbers down to (or up to) zero. It's a countdown!\n\nYou got new commands! They add ONE or subtract ONE from an item on the floor. The result is given back to you, and for your convenience, also written right back to the floor. BUMP!",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "BUMPUP", "BUMPDN", "JUMP", "JUMPZ", "JUMPN" ],
    "comments": true,
    "floor": {
      "columns": 5,
      "rows": 2
    },
    "examples": [
      {
        "inbox": [ 8, -5, 0, 3 ],
        "outbox": [ 8, 7, 6, 5, 4, 3, 2, 1, 0, -5, -4, -3, -2, -1, 0, 0, 3, 2, 1, 0 ]
      }
    ],
    "challenge": {
      "size": 10,
      "speed": 82
    }
  },
  {
    "number": 20,
    "name": "Multiplication Workshop",
    "instructions": "For each two things in the INBOX, multiply them, and OUTBOX the result. Don't worry about negative numbers for now.\n\nYou got... LABELS! They can help you remember the purpose of each tile on the floor. Just tap any tile on the floor to edit.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "BUMPUP", "BUMPDN", "JUMP", "JUMPZ", "JUMPN" ],
    "comments": true,
    "labels": true,
    "floor": {
      "columns": 5,
      "rows": 2,
      "tiles": {
        "9": 0
      }
    },
    "examples": [
      {
        "inbox": [ 9, 4, 1, 7, 7, 0, 0, 8, 4, 2 ],
        "outbox": [ 36, 7, 0, 0, 8 ]
      }
    ],
    "challenge": {
      "size": 15,
      "speed": 109
    }
  },
  {
    "number": 21,
    "name": "Zero Terminated Sum",
    "instructions": "The INBOX is filled with zero terminated strings! What's that? Ask me. Your Boss.\n\nAdd together all the numbers in each string. When you reach the end of a string (marked by a ZERO), put your sum in the OUTBOX. Reset and report for each string.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "BUMPUP", "BUMPDN", "JUMP", "JUMPZ", "JUMPN" ],
    "comments": true,
    "labels": true,
    "floor": {
      "columns": 3,
      "rows": 2,
      "tiles": {
        "5": 0
      }
    },
    "examples": [
      {
        "inbox": [ 7, 7, 0, 2, -9, 8, 0, 0, 0, 2, -9, 1, 2, -8, 1, 0 ],
        "outbox": [ 14, 1, 0, 0, -11 ]
      }
    ],
    "challenge": {
      "size": 10,
      "speed": 72
    }
  },
  {
    "number": 22,
    "name": "Fibonacci Visitor",
    "instructions": "For each thing in the INBOX, send to the OUTBOX the full Fibonacci Sequence up to, but not exceeding that value. For example, if INBOX is 10, OUTBOX should be 1 1 2 3 5 8. What's a Fibonacci Sequence? Ask your boss, or a friendly search box.\n\n1 1 2 3 5 8 13 21 34 55 89 ...",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "BUMPUP", "BUMPDN", "JUMP", "JUMPZ", "JUMPN" ],
    "comments": true,
    "labels": true,
    "floor": {
      "columns": 5,
      "rows": 2,
      "tiles": {
        "9": 0
      }
    },
    "examples": [
      {
        "inbox": [ 5, 20 ],
        "outbox": [ 1, 1, 2, 3, 5, 1, 1, 2, 3, 5, 8, 13 ]
      }
    ],
    "challenge": {
      "size": 19,
      "speed": 156
    }
  },
  {
    "number": 23,
    "name": "The Littlest Number",
    "instructions": "For each zero terminated string in the INBOX, send to the OUTBOX only the SMALLEST number you've seen in that string. You will never be given an empty string. Reset and repeat for each string.\n\nWhat's a \"zero terminated string\"? Go ask your boss on the previous floor!",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "BUMPUP", "BUMPDN", "JUMP", "JUMPZ", "JUMPN" ],
    "comments": true,
    "labels": true,
    "floor": {
      "columns": 5,
      "rows": 2
    },
    "examples": [
      {
        "inbox": [ 8, 15, 2, 0, 19, 14, 8, 4, 0, 57, 47, 20, 44, 40, 0 ],
        "outbox": [ 2, 4, 20 ]
      }
    ],
    "challenge": {
      "size": 13,
      "speed": 75
    }
  },
  {
    "number": 24,
    "name": "Mod Module",
    "instructions": "For each two things in the INBOX, OUTBOX the remainder that would result if you had divided the first by the second. Don't worry, you don't actually have to divide. And don't worry about negative numbers for now.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "BUMPUP", "BUMPDN", "JUMP", "JUMPZ", "JUMPN" ],
    "comments": true,
    "labels": true,
    "floor": {
      "columns": 2,
      "rows": 5
    },
    "examples": [
      {
        "inbox": [ 5, 2, 6, 2, 4, 6, 0, 8 ],
        "outbox": [ 1, 0, 4, 0 ]
      }
    ],
    "challenge": {
      "size": 12,
      "speed": 57
    }
  },
  {
    "number": 25,
    "name": "Cumulative Countdown",
    "instructions": "For each thing in the INBOX, OUTBOX the sum of itself plus all numbers down to zero. For example, if INBOX is 3, OUTBOX should be 6, because 3+2+1 = 6.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "BUMPUP", "BUMPDN", "JUMP", "JUMPZ", "JUMPN" ],
    "comments": true,
    "labels": true,
    "floor": {
      "columns": 3,
      "rows": 2,
      "tiles": {
        "5": 0
      }
    },
    "examples": [
      {
        "inbox": [ 3, 3, 0, 8 ],
        "outbox": [ 6, 6, 0, 36 ]
      }
    ],
    "challenge": {
      "size": 12,
      "speed": 82
    }
  },
  {
    "number": 26,
    "name": "Small Divide",
    "instructions": "For each two things in the INBOX, how many times does the second fully fit into the first? Don't worry about negative numbers, divide by zero, or remainders.\n\nSelf improvement tip: This might be a good time to practice copying and pasting from a previous assignment!",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "BUMPUP", "BUMPDN", "JUMP", "JUMPZ", "JUMPN" ],
    "comments": true,
    "labels": true,
    "floor": {
      "columns": 2,
      "rows": 5,
      "tiles": {
        "9": 0
      }
    },
    "examples": [
      {
        "inbox": [ 9, 3, 7, 3, 3, 6, 0, 9 ],
        "outbox": [ 3, 2, 0, 0 ]
      }
    ],
    "challenge": {
      "size": 15,
      "speed": 76
    }
  },
  {
    "number": 27,
    "name": "Midnight Petroleum",
    "cutscene": true
  },
  {
    "number": 28,
    "name": "Three Sort",
    "instructions": "For each THREE THINGS in the INBOX, send them to the OUTBOX in order from smallest to largest.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "BUMPUP", "BUMPDN", "JUMP", "JUMPZ", "JUMPN" ],
    "comments": true,
    "labels": true,
    "floor": {
      "columns": 5,
      "rows": 2
    },
    "examples": [
      {
        "inbox": [ 8, 5, 2, 3, 5, 8, 6, -1, 3, 9, 6, -1 ],
        "outbox": [ 2, 5, 8, 3, 5, 8, -1, 3, 6, -1, 6, 9 ]
      }
    ],
    "challenge": {
      "size": 34,
      "speed": 78
    }
  },
  {
    "number": 29,
    "name": "Storage Floor",
    "instructions": "Imagine each thing in the INBOX is an address. And each address refers to a tile 0-9 on the floor. Your task: For each address in the INBOX, pick up the letter at that address and OUTBOX it.\n\nCongratulations! You can now access tiles on the floor INDIRECTLY! Observe this example to see how it works, compared to what you've been doing so far:",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "BUMPUP", "BUMPDN", "JUMP", "JUMPZ", "JUMPN" ],
    "dereferencing": true,
    "comments": true,
    "labels": true,
    "floor": {
      "columns": 5,
      "rows": 3,
      "tiles": [ "N", "K", "A", "E", "R", "D", "O", "L", "Y", "J", null, null, 8 ]
    },
    "examples": [
      {
        "inbox": [ 7, 3, 3, 8, 8 ],
        "outbox": [ "L", "E", "E", "Y", "Y" ]
      }
    ],
    "challenge": {
      "size": 5,
      "speed": 25
    }
  },
  {
    "number": 30,
    "name": "String Storage Floor",
    "instructions": "Each thing in the INBOX is an address of a tile on the floor. For each address provided in the INBOX, OUTBOX the requested item from the floor and ALL FOLLOWING items on the floor until you reach a ZERO. Repeat!",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "BUMPUP", "BUMPDN", "JUMP", "JUMPZ", "JUMPN" ],
    "dereferencing": true,
    "comments": true,
    "labels": true,
    "floor": {
      "columns": 5,
      "rows": 5,
      "tiles": [ "G", "E", "T", 0, "T", "H", 0, "T", "A", "R", 0, "A", "W", "A", "K", "E", 0, "I", "S", 0, "X", "X", "X", 0 ]
    },
    "examples": [
      {
        "inbox": [ 4, 15, 7, 0, 22, 17, 11, 20, 2, 13, 4, 17, 22 ],
        "outbox": [ "T", "H", "E", "T", "A", "R", "G", "E", "T", "X", "I", "S", "A", "W", "A", "K", "E", "X", "X", "X", "T", "A", "K", "E", "T", "H", "I", "S", "X" ]
      }
    ],
    "challenge": {
      "size": 7,
      "speed": 203
    }
  },
  {
    "number": 31,
    "name": "String Reverse",
    "instructions": "For each zero terminated string in the INBOX, reverse it and put the result in the OUTBOX. Repeat!",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "BUMPUP", "BUMPDN", "JUMP", "JUMPZ", "JUMPN" ],
    "dereferencing": true,
    "comments": true,
    "labels": true,
    "floor": {
      "columns": 5,
      "rows": 3,
      "tiles": {
        "14": 0
      }
    },
    "examples": [
      {
        "inbox": [ "T", "E", "A", 0, "M", "O", "R", "E", 0, "B", "U", "G", 0 ],
        "outbox": [ "A", "E", "T", "E", "R", "O", "M", "G", "U", "B" ]
      }
    ],
    "challenge": {
      "size": 11,
      "speed": 122
    }
  },
  {
    "number": 32,
    "name": "Inventory Report",
    "instructions": "For each thing in the INBOX, send to the OUTBOX the total number of matching items on the FLOOR.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "BUMPUP", "BUMPDN", "JUMP", "JUMPZ", "JUMPN" ],
    "dereferencing": true,
    "comments": true,
    "labels": true,
    "floor": {
      "columns": 5,
      "rows": 4,
      "tiles": [ "B", "A", "X", "B", "C", "X", "A", "B", "A", "X", "C", "B", "A", "B", 0 ]
    },
    "examples": [
      {
        "inbox": [ "X", "A", "C", "B" ],
        "outbox": [ 3, 4, 2, 5 ]
      }
    ],
    "challenge": {
      "size": 16,
      "speed": 393
    }
  },
  {
    "number": 33,
    "name": "Where's Carol?",
    "cutscene": true
  },
  {
    "number": 34,
    "name": "Vowel Incinerator",
    "instructions": "Send everything from the INBOX to the OUTBOX, except the vowels.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "BUMPUP", "BUMPDN", "JUMP", "JUMPZ", "JUMPN" ],
    "dereferencing": true,
    "comments": true,
    "labels": true,
    "floor": {
      "columns": 5,
      "rows": 2,
      "tiles": [ "A", "E", "I", "O", "U", 0 ]
    },
    "examples": [
      {
        "inbox": [ "C", "O", "D", "E", "U", "P", "L", "A", "K", "E" ],
        "outbox": [ "C", "D", "P", "L", "K" ]
      }
    ],
    "challenge": {
      "size": 13,
      "speed": 323
    }
  },
  {
    "number": 35,
    "name": "Duplicate Removal",
    "instructions": "Send everything from the INBOX to the OUTBOX, unless you've seen the same value before. Discard any duplicates.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "BUMPUP", "BUMPDN", "JUMP", "JUMPZ", "JUMPN" ],
    "dereferencing": true,
    "comments": true,
    "labels": true,
    "floor": {
      "columns": 5,
      "rows": 3,
      "tiles": {
        "14": 0
      }
    },
    "examples": [
      {
        "inbox": [ "A", "C", "E", "E", "B", "C", "C", "A", "D", "E" ],
        "outbox": [ "A", "C", "E", "B", "D" ]
      }
    ],
    "challenge": {
      "size": 17,
      "speed": 167
    }
  },
  {
    "number": 36,
    "name": "Alphabetizer",
    "instructions": "The INBOX contains exactly two words. Determine which word comes first, if you were to order them alphabetically, and send only that word to the OUTBOX.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "BUMPUP", "BUMPDN", "JUMP", "JUMPZ", "JUMPN" ],
    "dereferencing": true,
    "comments": true,
    "labels": true,
    "floor": {
      "columns": 5,
      "rows": 5,
      "tiles": {
        "23": 0,
        "24": 10
      }
    },
    "examples": [
      {
        "inbox": [ "U", "N", "I", "X", 0, "U", "N", "T", "I", "E", 0 ],
        "outbox": [ "U", "N", "I", "X" ],
        "desc": "first word shorter, first word"
      },
      {
        "inbox": [ "U", "N", "D", "O", 0, "U", "N", "C", "L", "E", 0],
        "outbox": [ "U", "N", "C", "L", "E" ],
        "desc": "first word shorter, second word"
      },
      {
        "inbox": [ "U", "N", "S", "E", "T", 0, "U", "N", "D", "O", 0 ],
        "outbox": [ "U", "N", "D", "O" ],
        "desc": "second word shorter, second word"
      },
      {
        "inbox": [ "U", "N", "D", "E", "R", 0, "U", "N", "S", "E", "T", 0 ],
        "outbox": [ "U", "N", "D", "E", "R" ],
        "desc": "same length, first word"
      },
      {
        "inbox": [ "U", "N", "I", "T", "E", 0, "U", "N", "I", "O", "N", 0 ],
        "outbox": [ "U", "N", "I", "O", "N" ],
        "desc": "same length, second word"
      },
      {
        "inbox": [ "U", "N", "C", "A", "P", 0, "U", "N", 0 ],
        "outbox": [ "U", "N" ],
        "desc": "first prefix, second word"
      },
      {
        "inbox": [ "U", "N", 0, "U", "N", "T", "I", "E", 0],
        "outbox": [ "U", "N" ],
        "desc": "second prefix, second word"
      },
      {
        "inbox": [ "D", "I", "R", "T", 0, "U", "N", "C", "A", "P", 0 ],
        "outbox": [ "D", "I", "R", "T" ],
        "desc": "diff first, first word"
      },
      {
        "inbox": [ "U", "N", "Z", "I", "P", 0, "D", "I", "R", "T", 0 ],
        "outbox": [ "D", "I", "R", "T" ],
        "desc": "diff first, second word"
      },
      {
        "inbox": [ "U", "N", "I", "T", "S", 0, "U", "N", "I", "T", 0 ],
        "outbox": [ "U", "N", "I", "T" ],
        "desc": "first long prefix, second word"
      },
      {
        "inbox": [ "U", "N", "D", "O", 0, "U", "N", "I", "T", 0 ],
        "outbox": [ "U", "N", "D", "O" ],
        "desc": "two short, first word"
      },
      {
        "inbox": [ "D", "I", "R", "T", 0, "U", "N", 0 ],
        "outbox": [ "D", "I", "R", "T"],
        "desc": "diff first + two short, first word"
      },
      {
        "inbox": [ "D", "I", "R", "T", 0, "D", "I", "R", "T", 0 ],
        "outbox": [ "D", "I", "R", "T"],
        "desc": "two short identical"
      },
      {
        "inbox": [ "U", "N", "C", "L", "E", 0, "U", "N", "C", "L", "E", 0 ],
        "outbox": [ "U", "N", "C", "L", "E"],
        "desc": "two long identical"
      },
      {
        "inbox": [ "U", "N", 0, "D", "I", "R", "T", 0 ],
        "outbox": [ "D", "I", "R", "T"],
        "desc": "prefix + diff first, second word"
      }
    ],
    "challenge": {
      "size": 39,
      "speed": 109
    }
  },
  {
    "number": 37,
    "name": "Scavenger Chain",
    "instructions": "Each pair on the floor contains:\n1. data\n2. the address of another one of the pairs\n\nA scrambled chain! Each thing in the INBOX is an address of one of the pairs. OUTBOX the data for that pair, and also the data in all the following pairs in the chain. The chain ends when you reach a negative address. Repeat until the INBOX is empty.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "BUMPUP", "BUMPDN", "JUMP", "JUMPZ", "JUMPN" ],
    "dereferencing": true,
    "comments": true,
    "labels": true,
    "floor": {
      "columns": 5,
      "rows": 5,
      "tiles": {
        "0": "E",
        "1": 13,
        "3": "C",
        "4": 23,
        "10": "P",
        "11": 20,
        "13": "S",
        "14": 3,
        "20": "E",
        "21": -1,
        "23": "A",
        "24": 10
      }
    },
    "examples": [
      {
        "inbox": [ 23, 0 ],
        "outbox": [ "A", "P", "E", "E", "S", "C", "A", "P", "E" ]
      },
      {
        "inbox": [ 0, 23 ],
        "outbox": [ "E", "S", "C", "A", "P", "E", "A", "P", "E" ]
      }
    ],
    "challenge": {
      "size": 8,
      "speed": 63
    }
  },
  {
    "number": 38,
    "name": "Digit Exploder",
    "instructions": "Grab each number from the INBOX, and send its digits to the OUTBOX. For example, 123 becomes 1, 2, 3.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "BUMPUP", "BUMPDN", "JUMP", "JUMPZ", "JUMPN" ],
    "dereferencing": true,
    "comments": true,
    "labels": true,
    "floor": {
      "columns": 3,
      "rows": 4,
      "tiles": {
        "9": 0,
        "10": 10,
        "11": 100
      }
    },
    "examples": [
      {
        "inbox": [ 705, 8, 60, 744 ],
        "outbox": [ 7, 0, 5, 8, 6, 0, 7, 4, 4 ]
      }
    ],
    "challenge": {
      "size": 30,
      "speed": 165
    }
  },
  {
    "number": 39,
    "name": "Re-Coordinator",
    "instructions": "Each number in the INBOX is an address of a tile on the floor. Send to the OUTBOX the coordinates of that tile, column first, row second.\n\nFor example, an address of 6 has coordinates 2, 1. You may ask your boss for more examples.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "BUMPUP", "BUMPDN", "JUMP", "JUMPZ", "JUMPN" ],
    "dereferencing": true,
    "comments": true,
    "labels": true,
    "floor": {
      "columns": 4,
      "rows": 4,
      "tiles": {
        "14": 0,
        "15": 4
      }
    },
    "examples": [
      {
        "inbox": [ 1, 5, 5, 5 ],
        "outbox": [ 1, 0, 1, 1, 1, 1, 1, 1 ]
      }
    ],
    "challenge": {
      "size": 14,
      "speed": 76
    }
  },
  {
    "number": 40,
    "name": "Prime Factory",
    "instructions": "For each thing in the INBOX, send its PRIME FACTORS to the OUTBOX in order from smallest to largest.",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "BUMPUP", "BUMPDN", "JUMP", "JUMPZ", "JUMPN" ],
    "dereferencing": true,
    "comments": true,
    "labels": true,
    "floor": {
      "columns": 5,
      "rows": 5,
      "tiles": {
        "24": 0
      }
    },
    "examples": [
      {
        "inbox": [ 13, 18, 11 ],
        "outbox": [ 13, 2, 3, 3, 11 ]
      }
    ],
    "challenge": {
      "size": 28,
      "speed": 399
    }
  },
  {
    "number": 41,
    "name": "Sorting Floor",
    "instructions": "For each zero terminated string in the INBOX, SORT the contents of the string, smallest first, biggest last, and put the results in the OUTBOX. Repeat for each string!",
    "commands": [ "INBOX", "OUTBOX", "COPYFROM", "COPYTO", "ADD", "SUB", "BUMPUP", "BUMPDN", "JUMP", "JUMPZ", "JUMPN" ],
    "dereferencing": true,
    "comments": true,
    "labels": true,
    "floor": {
      "columns": 5,
      "rows": 5,
      "tiles": {
        "24": 0
      }
    },
    "examples": [
      {
        "inbox": [ 91, 21, 46, 0, "T", "H", "I", "N", "K", 0, 86, 85, 83, 37, 32, 51, 19, 62, 72, 59, 0, 66, 0 ],
        "outbox": [ 21, 46, 91, "H", "I", "K", "N", "T", 19, 32, 37, 51, 59, 62, 72, 83, 85, 86, 66 ]
      }
    ],
    "challenge": {
      "size": 34,
      "speed": 714
    }
  },
  {
    "number": 42,
    "name": "End Program. Congratulations.",
    "cutscene": true
  }
]
