Chat:World/2021-07-19
Wontonimo: google will also provide you with 100's of examples
prINTint: Thank you all:hugging:
prINTint: actually i havevno idea bout gui so, i was searching for help
nulte: They are asking you to do a gui project but didnt teach you gui?
prINTint: :pensive:
prINTint: :disappointed_relieved:
nulte: Which language?
prINTint: python
nulte: im sure there are some python gui libraries
padobranac: there are plenty
padobranac: http://chat.codingame.com/pastebin/b891a1e8-b75b-4f1f-b501-a87b95e19e46
padobranac: just to name a few
byteful: bye
Westicles: Yeh dosti hum nahi todenge
bluefacebaby: how can i print the output in C
bluefacebaby: my output: "1 2 3 4 " correct output:"1 2 3 4"
MaliciouslyCrypticUsername: in c++ you would use std::cout But idk about c
martinpapa69: it looks like, you print an extra space after the last number. so my guess is, you have a for loop, where you print a number, then a space like printf("%d ", i); right ?
bluefacebaby: if(i=0;i<n;i++){
bluefacebaby: can be like this?
martinpapa69: ye it looks fine. but i think in every game, codingame requires you to print an endline, after you finished printing your output. (thats how it knows, you finished)
DaNinja: for (int i=0; i<n; i++) if (i==n-1) printf("%d\n", i); else printf("%d ",i);
MSmits: getting closer: https://www.codingame.com/replay/570874601 My first actual win where I solve sooner. It's like 1 in 20 but still. All this took was another 100x speedup :P
derjack: :tada:
LINDI_SHAH: nice dude
Marchete: how many speedups do you have now?
Marchete: and always like 10x 100x
MSmits: millions
derjack: oO
MSmits: it's like comparing bubblesort to quicksort on thousands of items
MSmits: algo is everything here
MSmits: or mm with ab to mm without ab
MSmits: well it's literally like the sorting comparison because to get the speed up i use divide and conquer. Split off areas and solve separately
Ayza: Is there any way i can pick the difficulty of a clash?
MSmits: no
MSmits: but it's the same difficulty for every player
LINDI_SHAH: depends on level?
LINDI_SHAH: the dificulty
LINDI_SHAH: ff
MSmits: no
MSmits: the clashes are considered pretty easy
MSmits: if you cant solve them, practice on practice puzzles
MSmits: the idea is that most players will be able to solve every clash and the difference between players is due to speed or codesize
MSmits: reverse is a bit different
MSmits: but also a speed coding thing
LINDI_SHAH: yeah i see
LINDI_SHAH: alt + 1
MSmits: I don't clash btw
LINDI_SHAH: y
MSmits: It's not fun to me
derjack: oO
KiwiTae: Oo
LINDI_SHAH: oh I see
LINDI_SHAH: then what's fun 4u here
derjack: bots for multiplayer games
MSmits: yes bots, working on this currently: https://www.codingame.com/multiplayer/bot-programming/dots-and-boxes
dbdr: what are you doing on D&B MSmits?
MSmits: nimstring analysis mostly
MSmits: the math part of D&B
MSmits: the more efficient it becomes the closer i get to the rank 1
MSmits: it's basically predicting who ends up in control
MSmits: so who is forced to open long chains
MSmits: this person almost always loses, so it's good to know which moves lead to it not being you
dbdr: do you ignore the "almost always" part?
MSmits: no, but the rank1 player does
dbdr: wow, miklla is so much ahead!
MSmits: https://www.codingame.com/share-replay/570875746
dbdr: you are also convincingly above Remi
MSmits: check the replay, here you can see he ignores the almost always
MSmits: my bot solves for maximum score when it can
MSmits: mikla doesn't really care about this besides some basic heuristics
MSmits: you see him make mistakes in the endgame
dbdr: I think I don't want to open this replay, too distracting :)
MSmits: hehe ok
dbdr: D&B is a rabbit hole :)
MSmits: sure is
dbdr: is there any reason playing as p1 or p2 would be radically different?
MSmits: i dont think so, but of course in the end it is solved as either win for p1 or win for p2
MSmits: draws are impossible
dbdr: empirically it looks like some of my generations are very good as p1 and others as p2, against the leaderboard
MSmits: but the branching is so extreme, there's no way to predict
dbdr: could be coincidence, or not...
MSmits: well there is a rule about long chains
MSmits: either you need an even number or odd, to win
dbdr: oh sorry, I meant to include "... in oware" but seems I forgot :D
MSmits: lol!
MSmits: do you use the NN?
dbdr: yes
MSmits: my experience is that those NN's are extremely deterministic. Check it versus specific players
MSmits: you might be replaying the same game over and over
MSmits: that would cause some p1/p2 bias ofc
dbdr: yes, I think so too. that's why various gens have radically different winrates
dbdr: also against itself
MSmits: yep
MSmits: it's also why it's so tempting and too easy to counterbook everyone if i still wanted to
MSmits: it's just jacek thats hard to beat this way
MSmits: because he makes it a point to add randomness
dbdr: he's more random?
MSmits: yes he adds it into his bot
dbdr: noise?
dbdr: I think jacek has separate NNs for p1 and p2
MSmits: yeah i think on the move decision he adds some small random amount on the child value
dbdr: Marchete does it too
dbdr: cgzero
derjack: hm? i have the same NN
derjack: i just multiply random [0.9..1.1] * eval in UCT part
dbdr: oh, that's a big noise
MSmits: yes this explains why
derjack: as long as it works...
MSmits: typically, the first 40 plies or so have hundreds of variations for jacek vs a counterbooked bot
MSmits: wheras robo has like... 3
dbdr: :D
dbdr: I wonder if RoboStac's NN has better policies/values, or he just has more sims
MSmits: but since noone is doing the counterbooking now, it's safe to remove the randomness if it makes the bot better jacek
MSmits: dbdr he sure has better performance
MSmits: jacek made no secret of the fact that this is not his strong suit
MSmits: but not sure if thats the main difference
Ninjapig28: :money_mouth:
dbdr: let's play some RPS!
69razer69: what is rps
Marchete: dbdr
Marchete: maybe if you have space
Marchete: you can try to have 2 NNs
Marchete: one for P1
Marchete: another for P2
Marchete: jace_k does that
MSmits: he just said he doesnt
dbdr: I know
Marchete: lol I haven't read
Marchete: sorry
dbdr: 69razer69 Rock Paper Scissors
Marchete: for repeating
MSmits: well it was his pony tbh
dbdr: pony?
MSmits: der jack
Marchete: robo has a big NN
Marchete: and fast
derjack: somepony
Marchete: quantized and that
MSmits: what does it mean that it's quantize
MSmits: I only know this term from quantum mechanics
Marchete: working with int8 instead of float32
Marchete: quantization
MSmits: so you can do more simd?
Marchete: 8bit operations at some point
dbdr: ints have quantas. min difference is 1 :)
MSmits: ah right
MSmits: well if that has enough accuracy then that's cool
Marchete: but it's not super fast, like 40% improvement it seems
derjack: maybe i should... add second hidden layer
Marchete: do you have only 1 layer?
Marchete: I think most non-linear magic happens at that 2nd layer
MSmits: 1 layer should be able to achieve the same but might need more nodes to do say
MSmits: to do so
derjack: i have 192 hidden units in 1 layer
derjack: 1 hidden layer is enough to approximate any function, though 2 and more is easier
martinpapa69: having two smaller layers is often better then one bigger
RoboStac: Marchete - int8 is about double the float32 speed, int16 was the 40%
Marchete: ahh
ja_fica: Are you aware of any AI conference to currently publish an article?
Marchete: sorry robo
Marchete: I misunderstood
bluefacebaby: does it has html game?
bluefacebaby: or game for web dev
Marchete: hey guys have you seen this?
Marchete: https://www.codingame.com/hackathon/sogeti-codefest-2021
Marchete: "Press DELETE to remove an AI from the test area."
Marchete: "Press the PLUS button to add another participant AI to the test area."
Marchete: what's those two buttons?
dbdr: Players tab
dbdr: selecting your opponent in the IDE
Marchete: ahhh
derjack: is this HS?
Marchete: damn
Marchete: I see
Marchete: I'm dumb
RoboStac: I'm more interested in the 'you can test as much as you like!'
Marchete: I thought you can make something new
dbdr: another semi-private contest it seems
Marchete: *terms apply
dbdr: as much as you like, just not as fast as you like
Marchete: it's like unlimited buffet
Marchete: it is NOT
Marchete: :D
KiwiTae: its from sogeti and intelcorp
KiwiTae: oh or just sogeti i guess form the name
KiwiTae: hehe
KiwiTae: hope its a physic game :grin:
martinpapa69: if wonder if im gonna need proxy, its enought to set my home country to participate in this 1
Marchete: my country is in
Marchete: but I won't be available, anyways I'm an slow coder
ja_fica: So portugal cannot participate?
martinpapa69: I dont think they will make it hard for you to bypass the restrictions
MSmits: you might have to pick up your prize in a country that's allowed to participate :)
Marchete: I can pick it up
Marchete: :D
MSmits: me too
Marchete: :angry:
MSmits: it's tempting for me to join also
martinpapa69: okay might ask one of you to send me my laptop
MSmits: i usually dont, on these, but the timing is perfect
Marchete: "this is mine"
Marchete: there is also job recruitment
Marchete: maybe you are interested
MSmits: you dont even need to do well
MSmits: I got calls when I ended 69th :P
Marchete: they know you
MSmits: and when I said i didnt want to work in France, they called me back a few days later to ask me if i wanted to work in the UK instead
KP56: lmao
MSmits: so yeah, these contests work :P
MSmits: for recruitment that is
MSmits: btw one of my RL friends used to work at sogeti
MSmits: doing consultancy now
Marchete: reinforcement learning friends?
Marchete: weird
MSmits: yeah :P
Astrobytes: lol, that's legit what I thought, I was slow to realise
MSmits: I have a bunch of reinforcement learning friends i send out to work
MSmits: :)
Astrobytes: so much NN talk these days it wouldn't be surprising :D
MSmits: heh right
KP56: can i debug without cerr?
KP56: its very slow and causes timeouts
MSmits: well just dont over-use it
MSmits: other than that you get some error sometimes but cerr is by far the most useful debug tool on CG
MSmits: other than that you can do whatever you like locally, that might sometimes be a preferable way to debug
KP56: i need to check where my program crashes, but it does so in the function which gets called 10-20k times every round
MSmits: if your bot is deterministic this can be solved
MSmits: try to use seeded random
MSmits: then find the crash by counting iterations
MSmits: see if it makes it to 1k iterations
MSmits: if not, then try 500
MSmits: etc.
MSmits: binary search wise to find the right iteration
MSmits: then just debug print on that iteration
KP56: it makes it to around 8 iterations
MSmits: allright then print around that time
KP56: k
KP56: thanks
MSmits: np
MSmits: make sure the bot does the same thing every time
MSmits: otherwise its really hard to debug
Duc_Thang: DCM CLMM
Duc_Thang: sua cai lon me may
Duc_Thang: suc vat vai lon
bluefacebaby: C language is too old TT
AllYourTrees: wow i got a win against struct in C4
MSmits: grats
AllYourTrees: ty! :)
derjack: did he timeout
AllYourTrees: nope i definitely lucked out though hah
Qraqen: BlasphemousCrossbreed and souta_1326 are fucking shit and motherfuckers
derjack: oO
nulte: let me check o.o
struct: hmm I see
BlasphemousCrossbreed: ?
BlasphemousCrossbreed: My sexual habbits should not bother you, Qraqen
Astrobytes: Pardon?
BlasphemousCrossbreed: well, i see some weird accusation in chat
Astrobytes: Oh I see it
MSmits: he means the :poop: gave consent Astrobytes
Astrobytes: hehehe
BlasphemousCrossbreed: while it might be true, this is still not his concern at all
Astrobytes: :D
MSmits: agreed
struct: I didnt even see the message tbh
Astrobytes: I didn't either
BlasphemousCrossbreed: well, for some reason it poped red in chat
BlasphemousCrossbreed: maybe someone abusing something
Astrobytes: Yeah it does that if your name is mentioned
Astrobytes: BlasphemousCrossbreed
BlasphemousCrossbreed: ah, I c
BlasphemousCrossbreed: good to know
Astrobytes: :+1:
BlasphemousCrossbreed: it is so hard to climb clashes above #100 rank..
Astrobytes: I don't bother with clashes tbh
BlaiseEbuth: How's your clash.
Astrobytes: Infinitely counting down
martinpapa69: do you know any algorithm, to find the strongest one my local bots? like a BetterTrueSkill™
BlaiseEbuth: https://www.codingame.com/forum/t/community-resources/187070
Marchete: it's called pitplay martinpapa69 :rofl:
martinpapa69: ye, i want to use the pitplay, but
martinpapa69: lets say i have 1000 bots
martinpapa69: and i want to find the strongest one
martinpapa69: there are efficients ways to compete them vs eachother, and less efficient ways
Marchete: ahh ah trueskill
derjack: sounds pity
Marchete: well, ELO
BlasphemousCrossbreed: try something like swiss tournaments?
martinpapa69: ye, i want to know if there is a BetterTrueSkill
Marchete: submit 1000 times, get the bot with most winrate, ezpz
martinpapa69: im bored of submit spam :D
Marchete: automate it :rofl:
martinpapa69: ye i thought about it tbh
Marchete: O_o
BlaiseEbuth: That's not like I answered... :rolling_eyes:
RoboStac: recurse mentioned using ordo to do that in the spring challenge
Marchete: ordo seems overly complex
Marchete: like you need pgn and stuff
martinpapa69: ye BlaiseEbuth, tx, i heard about CGBenchmark, and used it. but it's rly slow, and the limit of games you can run ide, got reduced recently, i got blocked after like 20 plays in a row
BlaiseEbuth: I was thinking more about brutaltester in your case.
Marchete: the problems is that I haven't found a referee
Astrobytes: The input just needs to be in PGN format, shouldn't be hard to do
Marchete: Agad_e's one seems to always tie for me
BlaiseEbuth: PGN?
martinpapa69: Marchete gave a tool to compete bots compete vs eachother, thats not the problem here
Astrobytes: portable game notation BlaiseEbuth
BlaiseEbuth: Oh.
martinpapa69: i want an algorithm, that tells wich bots of my population to compete in the arena, so I can tell after like 1000 runs, wich one is the strongest
Marchete: I messed up AGZ and AZ, and I created a monster :D
BlaiseEbuth: And so, why not trueskill ?
Marchete: maybe something like CG does
Marchete: first matches distributed on the leaderboard
Marchete: then N games on a range
martinpapa69: I remember reading about TrueSkill on the forum, that it might not be the best algorithm
martinpapa69: pb4 complained a lot about it as i remember
Marchete: problaby isn't
MSmits: if you're going to use a marginally better algorithm to measure effectiveness, the difference in bot quality is probably not enough to give significantly better ranking on the leaderboard
RoboStac: it's a bit biased towards recent results (as it's designed for systems where skill isn't static)
Marchete: but you can fix that
Marchete: just iterate over all
Marchete: playing in range N matches
Marchete: until you are bored
martinpapa69: yea, that can be a way, but its not the most efficient
Marchete: it's a trueskill sort
BlaiseEbuth: If I remember well the problem with trueskill on cg was more because of the quantity of played match.
martinpapa69: ye...maybe I can add a probability factor to it, so the better bots gets more games, so i dont waste time competing the worst bots. because im interested in finding the best one, not to make the correct order
Astrobytes: ordo looks good tbh, seems easy to use too
martinpapa69: gonna check that
BlaiseEbuth: ordo?
derjack: ordo!
Groovygustaf: Is there a simple way to convert a string in python to binary:
- format(ord()string, "08b") isnt working well
MSmits: https://www.youtube.com/watch?v=H4v7wddN-Wg
BlaiseEbuth: I'm not up to date with this chat's vocabulary...
MSmits: me neither
MSmits: i was on vacation for 5 days
Marchete: oRdO
RoboStac: https://github.com/michiguel/Ordo
martinpapa69: ty RoboStac
BlaiseEbuth: Ok
TabulaRasa: Hello everyone, can somebody point me to FAQ or blog post describing what are the rules to be promoted to legend league in bot programming contests? Is it the same as for promotions to lower leagues? (i.e. your bot should beat "the boos")
RoboStac: yes, promotion is always based around having a higher rank than the boss
TabulaRasa: thanks
BlaiseEbuth: Thx RoboFaq
MSmits: good one :)
AllYourTrees: i've been using bayesian elo https://www.remi-coulom.fr/Bayesian-Elo/
AllYourTrees: ordo seems better documented and maintained though lol
IamQuan: :0
IamQuan: :smile_cat:
ADLER_GOUST: hi
derjack: you could try CLOP for your hyperparameters tuning ~
derjack: remi's CLOP, not pony clop
BlaiseEbuth: (╯°□°)╯︵ ┻━┻
BlaiseEbuth: Was about to link the game
derjack: hm?
BlaiseEbuth: CLOP
BlaiseEbuth: Like QWOP with a pony
derjack: oh ok
derjack: i meant different meaning of clop, but yours better
BlaiseEbuth: Don't know if the game still exist, since flash is dead... :thinking:
derjack: blaise in CoC? oO
BlaiseEbuth: :scream:
BlaiseEbuth: That's not me
LINDI_SHAH: :nerd::rolling_eyes:
Conbadicus: Im having an issue
Conbadicus: I feel like the nextCheckpointAngle isn't working accurately, but I must be doing something wrong
BlaiseEbuth: We've lost the context again...
Darnoc: Sorry - thought this was the chat for a specific challenge.
BlaiseEbuth: There's no such thing. Except for clash of code.
Darnoc: Yes I can see that now
Astrobytes: Be more specific with your question ;)
Darnoc: sure, let me try again
Darnoc: http://chat.codingame.com/pastebin/e3781f31-232d-4098-b56c-9e5be25d4c6f
Darnoc: However, going through the console step by step doesn't show it ever seeming to fall within those angles.
Darnoc: which is clearly incorrect.
Darnoc: i just discovered debug. maybe I can figure this out on my own
BlaiseEbuth: Doesn't the condition you describe do the exact inverse of what is needed?
Darnoc: yes sorry I wrote it incorrectly,
Darnoc: I have it correct in my code
BlaiseEbuth: Ok
Darnoc: if the angle is outside of -45 to 45 then go slow.
Darnoc: between -45 and 45, go fast.
Darnoc: etc.
BlaiseEbuth: You can show us your code if you want
Darnoc: just copy past it here?
BlaiseEbuth: Yup
Darnoc: http://chat.codingame.com/pastebin/65689900-ceda-44bf-8d5c-6527835df4b5
Darnoc: this time I made the angle tighter, at 15
Darnoc: -15 to 15
BlaiseEbuth: || is incorrect
Darnoc: ohhh ?
nulte: that condition is always true
BlaiseEbuth: If angle is -30, it's <15 so the condition is correct
nulte: any number is greater than -15 and less than 15
BlaiseEbuth: You need to use &&
Darnoc: classic.
BlaiseEbuth: To ensure both conditions are correct
Darnoc: that makes more sense.
Darnoc: sorry what nulte?
Darnoc: or cause it was OR.
Darnoc: oh
Darnoc: ok
Counterbalance: it won't make a difference though.. you best remove that last if: if (Math.abs(angle) < 15) {} else {}
Darnoc: I got it figured out
Darnoc: THanks
KiwiTae: always go full speed
Darnoc: oh yeah?
Darnoc: just blow right passed the checkpoint ?
KiwiTae: YAA just start turning before u reach it and ull be right on your way toward next CP
KiwiTae: slowing down is for the weaks
KiwiTae: :sunglasses:
Darnoc: that was level 2 I think, you only have access to the very next checkpoint
Darnoc: if I could read the one after it as well I think I could program a wider turn
Darnoc: but perhaps thats in a few levels.
BlaiseEbuth: Nothing prevents you to store cps during the first turn...
Darnoc: lol I was considering that..
KiwiTae: instead of slowing down target the checkpoint minus your current time averaged delta position
Darnoc: word
Darnoc: im pickin up what youre putting down
KiwiTae: Madknight would have told you 3v and walked away
Darnoc: dunno who that is or what 3v is
BlaiseEbuth: Fix your -3vel and go legend
Astrobytes: ezpz
BlaiseEbuth: Use my starter KiwiTae
BlaiseEbuth: :speak_no_evil:
KiwiTae: :joy:
KiwiTae: did he disappear? long time no see
Darnoc: ?
BlaiseEbuth: I'm afraid he's a little angry...
BlaiseEbuth: In fact I'm not even sure Tibo unbaned him... :thinking:
KiwiTae: oooh he got banned
KiwiTae: i miss the gossips
BlaiseEbuth: I banned him yeah...
KiwiTae: pewpew
BlaiseEbuth: ^^
MSmits: madknight is banned?
BlaiseEbuth: Is or was...
MSmits: i see
MSmits: well I can imagine a situation where that was necessary
BlaiseEbuth: Only one? -_-
MSmits: well more than 1 is too much work
MSmits: dont need more
DarkLord__28: Op dcuber in chat'
Darnoc: wow battling through the ranks takes while
swattz: Is the goal on this site to write the shortest, most terse code that nobody would ever want to have to maintain? That's the kind of code that seems to get the most upvotes.
Marchete: yes, it is
swattz: Hopefully I never hire anyone from here (I do hire some programmers)
Marchete: I was just kidding
Marchete: upvotes are usually given to how different that solution is
dbdr: swattz: give us an example
Darnoc: hi swattz I know some if for loops please give me a job.
Marchete: btw programmers that usually use that platform are much better than usual programmers
Marchete: because they are always trying to improve
BlaiseEbuth: No. They're bad, their code is ugly
Marchete: my code is
nulte: my avx code is not ugly :(
dbdr: fix it
BlaiseEbuth: Yeah. And you're bad Marchete
Marchete: lol, every AVX code is ugly
Marchete: you can't beautify it
BlaiseEbuth: swattz will never hire you
Marchete: hopefully
nulte: if you make the interview code a connect 4 bot I might pass
Marchete: if you make the interview code a working NN bot I might pass too
Marchete: maybe he expects the classical for loop in descent
BlaiseEbuth: He said he never hire people from here. He probably check if you have a CG account before interview
Marchete: damn! well, anyways....
KiwiTae: since my colleagues joined CG our codebase is all golfed so beautiful
dbdr: and commit base64 encodes versions of your company code
Marchete: your code isn't good enough? add more randomness and spam resubmit until it hits
Marchete: maybe he won't hire me now
inoryy: split everything into 100kb chunks
Marchete: ah! and I make big arrays, of 750MB
inoryy: hired
Marchete: :thumbsup:
nulte: I solved the descent with AVX
BlaiseEbuth: I solved Onboarding with a NN.
KiwiTae: I solved it with random output submit until it worked
Marchete: hired!
Westicles: US account saying something dumb, or devious french sockpuppet?
MSmits: those sockpuppets, so devious
BlaiseEbuth: https://www.youtube.com/watch?v=QJwIsBoe3Lg
dbdr: give me back those deux minutes!
BlaiseEbuth: :french_bread:
Thyl: :wine:
Thyl: :flag_cp:
jacek: https://i.kym-cdn.com/photos/images/original/000/572/760/700.jpg
BlaiseEbuth: Globally true. Except in some region frenchs are not the kindest people ^^
Zequi: specially those that don't share their code after clash :O
MaliciouslyCrypticUsername: :laughing:
BlaiseEbuth: :see_no_evil::hear_no_evil::speak_no_evil:
ADLER_GOUST: hi
saadatjoo15: lol
TobiasA: hi
saadatjoo15: how to eat kos
saadatjoo15: :neutral_face:
darkhorse64: Clobber POTW ! :muscle:
nulte: grats, maybe I can try it next I should finish breakthrough soon
Astrobytes: Nice!
Astrobytes: That might force me to do my rewrite I've been putting off
darkhorse64: Time to create another one
nulte: another game?
darkhorse64: yep
saadatjoo15: amokos
saadatjoo15: :|
nulte: Which one are you thinking on porting?
Astrobytes: what do you have in mind?
darkhorse64: Ataxx
Astrobytes: Cool, that sdhould be fun
Astrobytes: *should
darkhorse64: aka Infection. BlaiseEbuth should love it
BlaiseEbuth: hm?
darkhorse64: It's a plague tale
nulte: I have arimaa and havannah on my todo list
Astrobytes: Cool
darkhorse64: Abalone is coming too
Astrobytes: Waiting on 1 approval still?
darkhorse64: I think so, it deserves more upvotes
jacek: MSmits, another hex game awaits your approval
nulte: its 63 cells right?
jacek: oh, clobber potw.
jacek: eeyup
darkhorse64: Free CP
nulte: One day ill make a boss for yavalath
nulte: or even a bot
Astrobytes: :D
BlaiseEbuth: The good ol' time of the plague... *sigh*
jacek: next potw amazons? more CP :imp:
nulte: free rank for you :(
Dragon84: https://www.codingame.com/clashofcode/clash/1873452d4ac0ce9bb01f618fc6255bae8dabc7a
Astrobytes: No.
nulte: #clash
jacek: Eeyup
Dragon84: thx
Dragon84: (╯°□°)╯︵ ┻━┻
jacek: :?
nulte: http://chat.codingame.com/pastebin/812b51de-d7ac-4464-9600-8d1ee70c50a2
nulte: o.o
jacek: hm?
nulte: on breakthrough vs my current bot
jacek: 13th, woad
jacek: woah
Astrobytes: woad eh
MSmits: be careful jacek, or he might start talking plant stuff
Astrobytes: I was thinking more about the dye you get from the plant but eh
MSmits: mmh ok
MSmits: that's allright, ramble away about dye then
Astrobytes: I wasn't planning to :D
MSmits: ah ok
Astrobytes: Cheeky git :P
MSmits: that's me
MSmits: jacek is my git copilot
Astrobytes: Hah! Well played.
MSmits: still working on beating mikla
nulte: i added pruning to moves
nulte: Not sure how well it will do on leaderboard
MSmits: what are you pruning?
jacek: meh, adding 2nd is worse. iteration wise its better but too slow :s
jacek: hes pruning worse moves, obviously
Astrobytes: A game tree MSmits
nulte: I pruning nonsense moves
nulte: like giving away a piece for nothing
MSmits: you mean your bot is better with the same number of iterations compared to 1 hidden layer?
MSmits: but the iterations take so much time, it's not feasiblew
jacek: its not surprisin
MSmits: not really no
jacek: but additional layer is more costly
Astrobytes: surprisin feasiblew
MSmits: did you also reduce nodes per layer?
MSmits: there might be some tradeoff possible there
jacek: a little bit
MSmits: i guess it's difficult to do good tests when training takes so long
MSmits: 2 hidden layers takes a lot longer to train i bet
Astrobytes: That looks decent already nulte
nulte: i cant beat tric
nulte: :(
Astrobytes: It ain't easy
nulte: I think i kinda messed it up
nulte: I need to fix it
Astrobytes: ezpz
BlaiseEbuth: You have to find the tric to beat trick
Astrobytes: To get back on track with the trac
jacek: good ol' time when i was struggling against him...
BlaiseEbuth: Tric these days...
LINDI_SHAH: are you guys playing
LINDI_SHAH: :thinking::confused:
Astrobytes: Yes.
BlaiseEbuth: hm?
LINDI_SHAH: what game nd where
nulte: Breakthrough
LINDI_SHAH: ima noob here
nulte: codingame
LINDI_SHAH: .com
LINDI_SHAH: :)
Astrobytes: Breakthrough.com?
LINDI_SHAH: where to find this Breakthrough
nulte: https://www.codingame.com/multiplayer/bot-programming/breakthrough
Astrobytes: :(
LINDI_SHAH: thx bro! nulte
jacek: now try to find some papers about breakthrough (the game)
jacek: all you will get is about beating cancer or something :unamused:
MSmits: yeah I don't know why google doesn't put the more important stuff up top
Astrobytes: improve your internet search techniques jacek
Astrobytes: lol MSmits
BlaiseEbuth: Or why scientist care about cancer where there's breaktrough...
jacek: nulte noice https://www.codingame.com/share-replay/570998585
Astrobytes: :clap: and not a close one either
nulte: I must fix eval
nulte: :(
MSmits: I heard some people have an eval with 200 + params
nulte: ?????
Astrobytes: 200+ !!!
MSmits: yeah, they call them NN's
Astrobytes: :smirk:
MSmits: too easy
MSmits: my D&B bitboarding is giving me headaches
MSmits: maybe a graph would have been easier
MSmits: I have that for my score solver, but not for the nim solver
jacek: well if you have piece-square tables, that already 64, or 32 with symmetry
Marchete: graph ftw
MSmits: some steps will be a lot slower with graph though
Marchete: what steps
MSmits: I detect short chains over the entire board at the same time
Astrobytes: graph seems logical for dnb to me, you can still bitboard parts
MSmits: with graph i would have to traverse it
Marchete: I cut a chain and create the shortest
Marchete: not really
jacek: i use graph only in 1 game
Marchete: I mean
Marchete: bitboards +chains
nulte: if I it has graphs I dont play it
MSmits: also hashing
MSmits: its easy with bitboard
Marchete: my hashing is done with graph properties
Marchete: I can rotate any chain
Marchete: it's the same hash
Marchete: rotate or bend to the opposite
MSmits: sure, that could help
Marchete: then, add more chains
MSmits: i guess hashing is my main obstacle
Marchete: and I still get the same hash
MSmits: I just don't know how to do that properly
Astrobytes: Learn ;)
Marchete: see the properties of each chain
jacek: smoke
MSmits: btw, a nim solver for D&B has only simple objects
Marchete: connections to ground
Marchete: length
Marchete: etc
MSmits: no chains and such
MSmits: i mean, max 1 or 2 long if its a chain
MSmits: if its longer, you can ignore it
MSmits: including all loops
MSmits: doesnt even matter if it's grounded or not
MSmits: 3 or more = ignore
MSmits: because you cant play those without losing the game immediately
MSmits: (the nim game)
Astrobytes: makes sense
MSmits: this is why graphs were somewhat less interesting to me
jacek: :rage:
Astrobytes: I suppose there are multiple approaches, maybe a combo is better?
MSmits: well my score solver is mostly graph
Marchete: I really can say
Marchete: because I just ended my graph simulator
Marchete: and got bored
MSmits: you'll come back to it eventually
Marchete: I don't know if it's better MCTS , minimax
MSmits: for D&B?
MSmits: minimax most likely
Astrobytes: minimax seems totally appropriate
MSmits: because TT works better
Marchete: or well, NN :kissing_smiling_eyes:
Astrobytes: :P
MSmits: there's no point using NN for over half the game as you can solve it in microseconds
MSmits: my nim solver can solve after ply 55 in like 7 microseconds
Marchete: yeah, you can sim oware in microseconds too
MSmits: i mean solve, get the gametheoretical value
MSmits: for every possible move
nulte: o.o
MSmits: the nim value that is (so 0 or 1 )
nulte: is it possible to avx D&B?
MSmits: maybe, not sure
oxydowe: hello world chat
Marchete: I don't have avx
jacek: youre poor
MSmits: gonna go see a movie
MSmits: ttyl
nulte: cya
Marchete: :head_bandage:
nulte: Does dbdr have NN on bt?
jacek: no that i know of
Astrobytes: I don't believe so
nulte: I check tric replay it was solved on frame 60
nulte: his iterations seem quite low
jacek: tric doesnt write any iterations?
nulte: i mean dbd r
nulte: his iterations seem quite low
nulte: for a top 5 bot
nulte: like 5 iterations 2nd turn?
nulte: 5k*
Marchete: 5k? a NN :D
Marchete: mine goes from 5k to 10k
jacek: in oware*
Marchete: 80% of my time is NN
Marchete: nah
Marchete: 160k sims
Marchete: it seems it isn't
jacek: in bt i have about 2k iterations
jacek: or more like 40k nodes
Marchete: ah
AllYourTrees: D&B or amazons?
jacek: yes
jacek: or puzzle of the week
nulte: :notebook: :soccer:
AllYourTrees: how do you find the puzzle of the week?
jacek: on quest map
MaliciouslyCrypticUsername: AllYourTrees you should get a notification about it
jacek: on tuesday
Astrobytes: Quest map updates before the notification
jacek: D:
AllYourTrees: i don't think i've unlocked puzzle of the week in quest map lol
jacek: welp https://www.codingame.com/multiplayer/bot-programming/clobber
AllYourTrees: fun!
69razer69: should i write statment even if it is a reverse mode that i am targeting in contributions
nulte: if its only reverse than its not needed
AntiSquid: comments are posted "4 years" before the puzzle was made, is time travel real? what's up with CG ? :D
AntiSquid: https://www.codingame.com/contribute/view/5026597b1573e76c4e9897e8627c388fe71?comment=9131
nulte: So the statement now gives the solution?
ANONYMOUS42: i guess someone published their old private clash contribution
Westicles: No, Zima just scrubbed the text
ANONYMOUS42: oh yeah i see it's just zima's comments that are new
69razer69: "statment is mandatory" in reverse mode contribution
69razer69: ??
nulte: just put some random thing in it
Westicles: I can't figure out why this one got deactivated, I thought it was a nice one
Westicles: https://www.codingame.com/contribute/view/6237c51ddaa53487af10cb313ac4631e0371
ANONYMOUS42: is there an automated system for deactivations?
ANONYMOUS42: or does it require moderator approval too
ANONYMOUS42: or admin idk
Westicles: yes, the mod bot turns off ones with low scores
ANONYMOUS42: wait so who gets to see the reports from the players
Astrobytes: 20 low votes or something?
ANONYMOUS42: or does it just go to the void lol
Astrobytes: It's automated, based on the rating
nulte: if its not a regex coc you are at risk
ANONYMOUS42: lmao i sometimes write reports explaining what's wrong with the clash
ANONYMOUS42: i guess that was a lie
Astrobytes: No, they go through
Astrobytes: Not to us, but to CG staff
Astrobytes: If there's an issue it's usually a good idea to mention in chat or whatever, someone with the required level can edit the contribution if needed.
ANONYMOUS42: i guess i can edit them myself even. but i avoid doing that. just seems kinda weird that they allow you to change others' contributions just because you played 50 clashes
Astrobytes: That's why it's generally a good idea to get a consensus on the matter from others first
Marchete: I disagree
nulte: if people could edit temperatures
nulte: It would be a mess
Astrobytes: You disagree with what Marchete?
Marchete: with your consensus
Astrobytes: Why?
Marchete: jk
Marchete: :O
Marchete: :P
nulte: ban him
nulte: :)
Astrobytes: FFS :D
ANONYMOUS42: banhammer
Astrobytes: KICK THE MARCHETE
**Astrobytes kicks marchete
**Marchete was kicked
Astrobytes: in the leg
Marchete: :athletic_shoe:
Astrobytes: :grin:
ANONYMOUS42: 𝚖𝙰𝚛𝙲𝚑𝙴𝚝𝙴 𝚆𝚊𝚂 𝙺𝚒𝙲𝚔𝙴𝚍
ANONYMOUS42: how many fonts can you paste here lol
nulte: Any "How to write an eval for dummies"?
Counterbalance: return "ur dumb";
AllYourTrees: write your own nn & AZ framework, train a NN, do research to understand how to get AI to explain their decisions, publish and become very famous, then use your result to write a rule based eval
AllYourTrees: ez
Astrobytes: No. It's like voodoo. You get better at it over time.
ANONYMOUS42: you get better at voodoo over time?
Astrobytes: Of course.
ANONYMOUS42: Understandable, have a nice day
Astrobytes: Don't take that literally :D
ANONYMOUS42: I don't know why they don't let the ascii emotes alone
ANONYMOUS42: they look better than these emojis
Astrobytes: It's a trivial issue.
ANONYMOUS42: Not to me. Join us at savetheemotes.com to learn more about the emote genocide.
nulte: https://www.codingame.com/replay/571015268
nulte: such a weird game
nulte: Such a weird position
ANONYMOUS42: whoa that pawn capture animation caught me off guard lmao
nulte: White opening seems like an opening book
nulte: Never saw my ai do that before
jacek: hm?
nulte: The opening is a bit weird
ANONYMOUS42: it did look kinda symmetric
ANONYMOUS42: symetric?
nulte: frame 11 white pieces are all symmetric
jacek: have you seen the proposed opening from the author of game?
nulte: I think so
jacek: page 4 http://www.trmph.com/bin/Basic_Introduction_to_Breakthrough.pdf
nulte: yeah
jacek: my self learned bot somewhat prefers the bottom one
jacek: at least what it does in littlegolem
ANONYMOUS42: are there other chess modes bot games?
ANONYMOUS42: like horde and antichess
nulte: no
jacek: just chess960
nulte: antichess is solved though
ANONYMOUS42: i didn't know that
ANONYMOUS42: is the perfect algorithm just theoretical or can it be programmed
nulte: http://magma.maths.usyd.edu.au/~watkins/LOSING_CHESS/email.html
ANONYMOUS42: could still be interesting because of the limited time requirements i guess idk
ANONYMOUS42: I don't know much about chess so just ignore me lol
Astrobytes: how is your littlegolem bot jacek? Still undefeated?
AllYourTrees: what's littlegolem?
Astrobytes: Essentially a play by mail site for board games.
Astrobytes: - the mail part
Astrobytes: Slowww games
AllYourTrees: interesting
Astrobytes: jaceks BT bot was doing real good last time I heard anything
nulte: https://www.littlegolem.net/jsp/info/player_list.jsp?gtvar=brkthr_DEFAULT
nulte: seems to be ra nk 4
Westicles: The bot buys stamps? Amazing
Astrobytes: Nice. I can see that going higher.
jacek: Astrobytes lost 2 games https://www.littlegolem.net/jsp/info/player.jsp?plid=140575
Astrobytes: nulte: (or anyone else) Is LoA good for CG?
jacek: line of actions?
Astrobytes: Yeah
jacek: from the mcts solver paper guys?
jacek: is the statement gonna be written the same way? :scream:
nulte: I never played it so im not sure
Astrobytes: jacek: 2 losses, fix it! Damn strong bot man
jacek: i use about 10 seconds per move
jacek: according to https://www.littlegolem.net/jsp/games/gamedetail.jsp?gtid=brkthr its 3rd in the rating
Astrobytes: Pretty good stats there
jacek: it lost to gzero_bot, but it was before my new framework https://www.littlegolem.net/jsp/game/game.jsp?gid=2228357
jacek: and the bot i have now wins ~90% than previous version
AllYourTrees: o.o
nulte: o.o
69razer69: i just published my first contribution
jacek: :tada:
69razer69: :flushed:
Astrobytes: Tough loss on that one jacek. So you submitted the new one yet on there?
jacek: yes
nulte: you submit it or run it localy?
jacek: there is no official api. html parser, run locally and make move
jacek: there is only correspondence games
69razer69: you guys talking about breakthrough
69razer69: ?
jacek: eeyup
69razer69: is there a website where i can play it against friend
jacek: dunno
69razer69: i want to play it so bad
jacek: there is some against computer https://crypto.stanford.edu/~blynn/play/breakthrough.html
69razer69: i crushed him
69razer69: i think there something to it like checkers the first to play win or something like that
ANONYMOUS42: is that haskell it always looks intimidating to me lol
69razer69: its definitly not equal chance of wining
69razer69: lol same , specially the infinite series bit
jacek: checkers is proven draw
69razer69: true yes
ANONYMOUS42: kinda cool story with checkers alg
ANONYMOUS42: https://www.theatlantic.com/technology/archive/2017/07/marion-tinsley-checkers/534111/
ANONYMOUS42: the best player at the time was a minister
xxd: For CoC what is the smart way to take in input
xxd: in bash*
xxd: if we're gonna direclty pipe it into other commands
Westicles: read?
YurkovAS: coders of caribbean? :smile:
xxd: cat /dev/stdin is overthinking eh
xxd: im not sure how to pipe read into other commands, idt thats right
Westicles: fmt -1 is good in some cases
ANONYMOUS42: xargs|read can sometimes also be helpful
AlpineGeorge: @YurkovAS ClashofCode
Wontonimo: yo
nulte: hi Wontonimo
Wontonimo: hey nulte
Wontonimo: i'm cleaning up my mcts from uttt to reuse for c4
Wontonimo: whatcha up to?
nulte: breakthrough
Wontonimo: nice
nulte: Trying to figure an evaluation
Wontonimo: i've heard that minimax for small sections of the board is something that's worked
Wontonimo: but i have no idea what that means
nulte: hmm, mixing mcts with minimax?
Wontonimo: or beam
Wontonimo: i think where minimax comes in, and i could totally be wrong here, is discovering an unstoppable final push with one pawn
Wontonimo: which would just take really long with mcts, even with solver mcts
Wontonimo: hmm... my "improved" mcts on uttt seems to be doing worse than my previous version
nulte: whats the improvement?
Wontonimo: i replaced 'new' with a pre-allocated pool for the Nodes
nulte: that should be a big performance boost
Wontonimo: meh
Wontonimo: i was 30th before and i'm still 30th
Wontonimo: it's probably not where i'm losing time. i should really put this through a profiler
nulte: not a bad idea
nulte: I do a few tricks to check early wins there
Wontonimo: speaking of which ... why not now
nulte: I think im ~rank 15 there
nulte: on struct
nulte: do you have mcts solver?
Wontonimo: yeah, it's a really nice little branch of code
Wontonimo: you?
nulte: yes I also have solver there
nulte: I feel like its always worth
Wontonimo: ah, the yo-yo of final "rank stabilazation"
Wontonimo: for all that, i moved up 1 rank
Wontonimo: 29th now lol
nulte: I can check my rollouts
nulte: 1 sec
Wontonimo: i'm at 102k on second move
struct: you rollout every child?
struct: I think I get around the same
struct: I get like 1.2Mil+- in 1 sec
Wontonimo: no, i allocate them but don't roll them out
struct: and you still can do 102k rollouts? o.o
Wontonimo: ah, i do 3 rollouts per node and have a lower UCB_C
Wontonimo: the higher rollout means more certainty which means lower UCB_C needed.
Wontonimo: but since i've changed the performance of the rest of it, i should go back and retest that trade off
struct: do you reuse the tree?
struct: im not sure how much gain it is
Wontonimo: yes sire
Wontonimo: *sir
struct: do you check for early wins at all?
Wontonimo: mcts+solver + tree reuse + prealloc
Wontonimo: we are talking UTTT right?
struct: yes
Wontonimo: how do you do early wins in UTTT?
struct: if for example you have 4 miniboards completed and opponent 3 and no more miniboards can be won
struct: its a win
struct: miniboard can still be played but cant be won by either player
Wontonimo: oh, interesting
Wontonimo: makes sense for sure, but there is no specific check or data structure i have for that
struct: yeah i added a uint16_t completed = 0; // if the miniboard is complete
struct: bit 0 is board 0, bit 1 1 and so on
struct: uint16_t not_winnable = 0; // if the miniboard can still be won by either player
struct: Same for not_winnable var
Wontonimo: it make sense for sure, thanks
struct: np
struct: also do you use lookup table for wins?
Wontonimo: no lookup tables, no "book"
Wontonimo: no transposition tables
struct: lookup > avx > for loop
struct: in terms of speed
Wontonimo: oh, i see, yes i have a 512 lookup for win of miniboard
struct: yes
struct: ah good
Wontonimo: 58k on 2nd move if i do 1 rollout per node like everyone else.
struct: I do rollout for every child
Wontonimo: hmm. i could try that pretty easily i think ...
struct: for some people is better for others it isnt
Wontonimo: that was pretty easy
Wontonimo: brutal test running
Wontonimo: interesting ...
struct: is it doing better?
Wontonimo: i'll have to explore the UCB_C as it's going to change it a lot
Wontonimo: it's getting 116k on 2nd move
struct: yes it does more rollouts
struct: but less nodes
struct: so it also solves later
Wontonimo: oh, right
Wontonimo: i'm doing a local test for ucb_c. it is kinda doing a similar thing to my 3/node
Wontonimo: but more heavily on high branch factor areas
Wontonimo: SUBMIT !
struct: gl
struct: brutaltesting with 2 threads takes a while :/
Wontonimo: do you use the grandfather heuristic?
struct: whats that?
Wontonimo: where you seed the score with the score of the grandfather parent
Wontonimo: (the players previous move)
struct: no
Wontonimo: well, it isn't horrible. already at 40th after 1/5th of its battles
Wontonimo: it's promising at least. Brutal test is telling me it is marginal (vs my old bot)
Wontonimo: i still have a bunch of small odds and ends that are fairly easy optimizations
Wontonimo: but nothing that will really push it further. i really just wanted to give a good go at converting it from "new" to a pre-allocated Node pool
struct: its hard to make progress on it
struct: Nagrarok was 1st at one point with this bot
struct: his* current submit
struct: not 15+ players are above him
struct: On connect 4 I did no progress
struct: my current bot is the one I submited on day 1 with just a bug fix
struct: I cant progress there at all
struct: I have 1 idea now though due to breakthrough
struct: But I wont reveal it for now, I dont think I ever saw it mentioned in chat
Wontonimo: cool! it's really nice finding new things
Wontonimo: latest change either isn't helping enough or else I've got to find the new hyper parameters that work with it
Wontonimo: oh no ... i think my i killed my solver is what happened
struct: you have parameters besides exploration factor?
Wontonimo: yes, i have a soft weight for the board move heuristic
Wontonimo: actually, it didn't do bad for not having a working solver
struct: yeah
struct: first time I added solver I climbed quite a bit
Wontonimo: my previous submit had a working solver. back in Jan i added it and went from 90th to around 60th, so yeah, a good leap
struct: Similar to what I experienced
struct: I think i went from 100th to 50th
Wontonimo: well that was a bad submit
struct: might have a bug now
Wontonimo: definitely have a bug
Wontonimo: okay, i'm pretty sure the solver *was* working and i killed it by thinking it wasn't
Wontonimo: well, that's about it for me for tonight. felt accomplished finally implementing the Node Pool
Wontonimo: and making it perform at least as well as "new"
struct: its a bit strange though
Wontonimo: maybe tomorrow i'll open a profiler and see what craziness i've done to make the pool lame
Wontonimo: it should be a lot better. i was calling new for every node
struct: yeah
Wontonimo: i also remove "parent" form the Node class, so my nodes are even smaller now
struct: Whats your ndoe size?
Wontonimo: 136 ! what?
struct: 1 node is 136 bytes?
Wontonimo: yeah, i'm storing a copy of the board with every node. i'll remove that tomorrow
struct: Some people store the state on the node but im not sure if they do it on uttt
struct: This is everything i store
struct: http://chat.codingame.com/pastebin/a655fb14-7be1-477d-aa9d-05656b887c4d
Wontonimo: yeah, that's a lot smaller and will be optimized on cache hits a lot better
Wontonimo: i see you are using int for first child, and uint8_t for child count. Nice.
Wontonimo: that's some savings I could get right there. i'm using long and long ;(
Wontonimo: what?? float for visits??
struct: yes
Wontonimo: hmm, interesting
Wontonimo: thanks struct !
struct: np
Wontonimo: well, time to put this away for tonight. gotta get up in about 7 hours
Wontonimo: have a good night
struct: gn
nulte: gg