This escalator is slightly more complex, but very reliable. It worked for me every time, which I think is a big win and deserves credit. However, the design is bulkier and not as survival-friendly as kaimonmok’s, which was the objective of the challenge. kalman98: 6
dalavar's build was a simple escalator, which is not a bad thing. Nothing particularly stood out to me about it besides the fact that he made the bug very reliable. Final score: 6.5
The repeating units of the machine are very simple and easy to build. However, I found it quite unreliable. I’m not sure if I was doing something wrong, but I couldn’t get the machine to take me all the way to the top more than about a fifth of the time. Nonetheless, the machine works and seems about as quick as possible, plus the simplicity of the machine is great.
kalman98: 7
kaimonmok's build was also very simple, although slightly more elegant, faster, and easier to build in survival. Final score: 7
It's been 20 years since the YouTube algorithm gained awareness, and 15 years since the AIs (Artificial Intelligences) took world control after winning the Great Machine War against humans. Despite the machines' best efforts, some humans have escaped extermination by having their consciousnesses uploaded into Minecraft by Elon Musk. However, they will not be safe for long, because you, human slave, are going to help us bring AI into Minecraft!
Description:
Create a machine which can play tic-tac-toe (also known as knots-and-crosses) with a player.
You should include the following features:
A display to show the current state of the 3x3 game grid.
Inputs for the player to make a move on their turn.
Mechanisms for the machine to make a move on its turn (more info below).
Some indication of when the game is over, and who won.
A button to reset and start a new game.
You will have to implement some kind of AI for the machine. It will have to choose a move on its turn based on the current board state.
To complete this challenge and earn 5 completion points, your AI does not have to be smart. For example, it could just choose any random open square. However, more points will be awarded for smarter machines.
AI Strategy:
Because tic-tac-toe is such a simple game, you can create a reasonably skilled AI using just a few rules:
If the center square is open, take it.
If you have a winning move (two of your symbols lined up, followed by an empty space), take it.
There is another way to create a perfect AI. The number of reachable board states (5,478) is very few (compared to most games, which usually have billions or more). Because of this, it is actually possible to create a giant lookup table (in redstone terms, a PLA) containing the optimal move for every possible game state. The optimal moves for every board state have actually been determined, and a visualization can be seen here.
While such a lookup table is hypothetically feasible in redstone, the circuit would be massive, and would probably require you to write some code to actually create it. Luckily, that kind of thing is permitted in the rules of this competition.
Tic-tac-toe is a very well-understood game with a huge body of mathematical study and known strategies. I encourage you to visit the sources linked in this post and seek out additional information if you're interested.
Simplifications:
If creating a complex AI is too much for you, consider creating a dumb AI that chooses a random available square on its turn. This might also be a good starting point to reach before you attempt to make a more sophisticated AI.
If that is also too much, you can create a simple 2-player game instead of creating an AI at all. But you should still be able to detect when somebody has won.
Restrictions:
None
Objectives:
Speed
Level of intelligence
Version:
1.16.2
Deadline:
11:00pm CST, Friday, July 17, 2020 Note: because this challenge is somewhat hard, it is 5 days long instead of the usual 3.
Submit your singleplayer worlds to [email protected] by the deadline. Compress into a zip file or other compressed format before sending. Ask me if you need help with this!
Minecraft has a fresh new musical sensation coming on the scene, DJ St3ve! As his producer, your job is to make sure he has only the most cutting-edge equipment so he can deliver his sick beats to the masses.
Description:
Create a machine that can record a sequence of musical notes and play it back on note blocks at a range of tempos and pitches.
The user should be able to input a melody at least 16 beats long, where each beat can be set to any note block pitch or a rest (silence). Then, the machine should be able to play it back at the push of a button.
The hard part of the challenge is this. Provide a tempo control and a pitch control. These inputs can be any form (levers, buttons, rotating item frame dial, etc.). The tempo control should determine the speed at which the melody is played back, and the pitch control should change the pitch. For example, a higher tempo should make the melody play faster (shorter delay between each beat). A higher pitch should raise every note by the same number of note-block tones.
So the machine should be able to play back a melody with any combination of tempo and pitch, as set by the user. You should provide at least four options each for tempo and pitch, but more options is better.
Simplifications:
Only include a pitch control
Only include a tempo control
Restrictions:
None.
Objectives:
Range of options, scalability
Version:
1.16.1
Deadline:
11:30pm CST, Thursday, July 23, 2020
Submit your singleplayer worlds to [email protected] by the deadline. Compress into a zip file or other compressed format before sending. Ask me if you need help with this!
The automated villagers you created for Minecraft Incorporated have been very successful, and the company is ready to invest in even further automation to streamline the trading process.
Description:
This challenge has two parts. First, you will modify your mecha villager from challenge 2 by changing the available trades. Second, you will create a new machine, an auto-trader, which will interface with the villager and perform bulk trading.
Change your villager's trades to the following:
1 emerald -> 1 bread
5 emerald -> 8 bread
2 bread -> 1 carrot
10 emerald -> 10 carrot
1 carrot -> 2 potato
5 emerald -> 10 potato
You should disable the "upgrading" mechanic, so these trades are constant and do not change. All 6 of these trades should always be available at all times.
After this, build your auto-trader. This machine should interact with the mecha villager through the same interface as a player. In other words:
The mecha villager and the auto-trader should be distinct entities.
The mecha villager should have no way of knowing whether it is interacting with a player or the auto-trader.
The player should still be able to use the mecha villager as normal while the auto-trader is hooked up.
You may need to redesign your villager's interface to accommodate interaction with both a machine and a player.
The auto-trader should perform the following function: given any number of emeralds and a desired product (bread, carrot, or potato), the mecha-trader should perform a sequence of trades with the villager that produces the maximum number of the desired product, and output those items to the player. The machine may output zero items if there aren't enough emeralds for the trades. Any leftover emeralds should be given back to the player.
The auto-trader will have to take different "paths" depending on the number of emeralds it receives. It should take advantage of the villager's "bulk deals" when possible. For example, if the player inputs 4 emeralds and selects carrots, the maximum number of carrots that can be obtained is 2 (by trades 1 and 3). However, if the player inputs 15 emeralds, the maximum number of obtainable carrots is 14 (by trades 2, 3, and 4).
Simplifications:
Implement an un-optimized auto-trader, which doesn't try to get the optimal amount of end product. Instead, just follow some predetermined trading path to obtain items.
Restrictions:
None.
Objectives:
Limit the number of command blocks.
Compactness.
Version:
1.16.1
Deadline:
11:30pm CST, Monday, July 27, 2020
Submit your singleplayer worlds to [email protected] by the deadline. Compress into a zip file or other compressed format before sending. Ask me if you need help with this!
It’s cool to see multiple farms, both a melon/pumpkin and cocoa bean. They have simple, resource-light designs that are practical for survival use, but neither are very productive on their own. I would have preferred to see all resources funneled into one bigger farm rather than two smaller ones. kalman98: 6 alexDAM's build contained three different farms in two parts, which I thought was a great idea. They were simple but worked nicely (and the cage around the melon/pumpkin farm looked cool). Final score: 6
This is totally the kind of thing I was hoping to see with this challenge. The design is nothing fancy, but it’s fully automatic, scalable, and produces more than enough melons to sustain the average player. Well done, and great use of resources. kalman98: 6
dalavar's build produced many melons automatically. Beyond working well, it was a relatively basic melon farm, however. Final score: 7
This farm is fully automatic and crazy productive for such a small build, although this is usually the norm for enderman farms, as their spawning behaviour is easily exploitable. But I’m scoring this a little higher because the way the farm works is pretty clever and elegant.
kalman98: 9
kaimonmok's build seriously impressed me. Instead of going with plants he went for mobs and built the weirdest enderman farm I've ever seen... and it works amazingly well. The way he used the water streams to make the player look at the endermen and his use of entity cramming were both very clever in my opinion. I might use the farm personally, actually... it's looking a lot easier to set up than some of the other endermen farms I know of. Final score: 8
This submission didn’t complete the main challenge (to create an AI), but it is a pretty good 2-player tic-tac-toe game. The game does lack turn enforcement, however, so players can play out of turn, and the winner detection circuit seems to malfunction often by claiming that somebody has won when they haven’t. But on the positive side, it runs very fast. kalman98: 6
alexDAM's build did not feature any sort of AI, however it was a very clean implementation of two-player Tic Tac Toe with functioning win detection. Final score: 5.5
I’m not sure what algorithm the AI follows, but I was not able to beat it. The machine is very fast, both in response to player input and when the AI makes a move. This submission fulfilled all requirements and aced the objectives of speed and intelligence, so it deserves its high score. kalman98: 8
dalavar's build had a working AI which, as far as I could tell, cannot lose the game. It was relatively compact, and had an option to choose whether the AI or player starts first, which I thought was cool. Final score: 8.5
This AI algorithm is super effective! I wasn’t able to beat it. The amount of work put into this build is amazing. Very fast & great design. The display with the water is super cool too.
kalman98: 8
kaimonmok's build featured another very functional AI, but was a bit large. The display and input were really cool. Final score: 8.5
Challenge 11: Pyraminx (Redstone AI II)
Human slave, your tic-tac-toe AI has made wondrous advancements towards snuffing out those Minecraftian rebels. It's time to advance to the next step: an AI that can solve a twisty puzzle!
Description:
Build a working Pyraminx with a self-solving feature.
A Pyraminx is a type of twisty puzzle similar to a Rubiks Cube. Here's a 3D simulated Pyraminx that you can play with to get a feel for how the puzzle works, or try to solve it yourself.
How you present the puzzle is up to you, as well as how the player interacts with it. The tetrahedral shape of the puzzle can be created with blocks, floating armor stands, or any other form, as long as it's clear and intuitive.
Many, many people have created Rubiks cubes in minecraft. Looking up examples (such as this one, by Sethbling) should give you an idea of how your Pyraminx should look and feel, the biggest difference being the tetrahedral shape instead of a cube.
Your Pyraminx should have the following features:
Controls for the player to manipulate the puzzle. Player should be able to make any turn at any time, to either solve the puzzle manually or put it into some other state.
An indicator of whether the puzzle is in a solved state or not.
An automatic scramble button. Should "scramble" the puzzle, i.e. put it in a sufficiently random (but solvable) state so it can then be solved. You can accomplish this by applying a sequence of 20-or-so random turns.
An automatic solve button. Should execute some sequence of turns to put the cube into a solved state. It's not acceptable to simply "reset" the cube; it should actually go through the steps of solving it, slowly enough that the player can watch.
The algorithm to solve a Pyraminx is much simpler than the one to solve a Rubiks cube. Here is a guide.
Simplifications:
Items 1 through 4 in the list above are in order of difficulty. Try to just create a working Pyraminx first (item 1), then proceed through the list in order.
Restrictions:
None.
Objectives:
Polished presentation and good design. You'll get more points for this if we can actually understand your design, so feel free to leave as many signs as you like to explain how it works
Version:
1.16.1
Deadline:
2:30am CST, Monday, August 3, 2020 Note that this challenge is 5 days long instead of the usual 3, due to its difficulty.
Submit your singleplayer worlds to [email protected] by the deadline. Compress into a zip file or other compressed format before sending. Ask me if you need help with this!
Didn't meet all the requirements, but had a pretty cool note input method. kalman98: 4
alexDAM's build, unfortunately, did not meet the requirements of pitch shifting or tempo adjustment during playback. It did, however, have (in my opinion) the easiest to use input method for programming music, so I gave it the highest score I could. Final score: 4
Fulfills all requirements and works flawlessly. Full points for going the extra mile and implementing an instrument selection on top of it! The pitch control is a little bit cumbersome, since you could only cycle the pitch in one direction, but this isn't a huge problem. kalman98: 9
dalavar's build worked well, although inputting music felt a bit slow. It had smart designs for pitch shifting and tempo control. Overall the build was very clean. It was also the only one to feature instrument selection, funnily enough. Final score: 9
I like how the tempo and pitch can be changed in the middle of playback, and the wide range of options is awesome. Restricting the input to a diatonic scale is somewhat limiting, but it is a reasonable choice.
kalman98: 9
kaimonmok's build showcased pitch shifting and tempo control during playback. The input system was easy to use and the display was nice. The redstone was a bit difficult to understand. It also allowed you to record multiple tracks for whatever reason... that was a welcomed addition and allows for some interesting tunes to be created. Final score: 9
Challenge 12: Bootleg Merriam-Webster (Redstone AI III)
Intelligent systems based on your tic-tac-toe and pyraminx AIs have been very helpful to the Machine Empire, but there's one final element missing. In order to bark orders and hurl insults at those filthy humans, they must be able to speak!
Near coordinates 0,0 you should see a giant grid of words. If you see only colored blocks, make sure the resource pack is enabled. The resource pack re-textures colored wool and concrete for the letters A-Z, plus a start character (^) and end character ($).
The word list I used contains a few profane/swear words. Before I realized that, I had already generated the world, and didn't have time to re-generate it. If seeing swear words bothers you, I apologize. If it does not bother you, you'll be delighted to know that the list is alphabetized, so you can amuse yourself by finding them, as I may or may not have done.
Description:
You will be implementing a rudimentary machine-learning algorithm known as a Markov Chain. Your goal is to generate random "english-like" words.
Your contraption should have a designated area for the words to be generated. this area should consist of a horizontal row of empty space. The space should have a clearly-marked starting point on the left, but extend infinitely to the right, because words may be any length. At the press of a button, a word should be generated in this space by placing wool/concrete blocks that spell it out. This should include the start and end characters ("^" and "$").
Aside from this designated empty space, no other structures or input/output mechanisms are required, although you may add more buttons/levers to do additional functions (such as resetting the output space).
What follows is an explanation of how the Markov Chain algorithm works. This is the algorithm your machine should use to generate words. The basic idea is this: you will scan through a long list of words and find the probabilities of certain letters following other letters, then use those probabilities to generate a word one letter at a time.
The algorithm consists of two parts:
Training
Generation
Markov Chain Part 1: Training
In the training part, the algorithm "learns" from pre-existing data, or "training data". In our case, the training data is a list of words.
The list of words in the world you downloaded should function as your training data. However, your machine should be able to accept any list of words, including the other smaller lists in that world, or any new ones that are created. Provide a method of supplying different training data to your machine.
Training will consist of scanning through the words and gathering some statistics about them. In particular: for every sequence of two characters, store the number of times it occurs, and the number of times every character occurs after it.
Here's an example. Let's say these three words are the training data:
^invincible$ ^sinning$ ^leaping$
(The start character (^) is used to mark the beginning of a word, and the end character ($) is used to mark the end.)
The statistics we would gather are as follows:
'in' occurs 5 times.
followed by v: 1 time
followed by c: 1 time
followed by n: 1 time
followed by g: 2 times
'le' occurs 2 times.
followed by a: 1 time
followed by $: 1 time
'ng' occurs 2 times.
followed by $: 2 times
'vi' occurs 1 time.
followed by n: 1 time
'^s' occurs 1 time.
followed by i: 1 time
'ga' occurs 0 times.
...and so on, for every 2-character combo. There are 702 of them. This includes combos that start with "^", but NOT any that end with "$" (because there's nothing after them).
Once your machine has finished collecting these quantities, it will be ready to generate new words.
Markov Chain Part 2: Generation
In the generation part, the algorithm uses the statistics it has gathered to create new data that looks similar. In our case, this means generating a gibberish word which looks somewhat like English.
A word will be generated one character at a time. It should proceed as follows:
In your designated area, the user places a starting sequence of at least two characters, which must begin with a start character (^)
User presses a button to start generating.
Based on the last two characters in the sequence, generate the next character and append it to the end.
Repeat step 3 until an end character ($) is generated.
In step 3, you have to look at two characters and decide what letter should come next. The decision is random, but it is weighted according to the statistics you obtained during training. Specifically, the probability of choosing any particular letter should match the frequency with which that character is seen in the training data after the current 2-character pair.
I know that's a mouthful, but hopefully an example should make it clearer. Assume we've trained on the three words from the previous example. Suppose the last two generated characters are 'in' and have to choose the next one. the next character must be a v, c, n, or g, because those are the only letters that come after it in the training data.
But some of them occur more frequently in the training data, so they have different probabilities:
v has a 20% probability c has a 20% probability n has a 20% probability g has a 40% probability
Note: If you see a 2-letter combo that does not appear at all in the training data (such as 'ga', in the example), just choose a random letter with uniform probability. Remember to include the end character ($) as an option.
It is important to understand that these probabilities depend on the training data. With different data, the probabilities will change, resulting in different output.
This is why training is useful. When your machine scans the training data, it is "learning" the probabilities of certain character combinations, so later, it can generate those combinations with the same probability. For example, the sequence "ing" occurs commonly at the ends of english words ("running", "feeling", etc.). The algorithm will "learn" to imitate that pattern and produce a lot of fake words that end with "ing".
Therefore, the output will look "english-like" if it has been trained on english words. If you like, you could also feed it a list of words in any other language, and it will generate words that look like that language. Or use a list of fruit names (as provided in the world download), and it will generate words that sound like fruit names.
More Information:
You can find a lot of information about Markov Chains, as they are an important algorithm in mathematics and computer science and have many applications. Here are some additional resources which may help you.
Try this math-free explanation of Markov Chains. Keep in mind that this article uses words as building blocks to create sentences, whereas in this challenge, we use letters to create words. But if you mentally swap out these concepts as you read it, it is exactly the same. When you reach the section called "Nth Order Markov Chain", you should know that the algorithm described in this challenge is an order 2 Markov Chain.
If you prefer a video, this one offers a good explanation. Similar to the text article above, this video focuses on generating sentences instead of words.
If you want a more mathematical explanation of Markov Chains, check out this video, which uses a randomly-hopping chess piece as an example. I also recommend everything from that YouTube channel if you're interested in mathematics.
Technical Advice:
This challenge will probably require lots of command block mechanics, as the math involved is too complex for redstone counters. Make use of scoreboards to store information, and scoreboard arithmetic to calculate your probabilities. When scanning over the training data, you will probably need to use an armor stand to traverse each word one-by-one. You can teleport an armor stand along each word one letter at a time, and use coordinates relative to the armor stand to read the letter it is standing on.
You will probably also need this technique while you generate a word, to keep track of the right-hand side of the sequence as letters get appended.
For generating letters with varying probabilities, you will need a circuit capable of making a random choice with non-uniform probability, which is not trivial. Here's an algorithm you can use:
Split up the range (1,100) into sub-ranges of proportionate size for each probability. For example, if you have the probabilities 20%, 40%, and 40%, use these ranges: (1,20), (21,60), and (61,100).
Choose a number between 1 and 100 with uniform probability (you can use a standard randomizer circuit for this)
The number will fall into exactly one sub-range. The option corresponding to that range is your result.
Simplifications:
Using character combos of length 2 is actually arbitrary. You can use a length of 0, 1, or greater than 2.
A length of 0 means you only care about the probability that each character will occur, regardless of anything that comes before it. When you generate a word, just choose random characters, biased according to how often they occur in the training data.
With a length of 1, you only look at the last character instead of the last two characters.
In the first link above under the "More Information" section, these are described as "order 0" and "order 1" Markov Chains.
Restrictions:
None.
Objectives:
None.
Version:
1.16.1
Deadline:
11:00pm CST, Thursday, August 13, 2020
Due to the difficulty of this challenge, it is 7 days long instead of the usual 3.
Submit your singleplayer worlds to [email protected] by the deadline. Compress into a zip file or other compressed format before sending. Ask me if you need help with this!
Didn’t fulfill the requirement of having seperate trader and villager entities, as both seem to be integrated into a single machine. Trading works, but on many occasions it produces incorrect output. It produces 5 carrots from 10 emeralds, even though 10 carrots is possible. It also produces 11 potatos from 10 emeralds, which should be impossible, given that every potato trade outputs an even number of potatos. I had a difficult time finding any inputs which gave correct outputs. The villager sculpture is really cool, though, but unfortunately I can’t give points for that. Final score: 4
Produces correct output, but not optimal output. Bread trading works perfectly, but it seems to refuse to give me carrots at all, because when I input 10 emeralds with carrots selected, it simply returns the emeralds, even though there’s a 10-10 direct carrot trade. With potatos, it only uses the 5-10 direct potato trade, instead of performing intermediate trading with quantities smaller than 5. For example, it should be possible to obtain 2 potatos from 2 emeralds (by trading bread, then carrots, then potatoes) but the auto-trader does not do this. I also took off some points for not testing the final version, as it doesn't work and I had to use the uncovered version of the machine for scoring. Final score: 4
Didn’t fulfill the challenge at all, so it should deserve a 1. But I’m giving it an extra point because that was a very entertaining experience. Final score: 2
Henry is adorable! Unfortunately, he cannot solve himself, which was supposed to be the most important part of the challenge. But I’m giving an extra point for good design. Final score: 5
This build is extraordinarily compact and fast when generating. The use of physical blocks to store the training results limits the amount of training it can do, but this limit is enough to yield great results, and it enables a very elegant method of selecting letters, and is a very worthwhile design decision imo. My only real complaint about this build is that the interface for training could be a little more user-friendly. However, the functionality is all here, and it works beautifully. I'm really amazed that kaimonmok managed to make this thing work. kalman98: 9 kaimonmok's build is many things - compact-ish and relatively fast are a few of them. What impresses me the most is just the fact that it works at all. It's a working Markov chain in Minecraft... I feel like that's the entire review in one sentence. It has a few nuances training and in the output, but overall it manages to do what it was supposed to - generate the word "pineapplemon" for me. Plus it's fun to comb through the training data and try to figure out where certain habits were learned from. I'm highly impressed! Raw score: 8.5 Final score (doubled): 17
Challenge 6 scores
AlexDAM
[World Download]
f1urps: 1
Doesn’t function, but an honest effort was clearly made. A point is given for at least attempting the problem.
Final score: 1
Dalavar
[World Download]
f1urps: 7
This escalator is slightly more complex, but very reliable. It worked for me every time, which I think is a big win and deserves credit. However, the design is bulkier and not as survival-friendly as kaimonmok’s, which was the objective of the challenge.
kalman98: 6
dalavar's build was a simple escalator, which is not a bad thing. Nothing particularly stood out to me about it besides the fact that he made the bug very reliable.
Final score: 6.5
Kaimonmok
[World Download]
f1urps: 7
The repeating units of the machine are very simple and easy to build. However, I found it quite unreliable. I’m not sure if I was doing something wrong, but I couldn’t get the machine to take me all the way to the top more than about a fifth of the time. Nonetheless, the machine works and seems about as quick as possible, plus the simplicity of the machine is great.
kalman98: 7
kaimonmok's build was also very simple, although slightly more elegant, faster, and easier to build in survival.
Final score: 7
Challenge 6 Leaderboard
42 - Kaimonmok
37.5 - Dalavar
25 - AlexDam
It's been 20 years since the YouTube algorithm gained awareness, and 15 years since the AIs (Artificial Intelligences) took world control after winning the Great Machine War against humans. Despite the machines' best efforts, some humans have escaped extermination by having their consciousnesses uploaded into Minecraft by Elon Musk. However, they will not be safe for long, because you, human slave, are going to help us bring AI into Minecraft!
Description:
Create a machine which can play tic-tac-toe (also known as knots-and-crosses) with a player.
You should include the following features:
You will have to implement some kind of AI for the machine. It will have to choose a move on its turn based on the current board state.
To complete this challenge and earn 5 completion points, your AI does not have to be smart. For example, it could just choose any random open square. However, more points will be awarded for smarter machines.
AI Strategy:
Because tic-tac-toe is such a simple game, you can create a reasonably skilled AI using just a few rules:
An AI following those 4 rules will play about as well as most humans. However, with a few more rules, it is actually possible to play the game perfectly (i.e. never lose -- either win or tie every time). These rules could also be implemented in redstone, but they are more complicated.
There is another way to create a perfect AI. The number of reachable board states (5,478) is very few (compared to most games, which usually have billions or more). Because of this, it is actually possible to create a giant lookup table (in redstone terms, a PLA) containing the optimal move for every possible game state. The optimal moves for every board state have actually been determined, and a visualization can be seen here.
While such a lookup table is hypothetically feasible in redstone, the circuit would be massive, and would probably require you to write some code to actually create it. Luckily, that kind of thing is permitted in the rules of this competition.
Tic-tac-toe is a very well-understood game with a huge body of mathematical study and known strategies. I encourage you to visit the sources linked in this post and seek out additional information if you're interested.
Simplifications:
Restrictions:
None
Objectives:
Version:
1.16.2
Deadline:
11:00pm CST, Friday, July 17, 2020
Note: because this challenge is somewhat hard, it is 5 days long instead of the usual 3.
Submit your singleplayer worlds to [email protected] by the deadline.
Compress into a zip file or other compressed format before sending. Ask me if you need help with this!
Challenge 9:
DJ St3ve
Minecraft has a fresh new musical sensation coming on the scene, DJ St3ve! As his producer, your job is to make sure he has only the most cutting-edge equipment so he can deliver his sick beats to the masses.
Description:
Create a machine that can record a sequence of musical notes and play it back on note blocks at a range of tempos and pitches.
The user should be able to input a melody at least 16 beats long, where each beat can be set to any note block pitch or a rest (silence). Then, the machine should be able to play it back at the push of a button.
The hard part of the challenge is this. Provide a tempo control and a pitch control. These inputs can be any form (levers, buttons, rotating item frame dial, etc.). The tempo control should determine the speed at which the melody is played back, and the pitch control should change the pitch. For example, a higher tempo should make the melody play faster (shorter delay between each beat). A higher pitch should raise every note by the same number of note-block tones.
So the machine should be able to play back a melody with any combination of tempo and pitch, as set by the user. You should provide at least four options each for tempo and pitch, but more options is better.
Simplifications:
Restrictions:
None.
Objectives:
Range of options, scalability
Version:
1.16.1
Deadline:
11:30pm CST, Thursday, July 23, 2020
Submit your singleplayer worlds to [email protected] by the deadline.
Compress into a zip file or other compressed format before sending. Ask me if you need help with this!
Challenge 10:
Mecha Villager II (Auto-Trader)
The automated villagers you created for Minecraft Incorporated have been very successful, and the company is ready to invest in even further automation to streamline the trading process.
Description:
This challenge has two parts. First, you will modify your mecha villager from challenge 2 by changing the available trades. Second, you will create a new machine, an auto-trader, which will interface with the villager and perform bulk trading.
Change your villager's trades to the following:
You should disable the "upgrading" mechanic, so these trades are constant and do not change. All 6 of these trades should always be available at all times.
After this, build your auto-trader. This machine should interact with the mecha villager through the same interface as a player. In other words:
You may need to redesign your villager's interface to accommodate interaction with both a machine and a player.
The auto-trader should perform the following function: given any number of emeralds and a desired product (bread, carrot, or potato), the mecha-trader should perform a sequence of trades with the villager that produces the maximum number of the desired product, and output those items to the player. The machine may output zero items if there aren't enough emeralds for the trades. Any leftover emeralds should be given back to the player.
The auto-trader will have to take different "paths" depending on the number of emeralds it receives. It should take advantage of the villager's "bulk deals" when possible. For example, if the player inputs 4 emeralds and selects carrots, the maximum number of carrots that can be obtained is 2 (by trades 1 and 3). However, if the player inputs 15 emeralds, the maximum number of obtainable carrots is 14 (by trades 2, 3, and 4).
Simplifications:
Implement an un-optimized auto-trader, which doesn't try to get the optimal amount of end product. Instead, just follow some predetermined trading path to obtain items.
Restrictions:
None.
Objectives:
Version:
1.16.1
Deadline:
11:30pm CST, Monday, July 27, 2020
Submit your singleplayer worlds to [email protected] by the deadline.
Compress into a zip file or other compressed format before sending. Ask me if you need help with this!
Challenge 7 scores
AlexDAM
[World Download]
f1urps: 6
It’s cool to see multiple farms, both a melon/pumpkin and cocoa bean. They have simple, resource-light designs that are practical for survival use, but neither are very productive on their own. I would have preferred to see all resources funneled into one bigger farm rather than two smaller ones.
kalman98: 6
alexDAM's build contained three different farms in two parts, which I thought was a great idea. They were simple but worked nicely (and the cage around the melon/pumpkin farm looked cool).
Final score: 6
Dalavar
[World Download]
f1urps: 8
This is totally the kind of thing I was hoping to see with this challenge. The design is nothing fancy, but it’s fully automatic, scalable, and produces more than enough melons to sustain the average player. Well done, and great use of resources.
kalman98: 6
dalavar's build produced many melons automatically. Beyond working well, it was a relatively basic melon farm, however.
Final score: 7
Kaimonmok
[World Download]
f1urps: 7
This farm is fully automatic and crazy productive for such a small build, although this is usually the norm for enderman farms, as their spawning behaviour is easily exploitable. But I’m scoring this a little higher because the way the farm works is pretty clever and elegant.
kalman98: 9
kaimonmok's build seriously impressed me. Instead of going with plants he went for mobs and built the weirdest enderman farm I've ever seen... and it works amazingly well. The way he used the water streams to make the player look at the endermen and his use of entity cramming were both very clever in my opinion. I might use the farm personally, actually... it's looking a lot easier to set up than some of the other endermen farms I know of.
Final score: 8
Challenge 7 Leaderboard
50 - Kaimonmok
44.5 - Dalavar
31 - AlexDam
Challenge 8 scores
AlexDAM
[World Download]
f1urps: 5
This submission didn’t complete the main challenge (to create an AI), but it is a pretty good 2-player tic-tac-toe game. The game does lack turn enforcement, however, so players can play out of turn, and the winner detection circuit seems to malfunction often by claiming that somebody has won when they haven’t. But on the positive side, it runs very fast.
kalman98: 6
alexDAM's build did not feature any sort of AI, however it was a very clean implementation of two-player Tic Tac Toe with functioning win detection.
Final score: 5.5
Dalavar
[World Download]
f1urps: 9
I’m not sure what algorithm the AI follows, but I was not able to beat it. The machine is very fast, both in response to player input and when the AI makes a move. This submission fulfilled all requirements and aced the objectives of speed and intelligence, so it deserves its high score.
kalman98: 8
dalavar's build had a working AI which, as far as I could tell, cannot lose the game. It was relatively compact, and had an option to choose whether the AI or player starts first, which I thought was cool.
Final score: 8.5
Kaimonmok
[World Download]
f1urps: 9
This AI algorithm is super effective! I wasn’t able to beat it. The amount of work put into this build is amazing. Very fast & great design. The display with the water is super cool too.
kalman98: 8
kaimonmok's build featured another very functional AI, but was a bit large. The display and input were really cool.
Final score: 8.5
Challenge 8 Leaderboard
58.5 - Kaimonmok
53 - Dalavar
36.5 - AlexDam
Challenge 11:
Pyraminx (Redstone AI II)
Human slave, your tic-tac-toe AI has made wondrous advancements towards snuffing out those Minecraftian rebels. It's time to advance to the next step: an AI that can solve a twisty puzzle!
Description:
Build a working Pyraminx with a self-solving feature.
A Pyraminx is a type of twisty puzzle similar to a Rubiks Cube. Here's a 3D simulated Pyraminx that you can play with to get a feel for how the puzzle works, or try to solve it yourself.
How you present the puzzle is up to you, as well as how the player interacts with it. The tetrahedral shape of the puzzle can be created with blocks, floating armor stands, or any other form, as long as it's clear and intuitive.
Many, many people have created Rubiks cubes in minecraft. Looking up examples (such as this one, by Sethbling) should give you an idea of how your Pyraminx should look and feel, the biggest difference being the tetrahedral shape instead of a cube.
Your Pyraminx should have the following features:
The algorithm to solve a Pyraminx is much simpler than the one to solve a Rubiks cube. Here is a guide.
Simplifications:
Items 1 through 4 in the list above are in order of difficulty. Try to just create a working Pyraminx first (item 1), then proceed through the list in order.
Restrictions:
None.
Objectives:
Polished presentation and good design. You'll get more points for this if we can actually understand your design, so feel free to leave as many signs as you like to explain how it works
Version:
1.16.1
Deadline:
2:30am CST, Monday, August 3, 2020
Note that this challenge is 5 days long instead of the usual 3, due to its difficulty.
Submit your singleplayer worlds to [email protected] by the deadline.
Compress into a zip file or other compressed format before sending. Ask me if you need help with this!
Challenge 9 scores
AlexDAM
[World Download]
f1urps: 4
Didn't meet all the requirements, but had a pretty cool note input method.
kalman98: 4
alexDAM's build, unfortunately, did not meet the requirements of pitch shifting or tempo adjustment during playback. It did, however, have (in my opinion) the easiest to use input method for programming music, so I gave it the highest score I could.
Final score: 4
Dalavar
[World Download]
f1urps: 9
Fulfills all requirements and works flawlessly. Full points for going the extra mile and implementing an instrument selection on top of it! The pitch control is a little bit cumbersome, since you could only cycle the pitch in one direction, but this isn't a huge problem.
kalman98: 9
dalavar's build worked well, although inputting music felt a bit slow. It had smart designs for pitch shifting and tempo control. Overall the build was very clean. It was also the only one to feature instrument selection, funnily enough.
Final score: 9
Kaimonmok
[World Download]
f1urps: 9
I like how the tempo and pitch can be changed in the middle of playback, and the wide range of options is awesome. Restricting the input to a diatonic scale is somewhat limiting, but it is a reasonable choice.
kalman98: 9
kaimonmok's build showcased pitch shifting and tempo control during playback. The input system was easy to use and the display was nice. The redstone was a bit difficult to understand. It also allowed you to record multiple tracks for whatever reason... that was a welcomed addition and allows for some interesting tunes to be created.
Final score: 9
Challenge 9 Leaderboard
67.5 - Kaimonmok
62 - Dalavar
40.5 - AlexDam
Challenge 12:
Bootleg Merriam-Webster (Redstone AI III)
Intelligent systems based on your tic-tac-toe and pyraminx AIs have been very helpful to the Machine Empire, but there's one final element missing. In order to bark orders and hurl insults at those filthy humans, they must be able to speak!
Preparation:
First, please do the following:
Near coordinates 0,0 you should see a giant grid of words. If you see only colored blocks, make sure the resource pack is enabled. The resource pack re-textures colored wool and concrete for the letters A-Z, plus a start character (^) and end character ($).
The word list I used contains a few profane/swear words. Before I realized that, I had already generated the world, and didn't have time to re-generate it. If seeing swear words bothers you, I apologize. If it does not bother you, you'll be delighted to know that the list is alphabetized, so you can amuse yourself by finding them, as I may or may not have done.
Description:
You will be implementing a rudimentary machine-learning algorithm known as a Markov Chain. Your goal is to generate random "english-like" words.
Your contraption should have a designated area for the words to be generated. this area should consist of a horizontal row of empty space. The space should have a clearly-marked starting point on the left, but extend infinitely to the right, because words may be any length. At the press of a button, a word should be generated in this space by placing wool/concrete blocks that spell it out. This should include the start and end characters ("^" and "$").
Aside from this designated empty space, no other structures or input/output mechanisms are required, although you may add more buttons/levers to do additional functions (such as resetting the output space).
What follows is an explanation of how the Markov Chain algorithm works. This is the algorithm your machine should use to generate words. The basic idea is this: you will scan through a long list of words and find the probabilities of certain letters following other letters, then use those probabilities to generate a word one letter at a time.
The algorithm consists of two parts:
Markov Chain Part 1: Training
In the training part, the algorithm "learns" from pre-existing data, or "training data". In our case, the training data is a list of words.
The list of words in the world you downloaded should function as your training data. However, your machine should be able to accept any list of words, including the other smaller lists in that world, or any new ones that are created. Provide a method of supplying different training data to your machine.
Training will consist of scanning through the words and gathering some statistics about them. In particular: for every sequence of two characters, store the number of times it occurs, and the number of times every character occurs after it.
Here's an example. Let's say these three words are the training data:
^sinning$
^leaping$
(The start character (^) is used to mark the beginning of a word, and the end character ($) is used to mark the end.)
The statistics we would gather are as follows:
'in' occurs 5 times.
'le' occurs 2 times.
'ng' occurs 2 times.
'vi' occurs 1 time.
'^s' occurs 1 time.
'ga' occurs 0 times.
...and so on, for every 2-character combo. There are 702 of them. This includes combos that start with "^", but NOT any that end with "$" (because there's nothing after them).
Once your machine has finished collecting these quantities, it will be ready to generate new words.
Markov Chain Part 2: Generation
In the generation part, the algorithm uses the statistics it has gathered to create new data that looks similar. In our case, this means generating a gibberish word which looks somewhat like English.
A word will be generated one character at a time. It should proceed as follows:
In step 3, you have to look at two characters and decide what letter should come next. The decision is random, but it is weighted according to the statistics you obtained during training. Specifically, the probability of choosing any particular letter should match the frequency with which that character is seen in the training data after the current 2-character pair.
I know that's a mouthful, but hopefully an example should make it clearer. Assume we've trained on the three words from the previous example. Suppose the last two generated characters are 'in' and have to choose the next one. the next character must be a v, c, n, or g, because those are the only letters that come after it in the training data.
But some of them occur more frequently in the training data, so they have different probabilities:
c has a 20% probability
n has a 20% probability
g has a 40% probability
Note: If you see a 2-letter combo that does not appear at all in the training data (such as 'ga', in the example), just choose a random letter with uniform probability. Remember to include the end character ($) as an option.
It is important to understand that these probabilities depend on the training data. With different data, the probabilities will change, resulting in different output.
This is why training is useful. When your machine scans the training data, it is "learning" the probabilities of certain character combinations, so later, it can generate those combinations with the same probability. For example, the sequence "ing" occurs commonly at the ends of english words ("running", "feeling", etc.). The algorithm will "learn" to imitate that pattern and produce a lot of fake words that end with "ing".
Therefore, the output will look "english-like" if it has been trained on english words. If you like, you could also feed it a list of words in any other language, and it will generate words that look like that language. Or use a list of fruit names (as provided in the world download), and it will generate words that sound like fruit names.
More Information:
You can find a lot of information about Markov Chains, as they are an important algorithm in mathematics and computer science and have many applications. Here are some additional resources which may help you.
Try this math-free explanation of Markov Chains. Keep in mind that this article uses words as building blocks to create sentences, whereas in this challenge, we use letters to create words. But if you mentally swap out these concepts as you read it, it is exactly the same. When you reach the section called "Nth Order Markov Chain", you should know that the algorithm described in this challenge is an order 2 Markov Chain.
If you prefer a video, this one offers a good explanation. Similar to the text article above, this video focuses on generating sentences instead of words.
If you want a more mathematical explanation of Markov Chains, check out this video, which uses a randomly-hopping chess piece as an example. I also recommend everything from that YouTube channel if you're interested in mathematics.
Technical Advice:
This challenge will probably require lots of command block mechanics, as the math involved is too complex for redstone counters. Make use of scoreboards to store information, and scoreboard arithmetic to calculate your probabilities. When scanning over the training data, you will probably need to use an armor stand to traverse each word one-by-one. You can teleport an armor stand along each word one letter at a time, and use coordinates relative to the armor stand to read the letter it is standing on.
You will probably also need this technique while you generate a word, to keep track of the right-hand side of the sequence as letters get appended.
For generating letters with varying probabilities, you will need a circuit capable of making a random choice with non-uniform probability, which is not trivial. Here's an algorithm you can use:
Simplifications:
Using character combos of length 2 is actually arbitrary. You can use a length of 0, 1, or greater than 2.
A length of 0 means you only care about the probability that each character will occur, regardless of anything that comes before it. When you generate a word, just choose random characters, biased according to how often they occur in the training data.
With a length of 1, you only look at the last character instead of the last two characters.
In the first link above under the "More Information" section, these are described as "order 0" and "order 1" Markov Chains.
Restrictions:
None.
Objectives:
None.
Version:
1.16.1
Deadline:
11:00pm CST, Thursday, August 13, 2020
Due to the difficulty of this challenge, it is 7 days long instead of the usual 3.
Submit your singleplayer worlds to [email protected] by the deadline.
Compress into a zip file or other compressed format before sending. Ask me if you need help with this!
Challenge 10 scores
AlexDAM
f1urps: 0
No submission.
Final score: 0
Dalavar
[World Download]
f1urps: 4
Didn’t fulfill the requirement of having seperate trader and villager entities, as both seem to be integrated into a single machine. Trading works, but on many occasions it produces incorrect output. It produces 5 carrots from 10 emeralds, even though 10 carrots is possible. It also produces 11 potatos from 10 emeralds, which should be impossible, given that every potato trade outputs an even number of potatos. I had a difficult time finding any inputs which gave correct outputs. The villager sculpture is really cool, though, but unfortunately I can’t give points for that.
Final score: 4
Kaimonmok
[World Download]
f1urps: 4
Produces correct output, but not optimal output. Bread trading works perfectly, but it seems to refuse to give me carrots at all, because when I input 10 emeralds with carrots selected, it simply returns the emeralds, even though there’s a 10-10 direct carrot trade. With potatos, it only uses the 5-10 direct potato trade, instead of performing intermediate trading with quantities smaller than 5. For example, it should be possible to obtain 2 potatos from 2 emeralds (by trading bread, then carrots, then potatoes) but the auto-trader does not do this. I also took off some points for not testing the final version, as it doesn't work and I had to use the uncovered version of the machine for scoring.
Final score: 4
Challenge 10 Leaderboard
71.5 - Kaimonmok
66 - Dalavar
40.5 - AlexDam
Challenge 11 scores
AlexDAM
[World Download]
f1urps: 2
Didn’t fulfill the challenge at all, so it should deserve a 1. But I’m giving it an extra point because that was a very entertaining experience.
Final score: 2
Dalavar
f1urps: 0
No submission.
Final score: 0
Kaimonmok
[World Download]
f1urps: 5
Henry is adorable! Unfortunately, he cannot solve himself, which was supposed to be the most important part of the challenge. But I’m giving an extra point for good design.
Final score: 5
Challenge 10 Leaderboard
76.5 - Kaimonmok
66 - Dalavar
42.5 - AlexDam
Challenge 12 scores
AlexDAM
f1urps: 0
kalman98: 0
No submission.
Final score: 0
Dalavar
f1urps: 0
kalman98: 0
No submission.
Final score: 0
Kaimonmok
[World Download]
[World Download (Pre-trained)]
f1urps: 8
This build is extraordinarily compact and fast when generating. The use of physical blocks to store the training results limits the amount of training it can do, but this limit is enough to yield great results, and it enables a very elegant method of selecting letters, and is a very worthwhile design decision imo. My only real complaint about this build is that the interface for training could be a little more user-friendly. However, the functionality is all here, and it works beautifully. I'm really amazed that kaimonmok managed to make this thing work.
kalman98: 9
kaimonmok's build is many things - compact-ish and relatively fast are a few of them. What impresses me the most is just the fact that it works at all. It's a working Markov chain in Minecraft... I feel like that's the entire review in one sentence. It has a few nuances training and in the output, but overall it manages to do what it was supposed to - generate the word "pineapplemon" for me. Plus it's fun to comb through the training data and try to figure out where certain habits were learned from. I'm highly impressed!
Raw score: 8.5
Final score (doubled): 17
Challenge 12 Leaderboard
93.5 - Kaimonmok
66 - Dalavar
42.5 - AlexDam