From CG community
Jump to navigation Jump to search

MadKnight: Automaton2000 is always here

Automaton2000: i don't think i can make a ga for csb

thibpat: I'm live, trying to improve my AI for the Twixt-PP challenge

MadKnight: fix it Automaton2000

Automaton2000: i wanted to have a huge bug

Uljahn: do you eat bugs, Automaton2000?

Automaton2000: if someone can help me with coders strike back

LelouchVC2: I have 3 pickles in a jar

LelouchVC2: And each pickle is racist

Default avatar.png DiL: any good resource (examples,etc...) on dynamic programming in python?

Default avatar.png HazelJoy: all python programming is dynamic though?

Default avatar.png LoGos: I think he is referring to dynamic programing in algorithms, not memory managment

Default avatar.png LoGos: is he?

LelouchVC2: clash of code is literally everyone just using python for 3 line answers

Default avatar.png HazelJoy: you gotta win somehow

TrentT: Is there something wrong with that?

wlesavo: playing CoC wrong in general

LelouchVC2: I'm coding in C++, can't possibly win

wlesavo: but you definetly can win a contest by coding in C++, there you go

LelouchVC2: IQ++

MSmits: use the right tool for the job

MSmits: c++ is much used on CG and so is python

MSmits: don't hammer a nail using pliers

LelouchVC2: What a coincidence that python happens to always be the right tool *rolls eyes*


Default avatar.png HazelJoy: it's the right tool for short code or fast code

MSmits: really ?

Default avatar.png HazelJoy: but not necesarily for all puzzle sand stuff

wlesavo: MSmits nice

LelouchVC2: I think I've been first place in one contest. Even if I finish first, python coders will end up with shorter code

MSmits: why is that a problem LelouchVC2

Uljahn: clashes are not contests

MSmits: short code is not always the objective

LelouchVC2: Once there was a very complex problem, and it took a good while to code it out

LelouchVC2: The first place guy was done in less than a minute because there was a python function that apparently was created for that very problem..

Uljahn: jeez

MSmits: LelouchVC2 you do realize this website has more than just clashes? Most players dont clash here and the ones that do will not use c++ for the reasons you mentioned

LelouchVC2: I suppose, I was just looking for a fun way to pass the time

MSmits: make a bot

MSmits: pick one of the near 50 arenas

Uljahn: clashing in c++ could be fun too

MSmits: c++ will be major advantage for winning, even though it will take you a bit more time

LelouchVC2: What are these clashes? Like tournaments or something?

MSmits: just short games

Uljahn: just fun time killers

MSmits: not tournament, the is a leaderboard

MSmits: but thats it

MSmits: each arena has its own leaderboard

LelouchVC2: contest* i meant

MSmits: ah contests are more like multiplayer arenas

MSmits: not like clashes at all

MSmits: but contests are time limited, average 10 days

MSmits: so if you use c++ you'll be fine

LelouchVC2: Ah, I see. Bot programming in the multiplyer area

MSmits: Yes

LelouchVC2: Thanks <3

MSmits: np, btw the multiplayer arenas are *not* time limited. Some will work for a year on a bot :P

MSmits: some arenas dont have such bots though, it depends on the arenas popularity

LelouchVC2: That's intense, guess I'll check it out :))

MSmits: sure

LelouchVC2: This site is a bit broken. 2nd time now my code gets a score of 100% after it wouldn't say I passed some test while debugging

LelouchVC2: I never find the issue with my code, and just submit it, and then it says my score is 100% ;-;

MSmits: ah it's not the site that is broken. I've done over 100 puzzles. Many puzzles are user created and not all users are equally good at it.

MSmits: however

MSmits: the testcases are not equal to the validator tests

MSmits: if your code does not pass the testcases, it may still pass the validators

MSmits: ideally the validators and testcases are very similar, but they cant be identical, because then you can hardcode the result

MSmits: so you may just have run into a situation where the validators are just different enough to help you pass the puzzle

LelouchVC2: Ahh, I see

LelouchVC2: That explains why I pass all the tests a few times and still got less than 100%

MSmits: yes, it happens

MSmits: you may have misunderstood something the creator meant in the statement

MSmits: sometimes they are less clear

MSmits: then your code does not handle 1 specific situation very well

MSmits: and it may either have problems with the validators or the testcases

LelouchVC2: There are a good number of puzzles that are very poorly worded, so I end up just looking at the tests to code them instead

MSmits: Thats true. By the way, high level players can edit the puzzles

MSmits: I improved a puzzle before

LelouchVC2: Nice! Maybe I'll get there

MSmits: Yeah, it is mostly a time spent thing

MSmits: xp that is

MSmits: cp is competitive, that's different

LelouchVC2: Like playing MMORPGs all over again

MSmits: you dont get cp for puzzles

MSmits: hah right

LelouchVC2: Well, I'm outta here <3

LelouchVC2: Thanks for the information :))

MSmits: np!

tsiryJL: it's funny!!

MSmits: ?

MadKnight: hey MSmits

MSmits: hey

MadKnight: how's your teachings ?

MSmits: on break till thursday next week

darkhorse64: How is your Onitama version ?

ZarthaxX: ssmiiiiiiiiiiiiiiiiiito

MSmits: havent found any improvement in the last 24 hrs

MSmits: hi zarthy

MSmits: still have to fit exploration, hope to get some improvement from that

ZarthaxX: hellou

MSmits: once I am done with that I am moving on to a different game, probably STC, or maybe I'll try improve my Bandas

darkhorse64: You showed me impressive stats. It's not the one you submitted

darkhorse64: ?

MSmits: it is I think


MSmits: but tric trac submitted after

darkhorse64: I expected a wider margin

MSmits: might be this one is overfitted vs his older version

MSmits: only 100 games

MSmits: bad statistics

MSmits: i have 4 wins 5 losses vs karlis o on cg stats

darkhorse64: I had abandoned all hopes

MSmits: thats not a lucky submit

MSmits: not with 65% winrate in cg bench

MSmits: but totally possible with randomness

MSmits: why abandon hopes?

MSmits: your bot actually does better than any other vs me in that test :P

MSmits: I have seen a few versions with 85% vs you though... it's really tough to choose a version

darkhorse64: I tried to change my evaluation from Win/loss/draw to a normalized value but failed. I did that because I noticed that when I am ahead in material, sometimes my bot seems clueless. Every move seems good

MSmits: also quite easy to pick an opponent and overfit. I only selected these 4 to have a nice spread

MSmits: oh

MSmits: I have a normalized value

MSmits: Just pick a high number for the maximum score and fit all your constants in relation to this

darkhorse64: May be I am doing it wrong. Divide by max value

MSmits: i divide by a constant max value

MSmits: it's always the same value, doesnt change during the game

MSmits: in my case it is 10000

MSmits: just wanted to make it high so i can use integers

MSmits: so if p1 has 5000 points, I will backpropagate 0.5

MSmits: and -0.5 for p2

MSmits: if p1 has 20000 points, then I will backpropagate 1, because it is above the maximum

MSmits: I do this in oware as well

MSmits: the difference is in what things about the board you evaluate and how much they are worth to you. This makes your bot behave strategically different and causes these enormous rps effects

darkhorse64: I have a constant too but may be it's wrong because I see node values barely making it above 0.7 just right before my solver takes over and claims a win

MSmits: well... they dont have to be exact, the node values only have to guide you in the right direction

darkhorse64: You have two ways to win in Onitama. I have noticed that y bot is better when the node values use the full range [-1,1]

darkhorse64: *my*

MSmits: well that makes sense, but sometimes the assumptions are wrong

MSmits: the things you evaluate

MSmits: maybe you evaluate the number of knights and you have 3 knights, the opponent has 1, but it kills your master. Or his master sneaks onto your shrine

MSmits: maybe your knights are positioned badly

darkhorse64: OK but its seems less wrong with Win/Loss (except for the case of material advantage). May be my eval is wrong: material + king/pawn position on the board

MSmits: that's the simple eval i started with, but it is very different now. I don't want to give too much away, but mine is definitely fundamentally different.

MSmits: I don't have too many constants btw

MSmits: just 5

darkhorse64: Not need to. I have googled many different evals

MSmits: 6 if you count the max score, but that can be scaled to anything

MSmits: ah i see

MSmits: yeah I found some, but I am not using them

MSmits: i think there were 2 that i saw

MSmits: one had a grid with numbers for position values for any piece

MSmits: and one had two grids, one for master and one for knight

MSmits: and i think most counted the number of knights

MSmits: not sure what else there is

darkhorse64: This one looks like mine. I have seen also evals that rate the poisitions according to the cards in hand and another that has parameters such as king safety,

darkhorse64: Probably closer to yours

darkhorse64: Anyway my purpose is not to "borrow" your eval, rather to understand how to better use the result of my eval (or realize that I should ditch it)

MSmits: yes

MSmits: hmm

MSmits: well dont discount a possible eval too quickly. A submit is really a bad test

MSmits: several times I have found the range in which a constant for a particular part of the eval is good, is a very small range

darkhorse64: #if 0 is my friend

MSmits: so say the constant can be between 0 and 2000, reasonably, only between 500 and 600 is good, anything else will be mediocre or bad

MSmits: so i just spread out some possible values, see if theres a pattern

MSmits: try to maximize in ghetto hill climbing style with excel

MSmits: at one time I had 8 eval traits with most having constant 0. I think the compiler optimizes them out

darkhorse64: Going back to work. Still home but working

MSmits: then i just try different values. Currently i only have 4 eval traits because I wasnt able to improve with the other 4. But I might have missed several combinations that would have been better

MSmits: allright have a good work day. I am studying my AI class currently

MSmits: Already finished most of the 8 week course in a few days :P

eulerscheZahl: that way you will forget most of it again till the exam :P

MSmits: haha maybe

MSmits: I am working on the last part now. Almost finished the video. It's about hill climbing SA, linear programming, constraint satisfaction etc.

MSmits: then i need to do something with a crossword puzzle generator

MSmits: as an assignment

eulerscheZahl: sounds fun

MSmits: it has 2 more parts that aren't in the required curriculum that I might do also, just because they're interesting, that's about Q-learning and neural networks and stuff. I just wonder if the assignments for that are any good

MSmits: it's a pretty short class (80 hrs) so they cut that off.

MSmits: which is kind of sad, because it is one of the few subjects I could learn a lot from

eulerscheZahl: your crossword puzzle assignment


MSmits: this is the assignment

MSmits: at least I think it is.... I am working way ahead, my class is still working part one.

MSmits: part 0 actually

Astrobytes: The Al Zimmermann one looks pretty cool

MSmits: which one is that?

eulerscheZahl: a python assignment MSmits?

Astrobytes: The one euler linked

MSmits: yes eulerscheZahl. I am getting much better with pyton now.

MSmits: it's pretty awesome what you can do with sets and such

eulerscheZahl: al zimmerman has optim puzzles once in a while. one is running right now

Astrobytes: Yeah I've seen some

eulerscheZahl: for smaller scripts i really like python

MSmits: yeah me too

eulerscheZahl: when it gets bigger, i prefer a strongly typed language

MSmits: python can get confusing quickly if you're not careful

MSmits: things like is vs == or the "in" keyword

MSmits: i had dictionaries within dictionaries a few times. And sometimes you use "in" and instead of finding out whether some value is in the dictionary, you are testing whether a dictionary is within a dictionary and it always returns true

ZarthaxX: lol

MSmits: within c++ these things take so much time to code, you'll spot the error while writing it

MSmits: python will hide it

eulerscheZahl: compilation fail vs runtime fail

MSmits: right

MSmits: more than a few times I have written a python function of 10 lines and it turns out i could do it in 2 lines and then decided to drop the function entirely

eulerscheZahl: Record a 1- to 5-minute screencast in which you demonstrate your project’s functionality.


MSmits: dont think i have to do that

MSmits: my class is derivative of the harvard class, it's not the same class

eulerscheZahl: ah

MSmits: it uses the same assignments i think though, at least the first one is the same

MSmits: and uses the videos

eulerscheZahl: do you have to submit?

MSmits: yes

MSmits: but not to harvard

eulerscheZahl: on github?

MSmits: nope

MSmits: some website with a system for this

MSmits: i upload files

MSmits: this is my teacher


MSmits: but so far we've just had an introductory class, I am not sure if he's going to do much lecture style teaching, because we have these videos

MSmits: he does some work for Harvard as well, which is probably why we do the CS-50 stuff

Default avatar.png LoGos: speaking about python and c++ both have some unpleasant suprises in them

Default avatar.png LoGos: like these:

Nerchio: this dude looks like he would stay in bronze forever in challenges Msmits

Default avatar.png LoGos: me? why?

Nerchio: no

Nerchio: Msmits teacher

ZarthaxX: lol what

ZarthaxX: why are you insulting him

Nerchio: who?

ZarthaxX: the teacher

Nerchio: not really an insult but i always felt weird when the teacher was super young

pb4: LoGos : I don't understand the python example, why does it behave like this ?

Nerchio: although usually when they were young they were just doing phd and sent to do classes by the professor

ZarthaxX: so just a dumb comment ok

Uljahn: default value is mutable

Nerchio: whatever floats your boat ZarthaxX ^^

pb4: what does it mean mutable ?

pb4: when Is the default value initialized ?

pb4: or re-initialized ?

Uljahn: list is a container, it bounds to the argumen when function definition is parsed by interpreter, then you are free to change it's content i guess

Uljahn: i have some more of this:

Default avatar.png WINWINWIN: Guys, I`m writing a sim for fantastic bits

Default avatar.png WINWINWIN: will I get till gold if I ignore collisions

Default avatar.png WINWINWIN: ?

eulerscheZahl: even legend

ZarthaxX: Nerchio i just didnt get why you said a teacher wouldnt get past bronze lol like sense comment for the current chat, no offense sorry :P

ZarthaxX: nonsense*

Default avatar.png WINWINWIN: K thanks :) eulerscheZahl

wlesavo: just pushed two people to fantastic bits gold

Default avatar.png WINWINWIN: wlesavo u in fantastic bits top silver too?

Default avatar.png WINWINWIN: Which lang? I`m using python3

wlesavo: same

Default avatar.png WINWINWIN: Written ur sim already?

wlesavo: some simple ass heuristic bot, i though i would be able to make it to gold with only two spells, and almost did it, but not quite

Default avatar.png WINWINWIN: Me too, thats what all the post mortems (including Bob`s) say :)

wlesavo: im beating boss quite reliably, but somehow strugling on some submits to make it to top

Default avatar.png WINWINWIN: Yes, my win rate against boss is at least 90% but I am not able to get past 5 in silver

Default avatar.png WINWINWIN: tried adding obliviate and now at 42 :(

wlesavo: im sometimes submiting in #2, while doing that pushed two people in gold, so it is gonna be easier now i guess

Default avatar.png WINWINWIN: :) will try my #5 bot then

BeeGee: Is there a list somewhere with chatroom names?

ZarthaxX: nope

BeeGee: Thanks

Uljahn: there are barely more than 3 active rooms here

dbdr: #de #fr #ru

BeeGee: Haha, oke

wlesavo: nice list :slight_smile:

dbdr: #random_chan

Default avatar.png thomasyuyu: wor

AntiSquid: BeeGee get pidgin and join random chatroom

MSmits: Nerchio teacher does look young. And I have no idea how good he would be at arena's, but pretty sure he'd make gold. What we do here is pretty specialized knowledge. You can be a great coder and not do too well here

wlesavo: maybe invite him for the next contest? i think he could like it

MSmits: yeah I plan to share this with them

AntiSquid: MSmits coming out and sharing his dirty secret

ZarthaxX: *hey teacher wanna get smacked by me on a CG AI contest?*

ZarthaxX: smito just showing off

AntiSquid: that question sounds awkward

ZarthaxX: dirty mind squido

ZarthaxX: :(

MSmits: lol

Illedan: ^^

Illedan: Damn, smitsimax is hard on FB -.-

ZarthaxX: hi illo

Illedan: yo

MSmits: Illedan it is, because you have two different states that require a different set of actions

Illedan: 2 states?

MSmits: either you have the sniggle, or whatever its called, or you dont

Illedan: true

MSmits: that complicates things

MSmits: I considered trying it on FB, but the sim is so complex, I got turned off of it

MSmits: maybe at some point

Illedan: I use the same node for having the ball and not having it :D

MSmits: well you can, but you have to give it different sets of children

MSmits: you choose a set based on this fact

Illedan: hmmm, I don't do that :P

MSmits: probably a good thing to start with :)

MSmits: otherwise I dont know how you would do this

MSmits: realistically

Illedan: With enough sims it should work on full random right? :P

MSmits: full random ?

MSmits: what does that mean in this case?

Illedan: Node selection

MSmits: oh

MSmits: well you still need to have a tree that gives valid moves

Illedan: Sure does

Illedan: 8 angles at each laye

Illedan: r

MSmits: your valid moves will be different based on whether you have the ball

Illedan: with ball = throw without = move

Illedan: In that angle

Illedan: :D

MSmits: ah

MSmits: if you do it full random though, what would the point of collecting statistics be?

Illedan: true, only need for the 1st layer

MSmits: right, well you can do this and then check for just 1 more layer to see if my idea with two sets of children works

MSmits: and do the rest random

MSmits: if it works, you can do more

MSmits: a monte carlo transitioning into a mcts type thing

MSmits: there are many variations you can do. All you're really interested in is a way to symmetrically take opponent actions into account

MSmits: something that's difficult with GA. Even so GA might be better here

Illedan: yeah, just wanted to try this thing

Illedan: Ga would be far easier

MSmits: cool, keep me posted :)

Illedan: Since I didn't include spells yet

Illedan: they are a buggy if

Illedan: ::)

MSmits: hm yea, for sure do it without spells first. I would personally only consider spells for the first layer

MSmits: thats what i do with shield in csb, works fine there

Illedan: yeah.. but these spells require positioning?

Illedan: Some atleast

MSmits: no idea, maybe my way is crap for FB

MSmits: I was thinking about this for meanmas

MSmits: meanmax

Illedan: Yeah, would be the same thing I guess

MSmits: the reason to include it on the first layer is just to give you the option of using it

MSmits: if its not in the tree at all, you'll never use them

Illedan: true

Illedan: Now I override a possible better action with a spell

MSmits: yeah

MSmits: usually i put in a penalty for using a spell so i only use it when it is enough of an advantage

MSmits: because it costs mana

Illedan: true

Illedan: my if is very stupid

Illedan: if (angleToGoal < 25) FIRE!

MSmits: works :)

Illedan: and some dist

Illedan: sure

Default avatar.png WINWINWIN: what is smitsimax?


ZarthaxX: an algorithm created by MSmits

MSmits: weird idea I had that sometimes works

ZarthaxX: mcts with steroids

ZarthaxX: humble answer smito

MSmits: sorry :P

ZarthaxX: hi astrobyto

eulerscheZahl: hi

ZarthaxX: tooooooooooad

MSmits: gonna get some food ttyl

Astrobytes: hey Zartholomew T Zarthaxus

ZarthaxX: cya

ZarthaxX: LMAO

Astrobytes: hi euler

ZarthaxX: you are evolving byto

Astrobytes: :D

Default avatar.png WINWINWIN: Wow Msmits :)

Default avatar.png angryOctupus: What bot programming puzzle to start with here>

Default avatar.png angryOctupus: ?

AntiSquid: onboarding

Default avatar.png angryOctupus: done some of the easy puzzles already

Default avatar.png angryOctupus: and a medium one

AntiSquid: then do more puzzles in easy / medium at random or just do a multiplayer

Default avatar.png angryOctupus: wanted to know which multi to start with

AntiSquid: well what's your skill level like and what games do you like?

Default avatar.png angryOctupus: very low skill level,

Astrobytes: Continue with easy and medium puzzles

AntiSquid: if you can write if else then try this: angryOctupus

Default avatar.png angryOctupus: K

Uljahn: start with coders strike back, it has a tutorial

AntiSquid: if you are good at trigonometry only!! angryOctupus otherwise avoid coders strike back

Default avatar.png angryOctupus: will try botters of the galaxy because if else and some sorting and searching is all I know

AntiSquid: that's all you need angryOctupus

Default avatar.png angryOctupus: thanks AntiSquid

Uljahn: that's enough for CSB too

AntiSquid: you need trigonometry and lot of calculations

AntiSquid: if you like physics games do csb sure

Default avatar.png angryOctupus: I like physics so coders strike back then?

Uljahn: just try it

Uljahn: it's free

AntiSquid: botters is better though

AntiSquid: actually you can look at the replays and see what the games are like

Default avatar.png angryOctupus: Starte Coders Strike Back

AntiSquid: angryOctupus if you need help with it there's a useful chat bot for it, just type "-help MadKnight" to trigger the bot

Astrobytes: :smirk:

AntiSquid: without the quotes ofc

Default avatar.png angryOctupus: How did someone build a chatbot which can understand what you say and advice?

AntiSquid: it understands CSB related topics

AntiSquid: nothing else

Default avatar.png angryOctupus: Who made it?

AntiSquid: same people who made CSB

Default avatar.png angryOctupus: K, thanks AntiSquid

AntiSquid: np

Astrobytes: ffs :D

Default avatar.png angryOctupus: -help MadKnight

Default avatar.png angryOctupus: Is it always online or only at specific times

AntiSquid: might be offline, let me check the other bots

AntiSquid: -help Automaton2000

Automaton2000: yeah i know it can be useful

Default avatar.png angryOctupus: WOW

AntiSquid: -help AutomatonNN

AutomatonNN: what do you mean by the same speed of your current league and u will have to go to sleep?

AntiSquid: i guess madao is broken :/

Default avatar.png angryOctupus: Does not make much sense :/

Default avatar.png angryOctupus: AutomatonNN how is boost different from 100 thrust?

AutomatonNN: I have also think that is a new search algorithm and will be hard to predict where position is a goo

AntiSquid: well these guys are less coherent

Default avatar.png angryOctupus: who made the automatons

Default avatar.png angryOctupus: ?

AntiSquid: some user

AntiSquid: hover the avatar, it will tell you

Default avatar.png angryOctupus: MadKnight doesnt have any such details

MadKnight: who coded AntiSquid to lie to newbies about other users being chatbots, Automaton2000 ?

Automaton2000: there is a wall in between, you reassure each other and thus lose only 1 sanity instead ."

MadKnight: u need to uncode AntiSquid Automaton2000

Automaton2000: was just to see if it works

Astrobytes: lol

MadKnight: it does work, Automaton2000

Automaton2000: you got the same problem

Default avatar.png WINWINWIN: :D

AntiSquid: quite sure it was a chat bot in the previous iterations

AntiSquid: no lies told

AntiSquid: are you playing in the next contest MadSnowflake_b78b?

AntiSquid: MadKnight *

MadKnight: probably

MSmits: lol... for a moment I thought you were trying to insult MadKnight, AntiSquid

MSmits: but just a tab-error

Astrobytes: A pretty good one at that

MSmits: yeah I laughed :P

MSmits: actually i cant tab the snowflake

Astrobytes: Probably left

MSmits: mmh ok

reCurse: I can still tab it

MSmits: weird

reCurse: But yeah it's pretty funny it's not an intentional jab, especially considering it's coming from AntiSquid

inoryy: lol

Default avatar.png Ganondorf10987: hey, does anybody know how to adjust the built-in "IDE"-s, if you will, to use actual tab characters for indentation, instead of 4 spaces?

AntiSquid: nah, not the snowflake one, kinda annoyed i can't tab Automaton2000 without getting Automaton2020 btw

Automaton2000: i mean i have a bunch of other things

AntiSquid: Ganondorf10987 not sure what you mean , just use the tabs if you want tabs

AntiSquid: and ctrl + mouse scroll to adjust size quickly

Kukiss: and there were some more detailed settings with ctrl + "," I believe but it seems to to no longer works

AntiSquid: F1

AntiSquid: new menu though

reCurse: They changed the IDE editor component with very little notice

Kukiss: uu

Kukiss: I noticed new colors but didn't look if there is something more :D

Kukiss: I just copy and paste anyway

eulerscheZahl: from ACE editor to Monaco

reCurse: It's more or less the same as VS code now

AntiSquid: great choice

Astrobytes: Anything is an improvement over that old ACE editor

reCurse: Anything?

Astrobytes: Well...

reCurse: You're not creative enough if you think that

reCurse: Could be a textarea with courier new font

Astrobytes: Alright, alright. This is a major improvement. I'll leave it at that :P

AntiSquid: obv should use Helvetica Neue font

reCurse: The new font for output and the new leaderboard in IDE though

reCurse: That's a downgrade

Astrobytes: Yeah, can't disagree there

reCurse: Apologies to whoever worked on that but that new leaderboard layout is ugly

eulerscheZahl: horrible IDE idea: 1-lines textbox with 100 chars limit and in password mode, only showing *

reCurse: Should be a new CoC game mode

AntiSquid: new leaderboard doesn't make sense

reCurse: If only because I enjoy torturing those players

inoryy: select boxes per char

Astrobytes: Sounds like a puzzle Benjamin would come up with

Illedan: Wow, my wizard scores self goal without anything nearby -.- Stupid eval..

eulerscheZahl: bad search not finding a move to avoid that

Illedan: Yeah, 2000 playouts with dept 4 might be too low :/


Astrobytes: lol, well played

eulerscheZahl: oh, you are still in gold

eulerscheZahl: didn't you try this years ago?

Illedan: Yeah, stopped when I got to gold with my stim :P

Illedan: 11 months since last submit

eulerscheZahl: you avoided throwing at the bludger

Illedan: I only test 8 angles

Astrobytes: Which algo?

Illedan: smitsi

Astrobytes: Ohhh

Illedan: Wanted to see if I could make it work

Illedan: I consider GA cheating :P

Astrobytes: lol

DaFish: No, smitsimax is cheating

Illedan: Not on FB

Astrobytes: isn't it kinda similar to BR2K or CSB? Except with spells? And bludgers

Illedan: Problem is the throwing

Illedan: I wonder if 8 angles are enough

Illedan: probably for depth 4..

MSmits: you should do 8 angles for moving, but for throwing I would not use fixed angles

MSmits: just create a heuristic that shoots to score

Illedan: hmm

MSmits: you can do a node that says: Score heuristic as one of the available moves

MSmits: next to a fixed set of angles

MSmits: its just 1 extra node

MSmits: if its bad, search will eliminate it

MSmits: you can experiment, see how often it gets used

Illedan: true

Default avatar.png LoGos: eulerscheZahl do you know that in Bandas your bot always crashes when ther's a draw?

eulerscheZahl: no

Illedan: shhh

eulerscheZahl: so it's not a draw then :D

eulerscheZahl: oh wait i remember

Default avatar.png LoGos: Yeah :D

eulerscheZahl: i allocate some nodes in turn 1

MSmits: ahh node pool ends

eulerscheZahl: and if the game lasts too long i run out of space

eulerscheZahl: exactly

Default avatar.png LoGos: that's what I thought

Default avatar.png LoGos: always about 70th move

Astrobytes: Moar nodes

Default avatar.png LoGos: when usually ther's about 30-35 moves

MSmits: eulerscheZahl i do this:


eulerscheZahl: i think i used something like that too

Astrobytes: reusing?

eulerscheZahl: don't remember anymore why not in the arena version

MSmits: I check if the node of the opponent is in my tree, if not i reset the pool. I also check if i am on the end of my pool, then i also reset

Default avatar.png LoGos: how do you paste something like that? I see pastebin and codingame in url

MSmits: Astrobytes yeah reusing

eulerscheZahl: many text = paste

MSmits: happens automatically

eulerscheZahl: much...

Astrobytes: I do that in that seed game, reusing nodes that is

eulerscheZahl: private const int size = (int)3e7;

MSmits: oware

Astrobytes: shhh

MSmits: good game for reuse yes

eulerscheZahl: so if i exceed 30 million nodes, i crash


Default avatar.png LoGos: 30M !?! D:

eulerscheZahl: i have a check

eulerscheZahl: but somehow it's not working?

eulerscheZahl: 30M for the whole game, not per turn

MSmits: I use 25M

MSmits: btw eulerscheZahl, it helps if you use mcts solver

eulerscheZahl: and i create all child nodes when visiting a state

MSmits: less nodes needed

eulerscheZahl: i can't be bothered doing that

MSmits: it's not that hard really

eulerscheZahl: i did it for my connect4

eulerscheZahl: check the code linked on my profile

MSmits: ohh ok

eulerscheZahl: (didn't read the paper, just coded what i thought it should look like)

MSmits: I did read the paper but the pseudo code sucks

Default avatar.png LoGos: I have only like 1M nodes created per game

MSmits: for which game?

Default avatar.png LoGos: Bandas

MSmits: which language?

Default avatar.png LoGos: c++

eulerscheZahl: i have slow C# and you have C++ superpowers

AntiSquid: body language

MSmits: eulerscheZahl you use c++ for bandas i think?

eulerscheZahl: no

MSmits: how else would you have 30M nodeS??

eulerscheZahl: per game

MSmits: thats not possible in C# I think

MSmits: yes but you cant assign them

MSmits: too much memory written

MSmits: or do you use unsaf?E

Default avatar.png LoGos: idk what's wrong with my code I also switched to u_int64 from bitboards and only lost 3 places

eulerscheZahl: i can and i will

eulerscheZahl: my nodes are just int[] for plays, wins, child index, ...

MSmits: mmhok

eulerscheZahl: so all allocated in turn 1

Astrobytes: LoGos, you have the pragmas? And use a preallocated pool of nodes?

Default avatar.png LoGos: yeah...

MSmits: whenever i tried to get a nodepool, it would try to set all data to 0 and its too much memory to write

Default avatar.png LoGos: all Ofast, inline etc

MSmits: in C# that is

MSmits: over 2 million and it would crash me before the game even started

Default avatar.png LoGos: eulerscheZahl

eulerscheZahl: unauthorized

eulerscheZahl: what game is that?

MSmits: click share LoGos

Default avatar.png LoGos:

Default avatar.png WINWINWIN: Can one of you suggest a definition for Move in fantastic bits?

Default avatar.png LoGos: ok?

Default avatar.png WINWINWIN: for a GA / SA

eulerscheZahl: now it's loading, weird

MSmits: its just a game of you running out of nodes

Default avatar.png LoGos: I clicked share, maybe that's why

MSmits: WINWINWIN sorry cant help there

MSmits: never done a SA or GA yet, even though I know the theory

Illedan: :tada: top 100 gold :rocket:

eulerscheZahl: "clicked share"?

eulerscheZahl: is there anything new on the website which i'm missing?

MSmits: Illedan grats, no more self-goals?

Default avatar.png WINWINWIN: Not even for CSB Msmits?

Illedan: Seems so

MSmits: eulerscheZahl share replay

Default avatar.png WINWINWIN: used a minimax?

Astrobytes: Yeah they changed the replay privacy settings or something recently eulerscheZahl

MSmits: WINWINWIN no i dont use GA/SA there

Default avatar.png LoGos: "Replay and share" right bottom corner

Default avatar.png LoGos: when viewing replay

eulerscheZahl: and now did you share the link before?

MSmits: wait... I knew something euler didn't ?

eulerscheZahl: i know that button

eulerscheZahl: just wondering how to share without clicking it

eulerscheZahl: in the past i could drag and drop in the chat

MSmits: I think you need to click it

MSmits: or do you mean scripting?

eulerscheZahl: somehow that isnt working anymore (browser setting?)

eulerscheZahl: i'm wondering how LoGos shared the replay without clicking the button

MSmits: real coders dont press buttons, they create scripts that press buttons

Default avatar.png WINWINWIN: :)

eulerscheZahl: of course i can script it but i don't think that's what happened here

Illedan: Real coders make the buttons to click

Default avatar.png LoGos: I copy-pasted link from CGBenchmark

eulerscheZahl: ah

MSmits: yeah thats a private ide game LoGos

eulerscheZahl: so it was an external tool after all

eulerscheZahl: and you are benching vs me :rage:

MSmits: happens with any ide game

Default avatar.png LoGos: sory if I did something wrong. Just started using CGB thanks to MSmits's help

MSmits: hey, leave me out of it :P

Default avatar.png LoGos: eulerscheZahl yeah :sweat:

eulerscheZahl: but not to improve your winrate against me

eulerscheZahl: (just kidding btw)

Default avatar.png LoGos: I only noticed it because somehow you crashed 3 times in a row :sweat_smile:

Nhisoyr: hi, does anyone here know C#?

eulerscheZahl: i little bit

eulerscheZahl: a little bit

Illedan: basic syntax

MSmits: hah, you two

Astrobytes: :smirk:

MSmits: of us 3, I know a little bit

Astrobytes: I know some but less than you MSmits

eulerscheZahl: so go ahead and ask your question

MSmits: doubt it Astrobytes, for bots I only ever need the basics

Nhisoyr: is there a way to pass only one array inside a 2d array? like {{1,2,3}, {4,5,6},{7,8,9}}. How'd i go about only getting only {1,2,3} without looping?

eulerscheZahl: foreach (int i in array[0])

MSmits: for(int i = 0; i < array[0].length; i++)

Astrobytes: *without looping

MSmits: ow

MSmits: array[0]

eulerscheZahl: i'm illiterate, so is MSmits

Astrobytes: :D

MSmits: wait is it jagged or 2D?

Nhisoyr: it doesn't work for me. It says "Wrong number of indexes `1' inside [], expected `2'"

MSmits: with jagged you do array[0]

jacek: in other words, you cant C#

MSmits: ah then it's real 2D

Astrobytes: well played jacek

eulerscheZahl: let's do some LINQ voodoo magic then

MSmits: do da voodoo mon

Nhisoyr: not used to C# yet. I used to code in Js and python tho i don't remember that much anymore i feel like that was easier to do xD

MSmits: without numpy, 2D arrays are a pain in python

eulerscheZahl: int[] sub = Enumerable.Range(0, test.GetLength(1)).Select(i => test[0, i]).ToArray();

wlesavo: at least they are subscribable, but sure, its is much better without 2D lists

eulerscheZahl: test = the 2d array

MSmits: that spell is too high level for me, can't read

Nhisoyr: i've no idea what you did there XD

eulerscheZahl: Enumerable.Range is the looping part

MSmits: (so it's still looping)

eulerscheZahl: generate a sequence from 0, with array.GetLength(1) items

Illedan: Even slower with the linq

eulerscheZahl: yes, looping

Illedan: :D

eulerscheZahl: of course it's slower

eulerscheZahl: it's LINQ

Illedan: ^^

eulerscheZahl: but that wasn't the question

MSmits: it's just looping more professionally

eulerscheZahl: in a more obfuscated manner

eulerscheZahl: define a jagged array if you need access to chunks

MSmits: Nhisoyr how attached are you to your 2D array?

MSmits: was just gonna say

Nhisoyr: i'm ok with looping, I was just wondering if there was another way hahaha

Nhisoyr: cause writing array[0] to get the first array inside a 2D array seemed logical to me

eulerscheZahl: on a first look: yes. under the hood the Enumerable.Range is a loop again

eulerscheZahl: with lazy evaluation

MSmits: with c++ you just make a pointer :)

eulerscheZahl: for a jagged array that's exactly what you do: array[0]

MSmits: yeah

Default avatar.png LoGos: 0[array]

Default avatar.png LoGos: in c++

eulerscheZahl: you declare it as int[][] array instead of int[,] array

Nhisoyr: ohhh

Nhisoyr: thanks

Nhisoyr: that should do it

MSmits: the intialization is a bit different

eulerscheZahl: an array of arrays

MSmits: you need to loop when you initialize

MSmits: be careful about that

MSmits: googl eit

Nhisoyr: ii'll test it in this challenge and see if it works, i'll read more abou it afterwards

MSmits: C# is great to use on CG. It's coder-friendly and quite fast for most purposes

eulerscheZahl: for jagged arrays you can even have different lengths

eulerscheZahl: e.g. storing pascal's triangle without wasting space

eulerscheZahl: C# is my Swiss army knife

eulerscheZahl: C++ is the scalpel

MSmits: but looping over the full 2D range should be slower with varying lengths right?

Nhisoyr: i was aware of jagged arrays but i hadn't used it before

eulerscheZahl: jagged arrays should be slower

eulerscheZahl: didn't do the benchmark, just guessing

eulerscheZahl: 1 more indirection

Default avatar.png LoGos: Speaking about performance, do you use SSE and AVX?


MSmits: Nhisoyr if speed is an issue, you can also do a 1D array and access it like array[x + width * y]

MSmits: this is faster

Nhisoyr: hm

Nhisoyr: that makes sense

MSmits: easier to make bugs of coruse

MSmits: but if you're careful it's fine

eulerscheZahl: for mono that really makes a difference. less for .net i think

eulerscheZahl: but CG is still using Mono

Astrobytes: the 1D representation is more natural than the 2D for me these days thanks to CG lol

eulerscheZahl: i always code in 2D

MSmits: heh thats what happened to me with bitboard

Default avatar.png LoGos: I saw this that's why I'm asking. Didn't read it though. I just can't figure how to explore 10x more nodes in mcts. I have "only" 100k new nodes per turn

eulerscheZahl: and on the last day i convert to 1D if i need the speed

Astrobytes: Yeah you said 2D is slower in Mono

MSmits: LoGos there are several possible reasons

MSmits: what is on one of your nodes

eulerscheZahl: i can approximately double my simcount when i have lots of those array accesses

eulerscheZahl: by 2D -> 1D

Astrobytes: That's a significant speedup

eulerscheZahl: yeah, discovered it at A*Craft


Astrobytes: Have they upgraded yet?

MSmits: my bandas node LoGos

MSmits: maybe it helps

eulerscheZahl: last time i checked: no

Default avatar.png LoGos: only one child ?

Astrobytes: I guess they'd announce it in the forum anyway when (if) they do

MSmits: it is an index to the position in my node array where the first child is located

Default avatar.png LoGos:

Default avatar.png LoGos: oh...

Default avatar.png LoGos: smart

Default avatar.png LoGos: my GameState is just 3x unit64

jacek: struct eh

MSmits: mine is 2x

eulerscheZahl: Console.WriteLine(Type.GetType ("Mono.Runtime")); Standard Output Stream: Mono.Runtime

MSmits: and its on the node

eulerscheZahl: should be null for .net core

MSmits: ah yours is on the node too

MSmits: bool current_player; //1 bit

MSmits: this is not 1 bit

Default avatar.png LoGos: Maybe array access is faster than pointer deferencing?

Astrobytes: A bool is a byte

Default avatar.png LoGos: I belive it is

MSmits: ohh you mean byte

MSmits: all your bits are bytes

Default avatar.png LoGos: yeah, sorry

dbdr: (reacting to old chat) eulerscheZahl: I learned to program on a 1-line display

Default avatar.png LoGos: it's just faster to write bit

dbdr: with BASIC :D

Default avatar.png LoGos: 3 letters

eulerscheZahl: you can try bitfields. but padding will make it a byte anyways

Default avatar.png LoGos: and nothing is really measured in bits

Default avatar.png LoGos: bad habit

eulerscheZahl: dbdr i wasn't aware how old you are :D

MSmits: my whole node is 32 byte if i am counting correctly LoGos

dbdr: not that old, just I was a kid

dbdr: this was a pocket calculator

eulerscheZahl: and now you aren't anymore

eulerscheZahl: => old

Astrobytes: Ah calculator programming :D

dbdr: with a super tinay qwerty keyboard, a 1 line display and basic

Astrobytes: TI-BASIC?

dbdr: Sharp

Astrobytes: Ah right

Astrobytes: Great fun :D

dbdr: there were real computers at the time, that's just what I had first

Nerchio: i want to do statemachine for crystal rush, do you guys think i should go classes way/ interface or enums :p

dbdr: maybe it was actually good practice

dbdr: keep the program in your head

MSmits: statemachine ??

Astrobytes: It is. Though I used to write mine on paper beforehand

MSmits: do you just mean for the robots whether they are gathering, returning etc?

Nerchio: y

Default avatar.png LoGos: MSmits let me calculate. And I also have a question. Is dimX, dimY the size of board? If so, then your "GameState" is 4 int's, not 2

Nerchio: like a miner bot/ scanner bot etc. change their behaviour based on their situation

MSmits: ahh, enums are fine i think

MSmits: LoGos it;s 2 uint64_t

MSmits: 1 for p1 and 1 for p2

MSmits: ah yes

MSmits: i see what you mean

Default avatar.png LoGos: yeah, you are right. Again, my mistake

MSmits: the dimx and dimy is the size of board

Default avatar.png LoGos: It's really more space efficient to store shape, not actual bitmask like I do

MSmits: yeah, i do shift the board after a size decrease though

MSmits: so it stays in the upper left corner

MSmits: or upper right, not sure

MSmits: anyway, this way one shift direction doesnt require a mask

MSmits: it will just shift off the board :)

MSmits: also, if you want to go and create an endgame database, it's easier to do with my method

MSmits: you can do lookups more easily

MSmits: i never got around to doing that, but I was planning ahead

MSmits: one more thing though, the reason you use less nodes might be entirely non-node related. It could just be your move action is slow

Default avatar.png LoGos: Profiler tells me the same... i am very thankful for your help! If it's OK, I am going to try out some of things you shared wth me

jacek: copyright*

Astrobytes: Smitsimarked

Default avatar.png LoGos: I'm going to credit him in comments

Astrobytes: :D

MSmits: lol, np

AntiSquid: give him a crown of laurels

MSmits: :crown:

MSmits: i'm going back to the crossworld puzzle generator, last assignment for AI class :)

AntiSquid: that sounds more like a puzzle :/

MSmits: well most of the thing is written, I just have to write the logic in 7 different functions

MSmits: 2 down 5 to go

MSmits: making stuff node and arc consistent, writing a backtracking algo

Astrobytes: arcs?

Astrobytes: Oh wait, the graph, gotcha

MSmits: yeah they call edges arcs somehow

Astrobytes: It's common

Astrobytes: nodes/vertices and arcs/edges

MSmits: ah ok

MSmits: I am confused about something. It says I should make a list of all possible arcs

MSmits: I am not entirely sure if that means i need to include both (x,y) and (y,x)

MSmits: or if they are considered the same arc in this problem

Default avatar.png LoGos: In my language arc is bidirectional

Default avatar.png LoGos: so... only (x,y)?

MSmits: I guess so

Astrobytes: It can refere to directed edges

MSmits: creating all arcs this way is a bit annoying in python

Astrobytes: *refer

MSmits: if you want to not include doubles

MSmits: the variables are a set

MSmits: I should create a copy of the set which I slowly empty to avoid doubles

MSmits: or build up a set to check against

MSmits: thats smarter

MSmits: like explored nodes in bfs

Astrobytes: 2nd one I think

MSmits: yeah thats it

AntiSquid: do they examine the code or just check if it works?

MSmits: no idea, there are only 5 or 6 people in the class so they should have time to examine the code

icecream17: I like the new code editor. You can scroll down way more

MSmits: that's probably because you wrote more code?

AntiSquid: no idea what you mean, but if you go to the bottom of your code press and hold enter for a while, scroll back to the top you can scroll an awful lot more

icecream17: You can scroll past the last line, i mean

Astrobytes: lol AntiSquid

MSmits: that's a pro-tip AntiSquid

Astrobytes: icecream17 why the f do you consider scrolling past the last line of your code a likeable feature?

AntiSquid: maybe it's to center the last line easier

icecream17: idk. it just feels more cluttered when i code at the bottom and I can't scroll

Astrobytes: :shrug:

reCurse: Agreed

struct: There are even some extensions so you dont have to press enter and make you just able to scroll after last line

MSmits: hi struct

struct: hi MSmits

AntiSquid: oh just remembered ctrl+k followed by ctrl+0 now works in CG IDE :D

icecream17: woah, all of my code just compressed into an array, while loop, and 2 functions

AntiSquid: less scrolling :p

AntiSquid: you can undo by clicking arrow on the side

icecream17: A lot of arrows... there's this one line with 6 indentations

struct: you folded everything?

AntiSquid: ya there's a short cut to undo, forgot what it was don't use it much

AntiSquid: collapsed @_@ !

struct: ctrl+k ctrl+j

icecream17: i need a list of keyboard shortcuts...

AntiSquid: VSC shortcuts ? google ?

icecream17: everything has different keyboard shortcuts. hmmm

icecream17: Woah! ctrl + / automatically comments out a line

LelouchVC2: Alt+F4 automatically ends your existence

Uljahn: press F1 and scroll the drop-down menu, there are a lot of shortcuts

Default avatar.png Ganondorf10987: does anyone know why tf Ctrl + A doesn't work in the IDE?

Default avatar.png Ganondorf10987: also, why you can't paste anything into it?

Default avatar.png Ganondorf10987: and by IDE, I mean the built in text-editor

reCurse: Works fine for me

Default avatar.png Ganondorf10987: legit??

reCurse: Yeah

AntiSquid: it works ...

Default avatar.png Ganondorf10987: ffs, I literally just wrote 5 hours worth of code (if not more) in Eclipse and now can't paste it here...

Default avatar.png Ganondorf10987: *angery*

AntiSquid: i don't see how that's possible

AntiSquid: save it to a file then if it's 5 hours

AntiSquid: try later when you are clear headed

Default avatar.png Ganondorf10987: bruh, it's not that I'm not clear headed

Default avatar.png Ganondorf10987: also, don't worry, it's already saved in Eclipse :P

Default avatar.png Ganondorf10987: I wouldn't dare write code for more than 2 minutes without saving XD

Default avatar.png Ganondorf10987: but srsly, first it didn't work with keyboard shortcuts (Ctrl + C, Ctrl + V) and now it's not working with literally right MB clicking, opening context menus and selecting copy

Default avatar.png Ganondorf10987: and then I come here, try to open the RMB context menu... literally nowhere to be seen

Default avatar.png Ganondorf10987: the paste option*

Default avatar.png Ganondorf10987: YO LEGIT

Default avatar.png Ganondorf10987: now I can't even copy/cut and paste from itself

Uljahn: paste option is omitted in pop-up but ctrl+v works fine

Uljahn: btw you can select a fragment and then ctrl+drag to copy it elsewhere in ide

icecream17: npm install is in the cmd? can't believe i... aarrggh so easy

icecream17: ECMAScript is pronounced EC MA? I always thought it was "m c a"....

Default avatar.png romrd468: why is my code magically breaking on turn 48 of CSB

MadKnight: i dunno

MadKnight: how exactly is it breaking ?

MadKnight: what exactly is happening ?

Default avatar.png romrd468: entire code not running

Default avatar.png romrd468: I am super confused normally its my fault but I cant explain this.

Default avatar.png romrd468: I have 60 lines of code and it somehow decides to stop working on turn 48

Default avatar.png romrd468: 60 line not including comments and the standard loop

MadKnight: show me your code

Default avatar.png romrd468: ok

MadKnight: why do u have so many variables

MadKnight: they will give all checkpoints on turn 1 in higher leagues

Default avatar.png romrd468: let me clean it up a bit

MadKnight: just reset to default, subtract 3*vel from nextcheckpoint and it will get u to the next league

Default avatar.png romrd468: ok will do, am still confused why my code is not working

MadKnight: so many ifs....

MadKnight: one is probably brojken

Default avatar.png romrd468: I would expect it to crash instead of having no output

MadKnight: maybe none of them output anything

Default avatar.png romrd468:

Default avatar.png romrd468: and how did that player no it should BS

Default avatar.png romrd468: know

MadKnight: your bot clearly broke after passing 2nd checkpoint

Default avatar.png romrd468: yeah but it works 99.9ish % of the time whats different about this case

MadKnight: just reset the code, subtract 3*vel and get to the league when they give u all checkpoints

Default avatar.png romrd468: because its this case that is why I am not in legendary yet

MadKnight: gold boss is stronger

Default avatar.png romrd468: yeah I can beat the boss a decent amount but than this case occurs

MadKnight: in gold u will have 2 pods in your team

Default avatar.png romrd468: this is gold XD

MadKnight: oh right lol

MadKnight: i need to open replay

MadKnight: oh so why do u have so many variables lol

MadKnight: look at all those variables

Default avatar.png romrd468: Because I cant get around the rare test cases without them

MadKnight: what's all these check0..15 ?

MadKnight: arrays are for the weak ?

Default avatar.png romrd468: that is storing x and y of each possible checkpoint

Default avatar.png romrd468: I could probably name things better but I couldn't come up with good names for some of these temp variables

Default avatar.png romrd468: I also was using a ton of code I removed which was for debugging

Default avatar.png romrd468: I tried using normal array techniques but I found it would erase the original value

Default avatar.png romrd468: or make up some funky thingsg

Default avatar.png romrd468: I now removed 200ish lines of comments

Default avatar.png romrd468: ops messed up at removing XD

MadKnight: it wouldn't

MadKnight: u can use arrays for that

Default avatar.png romrd468: I did use arrays just the google answer wasn't right

Default avatar.png romrd468: now its showing the errors but it wasn't earlier

Default avatar.png romrd468: and my code was 100% right besides spacing surprisingly

MadKnight: if your arrays don't work it's not a reason to create 16 variables

MadKnight: u just needed to fix the bug

KiwiTae: +1

MadKnight: hey KiwiTae

MadKnight: are u gonna play next contest ?