Kintamayama

GTB Natsu 2022- Results!!

Recommended Posts

Posted (edited)
4 hours ago, Sakura said:

Congratulations to @Itachiyama for the win. Good work!

 

Arigatou!:-D

Edited by Itachiyama

Share this post


Link to post
Share on other sites
17 hours ago, Seiyashi said:

Yes I did! Just checked. Isn't the jōi fairly easy to predict, though, with the sanyaku serving as a constraining limit on how they can be organised? It was fairly clear that three of the incumbents would hold serve, so between Daieishō and Takayasu for K1w, despite what the numbers say, it was pretty obvious to me Daieishō was going to get it given the recent penchant for underpromotions and Takayasu pulling bridesmaid duty again.

The rest of the jōi was pretty uncontentious after that, since by the numbers that's supposedly exactly where they shake out. Endō, Takanoshō and Ōnoshō are all tied, though, so it really was luck there, and the wheels started coming off by Wakamotoharu despite the numbers clearly showing him at M6E. Ura really lucked out there.

I will just say I was impressed. True, it is often easy to roll perfect scores from Sekiwake on up (and I didn't find Komosubi to present a challenge this time either) but there were some places I hit a snag this time around M1 and M4.

To your comment about things being more chaotic further down, I visualize the banzuke as a bunch of "clumps" where it is absolutely clear, for example, which 5 guys might land from 24-28 but maybe you can't predict the internal order between them, and then maybe likewise for 21-23, and so on. I think we all knew Kotokuzan was the 41st ranked person on this banzuke and generally knew Chiyomaru and Kagayaki would be next in line (but unsure of the order). And then Meisei and Ishiura are examples of the "floaters" where you can't be totally certain within 1.5-2 slots where they will shake out, so they have to be included in a much larger "clump" than, for example, the 1-man clumps at S1w, S1e, O2w, O1w, O1e, and Y.

  • Like 1

Share this post


Link to post
Share on other sites
38 minutes ago, Hoshotakamoto said:

I will just say I was impressed. True, it is often easy to roll perfect scores from Sekiwake on up (and I didn't find Komosubi to present a challenge this time either) but there were some places I hit a snag this time around M1 and M4.

To your comment about things being more chaotic further down, I visualize the banzuke as a bunch of "clumps" where it is absolutely clear, for example, which 5 guys might land from 24-28 but maybe you can't predict the internal order between them, and then maybe likewise for 21-23, and so on. I think we all knew Kotokuzan was the 41st ranked person on this banzuke and generally knew Chiyomaru and Kagayaki would be next in line (but unsure of the order). And then Meisei and Ishiura are examples of the "floaters" where you can't be totally certain within 1.5-2 slots where they will shake out, so they have to be included in a much larger "clump" than, for example, the 1-man clumps at S1w, S1e, O2w, O1w, O1e, and Y.

I'll just plead a fluke - even a stopped clock is right twice a day, after all..

Out of reacts, but yeah, I think you more or less explained it perfectly. FWIW Reonito has also previously explored his approach to GTB and it sounds roughly similar to yours.

Share this post


Link to post
Share on other sites
1 hour ago, Seiyashi said:

I'll just plead a fluke - even a stopped clock is right twice a day, after all..

Out of reacts, but yeah, I think you more or less explained it perfectly. FWIW Reonito has also previously explored his approach to GTB and it sounds roughly similar to yours.

Yeah, occasionally you'll see them place someone above/below what seemed like their clear "clump", but most of the time it comes down to more or less arbitrary decisions within these clumps, and while there are some patterns to how they make these, they are not necessarily consistent from one banzuke to another, or even within a single banzuke.

Share this post


Link to post
Share on other sites

Two changes to the Top Ten ranks after this edition - dropping out after short stints are Yoshio (two basho) and Kyoju (one basho). They are replaced by returnees Gurowake and Nantonoyama, both after just a single basho outside. Gurowake is the 11th player to notch up 25 basho in green.

Little else to report from this one, except that former #1 Okisuruga's run of consecutive guesses ended at 60.

Share this post


Link to post
Share on other sites
On 19/04/2022 at 22:13, Athenayama said:

There was a very helpful spreadsheet that did something like that at some point but it seems it no longer exists. :-(

Edit : It was a "helper page" made by Tsuchinoninjin. I loved it !

I'm "throwing" this here, just in case. Probably because of lack of time, this doesn't exist anymore but I believe it was appreciated by the players. So, if someone provides me the tool, I'm willing to update it every basho and make it available for the benefit of all. Game administrators, let me know.

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites
Posted (edited)
On 23/05/2022 at 00:45, Athenayama said:

I'm "throwing" this here, just in case. Probably because of lack of time, this doesn't exist anymore but I believe it was appreciated by the players. So, if someone provides me the tool, I'm willing to update it every basho and make it available for the benefit of all. Game administrators, let me know.

I'd love for that to happen, but I have nothing to do with it. It's Tsuchinoninjin's baby. Maybe you can PM him this AM.

Edited by Kintamayama

Share this post


Link to post
Share on other sites
4 hours ago, Kintamayama said:

I'd love for that to happen, but I have nothing to do with it. It's Tsuchinoninjin's baby. Maybe you can PM him this AM.

Will do !

Share this post


Link to post
Share on other sites
On 25/05/2022 at 03:48, Athenayama said:

Will do !

I'm sorry to say its quite a manual affair. It works quite different than all the other OG sumo games - I didn't have a server space where things can happen in the back end, so everything has to work in browser. Everything is done in JQuery, a javascript library. I tried a bit in HTML5 but almost immediately there were problems between different browsers.

I think these days nobody really likes JQuery, and React is more preferred. Looking at this demo https://codepen.io/mgmarlow/pen/YwJGRe
it seems a lot more sane than the JQuery implementation. It might be better to rewrite the whole thing in React honestly, and I'm no where near a professional coder as well. I tried hard to save people's picks using cookies, and had a version that did so - but I could never get it to repopulate the rikishi cards directly into the slots. They'd all be offset and weren't attached properly to the slots. It'd be a lot better if the code was functionalized just to rebuild the HTML from arbitrary data but it isn't. (Order,order!)

The files are here: https://filetransfer.io/data-package/jYozOWEw#link
These need to be placed on a server somewhere that people can access. I used something called droppages, which abuses a file sharing service DropBox.


<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Guess the Banzuke Helper</title>

<link rel="stylesheet" type="text/css" href="sumostyle.css?v=1.1">


<script type="text/javascript" src="./js/jquery.min.js.download"></script>
<script type="text/javascript" src="./js/jquery-ui.min.js.download"></script>
<script type="text/javascript">

This part of the code begins the HTML file and loads in the JQuery library

$( init );
function init() {

var sane = [
"Hakuho	10-3-2"
,"Takakeisho	8-4-3"
,"Shodai	11-4 K"
,'nashi'];

var sanw = [
"Kakuryu	0-2-13"
,"Asanoyama	12-3 J"
,"Mitakeumi	11-4 S"
,"Okinoumi	9-6"];

var mage = [
"Endo	8-7"
,"Takanosho	8-7"
,"Takarafuji	5-10"
,"Kagayaki	5-10"
,"Abi	3-4-8"
,"Enho	5-10"
,"Terutsuyoshi	8-7"
,"Ishiura	4-11"
,"Tamawashi	10-5"
,"Kaisei	6-9"
,"Shimanoumi	5-10"
,"Sadanoumi	8-7"
,"Takayasu	10-5"
,"Kotoshogiku	8-7"
,"Kotoshoho	8-7"
,"Nishikigi	6-9"
,"Terunofuji	13-2 YGS"];
			
var magw = [
"Yutakayama	5-10"
,"Onosho	2-13"
,"Kiribayama	6-9"
,"Aoiyama	5-10"
,"Hokutofuji	9-6"
,"Ryuden	7-8"
,"Tokushoryu	7-8"
,"Chiyotairyu	6-9"
,"Ikioi	3-12"
,"Myogiryu	10-5"
,"Tochinoshin	10-5"
,"Shohozan	5-10"
,"Kotonowaka	4-6-5"
,"Wakatakakage	10-5"
,"Chiyomaru	4-11"
,"Kotoeko	10-5"
,"Kotoyuki	6-8-1"];

var jure = [
"Meisei	10-5 Y"
,"Tobizaru	9-6"
,"Azumaryu	5-10"
,"Daiamami	7-8"
,"Kyokutaisei	10-5 D"
,"Hoshoryu	10-5 D"
,"Daishomaru	8-7"
,"Wakamotoharu	9-6"
,"Akiseyama	7-8"
,"Daishoho	6-9"
,"Fujiazuma	6-9"
,"Midorifuji	8-7"
,"Takagenji	6-9"
,"Chiyonoumi	6-9"];

var jurw = [
"Chiyoshoma	6-9"
,"Tochiozan	0-0"
,"Kyokushuho	6-9"
,"Hidenoumi	5-10"
,"Ichinojo	9-6"
,"Hakuyozan	5-10"
,"Tsurugisho	7-8"
,"Chiyootori	7-8"
,"Churanoumi	8-7"
,"Asabenkei	3-12"
,"Kizakiumi	7-8"
,"Chiyonoo	10-5 D"
,"Akua	10-5 D"
,"Mitoryu	10-5 D"];

Then we initialize the code portion and first up is declaring some arrays with rikishi data. They are split into east and west columns, and also sanyaku, maegashira, and juryo. I did this because I was under the influence when writing the code. This needs to be updated with the new data, it is not too bad to copy the columns from sumodb into google doc sheets then into here. The east and west arrays must be the same length. To pad out array size you can put 'nashi' instead. If east and west arrays are not the same size, the website will silently fail to build.

var html = '';
//Create old banzuke from data
//Yokozuna
for ( var i = 1; i <= 1 ; i++) {
	html = createFullRow(sane[i-1],sanw[i-1],"Y",i);
	$('#banzuke.old').append(html);
	}
	//Ozeki
for ( var i = 1; i <= 1 ; i++) {
	html = createFullRow(sane[i],sanw[i],"O",i);
	$('#banzuke.old').append(html);
	}
	//Sanyaku
	html = createFullRow(sane[2],sanw[2],"S",1);
	$('#banzuke.old').append(html);
	html = createFullRow(sane[3],sanw[3],"K",1);
	$('#banzuke.old').append(html);
	//html = createFullRow(sane[5],sanw[5],"K",2);
	//$('#banzuke.old').append(html);
	
	//Maegashira
for ( var i = 1; i <= 17 ; i++) {
	html = createFullRow(mage[i-1],magw[i-1],"M",i);
	$('#banzuke.old').append(html);
	}
	
	//Juryo
	for ( var i = 1; i <= 14 ; i++) {
	html = createFullRow(jure[i-1],jurw[i-1],"J",i);
	$('#banzuke.old').append(html);
	}

This populates the old, existing banzuke with all the rikishi slots and cards using the function createFullRow(). I used a for loop for everything except sekiwake and komusubi. If there are more than one row of Yokozuna or Ozeki, the i <= 1 needs to be increased to however many rows.  Then the sane[2] becomes sane[Y rows + O rows ].

If there are two S or K rows they need to be explicitly called out like the commented out 2nd K row.

Maegashira i < = 17 needs to be changed if there are a different amount of M rows. If any of the amount of rows mismatch with the input data then the website will silently fail to build. I'm so so sorry.

	//Create Empty Banzuke
	//Yokozuna
for ( var i = 1; i <= 2 ; i++) {
	html = createEmptyRow("Y",i);
	$('#banzuke.new').append(html);
	}

for ( var i = 1; i <= 3; i++) {
	html = createEmptyRow("O",i);
	$('#banzuke.new').append(html);
	}

for ( var i = 1; i <= 2 ; i++) {
	html = createEmptyRow("S",i);
	$('#banzuke.new').append(html);
	}

for ( var i = 1; i <= 2 ; i++) {
	html = createEmptyRow("K",i);
	$('#banzuke.new').append(html);
	}	
	
for ( var i = 1; i <= 18 ; i++) {
	html = createEmptyRow("M",i);
	$('#banzuke.new').append(html);
	}

This just builds out the new, empty banzuke to move rikishi cards into. It matches the same number of slots as GTB entry form.

var rS = [
"Y",
"O",
"K",
"S",
"M",
"J"];

//Make draggable and droppable
for( var k = 0; k<=5 ; k++) {	
	for( var i = 1; i<=17 ; i++) {
	$('.rikishi_card#'+rS[k]+i+'e').draggable( {
		  cursor: 'move',
		  revert: 'invalid',
		  stack: '.rikishi_card',
		  start: handleDragStart
		} );
	$('.rikishi_card#'+rS[k]+i+'w').draggable( {
		  cursor: 'move',
		  revert: 'invalid',
		  stack: '.rikishi_card',
		  start: handleDragStart
		} );

		
		
	$('.rikishi_slot#'+rS[k]+i+'w').droppable( {
			accept: '.rikishi_card',
			hoverClass: 'slot_hover',
			drop: handleRikishiDrop
			} );
	$('.rikishi_slot#'+rS[k]+i+'e').droppable( {
			accept: '.rikishi_card',
			hoverClass: 'slot_hover',
			drop: handleRikishiDrop
			} );

			}}
}

This part is how you make classes draggable and droppable in JQuery. The first half is for the old banzuke and the second half is for the new banzuke.

//Creates all html for rows with draggable rikishi
function createFullRow(rikEast,rikWest,division,rank) {
	var html2 = '';
	html2 += '<div id = "row">\r';
	html2 += '<div class = "rikishi_slot" id = "'+division+rank+'e">'+division+rank+'e '+rikEast+'<div class = "rikishi_card" id = "'+division+rank+'e">'+division+rank+'e '+rikEast+'</div></div>\r';
	html2 += '<div id = "rank">'+division+rank+'</div>\r'; 
	html2 += '<div class = "rikishi_slot" id = "'+division+rank+'w">'+division+rank+'w '+rikWest+'<div class = "rikishi_card" id = "'+division+rank+'w">'+division+rank+'w '+rikWest+'</div></div>\r';
	html2 += '</div>\r';

	return html2;
}

function createEmptyRow(division,rank) {
	var html2 = '';
	html2 += '<div id = "row">\r';
	html2 +=	'<div class = "rikishi_slot" id = "'+division+rank+'e">&nbsp;</div>\r';
	html2 +=	'<div id = "rank">'+division+rank+'</div>\r'; 
	html2 +=	'<div class = "rikishi_slot" id = "'+division+rank+'w">&nbsp;</div>\r';
	html2 += '</div>\r';
	
	return html2;
}

These are the functions that are called earlier to make the HTML for each rikishi card and droppable spot.

var lastPlace;

function handleRikishiDrop( event, ui ) {
  var dropped = ui.draggable;
            var droppedOn = this;

            if ($(droppedOn).children().length > 0) {
                $(droppedOn).children().detach().prependTo($(lastPlace));
            }

            $(dropped).detach().css({
                top: '-1px',
                left: '-1px'
            }).prependTo($(droppedOn));
	//ui.draggable.position( { of: $(this), my: 'left top', at: 'left top' } );
	}
	
function handleDragStart( event, ui) {
            lastPlace = $(this).parent();
			}
</script>

</head>

This final part controls what happens when we drag a card and then drop it. When dragging starts the cards original position is saved into lastPlace. This is used to swap cards if we drop a card onto an existing card.  Then at the very end we exit the scripting language and start with the HTML.

<body>

<div class="centercont">

	<div class="wideBox">
	  <h1>Guess the Banzuke Helper Page</h1>
	  <p style="color:white">Drag and drop rikishi from the old banzuke into the new banzuke <br>
	  Rikishi dropped onto another rikishi will switch places</p>
	</div>

	<div id="banzuke" class="old">
	<header>June?? 2020 Banzuke</header>	

	
</div>

	<div id="banzuke" class="new">
	<header>My Best Guess for September 2020</header>	

	
</div>  
	  
	  
	<div class="endbit">  
	<p>Helper page for Guess the Banzuke  <br>
	Guess the Banzuke Entry Form can <a href="http://sumodb.sumogames.de/gtb/GTBEntry.aspx" target="_blank">be found here</a><br>
	Version 1.03 <br> Updated Jul 24 2017<br>
	Tsuchinoninjin <br></p>
	</div>

</div>



</body></html>

This is what the HTML is before all the banzuke stuff is generated by the JQuery code. You need to change the headers and things to update the month/year.

The whole thing barely holds itself together. I've seen people shaming the site's code in other corners of the internet. Since they seemed to know enough it was bad, I asked them for help, but each time they'd just disappear into the aether. One way is to just find somebody on fiverr to get something that is more reasonable. I just might do that instead of burdening you with this and we could get cool features like adding a +/- number next to the rikishi when you move them to make it easy to reference how much promotion/demotion he has been given.

  • Like 1
  • Thanks 2

Share this post


Link to post
Share on other sites
Posted (edited)

I'm no coding professional (background in Python and SQL, tops) but to play rubber ducky for some of the logic:

  1. While I can see the fun and neatness in having two banzuke side by side to drag and drop to, if we confine ourselves to upgrading Kintamayama's existing entry form and simply adding the functionality to remove a previously selected rikishi, then a lot of the mess appears to me to be unnecessary.
  2. That allows us to solve some of the problems by explicitly declaring, going by historical precedent - e.g. 3x2 yokozuna slots, 3x2 ōzeki slots, 2x2 sekiwake slots and 2x2 komusubi slots, and by doing so in variables as opposed to within for loops. 
  3. I know you've already mentioned this but it would also probably be faster to just have rank and side as an attribute of a rikishi as opposed to using it as the category container, which necessitates the "nashi" padding kludge.
  4. You could probably also do a direct call from the DB without having to store it in Google Sheets first, as long as Doitsuyama enables a workaround so that multiple people using the service doesn't count as a single IP address exceeding the current rate limit. 

I'd offer to rewrite the logic if doing so in Python is acceptable, but I have no experience with GUIs or writing code for an interactive widget on a website, so I'm not sure I'm the best person for the job.

Edited by Seiyashi
  • Like 1

Share this post


Link to post
Share on other sites

Again, if anyone has the inclination to make the entry form better, be my guest.. The present one was made in 1998..

Share this post


Link to post
Share on other sites

Thanks for all the info. Unfortunately, a far as I'm concerned I'm nowhere near to be a programmer. I probably was too naive to think that it would be a much simpler task. I'll have a look again at the procedure Tsuchinoninjin had the kindness to share but I was already lost after the first line... Shame on me.

Share this post


Link to post
Share on other sites
Posted (edited)

This is probably best split off into a new thread, but FYI @Athenayama Asashosakari has put out a GSheets banzuke helper, and I've also used that as inspiration to release an upgrade that replicates the feel of the GTB entry form.

With the unofficial helper forms being in GSheets, it'd be trivial to consolidate them all into a string that could be used to automatically populate a HTML form page with a URL string. I don't know if that upgrade or change is possible or desirable (for security reasons) for the entry form.

Edited by Seiyashi

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now