From CG community
Jump to navigation Jump to search

LelouchVC2: @reCurse

LelouchVC2: Lets do clash :D

perseverent: can you reach legend in UTTT with minimax?

perseverent: I only heard of mcts bots there

perseverent: does minimax stand a chance?

AntiSquid: i see kaggle is more cultured than CG:

pb4: perseverent : yes

Key_Zhao: I start 2048 scores now :grimacing:

Default avatar.png Dessert: Hello guy! I just start use this website. I just sstart learn coding.

LelouchVC2: Bot programming was fun since it was a big competition, but it's not really my thing :(

LelouchVC2: I'll check out code golf I guess

Astrobytes: Sure, not every category suits everyone :)

LelouchVC2: And not all black lives matter

LelouchVC2: Finally, someone who gets it

LelouchVC2: "Binary is good! But unary is much better!"

LelouchVC2: Said no one ever

Uljahn: 50 shades of unary, Automaton2000

Automaton2000: u will be able to reach legend in csb

LelouchVC2: If you use 0s and spaces in unary

LelouchVC2: Then it's basically binary

jacek: good for you

Default avatar.png Kelaric: Start learning english kappa

struct: Hello

Astrobytes: Hi struct

struct: Othello already has more players than Yinsh :p

Astrobytes: lol yeah I saw that

struct: The rules are simple so I guess that is the main reason

Astrobytes: Probably, "simple to start, hard to master" right :P

LelouchVC2: Kinda like knowing when a woman is giving off the right signals or not

LelouchVC2: You dont wanna lean in and get slapped

proglath: salut

WINWINWIN: Hi proglath

daffie: what is the time contraint on the weekly

daffie: also I'm getting a strange error saying my code did not read all of the input, and it says this even for the default code provided for javascript

daffie: oh nvm that error I fixed

Hjax: i check on my pr2 bot, 151 straight games against siman

Hjax: holy submits batman

eulerscheZahl: congrats

struct: just get 100% win rate vs him

struct: than you will be 1st

eulerscheZahl: meanwhile i only have 30 matches in my history

jrke: hey i wanna ask that boardsize is always same

struct: yes

eulerscheZahl: board size on which game?

Astrobytes: On Othello? Yes

jrke: othello

struct: I saw him submiting on othello

jrke: :)

Hjax: i should write a postmortem i guess

Hjax: my bot is basically just munkres though

eulerscheZahl: that's fully optional

eulerscheZahl: not even some Kuhn in it?

Hjax: lol

Hjax: i probably could have ranked a bit higher if i had fixed an issue with my assignment

struct: Is the contest over'

Hjax: right now i assign 1 pod per target

struct: ?

Hjax: yeah its over

Hjax: but with 1 pod per target, the leftovers dont have anything useful to do

Hjax: i finished 7th on contest, 31st on multi, and 3rd on progression

Hjax: not too shabby

eulerscheZahl: contest ends in 2.5h

eulerscheZahl: but i know nothing about quantum computing, so i won't submit

eulerscheZahl: RIP random tshirt

Hjax: oh different contest?

eulerscheZahl: oh, which one were you talking about?

struct: pr2


Hjax: yeah pr2 ended like 6 hours ago

jrke: i ended 19th unofficial rank

eulerscheZahl: the actual contest is next week. this is the practice round

jrke: On codeforces

struct: I didn't join pr2, I don't like hex grids

struct: :)

Astrobytes: :P

Hjax: are hex grids really any different from square grids?

Hjax: my bot doesnt even care what kind of grid its on, it would work fine on a square grid

Nerchio: i think they differ quite a bit you can't use a 2d array for it

struct: you cant?

Nerchio: i mean you can but you need transformations on it

Hjax: my silly python bot just used dictionaries to hold everything

Hjax: pr2 didnt seem very speed intensive, so python was fine

struct: I dont know how pr2 grid work though

struct: havent checked

struct: On yinsh I used 2d with transformation yeah

struct: on Yavalath I did a mess

Hjax: your initialization input was all of the tiles on the map and a list of their neighbors

Astrobytes: Just had adjacency list for PR2

Hjax: so i just stored that in a dict, easy lookups

Hjax: i still think its hilarious that python can just import munkres

Hjax: dont even have to implement it yourself

Nerchio: loool really :D

Nerchio: did you use it?

Hjax: yeah

Nerchio: nice!

Hjax: thats probably my bots only strength

eulerscheZahl: i had to copy from github when i needed it for code of ice and fire :(

eulerscheZahl: first try: too slow

eulerscheZahl: second try: lightning fast but giving incorrect results

Nerchio: you don't need to create a matrix for it or something?

eulerscheZahl: then i found a java code and ported it. that one did the job

Hjax: yeah my cost function is just distance - plat /distance

Hjax: i create a matrix of that cost for every pod with every target

Hjax: and throw it into scipy

Hjax: and boom, nice mappings

Nerchio: I need to try and implement this one day :D

Nerchio: atm I still don't get what you are mapping to what

eulerscheZahl: see

eulerscheZahl: different game, same idea

eulerscheZahl: for PR2 i would create multiple imaginary nodes for each real node. reward dropping the more pods you move there

Hjax: @Nerchio i have a bunch of places i want to send pods to, and i want to send pods in the most efficient way possible

eulerscheZahl: as kuhn-munkres generates 1-1 matches

Hjax: munkres just calculates the most efficient mapping

Hjax: relatively quickly

Hjax: assuming you consider O(n^2) quick i guess

Default avatar.png Jonathan_Skywalker: How to solve this in Python

Hjax: n^3*

Hjax: oh thats kind of clever eulerscheZahl, i want to try that now

Hjax: i didnt consider that

eulerscheZahl: i'm surprised, how did you handle it then?

Hjax: thats what i was saying earlier, i only send 1 pod per target

Nerchio: euler so just find X hexes, Y cells, calculate score/cost for them and thats it?

eulerscheZahl: oh

Nerchio: and make the matrix square

Hjax: my extra pods move towards the closest target to them

Hjax: which isnt great

eulerscheZahl: yeah, that's all you need Nerchio

Nerchio: that's... relatively simple ;p

eulerscheZahl: it is

eulerscheZahl: if you copy the actual algo and don't code it yourself

Nerchio: code of fire and ice is on my future to-do list :D

Nerchio: ice & fire xD


eulerscheZahl: that's where i copied it from

eulerscheZahl: comment in my code, thanks eulerscheZahl from the past

RyanTuplin: come join got 22 people playing clash XD

Nerchio: better not make the matrix too big xD

eulerscheZahl: yeah, O(n^3) has some limitations

Hjax: plenty fast enough for the biggest maps in PR2 though

eulerscheZahl: except if you go for the lightning fast but incorrect implementation that i found

Nerchio: lol

Astrobytes: lol, speed > correctness

eulerscheZahl: i guess scipy is more optimized than what i found

Nerchio: Hjax but how many cells did you calculate ? all of them for all pods?

Hjax: my targets are: any tile that ive seen but not visited, or any tile my opponent owns

Nerchio: I don't believe this :D

Nerchio: okay

Nerchio: makes sense

Nerchio: then Matrix isn't that big

Hjax: and i throw away useless tiles, dead ends with no platinum

eulerscheZahl: do you use symmetry in maps to find platinum faster?

Hjax: nope!

Nerchio: I would need this algorithm only for nearby tiles for my pods

Nerchio: not all of them

Nerchio: I also didn't use symmetry to find platinum faster

Hjax: my bot is pretty barebones, i intended to improve it over the weekend, but i got lazy

Hjax: its only about 200 lines of python

Nerchio: Im not sure how I would find symmetry on a hex map which hex corresponds to which

eulerscheZahl: the ID assignment is key here

struct: I think yavalath is a bit different

Nerchio: yeah euler I guess I would need to decode id assignments :D

Nerchio: which is something I am not a fan of


Nerchio: it would be possible to compute it too but my computer would explode probably

Hjax: man how many games have ID abuse

Nerchio: :D easy enough

eulerscheZahl: and

Hjax: unleash the geek all over again


eulerscheZahl: i do a little more, e.g. check if my base is symmetric to opponent base. but it's really not that much

eulerscheZahl: and definitely helped me to climb some ranks

Nerchio: I just did

Nerchio: if my neighbours in distance X is less than his neighbours in distance X then my position is shit

Nerchio: it doesnt take platinum into account since there is fog of war

Nerchio: so not always true :D

eulerscheZahl: but a good estimate if you include you own + opponent base

eulerscheZahl: if gain > loss, it's worth it

Nerchio: I tried to judge the maps that are not worth playing out on one side

Nerchio: rushing in that case is better than trying to win

Hjax: oh i noticed you rushed me on some weird map Nerchio, i was wondering why

Hjax: your bot was just like, this map sucks

Nerchio: yep im not playing it :D

Hjax: i ran some tests, on the most unfair maps rank 900 beats rank 1

Hjax: kind of silly

Nerchio: yeah some maps were too broken

Nerchio: but i tried to turn these little-broken into wins against players outside of the very top

Nerchio: poor Illedan


Hjax: lol

Hjax: my bot generally has pretty good rush defense

Hjax: it only messes up if it loses vision of the rush

Hjax: which i never got around to fixing

Nerchio: Neumann


Nerchio: see its not a bad strategy :p

Hjax: yeah i like it

Hjax: i might copy it

Nerchio: you turn a probable loss into a sometimes win - sometimes draw - sometimes lose

Nerchio: thats a good trade :P

Hjax: yeah

Default avatar.png mohammad_alrefae: hi

Neumann: That's the equivalent of a 6-pool

Neumann: Shameful

Hjax: im not sure if you know or not Neumann, but nerchio is a very good zerg player

Neumann: I'm aware of that

Hjax: do you play starcraft too? :D

Neumann: Yup

struct: starcraft port when?

Hjax: we already have A* Craft

Hjax: what else could you ask for

Neumann: Not the same level tho

Hjax: im a gm toss player on the NA server, also cant hold a candle to him

Neumann: NA GM ? Like EU Plat ?

reCurse: Uh? I thought it was just a coincidence.

reCurse: So it's the actual Nerchio?

Hjax: yeah

struct: yes

Neumann: reCurse: y

reCurse: I remember watching your games a long time ago. Nice

struct: I saw him typing on a CG stream once with his twitch account

Hjax: i asked him during pacman when i saw him here

Hjax: @Neumann hey give me some credit, at least EU diamond

Hjax: :P

Neumann: jk ;)

Hjax: i have a few good wins against decent pro players, i beat TRUE in a clanwar once, thats my best achievement

Neumann: Clean

Hjax: not going to lie, i had some amount of pride in being the best starcraft player thats active on this site

Hjax: Nerchio took it away from me D:

Nerchio: rip your title Hjax :(

Hjax: youre too gosu

Nerchio: also winning with protoss is not very difficult Hjax

reCurse: :popcorn:

Hjax: oof

Neumann: Terran ftw

Uljahn: rush with Automaton2000s

Automaton2000: all test cases but when i want to have the same feeling

WINWINWIN: People are still focussing on PR2? I thought that it would be forgotten by now :P

Astrobytes: Just discussing their approaches 'post-contest' WINWINWIN

reCurse: Largely underrated game

Astrobytes: Yeah, I hadn't played it until thibpat's contest. 10/10 will go back to it.

WINWINWIN: Yes, was quite interesting but among the least participation

reCurse: It's not official so it's unrealistic to compare

WINWINWIN: I meant purely as a multi, onlt 1.7K participants vs the common 2.5K

reCurse: Wasn't it the second multi ever on CG?

reCurse: Not so bad

reCurse: Population back then was nothing like now

WINWINWIN: CSB first, then PR1 then PR2?

reCurse: Uh no.

WINWINWIN: If CSB wasnt the first, why the big hype around it?

reCurse: Because it's part of onboarding and it's successful in the "easy to grasp but hard to master" category

reCurse: I was also wrong, PCR, GOD and Tron preceder PR.

reCurse: *preceded

WINWINWIN: Understood, I checked it, CSB was pretty recent

Astrobytes: Was GoD first or Tron?

reCurse: Tron

Astrobytes: Ah right

WINWINWIN: Were you all on CG back then?

reCurse: No I joined around Hypersonic

Astrobytes: I wasn't, joined up in 2015 but didn't compete until Code Royale

reCurse: Well I actually joined before CB but I didn't even do multis back then. I just stumbled on CG because someone posted about CoC somewhere else.

reCurse: Thought it was kinda dumb but I liked the puzzles so I stayed

WINWINWIN: So you won a contest on your 4th attempt?? Wow!

Astrobytes: Yeah, I had no clue about the competitions or I would've tried to participate sooner. Was a busy period of my life though, didn't have much free time

reCurse: 5th attempt. The Accountant doesn't show for some reason

reCurse: Only shows when it's your own profile

reCurse: I'm guessing it's some stupid legal reason

WINWINWIN: Still.. amazing

reCurse: I'm just salty I didn't win FB :P

WINWINWIN: :D I saw the postmortem "Large lead" but Magus released his GA too late

Magus: in fact, pb4 discovered a massive bug in it's code after the contest

wlesavo: hm, i can see the accountant on your profile

Magus: something like it's AI during the contest can only pick an angle between 0 and 255

Magus: (instead of 0 to 359)

Magus: there's a big chance that i am just lucky

WINWINWIN: Probably that you may not need to turn around completely that often?

MostComplicatedUsername: Someone should make a blokus multi

MostComplicatedUsername: :D

daffie: whats tht

MostComplicatedUsername: blokus is a board game

Astrobytes: Just looks like really slow Tron

Nerchio: cant play accountant anymore?

struct: nope Nerchio

Nerchio: feelsbad

Nerchio: what was it about?


struct: Basicly enemies tried to collect data points

struct: The shot dealt damage based on distance

struct: closer = more damage

struct: If you are in N range from enemy you die

struct: Enemy moved to closest data point or to you? cant recall

struct: ok, always moved to closest data point

struct: you got score based on data points left

struct: Not sure if shots fired aftected score


reCurse: Oops

reCurse: Anyway that's the bonus

reCurse: Data survival is 100 points and 10 points per kill

reCurse: Was pretty fun, I also ignored all the evils of optim games back then

eulerscheZahl: coding for validators instead of playing the actual game? or what evils?

reCurse: Yeah that

reCurse: Many contestants were just running a MC and spam submit

reCurse: Hope for the best

eulerscheZahl: that's mostly a CG exclusive problem

reCurse: Oh I know

reCurse: A*C solved it for a contest format

reCurse: Too bad they didn't do that for a $10k contest :P

eulerscheZahl: still too few validators for a stable ranking

eulerscheZahl: but so much better than TAC

struct: They should run hidden test cases at end of contest right?

reCurse: Yes that's what A*C did

struct: Were players warned of this?

eulerscheZahl: i even thought about semi-hardcoding (checking for transformations/rotations of known testcases and such)

reCurse: Only for hardcoding

eulerscheZahl: but didn't do it in the end

reCurse: T1024 extracted all validators, got DQed for it

eulerscheZahl: not correct reCurse

reCurse: ?

eulerscheZahl: he tested different random seeds

eulerscheZahl: if (datapoints.count == 12) seed = 241

eulerscheZahl: something like that

reCurse: Ok my memory failed me

reCurse: Still hardcoded against validators

reCurse: Just not as accurately

eulerscheZahl: optimizing the randomness. still solving online

struct: reCurs is your STC NN or no comment?

reCurse: Wouldn't you like to know

eulerscheZahl: i bet against NN

struct: Yeah :)

struct: I was think is not NN but wanted to be sure

eulerscheZahl: the top wasn't that strong for STC. i was 3rd without any kind of opponent prediction

reCurse: Ehh I beg to differ

eulerscheZahl: and a minimax-ish algo to it. that might already to the trick

reCurse: Was no cakewalk

eulerscheZahl: that impressive lead wasn't easy for sure

reCurse: Going even against top 3 was already quite some work

reCurse: Also probably hardest legend boss of CG

eulerscheZahl: i'd like to disagree

reCurse: On which part

struct: I also think it's the hardest, but I haven't played many

eulerscheZahl: on the other hand: i really struggled with UTTT and wondev woman legend. but league size says that they aren't that hard

eulerscheZahl: "hardest legend boss" part

reCurse: Ok

struct: for me UTTT boss was no problem

eulerscheZahl: by league size coders of the caribbean is a tough boss

reCurse: Size does not matter :P

reCurse: % maybe

reCurse: But even then

eulerscheZahl: PCR wasn't that hard

eulerscheZahl: still small legend

eulerscheZahl: let's just agree that Tron is an easy legend then ;)

reCurse: Sure

eulerscheZahl: at some point illedan struggled reaching STC legend, even complained about a boss boosted too much

eulerscheZahl: gave him my code. he cancelled the submit at 5 points above the boss :D

reCurse: Top 3 legend steamrolling the gold boss, what a surprise

eulerscheZahl: top4 :(

reCurse: rip

reCurse: Well back then :p

eulerscheZahl: and back then i had a worse bot. and in C#

reCurse: I dunno you need good sim and good heuristic. Usually it only requires a strong of either one.

reCurse: Like UTTT you just need an optimized vanilla MCTS

reCurse: Don't even need to care about understanding the game

reCurse: Not that there's anything to understand about UTTT

reCurse: And now saying UTTT 3 times I woke up MSmits

reCurse: fffff

Snef: lol

eulerscheZahl: self-play worked surprisingly well on STC for me. param tuning

reCurse: Well like you said opponent interaction is minimal

eulerscheZahl: UTTT turned into countering other players rather than playing the game at the very top i think

eulerscheZahl: adjusting opening books when losing doesn't sound that interesting to me

reCurse: It's the perfect case against no random in initial state

reCurse: It always ends in opening books

Snef: well if you don't have book you can't be countered right ?

eulerscheZahl: only if you have some randomness

reCurse: You don't need to be countered if you're rank 20

AntiSquid: in the "low ranks"

struct: Yeah, same happened on Yavalath

struct: same might happen on Othello

eulerscheZahl: "might"

struct: :(

reCurse: There's Othello now?

struct: yeah

eulerscheZahl: yes, since 2 or 3 days

eulerscheZahl: 3 approval votes, 1 refuse

AntiSquid: the 8x8

AntiSquid: who refused ?

Hjax: why would someone refuse it

Scarfield: 1 refused?

Hjax: it seemed really nice

reCurse: Didn't think I'd reach the point where I have more unstarted multis than started ones

reCurse: Yet here we are

AntiSquid: maybe graphics weren't sparkling


struct: Don't worry about the refusal, me and him talked

struct: and it's fne

Astrobytes: It was kind-of a temporary refusal, after some discussion we got the reasoning

struct: fine*

reCurse: Well Othello is definitely headed that path then

struct: also astro

reCurse: If I was doing Chess for instance, I'd just randomize from a known opening book.

Astrobytes: Which was nice actually

AntiSquid: but comment section shows other rejects

eulerscheZahl: you can write an X without refusing

Astrobytes: No, they're trolls

AntiSquid: ah :/

AntiSquid: i see

AntiSquid: that's not nice

reCurse: Like they do in TCEC

Hjax: TCEC is cool, it would be cool to have chess on this site, but computer chess is so overdone i feel

Hjax: so many strong open source programs

struct: So the game starts from a given position?

reCurse: It's more for the learning experience than coding really

Hjax: the game starts from a given intentionally unbalanced position, and the engines play both sides @struct

reCurse: Err

reCurse: *than competing really

reCurse: There might be some untapped ground in the 50ms/move domain

Astrobytes: Yeah, I find the board game stuff useful for learning

reCurse: Who knows

Hjax: chess is very draw heavy if you play even opening positions

struct: I was going to do shogi ("japanese chess") for the japanese players

struct: But I stopped

Astrobytes: Where are my Amazons :P

eulerscheZahl: did i distract you? :P

struct: I was doing amazons at the time euler

struct: I have prototype of amazons done

Astrobytes: :)

struct: But I don't want to overflow multis

struct: I will still release, but not as oftne

Astrobytes: What happened to 1 per week?

struct: I don't think it will be good

reCurse: You don't want to overflow multis?

AntiSquid: 1 multi every time you reach legend in a contest struct

reCurse: I mean...

struct: Yeah, there are plenty already

struct: only 3 are mine :(

eulerscheZahl: 1 multi per account

struct: I keep othello then

AntiSquid: struct i think it's fine to add more multis if they aren't all from the same genre and more varied (no hexagon after hexagon multi)

reCurse: No hexagon othello, reported

reCurse: Might have been a fun variation actually :P

Astrobytes: lol

AntiSquid: and how does the stone turning work on hexagon othello?

reCurse: Same way?

struct: well 6 directions

AntiSquid: nvm, overthinking it, would look weird though

struct: I should have kept othello on 24x24

Astrobytes: Dear god no

Scarfield: othelloTTT

reCurse: Why stop at 24 when you can go 48

struct: max turns :(

AntiSquid: what's wrong with 12x12 ?

struct: I think I kept 8x8 because I asked chat

jacek: because people wanted to easy bitboad stuff

NaelDEV: Hello World

Hjax: after some tweaks to my pr2 bot, its now top 20, wouldnt have changed my rank in the unofficial contest

Hjax: but im happy enough with it

Astrobytes: nice one Hjax

Hjax: we should do more of these unofficial contests, it was pretty fun

Hjax: definitely motivated me to try a multi i wouldnt have otherwise

Astrobytes: Yeah, I think they'll happen

Astrobytes: Same here, will defo go back to PR2, nice game

Hjax: i wonder how good my pr2 bot would be at pr1

Hjax: they are pretty similar right?

Astrobytes: Quite different

Astrobytes: You have to manage pod cost and stuff

Astrobytes: More than PR2, you have to issue buying orders

WINWINWIN: Buy is not as big an issue as the removal of fog of war

Astrobytes: For specific locations

Astrobytes: And there's 'viewer issues' I believe

WINWINWIN: The size is too low to understand anything

Astrobytes: Yeah, I'm saving it for when I get *really* bored

Astrobytes: WINWINWIN where is your Othello bot

WINWINWIN: Trying a minimax offline, will submit in a week :P

Astrobytes: Nice :)

WINWINWIN: Its my first attempt

Astrobytes: Oh ok, it's not too hard, you'll get it quickly enough. Incorporate a/b pruning once you get the algo

WINWINWIN: The simulation is just copy pasted from the referee, but I am trying it in python before an OOP to get it bug free

Astrobytes: It's CG, don't need to use OOP for everything :P

WINWINWIN: I meant an OOP lang like C/C++

Hjax: python is an OOP language

Astrobytes: ^

WINWINWIN: I refer to OOP langs as langs where classes and methods are mandatory :)

Hjax: then C isnt object oriented

Astrobytes: classes and methods are not mandatory in C/C++

WINWINWIN: methods are not mandatory?

Default avatar.png swarupe:

Hjax: methods are, but classes arent

Hjax: you can just have free floating methods

Hjax: not very object oriented

WINWINWIN: I see, so that class Player that I used in PR2 was not necessary :)

Astrobytes: when I refer to methods and C++ I refer to member functions

darkhorse64: Hjax: for PR1, the ability to spawn pods change the strateegy. Will you write a PM for PR2 <?

Hjax: yeah ill write a PM

darkhorse64: Great, the old "Feedback" page is not very populated

Astrobytes: WINWINWIN if it helps you it's fine, it's just not mandatory ;)


WINWINWIN: This is where Im studying the minimax


Astrobytes: darkhorse64 same for a lot of the older multis

WINWINWIN: Is it ok?

struct: WINWINWIN I haven't read it, but if you want one in video.

struct: I can link it

jacek: it doesnt have prune array :(

Astrobytes: :D

WINWINWIN: Can you send the video link?


Astrobytes: I need Prune Array for my Othello GAimax

Astrobytes: Woo Sebastian with his accent :D

darkhorse64: Yeah, even PM from the top players are sometimes quite difficult to understand. Revisiting them will bring fresh ideas

Astrobytes: Indeed

WINWINWIN: struct is it possible to add the opponent`s move to the inputs?

Astrobytes: RE: Searches in general, I liked the MIT lectures with Patrick Winston WINWINWIN, this series:

struct: What do you mean?

struct: Put the move in the minimax functioN?

WINWINWIN: No, I mean in the game input, give the opponents move?

Astrobytes: Why do you need opponents last move, you have the whole board?

struct: I wont do more changes sorry

struct: And you can easily check with an if

struct: what the move was

darkhorse64: Always same reason, reuse the search tree

WINWINWIN: Np struct, just thought that it's a more standard input

WINWINWIN: Anyway, I will work on it this week, and submit a working version by Saturday! :)

struct: good luck

Astrobytes: I'll hold you to your word on that WINWINWIN :P



Astrobytes: gn, take it easy

darkhorse64: In Othello, when your opponent plays several moves in a row, it's a bit hard to guess their order.

struct: ah I see

eulerscheZahl: why would you need it? MCTS tree reuse?

jacek: thats a ntoher challenge

jacek: othello has very few moves, sometimes 1. tree reusing would be useful

darkhorse64: Yes. For the moment, I reset the tree. When you skip moves, things are bad for you

jacek: but well, when you skip moves youre screwed anyway

darkhorse64: ^

Astrobytes: yeah

struct: ok I open to discussion on this

struct: Do you really think it's needed?

jacek: that would be breaking change wouldnt it?

eulerscheZahl: not necessarily

struct: Would break current bots yes

eulerscheZahl: see vindinium. this game has 2 protocols

struct: How euler?

eulerscheZahl: read the statement

Astrobytes: EXPERT input etc

struct: I guess I can add a message in inputs

eulerscheZahl: If you output a debug message that contains "EXPERT_INPUT", you will get a list of opponent actions before the game input for every following turn.

struct: ok im gonna add this.

struct: I'll try to add it today

Astrobytes: Oh btw, off-topic, but I forgot to share the pleasant private message I received when I logged in this morning:

eulerscheZahl: :D

Astrobytes: I have no idea who that is, but I almost spat my coffee out laughing

eulerscheZahl: somehow the insult didnt work then

Astrobytes: Indeed. I should reply really. Not feeling troll-y enough though

struct: darkhorse64 if I add this, it wil only be available to read after your first output

struct: Is this fine?

jacek: no skipping moves happen at first move eh?

struct: yeah, but you need to add an if in default code

struct: if (turn > N) readInput()

darkhorse64: Yes, We should seen that before approval but I did not realized skip moves could be an issue. Otherwise, you could have implemented something like you do for Yinsh

darkhorse64: I already have a if (turn == 1)

struct: ok

reCurse: Should have kept some of the DMs I get after bans

Hjax: there was a starcraft player who cannon rushed every game, and kept a log of all of the rude things people said to him

Hjax: it was pretty entertaining

Astrobytes: lol, sounds like 90s GBR-1 behaviour

Hjax: reCurse are you pleased your pr2 bot survived the unofficial contest?

eulerscheZahl: i got this lovely DM once. started with "how are you?" - "fine and you?"

eulerscheZahl: then i got insulted, then wished me a nice day

Astrobytes: That was PayToWinGirl right?

eulerscheZahl: yes

reCurse: Only because I won't be distracted by going back to it :P

LelouchVC2: @reCurse

LelouchVC2: Lets play clash :)

reCurse: You want a ban I guess?

Hjax: bye LelouchVC2

eulerscheZahl: you are on thin ice

Astrobytes: byebye

LelouchVC2: *disappears into abyss*

eulerscheZahl: CG started working on an option to opt-out for invites. wonder how long it takes to implement

LelouchVC2: Probably forever

reCurse: Maybe if they said who I could spam him with invites for motivation

LelouchVC2: If we all spam reCurse with invites, we will boost our own social standing

eulerscheZahl: you will win a CG website without distracting chat

Hjax: the clash spam makes me envy you guys at the top of the global leaderboard less

reCurse: I get less of them since the new formula

reCurse: Silver lining

LelouchVC2: Let's change that!

eulerscheZahl: follows are more common than clash invites actually

eulerscheZahl: 9 new followers in the last week

LelouchVC2: :o

reCurse: I'm impressed how many bother with a useless feature

eulerscheZahl: following? you can send direct messages to offline users when they follow you. and filter the leaderboard

Hjax: the following leaderboard is pretty useful if you want to find someone quickly during a contest

reCurse: Ah didn't know about the DM thing

LelouchVC2: Some of these clashes are so stupid, who's accepting these?

eulerscheZahl: that's shown at the top

LelouchVC2: I meant it rhetorically

Hjax: i clash every once in a while, im not very good at the reverse ones

LelouchVC2: I mostly do clashes, only did 2-3 puzzles:((

Hjax: contests are my favorite, ive struggled to find motivation to play multis

eulerscheZahl: i'm mostly idling in the chat

Hjax: the unofficial contest helped

LelouchVC2: still salty over the broken pacman competition

Hjax: pacman was not fun

LelouchVC2: It was fun while I was dominating 😂

Hjax: i got frustrated and didnt work on my bot at all the last weekend

Astrobytes: LelouchVC2 it's not broken?

LelouchVC2: Astrobytes If i say broken then it's mother was also broken

Hjax: its just designed poorly, not being able to see around corners was so annoying

LelouchVC2: It give me dead pacs, no way around it

Astrobytes: Hated it. Just regular pacman with the RPS would've been fine.

eulerscheZahl: i liked pacman in general. fog of war wasn't necessary IMO

Astrobytes: RPS abilities that is

Hjax: pacman with no fog of war would have been fun

LelouchVC2: yea, abilities made it weird

Astrobytes: Well... there's an SDK... and... y'know... don't need to *call* it pacman....

Hjax: i wasnt a fan of OOC either, i gave up on it after an afternoon

reCurse: Without fog of war it would be too simple. Not saying fog of war was a good idea.

Astrobytes: Wasn't a huge fan either Hjax but the game had merit

LelouchVC2: Damn bro, mine was running on a simple algorithm. Didnt take long to code and was easy to expand

Hjax: yeah i wouldnt call OOC a poorly designed game, it just wasnt something i was interested in

reCurse: OOC was superb but hard to get into

LelouchVC2: I just wanted to crush opponents :((

reCurse: I mainly say that because it's original and favored different approaches

reCurse: Personal interest is another thing

Default avatar.png rahul_t37: hey hello guys

Hjax: yeah maybe if i had stuck with it a bit longer i would have ended up enjoying it

Hjax: but i gave up pretty fast

Hjax: i think i like 10 day contests more than month long contests

LelouchVC2: If it's more than 1 day I'll probably forget about it

LelouchVC2: Stuck with pacman for 3 days i think before that retrded bug

Astrobytes: I thought the dead pacmen was an added feature?

LelouchVC2: in a later league

Astrobytes: So...?

LelouchVC2: when it would give u the way to determine if it was dead

LelouchVC2: not when u can't possibly know..

Hjax: sure, but you didnt need to know that to silver or whatever league started giving you that info

Hjax: literally a completely blind pellet gobbling bot could get to silver

struct: I have the update ready, but I can't seem to be able to update the contribution :(

eulerscheZahl: does the build not finish on the CG server?

LelouchVC2: I cant get to silver if my program gives commands to dead pacs ;)

struct: it stays stuck on "Please wait, we are building your project..."

LelouchVC2: hit the side of ur computer

LelouchVC2: usually works

eulerscheZahl: did you try waiting?

struct: yeah

LelouchVC2: IQ

Hjax: its easy to tell when your own pacs were dead, the issue was when your opponents pacs were dead

LelouchVC2: ?

Hjax: dead pacs arent visible to you

Hjax: so they wouldnt get sent during your turn input

LelouchVC2: tell that to the bug

eulerscheZahl: they changed that in silver

Astrobytes: It's your bug, not the game

LelouchVC2: its the game

Uljahn: :face_palm:

Hjax: i would wager the bug is in your bot, not the game, the game worked fine

Astrobytes: "Hover over my profile"

LelouchVC2: I did every error check possible, reverted to previous code that worked

LelouchVC2: i finally went through the shitty task of checking the input recieved

LelouchVC2: and there was the dead pac, lord and behold

eulerscheZahl: problem exists between chair and ceyboard?

LelouchVC2: problem exists between servers and C++

Astrobytes: *between computer and chair/char and computer

Astrobytes: *chair

LelouchVC2: prove me wrong

LelouchVC2: i can show code <3

eulerscheZahl: you can be wrong without us proving

Astrobytes: Don't show it to me, I'm not loading that game up again for a while

LelouchVC2: I could also be God without proving it

Hjax: i dont need to see your code to know youre wrong, my bot and everyone elses didnt crash before silver

Astrobytes: ^

LelouchVC2: Who here was coding in C++

Astrobytes: Me

LelouchVC2: When did u get to silver?

LelouchVC2: I joined late, i recall u joining silver before me

Astrobytes: Fuck knows, did I get to silver?

Astrobytes: Lemme check

LelouchVC2: okie

Astrobytes: I was on a lot of painkillers at the time

Scarfield: ALWAYS assume the error is on CG's side

LelouchVC2: sounds healthy

LelouchVC2: i assumed it was my dumb ass, but i cant do anything if the input i get is a dead pac

Scarfield: type "DEAD" ..

struct: Is 15 minutes a reasonable waiting time?

Astrobytes: Nope. Stayed in bronze. I gave up early-ish I believe

LelouchVC2: type: "DEAD" is in silver

eulerscheZahl: 15min is too long

struct: Guess I'll report it on discord

Hjax: type dead only helps you know if your opponents pacs are dead, you can tell if your own pacs are dead from the inputs without the dead type

struct: I also tried for a new contribution

struct: same happens

LelouchVC2: The inputs have the dead pacs..

Astrobytes: ffs

RoboStac: they didn't, or everyone would crash

LelouchVC2: funny

RoboStac: as they did when they got to silver

Hjax: yeah silver broke everyone for a while

Hjax: was kind of amusing

LelouchVC2: They fixeed the bug

LelouchVC2: i just ran my code, and it no longer calls dead pacs, i didn't touch it

LelouchVC2: So if i havent touched this code since dead pacs being called pissed me off

LelouchVC2: did my code magically rewrite itself

LelouchVC2: or did they fix the bug? ;)

LelouchVC2: I take silence to mean you've all been assassinated

RoboStac: you can see on github exactly what they changed and when

Astrobytes: RoboStac, any plans for Othello?

RoboStac: not atm

Astrobytes: Working on anything else interesting?

RoboStac: nah, mostly just playing actual games rather than coding

struct: darkhorse64 I have the code ready, I just need to be able to upload. The input will be given after the for loop of the board and will give all player previous actions that you did not get, you will also get passes

Astrobytes: heh, downtime is always good :)

darkhorse64: Great

Astrobytes: What flavour of MCTS darkhorse64?

darkhorse64: vanilla

Astrobytes: Really? Have you tried with EPT or any other domain-knowledge flavours?

LelouchVC2: damn, forgot about me real quick

darkhorse64: No, I am focusing on getting the fastest possible engine

Astrobytes: Fair play

darkhorse64: Eval will come after

Astrobytes: Do you know how deep tric and other alphabeta's go by any chance?

Astrobytes: Oh he's online, trictrac, what's your max depth?

darkhorse64: No idea. I see that usually tric trac finds the game outcome 2 to 4 plies before me

Astrobytes: He's got a helluva bot

darkhorse64: He is busy extending his lead

Astrobytes: So I see

trictrac: don't know really

trictrac: but I print WIN or LOSE when I see the end

struct: tric trac see what I typed to darkhorse, it might be usefull

struct: It's not uploaded yet.

Astrobytes: lol, this is still your alphabeta trictrac?

trictrac: yes

Astrobytes: Nice, very nice.

darkhorse64: 20 years refining the code

Astrobytes: :D

Astrobytes: He's a master for sure

trictrac: I am trying to do a best eval but it seems not so good

trictrac: against LeRenard

darkhorse64: He has a 30 years old bot

LelouchVC2: The classics never die

Astrobytes: *Modified 30 years bot

darkhorse64: distilled

Astrobytes: I still love that though. Epic code reuse.

LelouchVC2: If it's not in C++ it's not a real bot

Astrobytes: It's C++ and quit the trolling attempts, we're bigger trolls than you :P

LelouchVC2: I was trolling before u were born

Astrobytes: I see.

darkhorse64: I use C++ for auto, lambda and STL. That spares lots of typing. Almost never use inheritance for my bots. Some overloading for vector class

LelouchVC2: u made ur own vector class?

Astrobytes: The lambdas are great

Astrobytes: Ofc LelouchVC2, standard on here

darkhorse64: CG does not provide one

LelouchVC2: nice, i wrote my own map class

LelouchVC2: because CG only gave me std::map

darkhorse64: I don't mind you are wasting your time

LelouchVC2: :oo

Astrobytes: Lemme guess, std::map is bugged

LelouchVC2: definitely, i once tried to output the 10th element

LelouchVC2: and it threw and out of bounds error, like wtf?

Astrobytes: trolololol

struct: Should rewrite c++

Astrobytes: Any luck with the update yet struct, or still stuck?

struct: stuck

Astrobytes: damn

struct: Even on new contributions it gets stuck

struct: I posted on discord, but won't ping

Scarfield: othello update incomming?

Astrobytes: Yeah, too late for a ping

struct: Yes, I will give optional last actions made by opponent

Astrobytes: Yeah, no breaking changes though OthelloField

struct: Should have seen this before

struct: but oh well

Scarfield: uuh nice, considered asking for it, but thought nah, other games here doesnt either

Astrobytes: Never occurred to me tbh

struct: As it was said, it can be good for passes

Astrobytes: yep

Hjax: i think trictrac is about to dethrone lerenard in othello

Astrobytes: He was already first HJax

Hjax: oh was he?

Astrobytes: By a stretch yeah :D

Hjax: just trying to widen his 1st place margin?

Scarfield: he mentioned ealier his eval wasnt the best

Hjax: i dont win 100% of my games, bot sucks

Scarfield: xD

Astrobytes: I think he was 3 pts above previously?

darkhorse64: My last battles Games 225 to 240, trictrac-darkhorse64: 1-0

Scarfield: dont know, but no.1 for sure

Astrobytes: I don't know anything after today, my head is a mess of bitshifts

DaFish: for neuron in brain: neuron = 0

jacek: astro8bits

PkZ: Is anyone else getting network errors?

Astrobytes: Yes DaFish :D

Astrobytes: astro64 jacek, please

Scarfield: AstroFloat

Astrobytes: Doesn't really rhyme with any brain cells though ArmWield

Scarfield: True, let me play this small Fiddle CastroInt :p

DiL: @PkZ I also got network errors

Astrobytes: haha well played :D

Astrobytes: Are you MCTS as well jacek?

jacek: not yet

Astrobytes: How deep's your a/b?

jacek: 6-7 plies in middle game

Scarfield: bit boarding?

jacek: eeyup

Astrobytes: ofc

Astrobytes: I can get about 10 in middle game, but my eval is shit

Astrobytes: *up to 10

jacek: wanna see my eval?


Astrobytes: Yeah don't hit me with myStones - hisStones

Scarfield: we dont want to see you evaluate no :p

Astrobytes: lel

Astrobytes: Yeah, at least he didn't show us his ejaculation function

DiL: are reverse mode clashes broken? I got networ errors when loading test...

Scarfield: its not recursive, but reciprocate

Astrobytes: That just means it's time to quit clashing and play multis DiL

Astrobytes: hahaha ScarFeel

DiL: Astrobytes is there a limit to clashes I can play?

Default avatar.png JBM: not that we know

Default avatar.png JBM: how many *have* you played?

Scarfield: at some point you will get captchas afaik, but i dont think there is a limit

DiL: many!

Default avatar.png JBM: wow that's a LOT

Scarfield: many factorial :o

DiL: captchas is ok, I just got network errors...

Scarfield: apperently you are not alone with that currently, a few others have mentioned it :/

Astrobytes: Sorry DiL I was trolling :) Someone else was mentioning network errors for clashes earlier, might be a server issue

Astrobytes: AstroRecites strikes again

Scarfield: xD

DiL: ok, fine. time to stop playing clashes! thanks

Astrobytes: Puzzles are always waiting :)

jacek: just invite some toads to clashes

Scarfield: puzzles and multies are great DiL, if you havent checked them out yet, i can highly recommend it :)

jacek: :tada:

Scarfield: :muscle:

Hjax: i like how he just prints out LOSE when he sees the loss

jacek: and he saw that 4 plies before my did

Hjax: you still found the right moves though

Hjax: so its ok

Astrobytes: lol nice jacek

Hjax: it would be depressing if he printed LOSE, and then a few moves later he was printing WIN

Astrobytes: Or Smits-style - Turn 2: Solved I win

Scarfield: maybe he only prints LOSE if its a certain loss, but that would be sad yea

Hjax: lol

Hjax: smits beats you in book

Astrobytes: Not just book, depends on the game I guess. But he's bloody good at it!

Hjax: i havent played any true number crunchy games yet

jacek: but only in the opening

Hjax: i dont think im very good at them

jacek: number crunchy games?

Hjax: search heavy games

jacek: o

Hjax: i keep saying ill use one as an excuse to learn C++ or Rust

Hjax: but i have not yet done that

Astrobytes: Not just number crunching really

Astrobytes: Do it

Astrobytes: Honestly, the more knowledge the better if you ask me

struct: There are plenty of games for this

struct: But from all of them I would stay away from UTTT

Astrobytes: I've still not got around to it, it just seems repellent :D

struct: Yavalath bots are hard

struct: I mean top bots

Hjax: we should do yavalath as the next unofficial contest

Hjax: it would make structs year

Astrobytes: lol, 100 signups, 2 participants

struct: :D

struct: It would be hard to beat lot of top players

struct: MSmits spent months on it

struct: I mentioned him more, because he talked a lot about it

Astrobytes: Hm, Agade is online, Agade, what did you change in your NN recently for Oware?

struct: jace k also made an article on it

struct: Seems like I won't be able to update othello today

struct: I'll do it tomorrow

Astrobytes: Could be issues on their end, I'm sure they'll sort it out

struct: yeah, it's fine

jacek: sounds clashy

struct: What do you mean jacek?

struct: What is clashy?

Agade: I had some bugs in the learning but improvements on the MCTS side make the bulk of the ranking gain

jacek: clashes are having some problems too, no?

Agade: e.g. was not preserving tree from turn to turn

struct: ah, no idea

Astrobytes: Ah OK, yes, that's helpful indeed. Good work Agade :)

darkhorse64: struct, I don't know what others think but I would have broken the 22 existing bots without mercy. One more line in the inputs "previousMoves". To unbreak the bot, just read this new line. No more changes needed. Frankly, it's not a big deal

Astrobytes: Yeah, it's only 1 resubmit away

jacek: blame those who approved it

Astrobytes: shut it jacek :)

darkhorse64: I did not but I failed to see the problem so I think I am also to blame. Things went so fast that I did not have time to write a real bot

Astrobytes: But yeah, just one line change is not a big issue, just resubmit after

Astrobytes: No I didn't have a full bot either, I'd started but was more focused on whether the game was working properly

darkhorse64: It's not like we are in the middle of a contest with 5k players

Astrobytes: :)

Astrobytes: Either way, CG is not letting him update the game atm so we'll have to wait

jacek: yinsh curse?

Astrobytes: lol, hopefully not!

darkhorse64: Hence my post. After some thoughts, I believe it's better to have simple inputs rather than preserve compatibility at all costs

darkhorse64: When I was doing breakthrough, I had the same issues

Astrobytes: I've still not done BT, I promise I will soon

Astrobytes: Hey did anyone see the post on latest post in the Othello topic in the forum?

Astrobytes: I'm not sure I understand. I don't use the list of possible actions for a start.

Astrobytes: *see the latest post

darkhorse64: Soem believe that writing a bot is rand()%actionsCount

darkhorse64: *Some*

jacek: if you print the last possible action, youll print the same move for the same game

jacek: actually thats better than random in yinsh

Astrobytes: Yeah, that's how I test contributions or submit a basic bot so I can test and write a decent bot.

darkhorse64: For yinsh, output the longest action

Astrobytes: Yeah, something like that

jacek: the True AI

Astrobytes: I think I did some sorting based on something

Astrobytes: I need to write a proper Yinsh bot, I like that game a lot

Astrobytes: So many games

jacek: like not-rock football

Astrobytes: Yeah I'll get to paper soccer too :P

Astrobytes: Nice re-phrasing btw

Astrobytes: Do you think my forum response is OK?

darkhorse64: It is

Astrobytes: I mean, any non-stochastic algo versus anything hardcoded will be the same right? And any hardcodes are gonna be the same against a hardcode.

Astrobytes: thanks darkhorse64

darkhorse64: I have done some googling. There are huge opening and endgame books for Othello

Astrobytes: I saw a little bit about some databases earlier but not much (was heavily shifting bits) - useful in CG context?

darkhorse64: Fortunately, there are huge. Dump in CG context is not doable

Astrobytes: Hallelujah

Astrobytes: :D

Astrobytes: Could be some interesting stuff in there though

Astrobytes: I see, massive computer generated and also a bunch of human books too

darkhorse64: I have not much experience in the game but It seems you cannot lose in the first turns (like Y). So you must go deep

Astrobytes: Yes, it's a lot more open at the beginning

Astrobytes: Maybe I'll just use the human books and some ifs. True AI.

Astrobytes: Anyway, I'm out for tonight, gn/bn all

Hjax: ok i posted my PR2 post mortem

Hjax: tldr: munkres good algo

darkhorse64: For the scoring function, distance is distance to what ?

darkhorse64: Nice post, bt

darkhorse64: btw

Hjax: distance between the pod im scoring and the target

Hjax: its just a big 2d array

Hjax: all of my pods vs all of my targets

darkhorse64: so you are planning ahead (for several turns)

darkhorse64: ?

Hjax: i dont store the munkres results, but in theory the mapping doesnt change much

darkhorse64: I mean, you are not looking only to the nearest neighbours

Hjax: i am not

Hjax: i have a global list of targets that i assign my pods to

Hjax: the targets are just seen but not visited squares, and any square my opponent owns

Hjax: so munkres finds the most efficient mapping between all of my pods and all of those targets

darkhorse64: I think I got it: you remember tiles not visited or tiles owned by enemy even if you don't see them anymore

darkhorse64: Thanks

Hjax: yeah

Hankdane: They also have unordered_map.

Hankdane: Doh, replied to an earlier thread. :-/

Reksio: Hi all. I see that some puzzles ignore code speed. Do you know how should I know when it matters and when not as well as other criteria?

Default avatar.png Pooshlmer: As far as I know, you find out when you timeout

Hankdane: Usually there are hints in the description.

Hankdane: I have yet to be surprised about seeing a timeout.

Reksio: so O(N) and similar requirements for speed and memory do not matter here much? Also usage of Linq (C#) vs not using it. Linq can often slow down the code.

Reksio: Also I honestly didn't know that looking at hints does not destroy your score.

Hankdane: Oh, I didn't mean the hints specifically, sorry. I meant the main description.

Hankdane: I haven't looked at hints, so dunno what it does to score.

Hankdane: If the problem is not speed related, code performance will not impact your score either way.

Hankdane: That's been my experience, at least.

Hankdane: What I meant by 'hint' is just to say it may not specifically say 'your code will time out if it is too slow,' but it will contain some kind of speed requirement.

Reksio: I hope they could bullet point in the future what is important to the solution and what's not. Speed, memory, code size after compilation, etc.

They may hint the same but I think that hints may not always be good as some requirements can over-complicate the code significantly. And if it happens that you mistook the hint you will spend long time on something you didn't need doing.

Reksio: But thanks for sharing your experience. Maybe I will visit forums for each puzzle before I try to solve them next time.

Default avatar.png jvke: Does Clash of Code rate solutions by their efficiency as well as time completed? I finished 3rd in terms of time but ended up getting first

Default avatar.png Pooshlmer: There's 3 modes

Default avatar.png Pooshlmer: Two are fastest time, but "shortest code" looks for the smallest code size

Default avatar.png jvke: Ah, thanks

jrke: Het jvke my id name is jrke :smiley:

jrke: *hey

Hjax: huh i just poked my pr2 bot a bit

Hjax: and now its rank 12

WINWINWIN: Anyone, when you are writing a minimax, it just needs to be a constant sum, not a zero sum right?

Hjax: what do you mean constant sum?