Chat:World/2021-07-19

From CG community
Revision as of 05:29, 20 July 2021 by Chat Log (talk | contribs) (Created page with "<img src=/a/54970169109216> Wontonimo: google will also provide you with 100's of examples <img src=/a/64140568639944> prINTint: Thank you all:hugging: <img src=/a/641405686...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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

Default avatar.png Jannnn1235: hi

byteful: bye

Default avatar.png Phobinos: Namaste

Westicles: Yeh dosti hum nahi todenge

Default avatar.png bluefacebaby: how can i print the output in C

Default avatar.png bluefacebaby: my output: "1 2 3 4 " correct output:"1 2 3 4"

Default avatar.png bluefacebaby: how can i fix

Default avatar.png bluefacebaby: my code

Default avatar.png bluefacebaby: ?

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 ?

Default avatar.png bluefacebaby: yep

Default avatar.png bluefacebaby: if(i=0;i<n;i++){

Default avatar.png bluefacebaby: printf("%d",i);

Default avatar.png bluefacebaby: if(i!=n-1){

Default avatar.png bluefacebaby: printf(" ");

Default avatar.png bluefacebaby: }

Default avatar.png bluefacebaby: }

Default avatar.png 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);

Default avatar.png bluefacebaby: thanks

Default avatar.png WakimMRT: print('Heo')

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

Default avatar.png 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

Default avatar.png TRKODER: merhaba türk var mı

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

Default avatar.png bluefacebaby: does it has html game?

Default avatar.png 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

Default avatar.png 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

Default avatar.png 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

Default avatar.png cchorafas: eo

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!

Default avatar.png Groovygustaf: Is there a simple way to convert a string in python to binary:

  1. 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:

Default avatar.png Conbadicus: Im having an issue

Default avatar.png Conbadicus: I feel like the nextCheckpointAngle isn't working accurately, but I must be doing something wrong

BlaiseEbuth: We've lost the context again...

Default avatar.png Darnoc: Sorry - thought this was the chat for a specific challenge.

BlaiseEbuth: There's no such thing. Except for clash of code.

Default avatar.png Darnoc: Yes I can see that now

Astrobytes: Be more specific with your question ;)

Default avatar.png Darnoc: sure, let me try again

Default avatar.png Darnoc: http://chat.codingame.com/pastebin/e3781f31-232d-4098-b56c-9e5be25d4c6f

Default avatar.png Darnoc: lol.

Default avatar.png Darnoc: However, going through the console step by step doesn't show it ever seeming to fall within those angles.

Default avatar.png Darnoc: which is clearly incorrect.

Default avatar.png 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

Default avatar.png 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

Default avatar.png 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:

Default avatar.png Emeric97113: hi

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

Default avatar.png 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

Default avatar.png NVT_Nguyen: gg

nulte: gg

Default avatar.png NVT_Nguyen: :v