Chat:World/2020-08-23
kevmok: how to debug?
Zuabros: debug what
kevmok: like a console when typing code
procamania: i guess were looking for the step through function or watch option like a regular IDE
SANA: Guys i'm just starting bot programming. I haven't knew it before. How can i start it? Any suggestions
Zuabros: yes
Zuabros: Do the harry potter one
Zuabros: its pretty straigthforward
Zuabros: fantastic bits
Zuabros: then coders strike back, its nice to start too.
Zuabros: all you need to know is how calculate distance from two cardinal points (which you basically will need to know to every bot)
Zuabros: use some sort of greedy algorithim (go to nearest point) and you have a nice start
SANA: Cool. Thanks for the suggestion. I really appreciate that.
GoogleJeff: pankdm: share your code please!
GoogleJeff: pankdm: I want to see how you beat me by 11 characters
GoogleJeff: oh, very clever
GoogleJeff: nice job!
jacek: good morning
SpotlessCoder: Hi I'm streaming clash of code on twitch @ twitch.tv/spotlesscoder - Grinding for winning 10 clashes in a streak
dbdr: happy caturmorrow jacek
anantaCodes: Hello, Are the questions of Clash of Code available as a collection anywhere ?
Allis: @anantaCodes Do you solemnly swear that you're up to no good?
anantaCodes: @Allis What do you mean? I solved a problem which I could not in a clash and now I want to see if the test cases that were given in the problem.
DiL: @anantaCodes I may be wrong, but I don't think there's a list; you can submit a feedback if you think there's an issue with a clash
anantaCodes: @DiL There is no issue with the clash. As I said, I wanted to verify my solution against test cases. I think there is no way to go back to a particular clash question then?
DiL: once the clash is done I don't think you can test your solution... clashes repeats if you keep playing enough
Allis: @anantaCodes Still around?
MSmits: \u23A0
MSmits: (testing)
MSmits: ⎠
MSmits: ⎠
jacek: �
MSmits: looking for unicode characters to draw dots and boxes map
jacek: oh my
MSmits: think i got the dot and left line
MSmits: but top line is hard to find
MSmits: ⠁ ⎸
MSmits: these I have
Sherkhan: что делать
MSmits: I'm gonna solve 2x2 map before I go out of wood 1 :P
jacek: trying to book it?
MSmits: ▔
MSmits: no
MSmits: I mean writing mcts solver, then run it on turn 1 and win
MSmits: it's very doable
MSmits: in wood 2 i mean sry
MSmits: 2x2
MSmits: ▏▔▏▔ ▏▔▏▔
MSmits: meh
jacek: maybe use ncurses
MSmits: whats that
jacek: lib for console text gui
MSmits: I want it to work well in the IDE where I'll be testing mostly
MSmits: btw as for books, dots and boxes 7x7 is like uttt in that regard. It only works if someone else is booking also, otherwise too much branching
jacek: 196 moves 1st ply
MSmits: or when they use a *very* determnistic for of minimax. But randoming on equal score should mostly solve that
MSmits: mmh isn't it 112?
jacek: 112 rounds
MSmits: in fact 14, if you account for symmetry
jacek: ah well maybe
jacek: yes, counted squares * 4
jacek: i have squares. adding 1 edge affects 2 squares
MSmits: yes 49 squares, 112 lines
MSmits: 7*8 + 7*8 = 112
jacek: hmm gonna make move generation more smart
MSmits: good idea, plenty of heuristics to try
MSmits: dont generate every move
MSmits: are you using minimax or mcts?
jacek: for now trying minimax. but for now i have simple heurstic
MSmits: ah, I feel this game should be mcts
jacek: eeyup
MSmits: but with real rollout
MSmits: not EPT
jacek: oO
MSmits: heavy, real rollout
MSmits: no need to play till 112
MSmits: you can do chain analysis, last 40 plies or so
MSmits: maybe sooner
MSmits: games should solve halfway I think
dbdr: are you starting D&B MSmits?
MSmits: yeah, slowly though, I want to try to solve 2x2 with a mcts solver before I try the bigger board
dbdr: cool
MSmits: from 2x2 to 7x7 I will need a simulation function and many move generation heuristics, so that will be slow as well.
dbdr: I think it's a fun problem
MSmits: yeah
MSmits: did anyone share a way to print maps easily?
MSmits: having trouble coming up with a scheme
MSmits: http://chat.codingame.com/pastebin/f02859e3-0720-45a5-a0a4-88a7d84719b3
MSmits: thats crappy
dbdr: not that I know
dbdr: what about https://en.wikipedia.org/wiki/Box-drawing_character
MSmits: kk
MSmits: yeah I tried that
MSmits: http://chat.codingame.com/pastebin/614ad2b9-1383-4432-af89-61b7f7e9c89c
dbdr: or just + and -- and |
MSmits: this is better
jacek: finally fixed bug. i was always losing as 2nd player
jacek: forgot to change currentPlayer in game object. input/output mehs
dbdr: :D
dbdr: personally I ignore the playerId input
MSmits: dont think you need it
MSmits: http://chat.codingame.com/pastebin/de56a5ec-def7-4e64-aa07-2324225e04e0
MSmits: looks good right?
MSmits: now let's hope the lines go in properly :P
dbdr: beautiful :)
MSmits: mmh dont think they monospace properly
dbdr: CG console is bad for that
dbdr: need to modify the CSS
MSmits: sucks :(
dbdr: it can be done, but yeah...
Memo12334: uh so this bot programming challenge gives a something in units. What can I do with that
Memo12334: "a radius of 400 units"
MSmits: ignore it
MSmits: it's 400
MSmits: doesnt matter what the unit is
MSmits: thats why it says units
MSmits: it's just a radius of 400
Memo12334: will see what I can do with the opponentxy
MSmits: http://chat.codingame.com/pastebin/887e775e-470e-4702-bfc0-ceb2fb64ed0d
MSmits: nice huh?
dbdr: ^ wins the beauty contest ;)
MSmits: :)
Illedan: What is that?
MSmits: dots and boxes map
Illedan: For? :P
MSmits: dots and boxes
Illedan: Alright :+1:
Illedan: oh
MSmits: just like to be able to print a map for debugging
Illedan: there is a puzzle called it
MSmits: it's a multi
dbdr: multi
dbdr: seems not losing as p2 helped you jacek :)
OliB150: If i wanted to 'give up' on a certain game/challenge and try another one in the meantime, will my existing code be saved online at all, or should I take a copy?
MSmits: whenever you click play it's saved
MSmits: whenever you click submit in a multi arena it's also saved in the history tab
MSmits: so you can check older versions thee
MSmits: there
OliB150: ah ok, ye i saw the history one for submit and was worried that was the only way it got saved, but i can only do 5/7 test cases atm! :'(
MSmits: which game is that OliB150?
MSmits: ah dont remember that, or maybe I didnt do it at all
OliB150: "only" a medium dificulty, but I can't get those final two as I need to change how I'm storing data so I can work with it a bit easier!
MSmits: ah yes, well then you know what to do
MSmits: mediums can be quite hard btw, the puzzle creator decides the difficulty and they aren't always right about that
OliB150: Well, I know I need to change it, but I can't work out what it needs to change to yet, hah
OliB150: it's only a few days old but only has a 30% completion rate, so at least I'm the same boat as a lot of others!
OliB150: Tbh, I only checked the description before choosing it, considering I only signed up yesterday, maybe it was a bit too much too soon (although it's by no means by first day programming!)
jacek: someone actually reads descriptions before trying? o.O
OliB150: It was the first one that came up, so it wasn't a rigourous selection process, lmao
Illedan: Wow, 100 games in wood 2 of Dots and Boxes. :zzz:
dbdr: how come?
Illedan: No idea why I have to do 100 games to promote :P
Illedan: But it is a waste of resources :D
dbdr: maybe it's a change for all commus now?
dbdr: would be good generally
Illedan: For the top league yeah
Illedan: Wood 1 :rocket:
dbdr: gz
Illedan: :bow:
dbdr: hold on to your sanity now ;)
dbdr: you promoted very quick if you just looked at it 20 minutes ago
Illedan: 3 ifs...
dbdr: :)
Illedan: Fixed size board in Wood 1?
dbdr: yes, 7x7
dbdr: Illedan: writes three ifs and promotes in 15 minutes MSmits: write a MCTS solver for wood 2
dbdr: 2 players, 2 styles ;)
MSmits: yeah !
MSmits: though obviously I am doing it to practice my algorithm in a smaller setting :P
MSmits: this is what wood leagues are for :)
MSmits: http://chat.codingame.com/pastebin/56244503-da75-4eaf-966f-76ddf8840345
MSmits: just using the same bitboard
MSmits: so that I can easily port it to 7x7
jacek: bitboard eh?
MSmits: sure, why not
MSmits: it's 112 bit for a full gamestate
dbdr: with MSmits bitboard is why not, it's of course!
MSmits: of course!
dbdr: you don't store the score in your state?
MSmits: why use scored states
MSmits: from every gamestate, the history doesnt matter
MSmits: only the future
jacek: you said 112 bit for a full gamestate
MSmits: it's like oware
jacek: thats a kue
jacek: lie
MSmits: i can store transpositions without the score
dbdr: the bitboard is a lie
MSmits: so in that sense it's not a lie
MSmits: if you read papers, they always use unscored states when trying to solve
jacek: i only read rocks
MSmits: you mean like... tablets?
jacek: and they store scores there
MSmits: stone ones?
MSmits: on rocks?
MSmits: :confused:
dbdr: D&B looks like a game that could have existed for millenia
MSmits: agreed
jacek: like oware?
dbdr: yes
MSmits: it's cool that you can play it with smaller grids too. 5x5 isn't even solved afaik
MSmits: 5x4 is
dbdr: 5x5 is solved
dbdr: took 8 years :)
MSmits: ah then I read an older paper
MSmits: nice :)
MSmits: where did you read that?
jacek: he solved it
MSmits: mmh don't think dbdr is obsessive enough for that
dbdr: https://www.littlegolem.net/jsp/forum/topic2.jsp?forum=110&topic=148
dbdr: MSmits, misunderestimated me ;)
MSmits: I did?
dbdr: > don't think dbdr is obsessive enough for that
MSmits: you would let a program run for 8 years ?
dbdr: I haven't done it, so I can't be sure
jacek: i bet MSmits would
MSmits: yeah I would
dbdr: it's true I'd rather obsesses for a few weeks than years, but it might happen
Illedan: WTF, who makes the Indexes of Y go the opposite way of normal
Illedan: (╯°□°)╯︵ ┻━┻
MSmits: Illedan yeah that was annoying
MSmits: but it's like that in Onitama also
dbdr: N - Y
dbdr: problem solved
Illedan: pff
Illedan: Ok, was only 2 places to fix
Illedan: Phew
Illedan: Gogo top 10
Illedan: :D
dbdr: also, it's debatable what is "normal". math has Y growing upwards for centuries at least
Illedan: Yeah, but every game. ever. has it downwards :P
jacek: maybe in australia
MSmits: and it makes sense, that's the direction trees go also
jacek: your game trees go upwards?
MSmits: i meant the biological ones, but sure, it's probably better to draw game trees upward, because then the root is down :P
MSmits: like with trees!
MSmits: again... biological ones
dbdr: like this MSmits? https://thedailymass.com/wp-content/uploads/2014/12/tree_upsidedown.jpg
MSmits: err
jacek: :tada: https://www.codingame.com/share-replay/483247366
dbdr: gogogo #1 jacek
jacek: nah im gonna need to rewrite my game engine
MSmits: so your winscore = 10k - empty boxes left?
jacek: 10k - ply level, or -10k + ply level
MSmits: so that it prefers states with more finished boxes or something?
MSmits: ohh ok
jacek: so shortest wins are better
MSmits: right, that makes sense in general
MSmits: but dont think it matters here does it?
dbdr: not if you wan to humiliate your opponent
MSmits: or do is a chain move a single ply for your bot?
jacek: each move is different level in my bot
MSmits: like 5 moves in a row, counts as 1 round?
MSmits: oh ok
MSmits: you can do it either way i suppose
jacek: well shortest wins are better in most games
dbdr: well it's annoying that you can play several times in a row
MSmits: yeah
jacek: in breakthrough i could play with opponent for 20 plies seeing forced win
dbdr: or you can have multimoves. it's a tradeoff
MSmits: jacek yeah those are funny
MSmits: dbdr multimoves only works with good heuristics
MSmits: because in some cases, multimoves will lead to a node having thousands of children
dbdr: it's just a different representation. it's equivalent
MSmits: so you need to force some order in there
dbdr: right
dbdr: but your tree is much less deep
MSmits: true
dbdr: so it's still equivalent
MSmits: yeah
MSmits: but practically, multimoves is harder to implement
dbdr: (a^b)^c = a^(b*c)
MSmits: right
Illedan: Damn, the gap from 7th to 6th. I guess this is where the real game starts :D
dbdr: yeah, with very fw ppl in wood 2
dbdr: I think this game misses another boss
Illedan: Yeah
dbdr: which can be added later. it's fine for now
Illedan: Should be a copy of jacek - 2 points
jacek: i think im the last who uses some search
jacek: rest is some heuristic or random
dbdr: leojean890 uses heuristic I think
MSmits: mmh is there any time with the 2x2 where it's not the best choice to take a box when it is available?
MSmits: I don't think so, but not 100%
dbdr: don't make me think about 2x2 ;)
MSmits: too complex?
dbdr: less than 7x7, but distracting
MSmits: allright :)
dbdr: https://www.codingame.com/replay/483245585
MSmits: nice chain
dbdr: I think I've only seen field3 doing those
MSmits: might be some weird heuristic
dbdr: this game is definitely weird :)
MSmits: ^
pardouin: ooch, it hurts
pardouin: I used to play this game alot in high school ^^
dbdr: why does that hurt?
pardouin: to get "Fanny"
dbdr: ah :)
dbdr: gotta pay field3 a drink
pardouin: I just passed 2x2, didn't try 7x7 yet
pardouin: I focused more on CotR and CvZ to get CPs fast (for the quest map)
Monsieur_Pook: on coders strike back what's the point of shield if you can't calculate the distance to the enemy ship?
pardouin: I'm pretty sure you CAN calculate it
pardouin: but anyway you can get gold without using shield at all
Monsieur_Pook: oh I thought i should use them since they were introduced anyways
Putnam3145: wow, literally all of the validators work locally but 50% fail when submitted
Putnam3145: that's kind of annoying
AndrewJ: bad test cases can be annoying
pardouin: what puzzle is that?
Putnam3145: labyrinth
pardouin: your algorithm is too slow?
Putnam3145: might be
Putnam3145: kinda doubt it though
AndrewJ: my internet is so slow and it took like 1 minute for my code to freaking test and submit
TheSpiffiest: So when a program times out - are those timeouts adjusted for languages?
DomiKo: nope
MSmits: no, that would be a bad idea
DomiKo: everybody is equal :wink:
TheSpiffiest: Ha. Well Rust is 12 faster than python in my simple tests and I have everything working at home, but times out on the server...
TheSpiffiest: So time to translate
MSmits: you can't give languages a bonus to put them on equal footing
MSmits: there is no fixed relation between them
MSmits: sometimes c++ is 100x faster than python
MSmits: sometimes 3x
TheSpiffiest: I can see that
MSmits: if you were to try to correct for this, people would have to try all languages to see which one was most overcorrected
Putnam3145: the timeouts tend to be more for algorithmic issues than anything else
MSmits: now they can just choose the language that is most suitable for the job at hand, which is what CG promote
MSmits: it's madness to give python players 10 seconds per turn on UTTT just to put them on equal terms with C++ with 100 ms. Think of the server load :)
TheSpiffiest: True. And it's a bit like code golf. You should learn list comprehension runs faster than similar for loops
TheSpiffiest: semi-unrelated, but http://www.pythontutor.com/ helps a bunch in seeing what python actually wanted to do
MSmits: nice!
MSmits: I'll remember that for when I am teaching it
pardouin: you can prototype in python and then translate in C++
TheSpiffiest: So for reference - what is the timeout so I can practice at home?
MSmits: you can, but you will have to do some work to optinize in C++ also
TheSpiffiest: is there a standard?
MSmits: usually it says in the multiplayer arena
MSmits: for puzzles I think 6 s?
MSmits: check the description
TheSpiffiest: ...2 seconds on this one. You guys thought of everything. :)
MSmits: well not me, but some of them did :P
Putnam3145: it wasn't too slow
Putnam3145: it's just that my algorithm ONLY COINCIDENTALLY found the fastest for each of the test cases
Putnam3145: and it failed to on half of the server test cases
TheSpiffiest: interesting. What problem was that for?
Putnam3145: labyrinth
pardouin: fix your heuristic :)
TheSpiffiest: I had a little similar for checkers. As I develop bots the stuff I haven't completed just returns random. Depending on the run it would go from 15th to 50th
pardouin: maybe you thought too much about the testcases for your heuristic without imagining other situations
TheSpiffiest: usually lower
Putnam3145: nah, the problem was that I somehow didn't notice that my algorithm wasn't actually checking the entire map
Putnam3145: or rather, checking until it finds a path that's short enough
glenngielty: Horse-racing duals
field3: I'm a little happy. Thank you dbdr.:relaxed:
Memo12334: hate it when my pod keeps moving around a checkpoint for eternity
dbdr: from the big win field3? :)
EcksDee: reduce your speed in some cases, and/or adjust your target position relative to your velocity
field3: It is a side effect of the strategy of surrounding from around to avoid "2block stop algo".:slight_smile:
Izzobacul: @Nakinamo share your code please
Nakinamo: @Izzobacul here you are!
Schwase: yoo
Fosfen: Hey ! I am struggling simulating the mars lander problem
Fosfen: If the gravity force is 3.711m/s², why is the lander falling 2m ins the first second instead of 4m ?
Fosfen: (rounded values)
EcksDee: s = s0 + v0 * t + 0.5 * a * t
EcksDee: you need to multiply the acceleration by 0.5
Putnam3145: it's kinda intuitive too
Putnam3145: it's going at 3.711 m/s at the end of that second
Putnam3145: and it was going faster linearly that whole time
Putnam3145: and it started at 0
Putnam3145: so,
Putnam3145: you take the average of the start and end velocity in that second to get the total distance traveled
Fosfen: Ohhh ok I think my understanding was too naive for this, gotta hit high school again I guess
Putnam3145: and you find that (0+3.711)/2 is in fact something like 1.85
Putnam3145: i never learned this in high school but then i never got into calculus in high school
EcksDee: mars lander is the only (i think) puzzle that does not simply just add the acceleration to the vel
Fosfen: Thank you !
EcksDee: oh i forgot something.. s = s0 + v0 * t + 0.5 * a * t^2 but since t = 1, its still the same :)
Zuabros: Fosfen, you are misunderstaing acceleration for speed
Zuabros: acceleration is the speed in wich speed increases, not speed itself
Fosfen: Yes I tried the naive approach of adding the force directly to the speed which is not how gravity works at all
Putnam3145: not how acceleration works
Putnam3145: they're not the same units
EcksDee: its the way it works in the other physics puzzles though. Acceleration vector added to velocity vector, velocity vector added to position vector. as far as i remember mars lander is the only one where its actually correct, and not just summed discretely together, so a natural mistake to make on this site :)
Putnam3145: my simulations in mars lander work assuming the discrete summing, though?
Fosfen: Yeah I guess it also works but the values are slightly different
EcksDee: if you are multiplying by 0.5 its not disctrete. the 0.5 comes from the integral
Putnam3145: I'm taking the current velocity vector, adding the gravity and force vectors to it and using that as the simulated value, and I'm using it to simulate where I'm going to land and how fast, and doing it in such a way that if I'm off at all I'll crash,
Putnam3145: don't panic in less than 200 characters is brutal
codest: nice
MSmits: Putnam3145 agreed it is
jacek: but you made it?
MSmits: I did, dont know if Putnam3145 did
EcksDee: he is a brutal proffessor
EcksDee: so much so i had to use 2 f's
jacek: https://gfycat.com/pl/amplemisguidedchanticleer
EcksDee: xD
MSmits: good teaching :)
jacek: that's msmits first lesson as teacher
MSmits: i wish :)
EcksDee: hoogleraar or professor in dutch?
codest: java best
codest: it is very useful
jacek: kree java!
MSmits: hoogleraar / professor is almost the same I think
codest: and python the best
EcksDee: high teacher seems to be the cool'er name :)
MSmits: mmh high in English has some added meanings though
MSmits: Hoog doesn't mean you just took some weed, for example
EcksDee: haha wasnt how i meant it either
MSmits: hehe ok
EcksDee: high king for instance, is a king ruling over other kings
MSmits: while smoking tons of weed
EcksDee: xD of course
Putnam3145: i need to go to bed
Putnam3145: tomorrow i will try it in, like, ocaml or closure or something, who knows, even ruby has had no luck for me
Putnam3145: clojure.
jacek: D
MSmits: Putnam3145 I did it in python
MSmits: helps if you do a bunch of golf clashes and watch how other players do it
Putnam3145: i got my 4-wins-in-a-row or whatever it is by a bunch of code golf clashes in a row
Putnam3145: cause those are easier for me to win, usually
MSmits: ah I havent done that yet
MSmits: btw, that particular golf is not just about smart golf tricks, you also need to make the logic as simple as possible
Putnam3145: yeah, i can tell
MSmits: you dont need most of the input
jacek: why does d&b has the illusion of black dots :v
MSmits: and the exit can follow the same logic as every elevator
Putnam3145: this i also could tell, but i'm not sure what less input i could use
Putnam3145: yeah, i'm just storing all the PoIs on every floor, then checking if they're before the first one or after the last one, depending on direction
MSmits: Pols?
Putnam3145: points of interest
MSmits: ah
Putnam3145: exits + elevators
Putnam3145: everything else is ignored
MSmits: I do it differently, I know that they change direction every time they are stopped
MSmits: so i have a sign thingy that flips
MSmits: and they always go to the right first
MSmits: that way you already know the direction your guys are going at any time
Putnam3145: ah, so you don't have to compare to "RIGHT" or "LEFT", you just see if it's different from last tick
MSmits: yeah something like that
Putnam3145: although i'm not comparing to RIGHT or LEFT
MSmits: this might not be the best way btw, but it was compared to what i had before that
Putnam3145: i'm comparing the first char to R or L, obvs
Putnam3145: where that's shorter
MSmits: yeah someone else told me they did that
Putnam3145: bafflingly my python golf is actually worse than my D golf
Putnam3145: MAYBE BECAUSE I'M USING SPACES INSTEAD OF TABS
Putnam3145: WOW
MSmits: spaces are better
Putnam3145: i personally use spaces
Putnam3145: but for golf, where you're losing by the character?
Putnam3145: no way
MSmits: also, you should try to put everything on one line if it is indented
pythonFan-arch: hello pragrammer :D how you going
MSmits: whats a pragrammer?
pythonFan-arch: a person who code
Putnam3145: okay my python score is... still kinda bad because i'm at 85%, whoops
MSmits: woops
pythonFan-arch: guys who to baypass ZeroDivisionError: division by zero
Aravindhsiva: https://www.codingame.com/clashofcode/clash/1349470a4ea1bd5c6cff54d663080dcc2b4ba04
MSmits: dont divide by zero :P
Aravindhsiva: Anyone can join
MSmits: I wonder if I've solved 2x2 D&B. My algo stopped after 10 ms and 18981 rollouts
MSmits: seems reasonable
MSmits: dont output any moves yet so...
dbdr: MSmits: time to publish a paper ;)
MSmits: lol
dbdr: after 10000000ns, we finally have the answer!
MSmits: yeah :)
MSmits: what is the solved score for 2x2 again?>
MSmits: says +2 for 2nd player from my algo
jacek: quite a chain eh https://www.codingame.com/share-replay/483302468
MSmits: dbdr lost the full board to a chain earlier
MSmits: 49 boxes :P
MSmits: ahh seems like my bot says 3-1 from optimal play, same as theory
MSmits: I dont trust this though, I fixed far too few bugs
jacek: you dont trust theory?
MSmits: i dont trust my bot :P
dbdr: what's your source for the 3-1?
MSmits: https://puzzling.stackexchange.com/questions/1728/optimal-play-for-2-by-2-dots-and-boxes
MSmits: I vaguely remember reading about the +2 result earlier
jacek: oh and they use the same format to print the board as you
MSmits: I just noticed that, thats not where I got it from though
MSmits: I got it from some gith link
MSmits: someone made a D&B player I think
jacek: drum&bass player
MSmits: time to output some moves. This is particularly annoying. I always store game states on games like this so I have to compare the game state of the winning child with the result of a move, at the end
MSmits: which is painful because of chains and such
dbdr: you don't know which move corresponds to which child?
MSmits: not during search no
MSmits: I just generate the new states
MSmits: without giving them moves
MSmits: giving them moves is a bit silly when you can get to the same state by different routes (transpositions)
dbdr: but you need the moves when you generate the children
MSmits: yeah, but I dont store them
dbdr: you don't need to store them
MSmits: during selection, i dont apply moves
MSmits: I just get the new boardstate from the node
dbdr: you need them at some point to generate the child
MSmits: yes
dbdr: you could use that again
MSmits: yeah I can regenerate the states using almost the same code.
dbdr: the nth child is the parent modified by the nth move
MSmits: thats what i usually do
MSmits: mmh not exactly
MSmits: because of chains
MSmits: I could have 10 children and each of them have the same move
dbdr: so if the nth child is the winner, you do the nth move
MSmits: because it's taking a box
MSmits: I use multi-move
dbdr: I don't understand, how can the same move lead to different children?
MSmits: because of chains
MSmits: the child can be multiple moves away
MSmits: the next layer in my tree is always a player switch
dbdr: if you use multimoves, then it's a single mutlmove away ;)
dbdr: right, so from a multimove you need to pick a single monomove
dbdr: but that's a smaller problem
MSmits: yeah, but it's some work to determine that. But you're right, i dont have to actually compare the states, i can regenerate the states in the same order
dbdr: I guess it's similar work
MSmits: for oware it's much simpler. I just take the root state and the best child and see which pit is empty
MSmits: which *extra* pit is empty that is
dbdr: I mean it's not hard to find the edges that were added, then pick one of those that's currently legal
MSmits: hmm, thats neat
MSmits: though
MSmits: no, nvm, that doesnt work
MSmits: you need to pick the right edge
MSmits: so that you take boxes
dbdr: "pick one of those that's currently legal"
MSmits: you can take a box and then a random edge
MSmits: or just take that random edge
MSmits: both are legal
dbdr: indeed, i meant to say one that create a box
MSmits: ah ok
dbdr: which is also trivial
dbdr: sorry, I said it wrong earlier
MSmits: right, no, i got it
MSmits: this sort of thing also always annoys me in minimax
MSmits: the top layer needs a slightly different approach because you need the move
MSmits: so basically, I dont mind the search, I am just too lazy to give the answer :P
dbdr: 42
MSmits: true
MSmits: ".. and everything" so yea
dbdr: it's the same principle
dbdr: very long computation, at the end what you get is the knowledge that the computation is finished, and a meaningless answer
reCurse: Just store the PV at every level, easy
CamelCase_joke: hey guys, is regex used often in code golf?
MSmits: hey reCurse!
MSmits: anything you're working on on CG?
jacek: :tada: https://www.codingame.com/share-replay/483306781
reCurse: A little bit
MSmits: ... runner?
reCurse: No
jacek: u...t?
eulerscheZahl: your own game where you are getting around the SDK?
reCurse: lol I forgot about that one, oops
reCurse: I have too many competing interests
dbdr: jacek, did you break your bot?
jacek: somewhat
AliZainAldeen: bayern vs psg what do you say ?
wartonbega: psg cauz france is better XD
Zm4j: psg cauz they are underdogs
jacek: bayern because lewandowski
Illedan: EricSMSO ?
Illedan: Very annoying to not see the final score in the end of DB -.-
jacek: hm?
Illedan: Winners score is replaced by WIN..
Illedan: I would like to see the actual score value :P
jacek: you can count the boxes yourself
Illedan: -.-
jacek: am i wrong?
Illedan: No.
codest: it is hard work
EricSMSO: Hello you all. I agree it would be better to display the winner's score at the end. I could change this quite easily, but is it allowed to change something once it is approved by other contibutors ?
JBM: changing the viewer only is morally correct
JBM: for technicalities of what does or doesn't mess up the rest, i think illedan is better placed to answer
MSmits: EricSMSO i think it's fine to change it, but you have to ask one of the others if it won't break anything. I don't think so
Peanutbutter_Warrior: what does following someone in clash of code do
MSmits: it's like following them on twitter, only without the racism
Illedan: Fine to change yes
EricSMSO: Once you have won or lost, why worry about how much ?
Illedan: I'm often looking through some replays, skipping to the end. If I lose by a lot => look at it
Illedan: else move on
MSmits: i like it because you can MSG the end score and see if it is the same as the final score
MSmits: if you want to test your solver and such
EricSMSO: Ok I will try to do something. I have not be concerned so far because I have not developped a true bot. But don't shout on me if it disturbs the actual leaderoard.
Illedan: Thx :D
EricSMSO: Ouch so many typewritting errors!
MSmits: it's ok, I studied it for a minute and understood :P
MSmits: sigh... these bugs. I tried to subtract an integer from a uint8_t
Illedan: https://www.codingame.com/replay/483332254
Illedan: :rocket:
MSmits: gj :)
Illedan: Linq FTW xD
MSmits: I am still trying to solve wood-2, almost there, but have some hard to find bug :P
Illedan: Even won him on submit :D
MSmits: nice :)
dbdr: > MSmits: sigh... these bugs. I tried to subtract an integer from a uint8_t why do you waste time on things like this?
dbdr: the compiler can tell you this
Illedan: https://www.codingame.com/replay/483333261 Wow, this was close :o
Illedan: Bieffect of my stupid ifs xD
MSmits: dbdr how do you make the cg compiler tell you this?
dbdr: cg compiler?
MSmits: the one in the IDE
dbdr: if you use c++ you probably need to set options
MSmits: I dont compile locally
MSmits: generally
dbdr: wat?
MSmits: I mean, I just code it, then copy paste into IDE
dbdr: mind=bown :D
MSmits: brown?
dbdr: blown :)
MSmits: well :poop: for brains is an expression :P
MSmits: nice typo :)
dbdr: nice Illedan
Illedan: More ifs ftw.
MSmits: btw, my bot is working and i can promote any time i think. But my solver is bugged somehow, reporting wrong scores
MSmits: probably has to do with unscored states, bit complicated to work with
dbdr: :no_mouth:
MSmits: yay it works!
MSmits: https://www.codingame.com/share-replay/483334715
MSmits: my bot as 2nd player predicts it will lose at the start
MSmits: then boss starts to make mistakes
EricSMSO: Have you noticed the final display?
MSmits: yes, good job EricSMSO
Illedan: :tada:
MSmits: btw, game as player 2 is solved in 3 ms
Illedan: Thx
MSmits: player 1 8 ms, player 2 3 ms
MSmits: guess that 1 move makes a big difference
Illedan: Yeah, I suspected the game is too easy :P
MSmits: I was worried my bot would give up as player 2
MSmits: I mean, if it know it has lost before it started... why try?
Illedan: For Wood 2, try anyway :D
MSmits: hehe yeah, lemme submit and end this
dbdr: MSmits, anthropomorphizing your bot :D
MSmits: lol
MSmits: https://www.codingame.com/share-replay/483335222
MSmits: unfair
Memo12334: maths is so important in AI ;p , I should had taken it serious back in high school ...
Illedan: dbdr, fixed games vs me? :(
dbdr: yes
EricSMSO: My wood 2 boss plays almost random. So it just a not so hard challenge for newcomers
Illedan: Dammit
MSmits: Memo12334 there's many different kinds of math and levels of math, depending on what you're coding you might need some
MSmits: most math here doesn't require heavy calculus though
MSmits: most multis not even that
dbdr: Illedan did you tune against me?
MSmits: many are gridbased
Illedan: Tune?
Illedan: I have only IFs.
MSmits: so it's often manhattan distance
dbdr: tune your ifs
Illedan: Yeah
Illedan: Fixing 1 of them now
dbdr: :D
MSmits: this is nuts
MSmits: my submit is failing even though my bot makes no mistake
dbdr: :D
MSmits: it gives away boxes because it solves as p2
dbdr: too clever
MSmits: because it sees in the future that if it doest give away the box, the opponent will take it anyway
dbdr: MCTS for wood 2 backfires
MSmits: i was mostly unlucky with too many p2 starts vs boss
MSmits: it's catching up now
dbdr: greedy depth1 promotes, IIRC
MSmits: not gonna make it i think though
MSmits: I'll spam submit :P
dbdr: MSmits got beat by random boss
dbdr: :popcorn:
MSmits: is it random?
MSmits: lol yeah it failed
dbdr: I guess so, but not 100%
Illedan: haha
MSmits: I predicted it though
Illedan: Fixed 2 bugs
Illedan: Lets see
dbdr: it's definitely bad. everyone promoted except you ;)
MSmits: lol it's awesome, it solved the game :P
MSmits: it's like that YT you shared
MSmits: with 2 robots playing chess
dbdr: :)
dbdr: if you win as P1, you just need a lucky submit I think
MSmits: yeah
Illedan: Cap it to some low depth?
MSmits: mmh I might still have a bug also
MSmits: https://www.codingame.com/share-replay/483336516
Illedan: Bad link
MSmits: solves as 1-3, then 3-1, then 2-2, should be impossible
Illedan: Oh
Illedan: those works now
dbdr: why not?
dbdr: solved is assuming perfect opponent
dbdr: which this one is not
MSmits: i know, but if i solve as 3-1, it should never be able to catch up to me
MSmits: so the predicted score can never go down for me
dbdr: ah yes
dbdr: the boss is better than perfect then ;)
MSmits: right :)
dbdr: Illedan :rage:
Illedan: Nananana
Illedan: lol
Illedan: precious points for Illedan
dbdr: you are P1 every single time
Illedan: Helps to pay the creator :dance:
Illedan: Daym, helps to be P1 in this yeah
dbdr: indeed :)
Illedan: Guess it is solved for P1 very easy
dbdr: very easy?
Illedan: Yeah
dbdr: it took 8 years for 5x5
Illedan: You never need to consider every move
dbdr: feel free to solve it and publish a paper
dbdr: people thought about that too
Illedan: $.$
EricSMSO: Two liner boss, not as good as IForgot, but not so bad ;-)
Illedan: Ok, I guess :P
dbdr: at the end you don't need every move, but at the beginning, you need a lot
Illedan: Hmm
dbdr: a few symmetries and corner cases
dbdr: still huge branching
MSmits: Illedan the reason you need almost all moves is that they decide what the final chain-maze looks like
MSmits: when you got the maze, or nearly so, you can easily solve
Illedan: I guess the start of the game is more about the number of boxes with Edges of count 1, 2, 3 and 4. Then about how big the different chucks are.
Illedan: And the number of chucks
MSmits: It's about how many chains there are and their length and whether they are half open, cyclic or closed
MSmits: there's different rules for different kinds of chains
MSmits: sometimes multiple chains meet on 1 cell
MSmits: it's more complicated than you'd think
Illedan: Hmm, k. I'll accept that
MSmits: btw, you can prune 4 moves
MSmits: off the corners
MSmits: "corner cases" like dbdr said
dbdr: :innocent:
MSmits: the two lines connected to the corner dots are completely equivalent
MSmits: doesnt matter which you take first
Illedan: haha
MSmits: finally bugfree I think
dbdr: famous last words :)
MSmits: it's gonna crash hard in wood 1 i guess
MSmits: no losses in 40 games and a bunch of draws all as P2. Won every P1 game
MSmits: 1 loss now as P@
MSmits: P2
MSmits: https://www.codingame.com/share-replay/483342033 but i dont think boss made a mistake
MSmits: I gave away a box there, but i think again a consequence of solving =/
Illedan: Come to Wood 1 and try the real stuff :P
MSmits: i wonder how many UTTT games i lose because I solve 15 plies before the end
dbdr: I only matters against weak players
MSmits: after submit finishes Illedan :)
dbdr: *it
MSmits: another nice typo :P
dbdr: :)
dbdr: :P
MSmits: omg
MSmits: still not promoted
dbdr: :joy:
MSmits: 20.79 out of 21.21
Illedan: wtf
Illedan: -.-
Illedan: Want my 3 ifs?
MSmits: i swear bot did not make a single mistake
dbdr: I think the game is trying to tell you something MSmits
MSmits: nah i am pulling him down
Illedan: -.-
MSmits: he's boosted :P
Illedan: Wonder who did that..
MSmits: hey, wasnt me, he was boosted before i started :P
MSmits: this hemhel guy is not helping
MSmits: I draw against him all the time as P2
MSmits: which is a good result, but his rating is crap and it pulls me down
MSmits: i pushed him a lot
MSmits: ahh above boss now
MSmits: so funny you can write a perfectly playing bot in wood-2 and not get promoted
dbdr: it's like watching Federer struggling to win a match in an amateur tennis cup
MSmits: :)
Illedan: Yeah, because the enemies are doing unexpected stuff
Illedan: Code for the enemy you are meeting, not dbdr :P
darkhorse64: You forgot about "the best exit from the woods strategy", the kiss one ?
MSmits: heh, well the only reason i did this in the first place is to have these horrible bugs I have been having in wood 2
MSmits: instead of wood 1
MSmits: kiss one?
dbdr: darkhorse64, pretty dangerous in these COVID times ;)
MSmits: oh
MSmits: darkhorse64 i wanted to make sure my mcts solver works with unscored states and such
darkhorse64: keep it stupidly simple
dbdr: better than keep it Schutzstaffel
MSmits: in the end promoted with +2
dbdr: what Shenanigan now, Illedan?
MSmits: it's kinda silly that it will do the whole submit with a broken bot when you promote
Illedan: I made some bug, trying to find it
Illedan: Fix 1 bug, make 2 new
Illedan: Was better the earlier one
dbdr: MSmits straight to #1?
Illedan: *stright to #-1
Illedan: Someone optimized for 2x2 board?
Illedan: xD
MSmits: lol
MSmits: It might be a week before I got a working wood 1 bot :)
dbdr: shouldn't the same bot work at least somewhat?
MSmits: many heuristics and such before you can even get a multi-move gamestate working
MSmits: no
MSmits: if there are multiple ways to capture boxes, you can get hundreds of children
MSmits: I need to write heuristics to force an order and such
dbdr: that's just optim, no?
MSmits: mmh not if it crashes because it got stuck inside an expansion
dbdr: timeout?
MSmits: maybe i could make it work somewhat, not sure
MSmits: yeah
MSmits: but currently it's also just selecting the lower 4 box corner of the map, so i need to adapt that too
MSmits: but thats a job for the coming days, work tomorrow
dbdr: yeah, will retire too
MSmits: gn :)
dbdr: gn
Illedan: gn
Illedan: I'll fix this bug, beat dbdr and sleep too
S_viper: hi
Zm4j: hello
Putnam3145: I DID IT
Putnam3145: RUBY STRONK
Putnam3145: i'm learning so much about this language
Putnam3145: all the wrong goddamn things
Gorbit99: welcome to ruby