Chat:World/2021-08-11
JohnyMcCoder: how do you approve a contribution? I can't find a way, only upvotes
Westicles: https://www.codingame.com/playgrounds/40701/help-center/approval-process
JohnyCode: thanks, but it still doesn't say how exactly do I approve
JohnyCode: do I need a command or smth?
Westicles: Do you qualify?
JohnyCode: I have 50 games so I should
Westicles: Leaderboard says 49.
JohnyCode: interesting
JohnyCode: I got the achievement :joy:
JohnyCode: But thanks, I'll play 1 more
eulerscheZahl: private clashes don't count for moderation
eulerscheZahl: Lux AI planned to start at 16th of August https://www.kaggle.com/c/lux-ai-2021/
martinpapa69: link is not working for me
eulerscheZahl: oh :/ i copied it from their discord announcement
eulerscheZahl: blame the user Stone
JohnyCode: hey, so I definitely have 50+ games now, but I still cannot find the approve button. Where should I look for it?
Westicles: Can you link what you want to approve?
JohnyCode: https://www.codingame.com/contribute/view/6491dfa3ea273fa6c2f108fa7ba459fe464e
Westicles: That isn't a clash
JohnyCode: oh
JohnyCode: i just noticed that
JohnyCode: :grimacing::sweat_smile:
JohnyCode: thank you!
ProCoder03: is there any good example for MonteCarlo in C#
ProCoder03: ??
martinpapa69: its c++ but easy to port i think
martinpapa69: http://chat.codingame.com/pastebin/076f6a1e-067b-4577-8b51-2e5e866f02f4
ProCoder03: thanks!
derjack: flat monte carlo?
ProCoder03: ?
martinpapa69: thicc
derjack: :smirk:
007AhanafAziz: hello
Wontonimo: hello 007, i have a mission for you
69razer69: how lonf can be the string input
69razer69: long*
Wontonimo: in what context? are you making a contribution with a large string output?
WannaBeHum1n: wow
WannaBeHum1n: it saves the code you wrote for every question even if it is old
WannaBeHum1n: thnx developers
69razer69: a lot of memory is speard for my dum solutions
WannaBeHum1n: guys
WannaBeHum1n: i am simple javascript guy
WannaBeHum1n: do i have to build a simulation and work out how to make a genetic algo
WannaBeHum1n: to get out of gold
WannaBeHum1n: in coders strike back xD
WannaBeHum1n: ?
derjack: yes
WannaBeHum1n: oof
69razer69: i recommend codingtrain video made using p5js
69razer69: on gen alg
Wontonimo: no WannaBeHum1n
Wontonimo: you can get to gold without GA WannaBeHum1n
WannaBeHum1n: huh
WannaBeHum1n: how
WannaBeHum1n: any tips xD
derjack: no need for GA. use NN [solved]
Wontonimo: has anyone told you about PID controllers? or the simplified -3v algo?
WannaBeHum1n: GOOGLING INTESIFIES
Wontonimo: you won't find the -3v on google (probably). It simply means
Wontonimo: instead of targeting the checkpoint, target checkpoint - 3 * velocity
WannaBeHum1n: I ASSUME NN MEANS NEURAL NETWORK ?
WannaBeHum1n: sorry caps
69razer69: yup
WannaBeHum1n: ik that one
WannaBeHum1n: -3v
WannaBeHum1n: but
WannaBeHum1n: hard stuck at gold
WannaBeHum1n: 1000 rank
Wontonimo: let me look at some of your replays
WannaBeHum1n: i have one that targets next checkpoint
Wontonimo: just a sec
WannaBeHum1n: and one that blocks
WannaBeHum1n: how do i share
Wontonimo: don't share code here plz
WannaBeHum1n: i know
WannaBeHum1n: he asks for replays
WannaBeHum1n: how do i show replay
WannaBeHum1n: for u
martinpapa69: you can share replays with the "replay and share" button
Wontonimo: for replays, you can click on the share button, it opens a new window. copy that url.
WannaBeHum1n: do i look for a losing one
Wontonimo: i've looked at a couple replays
WannaBeHum1n: ?
WannaBeHum1n: u can see already ?
WannaBeHum1n: oh
Wontonimo: it looks like you are probably only subtracting -velocity or -2 velocity
Wontonimo: are you sure you are using -3 velocity?
WannaBeHum1n: i was changing the values earlier testing
WannaBeHum1n: i set it to 3 now
WannaBeHum1n: testing in areana
Wontonimo: okay, i see that now
Wontonimo: nice
WannaBeHum1n: 25%
69razer69: so the stub generator how far i can go in string(51656)
Wontonimo: okay, it doesn't look like you've implemented drifting
Wontonimo: a super simple first implementation of drifting goes like this:
Wontonimo: using your current velocity, calculate if your pod would be within 400 of the checkpoint in the next 4 rounds. if it is, don't target that checkpoint and instead target the next one
Wontonimo: this will result in early turning and your pod drifting through the checkpoints instead of turning after
WannaBeHum1n: wait
WannaBeHum1n: i can see
Wontonimo: waiting
WannaBeHum1n: all the checkpoints
Wontonimo: yes
WannaBeHum1n: omg
WannaBeHum1n: oh god
WannaBeHum1n: my life is a lie
WannaBeHum1n: thank you som muck
WannaBeHum1n: much*
Wontonimo: np
Wontonimo: that should boost you several rankings.
WannaBeHum1n: but how do i calculate the 4 seconfs
WannaBeHum1n: distance / velocity ?
WannaBeHum1n: right ?
Wontonimo: for( the count of 4)
add velocity to position check if within 400
WannaBeHum1n: ah ok
WannaBeHum1n: ty
Wontonimo: 4 rounds (not seconds). sorry bout that
Wontonimo: after implementing that and seeing that it boosts your ranking a good chunck, implement blocking like so:
Wontonimo: one pod is your running, the logic it is currently using. The other becomes a blocker. The blocker keeps track of the lead opponents next checkpoint.
Wontonimo: the blocker starts by targeting checkpoint 2, and then camping there to block the lead opponent.
Wontonimo: once the opponent clears that checkpoint, the blocker races 2 checkpoints ahead and repeats
Uljahn: it was easier for me to beat the gold with two runners though
Wontonimo: oh? do share!
Uljahn: immediately use boost if a map is not tiny (3 checkpoints) but only by one pod
Wontonimo: are there multiple boosts available in gold?
Uljahn: no
Uljahn: if you boost by both pods they'll collide at the first checkpoint and could miss it
Wontonimo: you can also use shields to break hard. if while approaching a checkpoint your pod is facing more than 140 degrees away from the next checkpoint, it is a way to not overshoot
Wontonimo: not the only way
WannaBeHum1n: what if me and enemy have same target next
WannaBeHum1n: wouldnt blocking hurt me too
WannaBeHum1n: ?
Uljahn: that's the point of two runners, they barely interact with each other, also it's hard to block both
WannaBeHum1n: but how do u control the boost
Wontonimo: good point. if the blocker moves slightly towards enemy, then no.
WannaBeHum1n: mine shhot each other
WannaBeHum1n: literally
WannaBeHum1n: shoot at satrt
WannaBeHum1n: start*
Wontonimo: make pod 1 use boost at beginnig. pod 2 use boost after 1st checkpoint
Uljahn: ^
WannaBeHum1n: ty
WannaBeHum1n: currently at 476th
Wontonimo: for the drifting thing, there are definitely better algos, and the closer you get to fully simulating all the mechanics the better, but the simplified version is a good start
Uljahn: yeah, it's enough for around 300 in legend, no collisions, no GA, just plain move prediction for your pods
derjack: div!
Wontonimo: abs
WannaBeHum1n: sqrt
eulerscheZahl: pow
Stilgart: log
WannaBeHum1n: exp
WannaBeHum1n: anyonne know how i would count the number of checkmarks my car passed
eulerscheZahl: with an integer?
martinpapa69: have you tried using mathematics ?
WannaBeHum1n: i want to use the boost for second car after a certain number of checkmarks
AllYourTrees: what about big data
WannaBeHum1n: k
Stilgart: eulerscheZahl: any other idea for chadok.info ?
eulerscheZahl: ah, I see you implemented the author already
eulerscheZahl: and deleted puzzles in red, nice
Wontonimo: hey WannaBeHum1n, every time your car has a different checkpoint than the last, increment a global counter
Wontonimo: you'll need to also store the checkpoint from last round so you can compare the current and last
WannaBeHum1n: thank you <3
michaellan: good morning
michaellan: in theory, a MCTS can be abstracted over any type of game, given (1) a way to compute "next states" from current state and (2) a function that checks if a position is won/drawn/lost right?
Wontonimo: yeah
Wontonimo: that's the beauty of it
michaellan: so in theory... refactoring an MCTS to support another game should be easy -_-
michaellan: im having a tough time rewriting my TTT into UTTT
Wontonimo: ah, yeah
Wontonimo: perhaps first try rewriting your TTT to have the MCTS part in a different class than your TTT part
Wontonimo: and your MCTS just have a pointer to the TTT class, and all TTT related code and calculations hidden within TTT
Wontonimo: I actually have them as different files locally, and use a python script to concat them together for submitting to CG
michaellan: wow thats genius
michaellan: the one thing im wracking my brain over is
michaellan: i'm wondering if it's worth abstracting the game logic out of both the rollout/playout and node-expansion functions
michaellan: since they're super similar in that they both calculate next possible moves
michaellan: for TTT it was trivial so i didn't bother
michaellan: oh also, for UTTT: do you have a bool array of length 9 describing which sub-squares are already won/lost/drawn?
michaellan: i have that right now but i'm wondering if its worth doing since its trading memory for speed
Wontonimo: i found rollout and expansion to be very different. don't see how combining them would give any benefit
Wontonimo: i have 3 bitboards for player1 won, player2 won, tie
Wontonimo: available positions is 0b11111111 ^ (p1 | p2 | tie )
michaellan: wow im dumb
Wontonimo: so, i have a class for MiniBoard, which is the 3x3, and a class for the above which is identical to MiniBoard other than it keep track of ties and the win calculation returns correctly
michaellan: wdym by win calculation returns correctly
Wontonimo: then the UltimateBoard class which has 9 miniboards and 1 of the modified like above
Wontonimo: the modified version with ties doesn't just return win/loss if there is a line. If there is no line and no spaces left, it returns a win for the player with the most squares
Wontonimo: you can get rid of the "0b11111111^" if your p1 p2 and tie bitboards are inversed (0 for used , 1 for free)
Wontonimo: and you used & instead of |
Wontonimo: i don't do that, but i've been thinking about making the change for optimization. it does have some drawbacks elsewhere, so i've not been motivated
oxydowe: Hi, is there any reason python walrus operator cannot be used in code golf unless it is parenthesized?
michaellan: yeah, Wontonimo, like for ties
michaellan: i think
michaellan: oxydowe, are you speaking more generally than just in code golf?
michaellan: probably order of operations-related?
oxydowe: xxd if I remember correctly, in clash of code I can write a:=2 but in code golf I need to (a:=2)
Astrobytes: Have you tried the egg man operator?
oxydowe: my bad, also in CoC a:=2 is invalid syntax and needs parenthesis
Wontonimo: koo koo kachoo
Wontonimo: https://img.devrant.com/devrant/rant/r_1488399_4E12W.jpg
Andriamanitra: @oxydowe it depends on context, you can't write a:=2 on top level, it should be fine inside most expressions though
Astrobytes: Wontonimo: At least someone got it :)
oxydowe: ok, I just discovered you can write l=[a:=0] but you cannot write l[a:=0] and you need l[(a:=0)]... wow
7-4: rap me in plactic and make me shine
7-4: i know u can fus me and u
Astrobytes: 7-4: Are you unwell in some way?
Atanasius: wkwkwkwk
Andriamanitra: @oxydowe that's probably because when you're using [] as indexing operator : has a special meaning (slice)
Swyfti: username change lmao
Swyfti: my current username resembles my real name
HeroicRobot_cf06: if(1+1 == 3)
Wontonimo: swifty ?
Swyfti: yes
Swyfti: that is somewhat my real name
Swyfti: not exactly
Swyfti: somewhat
Swyfti: by the way im a master now so... Horray!
Wontonimo: congrats !
Wontonimo: From this day forward you will be known as Master Swyfti (on CG, if we remember)
Swyfti: thank you
Swyfti: i am starting ghostbusters any tips people?
BlaiseEbuth: Catch the ghosts
Swyfti: no like the algorithm
Astrobytes: Ghost Catching Algorithm #42
Astrobytes: :P
Swyfti: POG
BlaiseEbuth: You can take a look to the Spengler-Venkman algorithm.
Swyfti: I KNOW IT NOW
Swyfti: print('42')
TobiasA: if(thereIsGhost):catchGhost()
Swyfti: well you also have to cosider abilities
eulerscheZahl: don't catch the ghost. catch the tryangles
Swyfti: i catch the tryhards
Swyfti: the tryhard ghosts
Swyfti: now f this imma start a 2 hour coding montage
eulerscheZahl: finally my MCTS solver seems to be working
Wontonimo: in all seriousness, i have a basic bot on that. It keeps a fog of war map
Wontonimo: the busters try and find an unexplored area and go there
TobiasA: i like watching MCTS solver seem to work
Wontonimo: it shouldn't "seem to work"
TobiasA: my minimax seems to work only with two players in tron
BlaiseEbuth: I maintain the Spengler-Venkman algorithm is a good choice for CB.
Swyfti: my ai is insane
Swyfti: its too insane
Swyfti: its like playing atomic chess on lichess.org
eulerscheZahl: Wontonimo i like how our evaluations are almost in perfect sync https://www.codingame.com/share-replay/575179114
eulerscheZahl: adding up to 100%
eulerscheZahl: the solver is still wrong
eulerscheZahl: (╯°□°)╯︵ ┻━┻
eulerscheZahl: nevermind, was watching an old replay :D
TobiasA: that looks perfect in my eye
eulerscheZahl: you are the questionmark face, aren't you? you changed your avatar
TobiasA: yea
TobiasA: do you recognize my pattern of speech:laughing:
TobiasA: oh my name:no_mouth:
Wontonimo: eulerscheZahl , I'm not happy that my C4 code jumps from 54% to solved in 1 turn, as you can see from that replay. Something fishy is going on in my code i think
TobiasA: isn't solved good?
Wontonimo: yeah, it's good, but i'd like to see the previous move be around 80% or 90%... just kinda fishy that it jumps
Wontonimo: i don't check for instant next move win conditions in rollout, which may help
Wontonimo: i also don't handle ties in any sensible way in the solver
jacek: 54% to win isn't weird if opponent made a mistake
jacek: beware of 54% to lose
jacek: or 0.8 to lose for some my bots in some games ;s
Wontonimo: https://www.codingame.com/replay/575179114 after move 33 it was a win for me.
Wontonimo: but my bot only reported a 54%. looks like i have me a unit test
ReiKiriyama: Im trying Amazons puzzle but I don't get it why d3a1h7 is invalid move when color is 'w' and field d3 is occupied by my white queen?
BlaiseEbuth: Dura lex sed lex...
ReiKiriyama: (a1 and h7 is empty)
Nox05: std::getline(std::cin, Str)
eulerscheZahl: MCTS: rank 23 MCTS with solver: rank 23
eulerscheZahl: sigh
eulerscheZahl: at least i have something where I can put my bandas sim into
jacek: ReiKiriyama do you have replay or screen?
ReiKiriyama: https://www.codingame.com/replay/575182215
martinpapa69: at least you didnt completly break your bot with solver
jacek: you cant move from d3 to a1
BlaiseEbuth: On this chat mods complain about their code, and trolls help users...
ReiKiriyama: haha ah I forgot that it can only move like a queen. Thanks for that hint
jacek: ReiKiriyama its indexed from 1
TobiasA: /me is waiting for BlaiseEbuth to complain about his code
BlaiseEbuth: I'm not a mod.
BlaiseEbuth: I'm a troll in disguise
TobiasA: help me with my code
BlaiseEbuth: I don't want to compromise my cover.
TobiasA: understood
jacek: are you trolltech ceo
Swyfti: trolltech?
Swyfti: can i join that company
Litcatdad: is trolltech looking for unpaid and lazy interns?
martinpapa69: stop trolling, this chat is for serious topics
AllYourTrees: i love trolling
BlaiseEbuth: And normal users take themselves for mods...
martinpapa69: my dad is a mod, dont make me call him
BlaiseEbuth: martinpapa69... I'm your dad.
martinpapa69: hi dad, new account ?
BlaiseEbuth: Yup. Need to change a little
AllYourTrees: how deep are people exploring in C4 with mcts?
Scarfield: you mean EPT depth? so far im just doing standard mcts - untill game over
AllYourTrees: like how many levels are there in your tree at the end of one of your turns
AllYourTrees: the max depth that node selection goes
Scarfield: max depth, potentially until draw - full board
Wontonimo: i'm adding that to my bot, just a sec AllYourTrees
Wontonimo: https://www.codingame.com/share-replay/575190480
Wontonimo: it's the number after the k
AllYourTrees: interesting okay thats about the same for me, i was surprised at how deep it gets
AllYourTrees: though i guess once a couple columns are full there aren't very many actions?
Wontonimo: 19 on first move, 13, and 27 near the end
AllYourTrees: i wasn't sure if i had a bug that was pruning too much lol. ty Wontonimo!
Scarfield: oh you at rank 11, nice :muscle:
AllYourTrees: :D i definitely recognize your icon scar lol
Scarfield: club top 300 ;)
AllYourTrees: :joy:
Scarfield: euler and wonto dropped my rank a bit though :'(
AllYourTrees: yeah there seems to be a lot of activity on C4 lately
Wontonimo: it's a pretty straight forward port of UTTT, i think that's part of the draw
Wontonimo: if you skip all the fancy c4 specific tricks
Scarfield: currently im just cleaning up the mess of a bot i made a few months ago. the other day i realised i used the wrong mask when checking for one of the diagonals, gained about 30 ranks fixing that xD
jacek: general mcts tricks apply there
Wontonimo: i'm not saying it's "easy" or quick, don't get me wrong. i'm just saying that it's less work than starting from scratch if you already have uttt
Scarfield: i still start from scratch, my scripts improve slightly every time
jacek: time for ultimate c4
AllYourTrees: :scream:
Scarfield: oO
Wontonimo: 9 c4 tables, you play on the one where your opponent played the col of last
darkhorse64: 567 moves max, it's not that too much for CG constraints
Wontonimo: I really doubt it would be more than 256 moves for 99% of games
martinpapa69: sound like a perfect game for minimax
darkhorse64: If you switch to 6x7 with 7 boards, game duration looks more reasonable
Wontonimo: anyone able to help me understand what nonsense happened here ? https://www.codingame.com/replay/575191649
martinpapa69: your bot decided that its a guaranteed lose ?
Wontonimo: what's weird is that my bot seemed to think things were going really well, and tric knew he won way ahead that my bot had a clue
Q12: are you using MCTS?
Wontonimo: sigh, guess i'm gonna have to read the c4 how-to afterall
Wontonimo: MCTS + Solver + mem pool
Scarfield: you do have steal implemented right? only obvious bug i can spot
darkhorse64: + bitboard
Wontonimo: yeah, i got bitboard.
darkhorse64: avx ?
martinpapa69: mathematics?
Astrobytes: prune array?
Wontonimo: oh man, i forgot about math
Wontonimo: what's the steal but you see Scarfield?
Scarfield: Prunebytes
Astrobytes: Scarfarray
Scarfield: xD
Scarfield: just the only thing i thought could be an obvious mistake, that your bot has a bug when first move is "stolen"
Wontonimo: on move 17 it would have tried to "complete" col 1 if that was the case. Thanks though, I hadn't really double check that section until now
jacek: maybe i should come back to c4? would you like that
Q12: your bot should have block the opponent in the end of the game, I think
Wontonimo: I see how the prune array would help Astrobytes
Scarfield: any news on your back astro btw?
Wontonimo: lol Q12. wouldn't have mattered. he would have won 2 moves after that
Scarfield: ^
Q12: ohh, I see it know :sweat_smile:
AllYourTrees: does everyone using solver just prune solved nodes completely?
jacek: still you could choose the longest lose
Astrobytes: Scarfield: nope. Still waiting on that scan. We have millions of people on waiting lists here now.
Scarfield: if the tric says he has won, its probably true
jacek: a tiny chance opponent wouldnt see his win
Wontonimo: yeah, you are right jacek. that is an issue of my current mcts
Scarfield: damn astro, sad to hear that. had hoped you would have been scanned by now
Astrobytes: Yeah. It's really a living hell tbh. I have good pain tolerance but ffs.
Gabbek: Hello everyone :)
jacek: ohai
Astrobytes: Hello Gabbek!
AllYourTrees: wait astro what happened??
Astrobytes: Long story AllYourTrees
Gabbek: Hi, hi! I'm trying to catch up - something's wrong Astrobytes?
Astrobytes: For over a year now yes lol
Wontonimo: AllYourTrees, I don't prune solved.
Gabbek: Yikes... I should chat more often :(
Astrobytes: Nah. I'm ok just got bad bones.
jacek: drink more milk
Astrobytes: I don't have a calcium deficiency.
Scarfield: problem solved
BlaiseEbuth: Garlic cloves got him... :(
Astrobytes: That was the hand
Astrobytes: *hand/wrist
Astrobytes: That still hurts a lot some days btw
jacek: back or wrist
Scarfield: you need a skeleton transplant
Astrobytes: hand
Astrobytes: Pretty much Scarfield
jacek: buy one of those boobs mousepad, they work wonders
Q12: did you consider in your solver states in which your opponent can't put in a column because you will won if he will? like turn 15 Wontonimo
Astrobytes: ?
jacek: for your wrist
Astrobytes: Wrong wrist
Scarfield: preferably with mlp design
jacek: hmm they exist https://ae01.alicdn.com/kf/HTB1Y5jlXI_vK1RkSmRyq6xwupXaB/my-little-pony-mouse-pad-900x300mm-pad-to-mouse-long-notbook-computer-mousepad-cute-gaming-padmouse.jpg_q50.jpg
Scarfield: i am an organ donpr, maybe i can specify my bones are belong to yo astro
Wontonimo: yeah Q12, i think that's what prune array is that astro was referring to
Astrobytes: I'm an organ donor too, swapsies
BlaiseEbuth: All your bones are belong to us
Scarfield: im not surprised jace, not checking the link though xD
Scarfield: nema
Astrobytes: Wontonimo: Nah. Prune array is part of cegimax. Just a CG meme :P
jacek: ceg meme
Wontonimo: ah ... colour me uncultured
Astrobytes: that too
Astrobytes: It was a while ago Wontonimo
Gabbek: I was jealous of legend optimization badge you guys have... so I've decided to push it from silver :p reached 2% on optimization for gold and then saw the next task -- 2% on cold golf... and all of my will power is gone :P
Gabbek: what's the final task for legend optimization badge, I wonder?
jacek: 2% on code golf, then nothing
jacek: final flag will give you 500 xp
Gabbek: oh, so 2% on code golf is final? That's nice to know, thanks
eulerscheZahl: Gabbek there you go https://clemg.github.io/pythongolfer/
Gabbek: Good day, eulerscheZahl!
Gabbek: How's going, what are you up to lately? :)
eulerscheZahl: reclaiming #1 on the global leaderboard
Scarfield: wait, when did db dr take 2nd?
eulerscheZahl: he was first for a while
BlaiseEbuth: dbdr?
Gabbek: nice, congrats - I was trying out code rings lately, really fun... but those top scores are pretty amazing - I've run out of ideas, maybe I'll try again in few weeks
Gabbek: The frog will rule us all :)
Scarfield: an tric on 4th, seems like the global leaderboard has changed a lot the past few monts
Gabbek: wasn't there some kind of bugged user which was #1 on the leaderboard? I remember talking about it with Zylo few weeks ago
eulerscheZahl: my code of the ring is a beam search done offline (validators are testcases with a=z, b=y, ...)
eulerscheZahl: testing all possible chars. then making sure that i don't print the wrong thing
Gabbek: interesting - I've noticed that might be the case with my basic solution when I've implemented incrementing pattern detection and firstly done only positive ones
eulerscheZahl: loops really help. the beam found some interesting ones
Gabbek: any double loops? I couldn't figure out any useful ones
eulerscheZahl: i don't have nested
Gabbek: but yeah, surely the search is the way to go - guess I'll try to do something like that, but I'm not really sure how to go about it, will be fun experience :)
eulerscheZahl: https://www.codingame.com/share-replay/575197739 that's something i wouldn't see if playing by hand
eulerscheZahl: hm, somehow it stops playing when i open it in a new tab
eulerscheZahl: btw that game has an easter "egg". or more like easter bunnies
eulerscheZahl: when you print a comma
Gabbek: hmm, same issue after turn 12 or so
AllYourTrees: hmmm
eulerscheZahl: i'll generate a new replay
eulerscheZahl: https://www.codingame.com/replay/575198194
eulerscheZahl: same bug
AllYourTrees: just realized i've been selecting actions based on avg value instead of num visits this whole time
AllYourTrees: not sure how much that matters lol
Gabbek: nice pattern, I like it! Indeed a good one; wouldn't notice it by hand myself for sure
eulerscheZahl: those numbers are closely correlated, doesn't matter
Gabbek: I'm guessing that the long sentence has the biggest savings - do you know how many characters you had on the final test?
eulerscheZahl: on "24 long spell"?
eulerscheZahl: 1184
eulerscheZahl: and no loops at all in this one
eulerscheZahl: i allowed loops but my search opted against
Gabbek: I would like to check mine as well but having issues with my internet at the moment, guess I'll be check to check in a minute or two
Gabbek: 1278, a lot of jumping back and forth - only one loop to initialize all runes to O
eulerscheZahl: maybe i should try that too and hardcode my start for the search to continue
Gabbek: you could try to set all initial runes to O and run the search - maybe it'll find a better solution; my loop to initialize all runes is 27 characters
eulerscheZahl: let me see if i can easily tell the search that i want to init my memory instead of printing
eulerscheZahl: no, that looks complicated to add
eulerscheZahl: and I last touched that code in january
Gabbek: could you tell me a little bit about your beam search in code rings? All characters are actions and you interpret current solutions and if they are invalid you discard them?
eulerscheZahl: pretty much. there are only <>+-[].
eulerscheZahl: i filter a bit during generation already. like no + right after -
eulerscheZahl: or no ] without [ no . if that would print something invalid
eulerscheZahl: removing different paths that create the same state (memory relative to bilbo position, possibly mirrored)
eulerscheZahl: the current loop body must be handled too when it comes to hashing
eulerscheZahl: and a really wide beam (half a million), takes maybe 10 minutes to finish on the last testcase
eulerscheZahl: https://github.com/dbdr/codingame-validators/blob/master/bilbo.txt
Gabbek: cool, will try a bit with beam search then, since so far I've only used some patterns recognition and some loops; I've tried to make use of [>] with something like 6 letters space 6 letters space etc. -- but it didn't seem to yield good results
eulerscheZahl: [+] to clear a cell
Gabbek: yep, it's very useful - haven't found a good use for [>] sadly
eulerscheZahl: [>.] maybe?
eulerscheZahl: https://www.codingame.com/share-replay/575202004 a little longer but still a short loop
Gabbek: for [>.] you would probably need some efficient way to initialize all runes to different values which you would want to use, say for alphabet -- but that one seems to be very short anyway
eulerscheZahl: and it stops playing again
Gabbek: yep, I have the same pattern, guess beam search is yielding much better results for all tests named "spell x" - as those require the most dancing around and that's why my solution fails the most I think
Gabbek: have you played legends of code & magic with 2 lines version?
Gabbek: https://www.codingame.com/ide/demo/68194451cf54dd36cc8c817f355e5a44a06062
michaellan: It's possible to draw a UTTT game right?
eulerscheZahl: no. i already hated the 1 lane version and swore never to touch it again (maybe just too little depth for a 1 month contest, making me biased)
eulerscheZahl: i know about that version. there was even a contest about it, antisquid won some money
eulerscheZahl: ties in UTTT are possible
Gabbek: I see, I can understand your point - even 2 lanes version isn't much deeper, drain seems more useful and there's a bit more tactic, but in general it's very similar
eulerscheZahl: you didn't play the 1 month contest which was exhausting
eulerscheZahl: i was smart enough to skip the first 2 weeks and join late. still not late enough to have a full week without ideas how to improve but mental inability to just stop
reCurse: Yeah really disappointing for a 1 month contest
reCurse: Looks just good enough to make you think there's depth and then you scratch and nope
eulerscheZahl: glad that OOC worked out better
Gabbek: there's so much content... I just can't decide what I wanna do next - but I must say that I always appreciate all the insight, hopefully one day I'll be able to share some back as well :)
AntiSquid: peckman was just 2 weeks after ooc
Gabbek: greatly enjoyed OOC and code of ice and fire - but only multi versions, wasn't around for contests
Gabbek: by the way eulerscheZahl - code with me plugin is being developed for rider, should be ready in about 6 months if I'm no mistaken
eulerscheZahl: is that similar to the VS code share?
Gabbek: works really nicely in pycharm so the c# version will be great as well I think
Gabbek: I would say it's much better
AntiSquid: the trend says there's one contest less each year: https://imgur.com/a/woM9Ilj
eulerscheZahl: *live share that's how it's called
Gabbek: had a lot of issues with code share in visual studio, works a bit better in visual code, that's for sure
eulerscheZahl: did that once with illedan
Gabbek: yeah - *live share, right
eulerscheZahl: i was scrolling down. but the screen content didn't change (or instantly revert)
eulerscheZahl: then i looked at illedan's screen (he was sharing on discord at the same time)
eulerscheZahl: and he was like "why is the same block of code duplicated 15 times?"
eulerscheZahl: then VS Code just crashed
eulerscheZahl: fun times
Gabbek: I tried to use VS code and visual studio versions, had a lot of issues with visual studio version - mostly with highlighting either bugging out or not working at all and having to rejoin the session every 15-20min or so, or just random disconnects, crashes etc.
elderlybeginner: in fantastic bits, throw is calculated after wizzard thrust being calculated, movement done - or before that?
Gabbek: while the pycharm "code with me" experience was insanely smooth, same with intellij
eulerscheZahl: i never tried pycharm
eulerscheZahl: i only that the IntelliJ community edition
Gabbek: elderlybeginner - wish I could help, but I haven't touched fantastic bits yet at all
eulerscheZahl: works fine overall. sometimes the typing is a tiny bit laggy
AntiSquid: need more memory
eulerscheZahl: i have touched fantastic bits years ago, no memory
jacek: AntiSquid why so low in amazons
AntiSquid: idk
AntiSquid: forgot what that even is
eulerscheZahl: https://github.com/SpiritusSancti5/codinGame/blob/master/Referees/Fantastic%20Bits/RefereePuzzle.java good luck
eulerscheZahl: just 2.7k lines to dig through
AntiSquid: do you pay for pycharm Gabbek ?
Gabbek: there's a quite nice deal on jetbrains - if you know jetbrains academy you get all products license for 1 month for free, which can be replenished every month
Gabbek: if you join* and solve 3 topics
jacek: is this like winrar license
eulerscheZahl: i prefer free and mostly open source software
eulerscheZahl: that's also why i use linux over windows. and because i can use it more efficiently
AntiSquid: winrar doesn't autoupdate does it ?
Gabbek: I do pay for pycharm, but it's mostly because I really like how they handle support and design their stuff - also a big fan of jetbrains academy, not gonna lie :)
elderlybeginner: Thanks eulerscheZahl There are not many bots I'm higher they you, so mayby you should give it a second try ;)
eulerscheZahl: i can assure you that i could counter you if i would try hard enough ;)
AntiSquid: jetbrains seems to do heavy advertising, there were lots of free entry raffles for 1 year free license (in my area) Gabbek
jacek: https://www.wykop.pl/cdn/c3201142/comment_1594312643ZJjYcJUFWIf8Tw1sLQExQy.jpg
eulerscheZahl: that's winzip jacek
eulerscheZahl: totally off topic
AntiSquid: the weird windows stuff all looks the same anyway
eulerscheZahl: jetbrains also organizes Kotlin Heroes every few months on codeforces
Gabbek: I like when you're a long lasting customer and you pay less - that and how jetbrains academy is evolving, always something new to learn, it's quite chill place to do some refreshments or learn a bit of java for fun (I pretty much don't know anything, but nerchio uses a lot of java -- and we sometimes write something together, so it's fun!)
jacek: i like ketchup
elderlybeginner: I guess you could have done it with minimal effort
eulerscheZahl: i like spaghetti napoli
AntiSquid: do you use the paid version of intellj over the community one? and what for Gabbek ?
reCurse: Jetbrains makes good products but every time I try using them it feels so bloated :/
eulerscheZahl: ReSharper
jacek: sound javaish
reCurse: Well good news for them, visual studio is on 64 bits now so they can eat away all the memory without crashing now
michaellan: how did you guys print out debuggign boards for UTTT
michaellan: im thinking of using colors to represent wins on the big board
Wontonimo: cerr
michaellan: i meant ilke how did you print them out
eulerscheZahl: not for UTTT but usually i draw .png files
Gabbek: AntiSquid I'll be honest - I only use pycharm paid version but I don't really use paid features much, think rider with resharper and some other tools would be more useful - like dotpeak and dotmemory if someone would write a lot of azure functions for example
Wontonimo: i'll send you my code xxd
Wontonimo: just the print
michaellan: hmm im actually half done with writing my own
michaellan: thanks though
Gabbek: I'm curious - any thoughts on rider vs visual studio? Whenever I use visual studio I feel like my PC is about to explode... :(
reCurse: Visual Studio anytime
reCurse: Not that it's not bloated but less so I think
leftnut: reading these problem take some getting used to. Took me 30 minutes to figure out what to do for Batman
AntiSquid: i didn't even try amazons seriously: https://www.codingame.com/share-replay/575128405
good rank jacek . are you using your usual approach ?
jacek: eeyup
jacek: NN ftw
BlaiseEbuth: What happened 18 days ago? I'm currently looking to old puzzles I solved years ago, and there's many where my C++ solution was re-submitted 18 days ago... :thinking:
jacek: oO
Westicles: Thor golf recalc was 18 days ago
Astrobytes: The Day of Mjölnir
jacek: thursday?
BlaiseEbuth: Ah yes. So this is perfectly logic that some old solutions to medium puzzles were submited back.
Gabbek: Very wild guess - do you have auto-submit turned on? Maybe 18 days ago solutions which were not visible were re-submited, for some reason?
BlaiseEbuth: Auto-submit?
Gabbek: I think it's in settings, it basically auto-submits your solution to the problem so you don't have to do it manually
Gabbek: let me have a look - haven't touched it in a very long time
michaellan: How do i calculate winrate in MCTS?
AntiSquid: auto-publish
jacek: win / visits
michaellan: (for entertainment purposes)
michaellan: oh, seriously?
michaellan: then my winrate is about 10% only?
BlaiseEbuth: Publish you mean Gabbek?
Gabbek: ah yes, sorry - publish, that's correct
michaellan: I'm... scared right now. Just turned my TTT MCTS into UTTT MCTS, cleaned up compiler errors... and it _seems_ to work
jacek: what rank
michaellan: wait havent tested on CG yet
Wontonimo: well publish and let's look
Wontonimo: :D
michaellan: only 100ms to make a move...
Wontonimo: yuppers
michaellan: probably better than my current strategy of randomly choosing a move
michaellan: oh nooo i have to take in CG input, a most daunting task :cry:
Wontonimo: lol
jacek: oh my
Wontonimo: alright, i gotta go. laters
michaellan: my bot consistently draws against itself so i think thats a good sign
michaellan: have a good day
Gabbek: good night Wontonimo
xxd: can i ignore taking in the input
xxd: im not sure how that would work
jacek: the input is opponent's move
xxd: yeah but theres a bunch more lines
jacek: how can you sim without the actual game
xxd: aftter that
Gabbek: you have to take the input as it includes opponent's move
xxd: yeah i am wondering if i can just take first line
jacek: you can ignore the possible moves since you make them yourself
jacek: you still need the cin, input() or whatever, just dont use them
69razer69: talking about breakthrough
Astrobytes: what about breakthrough?
juice0: i think he was wondering if they were just talking about breakthrough, regarding ignoring inputs
Astrobytes: This is why the '?' exists.
Gabbek: '?' seems to be one of most useful characters, so much meaning in just one symbol :D
Astrobytes: hehehe not wrong
juice0: yes but you have to hold that other key down to do it. just playing devil's advocate here but that's a lot of work
Astrobytes: hah!
Westicles: I think he was talking about today's shocking news
xxd: huh
TobiasA: in a youtube video i just watched i found out that typing "import this" in python and running it prints a very lovely poem:grin:
darkhorse64: today's shocking news ?
Astrobytes: http://chat.codingame.com/pastebin/aef4d3b5-0954-4162-8faf-322cb0584284
TobiasA: that's the one. how deep
Hawke: Is there a way to replay games in Clash of Code?? I finished my code a split second before the timer ended so I didn't get to test, but I just want to know if it works
Astrobytes: Search for it here: https://eulerschezahl.herokuapp.com/codingame/puzzles/
BlaiseEbuth: "Beautiful is better than ugly."
**BlaiseEbuth drop python.
BlaiseEbuth: "Explicit is better than implicit."
**BlaiseEbuth take back python and drop it again
BlaiseEbuth: Fix your typing you fool
Westicles: https://www.medrxiv.org/content/10.1101/2021.08.06.21261707v1
Gabbek: Interesting link you've got there in your bio, BlaiseEbuth - guess I'll read some of those :)
BlaiseEbuth: :flushed:
Gabbek: CGStatementDL - I was thinking about creating something which would download all available testcases and maybe setup a project or something
Gabbek: because I ended up doing it manually so many times... :D
Astrobytes: "This article is a preprint and has not been certified by peer review [what does this mean?]. It reports new medical research that has yet to be evaluated and so should not be used to guide clinical practice"
Gabbek: I know it's about downloading statement, but just thinking out loud
Westicles: Mayo clinic is solid..
Astrobytes: "has not been certified by peer review"
Astrobytes: Everyone makes mistakes. I haven't even looked further than that statement.
BlaiseEbuth: I don't. But I don't test vaccines.
Astrobytes: What's the 'big news' part anyway Westicles?
Astrobytes: *shocking news sorry
Westicles: The results?
Gabbek: good night everyone, have a good one!
Astrobytes: gn Gabbek
Astrobytes: I was hoping you were going to summarize them Westicles since I'm doing about 40 other things right now :P
Westicles: Well, we don't want to rush to conclusions. There are a a million news articles out there with better interpretation than I could give
ja_fica: MSmits, you there=
ja_fica: ?
reCurse: "don't want to rush to conclusions" "a million news articles out there" :thinking:
reCurse: Sounds contradictory
Westicles: It is big news
ja_fica: Imagine this
reCurse: News articles are mostly about rushing to conclusions these days
ja_fica: In C++, we have 2 functions optimized with O3 and inline and they are declared just one after the other, nothing in between. Changing the order of declaration should impact the performance of any?
reCurse: No
ja_fica: https://aipuzzles.com/learn/performance - see random generator
ja_fica: it happens
ja_fica: experiment trade the 2 random functions
ja_fica: It has the same behavior in my computer as well
ja_fica: You can even try to have the same logic in both functions, the first function declared will have a higher performance... it makes no sense
ja_fica: My guess is that inlining is not properly conceived
reCurse: "With this 3 lines of code in the beggining of the script we can spare some time and make a more readable code along the rest of the script." I will resist commenting on this
reCurse: Can you post a proper example on godbolt?
ja_fica: forget about that, just copy paste the code of the random generator
ja_fica: the last module of that page
reCurse: Can you make a godbolt?
ja_fica: Never heard of it, let me try
reCurse: godbolt.org
reCurse: Use the right compiler and options, inspect assembly, you can even share it here I'm curious to take a look
ja_fica: But have you tried to swap the 2 functions?
ja_fica: Im in there now, I will let you know what i can find
reCurse: It's going to be much simpler if you do it than if I try to figure out what you did
ja_fica: https://paste.ofcode.org/i9AL6BbCFyAbezLnmf4LXS
ja_fica: godbolt.org confirms...
ja_fica: but I can't understand where it fails..
ja_fica: I don't understand enough of assembly
ja_fica: I created a clean script
ja_fica: reCurse, I would like your help understanding this
ja_fica: https://paste.ofcode.org/i9AL6BbCFyAbezLnmf4LXS
reCurse: So you swap fastRand1 and fastRand2 in code?
reCurse: Their order?
ja_fica: Yes
ja_fica: It makes no sense
ja_fica: Tell me when you believe me plz, im not such a noob in C++, but i can't figure this out
Pro-grammer: wont my first clash of code
reCurse: That's an interesting one indeed
ja_fica: told you :)
AllYourTrees: do you swap the order in the main function too?
ja_fica: it makes no diffenrece
reCurse: Hah that's a gcc quirk
ja_fica: it only affects chaning the declaration, I guess is a cache miss problem
reCurse: clang behaves like you'd expect, no difference
reCurse: So probably some gcc quirk, wouldn't be the first one
reCurse: It decides to inline the first one it encounters in declaration but not the other
reCurse: clang inlines everything
ja_fica: so its a gcc problem, i would say bug
reCurse: I'd say quirk
reCurse: It's not erroneous behavior, optimization is left to the compiler
ja_fica: damm, so I can't force it?
reCurse: Sure you can
ja_fica: I really would like both of them inlined
reCurse: __attribute__((always_inline))
reCurse: Just be careful not to abuse it
ja_fica: yes, if the code gets to big it will increase cache misses
reCurse: Or just use a proper compiler :P
ja_fica: it didn0t work :(
reCurse: ? worked for me
ja_fica: can you paste the code?
reCurse: https://godbolt.org/z/4M8aKMEhx
ja_fica: It must be a compiler issue as that code is not running in my computer with gcc
reCurse: Which version of gcc is that?
ja_fica: 7.5.0
ja_fica: i will just update it
reCurse: Uh, weird compile error, seems like a bug maybe
reCurse: Code is not using target specific stuff as far as I see
ja_fica: It worked
ja_fica: version 7.5 is no good
michaellan: 7.5 is not the most recent version
mkkhell: whats the issue?
ja_fica: https://paste.ofcode.org/i9AL6BbCFyAbezLnmf4LXS
ja_fica: changing the declaration order of the functions will change its behavior
mkkhell: you're probably more experienced than me
mkkhell: but i dont see what could be the problem
mkkhell: sorry!
k2xl: CoC broken?
reCurse: My chess engine is so insanely aggressive, I have no idea why it's so hellbent on sacking all the time
xxd: I am getting probably overly annoyed at trying to convert 9-squares 9-sub-squares to the row,col format for UTTT
reCurse: That should be an easy puzzle
xxd: :cry:
xxd: a naive, bitboarded MCTS for UTTT is around what league?
RaulButuc: I still recall it being a bit unpleasant to code, had tons of fun with challenges like LOCAM
xxd: ah, there are just so many things to keep track in LOCAM i sorta am putting that one on hold
xxd: what type of bots are for imperfect information games, what did you use?
RaulButuc: True, idk why but that one matches my style more than some of the other bot challenges around here :D
RaulButuc: for LOCAM I ended up using monte carlo
xxd: but how do you siimulate opponents moves?
xxd: oh nvm
xxd: is your simulation just all the things you can do on your turn, randomized?
xxd: and you have aan evaluation function for the output of your turn
RaulButuc: well in this sort of game you dont really "simulate it" per se
RaulButuc: sort of
RaulButuc: i went for brute force
RaulButuc: performed better than randomised
xxd: hrmm :thinking:
RaulButuc: you have to set a narrow time limt
RaulButuc: tweaking the formula for the evaluation is also a bit of a hit and miss :D
xxd: guys
xxd: i'm running through my UTTT games in bronze league
xxd: and I haven't lost a single match yet
xxd: i want to thank wontonimo so much
RaulButuc: nice progress, congrats :)
xxd: MCTS is fun when it finally works :)
xxd: thanks
RaulButuc: indeed :D
xxd: man i put so many hours into this haha
xxd: i wonder how necessary bitboarding was
xxd: i assume its pretty important
reCurse: If you don't reach legend probably not important
xxd: oh
RaulButuc: im stuck in higher gold on UTTT and I havent used it
xxd: after i write MCTS, its just a matter of optimizations to it right? i will also try to implement solver
reCurse: It's all about optimization until legend, and a complete waste of time after
xxd: :(
xxd: recurse what is your favorite bot programming game
reCurse: I'd say fantastic bits but platinum rift 2 is also criminally underrated
RaulButuc: hmm I meant to give fantastic bits a try last week but got distracted lol
RaulButuc: oh wow you're 1st place on that one as well :)
xxd: yeah recurse is my inspiration
reCurse: Not a good idea
xxd: oh...?
xxd: heh
Astrobytes: something something bitstream something something ;)
Astrobytes: Don't listen to him xxd, feel free to be inspired
Astrobytes: :P
reCurse: Rude
Astrobytes: *Take his comments with a pinch of salt ;)
RaulButuc: That's inspiration without consent, we're not in the early 2000's anymore guys
xxd: sorry.. -_- recurse may i please be inspired by you
RaulButuc: :)
xxd: honestly all the regulars here are so awesome
xxd: i wish i will one day become a regular too :)
xxd: except for blaise, hes a meanie
RaulButuc: lmao
xxd: just kidding
Astrobytes: No you're not.
Astrobytes: How's chess recurse?
reCurse: Progressing slowly
reCurse: My engine is insanely aggressive to the point of recklessness
reCurse: No idea why
Astrobytes: Because it knows it can afford to be?
reCurse: Makes for spectular wins and blunders though
xxd: are you using MCTS or minimax for it, may i ask
Astrobytes: *thinks
reCurse: It's more gambling than calculating
Astrobytes: gotcha
reCurse: 95% of my attempts at modifying/improving mcts were either failures or dramatic +0 elo
Astrobytes: the other 5%?
reCurse: Pretty good
reCurse: Should breach the 26xx soonish
Astrobytes: Very nice
reCurse: I'm very tempted to buy a new cpu to have more cores for faster testing
reCurse: But alder lake is due out later and possibly wreck everything
reCurse: :/
Astrobytes: Didn't you already do that?
reCurse: No I resisted
Astrobytes: Oh wait no, that was Smits
reCurse: If the leaked bench is real it's a real destroyer
Astrobytes: I think possibly waiting is a good idea
Astrobytes: Yeah, from what I've seen
reCurse: Well there's also the stock gamble
reCurse: sigh
Astrobytes: Right
Astrobytes: Gotta bite the bullet at some point though
reCurse: Oh it's definitely this one or rocket lake
reCurse: cpu is 4 years old now ugh
Astrobytes: No comment on my potato.
Astrobytes: On that note, getting late here. Shall catch you later man, take care
reCurse: bb
xxd: The gold achievement for AI is going to take a while...
xxd: The demo video for CSB looks like humans playing... thats crazy
Wontonimo: you don't need all that fancy stuff to get into legend
Wontonimo: for CSB
xxd: alas
xxd: i guess that just means im horrendous at it
juice0: you're in the horrendous league for CSB too?
michaellan: yup
Xiazaoan: Excuse me, does anyone know how to "prove that you are not a robot" in code conflict?(thanks!)
juice0: well that sure sounds like a question a robot would ask
xxd: ha
xxd: not sure what a code conflict is
xxd: does that mean you stole someone else's code?
theprogrammingguy: Wait it's all overstack copy-paste?
theprogrammingguy: Always has been...