From CG community
Jump to navigation Jump to search

Wontonimo: i'm still in the process of migrating my implementation to cpp. I hear ya, but like I said, I've gotta focus on just getting it to do 1 roll out before trying to hard to optimize.

ZarthaxX: yes, i wouldnt bother optimizing just yet haha, and also ideas beat optimizations

ZarthaxX: algorithmic ones i mean

Wontonimo: yeah, so just chipping away at it. taking a break once in a while to work on some challenges in cpp. I've been away from having to manage memory directly for way too long. Just looked at my cpp code from last week, and man, soo many mistakes

Wontonimo: well, that's it for me for tonight

ZarthaxX: haha managing memory is pain

ZarthaxX: gn :)

Default avatar.png Noob3242423: gh

Default avatar.png Noob3242423: ffgh

Default avatar.png Noob3242423: fgh

Default avatar.png Noob3242423: fuck all you

jacek: oO


EliteDaMyth: join

EliteDaMyth: shortest only

Default avatar.png PhantomzBack: Hello

Default avatar.png phantom1299: hey

Default avatar.png phantom1299: oh big brother its you

Default avatar.png Saad-py: اه

Default avatar.png Saad-py: hi

YurkovAS: kovi in bandas you use mcts? with ept depth 0-10 + eval or run random games to end?

kovi: ept 30

kovi: maybe i should change it to turn dependent

YurkovAS: kovi your eval better than: pawnsMy - pawnsOp? i'm can't find better eval or some bonus\penalty

jacek: maybe pawns in center are worth more?

kovi: i dont have any heurstic atm. ept means draw

YurkovAS: kovi thanks!

kovi: yeah, overall cnt doesnt seem to matter. probably center would make more sense.

Default avatar.png mokhld: I'm really struggling on these questions lol!

Default avatar.png mokhld: And about to finish my masters in CS

Default avatar.png mokhld: any tips?

Default avatar.png ErrorRazor: Questions?

Rocky[K.G.F.]: wow site is to busy

Default avatar.png Kokoz: anyone doing or already did the weeks puzzle??

Default avatar.png ErrorRazor: I think I did it

Default avatar.png ErrorRazor: Oh yeah, it was the resistor thing

Nativeman: hello world

Default avatar.png ErrorRazor: Hi there

Rocky[K.G.F.]: hii

Rocky[K.G.F.]: why u say this Kokoz

Rocky[K.G.F.]: anyone doing or already did the weeks puzzle??

Default avatar.png Kokoz: Well, I am doing it now and I need some assistance.. So anyone interested in helping please dm me.

Default avatar.png zalanrilex: i dont know how to program in javascript!!

Default avatar.png zalanrilex: has anyone done html?

Default avatar.png zalanrilex: or css

Default avatar.png zalanrilex: no?

Default avatar.png ErrorRazor: Too long ago to remember a thing

Default avatar.png zalanrilex: how old are you

Default avatar.png zalanrilex: ?

Default avatar.png zalanrilex: ?

Default avatar.png DJSchaffner: i just had a clash where we had to calculate a sequence of which i forgot the name. can anyone help me out who recognizes this pattern: given a number, if the binary representation of the number has any parts where the length of consecutive zeros is odd, return a 1. otherwise return 0

JohnathanBarbee: @DJ Google says Binary Gap.

JohnathanBarbee: I hope that helps

Astrobytes: DJSchaffner: This perhaps?

Astrobytes: (Balanced evil numbers)

JohnathanBarbee: That looks right

Astrobytes: DJSchaffner: Baum-Sweet Sequence


Default avatar.png DJSchaffner: binary gap doesn't look quiet right. the balanced evil numbers seem to look at the number of 1's but not at the number of 0's (which shouldn't be the same) and it doesnt seem to match with the results i got. anyhow, i managed to find a better solution than what i came up with in the clash without finding a description of the sequence :D

Default avatar.png DJSchaffner: yes baum-sweet was it!

Default avatar.png DJSchaffner: thank you

Astrobytes: DJSchaffner: if you want to look up a clash you can use this

Astrobytes: As long as you can remember some keywords you'll find it with that

Astrobytes: and you're welcome :)

Default avatar.png DJSchaffner: oh that is handy. thanks i will bookmark it :D

Default avatar.png DJSchaffner: sometimes i remember to make screenshots to improve my solutions but i tend to forget that

Astrobytes: try to remember/write down the name instead

Astrobytes: easier to look up then

MasterCoderxD: hello

MasterCoderxD: I am back

JLukeSkywalker: wb

MasterCoderxD: ty

Default avatar.png RockyBal: Hey guys! Does anyone know what kind of material does the Technical Assessment test cover?

JLukeSkywalker: link to the test?

JamesModifiedGames: Hey MasterCoder. How is that new code going?

MasterCoderxD: which one brah?

Default avatar.png RockyBal: don't have the link yet but the title says Codingame Technical Assessment ... I'm wondering how to prepare if anyone can advice me on that, would really appreciate it

MasterCoderxD: James, u mean my programming language?

JamesModifiedGames: Yes

JLukeSkywalker: RockyBal: im asking where does it even say that

Default avatar.png RockyBal: Ohh it's a job interview I have

Default avatar.png RockyBal: But I have no idea what to prepare for it

Default avatar.png RockyBal: Thought someone might have some advice

JLukeSkywalker: that most likely has nothing to do with codingame, this is just the platform they are using. They might make you do like puzzles and or private clash, etc

JLukeSkywalker: I would practice by doing the practice section on here

JLukeSkywalker: most job interviews are probably in the medium to hard puzzle range, depends on the job though

Default avatar.png RockyBal: Thanks a lot buddy! That really helps

JLukeSkywalker: np, gl

Default avatar.png RockyBal: truly appreciated 🙌

JamesModifiedGames: JLukeSkywalker Could you help me with the power of thor episode 1. I solved the first testcase, but I don't know how to make it where it keeps testcase one and all the other ones.

JLukeSkywalker: you need to make your code so that it can solve any of them based on the inputs

JLukeSkywalker: you cant just hardcode up for test cast 2 for example

JamesModifiedGames: Would you be able to give me an example?

JLukeSkywalker: if your current position is above the targer, move down

JLukeSkywalker: if your current position is below the target, move up

JamesModifiedGames: Okay

JamesModifiedGames: And if your left go and and vise versa?

JLukeSkywalker: yep

JamesModifiedGames: okay thank you much

JLukeSkywalker: and you can also move diagonals

JamesModifiedGames: Like SE And SW

JLukeSkywalker: yeah

Astrobytes: and don't forget to update Thor's position when you move.

JamesModifiedGames: okay thank you

JLukeSkywalker: so if you are above and to the left, you would go SE

JamesModifiedGames: What do you mean Astrobytes

JLukeSkywalker: your current position isnt given

JLukeSkywalker: you have to keep track yourself

Astrobytes: You're only given his starting coordinates in the input.

JamesModifiedGames: So for testcase 2 his position is (31,17), so whenever he ends the run i would have to tell the system that his new position is (31,4). Is that what you mean?

JLukeSkywalker: if you move north you have to subtract one from your y

cooldude420: Hello guys, I hope everyone is having a great day!

JLukeSkywalker: then recalculate which direection to move in

Astrobytes: One step = 1 turn

Default avatar.png Dflat: hiii

JamesModifiedGames: OKay, that makess sense.

Default avatar.png O_mama: hello

Default avatar.png Dflat: yoo

Default avatar.png O_mama: hows life

Default avatar.png O_mama: bruda

Default avatar.png Dflat: yoyoyo great m8

Astrobytes: afk for a bit

Default avatar.png hieupm123: hello

Default avatar.png mustafaozx: hello

Default avatar.png mustafaozx: how can i see last clash of code

Default avatar.png ichwarsnix: click the bell in the upper right corner

Default avatar.png ichwarsnix: there you find all notifications, including coc you finished

ZarthaxX: AfkByto

Astrobytes: StealthaxX

Astrobytes: o

ZarthaxX: waddup

ZarthaxX: thought you put steal and i was gonna ask what did i steal

ZarthaxX: LOL

Astrobytes: :D Yeah all quiet here man, how's things for you?

PatrickMcGinnisII: I just found the mathematical way to solve Paving with Bricks, anyone else do it without backtracking and counting?

Astrobytes: HAven't done that one

ZarthaxX: i did a final exam 2 days ago and got the mark of a final exam i did on december the same day :P

PatrickMcGinnisII: main formula is on pg. 5

Astrobytes: Haha, get the result you wanted ZarthaxX?

PatrickMcGinnisII: have to modify for odd rectangles

ZarthaxX: yeeee double 10 baby

Astrobytes: nice!

PatrickMcGinnisII: Must be an A. American thing...;) hey zarthy

ZarthaxX: one of those subjects was algorithms and data structures 3, the last one of its kind

Astrobytes: PatrickMcGinnisII: I'm sure I came across that on SO or wikipedia

PatrickMcGinnisII: S. amer

ZarthaxX: no more algorithms for me

Astrobytes: Now you are MasterOfAlgorithmsaX

ZarthaxX: sax :P

Astrobytes: yes algorithm sax

PatrickMcGinnisII: huh, formula is on the wiki

ZarthaxX: i dont think so but it feels good to end that topic

PatrickMcGinnisII: but it doesn't tell you how to do odd rectangles

ZarthaxX: anyway, will have holidays with gf family in a couple days too

Astrobytes: Ah cool, time to relax a bit at least

Astrobytes: well - hopefully!

ZarthaxX: yee some beach and chill

ZarthaxX: i was in a hurry to finish this exam for that lol

ZarthaxX: anyway holidays with corona are strange

Astrobytes: Man I could do with some of that beach stuff. Instead we have 40 cm of snow.

ZarthaxX: im more of a cold guy so i would like to swap places

ZarthaxX: :rofl:

mr.idiot: oh hi

Default avatar.png Saad-py: hey hey hey hey

Astrobytes: I like the cold but... it's a bit toooo cold out there

Default avatar.png Saad-py: Wassup

ZarthaxX: how many degrees?

Default avatar.png Saad-py: Any one knows a good tutorial or website for all python inbuilt function cause instead of using ord I made a long list and LOL I was last

Default avatar.png Saad-py: Te question was some of ascii values of string

Default avatar.png Saad-py: or char

Astrobytes: only about -4 ish last I checked, but feels more like -9 or 10

JLukeSkywalker: there isnt really a way to learn all of those other than just doing puzzles on here and looking up ways to complete them

PatrickMcGinnisII: its 25C here

Astrobytes: was -22.9 up north last night

Default avatar.png Saad-py: Anybody watched Dream's manhunt finale

ZarthaxX: -22.9 O.O

ZarthaxX: okey that's WAY too cold lol

Default avatar.png Saad-py: maybe fahrenit

Default avatar.png Saad-py: e

Astrobytes: second lowest was back in 1995, -27.5

Astrobytes: No, C

Default avatar.png Saad-py: oof

Astrobytes: *-27.2, my bad

Default avatar.png Saad-py: Too cold eh

Astrobytes: Yeah, not great.

Default avatar.png Saad-py: you are a mod

Default avatar.png Saad-py: where do you live

Astrobytes: Excellent observation.

Astrobytes: Modland.

RoboStac: unfortunately mod powers don't let us control the weather :(

Astrobytes: I mean Scotland.

Default avatar.png Saad-py: I live in the UAE, its hot in here even in winters

Default avatar.png Saad-py: lol

Astrobytes: lol RoboStac

ZarthaxX: lol robo :rofl:

ZarthaxX: i mean you can wear clothes and all good i guess?

Default avatar.png Saad-py: how many programminglanguages do you guys know

ZarthaxX: it's not like when it's like 38 C

Astrobytes: Well I don't normally go around naked ZarthaxX!

Default avatar.png Saad-py: lol

Default avatar.png Saad-py: Why do people not share there code in clashes it is so helpful when they do and so frustrating and annoying when the don't

JLukeSkywalker: i shared

Astrobytes: It's not mandatory, sometimes if you message or ping them they might share with you

JLukeSkywalker: you didnt even try though

Default avatar.png Saad-py: i know but they others

Astrobytes: Why would you want the solution if you didn't at least try?

JLukeSkywalker: if you dont even try the problem and just hit submit instantly, you arent going to get better

Default avatar.png Saad-py: I do try to message them, they react like I am a 10 y/o asking for candy

Default avatar.png Saad-py: Like I always try BRUH

ZarthaxX: Astrobytes but you cant avoid hot like with clothes when its cold

Astrobytes: If you're failing at clashes, try doing easy puzzles

ZarthaxX: altho i could see you naked bb :*

Default avatar.png Saad-py: lmao

JLukeSkywalker: submitting 0% at 3 minutes in shortest is not trying

Astrobytes: True. Hahaha, wait til summer :P

Default avatar.png Saad-py: Which easy puzzles any links where can I fin it

JLukeSkywalker: just go do any of the easy puzzles


Astrobytes: No time limit

Default avatar.png Saad-py:

Tee-Resa: i love the easy puzzles...doesn´t take to much time :D

Default avatar.png Saad-py: The Descent was qquite easy though

Default avatar.png Saad-py: while True:

JLukeSkywalker: then do more or move to medium puzzles

Default avatar.png Saad-py: yeah thanks for your help everyone

Default avatar.png Saad-py: :) Love the help

Default avatar.png Saad-py: Never thought someone woud advice a 13 y/o like me

JLukeSkywalker: no-one cares how old you are, and wouldnt even know unless you say it

Astrobytes: Yes, it's not particularly relevant.

Default avatar.png Saad-py: How do I save my easy puzzles

JLukeSkywalker: saves once you press play

Astrobytes: The solution is saved when you play your code

Astrobytes: lol, I'm too slow today

Default avatar.png Saad-py: ok

Default avatar.png Gurp1272: Does anyone have a job coding with Ruby?

Astrobytes: No, she made the office smell like cheese and onion so I left.

JLukeSkywalker: got to rank 1 last submit, changed nothing, got to rank 250

JLukeSkywalker: damn rng

Astrobytes: Which game?

JLukeSkywalker: fantastic bits

JLukeSkywalker: bronze league currently

Astrobytes: Ah OK

ZarthaxX: that's normal, thought u meant legend lol

JLukeSkywalker: lol, i wish

Default avatar.png Gurp1272: I am clear for landing

Default avatar.png Gurp1272: Just thought you all should know that

Default avatar.png mustafaozx: hello there

Default avatar.png mustafaozx: how can i see last clash of code

JLukeSkywalker: after everyone finishes a link to the results will pop up in the notification bell

JLukeSkywalker: if you mean see the puzzle again, you cant. you can try to look it up here though:

Tee-Resa: solved weekly puzzle :D

JLukeSkywalker: gz

JLukeSkywalker: its a cool one

Tee-Resa: jeah, took a while for me...:sweat_smile:

Tee-Resa: haha, i needet 69

Default avatar.png dacsjc: kig ina

KiwiTae: hey o/ pewpew

Default avatar.png Audatic: the shortest code ones are a lot of fun but meaningless if you code in Java vs Ruby. Why don't you make them language specific? E.g. fix a language for each clash?

JLukeSkywalker: the code golf is language specific. clash is jsut supposed to be quick battles, you win some, you lose some

JLukeSkywalker: python is a useful language to know anyway, and easy. if you want to get shortest clashes, worth picking it up

Default avatar.png Audatic: okay I haven't seen the code golf section. And yes I do python for those but ruby beats me still :D

JLukeSkywalker: barely anyone uses ruby in clash, got up to position 100 with just python

Default avatar.png Audatic: well I only did 5 shortest ones so far, won 1 (no ruby) and lost 4 (all to ruby). But maybe the sample size is too small

JLukeSkywalker: if you get 2/8 and i think even 3/8 you will usually still improve your ranking

JLukeSkywalker: even if you didnt 'win'

Default avatar.png Audatic: yeah I got 2/8 but I need to win ;) Anyway will check out the code golf


struct: ofc there are a lot more tricks

Default avatar.png Audatic: can I see my past clashes?

JLukeSkywalker: CG has only 4 puzzles, but you are ranked based on your top 5 language submissions for each

struct: Only the code

JLukeSkywalker: shows on the results page, can get to that in your notification bell after everyone finishes

Astrobytes: Wonder why there aren't more golfable puzzles? I'm not massively into it but curious.

JLukeSkywalker: if you want to find the actual puzzle, you can look it up here if you remember anything about it:

JLukeSkywalker: just for practice purposes, you wont gain ranking or anything from doing it outside of clash

Default avatar.png AlmostAtom: question: is it normal that some test cases don't work anymore when using c++ and cout? third time for today that i always get answer "Nothing"... but when submitting i get 100%

struct: trailing spaces maybe

JLukeSkywalker: Astrobytes:I think because other than the solution (which is what normal puzzles are for) every CG problem ends up just being the same

Default avatar.png AlmostAtom: but shouldnt trailing spaces also be a problem when submitting?

Astrobytes: You mean system calls etc?

struct: yes

Astrobytes: and hi struct o/

struct: hi astro

Astrobytes: Is euler boycotting CG or something?

struct: idk

struct: Havent seen him online on discord either

Astrobytes: He came on earlier this evening, first I've seen him in 7 or 8 days

Astrobytes: Not seen him on CG at all

KiwiTae: maybe he got a life or smth :/

Astrobytes: Nonsense :P

KiwiTae: :stuck_out_tongue: hii Astrobytes

Astrobytes: hey hey Kiwiii

KiwiTae: im missing 2 silver badges :/

KiwiTae: :joy:

Astrobytes: Fix it

KiwiTae: loool are u Maddy

Astrobytes: No, it's just a CG meme nowadays.

KiwiTae: (╯°□°)╯︵ ┻━┻

Astrobytes: MK statements have become canon

Astrobytes: This is what happens when you're not here often enough, you miss things :P

KiwiTae: i know :3 been too busy partying

Astrobytes: Taiwan gets parties, we don't eh

Astrobytes: Least you can't party now you're in France :P

KiwiTae: yea.. :'(

KiwiTae: I miss nightclubs :grin:

KiwiTae: karaoke parties :'(

KiwiTae: ><

MSmits: you can do a solo party


KiwiTae: :joy:

Astrobytes: "Highly rated disco balls"

MSmits: yes, I am guessing they are much flashier than the low rated disco balls

MSmits: those are basically just balls

Astrobytes: Or rounder

MSmits: sure, that too

Astrobytes: You could start selling them on the Unity store

MSmits: yeah

MSmits: I still get about 1 dollar a month from my sphere :P

MSmits: it was 1 afternoon of coding

MSmits: imagine how much money i could have made if I had spent my time doing unity stuff :P

Astrobytes: You should do more, in between bots and meta-mcts

Astrobytes: might get $5!

MSmits: yeah. Maybe after I am done with my studies

Astrobytes: Oh yeah, almost forgot about those

KiwiTae: you made unity asset?

MSmits: I got a 9 out of 10 for game design btw

MSmits: yeah KiwiTae

MSmits: only 1

KiwiTae: oh cool

Astrobytes: Ah excellent MSmits


MSmits: has some nice reviews too

MSmits: wow it's 5 euros now

MSmits: i guess they upped their minimum cost

MSmits: I had it at 1 euro at first

MSmits: sometimes i get mails form unity. I always ignore them :P

KiwiTae: thats nice

KiwiTae: I am thinking of putting some stuf on ue4

struct: Is email public by default?

struct: I can see it and im not even logged in

MSmits: yeah Iguess I need to change that

Astrobytes: Too late, we've sent our botnets to Innoble

MSmits: lol

MSmits: well I completely redid my uttt bot

MSmits: it's a completely new bot. Did almost everything differently

MSmits: and now I basically have two bots that are rank 3-4 :P

Wontonimo: oh,

Astrobytes: :rofl:

Wontonimo: almost everything different .... i was going to ask what's the major change

MSmits: i didnt submit it, but it has the same winrates, more or less

Astrobytes: Well, the proof of the pudding is in the eating so submit it

MSmits: very heavy expansion function with massive pruning

MSmits: only 50-60k rollouts

MSmits: very heavy rollouts too

MSmits: i am not yet done with the bot so not submitting

Wontonimo: i'm curious if it has a different place in the RockSissorsPaper landscape of various bots

MSmits: i migth just take what i learned with this bot and improve my other one with it

Astrobytes: doesn't j acek do quite heavy rollouts on uttt? OR was that someone else

MSmits: i think he does

MSmits: mine are much heavier i am sure

struct: he had low number of rollouts

Wontonimo: interesting ... how many rollouts was your other bot?

Astrobytes: Yeah, due to heaviness iirc

struct: but he didnt really said how he measured them

Astrobytes: Always an issue

MSmits: the fastest version had 130k, the one i currently have on the leaderboard 90k

MSmits: I also used some avx in this new bot

struct: just for wincheck?

struct: or somethign else'

MSmits: several things

MSmits: also generating available moves

Wontonimo: nice

MSmits: check end of game for both players at once

MSmits: testing for dead boards

MSmits: boards that arent ended, but can only draw

struct: I see

struct: you load the current board into _m256

struct: and then check

Wontonimo: do you think there's a chance that a draw is sometimes your best option?

struct: right?


MSmits: board 1 and 2 are player and opponent

MSmits: Wontonimo how do you mean?

Astrobytes: oddly enough, I was looking through these avx instructions earlier. Very cool.

Wontonimo: is there a situation where your opponent could win, but you cant and a tie is your best option?

MSmits: definitely

MSmits: well thats true almost by definition

MSmits: if you cant win and your opponent can, then a draw is your best option, bot on a miniboard and on the bigboard

MSmits: unless giving up the miniboard to a loss benefits you in the overall board

MSmits: as for draws in general. a draw is basically a win for player 2

Wontonimo: so when you trim draws, how do you prevent giving a win to the opponent?

MSmits: trim?

Wontonimo: i must have misread. ... "testing for dead boards boards that arent ended, but can only draw"

MSmits: let me give you an example, sec

Wontonimo: i read that as trim

struct: union { __m256i boards256; __m128i boards128[2]; };

boards128[0] = _mm_set1_epi16(board1); boards128[1] = _mm_set1_epi16(board2);

struct: There should be a better way for this

struct: _mm256_inserti128_si256(_mm256_castsi128_si256(lo),(hi),1)

struct: // Join two 128-bit vectors

  1. define set_m128ir(lo,hi) _mm256_inserti128_si256(_mm256_castsi128_si256(lo),(hi),1)


MSmits: = dead board

Default avatar.png komple1: is there a rank system in website?

MSmits: struct let me see

Default avatar.png komple1: i mean in clashes

Wontonimo: ah, on the mini boards. I see. thought it was for the overall game.

MSmits: no just the minis

MSmits: it's useful information to have

Wontonimo: super! i like it

Wontonimo: it's someting i havent addressed

MSmits: if a board is dead, it doesnt matter which square on it you play, if they all lead to a finished board

MSmits: so you only allow 1 such move

MSmits: prune the rest

MSmits: uttt has tons of these little ways to prune

MSmits: but it's pretty expensive

MSmits: dont know what this does struct

MSmits: _mm256_inserti128_si256(_mm256_castsi128_si256(lo),(hi),1)

MSmits: you insert two at once?

MSmits: and it's faster?

struct: I dont know if its faster

struct: I just copied it from the library

MSmits: ah ok

Wontonimo: i did toy with a heuristic to prefer moves that narrowed the opponents choice. yeah my current bot is in silver, but it made a significant difference. It was a computationally cheap check. I'm scrapping that python bot ... very close to having v1 of my bitboard cpp bot done

MSmits: i actually tried a negative childmax bias

MSmits: to give a selection bias to nodes with a lot of children

MSmits: this would penalize moves that lead to a free move as well

MSmits: but it didnt work on my new bot

MSmits: i have -0.15 penalty on my leaderboard bot for free moves

MSmits: on selection. That helps a bit

MSmits: didnt work for my new bot

MSmits: only shows how these things interact with other parts of your bot

Wontonimo: yeah, for sure



MSmits: ok so it works

struct: yeah, im just not sure if its faster

MSmits: i would still have to union it

MSmits: because of the last line where i do the comparison

MSmits: with the zeros

MSmits: it's sad i cant do one for 256

MSmits: instruction doesnt exist

MSmits: some 256 instructions that could be useful do exist, but need avx 512

struct: None of the test ones works?

MSmits: hmm for 256?


MSmits: mmh which one should i try?

MSmits: not sure what that ZF and CF stuff means

struct: one sec

Astrobytes: CG uses Haswell arch only?

struct: yes

YurkovAS: zf: zero flag cf: carry flag

MSmits: ok, but what is the carry flag used for?


Astrobytes: when you carry a bit in an arithmetic operation

Astrobytes: yeah, that's a better explanation than mine :D

MSmits: ah, right

struct: !_mm256_testz_si256(boards, _mm256_set1_epi16(1))

struct: I think its this?

struct: or without the !

MSmits: isnt this the same as using !_mm256_testz_si256(boards,boards)

MSmits: you dont need to set the 1's

MSmits: if I and it with itself, it is its own mask

struct: I think so

MSmits: I'll try

MSmits: I'll probably notice when it starts solving wrong, if it doesnt, then its probably working

MSmits: yeah it's solving wrong :P

MSmits: wait, maybe i needed to remove the !

MSmits: so far so good


MSmits: seems fine

MSmits: I like the early solving i often get

MSmits: with this new bot

MSmits: now the goal is not to solve as a loss all the time vs the top 2:P

Astrobytes: Well, at least it's accurate!

YurkovAS: you has more rollouts than tomatoes?

MSmits: though sometimes i solve as a loss and then the next turn i solve as a draw because re curse made a mistake. I love that :)

struct: And it should not be slower

MSmits: this bot has only 60k rollouts YurkovAS

struct: Do you notice any performance diff?

MSmits: it's very heavy on expansion pruning and random rollouts

MSmits: it wasnt a bottleneck struct so i cant really test

struct: ah ok

MSmits: but it has to be at least as good

MSmits: so thanks

struct: np

Astrobytes: Probably wouldn't be noticeable with such heavy pruning/rollouts

MSmits: well it's part of the pruning. Basically, on every expansion I test all playable boards for being dead boards

Astrobytes: Ah, yeah, no bottleneck, chat lag

MSmits: I could optimize it a bit more ofc

Astrobytes: Yeah I get your pruning

MSmits: also I don't have any end of game checks in my bot anymore. I never check 3 in a row

Astrobytes: Yesterday you were pruning too much

MSmits: I check if a 3 in a row is possible for the opponent if i play a move

MSmits: and if it is, i dont play the move

MSmits: i do the same thing with connect 4, i never check for 4 in a row with that. I just generate winning moves and make sure the opponent doesnt get them

MSmits: and if no possible moves are left after that, I lose

Astrobytes: lol

MSmits: so games are never won, only losts

MSmits: it makes it so that when you get a free move. You eliminate all moves that would make your opponent win the next turn

Astrobytes: Well, something isn't right for your UTTT since you are not first :P

MSmits: ah well re curse isnt here, so someone else had to say that :p

Astrobytes: hahaha

MSmits: you're right, but I have plenty of stuff to try, I have to simplify my bot a bit. I am up to 2k lines with this new version

MSmits: I also think there's a lot to experiment with in the random rollout

MSmits: when to always take a win, when to avoid free moves

MSmits: I currently have it to always take wins and always avoid free moves otherwise. Thats probably not optimal

Astrobytes: Isn't this why people use ML to tune these things... :P

MSmits: It's interesting that re curses bot and kar liso's bot are both equally strong

MSmits: sure re curse wins with a 60% winrate vs kar liso

MSmits: but thats mostly RPS i think

MSmits: all my bots do worse vs kar liso

MSmits: so it's definitely possible to beat his NN with a regular bot

Astrobytes: Most probably. I can't remember much about karlis o's uttt bot tbh

MSmits: he has a reasonably heavy rollout and good performance

MSmits: i think he experimented a lot with the rollout

Astrobytes: Well OK I know that :D I remember him talking about the details one dayt

Astrobytes: *day

struct: There are only 16 dead boards?

MSmits: he has many different functions depending on the stage of the rollout

MSmits: i think

MSmits: 16?

Astrobytes: Yeah something along those lines

MSmits: nah, has to be way more

MSmits: they dont all have 1 square left either

MSmits: some habe 2

MSmits: i found one with 3 squares left

MSmits: it's a bit hard to figure out, but let me try

MSmits: mmh probably not 3

struct: Any reason why your function only takes 16 boards?

MSmits: ohh

MSmits: now i understand your question

MSmits: there are 8 win masks

MSmits: and i use them for 2 players

MSmits: 8 ways to win

struct: ah I see

struct: Did not notice that it was same mask repeated twice

MSmits: having a hard time to come up with many dead boards btw

MSmits: seems like every one i found only has 1 square left.

MSmits: there's still a lot of those, but maybe i can code it better

reCurse: struct can you come up with some other game to distract him?

darkhorse64: Play fireworks, there is no search and no bitboards, just ifs

MSmits: :grin:

MSmits: hey, you're the one who steers people my way when they have uttt questions. Don't act all surprised when they get me addicted again :

MSmits: :P

reCurse: ?

MSmits: I remember someone asked you questions and you said something on the order of go ask msmits :)

MSmits: it's like offering a beer to an alcoholic

reCurse: Not sure I recall

MSmits: it's fine either way. I kinda enjoy this uphill battle of trying to beat a NN and whatever monster karliso created

reCurse: Don't make me backport all my improvements back to uttt

MSmits: mmh you've been busy then? Uttt was not that long ago

reCurse: uttt->bt->othello->checkers

reCurse: Each one had improvements I have not backported

MSmits: ahh ok

MSmits: but they would have to be improvements that would be more than just shortened training time

struct: oh you got rank 1 on checkers

struct: nice

reCurse: Yes I did take care of not talking nonsense this time

MSmits: kk

MSmits: well I'll let you know when you need to backport :P

reCurse: struct, does it go faster if I paypal you

struct: lol

struct: just give me a game and ill port

reCurse: Well no finding the right game is part of the job

MSmits: struct think of all the income you missed this last year distracting me

MSmits: hey reCurse, i wonder, how do you know if these improvements are game specific? Or did you change things that are provably better?

MSmits: because you might change something, get an improvement, but it might just be for that game

MSmits: obviously i dont know what the nature of the changes were

reCurse: Well yeah naturally, but I have good reasons to think they are either domain-agnostic or would apply to uttt as well

MSmits: ah ok

reCurse: And I can't use this pipeline anymore, need to come up with better, 55% gpu usage pains me.

MSmits: isn't it just a time issue? Do you have it running all the time?

reCurse: Sure

MSmits: iwould be happy if my gpu wast running 100%

MSmits: the things tend to melt

reCurse: But I just spent good money on a gpu I'm not maxing out

reCurse: It's wrong

MSmits: it may live longer if you dont max it out

reCurse: Citation needed

MSmits: i'm no expert but i melted some gpus when i was still gaming

reCurse: Could be a number of things

struct: how?

MSmits: may just be a fabrication error, dust, or something else

reCurse: The only time I killed a gpu is because it was amd

reCurse: Not making that mistake again

MSmits: one time the temperature thingy told me 105 degrees Celsius

MSmits: was dead soon after

reCurse: Well yeah it's not supposed to go that far

reCurse: Doesn't matter the usage

reCurse: Something was faulty

MSmits: probably

MSmits: but these things do have wear and it would not surprise me if they wear out faster with full usage

YurkovAS: time to submit "dead boards" solver 78.10% 8.60% (new vs best) 73.50% 11.30% (best vs new)

reCurse: This claim requires matching evidence

MSmits: it actually works YurkovAS?

YurkovAS: joke :smiley:

MSmits: i just took out part of that code

MSmits: lol

YurkovAS: by statistic is real

struct: Doesnt the wear only lower clock speed?

MSmits: no idea, I am just guessing

MSmits: reCurse is right, you need evidence to say anything conclusive

reCurse: There are so many factors in play to killing electronics

MSmits: YurkovAS I think your stats might be a random fluctuation, because now that I think of it, the dead boards thing doesnt even work for a single board move

MSmits: if there is only 1 square left, it doesnt prune anything

YurkovAS: MSmits i'm change final stage for find best child node of root: find child node with max visits, to: find child node with max score (wins / visits)

YurkovAS: and test in brutal tester, n = 1k

MSmits: i always take max score, but never did much experimentation

MSmits: most of the time max visits will be identical to max score

reCurse: :raise_eyebrow:

MSmits: the exception is when your bot discovers a new deep line of play that raises the score of 1 child a lot but it doesnt have enough time to increase visits

MSmits: because calculation time is almost up

MSmits: something like that anyway

MSmits: but it works both ways, either picking visits or score can give a bad choice

MSmits: there are some variations like "most robust child" that use a combination of both I think


MSmits: this gives some options

YurkovAS: thanks

MSmits: I guess I should just run some CG bench and try all these. Im curious to see if it even matters

MSmits: it's hard to find things in uttt that matter :)

reCurse: Only thing that matters is the way out

MSmits: there is no way out

Astrobytes: A sentence to live by if I ever heard one.

RockNTroll: Anybody here making way too much money coding?

Wontonimo: yeah, it's a real problem

RockNTroll: yeah how do you fix it

Wontonimo: spending time on CG and not work

RockNTroll: really?

RockNTroll: you look very old

Wontonimo: well, eventually deliverables will be missed if I keep at CG

Wontonimo: this may shock you, but it's not an actual picture of me

RockNTroll: wtf how

ZarthaxX: that's shocking

Wontonimo: i know!

ZarthaxX: :rofl:

RockNTroll: Why would you do that

Wontonimo: he is my spirit animal

RockNTroll: that's so cool

Wontonimo: looks like he's suffered scurvy but could still gut you if needed

RockNTroll: Does he make a lot of money coding?

RockNTroll: I see

Wontonimo: hmm, vscode just crashed on me for the 4th time today

Wontonimo: it don't like uttt

RockNTroll: too bad

Wontonimo: ugh, random playouts called from one section of code works just like fancy pants, and another section always returns a draw. same code, called from two different places

Wontonimo: it took an hour and a half, but I found the root cause of the error. It was between my keyboard and my chair

Wontonimo: note : if you don't initialize your lookup cache, it won't be initialized

Wontonimo: 20k rollouts in 0.096s on my pc. Getting closer. Way better than my python implementation of 600 rollouts in 0.1 sec