Chat:World/2020-04-29
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 https://twitch.tv/thibpat
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
DiL: any good resource (examples,etc...) on dynamic programming in python?
HazelJoy: all python programming is dynamic though?
LoGos: I think he is referring to dynamic programing in algorithms, not memory managment
LelouchVC2: clash of code is literally everyone just using python for 3 line answers
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*
MSmits: https://www.codingame.com/multiplayer/bot-programming/onitama/leaderboard
HazelJoy: it's the right tool for short code or fast code
MSmits: really ?
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: http://chat.codingame.com/pastebin/fe081cb1-51dc-4ba1-90b2-42b9d292d9c4
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: http://azspcs.com/Contest/AlphabetCity your crossword puzzle assignment
MSmits: https://cs50.harvard.edu/ai/projects/3/crossword/
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.
- popcorn:
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: https://github.com/Jelleas
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
LoGos: speaking about python and c++ both have some unpleasant suprises in them
LoGos: like these: https://ideone.com/ExC7Om https://ideone.com/kp0X6Y
Nerchio: this dude looks like he would stay in bronze forever in challenges Msmits
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: https://github.com/satwikkansal/wtfpython
WINWINWIN: Guys, I`m writing a sim for fantastic bits
WINWINWIN: will I get till gold if I ignore collisions
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*
WINWINWIN: K thanks :) eulerscheZahl
wlesavo: just pushed two people to fantastic bits gold
WINWINWIN: wlesavo u in fantastic bits top silver too?
WINWINWIN: Which lang? I`m using python3
wlesavo: same
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
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
WINWINWIN: Yes, my win rate against boss is at least 90% but I am not able to get past 5 in silver
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
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
AntiSquid: BeeGee get pidgin and join random chatroom https://www.codingame.com/faq
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
Astrobytes: https://www.codingame.com/playgrounds/36476/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
angryOctupus: What bot programming puzzle to start with here>
AntiSquid: onboarding
angryOctupus: done some of the easy puzzles already
angryOctupus: and a medium one
AntiSquid: then do more puzzles in easy / medium at random or just do a multiplayer
angryOctupus: wanted to know which multi to start with
AntiSquid: well what's your skill level like and what games do you like?
angryOctupus: very low skill level,
Astrobytes: Continue with easy and medium puzzles
AntiSquid: if you can write if else then try this: https://www.codingame.com/multiplayer/bot-programming/botters-of-the-galaxy angryOctupus
Uljahn: start with coders strike back, it has a tutorial
AntiSquid: if you are good at trigonometry only!! angryOctupus otherwise avoid coders strike back
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
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
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
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
angryOctupus: How did someone build a chatbot which can understand what you say and advice?
AntiSquid: it understands CSB related topics
AntiSquid: nothing else
AntiSquid: same people who made CSB
angryOctupus: K, thanks AntiSquid
AntiSquid: np
Astrobytes: ffs :D
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
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 :/
angryOctupus: Does not make much sense :/
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
angryOctupus: who made the automatons
AntiSquid: some user
AntiSquid: hover the avatar, it will tell you
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
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
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 :/
Illedan: https://www.codingame.com/replay/456019101
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
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
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
Astrobytes: Moar nodes
LoGos: when usually ther's about 30-35 moves
MSmits: eulerscheZahl i do this:
MSmits: http://chat.codingame.com/pastebin/2a8916ec-6614-43db-85eb-cae130174ffc
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
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
eulerscheZahl: http://chat.codingame.com/pastebin/48a75499-9eec-4395-93aa-0055e51cf8af
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
LoGos: I have only like 1M nodes created per game
MSmits: for which game?
MSmits: which language?
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
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?
MSmits: whenever i tried to get a nodepool, it would try to set all data to 0 and its too much memory to write
MSmits: in C# that is
MSmits: over 2 million and it would crash me before the game even started
LoGos: eulerscheZahl https://www.codingame.com/replay/455952764
eulerscheZahl: unauthorized
eulerscheZahl: what game is that?
MSmits: click share LoGos
LoGos: https://www.codingame.com/share-replay/455952764
WINWINWIN: Can one of you suggest a definition for Move in fantastic bits?
eulerscheZahl: now it's loading, weird
MSmits: its just a game of you running out of nodes
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?
WINWINWIN: Not even for CSB Msmits?
Illedan: Seems so
MSmits: eulerscheZahl share replay
Astrobytes: Yeah they changed the replay privacy settings or something recently eulerscheZahl
MSmits: WINWINWIN no i dont use GA/SA there
LoGos: "Replay and share" right bottom corner
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
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
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
LoGos: sory if I did something wrong. Just started using CGB thanks to MSmits's help
MSmits: hey, leave me out of it :P
LoGos: eulerscheZahl yeah :sweat:
eulerscheZahl: but not to improve your winrate against me
eulerscheZahl: (just kidding btw)
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
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
LoGos: Speaking about performance, do you use SSE and AVX?
eulerscheZahl: https://www.codingame.com/playgrounds/283/sse-avx-vectorization/what-is-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
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
MSmits: http://chat.codingame.com/pastebin/04d1d02e-5688-4af9-9e48-9493d85e0f18
Astrobytes: Have they upgraded yet?
MSmits: my bandas node LoGos
MSmits: maybe it helps
eulerscheZahl: last time i checked: no
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
LoGos: http://chat.codingame.com/pastebin/596ba6d3-af15-4c5c-b291-974bcc605887
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
LoGos: Maybe array access is faster than pointer deferencing?
Astrobytes: A bool is a byte
MSmits: ohh you mean byte
MSmits: all your bits are bytes
dbdr: (reacting to old chat) eulerscheZahl: I learned to program on a 1-line display
LoGos: it's just faster to write bit
dbdr: with BASIC :D
eulerscheZahl: you can try bitfields. but padding will make it a byte anyways
LoGos: and nothing is really measured in bits
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
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
LoGos: yeah, you are right. Again, my mistake
MSmits: the dimx and dimy is the size of board
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
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
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
LoGos: In my language arc is bidirectional
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
Ganondorf10987: does anyone know why tf Ctrl + A doesn't work in the IDE?
Ganondorf10987: also, why you can't paste anything into it?
Ganondorf10987: and by IDE, I mean the built in text-editor
reCurse: Works fine for me
reCurse: Yeah
AntiSquid: it works ...
Ganondorf10987: ffs, I literally just wrote 5 hours worth of code (if not more) in Eclipse and now can't paste it here...
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
Ganondorf10987: bruh, it's not that I'm not clear headed
Ganondorf10987: also, don't worry, it's already saved in Eclipse :P
Ganondorf10987: I wouldn't dare write code for more than 2 minutes without saving XD
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
Ganondorf10987: and then I come here, try to open the RMB context menu... literally nowhere to be seen
Ganondorf10987: the paste option*
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"....
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 ?
romrd468: entire code not running
romrd468: I am super confused normally its my fault but I cant explain this.
romrd468: I have 60 lines of code and it somehow decides to stop working on turn 48
romrd468: 60 line not including comments and the standard loop
MadKnight: show me your code
romrd468: ok https://codeshare.io/29E6QK
MadKnight: why do u have so many variables
MadKnight: they will give all checkpoints on turn 1 in higher leagues
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
romrd468: ok will do, am still confused why my code is not working
MadKnight: so many ifs....
MadKnight: one is probably brojken
romrd468: I would expect it to crash instead of having no output
MadKnight: maybe none of them output anything
romrd468: https://www.codingame.com/replay/456091718
romrd468: and how did that player no it should BS
MadKnight: your bot clearly broke after passing 2nd checkpoint
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
romrd468: because its this case that is why I am not in legendary yet
MadKnight: gold boss is stronger
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
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
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 ?
romrd468: that is storing x and y of each possible checkpoint
romrd468: I could probably name things better but I couldn't come up with good names for some of these temp variables
romrd468: I also was using a ton of code I removed which was for debugging
romrd468: I tried using normal array techniques but I found it would erase the original value
romrd468: or make up some funky thingsg
romrd468: I now removed 200ish lines of comments
romrd468: ops messed up at removing XD
MadKnight: it wouldn't
MadKnight: u can use arrays for that
romrd468: I did use arrays just the google answer wasn't right
romrd468: now its showing the errors but it wasn't earlier
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 ?