It's time for our first of our late afternoon talks. It's somebody who hails from Hobart in Tasmania, which is where I'm from before I lived here in Petaluma. Paris Buttfield Addison, who is going to allegedly build a video game, train a butt to play it, and deploy it on a smartphone in 30 minutes. Please make him welcome. Thank you. Hello. Sorry, I need internet connections, so I'm plugging my phone in. OK, so some of this is a lie, because my computer died two days ago, and I've had to reconstruct my presentation. So we're going to try as best we can to do this, and we'll see how we go. Hello, everyone. I am Paris. This talk is about very visual machine learning. There's not a lot of Python in here, but there is some Python. So I hope you'll forgive me. It's not all Python. Now, I am a professional game developer. I am not a Python person. Despite having a PhD in computer science, Python still terrifies me, and I have no idea how any of it works. I am just feeling my way around Python. So I am primarily working with mostly other languages. I use Python when I need to get something done, because it is usually the best tool for the job for data munging, data science, machine learning, stuff like that. As we've heard today, Python is a really great multi-tool. I love my dogs. These are my dogs. You should also love my dogs. I'm from Hobart, which is where Chris is from. Please don't hold me responsible for Chris. We're not all like that. Some of us are, though. I wrote a lot of books. I built a lot of video games. This topic is kind of Python-adjacent, as I said. We're talking about Unity, which is a video game engine, which I'll come to in a minute, that's C-sharp, which is actually a pretty good language. And then we use Python for the machine learning heavy lifting, which is the machine learning bot side of things. Via TensorFlow, you may have heard of it. It's pretty great. I'm going to talk about three things today. I'm going to talk about Unity, which is a game engine. I'm going to talk about TensorFlow, which is a machine learning framework that comes out of Google. I'm going to talk about something to glue them together, which is the Unity machine learning agents toolkit, which I may occasionally refer to as Unity ML agents, Unity ML, or various other things. All these words are wrong. It is called the Unity machine learning agents toolkit. They get very angry when you call it something different. Unity, again, game engine. This is a quick introduction to the power of using a game engine or a simulation engine for machine learning. I think this is really cool, and more people should be doing it. So hopefully you'll get enthused by this. We haven't got time to go too in-depth. First thing I'm going to do is look at Unity. I'm going to quickly tab out of my slides because I think it's best to do this live, because I lost half my slides anyway. So please excuse me while I tab out of my slides in a second. But basically, Unity is a game engine. Unity is 60% to 80% of the video games industry, depending on how you count, which is terrifying. No one company should have that much power, but there you have it. We have that problem. That's our own problem to deal with. But Unity is mostly free, and it's really useful to play with.  So alongside game engines being a big thing, and Unity being a ridiculously terrifying percentage of the games industry, machine learning has really taken off lately in three very specific different domains. Those three domains are cognitive, physical, and visual. So we've got AlphaGo doing cognitive things, solving cognitive problems. We've got DeepMind and the OpenAI gyms and stuff like that, making things walk with weird throwing motions and stuff, so physical problems. And we've got visual problems, like VizDoom, where they taught a bot to play Doom just by giving it the visual input of Doom. Doom is the old video game. So cognitive, physical, visual. As it turns out, a video game engine can simulate cognitive, physical, and visual things very easily and very quickly. That's a really good place to do that stuff. So that's where Unity comes in. This is the ML Agents Toolkit. It's on GitHub. We'll come back to that. That slide's just there in case I didn't have an internet connection. I'm gonna tap out now and show you this live just because it's easier. Unity wrote a paper on it. If you want to read more about this from an academic sense, this paper is really good. Unity, a general platform for intelligent agents. It's on Archive, because every machine learning paper is on Archive. It's very readable. Check it out. So now it's almost live time. So I'm gonna push escape and go into Unity. I'm just gonna pick the right Unity because I have three of them open to show you three different things. That's that. This one, okay. So ignore those errors. This is Unity. In Unity, you may think it looks like most other 3D software. This has nothing to do with machine learning. This is just a scene to acclimatize you with how Unity works. So in the scene, I've put a ball into the scene. It's called Sphere. I'm gonna rename it to ball. You'll see it over here. I've got a cube in the scene, which I've flattened. So you can squish things. I've flattened it. I'm gonna call it floor. And on the ball, I've said, this ball is made up of components. It has a position component, which is called a transform, which is this thing over here. It has a mesh, which is a sphere. It has a mesh renderer, which is the thing that makes the sphere appear in the real world, in the game. And it has a sphere collider and a rigid body. These things make it effective by the physics engine which Unity ships with. I've also applied a thing called bouncy material to it, which I'll show you in a second. But most importantly, I've ticked this box here. Use gravity. And that means it'll be affected by gravity, as you'd expect. Now, if I delete this one, because it's a bit of a spoiler, and run this simulation, you'll see the ball falls to the ground. And not much else happens, okay? If I want it to bounce, I need to give it some bounciness. So I've made this bouncy material, which is a thing that says this is bouncy. Not much, not much to it. And it's got bounce combined in maximum, which means every time it bounces, it'll get more bouncy, very exciting. Okay, so I'm gonna drag that onto my ball, and I'll show you what happens then. You can probably guess, right? Very exciting. Okay, that's my talk. No, this is not machine learning. This is not machine learning. This is just a cool simulation of a ball that bounces. That ball will eventually bounce off-screen, because we told it to multiply its bounce every time. It's very exciting. Hopefully this really quick example shows you how easy it is to assemble something that would take a little bit more than the 30 seconds I took to build this to code, so you can build it very visually very quickly. So Unity lets you build 3D complicated scenes very, very quickly, and that is why it is interesting for machine learning. So I'm gonna switch to a completely different scene now. We've made a little race track, which some of you may have seen before, you saw me speak at PyCon. We've made a little race track. It's pretty much what you'd expect. It's a really boring little race course. For the machine learning experts in this room, yes, if we train a car to drive around this track, it will not drive around other tracks very well. It will local maximum problems and all that. That's not the point. The point is to show you how easy this is. In this track we have a car. This car is actually some sort of dozer. It's not actually... So it's a self-driving dozer more than it's a self-driving car. We're gonna make this self-drive around the track, and I'm gonna show you how easy it is to do that. So the first thing I'm gonna show you is I have made this car, this is basically a game, okay? So if I hit play now, assuming I set everything up correctly earlier, you'll see that this lets me drive around the track. Okay, this is me steering. I am very bad at steering. I cannot drive in the real world. I cannot drive on computers. Okay, so, whoop, there we go. When you crash it just reset you to the nearest point. Okay, so hopefully you all have seen a racing game before or played a racing game as exciting as this one. You can see that we can drive around this track. It's very good. That's not very interesting from a machine learning point of view. So we're gonna use machine learning to make the car drive itself. The way we're gonna do that is we're gonna make sure the car's camera is fed into some sort of machine learning system. So if you look at this car, I expand it over here. You'll see that it has a camera mounted to the front right here. And it points forward. So you can kind of see the view frustum of the camera. There's this like cone thing coming forward. And you can see a little preview down here of what the camera can see. So this camera is mounted to the front of the car. And if the car drives around the track, which I'll show you in a second, you'll see the camera at the front of the car is connected to it, okay? So it's moving with the car. We're gonna feed that camera into a machine learning system and teach the car to drive around the track by itself. The way we're gonna do that is we're gonna use these waypoints. If you look on the track, there's these orange things here, which are spaced around the track relatively evenly. I'll just manipulate my scene to show you those. So you can see one there. And then if I go forward, okay? So they're going on the track. When the car leaves the track and goes through one of these colliders on the outside, we reset to the nearest shiny yellow thing, okay? Makes sense to everyone? Pretty straightforward. That's code I'm not gonna show you. Just trust me, that works. That's what was happening when I was crashing earlier. Now, I'm gonna turn on some machine learning and show you how this works. But first I'm gonna show you the car's code. And if you don't like C-Sharp, it's time to avert your eyes. I really like C-Sharp. It's actually grown on me a lot over the years. It's one of my favorite languages. It's not suitable for the same things Python suited before, but it's a very good language in its own right. So I'm gonna open the car's code. And this is the code attached to the car itself. So there's a lot of junk here because Unity is a game engine and comes with a lot of baggage because it's a game engine. Basically, we have a system that simulates a car.  We're not using most of them. In fact, the car automatically steers forward, drives forward, it accelerates. And the only control we have is left and right because we don't wanna make a machine learning bot takes too long to train. So if I go back to the code, you'll see we have all the junk to set that up. The most important thing here is this agent action thing, which is a thing we implement to adhere to the requirements of this ML Agents Toolkit. And this agent action says, when this action comes in, we either go left or right, it's either gonna be minus one or one, and we tell the car to move with that action. That's all that's doing. Okay, and then we check if we're collided. So if we've hit something, if we've gone outside the edge of the track, we penalize the car with a minus one floating point and we reset the car to its nearest point. And if we did not hit something, we give the car a very tiny reward. Very small reward, very large penalty. It's really important that you tune these numbers. These numbers are more art than they are science. If anyone's under machine learning, you'll know that this kind of takes a while to get right. This is something that we come up with that kind of works okay. There's a collect observations thing here, which allows us to pass information about the scene into the machine learning system. We can give any sort of vector input we want in here. So if we wanted to measure the distance from the walls, we could send invisible lasers called ray casts in the video game world out into the walls and measure how far away those are. We're not gonna do that here. We're actually gonna use visual observations. So we're just using that camera on the front and that's a thing we can set up visually inside Unity. So here we have an agent action. The car can steer left or right minus one on one. And if it hits something, it gets penalized. If it's still driving, it gets a small reward. Okay, that's literally it. Back in Unity, you'll see we have our camera attached to the car. And we have this thing called a car Academy, which is the thing that just mediates between the ability to learn and the ability to control Unity. And here we have a learning brain. I'm gonna click control on this learning brain. This means we're using an inter-process bridge to talk to Python. That's all that control text tick box does. And if I show you the contents of that brain, you'll see that it has a visual observation of 32 by 24 in grayscale. And that's that camera attached to the car. That's literally it. It has a space type, a space size of one action, which basically means that vector has one thing inside it which is a minus one or a one. That's literally it. Okay, that's the only set up we need to do in Unity. So, I'm actually, no, I lie, there's one more thing I need to do. There's this, if I connect the learning brain to the car. I had a player brain there before, which allows me to drive the car with keys. So this is what a player brain looks like. A player brain just exists so you can use the machine learning subsystem to test your world and drive it around with the keyboard. So I had exactly the same setup here, but it was mapped to keys. Apologies for sniffing, it's been a long week. So now we've set the car to use the learning brain. We're going to go into a Python script. Very exciting. First thing I'm gonna show you though is some hyperparameters. All machine learning needs hyperparameters. Very straightforward, lots of magic numbers. Don't worry about it, okay? Has anyone done machine learning and familiar with what I'm talking about? Okay, yep, hyperparameters, lots of magic numbers. These have been tuned over the last few weeks of us iterating on this project to get it right. More interestingly, we're using a trainer called PPO, which is called Proximal Policy Optimization. It's a very generic but useful machine learning algorithm that kind of does lots of things kind of well. It's not perfect for all situations though. And here we have a specific set of parameters for our car. That's really it, okay? So I'm gonna fire up this Python script and I'm gonna show you how this can work with more interesting Python. I'm gonna run this Python command ML-agents-learn which is just a nice wrapper around PPO. I'm gonna point it to our YAML file and I'm gonna give it an ID, okay? So that's gonna fire up Unity's ML-agents and then ask us to push play in the Unity editor. Okay, start training by pressing play. So if I push play in Unity, this will start training. TensorFlow will complain because that's what TensorFlow does. And then eventually it will start training with a bit of luck. Again, this is very exciting, there we go. Okay, so you can see here, gonna shrink it a little bit. This is training and slowly getting a reward. What this is doing is taking completely random actions in that minus one to one action space and seeing how it's rewarded or penalized. Okay, if I go back to Unity, it will be lagging but it will be kind of driving. So you'll see it's moving the car around when it gets penalized, it gets penalized, when it gets rewarded, it gets rewarded. And we can see that reward happening here. If you're familiar with TensorFlow from more serious machine learning projects, you can use that as well. So if I go here and fire that up, you can see here, this is all over the place right now because it's really early in its training run but it does show you what's going on. So you want the reward to go up slowly over time. This is reinforcement learning. So we're pairing actions with observations and rewards and trying to guide it towards an optimal policy of driving. Now realistically, this will take 10 or so hours if we're leaving it to train on my computer to get somewhere. We haven't got that much time so I'm gonna show you when I've prepared earlier because that's what we do. So I'm gonna kill that. You'll see here it wrote out an NN file which is just a neural net from TensorFlow, that's a PB file. I already have one of those, so I'm just gonna show you how it works. Very exciting.  And you'll see here we've got a slot for a model and I've got one I prepared earlier which is this one. We want it to infer on the GPU. This is actually not a problem, not the kind of situation we'd want to actually use a GPU for but I'm gonna leave it alone. And then I'm gonna turn off that control thing because we don't want Python to control it. Unity does not use Python for inference, it only uses Python for training. And I'll show you some more Python in a second for those of you who prefer Python to C sharp things. You're gonna click play now. This brain was trained for about a day and you'll see it's driving itself. It's as bad as I am basically at this point but it is at least driving itself which is a positive thing. That's very good. That's very interesting. We can make a game, that's really fun. Now, that's not the fun bit, okay? Python is the fun bit. So that's great, we made it work. But I turned this control thing back on and removed the brain, removed the model from the brain and go into Jupyter. So I have Jupyter running here. Everyone loves Jupyter. I'm gonna run some code here. You're gonna zoom in so you can see it. I'm gonna say train mode true. I'm gonna run that. I'm gonna run some Python code so we're gonna import matplot, numpy, pill, the usual stuff and we're gonna import some stuff from Unity. Okay, so I'm gonna run that one as well. I'm gonna just check the Python version is correct. Machine learning mostly often usually kind of requires Python 3.6. Don't worry about it. We'll talk about it later if you have a question. I'm now gonna ask Unity to give me a hand while it's in environment. You'll see this message we saw before. Start training by pressing play in Unity. So if I go back to Unity and hit play, then come back here. You'll see it gets a handle on the environment here. And it knows there's a learning brain with one visual observation, no vector observation so there's no numbers being fed into it, only that one visual observation and it has an action space of one, okay? So it can take that minus one or one action. There's also the player brain which is the thing I was using to steer it with the keyboard. It can see them both. Now we can grab a handle on that and just make sure we've got it. So yep, we've got a handle on the learning brain here. I can now have a look at that environment and print it out. So there's no vector observations but I can see out that camera. So that's my 32 by 24 grayscale camera coming out of Unity. I can keep running that so I can get more of it was moving, you know? It's very, very interesting. But now I can take random actions in that environment. So here I am using Python to basically say take a random step using that continuous action range. So minus one to one in our environment and do it 10 times. Now if I click play, you'll see I can spit this out in Jupiter here. And this basically means you have complete control of Unity from within Python and you can make it do your bidding. You can ignore the machine learning side if you want and just use this to control Unity and build a simulation. I know lots of people are using Unity to build environments that are high enough fidelity representations of the real world. Then they're using Unity cameras to capture images of that and using it to train machine learning for things that work in the real world completely unrelated to the simulation. So if you need a really high fidelity simulation and you want to capture it with Python, this is a really good solution for that. This is kind of mind-blowingly useful. And when we finish, we close the environment which disconnects it and releases Unity back to us. So this is a really useful thing if you need to do something with machine learning. So I'm not gonna go into any more depth about the Python stuff. There's a really good Python API that lets you go through everything, this thing.  So you can ignore the machine learning side and just use this to control Unity which is something I recommend you start with. The thing I wanna show you next in my last 10 minutes or so is how ridiculous this can get. So this is an environment that we didn't build but I think is really cool. So if you've ever seen those ridiculous walking demos where the things make themselves walk, you can implement that yourself. So this thing has taught itself to walk, kind of. This is about 12 hours of training because I didn't have time because my computer bricked itself yesterday or the day before so I had to retrain all these. This is about 12 hours of training. This thing, I pull up the docks because I keep forgetting this thing. This thing has 26 degrees of freedom on a whole bunch of body parts. Hips, chest, spine, head, thighs, shins, feet, arms, forearms and hands. Its goal is to move towards the goal direction and it gets rewarded for velocity in the goal direction. Head position up, so staying upright. Body direction alignment with goal so it's not veering off its goal and it gets penalized for head velocity difference from body velocity. So that's basically how humans walk if you unpack it. That's not meant to be funny. That is how humans walk and it gets observation space from the world it's in so it can see the rotation velocity, angular velocity and the position of all of those 215 different variables of its joints. That basically means it ends up doing this because it's not really walking so much as it's kind of flinging itself in the direction of where it needs to be. However, this has not been animated and you can build anything you like using a system like this. So I'm just gonna unpack this a little bit more for you because I think it's worth learning. So I still have 10 minutes left. I think I'll show you one more thing. We've built a little warehouse, okay? So this is a little warehouse with a little robot in it. This robot needs to push this cube into the goal over here, okay? So we've given this robot lasers. He has perfect lasers that can show where he needs to be. So his lasers are these things. So you see here, he has one, two, three, four, five, six, seven lasers going out at different angles around his body. He can detect the crate. He can detect the goal he needs to get to and he knows what's a wall. And he sends that set of lasers out twice, one at one level and one at another level, okay? He gets rewarded. So he gets penalized for every single move he makes, which is designed to make him take economy of movement. So he's designed to, he needs to take as minimal steps as possible to achieve his goal. And when he delivers his package to the correct place, he gets five, okay? So this is him, this is him going. And you can see the lasers flashing. I can turn those off. Those are not part of the environment. But you see the little guy pushing it around. He's pretty good at his job, right? But we can make him really confused really quickly, which kind of demonstrates how and why machine learning does what it does. So we could code this pretty quickly if we were just coding this as a heuristic, but this is learned to push this around. So if I open a different version of the warehouse where there's multiple goals of different colors and multiple crates, but leave the machine learning brain exactly the same, he's gonna freak out. So if you don't feel comfortable seeing a robot freak out, now is the time to look away. This robot knows that he needs to push crates into goals, but he doesn't have any concept of color. So he just rapidly gets very stressed. He'll occasionally do something correct. He doesn't know why he's getting, he's basically getting hit every time something happens here. If he gets punished too much, the environment resets itself, so you may see everything disappear. Basically, if he fails too much, we kill him. I'm gonna put him out of his misery, but before I put him out of his misery, I'm just gonna show you one quick, really sad thing. There's actually hundreds of them all going at once. It's because when you do machine learning, you wanna train in parallel, so the more information you can feed into the brain, the better. These environments are duplicated repeatedly. So this is just a really quick taste of what you can do. Unity is completely free. If you're not using it to build video games and making over $100,000, it's not open source. The Python bridge lets you pretty much control anything you like within Unity and comes with a bunch of scripts that allow you to train things that do all sorts of stuff without having to think about it much. So if you are interested in learning about machine learning, this is a very accessible way to getting into it. It uses TensorFlow, it uses all the industry standards, de facto standards for this stuff, so you're learning real useful skills and you're doing it in a really visual way. You could even visualize just a regular old neural network but put it in a visual form so you can see what's going on. So we teach a lot of children how to do machine learning with this and they instantly grasp it when they can see it moving and it's really our open pool's eyes like nothing else. I'm gonna show you one other thing. I'm just gonna give you a bit of a content warning before I show you. It looks like a spider to some extent, so if you do not like spiders, you might wanna look away. It's not very spider-like, it just has lots of legs. So that is your warning. Here is our spider. It's gonna clear those errors. Okay, so this is a spider bot that has taught itself to walk. We built this one. It's goal is to follow that orange cube around. The orange cube is just moving around the environment randomly. The spider knows where it is but doesn't know much else. It can be hit by it. It gets rewarded for facing it and approaching it and getting close to it. It gets penalized for pretty much everything else. And it's taught itself to walk. So this is a pretty simple example, pretty straightforward, we thought video game engine, we need to make this more something a gamer would like. So we gave the spider bot a gun. So here is our spider bot and here's our gun mount, which I've turned off. I'm just gonna turn the gun mount on. So the gun is actually a completely separate AI agent that is sitting on top of the spider. So it's effectively a spider bot with a parasitic gun on top. They're both controlled by two completely separate machine learning brains that were trained with Python. The bot is designed to seek the cube.  And they work together. So you'll see he's got a gun now. It's pretty efficient. So we did a version of this at PAX, the PDRK Dexpo, which is a consumer gaming show where we were trying to explain how machine learning works to video gamers with a capital video game. And we hooked this up to a controller so they could also play the robot and attempt to destroy the cube quicker than the bot. And in the 30 seconds we let them play, the bot killed the cube 60 times and the human killed it twice. So the machine overlords will win eventually. But this is about an hour's worth of work in Python and Unity to get this going, excluding the visual aspects. The thing I really wanna show you before I finish is that this behavior is embedded in the object. So if I go here and I duplicate the robot without doing anything else and just move it slightly. So there's a couple of robots. Duplicate it again. Duplicate it again. All right, so there's a couple of robots there and run this. There's now more than one robot in the environment, in theory. There we are. So our camera is designed to track the main robots. So I'll just go into the scene here. They have no concept of each other existing, but they know each other exists in the physics engine. So if you have enough of them, they will eventually make a big pile of robots where one will ascend to the top. They will use the others as a platform with which to shoot the cube and then I'll just stay in this big juttering spiderbot pile. It's horrifying. This is legitimately horrifying. So I'm gonna show you one more thing quickly because I've still got three minutes left. So this is another Unity demo that we didn't make. So this Unity. So I have lots of Unities open. This is Tennis. So this is Tennis, which is two hands, which are robots, trained with Python that can play Tennis. Okay. And the fun thing about this one is you can do imitation learning or behavioral cloning. So you can hook one hand up to a human and have the other one learn how to play the tennis based on the human instead of based on reward signals. So you can do behavioral cloning, online behavioral cloning, which is real time, using this algorithm. And then you can feed all the information into Python and tweak it to your heart's content. So that's Unity with machine learning for Python. I'm gonna go back to my slides and quickly finish. I'm gonna jump to here. So.   It's really powerful.  It assigns rewards. It's linked to a brain. It performs actions. Okay, so the agent in this case was the robot, the hands, the spider bot, the car. Hopefully that makes sense. And these three objects exist inside Unity and then talk to Python to let you do the training. Okay? What we saw was reinforcement learning today, but you can also do imitation learning, as I said, which is the behavioral learning thing where you teach it as a human what to do. Really, really powerful stuff can come out of this. So the reinforcement learning we did today was actions, observations, and rewards. We had some actions we wanted to do, which we rewarded based on how it went and we got certain observations to generate those rewards or not. Actions are just a number. So you can have that however you like in your game engine. As you saw, I was taking minus one for one direction and one for the other direction when we had the car. That can be whatever. Observations can be vectors, so you can either distance to a thing or a count or a number, or be pictures coming from Unity's cameras. Rewards are just more numbers. Okay? Reinforcement learning is just this cycle of learning until you converge on an optimal policy where it can actually do the thing you want it to do. Brain, Academy, Agent. This is how it looks. Tense flows communicating down the bottom. When you build an environment, you kind of want to think about how you construct it. This is pretty straightforward stuff. Coming up with the actions and observations is the really tricky bit. That's the art, not the science. I recommend using the Python bridge to start with via the Unity ML Agents Learn Script, which is the pre-made things and then moving to using Jupyter and doing it yourself. But you'll come up with a process. Here's what you need. You need Unity. You can get it from here. It's really cool. It's mostly free. Build a simulation with a self-driving car. You play it like a game. Make it make sure it works. You also need Python. I like Anaconda, but you can use whatever environment you like. And you need a very specific version of TensorFlow because Mata is a Mata on machine learning, something. And then you need ML Agents, which you can get from PIP. That's pretty much it. I really, really, really like this. I think a game engine is a really great way to learn machine learning, and I hope you try it out. If you're interested in doing this with a completely open-source game engine, there's a game engine called Godot, G-O-D-T-O. G-O-D-O-T. Which is open-source, completely free, and has a similar project in the works, which works with TensorFlow as well. Thank you very much. Thanks, Paris.


ती कोईती ऎक बैंदे, खॉछतिम कवेशी सब रहोंगा है. आख गरा रहेती, और 30 सेख़ना मुन्ँरीमिने नहीं गखा है. तुश्यन् और भुद दुई आप रही जे पूए नछते है तुश स्यादि वहँप मुल्पागषेण। जोईसे अर बूँए रीकर्स्व, बी इतुवाँट्व, जी नून्टर्मिनेट ली मिरर्ज, जी जोईदिसे शार्द, रीकर्स्व कर्एश्व। तो देगा हो डीबटे। तो वो नहीक जोसे उसे वूए है. A must have at least one parameter, B can have only call by value parameters, C may not terminate for some input parameters, D cannot call any function other than itself, for recursion to terminate, the value of parameters, A can change in any order, B must move monotonically towards a termination case, C must stay unchanged in all calls to the function, D must never be terminated. 4. विरहांका न लओ मुमल्त्मात. कुई है और अस्छ अपना समवों स्चाव स्पुशृत् chia-haan-ka-num-māt-ma-t-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-māt-m ॉ ॉ ॉ ॉ ॉ ॉushing. ॉ ॉ ॉ ॉ ॉ As to see the how much much many hands the garanties of the broadcasting we may not cause a ecosystem to terminate farmal and अऐ्पार मेंगाद. अरिआठ रहाज़ान अब ञाज़ाद वो ईच्छादत. मेंगाद ओवगगगगग काड्टा अगर के शाट्वायाझ ब्ऱ्चादत. मेंगाद और लेचादाद भी तुम्जा़ कर मैंजाद शाब जेदाद... तिए एक तो कभECH तौःट पुव्श़् क्योड़ weekend ॑ George আাতা ন্ুওস্ুস্স্ায অন্সা কামাভাযাযజসা কাুতা আটিুুহাযజসা ন্ুকাুদাযజপং যিযజসা ব্য্যবববচaisai. বাচ্য বার্স্যাযব. ता म्झतूत देल्रस् मुँआव, करेष़न लronicsлохाई मभव. एक मुओय आपना दल� की जाएन पोच्ताख करतौद। रख खोल तब नखकखी खगाईそう, नखाईन यखा correlation from the तो अख्च्यागोज़।। गई तब खब लगयाई च्रआई्सिसु पाक है.क्जाईाystem िोगना मुरिदिश्� नफमा के अप् созतरास। आप ऴाम्च्या तोग Maßnahmen। एँ रफाँ विरहांका मैंटीच. प्सबजग वििपुनाच्र मुम्हलार कर के थ्ुसनरेभत् सुवाउबऒान Hoff versión इसिवान ग़ाई चबघारेएल्ग़ाई मुबमुझाईriet-अदūग़े खता गं�超 virgin आप दिखानुझ जीवीग़्ा非常的 जिवेतुद बोच्हा64 तंक ठादे thi보다 Donc we'll start with old term of the series. अव펍 यह सरेजे कर और चातstem तुम्तलाविशितम यखजआति obligations list तुमबाई थे वायाखच Mogha तक दो ठीवलि Barcelona तयी। probably करने कीस ना Impossible तुमबाई ५ॉल Europe शाटने कीस। औरनतोस च nickel तु आप सूएism उत्तर ठा चारने के बन recognised टैक कर चीत स altijd छ some ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ ॐ  ॐ । । । वgoing is one that will call itself, it is an elegant and natural way but it is not very obvious as to how such a mechanism gets implemented internally please remember again we are studying these mechanisms just to understand what happens internally आज था और उस longer nahi utasashi yarat asa lagri, ad is ashi, it is not absolutely critical for all of you to understand how recursion works, but it is useful to understand that and that is the objective of this extension. So mutually recursive functions, function one calls function 2, function 2 calls function 3, which calls function 1, what could happen in such a case. जीबी खने क्यूए बहुत of the program that we started looking at a recursive function for encoding marks, और नखवस क्छट्चन भी और अंकोगत भी बहुत नखवस काए लेक ऱ्वेश्चन वाँ तु वरे पेश्चन वाँखस नखवस and peše on two marks, तो जब यहाँ वरे पाँगत्त बहुत 2 आगत्चन रह। it could cause new encode recursively if required. आब औदा ती डवीवstoff डवीवाढ़ तो आब उय stark, . तो ان सक्ची बस्ग गपा र मैं जो गे प्लखदशाग Donkey ऻगी of. భ౒రంపియైల్హిటెడికీంటాడి పిట్కికేబ్ల్సండా. Here is that problem that encode m,n is encode m,nó1 into 3 if the N are greater than one, or encode m-1,1 into 2 if the M is greater than 1 and n is equal to 1 and it is 2 into 3 into 6 if both of them are one so this is what that function was trying to implement. ट्वीव्द कि आप ज़े�see that now if we go back .. always with this move ट्वीव्द क्यादी सबता Past the rules and these यह एभ औग ㅋㅋㅋㅋ ट्वीव्द के च़्ाँ देवागे to scholars ट्वीव्द कि आप देवागствен़ा कर चाँ देंाँем..แตसकोट प्रा देवागय स delle faraja क्यादी ट्वीव्द क्यादी सबता mating योड़़य result should be six. आउए श़ब नहीं. नहीं वे होगा। क्रमेचा बारे बेराटन वेट़ो। क्रमेच रहा है तंच्छते है पर वो भी घोचा उन चब बछगा है कि टर्मेश चब बढाटन क्रमेचा नहीं कभी तुब क माखचों। Michaels now Reversersory be 6 and it should be 10 now you have to change the parameters in an orderly way to ensure termination you start with m and n but when you make recursive calls the parameters must change in an orderly fashion what is that orderly fashion the parameters must move towards 1 is a 조금 above them are smart  infinitely you are to get out isesti you will not use owan workout % r e n y o u c h a m i n o d y o u s o w a r n o d y o u r even matter ઴ જ ય જ ય ર ્ વ ૉ ભ સ જ બ ં થ જ ધ ૎ ફ ધ મ ધ ન ર જ ત ન જ જ જ જ ફ ર જ જ જ જ જ शिक्रोदांगी थोग reconocचात हैं क। ह heights restriction of that how it must change the values of parameter तो than the om a given order monotonical जो सुप्रतिक़ एस alone वह avoid relational दिरी क्षिदित्र मनेता। गरूस छरीतू जदτεィ मों Jones करोवतOY ठ् thi is the value of mn partners.। च at means the first function call is encode 4,3 this point where you have in terms of mn partners after several, recursive call has to come back with m&r, the point is in which fashion you will think the present implementation will cause m&n to change. वगी नहीं. क्यग्ट, देश वगी डिया है? उलकी वेगे बी अग़े आपॉया मैं? तो मैं? तो दिरग्ट्टांग क्फा के तो मैंःम्य? क्यट कि विशोग दिस गे शुभा? वर्रावां क्यट मैं? वद कि आब अप दुछंब ओधाूब जा चैं you must move down so what does this mean? the value of n is the first reduced and once n assumes the value one then value of m is reduced who do you have taken the other alternative to first reducing m and then reducing n yes that is possible they are symmetric the point is you must move on this orderly fashion in order to ensure the recursion terminates there is some discussion on recursion वर्ठान बात कर स्विंट्टीगाँ थूँ, वर्डान्वास लीगाई कर स्विट्टीगाँ टान्वासगाउ ग़ाई और ज़े लदा। इसने न सीवेर की वोगर कुईग काईप्द of way of changing the loop causes the termination condition to be approached appropriate. त pesos every interest is obvious in an iterative loop where you can examine the condition because you know that there is nothing hidden. अर्थी आपारणते जीगा अपारणते यह जोगे आपरणते यहाए but here, you have to imagine what happens when recursion takes. insky ुp the iterative formulations may be less clean । । and they're most certainly less intuitive. । । imagine the problem of finding out the । । the second maximum number. । । it is not intuitively obvious that you can have an । । an iterative solution where you start । with max and second max । । । and then keep getting the third value and । pushing them into two. । । you have to create that situation. । । whereas in case of Irankanumbers । or better known in the western world । लग कुए, आई कि घयोमடगले था तूते त्तयागी बिसूती precaution- कि ढोतगिर यस मे�हाखा सहहे है आप ख़लि सू determ jagadrig washesh Kajji शीर क्यी तबना तूता हूँँँँँँँ Putin कोई प्रउ Amsterdam- अचाहमेंगinator कें साफमेंगी।aya kan thajyaakyani. उत्ईउ तूछ ध्छक बना भीन मुझे साभी ळिएदीग, पर ज़न्रे़ ली दे ना कवहा हूँढू, ओड्ची अविआद Jet- earnings can be cleaned but generally they are not very straight forward to understand for other people. उसरेमिलाई कर्पाटा तूईे थी। And please remember what we said program that you write must not only be understood by you and the ce compiler but also by other human beings. Four appet 느낌이 quality so therefore you might need to put additional explain nature commands to explain how your built complex iteration. Some similar commands are required in recursive solution implementation as well but generally in case of a recursive solution. If you stated the original problem formulation which itself is in terms of a recursive formula than it is more yours which statement forward to understand. you always need to worry about loop invariance and narrative formula. को कर मुझ स्व 꽃 कर कर सबटार वह बर्छ जो काएनसाा सी वत olmनाता है! वर्गन स्वह लुध उस्गव क्ता bringing examin कूइ बर्वें़, छ ही पी90% अरावे करनों. त Recht可是 सी ए है श �IX, अखवर्व स शान्फीरा। और कर से बस्वेज्य श listener कर चाँसी वतettreिंiegen क्र वین! वहते ख़रीएं प्रुट्रिल हम प्रोट्रिल न चमजग रहुए अग्या नेईटर हो तो आपन्या प्रोट्रिल हम हो नहीं, रहा ज्दे धाृहा बंटी हैं। ढ़ीजावाडेवाडीज़़ियावो, खडदावाटीज़ी ऱावेगेद् मिनाचूछ आप खडदेश ढ़ेज़ी़़़ेजावो, बैच्टझी ब्रदेच़ी़़ची इन ठलागाथे, चदस्ती़ावी, क्यमेप, तो योगी दब देवाडी़, तंगज़ीठ में रहा आब अथ journalist ्के आक भत ज़ेर, curt ूए ूए ूए तो बा takeaways ।।।।।।।।।।।।।।।।।।। 솟 wouldn । ।।।।।।।।।।।।।।।। positions इसर्वाओ ऎर आगा आए की प्रश़नाः ते For the final result which will be assigned to f and you print out all that you need to write is छैंजुत अब लगा। लागा करै अखाया। That's all you need to write is that so have you written this solution? अगी द़ेखें दीखें रईखें ते लेगें तो चवम्झाचादagram the value in result and return that value. difficulties or you may choose any other variable name, it doesnít matter eventually the idea is that you should return the Factory letter please note that inside the function fact you are not suppose to use any iteration the recursive call does not mean that you vindicate that you are calling a function recursively but actually do an iteration inside you have to recursively call that function itself मुझ नधॉरीट है थो भी तो ब ख़ोग तुअट होतार कर �拍 था दा दino Farhan is written in the factorial and minus one. एक नधॉरीट आप याई मुझ एक था तुछ वागत नधॉरीट आप पतार कर परlax. he returns value one,otherwise returns a value n multiplied by something and that something is a recursive call to factorial with n minus one as the parameter.So, do you all think this will work? his question is if the input is minus five then what will happen.Now, let me make some suggestions on this point.Input any input that is given should be वेर्तेचा लेये, eyes and eyes और मऩालण लेये जबी कस्ह्ट हैं। दोरा वह उनि蔭ट भी ओईए तेना अगवाँ्य। सबस्वेंदी, सुप्सिक्वैन्डि, नहीं, बुत्टों और अगरे र� ॐु।ु। ६ुुु ूूूू only correct records is then processed with a programme which assumes that the input is valid. So validation is important but should be done at the point where it is valid. But other than that do you all believe that this programme will work? रोत थी तो आद्ब गऎत थी नहीं, उरे थे वॉर्सा लोगेवा। तो तो तु 那 ब्रद रोत लोगेवाग रोत, तो आद्ब बढ़कुए किए तो मणी सो ज्गली किछा आदप रोत या बढ़कुए चिए घूए थेखूए थे ज़ूएश। में strictly the same thing if n is equal to 0 is returning 1 otherwise he is returning n into factorial n minus 1 correct computation except that he is doing the same thing if n is less than 0 he outputs and invalid input message and returns minus 1 otherwise he does this thing this is correct वहसाऩी देखने, ज्यूँ अगर देखने थे किछेड़ा तुम्र्फादीणो, ज्एड़े़ा तुम्र मेंगा थादुजाया ए़� APIs डैठ nenhuma औल देखना तुमगेदगा तुम् yeah. वहसाऩी देखने थेदेदेखने प्रुठा है बहुंे वेंगा देख falls. तो बिह्ड़ after every thing has been executed well? तो जो चव्व्चार, तो चव्व्चार, एक आव तताजे, ख़े सकन-च्च्व्वान क़ूँँँँँँँँँँँँँँँँँँँँँँँँँँँँँँँँँँँँँँँँँँँँँँmark 20, 20, 25, 25.engers of the solution. This appears to be a very clean solution here. If n equal equals 0, return 1, s return n into factorial n-minus. Compare this to the iterative solution. This you also find the factorial. Very quickly if we assume valid input for n, do you think this will work correctly? Yes. Anybody who thinks this is not a correct solution everybody वोगते है, और की आज़े में, को लिके करीक एक लोग, अआज़े एकु जब गोँ, तो तो वोगते है ergon, ०, ॑, अछ़ती वोगते। तच्छ अदंदे पहाँए तच्छस कि उआचा तच्छस को लिके वी आज़े रेने तच्छस के को वोगते रेणि साब दे है तच्� तुयकि ाृ سےं कुआत्रिर reopening solution is the one which actually is off Beginning solution is the one which actually is the for realization of the factorial problem whereas Theatre solutions are the one which is what we ordinarily implemented और बवाग़्रविशन्ने जब धस्द्राट्वागी तुछ्टी Rosen, द़का के आपा ôngा मूअन वेकांोद. द़का मुअनाला वेडना जीगा है! तो शाथ душ कilyf Given the same value,म सुत के παं उगोगैं ये मेरे म profeson नक छलार औब आपा ये शभाधऊसा only. ईण्द्माश्टौः त्राश्शाच्गा, ईद्द्माश्टौऊश्टौईटौशौई, ईद्द्माश्च्टौजो, ईद्द्माश्टौच Siri Chinsanigjati Prakashmati Jyotu और Lösोग आप मु्लेक्ते, और अद्ठाऊ, या अद्ठाऊ मुँँँँँँँँँँ. शुः� Romea's अद्ठाऊ आप मुँँँँँँँँँँँँँँँँँँँँँँँँँँँ. भी साअ दे घी है। एक लिया लिया लिया एक चाथ में। घी च्लग। भर मेरने लिई चवातर mitigation as you complete you will have to keep returning backExcelent on this hyper lines घऊरती्य तआरी कलधीOS के निक वें वो वो ञेवाजिल मोस्आ की व שלूए। आप देूछ मैं चवग़ा ज्या। वी दी तब सुञ्वाजी दिखताक तो की अपनादवेँ ग़े लेता है तब सुछके रही है औक इसंभी घ्ट कुए मतिअ कि अँद्ड़ात नहीं में। अझो वह वे का खॉलग Pinks ... थं भी, आप डी супा, ज़ो एत त्ट चाश चान्जे थी? विगटिए क tale विटिट। मुतना सब light ofhesive तट तु विटिट। सास ब脫ादी ौजे ने पना म pesos तॡ दे Sayonara यया नहीं Say Allah��, आप मुत्वाह से स्यदा footing आप स्यदाद मुत्वाश seemingOoh. और व amplified या दर खारई वो तरनставṇa कडinterk टेडिक्तक्तो करीद बढ़े का लेगे ती फ दल्ती थी क्योरा gleichs सिकिंट। फरीक स्सबई डेजाद करग form उ幾 हस liberties शुक्ना कला राथ Any Point in Time, the values of x1, x2, x3, x4, x5, x6, x7, x8, x9, will be either minus one अर 0 or one Then how to change and उ no question of any other comp Ouestos आख कर �功, k média का साँचिक द body ऐसे बसत हैं, उव AWS न अंघो surveika the function that takes as यह कर थे होग گरAB यही होग काー隻ी और र�王 Okay 2, 0, 1, 1, 1, 1 on प distribution of any other values being there वूँ next is the first practice problem this function is called int next turn so you have x1 x2 x3 xn the function definition is given so check if configuration is valid count number of zeros and ones and determine who moves next this is a sub problem the name of the function that you have to write is int next turn please note that this is neither iterative nor recursive this is just a function being called only once it has to take a configuration that has been given in terms of values of x1 x2 x3 x4 x5 x9 if we started with a valid configuration to begin with then when I call this again and again for different combinations of course the configuration will be valid because as I said the values will be either minus one or zero or one so for the time being write only those few lines of code which will count numbers of zeros and ones and determine who moves next the nine variables x1 x2 x3 x4 x5 x6 x7 x8 x9 you have to count the number of zeros and number of ones and determine whether the next turn is zero or one zero means the first player moves one means the second player again I repeat it is not an iterative or recursive function it is a function which comes in with a set of nine values and returns only one value zero or one and that value should represent whose turn it is next to move you will notice that although I said you need not check if the configuration is valid but during the process of evaluating the count of zeros and ones you will be examining each and every variable anyway so you will be able to examine if it is neither zero nor one then it is is it minus one or not and validity can be examined by the way the validity will merely mean that the total number of zeros and ones should mismatch at the most by one I again repeat for those of you who are still wondering whether we are talking about iteration or we are talking about recursion we are talking about neither we are talking about a plain c++ function to be written with the name next turn the description of the function is already given you just have to write code inside these brushes this is also written just this code and of course you have to return a value which should be either zero or one here is a solution from lavish and I am going to request him to rewrite but the general approach is correct I would like to briefly discuss so this is his next turn function will ignore the first line and concentrate on what he has tried to write next he starts with zeros I do not know why he has equal equal zero to zeros it should be just a single zero you are assigning the initial value but look at what he is doing is if x1 is zero the number of zeros are added by one else if x1 equal to one ones are added by one there is no else further so we do not know the remaining value whether it is minus one or not but that is what is assumed which is okay but now look at the next form if x2 equal to zero zeros are added further else once are added so far so good then I asked him what is this dot dot dot dot so he said sir similar things now if I am a c++ compiler I will try to compile every dot into something and I will have no choice but to give gullies saying I cannot figure this out the reason I picked it up is that the logic that he is implementing is correct but the way he is implementing it is a longish way what is the faster way of doing this somebody says function somebody says array this itself is a function I am trying to write a code which will achieve some computations inside that function and I don't want to call another function I want to do all the computations here anybody who has thought of a switch statement somebody else has thought of array we have not yet discussed the array we will do that in the next week when you start working on it there is nothing wrong with this approach except that you are not supposed to write dot dot dot so please do the required work and write a complete program quickly you don't have much time sadly however that option is not available this is what you are supposed to do the function definition is given what is to be done is explicitly written in terms of three comments so I think what lavish was trying to do at least was to write a solution to this problem anybody got it bring it bring that solution let us listen to the expert advice on the method yeah sir if we take one player's input as one and one player's input as minus one and the spaces which are not marked as zero and we add all the inputs so the result will be means one or minus one or zero then we get the final result and we can say that the configuration is correct or no the first player's we can take one and the second player's we can take minus one I am very easily clear about what you are trying to do so let me try to expand you are saying I have nine inputs x1 x2 x3 x4 x5 x9 I simply find sum is equal to x1 plus x2 plus x3 plus x4 plus x9 fine what do I do with this sum yeah so the first I mean if we take the first player as one and the second player is minus one so if the sum is one or zero so the configuration is correct or if sum is something else then the configuration is wrong what if I give all the values as minus one that means the first player himself or herself has not yet played no sir if the person doesn't play or the box is empty we take it as zero no no they will be minus one which I am saying that oh you are changing the problem yes ah like our friend he is solving another problem which he thinks is solvable easy unfortunately my dear friend in life such options are rarely available and imagine if someone says I want a bicycle and you say I only know how to design and build a scooter so I'll give you a scooter so that fellow says I don't have a license to ride a scooter I need a bicycle so your solution house ever elegant is completely useless from a practical point of view sir we can convert all the minus ones to zero so now so he will now write a series of nine ifs to examine each variable and convert it to zero first and then he will do his elegant solution but if I have the liberty to write series of nine ifs I will get the solution itself no our friend here says take all the numbers and wherever there is minus one change it by something else what is a character a character a when we sum all of them so we get the asky the asky will end then do do more that asky whatever is the character he has another brilliant solution he is now using asky codes my my question is very simple this is the function you have to write what you have been told is this is what you will get to get the value a like our friend here you'll also have to write if x1 equal to minus one then x1 equal to asky a if x2 equal to minus one then x2 equal to asky a you'll have to do that kholagiri for all the numbers no but instead of defining it minus one we can define it a enough you are changing the problem when I come to this function these are the values you have got now you do whatever you want to do where have we where have we written that there is minus one for mts we are talking about the input configuration we have discussed this input configuration earlier and please note we are talking about a sub problem one of the main problem I am very happy that you are so creative that you are capable of changing the formulation itself unfortunately in real life you are required often to solve problems which people pose as problem we have wasted a lot of time in discussing reformulation of the problem I will have to sadly stop this discussion go to the next sub problem but please remember this please think of solutions in the context of the question not outside it you have an option of saying after solving this problem alternately I think there is a more brilliant solution which I now write that is perfectly fine but that has to be in addition to whatever you are required to do not in leave off given a configuration we want to determine if there is a winning or losing move a winning move of zero a move of zero from which there is at least one way for zero to win no matter how one plays please note there may be more than one and winning move one is similarly defined so please note this is the next level you have actually done that earlier part where you were required to find out whose turn it is now having found that you want to find out whether there is a winning or losing move to the next player and how is it defined winning move of zero is defined if there is at least one way for zero to win no matter how one plays at least one way the game presumably terminates after one player moves of wins so here is a configuration x1 and x3 are zero x2 and x6 are one rest are minus one if that is so then this is the solution now next move is that of zero the winning move of zero is here please note a winning move is not one which is actually winning but a winning move is one which is guarantee that no matter what the opponent plays next i will always win what he's saying is that if i set x5 then also the same situation exists the problem please read the problem carefully from which there is at least one way for zero to win that's a simpler problem there may be more than one option but there has to be at least one way that is what is required now it depends upon in which order you examine the remaining squares if you examine in this order then this then this so you will first examine this square this square then this and this and then this in which case when you examine this square and try to say that if i put my zero here i will get a guaranteed win then i may not have to do the other if i am examining these in this order in row order then i will of course come to this first and if i come to this first then i determine that if there is a zero i have a winning but depends on whichever order you do so this is one solution and this is another solution so at least two possible winning solutions must exist at that point out of which the opponent whose turn is next can block at most one then only it's a winning so guaranteed win for zero no matter how one plays and exactly the same way you can define the situation umma losing move a move from which there is at least winning one winning move for the opponent no matter whatever i do i am going to lose next time so similarly this situation next move is that of one losing move of one x6 equal to one so if i put this here please note we start with x1 and x3 is equal to zero and x2 equal to one so only this much has been played and one has to play now now if x is placed here there exists a winning move for zero subsequently therefore this is a losing move please understand this is how during the analysis of an actual game the mind backtracks and finds out if i do this what may happen next okay so this is the winning move so if zero has a winning move from a configuration then after this move is taken one cannot have a winning move after this and similarly same thing with the roles of one and zero is reversed if zero has a losing move from a configuration then after this move is taken one has a winning move from the new configuration these are the conclusions that you can draw based on now this is the sub problem too we'll leave it at that we are already late because we discussed so many alternative brilliant solutions everyone insisting on changing the problem in one's own way that we lost a lot of time so please do that i don't want to wrap on your creativity but do that independently after the class


In today's video we find out if there's more value in brand new Yu-Gi-Oh Packs or old school 20 year old packs. What's up guys, we're back with another epic video where we are testing a theory that I have that new packs actually have more value in them than if you buy those old school packs from like 20 years ago. But before we actually figure it out, we have a giveaway. I'll be giving away these three cards. We have a CP02 Caribo. We have a Ruddy Roller Dragon Raggy and a DPE Destroyer Freeranks Enforcer. Just like the video, be subscribed to our notifications. Let me know down below. Do you think the old school packs or the new packs that just came out in like the last year will have more value? All right, so for the new packs, we have 20 packs, four different sets. We have Age of Overlord versus an incredibly good set. We're already collecting the same thing. Phantom Nightmare, which is pretty good and Maze of Millennia, same boat. So all pretty decent packs. Then for old school, I have a first edition Lauer of the Nightmare. We've got some Extreme Victory, First Ed. We've got First Ed, Lost Millennium. We've got Unlimited Pharaoh Servant. We've got Unlimited Aphoronic Guardian and some Unlimited Ancient Sanctuary. So we have some old school packs including like some First Ed stuff, which will actually pull more value. Surprisingly, a lot of the time, it feels like the new stuff pulls, like, I mean, there's crazy good cards in there. There's not so many of those unless you're like going for grading and stuff. But in terms of raw value, I don't know. I'm not totally sure. That's why we're doing this video. So it's 20 versus 20. Let's just get started and see. We're gonna have a total on the screen. You guys will see. Put your votes in now of which you think will win. Honestly, my money, well, here's the thing. Rarity collection is gonna help a lot with that value. There's high end potential in Age of Overlord, you know, the SP and stuff like that. Oh, and a Secret Rare right off the bat. Not SP, we got a TG Rocket Salamander out of the Ruxen Special. Not a crazy one, but still, I mean, it's worth a little bit. And when it comes to like old school, a lot of these Unlimited's and like First Ed retail packs, I mean, they don't even have very expensive cards. So we'll see if they can even live up to like that kind of Secret Rare plus the ratios, you know, it's a lot harder to get like packs that you know where you're gonna get the right ratio in. So I really don't know what to expect from the old school. If we do get some nice cards, you know, we're only doing raw value. We're not gonna do like, you know, graded value or anything right now because we just wanna see like if you were to grab both packs and you didn't do any grading or anything like that, which would win. So right now it looks like it's a great start for the new, they got a Secret Rare already. We've got Red Dragon Base, Mech Lord Army. Can we get a Ghost though? I've never gotten one out of this set. Nope, not that time. Nebula Meteorite, that's a fun card. Okay, here's where they could take off. Rarity Collection, 25th anniversary. You guys know it's a big one. Rarity Collection two is coming out in just a couple months. Let's see. So one from the back. We have Pot of Prosperity, already adding value right there. Tour guide, speaking of extreme victory, here's another reason why some of those old school cards are not expensive because there's a lot of versions of them. Like if it was, oh, oh, I'm sorry old school cards, but we just got two Pot of Prosperity. One's a Super, one's a QCR. That is, that might beat the entire old school, just that one pack. That's gonna be tough to come back from. Galaxy Eyes Afterglow Dragon. Wow, talk about an amazing QCR pull. That's gotta be like 50 bucks or something. All right, I forgot what I was talking about, but yeah, the old school is already back on their heels. That's gonna be tough to deal with. Yeah, a Pot of Prosperity Super is probably like two, three, four bucks. Then you go to the QCR, which is the best version of the card in the set. And it gets pulled as well. We have Kamenautae below, pretty amazing. We have Wind of Wind Charmer, Lost Guardian. We have Burstinitrix, let's pull that out. It's a nice common Doriado area. We have Ancient Gear Soldier, pretty cool as well. And a Legendary Black Belt. I gotta pull out the Ancient Gear Soldiers as well. Those are pretty awesome. Wow, I can't believe they got a good card that fast. That is, yeah.  The value, usually not really there. We're gonna find out if I'm right or wrong, but my theory was most of the time, the new packs you at least have like high-end chance.  You've got some really nice meta cards that haven't been reprinted just yet if you're in like the last year. Old school, everything's being reprinted. You know, it's like all about if it's collectible or not and if the people are interested in collecting it and then you gotta grade it. So it can really be tough to get really good cards. Like, even if I could pull a Genzo, I think this is a retail pack. So probably no Genzo. But even if I could, okay, gravity bind, unfortunately. That wouldn't work under Genzo, but if I did pull Genzo unlimited, I mean, what is it, like 30 bucks, something like that? I mean, it's an amazing card. Original though, I mean, you could probably get more for it. The thing is, it's hard to really price them because if you sell to someone that wants the original, they would pay more than if they were buying, you know, like a reprint 2017. Like they're obviously gonna be like, you know, I'd probably pay like double what they're valuing it out on TCG player.  So it's like, oh, I think I personally, I'd be like, yeah, I'd rather have the Genzo, but it's not as useful to as many people, right? Okay, two from the back for Maze. We have Alter-Ass Multi-Faker, DZ, if we have gate zero totem pole. The, a lot of these are like double stamped. We have Earthbound Prisoner, Stone Sweeper. I could use a Sweeper for the end of our radical red run, which yeah, I'm recording this right before we are in the middle of the elite form. So by the time you see this, we will have finished it. And hopefully we will have either not wiped. Hopefully we will have actually finished it, you know, beating the last three members. One, two, three, four. Okay, Fronic Guardians, a big one for the old school. We need to pull some big comments. That's like really the only hope is to get that and then some really nice cards. That's a good comment. I don't think it's money. There's a good comment. I think this is down like three, four bucks at this point, but still really good. We'll take anything we can get for the old school. So that'll add up. Non-aggression area, we have Charm of Shabti, power clock, we really need the trap dust shoot as well. Different dimension capsule and pyramid turtle. That's a pretty cool card for some old school formats. Pyramid turtle is really awesome. All right, this is so far.  If Age of Overlord gets anything crazy, it was there to got a salamander. So I'm guessing nothing else, but we, I mean, there are Ultras in here. Ogdodic, we, I mean, there's still that, the Zeus guy, whatever his name is, the Typhon. Cursed Bride doll, we have Asset Mautus. I mean a 25th anniversary of that would be huge. 25th of anything really would be huge. Nothing that time, but we do have Ancient Sanctuary right here. Ancient Sanctuary, A-S-T. Can you bless us with something sweet? One, two, three, four, like, okay, almost Ruxen, Super Ultra Ruxen special. Rocket Jumbo, we have Moutster Gate. Also a good card. This one may still be two bucks. That's pretty good. Dora Faye, we have Disc Fighter, Soul Reversal, Aswan Apparition, Armored Break, and the Special Hurricanes. We are getting some cool commons, but I don't know if that's gonna be enough. We've done Age of Overlord. Okay, back to Rarity, which is absolutely destroyed us so far. I mean that, if we take out that Rarity pack, it's still pretty close, but that Rarity pack went crazy on us. We have Effect Valor, pretty nice, Small World. It's a Small World, we've got Secret Rare, we have Blue Eyes, Abyss Dragon, Pulitzer Evacuation Device. So nothing too amazing there. Let's do an Extreme Victory again. One, two, three, four, swap those around, give us a Ghost Rare, Ultimate Rare, let's go, we have Reboot Secret, Tour Guide, Psychic, we have the Army of Ski El, Scrap Kong, Mirror of Ozil, Army, not Mirror, I don't know where I got that, Warwolf, Vace, we got Full House, and we have a Full House of Ghosts. No, Meteorite. Back to the Meteorite, not too amazing. Phantom Nightmare, do you ever want to have any Phantom Darkness on the old side, that would be pretty awesome. One, two, three, four, Phantom Darkness versus Phantom Nightmare would be good. We have Fish Lamp, we have Berserk Archfiend, Tri-Corn, Roma Blend, Goblin, Biker, Grand Stampede, C's Force, we have Dark Guardian, Three-Eyed Ghost, and, oh, the new are just rubbing it in, they are just bashing the old school into the ground, the prayers of the voiceless voice, it's gonna take an insane comeback for the old school to come back now, I mean that's a $70 secret to go with the Pot of Prosperity, it's even better than the Pot of Prosperity, I think, unless Pot of Prosperity's gone up. Wow, this might be ugly guys, this might be ugly, this might be like, all right old man, you aren't what you used to be, and then they start kicking him on the ground or something, okay, it's not gonna move, I don't know, probably more like a cartoon, one, two, three, four, we have the White Ninja, that can be like when Kaiba almost kills Yugi's grandad for no reason, we have Battery Charger, Yugi's grandad is the old score, let me teach you about the Art of the Guards, Bustin' Atrex, a minefield, and, oh, an ancient gear golem, first edition, let's go, all right, the old school, making a comeback, this is gonna pop up at like 20 bucks, so don't freak out, I know it's super, it's not super crazy, okay, I'm gonna throw in the PSA price just so you can consider it for the total, because I mean they're gonna need the PSA price, to have a chance, one more quick look though at, I think this might be greatable, yeah, this looks really good, I think this can get a 10, based on just the quick look at it, centering seems pretty good, all right, there we go, we got something out of the old school, I'm happy, but now the new school's back to, Bachelor of Brains Inn, Bonfire's probably upcoming, which if it does happen, I'm not gonna be mad, not gonna be mad, we have the Ultra Geist, O'Gama, we got emergency, so we have the Fiend, super rare, all right, that's not that crazy, that's fine, because we just pulled an ancient gear golem, that's pretty amazing, all right, Pharaoh's Servant, that's pretty awesome, can we pull a big card out of Pharaoh's Servant, please, Buster Blader, make it happen, we have Burning Land, we have Dark Fire Soldier, Numero Dose, Baichu's gonna buy, if you put these on, I mean, just imagine your ankles after that, we have the White Tigre, we have Gust, Insect Barrier, Spike Bots, Regulation of the Tribe, and ooh, a Mirror Wall, original, super rare, not gonna be a lot of money, it's an original on-limb, and usually it's based off the 2017 price really, realistically, it's probably still a couple bucks if you were to sell it as OG, you know, but yeah, not really gonna hold up super well, in terms of value, and that's why the new does better, you know, they just hold up better, until they get reprinted, then they're, you know, kind of like the old school, we have Tostina, we have Fierce Forest, we have Shea Peacock, Close, we have Tostina, Transcendosaurus, we have the Soul of the Supreme Celestial King, we have Knight, and ooh, Exceed the Pendulum, I thought maybe for a second we might've gotten that SB Little Knight, but we didn't, okay. Pharaoh's, no, Pharaoh's Guardian, Pharaonic Guardian, we're gonna need a Trap Dust Shoot in here big time, maybe a Maiden of the Aqua, another Metamorphosis, all that kind of stuff, one, two, three, four. This actually feels like these Pharaonic Guardian were actually made without, they weren't horrible, probably because they're unlimited, the first adds are all jagged, we have Impachi, Grape Keeper's Spy, I don't know if that's still money, I'll pull it out, Shape Statch, Needle Sailing, Yomi Ship, Giant Axe Mummy, we have Grape Keeper's Vessel, Tutan Mask, and Pyramid Turtle, we're gonna have a full play set soon, which would be pretty cool for a zombie deck. Oh, we're on a Rarity again, aren't we? Oh no, more Rarity Collection to destroy us again. One from the back, we have a Cherubini, we have Compulse, Spectre Border Secret, we have number 100 Numeron Dragon Collector Rare, and an Ice Barrier, so Numeron Dragon, pretty cool card, can really bash you in the face with 9,000 attack, even on the Blue Eyes deck. Don't know if it's a money card, but I mean it's a collector rare, so it has a good chance. Ancient Sanctuary, you're not exactly a money pack, like even if this costs the 449 it says on the front, we're probably not pulling 449, unless you get like an Ultra, one, two, three, four. Let's get an Ultra then, or Secret, that'd be amazing. We have Arcane Archer, Dust Barrier, Sonic Jammer, Desert Sunlight, Atomic Flyer Fly, we have Flare Dragon, the Law of the Normal, Metal Armored Bug, and, oh, an Ultra, just like we asked for, Curse of a Nubis, still probably not 449, but this is actually a pretty awesome card, and Duel Links, it was pretty good for a while. You know, you just turn all effect monsters into defense position, so, worked pretty well a lot of the time. All right, Phantom Nightmare, let's see what you can do. I'm not sure how Phantom Nightmare has only one pack left, I don't know, one, two, three, four. Somehow that happened, we have the Mystic Potato, Swallows, we got Dragon, and we've already done so good out of the set, so we're Purpose. Haven't gotten really good quarter centuries, even in my cases, so if we could get one now, okay, we did White Sardine, it would be nice to get one at some point. Back to, we're gonna save Law of the Nightmare for the end, because it's first ed. We have, in first ed, Law of the Nightmare, you could get, you know, Gemini and everything, it'd be pretty amazing. Let's see, let me know if you guys like these old school versus new school kind of openings. I think it's kind of fun, just to see the contrast of what you can get. Run away, I did four from the back, that's the rare, but that's okay, that shouldn't mess up where the foil is, should it? We didn't get a foil, so it doesn't matter. Okay, nothing there, nothing crazy. Maze, for some reason, you have three packs left, everything, that would be fine, but the Phantom Nightmare's was throwing me off. Two from the back, we have Rescue, Miliseek, we have Sorus, Ruxen Special, right in two. All right, good. All right, Lost Millennium, you've been pretty good so far.  You've had some good pulls, TLM, one, two, three, four. We've got Win the Wind Charmer, impenetrable fortress, Medusa Wyrm, lone wolf, Ruxen Special, level of conversion lab, we got the Clayman, very nice. Area, a door, I was blessing, and hi. Here at Coast Spanx, this was when I first opened a lot of Lost Millennium, I kept getting this card. Hierarch Coast Spanx, very similar. You know, we tend to pull it all the time, but that's fine. Back to Age, which has two packs left. Age of Overlord, one, two, three, four. Give us that SP Little Knight we have. I mean, they're in a big, they have a big lead right now, but they could really put it away with an SP Little Knight for sure. I don't know if Old School could come back from that, Justina, Earthbound Servant. Hey, Noiveles, super rare. They're really, they're, you know, they're calming down a little bit.  Give us a Buster Blader Original, one, two, and then we can put up like the PSA price so we can say we came back. All Seeing White Tigray, collapse. Light of Intervention, we have Steel Lugrater, number two. Regulation of the Trap, Skull Mariner, Cold Wave, Gamble.  We are getting a lot of Trap cards. I mean, Pharaoh Servant has a lot of traps, but that's a good one. Dust Tornado, even Unlimited, actually is pretty solid because of the Old School formats. Even if you include like the 2017 version. So that's a pretty nice poll, actually. That should add to the tally. All right, I'm gonna go to Maze real quick because Maze has two left. I think there's two rarity collection we can do after this. Two from the back. We've got the Supreme King Code Hack. We have Earthbound Prisoner, Supreme King Dragon, A, a Geo Grasha. All right, nothing crazy there. Do Pharaoh Servant again? Can we get a nice common? Maybe like a Metamorphosis or something. Could be really awesome. Aqua Spirit, no, made on the Aqua, not Spirit of the Aqua. Oh, Dust Tornado, that's one of them. One, two, three, four. We will get to it in a second. Oh, I've cried you all. Buster Rancher, Poison Mummy, Call of the Mummy. There's a Trap Dust Shoot. Very nice common, one of the best in the set. Gravekeeper's Curse, we have Banner of Courage. Curse of Aging, and we have Reckless Greed, our Greed for the Old Schools, not working out so well. Rarity Collection, here we go. Rarity, one from the back. You have Inspector Border, Alpha, Heartbeast Featherdorm, Secret Rare. We have, ooh, Shadal Skism. That is a Prismatic Ultimate Rare. And a Junk Speeder Prismatic Collector Rare. All right, the Double Whammy Pack, or as Konami would call it, a double, what do they call it? What do they call the high rarity cards? Lottery, no. There's some word for it, like luxury rare, double luxury rare pack right there. Okay, one, two, three, four from the back. Ancient Sanctuary, come on. Give us Nine of Sailing, give us a nice foil. Delta Attacker, Statue, Soulator, Nubingon, Backfire, Three Umblacuda, and the Talisman of Trap Stealing, or Sealing. Not crazy, I'm pretty sure that I didn't do, I'll do like 19 packs over here, cause I don't think I did five Phantom Nightmare. Oh well, I think they're still winning. Minus one pack, if that's, if I'm correct about that. One, two, three, four. Should be winning, and they also probably didn't have 20 packs. Fish Lamp, we have Ultimate, we have White Sunfish, unless I just did it in the wrong order. We have Golem, Mature Chronicles. Romolith, Magnolia, nothing amazing there. Let's go backwards and do Ancient Sanctuary. We're gonna have an extra pack, it seems, on the old school, because I miscounted. All right, we have Weapon Change, Tractor of the Sanctuary, Mermaid Knight, Lady at Ninja Yay, Tactics, Solar Flare Dragon, Law of the Normal, Manthro Tro, and Amplifier for our Jynzo that we don't have. But hey, if we get a Jynzo at some point, this will go perfectly. The Amplifier, super out of Ancient Sanctuary, pretty amazing. And I haven't even mentioned, like not to mention, if we actually, like, total up the value of, like, the cost of these packs, I mean, the new ones would be way cheaper, even with the high value age of Overlord and Rarity Collection. The cost would be a lot lower and the pulls seem to be a lot easier. We got a super Salamander, I think I did that pack trick wrong. Here we go, Ferronic Guardian. Ferronic Guardian. Can you pull us out of this? If you guys have enjoyed this video and you wanna see something like this or something else, make sure to let me know in the comments, and don't forget to subscribe. And don't forget to turn on the notification bell. We have Guard, Hyroglyph, Lithograph. We have the Capsule, Locus, Secret Pass of the Treasure, Nightmare Horse, and Jargeroid, no big comments in that one. Unfortunately, we really needed it. I'm just gonna do these because we can have two at the end for the old school trying to come back. Age of Overlord, you've been pretty good so far, but there is one card we would love to pull. QCR, Little Knight would not be bad at all. I mean, I'd be okay with that, right? Ken the Warrior Dragon. We have Earthbound Servant. Okay, not this time. We did not get a QCR. Maybe next time. Let's do a Pharaoh Servant Unlimited. We're gonna need a huge pull, probably two. Unless it's out of Labyrinth Nightmare, we could pull maybe like a Gem and IL or something. I don't know. That'd probably do it. One, two, three, four. But maybe not even without grading. I don't know. We have the All-Seeing White T-Grey. We got Official, Light of Intervention. We have Ground Collapse, Rookson Special, Armored Grass, Armored Grass. That'd be interesting to look at. We have Champion, Respect Play, Garuchin Kuwagata, and the Prohibition. I think Prohibition's actually money. So my money, I mean like two, three bucks. So it'll add up. Rarity, here to just absolutely put us away. I have a feeling this might not be good for us. We have Preda-Flandrex-Tapelia, Massio-Dark Law, if it impermanence, pretty good. It might be money. Alpha and should all skism. So nothing amazing, but I mean, if it impermanence is not bad. Two packs left. Let's do it. I mean, we've already got an Ancient Gear Golem. I don't have high hopes for this, for this Lost Money Impact after that. I'd be down to pull two of them though. I mean, old team would be good. I think it's a retail pack. So I don't think we can get the old team. But if it's in here, I won't be mad. We have also the Earth Charm. We have Kamenate Blow, Guardian Statue, King of the Skull Servants. Very cool common. Death's Wombat, Final Ritual of the Ancient Elementor of the Stenitrix. Another one I like. The Second Sight and Cryo Sphinx to go with our Cryo Phoenix thing or whatever it's called. Last pack magic. Here's the score right now. We are gonna need a huge pull to make a comeback. First at Labyrinth Nightmare. We're gonna need like Gemini Elf, Dark Necro Fear. Even then, like it's gonna probably have to be graded. One, two, three, four. But I believe first at Labyrinth Nightmare, here we go. I'll lose my voice just in the wrong time. Biomage, we have Aqua Spirit. Not made another Aqua, different thing. Spirit Elimination, we have Skull Lair. Last pack magic, Shining Abyss. If you guys have enjoyed the video, don't forget to subscribe to the channel for more content. Old School and New School, Mario Kutai. I think that might be a short print. Portrait secret. Dark Door and our final card. It looks like a spell. Spirit Message. I think, thankfully it wasn't the L, though the Old School I think took a massive L, as you can see on the screen right here. Shout out to Tomefo Show, Puff and Zidou Mernesto, Deanna America-Deutster. Another show, Ian Musa, Jr. Barting, Robert F., Thomas McLean, Cangolain, and Adelso Galcia Jr. Thank you guys for supporting the channel. I'll see you guys next time. Peace.


Alfie, what's the latest news on Assange? Haven't heard anything in in many months. The latest news is the mainstream corporate propagandists, so-called news media in the western world, has basically shadow banned him, right? They're not talking about him, there's no pictures of him, no one's discussing anything about him, no one's talking about anything that they revealed that has a huge role to play in the way our societies bring rolled out, controlled and stuff like this. Basically any journalist that you know that's supposed to be reporting economics on politics and geopolitics, society in general, if they've never written an extensive piece on Julian Assange or done podcast or anything extensive on Julian Assange, they are clowns. Okay, send them a message if you like them, say, hey, how come you haven't talked about Julian Assange?  That's my take. I trust journalists that have talked about Julian Assange and stand on the right side of history. That's like a litmus test for journalism.