Tournament Results
Be sure to check out my VNA Riddles, which I made during my exile ;D
The tournament didn't go as well as I was hoping for - it took a long time, but that wasn't the main problem - the thing was, 3 of the 7 programs had fatal flaws that incapacitated them and essentially denied them a possible victory. Those programs were FOTH's "Flawless" (hehe ironic name ), Prime's "Fish3-Flipper" and bociniki's "Rail Gun". I saw bociniki's program's problem right when he PMed it to me, and was dying to tell him, but that wouldn't be fair. I did tell him multiple times to make sure he checked over his problem, but he seemed confident in it Sorry guys! I have no idea what the problem is with Flawless or Fish3, because on request I did not analyze them after receiving them, however both programs would snag on a specific line and then stay there, jumping back to it repeatedly. When I post everyone's programs, I'll point out the line in question. Both programs managed to get out 1, maybe 2, bombs, before they were caught in their own endless loops, but they never hit an enemy, and thus they were caught in stasis while the other program bombed them out, so I removed them from the tournament.
Bociniki's problem was simpler: his Rail Gun shot bombs upwards 1 instead of backwards (he started by bombing -40, and I'm sure he meant to go backwards from there), and thus he would just cover the no-program zone of 40 behind him until it hit himself, so I mercifully removed it too ;D
Sorry guys... revising your programs is the fun of VNA though, so it's no biggie ;D Just the first tournament. Next time I might do things a little differently, not sure. It will be a while before another formal event like this, although I will run any match between any two programs at the programmers' request
So, the four programs that worked: Unreality's "Awesome", Frost's "The Uber Penguin Bomber", Mekal's "Red Sea" and DMS's "Bomberman"
I made myself a 7x7 chart with a diagonal-half represented everyone against everyone, although with the three error-programs removed, it's just a triangle of the 4 programs (6 squares for 6 battles). However, it's kind of hard to reproduce that here, so I'll just list the standings:
Key - each match has a bunch of games, which are the individual numbers. Each game uses the same starting location, but switches the two players, thus each game is comprised of two battles. For example, if Unreality and Frost battled at 97, Unreality starts at line 1, Frost at 97 (so they are 96 apart), and Unreality goes first. Then, Frost starts at line 1, Unreality at 97, and Frost goes first. A zero (0) means it was a tie; ie, one person won a battle, and one person won the other. A non-zero number relates to the person's ID number:
unreality-1, frost-2, mekal-3, DMS-4. The number in parentheses is the starting line.
You need 4 games to win the match, remember. When clicking the random button, I would skip a number if it was within a couple nodes away from a previously used line, or that line's inverse (202 minus the number, which is the exact same thing because two games are played)
Here are the results. Note that for some games I forgot to switch who goes first, but I went back and redid a lot to make sure of the results, and also discovered that it only made a difference in one battle of one game of one match, and didn't affect overall results. But everything should be 100% good, if you want to check yourself on a different emulator go ahead.
In the general order of the matches I ran:
Unreality vs Frost
0(97), 1(118), 0(52), 1(61), 1(159), 2(66), 0(87), 1(101). Winner: 1
Unreality vs Mekal
0(88), 1(144), 0(109), 1(120), 1(136), 1(128). Winner: 1
Mekal vs Frost
0(150), 2(70), 2(88), 3(97), 2(129), 3(81), 2(62). Winner: 2
Mekal vs DMS
0(122), 3(102), 0(136), 3(110), 0(58), 0(83), 0(160), 0(75), 0(150), 0(90), 3(105), 3(130). Winner: 3
DMS vs Unreality
1(113), 1(105), 0(53), 1(83), 0(137), 1(93). Winner: 1
DMS vs Frost
2(137), 4(156), 4(126), 0(58), 4(71), 4(149). Winner: 4
Overall Results:
I won 3 games, beating Frost, Mekal, DMS. Frost won 1 game, beating Mekal. Mekal won 1 game, beating DMS. DMS won 1 game, beating Frost.
I guess it was like a rock-paper-scissors thing or something Anyway, I'm sure there would be a lot more wins and losses for everyone if the programs of FOTH, Prime and bociniki were working properly as they wanted them to (there would have been 21 matches instead of 6). No biggie though ;D
Here are the programs, their code, and my notes on them:
Unreality - the Awesome
EDITI 5;1;1
COPY 4;add(add(add(29,div(sub(b(4),mod(b(4),15)),15)),mul(add(mod(b(4),3),1),10)),mod
(mul(sub(b(4),mod(b(4),3)),2),10));0
COPY 3;add(add(add(58,div(sub(b(3),mod(b(3),15)),15)),mul(add(mod(b(3),3),1),10)),mod
(mul(sub(b(3),mod(b(3),3)),2),10));0
COPY 2;add(add(add(87,div(sub(b(2),mod(b(2),15)),15)),mul(add(mod(b(2),3),1),10)),mod
(mul(sub(b(2),mod(b(2),3)),2),10));0
SHIFT 1;add(add(add(116,div(sub(b(1),mod(b(1),15)),15)),mul(add(mod(b(1),3),1),10)),mo
d(mul(sub(b(1),mod(b(1),3)),2),10));equ(b(1),29,5,-4)
BOMB 0;-1;0
BLANK 0;0;0
BLANK 0;0;0
BLANK 0;0;0
SWAP 0;1;0
[/codebox]
I'm pretty proud of the Awesome, having spent some hard work figuring out some of the concepts, and there was a certain point where I had a huge breakthrough in its design... I was trying to increase different values at different times in a very complicated mess... then I found that I would just increment a single value by 1 each time with a single EDIT, and everything else can base off of that using arithmetic functions, most importantly the indispensable [b]mod[/b] function
Anyway, I think that my program may have lost against FOTH's or Prime's, if they get theirs working. Or maybe not. Maybe we can battle when they fix theirs ;D
Frost - the Uber Penguin Bomber
[codebox]
EDITC 0;equ(mod(c(0),3),1,mul(-1,c(0)),equ(mod(c(0),3),2,mul(c(0),2),equ(mod(c(0),3),-1,mul(c(0),2),equ(mod(c(0),3),-2,mul(-1,c(0)),64))));32
SHIFT 1;c(-1);-1
BOMB 0;0;0
Frost's was a great program - although it could bog down the emulator when its number got bigger and bigger. I decided to mod the result by 600 to keep it smaller. This preserves the mod3 value of the number as well as the mod200 value (for VNA position), thus not interfering with the program's functioning while making it less burdoning on my emulator
About the program design itself, it had a flaw, and that was that it becomes a loop after a certain, not too long, amount of time. After a certain point it would reach a number it had been at before, and then from that point on it could be considered a loop, and I would just wait for the other program to beat it. If I were making version 2 of this program (which has a lot of potential), I would perhaps add a touch of extra into its bomb-target-generating process
Mekal - the Red Sea
COPY 9;100;0
COPY 8;95;0
COPY 7;40;0
COPY 6;-40;0
EDITI -4;5;1
EDITI -4;-5;1
EDITI -4;5;1
EDITI -4;-5;1
JUMP -8;0;0
BOMB 0;0;0
[/codebox]
I was a big fan of Red Sea. This was a great program! Very powerful and sleek, and yet, looking at its code... it has no complex structures, no functions Because functions are so vital (they add so much into what a program can do), to see a 'pure-numbers' program kick some @ss was pretty awesome. Good job Mekal! ;-)
DMS - Bomberman
[codebox]
EDITI 1;-1;1
SHIFT 1;-40;-1
BOMB 0;0;0
This little program holds a lot of surprises - it's pretty effective, although also easy to beat sometimes. That may sound contradictory, but in essence this program is a time bomb. It drops a BOMB one more node backwards every 2 rounds, so it's guaranteed to kill you unless (a) you are some sort of Hopper or Hopper-Hybrid, which none of these programs were [although 'the Awesome' had a backup plan like that, and I was considering submitting a hopper-bomber-hybrid program I made], or (b) you kill it first. So it's a race against time: can the other program land a bomb in one of the two nodes that Bomberman runs, or will Bomberman bulldoze backwards into their territory? It was pretty fun watching a column of solid BOMBs advance toward the enemy. For a Bomberman 2.0, I would suggest -2 instead of -1 for speedier rampage... and maybe a more complicated mechanism that starts the advance over, hitting the odd nodes instead of even afterwards. Or something. Anyway, great program DMS ;D
FOTH - Flawless
JUMP 5;0;0
BOMB 0;0;0
BLANK 0;0;0
BOMB add(c(-12),add(c(-8),add(c(-4),add(c(4),add(c(8),c(12))))));sub(mod(mul(a(0),16),28),12);1
BLANK 0;0;0
EDITC leq(c(0),1,0,equ(a(-2),6,0,sub(b(-2),2)));leq(c(0),1,add(c(0),1),0);0
SHIFT com(c(-1),1,-3,equ(a(-3),6,equ(add(a(77),add(b(77),c(77))),1,0,-3),-3),-1);com(c(-1),1,75,equ(a(-3),6,78,sub(b(-3),3)),77);com(c(-1),1,-1,equ(a(-3),6,equ(add(a(77),add(b(77),c(77))),1,78,-1),equ(c(b(-3)),1,-1,0)),-1)
BLANK 0;0;0
BOMB 0;0;0
[/codebox]
It was probably a good program, although certainly not "Flawless" - it's error was getting stuck on a certain line and then running that line over and over again. That line was the big SHIFT line. I don't know exactly what's wrong or what needs to be fixed - that's up to you. Good luck ;D
Prime - Fish3 [codenamed Flipper]
[codebox]
SHIFT 1;-25;31
BOMB -25;-25;-25
BOMB -5;-2;1
BOMB 2;0;3
BOMB 1;1;1
BOMB -2;1;-2
BOMB 1;4;2
BOMB 3;5;-2
BOMB 2;-1;0
BOMB 1;0;2
BOMB 0;-5;1
BOMB -3;-5;-1
BOMB -1;-2;-2
BOMB -1;2;1
BOMB -2;1;-2
BOMB 1;4;2
BOMB 3;5;-2
BOMB 2;-1;0
BOMB 1;0;2
BOMB 0;-5;1
BOMB -3;-5;-1
BOMB -1;-2;-2
BOMB -1;2;1
BOMB 2;-1;0
BOMB 1;0;2
BOMB 0;-5;1
BOMB -3;-5;-1
BOMB -25;-25;-25
BOMB -2;-3;-2
EDITC 0;mod(add(c(0),17),160);0
PCOPY -2;add(c(-1),10);10
SHIFT equ(b(-2),mod(add(c(-2),17),160),equ(c(-1),10,1,4),3);equ(b(-2),mod(add(c(-2),17),160),equ(c(-1),10,mul(-1,add(c(-2),32)),-1),-2);equ(b(-2),mod(add(c(-2),17),160),equ(c(-1),10,-2,6),6)
BOMB 11;22;9
BOMB -25;-25;-25
EDITC 0;mod(add(c(0),17),160);0
PCOPY -2;add(c(-1),10);10
SHIFT equ(b(-2),mod(add(c(-2),17),160),equ(c(-1),10,1,4),3);equ(b(-2),mod(add(c(-2),17),160),equ(c(-1),10,mul(-1,add(c(-2),32)),-1),-2);equ(b(-2),mod(add(c(-2),17),160),equ(c(-1),10,-2,6),6)
SHIFT equ(c(-6),10,-1,-2);equ(c(-6),10,-6,-7);equ(c(-6),10,-6,0)
BOMB 3;2;5
BOMB 1;2;3
The line that this program got stuck one was a SHIFT line. Specifically, the simplest one, the one at the end. The line that's 3rd to last in the program. It was a mistake having the result be 0 if c(-6) wasn't equal to 10. You would never do this because c(-6) will never change, unless based on something external or something. I checked, and c(-6) is based off of b(-2), c(-2) and c(-1) [from -6's perspective, they would be -8 and -7 from the error line], and b(-2) is based off of c(0) [ie, c(-2)]. So it comes down to the c fields of those two adjacent lines, which start out at 0 and 10 and wouldn't change unless changed by something external, which you're not doing if you're caught in a JUMP 0 fest at the last SHIFT line. Good luck fixing, hopefully the fix isn't too tough :;-)
Bociniki - Rail Gun
COPY 3;-40;0
EDITI -1;1;1
JUMP -2;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
BOMB 0;0;0
[/codebox]
As I said earlier, the problem here is you advanced +1 from -40 instead of -1. As a result, you covered the no-man zone and then proceeded to bomb yourself. Fix that, and merge COPY/JUMP nodes to make a SHIFT, and you have DMS's Bomberman ;D (plus a bunch of BOMBs at the end)
Good job everyone and thanks to those that submitted! ;D My favorite battle to watch was probably a DMS vs Mekal battle, I forget which one specifically, where they were both on the verge of killing each other. It was pretty intense
So... check out the VNA Riddles if you get a chance, and see you around. Comments/ideas/suggestions/questions/etc, post em right here Like I said earlier, I'll happily run a battle between any two willing programs ;D
thanks for playing the VNA 2.0 Tournament Future VNA stuff will happen eventually, after some input by you guys