Chat:World/2020-08-30
mr.mister: hmm, this is really weird. what does this mean? https://pasteboard.co/JoHZeu6.png
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 tech.io 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, https://www.codingame.com/playgrounds/36476/smitsimax
TheForgottenWorm_5d8e: i'm new here, and i've just done de tutorial and what's next?
MadKnight: https://www.codingame.com/ide/puzzle/coders-strike-back
MadKnight: now play a bit of this
REZ16: hey @MadKnight, i'm having trouble with the thrust
MadKnight: what trouble ?
REZ16: idk where to change the thrust
MadKnight: your code prints the thrust
MadKnight: just print a different thrust
REZ16: so i have to write print(.)??
MadKnight: don't u already have this print ?
MadKnight: then change it
REZ16: i did but it diddnt work out
REZ16: print(str(next_checkpoint_x) + " " + str(next_checkpoint_y) + "50")
REZ16: so i change " " to "100"
SPDene: you're adding "50" to the end of str(next_checkpoint_y). make sure there's a space between them
REZ16: where? str(next_checkpoint_y 100)?
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"
SPDene: you're using python, right?
SPDene: so... you don't need the str() round the numbers... python will deal with that for you...
REZ16: so where do i need to put the numbets?
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)
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...
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
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: https://www.codingame.com/replay/484372597 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: http://chat.codingame.com/pastebin/4054e225-ddf0-4466-91bb-82079e722b3b
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 https://www.scss.tcd.ie/publications/theses/diss/2015/TCD-SCSS-DISSERTATION-2015-068.pdf
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
MSmits: http://chat.codingame.com/pastebin/c226c317-ab54-46fb-a5d4-6f255017561f
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
MSmits: http://chat.codingame.com/pastebin/34e4dcef-36ef-46b7-adff-92537551ad8c
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: https://www.scss.tcd.ie/publications/theses/diss/2015/TCD-SCSS-DISSERTATION-2015-068.pdf
MSmits: Illedan the best one for me is: PLAYING SIMPLE LOONY DOTS AND BOXES ENDGAMES OPTIMALLY.
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: https://www.codingame.com/replay/484386690
Marchete: and after that play a game with seed=673060485 :D
Zenoscave: Internal error. I saw already haha
Zenoscave: https://www.codingame.com/replay/484387879
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 https://www.codingame.com/share-replay/484388849
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 [...]
- IDENTITY CONFIRMED *
eulerscheZahl: didn't thibaud plan to remove his moderating powers?
eulerscheZahl: see https://www.codingame.com/playgrounds/40701/contribute---help/chat-moderation
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
Marchete: it's already "out"
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: https://www.codingame.com/clashofcode/clash/13588657f362229f43153377f38f76a05c67d01
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
msd9126: https://www.codingame.com/clashofcode/clash/1359007ef3a9708dc7126cb372481bc767b8efc
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 https://www.codingame.com/playgrounds/40701/contribute---help/chat-moderation
VCODER_17: does anyone know how to remove this chat window ?
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: https://pbs.twimg.com/media/DNTBEcoW4AAZJcV.jpg
eulerscheZahl: (they fixed it now afaik)
MSmits: the piss beer?
eulerscheZahl: hover foam
MSmits: oh
reCurse: Took me too long to notice
eulerscheZahl: https://www.theverge.com/2017/12/5/16737066/google-burger-beer-emoji-android-8-1-fix-release-date
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.
eulerscheZahl: https://www.cnet.com/news/apple-ios-11-1-software-iphone-x-8-8-plus-emojis-apple-watch-watchos/
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
JBM: what's the current alg brand name
MadKnight: wat?
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 ?
MadKnight: why not Automaton2000 ?
Automaton2000: i was doing that in the rules
darkhorse64: because ppl do not always realize that clash imply submit
geoffreyFRANZ: hello some one have past wood ligue 2 in coder strike back ?
alexobrien20: is there a way to view the last question after you finish your clash?
PatrickMcGinnisII: Falcon 9 just launched here in FL, very cool
mr.mister: FL is florida?
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