From CG community
Jump to navigation Jump to search

mr.mister: hmm, this is really weird. what does this mean?

Allis: @mr.mister Found: "Nothing" indicates you didn't print anything.

mr.mister: @allis but as you can see it says I printed "UNKNOWN"

Allis: You only print that if $ni == 1; it must be the case that it doesn't.

mr.mister: but do you see a line above that?

mr.mister: it says standard output stream

mr.mister: then UNKNOWN

Allis: Oh, yes, I see. That *is* strange.

Allis: What it then means is that the output is expected to contain N lines, and you printed fewer than that.

mr.mister: Also, it says expected "UNKNOWN"

mr.mister: which is exactly what I printed

Allis: Yes, but if it expects three lines of output and you only print one, you'll get the Found: "Nothing" message.

Allis: That is, it found nothing where it expected to find a second line.

Allis: I grant that this can be pretty confusing at first, but the test cases always clearly indicate whether you should print the results on a single line or multiple.

mr.mister: how can I see the input for a given test?

eulerscheZahl: MadKnight is back \o/

eulerscheZahl: we missed you

MadKnight: yea i heard

MadKnight: eulerscheZahl are u using a chat client ?

eulerscheZahl: webchat

MadKnight: PM eulerscheZahl

MadKnight: DM

DaNinja: mr.mister You need to echo the newline too

DaNinja: echo "UNKNOWN\n";

MadKnight: eulerscheZahl someone rekt my CSB bot so i had to return to implement a more fancy algo and get back

BenjaminUrquhart: who rekt

MadKnight: YurkovAS

MadKnight: hey BenjaminUrquhart have u tried using smitsimax yet ?

BenjaminUrquhart: no

BenjaminUrquhart: someone gave me a rundown on it but I forgot

BenjaminUrquhart: there's a page on it, right?

Marchete: :o it's MadKnight!

MadKnight: yea and i got u a new fancy algo for CSB Marchete

MadKnight: i know u love those

Marchete: what algo?

MadKnight: combination of MCTS with smitse

MadKnight: smitsi

BenjaminUrquhart: found it,

Default avatar.png TheForgottenWorm_5d8e: i'm new here, and i've just done de tutorial and what's next?


MadKnight: now play a bit of this

Default avatar.png REZ16: oke

Default avatar.png REZ16: hey @MadKnight, i'm having trouble with the thrust

MadKnight: what trouble ?

Default avatar.png REZ16: idk where to change the thrust

MadKnight: your code prints the thrust

MadKnight: just print a different thrust

Default avatar.png REZ16: so i have to write print(.)??

MadKnight: don't u already have this print ?

Default avatar.png REZ16: yea

MadKnight: then change it

Default avatar.png REZ16: i did but it diddnt work out

Default avatar.png REZ16: print(str(next_checkpoint_x) + " " + str(next_checkpoint_y) + "50")

Default avatar.png REZ16: i change 50 to 100

Default avatar.png REZ16: but it seem not right

Default avatar.png REZ16: so i change " " to "100"

Default avatar.png REZ16: but still not work

SPDene: you're adding "50" to the end of str(next_checkpoint_y). make sure there's a space between them

Default avatar.png REZ16: where? str(next_checkpoint_y 100)?

Default avatar.png REZ16: or what?

Default avatar.png REZ16: i'm sorry for being so stupid but i just begin to learn it

SPDene: is checkpoint_x is 100 and checkpoint_y is 200, that code ^ will print "100 20050", when it should be 100 200 50"

Default avatar.png REZ16: so how can i fix that?

SPDene: you're using python, right?

Default avatar.png REZ16: yea

SPDene: so... you don't need the str() round the numbers... python will deal with that for you...

Default avatar.png REZ16: so where do i need to put the numbets?

Default avatar.png REZ16: *numbers

SPDene: I'd put the value of thrust in a variable, then print the 3 values (the default is they will be separated by spaces):

print(next_checkpoint_x, next_checkpoint_y, thrust)

Default avatar.png REZ16: omg

Default avatar.png REZ16: thank you so much

Nightpl3x: hey does anyone have an idea how I could further improve my 'coders strike back' bot after entering bronze league, i'm stuck on rank 167

AntiSquid: resub spam, -3vel, use opponent to bounce your pod off

AntiSquid: Nightpl3x

MadKnight: hihi squiddy

dbdr: hey MadKnight!

MadKnight: hihi dbdr

dbdr: what's up?

MadKnight: doing algos

dbdr: what kind of algos?

MadKnight: MCTS kind

MadKnight: the jolin's one

dbdr: no idea what jolin is...

Default avatar.png tanmaycodernovice: anyone worked with sound module in python?

Marchete: improved D&B bot?

dbdr: me?

darkhorse64: jolindien stuff for XR ?

AntiSquid: hi MadimetjaEmmanuelLebelo

AntiSquid: hi MadKnight

AntiSquid: are you doing XR MadKnight?

AntiSquid: decoupled mcts, that's what it's called Automaton2000

Automaton2000: i don't want to live in

Marchete: you are 1st again...

darkhorse64: MadKnight said he managed smitsimax to wprk for CSB

darkhorse64: *work*

AntiSquid: #10 ... good enough

MSmits: 10 on csb?

MSmits: Thats really good

AntiSquid: the CP difference at that point is irrelevant LOL

AntiSquid: i think it's 50 CP difference between #100 and #1 :D

MSmits: something like that

MSmits: welcome back MadKnight

MSmits: looks like yurkovas made smitsi work too, at least, he was working on it

eulerscheZahl: you don't play CSB for the global leaderboard. you play it for the sake of CSB

MSmits: yeah I guess so, the interesting part of the leaderboard of CSB has almost no cp value

MSmits: (differentially)

darkhorse64: 23 ELO diff between 1 and 100. Need an extra league

AntiSquid: csb isn't the kind of game i'd play "just for fun"

MSmits: same AntiSquid... the only reason I stuck with it for a month or so is cuz it was going well. Hard to quit when you're ahead.

AntiSquid: makes sense

MSmits: still working on D&B myself.

MSmits: I finally finished putting the solver heuristics from the papers into the bot

MSmits: but then I found that almost every end game is non-simple. So I am adding more heuristics to decompose complex object into simple ones

darkhorse64: I read the thesis Marchete linked yesterday. Very interesting

MSmits: i guess it's because the papers were written for 5x5, far more chance to simple end games

MSmits: yeah it's interesting and easier to read, but actually not too much new in it, except if you're interested in the functional programming bit

darkhorse64: At least, it's well explained even it's only helpful for some endgames

MSmits: yeah

darkhorse64: Still bitboarding ?

Marchete: and it gives ideas for data representation

MSmits: sure, why not bitboard?

Marchete: like I'm not sure about bitboards

Marchete: maybe for some checks

Default avatar.png Solacefire: I feel like the clash of code challenges really, really want you to learn how to create an array of chars

Marchete: or do you have highe level chain detection?

Marchete: like loops and stuff

MSmits: I have that yes, but it's mostly floodfill

MSmits: you can detect a chain by floodfilling an object and then see if at least one of them has only one neighbor connection

MSmits: with bitboard that is basically one bit operation (&) with the map of 1 connection boxes

MSmits: both of the objects being uint64_t

MSmits: and then you popcount to get the length of the chain

MSmits: have to also check if there are no joins (3+ connections) in the object

MSmits: another & operation

dbdr: darkhorse64: leagues have no effect on CPs

dbdr: MSmits: your arena bot uses the endgame solver now?

MSmits: no

MSmits: it's useless because of what i said about simple endgames

MSmits: almost every end game has a join in it ( a 3 way split)

darkhorse64: I know, I was pointing out the level difference

MSmits: you can decompose a 3 or 4 way split if they're all chains, but that requires more heuristics

MSmits: also not done with the part that turns the board value into an actual action

MSmits: this :poop: is hard

jrke: dbdr again first in D&B

MSmits: also, I need a way to deal with end games that contain 1 or more objects that can't be decomposed and handled by heuristics. It needs an efficiënt minimax

MSmits: should be doable with tiny overhead if it's just a matter of choosing when and how to open these complex objects. Branching should be small

MSmits: I am guessing you guys are doing this already but as a regular minimax

MSmits: btw, my samegame meta mcts is still running also, nearly 155k now :)

MSmits: going pretty slow but steady

dbdr: ah, now I know why it's so hot

MSmits: :P

MSmits: it's just using 1 core, the other core is still trying to beat jacek at oware, with little success

MSmits: it's interesting though, some branches going 70 plies deep now, no fundamental mistakes found. Kudos to jacek

MSmits: I managed to find them for Robo's bot in half this time

Marchete: jrke are you really 13 years old?

jrke: yes

Marchete: awesome

MSmits: mmh that makes me 3x awesome, I like it

**MSmits will warp your logic anytime anywhere

Marchete: whats a "simple endgame"?

MSmits: just loops and chains

MSmits: no 3 way splits

Marchete: well, I shouldn't consider 3 way an endgame

Marchete: but I'm still reading stuff

MSmits: it is an endgame because you cant place a line in the 3 way without giving away boxes

MSmits: loony endgame = any line you place gives away one or more boxes

MSmits: sometimes it's defined a little further in, after 1 and 2 length chains have all been removed

MSmits: so the smallest chain = 3

MSmits: frame 56 end game starts

MSmits: B4 and G4 have 4 way splits with chains

MSmits: which makes the endgame non-simple

MSmits: sorry G4 is 3 way

MSmits: Pretty sure jrke should have taken A4 at frame 57 though

MSmits: no reason not to

MSmits: now dbdr ends up having both

MSmits: A4 and A1

MSmits: This is one of those games where its hard to make an AI doesn't make mistakes a human can spot in 3 seconds.

MSmits: *that

Marchete: reaching from a 3 way to a "simple endgame" isn't part of the search algo?

MSmits: you mean the solver heuristics?

Marchete: my idea was more like search until you reach an endgame

MSmits: not in the paper no, but I think you can come up with them yourself, if they are all chains

Marchete: your kind of "simple endgame"

MSmits: yes, but what if the 3 way shouldnt be opened until it's the last object?

MSmits: then you have a huge searchspace

Marchete: and then return eval a difference score

MSmits: better if you can simplify the 3 way split with heuristics and then solve it right at frame 56

MSmits: instead of going off into a deep search

Marchete: do you think it can be solved?

dbdr: is there any research on that MSmits?

MSmits: I've seen T-splits mentioned

MSmits: but i did not find actual proofs or algorithms that include the splits

MSmits: but you can reason them out

MSmits: if the split has branches of 1 or 2 length you can easily see that you should take those first

MSmits: and taking 1 and 2 first is part of the known algorithm

MSmits: so those are trivial

MSmits: like the one at join A4 (the one thats first opened at frame 56)

MSmits: also part of the algorithm is that chains should be opened in order of length

MSmits: so my guess is that you can just open the splits in order of their chain lengths, but not 100% on that

MSmits: and it doesnt work with splits containing loops

MSmits: but they are more rare, so this may cover 90% of endgames

MSmits: G4 in the game I shared, is a loop actually

Marchete: I was just thinking about minimax/MCTS those 3 ways, I imagine a lot of states are similar

MSmits: yes, the idea is to minimax the objects you cant simplify

MSmits: but the less you do this, the better your algorithm will be

MSmits: so dont do it when it is not necessary

Marchete: yeah, and that's why I find out graphs so useful and nice in this game

Marchete: simple search bots can't perform well

MSmits: it's pretty hard to define simple here though

MSmits: there are many ways to search

Marchete: simple == minimax lines one by one

MSmits: do you consider every line? Or maybe only 1 line out of a chain

MSmits: ahh right, thats not good

Marchete: but that's what we do in many other games...

MSmits: true, but not all. You probably shouldnt do it in Twixt either

MSmits: interestingly, also an ericsmso game

MSmits: also game where humans easily beat most AIs

MSmits: for minimax in this game, i can see how to prune moves as an easy improvement on "try all lines"

MSmits: but I dont see how to evaluate a game

MSmits: except when it gets to endgames

MSmits: and you can count boxes

Marchete: yeah, I can't see any evaluation until endgame yet

Marchete: maybe "distance" to the desired number of chains

MSmits: there is just 1 thing and thats counting chains and check if the number is even or odd, but that changes so much that it seems meaningless in large maps

MSmits: for most of the game

MSmits: Marchete the distance is 1 or 0

MSmits: and thats what i meant

MSmits: when you know you're not going to win the control race, you can try to make many loops and 3 chains, according to literature, but it's hard to quantify this in an AI also

Marchete: I still don't know

MSmits: because how do you "know" for sure

MSmits: when there's still many lines to fill in before the end game

MSmits: thats why I am thinking mcts with heuristic end game solver

MSmits: rollout till endgame, then use the solver

MSmits: solver may include short minimax for complex objects

MSmits: you can backpropagate win/loss or boxcount

Marchete: I was thinking that too

MSmits: boxcount is interesting when you use unscored states

MSmits: and transpositions

MSmits: this game has many

Marchete: MCTS, a good game representation with a good hash for duplicated states

MSmits: this is where bitboards come in

Marchete: nah


MSmits: thats really cheap

Marchete: again, I'm trying to go really high level

Marchete: on board representation

Marchete: and trying to use similar structures than

MSmits: the thing is, I do the chain analysis only on expansion and on the end of a rollout, so i also have the high level board representation but it's converted from the bitboard

MSmits: yeah i saw that, thanks :)

MSmits: it's a good source

Marchete: with high level I mean: M chains of type X, N of type Y, O of type Z

MSmits: yes, i do that

Marchete: not even how it's done

Marchete: not horiz or vert


Marchete: so that

MSmits: whenever i need to expand a node, i do the analysis

MSmits: so once per rollout

MSmits: well and possibly and the end of the rollout

MSmits: so twice

MSmits: not sure how bad the cost is compared to your method, but they achieve the same goal

Marchete: but as a graph I just need to work with a single chain

MSmits: sure

Marchete: I don't know if bitboard can be faster

Marchete: from experience I have a hard time with them

Marchete: trying to get more high level info

MSmits: yeah it's not easy at all


Marchete: with a "chain" object

Marchete: I can track number of nodes by type

MSmits: yeah, that works fine

MSmits: but in the early part of the game it's very messy

MSmits: there are no chains then

MSmits: just lines everywhere

MSmits: how to do that in a graph?

Marchete: as always

MSmits: and how to make nodes in a tree

Marchete: neighbours

Marchete: and mark them to avoid loops

MSmits: hmm i guess it depends on how quick it is to evolve your gamestate

MSmits: applying a move

MSmits: I guess it's just disconnecting a neighbor

jrke: its interesting game but a good improvement giving 90%+ win rate

Marchete: disconnect and then evaluate nodetype counts

MSmits: what is jrke?

Marchete: to know if it splits or create a know chain type

jrke: d&b

Marchete: what improvement?

MSmits: whats the improvement?

Marchete: damn I have -1.80 score :D

jrke: that dbdr made

MSmits: lol i had that for a while until i tried a random bot :)

MSmits: ahh ok

Marchete: dbdr_ won't tell you :D

jrke: yeah i know

MSmits: Marchete the main advantage to a bitboard i think is that when I do selection phase, I have 0 overhead to applying moves

MSmits: so if i go 15 nodes deep in the search, i just do UCT and apply no moves

MSmits: the gamestate is on the node

MSmits: but that could be negligible, i don't know

dbdr: jrke, I haven't made any improvement

dbdr: you were winning before in one case and playing the same match over and over

jrke: oh so you went for random choice

MSmits: heh, you know why that's dangerous

dbdr: yes

MSmits: dont make me meta mcts this game, do randoms :P

dbdr: yes, it's also a good prevention against MSmits :)

MSmits: right :)

Marchete: int seed = rand();//1000;

Marchete: FTFY

MSmits: should be real easy to prevent in this game, so many ways to randomly place lines with no change in win chances

dbdr: Marchete, what are you fixing?

jrke: marchete needs to fix his whole d&b bot atm :stuck_out_tongue:

dbdr: btw FTFY is supposed to be a small change on what someone else wrote

MSmits: never heard it, let me urban it

MSmits: ah'k

dbdr: LEUTFY ;)

Marchete: your random seed dbdr

Marchete: rand() instead of a constant

MSmits: cant find leutfy

MSmits: google thinks you really mean lofty

dbdr: you don't know lmgtfy?

MSmits: sure

dbdr: then you're close

dbdr: > (02:04:43 PM) MSmits: never heard it, let me urban it

MSmits: :thinking: I give up

dbdr: let me urban it for you

MSmits: ahhhhhhhhh

dbdr: Marchete: are you planning a bot in F#? Clojure? Haskell?

MSmits: I've been wondering. Do these being functional programming languages make them slower? Say, compared to doing the same job in C++ ?

MSmits: or does that not affect it

dbdr: they all use GC, so at least for that yes

dbdr: of course the definition of "functional PL" is vague

MSmits: but does a functional programming language need a GC in principle?

dbdr: some are pure, some not

dbdr: depends how you define function PL :)

MSmits: ah

MSmits: but in general they are slower, but provide advantages in conceptual thinking about your program ?

dbdr: you can do functional style in C++ and rust and C#/Java ...

MSmits: sure

MSmits: I wouldnt want to do something like this in C++

MSmits: at least C# has Linq

dbdr: I suspect there are similar libraries in C++

dbdr: maybe not part of the standard but 3rd party

jrke: dbdr do you have something for endgame?

MSmits: dbdr's bot does seem to play the end game better than your bot jrke

MSmits: i see yours making mistakes sometimes

MSmits: mistakes you can prevent with some heuristics

jrke: ya,i saw some replays

dbdr: but I don't really do C++. the rust stdlib definitely has nice things in that regard

MSmits: the heuristics not only prevent mistakes, but also reduce branching in whatever search you are using

MSmits: like, always open 1 length chains before anything else

MSmits: always take 1 length chains when they are offered

MSmits: same for 2 length, when 1 lengths are exhausted

MSmits: only when those are gone does it get more complicated

MSmits: your search will probably lead you to this same kind of play most of the time, but why waste time searching?

MSmits: oh and always open a 2 chain by bisecting it, dont give the opponent a choice

MSmits: he has to take both boxes then

MSmits: that last one jrke, i saw you do wrong

MSmits: you opened a 2 chain by giving dbdr the option of taking both boxes, or closing the chain at the other end and forcing you to take them

MSmits: never give them more options

jrke: its the bug im trying to fix from last few days Msmits

MSmits: ohh ok, good

MSmits: as Marchete said, you're doing great

jaehwanspin: hey

jaehwanspin: hey you

Marchete: I won't do functional programming, I just use the ideas from that document

Marchete: I think it's really comprehensive about different states, and so well written

MadKnight: Marchete

Marchete: so I'll go probably C++

Marchete: MadKnight

MadKnight: DM Marchete

MSmits: I didn't know Marchete was into D&D

MSmits: oh direct message... I usually say PM

Marchete: I'm just reading it, the strategy behind the game is interesting

Marchete: in that sense yes, I'm into D&B

Marchete: but 0 code right now

MSmits: I said D&D, dungeons and dragons, because MadKnight said DungeonMaster

Marchete: ahh

MSmits: but thats ok :P

Marchete: sorry :D

Marchete: I played some RPG years ago

Marchete: LOTR, and vampire:mascarade

MSmits: I like D&B too obviously, most of my free time last week was spending reading and re-reading papers

MSmits: ahh cool

MSmits: I play D&D twice a year, over google meet now

Illedan: Got any of them good papers?

jrke: is fall in september?

darkhorse64: Usually the 21st

jrke: 21st ??

darkhorse64: Illedan:


MSmits: but it's not introductory

MSmits: you should read other things first

MSmits: just googling will help you with those

Illedan: Damn, 100 page paper

Illedan: tldr? :D

darkhorse64: Also: The Dots-and-Boxes Game: Sophisticated Child's Play book

darkhorse64: 100+ pages

darkhorse64: #3 without reading any of those ?

Illedan: Basic heuristics..

MSmits: i dont particularly like that book darkhorse64

MSmits: it's too focused on nimdots/nimstring

MSmits: the exceptions to those rules can't be ignored

darkhorse64: I am still at thet

**TorbenJauss hello

darkhorse64: the start.

MSmits: ahh ok

**TorbenJauss slaps TorbenJauss around a bit with a large fishbot

TorbenJauss: (╯°□°)╯︵ ┻━┻

darkhorse64: I wonder if it deals with complex chains. Some have fun with the chat

TorbenJauss: Was just trying the commands from help section ;)

Illedan: #testcommands <=

darkhorse64: TorbenJauss has discovered emojis. Pray that he does not find long lines

Marchete: Msmits these kind of paper are so hard to read

Marchete: hundreds of theorems and Corollaries

Marchete: and 0 graphical examples

Marchete: and I found 2 versions of that paper

MSmits: oh, did you find a longer version of it?

MSmits: illedan said 100 pages

MSmits: oh right, there is a 20 page and 30 page version it seems. Nice!

MSmits: I did not see the 30 page one before

MSmits: more theorems yay!

MSmits: nah it's just spaced out more and easier to read. Same paper

MSmits: you don't need all the proofs with the lemma's and such. You just need the results

MSmits: The results are not easy to read either, but it's doable

MSmits: mostly it takes time to get used to all the symbols

MSmits: like cv(G\4) = 4

MSmits: means, the controlled value of Game G minus one 4 loop (there's a sub (l) is equal to 4

MSmits: controlled value means, the value of the game when you dont give up control during the entire playout of the endgame except that you take all boxes of the last object

MSmits: cv = controlled value, v = actual value

MSmits: anyways, i did have to read this one several time

MSmits: I put all results from this paper in my solver already, but as I said, it only works for simple end games

Marchete: I have like 13 papers about D&B

MadKnight: MSmits i was telling people that your smitsi uses a pretty bad approach

Zenoscave: :popcorn:

MSmits: MadKnight do you mean the algorithm in general or my implementation of it?

Marchete: :popcorn:

MadKnight: the algo in general

MSmits: ahh ok, well it does what it does

MSmits: with its pros and cons

Marchete: come on

MSmits: depending on the game the pros may outweigh the cons, or not

MadKnight: nothing of that level Zenoscave it's just that his trees are independent and it creates a huge problem - your bot can't predict that the opp will change his moves depending on your previous moves

MSmits: Marchete does fairly well with it in PCR

Marchete: we want blood

Marchete: I already showed a :popcorn: !

Zenoscave: Right Marchete!?

Marchete: yeah

MSmits: MadKnight you are completely correct in what you say

MadKnight: no blood today

Zenoscave: damn

MadKnight: fix it MSmits

Zenoscave: dzpz

MSmits: the question is not whether this problem is huge or not

Zenoscave: ezpz

Marchete: it was like: "your ideas suck!" and politely replied "OK"

MSmits: the question is whether it is larger than the problem minimax has with the branching

MSmits: and depth

MSmits: smitsimax gets twice as deep

MSmits: with the assumption of independent trees

Marchete: top 4 PCR has 3/4 smitsimax

MSmits: depth is important in CSB, because just turning your pod around takes 10 turns

Marchete: 3 out of 4

Zenoscave: 10? I thought it was 6

Marchete: the alternative is combining moves

MSmits: 18 degrees = 1 turn

Marchete: === jolindien_s way

Marchete: on Xmas Rush

MSmits: 180 degrees = 10 turns

Zenoscave: the math works out

Marchete: decoupled MCTS or whatever is called

MSmits: yeah the branching is insane though

Marchete: my main problem...

MSmits: but xmas rush is really complicated to search. Anything that works is gonna be really messy

Zenoscave: Marchete can you look at some GitC replays and see if you have any advice?

Zenoscave: I'm close to legend but I think something crucial is missing

MSmits: the winning part?

MSmits: :p easy shot

Zenoscave: ;)

MSmits: i suck at gitc anyway, gj

MSmits: i quit at silver and someone boosted me to gold months later

Zenoscave: I win 45% of Matches against Gold Boss

Zenoscave: just need a little more...

dbdr: a lucky submit

dbdr: might be what you need

Zenoscave: lucky submit got me .8 below

MSmits: well possibly you might be able to push every player that wins over 55%+ vs you out of gold first

dbdr: luckier submit then ;)

Zenoscave: I already pushed one.

MSmits: you need a somewhat better bot yeah. Maybe some hardcoding? How random are these maps?

Marchete: you need >55% to be sure to pass

Zenoscave: My INC strat needs work

MSmits: I was able to get past gold boss in code royale by watching its play and improving its hardcoded strat just a little bit

Marchete: it's tricky

Marchete: I have coefficients

Marchete: and just spam train until I win more

Marchete: then as this wasn't enough

Marchete: I made different map coefficients

Zenoscave: how many maps are there?

MSmits: i was just wondering whether they are randomly generated or not

Zenoscave: I think limited random

MSmits: maybe randomly generated and then hardcoded?

Marchete: seed based

MSmits: with thousands of possible maps or maybe 20 or so?

Marchete: try GitC seed=673060485 && seed=844146682

Marchete: it crashes the server

Marchete: I know because I generated ALL possible maps

Marchete: locally

MSmits: how many?

Marchete: seed=0 to 999999999

MSmits: yeah ok, but duplicates?

Zenoscave: ^ this

Marchete: ahh

MSmits: two different seeds give the same map maybe

Marchete: I got stats

Marchete: probably

MSmits: also there could be symmetries

MSmits: which makes maps equivalent

MSmits: even if they are not exactly the same in input

Zenoscave: I think the equivalency of maps isn't an issue

Marchete: there was an special case

Marchete: rush maps

Marchete: were bases are really near

Zenoscave: Sometimes the boss stops sending troops from a few bases to save up for INC. if I can figure out when it's safe to do that I'm sure i've got legend

Marchete: I have my stats here, I got these values from maps: FactoryCount;TotProd;InitialTroops;DistanceBases;Count;SampleSeed

Zenoscave: just cant figure out the conditions for when it's safe

Marchete: GitC is 80% the first turns

Marchete: not a complete GG but really important

Zenoscave: seed=603912519 Can I get a replay of yours against me on this map?

Marchete: if you have doubts about how to improve, just pick a replay and use another one's bot, and press play

Marchete: to see the differences

Marchete: mainly in the first turns + bombs

Zenoscave: ok I'll play around with it


Marchete: and after that play a game with seed=673060485 :D

Zenoscave: Internal error. I saw already haha


Zenoscave: Seems I should try harder to recover stopped enemy factories

Marchete: why 13 to 6?

Marchete: it seems you bot prefer longer jumps in some cases

Marchete: and usually the center factory

Zenoscave: what was the other option?

Marchete: going thru the center

Zenoscave: let me see...

Zenoscave: Ah yes my Floyd-Warshall doesn't add 1 for hops. never got that working

Zenoscave: Well, I got it working but it does worse

Marchete: here I played a better bomb at turn=0

Marchete: you send 1 and 3

Marchete: I went 6 and 5

Marchete: I bombed "my factory" 5 because I knew it was a lvl3, nearer to yours

Zenoscave: Yeah I think I can fix bombs by looking for opponent score rather than -my score

Marchete: as I said I have several coeffs for different actions

Marchete: attack, INC, defense, etc

Marchete: I realized the map space is huge, 1 billion different maps, but some similarities, so I get some samples of them, like 100

Marchete: and trained to win more

Zenoscave: ok thanks. I've got enough to work with I think

Marchete: :D

Marchete: ok then :(

Marchete: so some points are

Marchete: jumps are important

Marchete: scoring of actions are important: when to defend, when to inc, attack, etc

Marchete: bombs are important

Marchete: 90% of the game are the first turns

Marchete: after some few turns it stalls or someone snowball

Marchete: few I don't know, maybe 20 or 25

Zenoscave: Thank you so much!

Zenoscave: this really should help

MadKnight: > the question is whether it is larger than the problem minimax has with the branching it doesn't mean u shouldn't fix it MSmits

MadKnight: MSmits u there ?

dbdr: MadKnight: [...] fix it [...]


eulerscheZahl: didn't thibaud plan to remove his moderating powers?

eulerscheZahl: see

Marchete: :D

Zenoscave: :popcorn:

eulerscheZahl: MK can you still kick me? as I have that mod icon on every chat but can't kick on #ru

eulerscheZahl: i didn't intend to start a fight, put back your popcorn

Marchete: :popcorn:

Zenoscave: *puts away popcorn

Marchete: too late

Default avatar.png JBM: :ice_cream:

Marchete: it's already "out"

Default avatar.png JBM: :soda:

Marchete: btw euler, no Dots and Boxes for you?

Zenoscave: I prefer Drum and Bass

eulerscheZahl: didn't feel like it, i'm not that much into board games

eulerscheZahl: and less motivated to code bots while coding at work too :(

eulerscheZahl: i miss my days as a student

dbdr: we need professional CodinGamers

Marchete: you did a lot

Marchete: of bots while working

Marchete: but yeah, I feel the same usually

Marchete: too much coding at work == less at CG


Aravindhsiva: Anyone can join

eulerscheZahl: well, for board games i'm less motivated

eulerscheZahl: feels too much the same to me. fast sim + opening books

eulerscheZahl: sure, you still need some scoring too

dbdr: D&B is deep

eulerscheZahl: but the part that's written for this specific bot and not reusable is smaller

eulerscheZahl: ok, i'm still not into it then :D

eulerscheZahl: maybe if i would try to write a basic bot first. but can't motivate myself to take the first step

**eulerscheZahl wants a contest

dbdr: what's happening with your game?

eulerscheZahl: in review

Marchete: D&B has little opening books afaik

Marchete: and it seems more about gamestate evaluation

Marchete: rather than brute force

Marchete: but probably will be on the future

dbdr: yeah, d&b does not seem bookable

dbdr: unless you want to exploit specific deterministic opponents

eulerscheZahl: well, the initial setup is always the same and the board is small

eulerscheZahl: on the other hand i don't think breakthrough is a good candidate for an opening book, so you might be right

dbdr: 110 first moves or so

dbdr: well less with symmetry, but still huge

eulerscheZahl: UTTT has 81 first moves. yet the center is what everyone does

dbdr: center is quite clearly special and better

dbdr: nothing like that here

dbdr: partly because it does not matter who played a move

dbdr: just if has been played or not

MSmits: 112 first moves, without doing rotations and mirror symmetry you can cancel 4 corner moves for being equivalent. Or you can just do the symmetry thing and arrive at 14 starting moves.

eulerscheZahl: will you try to make a book?

MSmits: I;ll be happy if i even get a working bot but sure, I'll make one eventually I guess. Not really to counter any specific player, but just to get a reasonable start. Probably just for 5 plies or so

MSmits: this game has about the same gamestate complexity as games like Othello, UTTT, yavalath etc.

MSmits: but the gametree complexity is much greater

MSmits: from which it follows that it has lots and lots of transpositions

reCurse: I propose the Smits Law in CG game design: every game should start from a random state.

reCurse: should = must

reCurse: Poor law otherwise

MSmits: not a bad idea :)

Zenoscave: how many games do y'all run before confident int win%? 100? 1,000? 10,000?

reCurse: You said it, use a confidence interval

reCurse: Number of games depends on winrate

mr.mister: How do you get those stars? The ones shown in a modal when you hover over someone's avatar in clash?

Zenoscave: Fair enough

Zenoscave: There's stars?

MSmits: Zenoscave your map sample must be good too

MSmits: fixed opponent can also be bad

MSmits: sometimes you win 100% and then you check the games and they are all identical, which means the test is about as useful as a test with N =1

MSmits: with random maps thats less likely

Zenoscave: I have random maps. But that makes sense yeah

MSmits: this is also why reCurse is right about his random start suggestion. Not just to prevent opening books, but to also to more easily test your bot and not get overfitted too quickly

Default avatar.png msd9126:

jacek: :v

PotatoCoder: yahoo im banned from discord

PotatoCoder: discord server*

jacek: achievent unlocked

PotatoCoder: yea an opinion was too much

eulerscheZahl: because of the capchas question?

eulerscheZahl: i just decided to ignore you, a kick or ban seems harsh

eulerscheZahl: (maybe i missed the end if the discussion, don't know if there was anything else that followed)

PotatoCoder: yea well i kinda trolled a mod and he probably banned me

Zenoscave: And you're surprised because?

PotatoCoder: becauce its a ban

PotatoCoder: not even a warning

Zenoscave: did you need a warning to know not to?

PotatoCoder: yea well do you shoot somebody if they make something bad

eulerscheZahl: Warning, Kick, Ban: notify the abuser with a public warning first, then kick if necessary, then ban if necessary

Default avatar.png VCODER_17: hey

Default avatar.png VCODER_17: does anyone know how to remove this chat window ?

Default avatar.png VCODER_17: from the right side of my computer screen ?

eulerscheZahl: append this to the URL: ?disableChat

eulerscheZahl: triangle at the bottom of the chat to just collapse it

PotatoCoder: document.getElementById("chat").parentNode.remove(); putting this to userscript removes chat

eulerscheZahl: but you way get the chat back at certain actions like entering the IDE. with ?disableChat it remains hidden

MSmits: reCursev andaag om 19:52 Great, someone banned the other guy and deleted all messages, so the conversation makes no sense.

PotatoCoder: i just noticed "Invite me to Clash, earn a free ban!" Power Tripping much?

MSmits: this was you PotatoCoder?

PotatoCoder: haha

PotatoCoder: yes

MSmits: not trying to get you banned here too, but, just out of curiosity, what was the subject?

reCurse: That's a joke in case the obvious needs to be told

reCurse: And I didn't ban you, what's the last message you typed?

reCurse: Don't lie

MSmits: uh oh, seems I moved the problem here, sry :(

PotatoCoder: "Error: The user is banned from this guild."

MSmits: guild?

reCurse: You typed a message before another mod proceeded to ban you

MSmits: he banned you from world of warcraft?

reCurse: I didn't see it

reCurse: What was it

PotatoCoder: ?

eulerscheZahl: what did you write to get banned?

eulerscheZahl: i was wondering the same

MSmits: it's a trap PotatoCoder

reCurse: Can you stop trolling for a sec MSmits

eulerscheZahl: i just saw you complaining about the CoC captchas. was there anything else?

jacek: he said 3 3 is best opening move for Y

MSmits: fine fine

MSmits: wait what jacek? What a noob

PotatoCoder: i typed "yea pretty cringe maybe we should ban everyone" and reCurse replied something like "whats your point" and i removed my message and got banned

reCurse: No you typed another message

reCurse: It got deleted and you got banned right after

reCurse: What was it

PotatoCoder: bruh i didint send any message

PotatoCoder: only remove

eulerscheZahl: how do you even know that and who did the ban reCurse? are there logs which just don't show the actual message?

reCurse: There are logs but they don't show deleted messages because Discord is sometimes terrible

MSmits: but how do you know he said something then reCurse?

MSmits: or did it just say he was "typing"

MSmits: cuz that might have been deletion activity

reCurse: I'd just find it weird he chose to delete 1 message then ban after, so I'm checking

MSmits: I'm still wondering why the ban

eulerscheZahl: we all are

MSmits: bad language or just general unproductive conversation?

reCurse: Doing due diligence here

reCurse: I revoked the ban but behave a bit more

reCurse: Thanks

eulerscheZahl: :thumbsup:

PotatoCoder: ok thanks

eulerscheZahl: out of curiosity: can I revoke bans too or just you as the server owner?

MSmits: huh

MSmits: server owner??

eulerscheZahl: reCurse is the one who set up the CG discord

MSmits: oh ok

MSmits: I was wondering maybe recurse bought up CG when I wasnt paying attention

eulerscheZahl: even got an honorable mention in a newsletter

reCurse: Most people didn't see the point at the time but I set it up anyway

MSmits: ah ok, i dont always read those

reCurse: Because webchat is terrible

reCurse: Unfortunately most people disagree

MSmits: i dont disagree

MSmits: this chat is terrible, but it's connected to the site

eulerscheZahl: i like the webchat more

Zenoscave: I don't not agree

MSmits: new people come here

MSmits: so this is where we welcome them

MSmits: if we all move over to discord, this dies and CG suffers I think

eulerscheZahl: mainly because it's directly integrated in the website and not a 3rd party

reCurse: eulerscheZahl Unbans need admin rights so me and Thibaud

eulerscheZahl: ok

MSmits: is there any way to directly integrate discord into a website?

MSmits: a channel i mean

eulerscheZahl: i also tend to have a look at user profiles when they are stuck at a given game and find a replay. on discord they don't always use the same nickname

Zenoscave: I doubt it MSmits

MSmits: would be a nice service

reCurse: Discord is kind of a package deal so embedding is not in their features

MSmits: ah

reCurse: Halite didn't need site integration at all and the Discord was very active

eulerscheZahl: at least they show more history than the 10k messages we had on slack

reCurse: People just get used to one thing and refuse to budge after

reCurse: True for many things

Zenoscave: mmmm QWERTY

MSmits: you're right to a point, but how do you get new players to the discord chat

MSmits: they start talking here because the chat window just pops up at lvl 3

reCurse: Just kill the webchat. Controversial I know.

MSmits: it's extremely accessible

eulerscheZahl: hosting question: is that all on discord servers or do you have to provide your own server for this? if it's the first I don't see what's the deal about setting it up

reCurse: All on discord cloud

reCurse: "Package deal" as in the platform is the product they offer.

eulerscheZahl: for free or paid for a server of that scale?

reCurse: Always free, so you're the product

reCurse: How I'm not sure yet, maybe they're still sucking at the teat of VC money

eulerscheZahl: i can get discord nitro for more emojis :D

MSmits: :frog:

eulerscheZahl: totally a selling point for me NOT

MSmits: I'd like to report a :bug:

MSmits: this :beetle: is actually a ladybug

eulerscheZahl: i see a mushroom

eulerscheZahl: with some biteouts

MSmits: the dots are black :P

eulerscheZahl: like the chat

MSmits: look it up in the emote selection window, with white background it looks ok

MSmits: yeah


eulerscheZahl: (they fixed it now afaik)

MSmits: the piss beer?

eulerscheZahl: hover foam

MSmits: oh

reCurse: Took me too long to notice


MSmits: people get too emotional over emotes

PotatoCoder: emotion is too relatable tbh

eulerscheZahl: even goes so far as to bundle new emojis with security updates so more users install them

MSmits: pretty :sick:

reCurse: That doesn't sound true

eulerscheZahl: now i have to find a source :/

MSmits: or just make it sound better

MSmits: spice it up a little

reCurse: I'd like to think we're not at the stage where we're doing A/B testing for security updates using new emojis

eulerscheZahl: The update includes more than 70 new emojis and a much-needed security update that patches the KRACK Wi-Fi exploit.


reCurse: Yeah sure but isn't that just part of the update rather than the reason?

eulerscheZahl: i think it helps to get more users into installing it. but i don't think i can find an official reasoning. so this point goes to you

eulerscheZahl: i hereby revoke my claims

reCurse: Besides I don't know how it is on Apple but Android is pretty aggressive on getting you to update

reCurse: I don't think you need incentive when there's basically no choice

eulerscheZahl: i don't have a mobile phone, so i can't tell

reCurse: :o

eulerscheZahl: either i'm home or you have to wait, that simple :P

reCurse: I can see the point about communication

reCurse: But it's still very useful without

eulerscheZahl: some friends get annoyed by it

reCurse: I'm not great at finding places so integrated GPS is really useful, etc

eulerscheZahl: and more and more websites require 2 factor authentication, i'm slowly getting locked out

MSmits: ahh right not many people like you and me euler

MSmits: I get :poop: about not having a mobile phone every day at work

MSmits: I use tokens for 2 factor

MSmits: also, if you use google or microsoft authentication, you can use a machine for it, instead of a phone number

MSmits: i can log in using my laptop

MSmits: i use that for some sites also

MSmits: there's usually a way around it

MSmits: (having a mobile phone)

MSmits: I feel if they want me to have one they need to give me one

eulerscheZahl: can have unpleasant surprises. e.g. you want to log in to your google account on another computer away from home. and it doesn't let you as there is some IP history and they figure it might be an intruder

MSmits: that's true

MSmits: btw, the 2 factor thing is actually tied to the machine, so to log in from a different computer, i need to have the laptop with me

MSmits: just to get the code

MSmits: at least that is how i understand it works

MSmits: otherwise it wouldn't really be 2-factor

MSmits: that way they also dont have to worry about the IP thing

MSmits: because you have to have the machine with you...

MSmits: try search for google + authenticator + laptop if you want

eulerscheZahl: nah, too tired

eulerscheZahl: going to bed soon

MSmits: ahh yes

eulerscheZahl: getting winter again :D

MSmits: what are you working on on CG atm?

MSmits: yeah that it is

eulerscheZahl: no, still waiting for CG to review my game

MSmits: so just chillin' ?

eulerscheZahl: yes

MSmits: ah k

MSmits: could do some dots

MSmits: and some boxes

MSmits: I hear you're good with the boxes

eulerscheZahl: played soccer earlier today i'm always tired after

eulerscheZahl: and that's another board game, meh

MSmits: yeah that makes sense

MSmits: maybe code a skin that make the boxes do exploding fireworks when you capture them

MSmits: but I get your point, you like more complicated game mechanics

MSmits: strategy wise D&B is very complicated though, but very mathy, not sure you like that

eulerscheZahl: i'm not sure either

eulerscheZahl: and recently i'm mostly playing contests anyways

eulerscheZahl: going to bed now, cat is waiting :D

MSmits: yes, dont keep the :Cat: waiting

MSmits: :cat

MSmits: :cat:

MSmits: seems i am tired too

MSmits: gn!

jacek: happy postCaturday

MadKnight: MSmits u still there ?

jacek: oO

MadKnight: hihi jacek

jacek: how may we help you, Sir/Madam

MadKnight: i'd like to talk about our lord and saviour, Decoupled MCTS

jacek: smitsimax?

MadKnight: nop

MadKnight: smitsi is just MCTS[]

MadKnight: MCTS[nAgents]

jacek: not for simultaneous games?

MadKnight: for them

MadKnight: both these things are for simultaneous games

jacek: welp never did anything for simul games anyway

MadKnight: smitsi basically runs a separate MCTS per agent and runs the exploration thingy in parallel

MadKnight: and Decoupled MCTS has moves for all the agents in 1 node

MadKnight: instead of just 1 agent

Scarfield: hi maddy :) long time no see maddy

Default avatar.png JBM: we missed u

Default avatar.png JBM: what's the current alg brand name

MadKnight: wat?

Default avatar.png JBM: MadKsimax?

reCurse: Wasn't that already talked about a while ago during the whole "smitsimax" craze?

jacek: try jacekmax

MadKnight: yea but i'm just explaining this stuff to jacek

reCurse: What was that again

jacek: instant win for all games

reCurse: Namely?

MadKnight: jacek what if u play jacekmax against jacekmax?

AndrewJ: y do i have to keep doing captchas

AndrewJ: i've never experienced this issue

AndrewJ: I have to do one every round

darkhorse64: too many clashes ? too many submits ?

Default avatar.png JBM: why not both

MadKnight: why not Automaton2000 ?

Automaton2000: i was doing that in the rules

darkhorse64: because ppl do not always realize that clash imply submit

Default avatar.png geoffreyFRANZ: hello some one have past wood ligue 2 in coder strike back ?

Default avatar.png alexobrien20: is there a way to view the last question after you finish your clash?

Default avatar.png znwra: +

PatrickMcGinnisII: Falcon 9 just launched here in FL, very cool

mr.mister: FL is florida?

Default avatar.png EPIC: Hello World

MadKnight: hello epic

Denshire: wow i only left this site for two years and they already deleted python 2:pensive:

MadKnight: but CSB is still there Denshire

Denshire: okay but... what happened to python2

Denshire: I fully realize that it makes no difference because they've still got python3, but i want to know for nostalgia's sake

MadKnight: py2 became officially outdated

MadKnight: they officially stopped updating py2

MadKnight: the python developers

MadKnight: Denshire

Denshire: well that sucks

Denshire: py2 will always have a place in my heart:cry:

MadKnight: is anyone still here, Automaton2000 ?

Automaton2000: i'm gonna use it for that

SashaGrey: hi

MadKnight: hihi

MadKnight: long time no c