Chat:World/2020-06-30
midoooo: how to avoid clashs with code size
danabanana: isn't it fun? it kind of pushes you to make the least possible number of lines but still having correct answer
LelouchVC2: It's terrible
LelouchVC2: In the end you have a mess that would get you fired if you submitted anywhere
LelouchVC2: Shortest mode gets you barely working code that probably relies on something it shouldnt
caubeloatchoat24: Mode game is ramdom right?
TheEvilPencilCase_690d: http://chat.codingame.com/pastebin/2245de68-f2eb-41ef-892a-816cf32db930
TheEvilPencilCase_690d: am i way off??
TheEvilPencilCase_690d: http://chat.codingame.com/pastebin/0cbfa6b7-9599-4731-a470-15ca695ac731
BioAuntie_51e0: can someone please help me here i am kind off in the dark:sweat_smile: https://www.codingame.com/ide/puzzle/temperatures
Uljahn: Automaton2000: teach me how to code
Automaton2000: how do you not have a lot of points
danabanana: @evilpencilcase: you have to be careful of setting lowest temp. 0 > negative numbers. also why did you have a hardcoded t > -3? your code should be able to process any values
AntiSquid: get your own grill, stop begging for others to share theirs KrasserTyp
KrasserTyp: so u own this grill?
Astrobytes: Is it a George Foreman?
Astrobytes: Ah I see
Astrobytes: Gas or charcoal?
KrasserTyp: good for cooking raw meat
Astrobytes: Meh. Wanted charcoal. Oh well.
Uljahn: :cat:
Astrobytes: :smile_cat:
KrasserTyp: soooo hows your cat doing
Astrobytes: Great, thanks.
KrasserTyp: nice, good to hear
KrasserTyp: pretty cute cat you got there
jacek: :3
Forres: guys what do u think about starting coding at 21 and studying electrical engineering 3rd class. Before this year i didnt know anything about coding and may i be programmer in 1.5 year if i study hard ?
JeanMax: you can be a programmer right now
JeanMax: go!
Uljahn: you mean studying electrical engineering and computer science at the same time or what?
Forres: nope just studying electrical engineering but i wanna be a programmer
Uljahn: why don't you quit EE and concentrate on programming then?
Forres: because i always fnished it
Uljahn: ah, i see
Uljahn: then yes, study hard and become programmer, nothing wrong with it, im electrical engineer myself :)
Uljahn: also programming for me is more like a hobby so i study in a relaxed way
Forres: thanks a lot , also which programs does an electrical engineer need in electrical and electronic workplaces
Uljahn: it depends i guess, but matlab/simulink and labview are good to know
Scarfield: This site is great for programming in general, but if you want to learn languages for EE there are probably much better suited sites out there :)
eulerscheZahl: from my own time as a student i would add pspice to the list
sirsatan: is it similar to LTSpice ?
Hjax: im sorry Astrobytes ive failed you
Scarfield: there is still time, but you have succesfully joined the cat cluv
Scarfield: club *
Hjax: i have!
Hjax: and hes wearing a bow tie
Scarfield: he sure is :D
Scarfield: gotta look nice for a picture
Scarfield: his curly ears kinda looks like horns :p
Astrobytes: Oh hey Hjax, well maybe today then ;)
Astrobytes: I'm loving his bow tie, handsome lil guy he is
Hjax: black cats are so hard to take pictures of
Hjax: thats probably the best picture ill ever get of him
Astrobytes: Yeah, my other cat's black, kinda blends into most photos
Hjax: i didnt quite finish my rust bot last night
Hjax: finally got into a fight with the borrow checker
Hjax: i resubmitted a few times to see if i could bring the boss down
Hjax: and i had the most unfortunate submit ever
Hjax: above 70% against the boss and snef
struct: Boss strength increases per submit
Hjax: 28-0 against bearded whale
Hjax: and like, 20% against field 3
Astrobytes: lol, not good
Astrobytes: Ah the Rust ownership stuff, kinda what stops me from learning it if I'm honest :D
Hjax: i wonder what field 3 is doing
Hjax: i consistently lose to him
Astrobytes: Not sure, his english is pretty bad so he doesn't talk too much
Hjax: time to learn japanese
eulerscheZahl: what languages do you speak beside english?
eulerscheZahl: don't say python
Hjax: please refer to my country for origin for the answer to that question
Scarfield: hi AsthrelloBots
Hjax: dumb american that only speaks english :D
eulerscheZahl: broken spanish?
eulerscheZahl: i see :D
Hjax: i took french in high school, i was terrible at it
Astrobytes: Hi Scarfumble
eulerscheZahl: for European standards i'm horrible at languages too: only German and English
Scarfield: whats your rollout count for othello? :)
eulerscheZahl: and Latin, forgot parts of it again
Astrobytes: My rollout count? I'm not using MCTS
Hjax: bbl
Scarfield: vir pudens non contra ventum mingit - wise man does not pee up against the wind
Scarfield: oh i though you did MCTS
Astrobytes: dulce et decorum est, pro patria mori
Astrobytes: -,
eulerscheZahl: it's sweet and ? to die for your country
Astrobytes: Nah, a/b here
Astrobytes: fitting eulerscheZahl
Astrobytes: I didn't take Latin but I know that from the Wilfred Owen poem
eulerscheZahl: oh, decorum means the same as dulce
eulerscheZahl: a Hendiadioyn
eulerscheZahl: and of course i misspelled it: Hendiadyoin
Scarfield: oh, now i know what you are talking about :p
Scarfield: hi
Astrobytes: Damn, I haven't heard that word since school
eulerscheZahl: i'm not talking about my own patriotism obviously :D
Scarfield: über Alles :p
eulerscheZahl: wanted to take the basic class in Latin but there was none offered at my school
eulerscheZahl: so i took the advanced class to avoid German and English in my final exams
eulerscheZahl: I hate creative writing
Astrobytes: They dropped everything except German and French at my school a year or so before I got there. Used to offer ancient/modern Greek, Latin, Spanish
Astrobytes: My uncle used to be fluent in ancient Greek, he was planning to be an archaeologist
Astrobytes: Then at uni, his roommate turned out to be gay, so he quit, moved to London and joined the police :P
eulerscheZahl: what a weird reason to quit university :D
Astrobytes: He's massively homophobic and racist, that's why he joined the Met police :D
eulerscheZahl: run or you get infected
eulerscheZahl: but the racist joining the police makes me sad
MisterStiff: fun fact, i got 96 in my college OOP class but i can barely do a codingame challenge
Astrobytes: He's a nasty piece of work tbh, don't have many dealings with him thankfully
MisterStiff: am i alone here?
Astrobytes: Break out your problem solving skills ;)
Scarfield: https://9gag.com/gag/aNenM0A
eulerscheZahl: your OOP class is all about theory. get your hands dirty ;)
MisterStiff: nono, its all practice
Astrobytes: Scarfield - on point!
MisterStiff: we never really looked at theory, he just told us what he wanted and we had to get the end result
Scarfield: to accurate sadly
Scarfield: too *
Astrobytes: yup
Astrobytes: Oh I got my MRI scan results today
Astrobytes: I have multiple fractures in my spine
Scarfield: :o
MisterStiff: bruh what hapenned
MisterStiff: happened*
Astrobytes: It's usually caused by osteoporosis, but at 37 years of age I'm a bit young for that
Astrobytes: So need to have blood tests, then a bone density scan
eulerscheZahl: damn, doesn't sound good
MisterStiff: yikes
eulerscheZahl: at least you know the reason for the pain now
Astrobytes: No, it certainly does not. But yeah euler, it's a relief to know there's something to work towards and it's not a complete mystery
Astrobytes: In other news, I got a few thousand back in tax. Not all bad :grin:
eulerscheZahl: any plans with the money?
Astrobytes: Nah, just save as much as I can. Doing less work currently due to the back issue so nice to have some extra on hand
ZarthaxX: Astrobytes since when do you have those fractures? D: sounds so sad
Astrobytes: Well the pain started in February, but some fractures are older, and some are newer, so it's an ongoing thing
Scarfield: :/ any idea how you have made those fractures?
ZarthaxX: but those happened like passively?
Astrobytes: And I've got quite a high pain tolerance so I wouldn't necessarily know
ZarthaxX: without doing excercise, just normal movement?
Astrobytes: Yeah
ZarthaxX: sheez
Astrobytes: Could be any number of things, I won't speculate for now
Astrobytes: Just wait for tests and scans to rule out or confirm a few things
eulerscheZahl: what's the ETA for doing these tests?
Astrobytes: Blood tests Thursday, should have results early next week. Bone density scan I'm not sure, gotta go to Glasgow for it, and there's a backlog because of the virus
rak1507: You live in scotland?
Astrobytes: I do indeed
Astrobytes: I'm Falkirk area
Astrobytes: Nice to see a fellow Scot on here, don't see too many
rak1507: Is there a way to golf n%4==1 in python by any chance?
MisterStiff: how long have yall been coding? I just finished my 1st year of college in CS
struct: n%4>0
LeBaoHoang8A4: Whut?
rak1507: n%4 can be 2 or 3 as well
struct: ah right
struct: I dont think so then
OiYouYeahYou: Is there a way to turn off the code hints?
struct: grats Hjax
Hjax: not guaranteed yet
Hjax: but this submit is crushing the boss
struct: it is
Hjax: and positive against field 3
Hjax: which is very important
struct: still mcts?
Hjax: yes
Hjax: i made my rollouts smarter
Hjax: slightly slower too
Hjax: but smarter
Astrobytes: oh looking good there man :+1:
Hjax: im ready to lose every single game in wood 1
Hjax: maybe a tea pot will timeout vs me
darkhorse64: Sorry, I fixed my timeouts
Hjax: darn
Hjax: now time for the massive losing streak!
Hjax: will i win a game
darkhorse64: Against me sure
Hjax: hey i won one!
Hjax: woooo
Astrobytes: You'll defo win a few
Hjax: my bot seems like its good against the other mcts bots
Hjax: and bad vs the minimax ones
Astrobytes: It can beat me sometimes
struct: I wonder if someone will make mcts work here
struct: I mean to get to top
MSmits: later struct, later :)
Astrobytes: :grin:
MSmits: finishing off a meta mcts for oware, it's a lot of work, once thats done I'll try othello
Hjax: i cant wait to lose to you MSmits
MSmits: everything that works with minimax should be at least workable with EPT mcts, if not necessarily better
Astrobytes: That's my bet too
struct: hmm this lose is strange dbdr
struct: https://www.codingame.com/replay/475243308
Hjax: yeah that involves an evaluation function though
MSmits: yeah
Hjax: which i havent bothered to write yet lol
MSmits: thats why i think it will probably work
tomatoes: :laughing:
MSmits: you need one here for sure
Hjax: yeah ill get one eventually
Hjax: speed is more important to me right now
tomatoes: https://www.codingame.com/share-replay/475243296
tomatoes: something similar :thinking:
Hjax: now i get to lose to the cool kids
struct: I guess if you are left with 1 piece so early
struct: its insta loss
struct: doesnt matter where you move
struct: But is strange your bot said 0.14 after your move
struct: and jace k was sure of loss
MSmits: from what i read you need to evaluate patterns on the boar
MSmits: it's gonna be challenging to make that fast hjax
Hjax: well i just want my mcts to be fast first
Hjax: before i worry about eval
MSmits: do you mean the sim mostly?
MSmits: or are you worrying about backprop and uct and such?
Hjax: everything, although i think i do spend most of my time in the body of my rollout function
Hjax: im only getting about 7k rollouts on move 2 right now
MSmits: well i wouldnt spend too much time optimizing randomly rolling out if you're going to end up using EPT
Hjax: which doesnt seem very good
MSmits: random rollout is very game specific
Hjax: my rollouts arent completely random anymore
MSmits: you dont learn that much from optimizing it I think, aside from some general bit tricks and such
MSmits: ah ok
ameybhavsar24: join clash https://www.codingame.com/clashofcode/clash/1276129ad36c302c7c5b80fdc9640e31c5c35e9
MSmits: pdep/pext is going to be necessary here for good eval
MSmits: so you can check specific parts of the board
Hjax: yeah java doesnt have pdep
MSmits: C# neither
MSmits: i have a function that does it, but horribly slow
MSmits: only use it for meta mcts in non-bottleneck situations
Hjax: its also useful to mask off the nth move from my movegen while doing random rollouts
MSmits: right yeah that sort of thing
MSmits: anyway, train arriving, ttyl!
Hjax: ive been trying to port to rust, but im not used to rust yet
Hjax: so im not quite done
Hjax: cya
MSmits: you're a bit rusty on rust
Hjax: har har
struct: 16% win rate
struct: And its still only 80 matches played :(
struct: even with 10 players
Hjax: in wood 2 i was pushing 90% winrates
Hjax: now i just get owned
darkhorse64: Don't swim with sharks when you are a small fish
darkhorse64: btw, I am still dead last
Hjax: :(
Hjax: i am very close to being dead last
Hjax: ill try EPT tonight
Hjax: although i want to solve my rust issues
Astrobytes: In this league we measure success in terms of points above darkhorse64 :P
darkhorse64: :grinning:
Hjax: im hoping dbdr will show up today so i bug him about rust things
Hjax: so i can*
Hjax: my win against you is funny Astrobytes
Hjax: your eval gets pretty high and then suddenly tanks
Astrobytes: Yeah it's all over when you grab top lefft corner lol
Hjax: so when you do EPT, you do like, a 5 move rollout and then eval at the end right?
tomatoes: yes
Astrobytes: Yeah
Hjax: is that better than just doing the hybrid mcts where you replace the rollout with a low depth minimax search?
Hjax: the minimax search seems like it would be strictly better
Hjax: i guess its probably a bit slower
tomatoes: top 5 all have minimax i think
Hjax: yeah but they arent doing UCT are they?
Hjax: i thought they were all doing normal a/b things
Astrobytes: I guess what you might lose in speed with the MCTS/mm hybrid you gain in accuracy
Astrobytes: Never actually tried it
Hjax: the papers i see on EPT MCTS are saying that the eval function doesnt have to be particularly good to be a huge improvement over full random playouts
Astrobytes: In terms of top 5, dbd r is using ProbCut, others just TTs and books afaik
struct: still no NN :(
Hjax: which is interesting
Hjax: probcut is some like, fancy linear regression thing right? to estimate the higher depth searches with the lower depth results
Astrobytes: Yeah, pretty cool
Hjax: is it just used for move ordering?
Hjax: moves that the equation says will be good on this iteration go first?
Astrobytes: More about pruning afaik
Astrobytes: I mean so's move ordering but you know what I mean
struct: Multi-Prob cut is mentioned in the wiki of othello
Hjax: oh you actually use it to compute alpha and beta
Astrobytes: Yeah, iterative deepening on the lower depth searches and different stats and params for different stages
Hjax: thats very fancy
Astrobytes: ( referring to multi prob cut)
Astrobytes: Yes, and it's highly effective apparently
Hjax: i follow computer chess a bit, theres so many techniques
Hjax: stockfish is an incredible piece of software engineering, its so fine tuned
Astrobytes: One could easily get lost down that rabbit hole, it's crazy. In a good way
Astrobytes: Yeah, you're not wrong there
joshihsoj: hello nitekat
joshihsoj: nitekat
jacek: sometimes better eval is worse in mcts
jacek: at least that was the case with my bot in oware
jacek: or, more likely, the better eval was 'tuned' for minimax than mcts
Astrobytes: Yeah, I had to tune my eval slightly differently when I switched to the MCTS in oware
dbdr: Hijax, I'm here
Hjax: hi there
Hjax: so the thing i got stuck on is really stupid
Hjax: i have vector of Nodes, and i want my function to return the one with the max uct value
dbdr: (thanks struct, that does look like a bug)
Hjax: but rust doesnt know that theres anything in my vector of nodes
Hjax: and theres no null type obviously
Hjax: so i feel like i have to use optional
dbdr: wouldn't a visit count solve this as well?
Hjax: but when i use optional, the borrow checker blew up saying that the method can only return an immutable reference
dbdr: I don't think Option would be a problem, but I also don't think it's needed
Hjax: how would i do it without option?
dbdr: plain nodes, with a visit count
Hjax: i have a vector of nodes, each of them has a visit count
Hjax: im trying to select the one that maximizes uct
Hjax: i dont think i follow what youre saying
dbdr: me neither :D
dbdr: first, do you have one big array/vec, or one for each set of sibblings?
Hjax: each node has a vec of children
dbdr: ok, that's slower I think, but it can work
Hjax: whats the faster way?
dbdr: one array
Hjax: one array containing every node?
dbdr: yes
Hjax: how do you know where your children are?
dbdr: indexes
Astrobytes: Index + child count
Astrobytes: same in C++
Hjax: so each node stores the index of its first child
Hjax: and offsets?
dbdr: you cab keep them contiguous
dbdr: can
Hjax: can i? those children have children
dbdr: there are several ways to do it of course
dbdr: sure, they have the index of their first child
dbdr: which can be a special value if they are not expanded yet
Hjax: oh i thought you were saying there was a way to do it without keeping the index of your first child
Hjax: which i found confusing
dbdr: no, both Astrobytes and me mentioned indexes :)
Hjax: i wonder how big of a speedup this is
dbdr: by contiguous, I mean the children between themselves
Hjax: ah yeah
Hjax: well thats useful to know, i didnt consider doing it that way
Astrobytes: This is what we were meaning wrt a node pool before
Hjax: i wrote my search without giving it a ton of thought
Hjax: when i tried to add a node pool, i just preallocated an array of nodes, and replaced all "new Node()"s with NODE_POOL[index++]
Hjax: which didnt work very well
dbdr: in Java?
Hjax: yes lol
Hjax: ok so assuming i fix that, im not sure that i know how to write a selection method without a null type
dbdr: Java is different, because you can't have an array of nodes
dbdr: only an array of references to nodes
Hjax: yes thats true
Astrobytes: Ohhh yes indeed
dbdr: loop over your children, find the max, return its index
Hjax: oh
Hjax: ok it just clicked
Hjax: i get it now
Hjax: i should never be passing around Nodes, just ints
dbdr: yes
jacek: or moves
dbdr: this is part of what is new when coming from GC languages
dbdr: you have more control
jacek: and more ways to screw up
Hjax: yeah, definitely a learning curve
dbdr: not in rust :)
Hjax: too used to java and python holding my hand
dbdr: the compiler is your friend
Hjax: the compiler telling you why you screwed up is definitely preferable to having to ask valgrind why you screwed up
Astrobytes: :D
Hjax: although valgrind is a great tool
Hjax: not needing it is better
dbdr: it also only finds validations that do happen while it is running, right?
dbdr: not those that might happen in certain case but you don't have a test for it yet
Hjax: yes, it tells you about memory leaks, and can tell you what went wrong when the program crashes
Hjax: but you have to be able to cause the crash first
dbdr: so your first failure is in production
Hjax: yeah, i like the design principles of rust
Hjax: i just need to learn it
Hjax: my move gen / make / rollout functions all work fine
Hjax: just need to do the search
Hjax: but i was apparently trying to write it too java
Hjax: java-esque*
Hjax: which is why i got stuck
dbdr: that's normal
dbdr: it's not the easiest thing to start with a MCTS ;)
Hjax: i watched my java bot run in visualvm
Hjax: it consumes memory very quickly
Hjax: so do you combine your bitboard class and mcts node class into a single class?
Hjax: right now my node has a bitboard instance
Hjax: othello bitboards are pretty tiny, two u64s and a boolean
dbdr: I'm not using MCTS in othello
Hjax: right, but in general would you combine them? if you were doing mcts?
jacek: you mean to hold game state in node instead of move?
tomatoes: both ways are viable. or store state, or make moves during selection
darkhorse64: Irt's a tradeoff, less nodes in your pool but faster selection (which consumes nodes faster)
Hjax: yeah i hold a game state rather than a move in my node
Astrobytes: Yeah there's no real right or wrong way, game/situation/implementation dependent
Hjax: a move is only half the size of a board
Hjax: i guess a move can be a byte if i want it to be really small
darkhorse64: If you are fast enough, you can consume nodes faster than you reuse them. Strange things happens then
Hjax: 1 << move
Astrobytes: Welcome to the world of Really Fun Bugs.
Hjax: oh boy
darkhorse64: I had that problem in Bandas
Hjax: i was thinking the node pool thing makes tree reuse really hard
Hjax: because its hard to know what nodes are safe to reuse
Hjax: and which ones got moved into your new tree
darkhorse64: It makes it free and easy
Hjax: what? how
Hjax: unless your pool is big enough that you never need to reuse nodes for the entire game
Hjax: then yes its free and easy
darkhorse64: set your mcts root to the last node played. when your index grows too large, reset it to zero
tomatoes: this is where smaller node size coming in
Hjax: yes, but how do you guarantee the index doesnt overrun a node thats still in the tree?
struct: Hjax a move is not half the size
Hjax: in the next search
Hjax: i corrected that a move can be a byte with a bitshift struct
Hjax: a naive move is half the size
Astrobytes: And reset the parent of your new root
struct: ah I se
Hjax: i dont see how you dont have some live nodes at the beginning of your array
jacek: wtf happened here https://www.codingame.com/share-replay/475243296
Hjax: that ruin your day when you reset the index
tomatoes: owned
struct: yeah jacek, dbd r has similar replay vs tomatoes
Astrobytes: Serious pwnage
jacek: i remember in very beginning i had similar thing against trict when he was top and i was bottom
darkhorse64: Hjax: you cannot guarantee that if you consume nodes faster than you free them. In practice, it works not too bad
Astrobytes: If your node array is big enough, and you're reusing the tree then you should be fine Hjax
Hjax: are you just gambling that you dont run over an important node
Astrobytes: *should*
Hjax: seems spooky
Astrobytes: You'll know if you do
Hjax: lol
Hjax: if the mcts got lucky, it could have built the line that was ended up being played very early on
Hjax: and then your root is early in the array
Hjax: and you run it over
Hjax: and explode
Hjax: so the idea is that if your pool is big enough, thats very unlikely?
darkhorse64: If you think hard enough, you will realize that all nodes allocated before your root node will never be accessed and that they are before your root node in the pool
Hjax: yes, but theres also nodes after my root node that are off the tree too
tomatoes: only push new nodes, no overwrite
darkhorse64: they are after in the pool
Hjax: yes, if theres too many dead nodes after my root
Hjax: i blow up and die
tomatoes: no, i had ~1.5m nodes in the end
darkhorse64: The next move will get you back many of these dead nodes
Hjax: yes, but what if i need those nodes right now
Hjax: my pool was too small then?
Hjax: gtg
Hjax: be back in a bit
darkhorse64: You cannot. Time for pencil and paper.
jacek: and soccer
darkhorse64: :wink:
Astrobytes: Always advertising
Astrobytes: I can't stand the word 'soccer'
darkhorse64: Did I say something goofy ?
struct: Hjax unless you do like me and expand every rollout I dont think you will have problems
Astrobytes: No darkhorse64, you just reminded jacek to advertise his Paper Soccer multi
jacek: now youre advertising it
AbundantPuddle: Paper Football?
Astrobytes: I always prefer 'football' over 'soccer' because you kick the ball with your feet.
AbundantPuddle: In America, we throw footballs with our hands.
Astrobytes: Yeah I know, I know
AbundantPuddle: :joy:
Astrobytes: We do it too, but different. Rugby.
AbundantPuddle: We have rugby here as well. Just not as prevalent as football.
Astrobytes: I used to follow American football wayyyy back when I was a kid. I was a Bears fan for some reason.
Astrobytes: Used to have to stay up real late, or get up real early to watch it though.
Hjax: ok i wasnt gone for as long as i thought i would be
Hjax: i didnt consider that people in other countries would pay attention to american football
AbundantPuddle: Lol. I never got the whole sports fanatics thing. Like sports are okay to watch to pass the time I guess, but people go crazy. Watching sports makes me feel lazy. I'd rather be playing them. But American football is an insanely profitable business.
Astrobytes: Rugby's great though. London's a nice place to watch international rugby, all the French, English, Scots, Kiwis etc all together in one pub. Great atmosphere
Astrobytes: No I don't follow sports any more, other than watching some rugby a few times a year
AbundantPuddle: That's cool. That's something I can get behind, bringing people of different cultures together under a similar passion.
Astrobytes: 'soccer' is the same, just businesses to float on the market
Astrobytes: Yeah, it's much a much friendlier atmosphere than watching football/soccer with rival supporters in the building
AbundantPuddle: Everybody else in the world should just change their football terminology to soccer. And instead of American Football, you can just call it football.
AbundantPuddle: :joy:
Astrobytes: lol, shuddup :P
AbundantPuddle: Yeah, I don't know why we have to be difficult and different. I completely agree. It's weird we named the sport where you kick the ball soccer, and named the sport where you throw the ball football, especially when the rest of the world already had football, and it was our soccer.
AbundantPuddle: We just like to piss off the rest of the world I guess. We're pretty good at it.
Astrobytes: It's a very American thing to do I guess (in the general case) :shrug:
Astrobytes: 'American'
AbundantPuddle: Murica!
Astrobytes: The English do the same sort of thing, the superiority complex
AbundantPuddle: I guess it's good we're not the only ones. England and us can share the hate then.
Hjax: the americans and brits are in a contest to see who can have the most bizarre political landscape
Astrobytes: You know it
Hjax: its quite the show of one-upmanship
AbundantPuddle: I think our current country leaders can attest to that.
Astrobytes: You guys really had it for a while but we caught up pretty swiftly
AbundantPuddle: Lmao
AbundantPuddle: I don't know much about U.K. politics, but whenever I found out about Boris Johnson, he really seemed like the UK equivalent of Trump.
Hjax: i just dont understand why he cant comb his hair
AbundantPuddle: Although not as discriminatory.
Astrobytes: Well, they share some traits, but Johnson is nowhere near as thick. He's relatively smart.
AbundantPuddle: He really does strike me as a "special" person. Especially when he wears his helmet.
Astrobytes: Oh, that.
AbundantPuddle: I believe it for sure. Trump is a complete moron.
Astrobytes: An idiot up front is just what you need to get stuff done behind the scenes right
eulerscheZahl: he just got bored from winning that much, as he announced on his previous election rally
AbundantPuddle: I do think he is more hated than he deserves, however. I think a lot of people hate him for the wrong reasons because the politics in this country are so messed up right now, but he is an idiot for sure.
Astrobytes: afk, bbs
AbundantPuddle: But yeah, sorry about discussing politics. The world is a craphole and we're all going to die someday. Lol.
Hjax: its nice to have so many smart people here to talk to btw, i really appreciate the advice :)
AbundantPuddle: By the way, I think the server compilation is broken. It's not running my code correctly.
AbundantPuddle: :joy:
Hjax: struct you here
AbundantPuddle: Yeah, the user base on this site is top-notch.
struct: yea
Hjax: what does the default ai do
Hjax: random legal moves?
Astrobytes: back, sorry, medicine break
struct: its the same as wood 2 bosss
struct: I think
Astrobytes: Isn't the default AI the last boss?
Hjax: oh is it
Hjax: i didnt know that
AbundantPuddle: Sure. "Medicine"
Astrobytes: No it was medicine.
Hjax: i just lost to it, and i was like, please dont be random
Hjax: please be skilled
Astrobytes: lol
AbundantPuddle: Aw, that's no fun.
Hjax: well im glad its the boss lol
Astrobytes: Hey you don't wanna test against a dumb AI right
AbundantPuddle: Well that depends on what the stakes are.
struct: When I want to test vs dumb AI I test vs myself
AbundantPuddle: If it were world domination, I would definitely prefer a dumb AI.
Astrobytes: lol
Astrobytes: yeah fair
Astrobytes: We test vs darkhorse64 struct :P
AbundantPuddle: Is that considered cyber-bullying?
AbundantPuddle: :joy:
Astrobytes: As soon as he fixes his bot, I know he's gonna make sure he destroys me :D
AbundantPuddle: Lmao
ProfessionalScrewUp: Hey..uhhh...anyone know if there's a bot uprising going on?
Hjax: how so ProfessionalScrewUp
ProfessionalScrewUp: I swear there are more bots in CoC...
ProfessionalScrewUp: ..or maybe I'm just that bad
Astrobytes: The number varies depending on the number of available human participants
ProfessionalScrewUp: Hmmm
Astrobytes: But there aren't any extra ones overall no
Hjax: yeah if theres enough humans in the lobby, the bots clear out
ProfessionalScrewUp: Ahhhh
Astrobytes: Dammit, I might change my variable to 'pices' over 'pieces' since I type it so damn often
jacek: does that piece you off?
Astrobytes: :grin:
Astrobytes: Not bad jacek, not bad
Hjax: so does anyone have a plan to dethrone dbdr
Hjax: or is he just the kind of othello now
Hjax: king*
jacek: because i let him
Astrobytes: I think jacek has ideas. Smits is gonna come along soon with something. And I have a feeling tric is gonna come back with a bang
Hjax: ah so kind
Hjax: smits is always scary
jacek: poor foxy though, his 90s algo got rekt
Astrobytes: He updated it a bit tho
Astrobytes: So not pure 90s algo
jacek: no wonder. some advancements in ai happened since 90s
jacek: ;v
Astrobytes: lol
Hjax: he just had an old othello implementation sitting around and uploaded it?
Astrobytes: Yeah, was his first ever big C project or something along those lines
Astrobytes: *game-playing project
Astrobytes: Early 90s
Hjax: early 90s? its older than me
Astrobytes: Wrecked everyone initially
struct: its from 1990
Hjax: 6 years older than me
Astrobytes: There ya go
Astrobytes: I was 8 and still mucking about with my Atari 1040
Hjax: wow a whopping 1mb of ram
Astrobytes: My Amiga 1200 a couple years later had 2. So there :P
Hjax: im spoiled by modern computers
Hjax: my parents desktop computer growing up had 256 mb, my first laptop had 8 gb
Hjax: i actually learned python on a jailbroken ipod touch, because i didnt have a laptop yet
Astrobytes: Nice. Well, you use what you gotta use right
Astrobytes: We had a 486, then a Pentium, donno how much RAM, I was still very attached to my Amiga (got the 8mb RAM upgrade eventually)
jacek: how many mcts nodes would you fit there
Astrobytes: Not many. But it still amazes me how much performance they managed to squeeze out of limited hardware from back in the day. And still do in embedded sector. People should pay more attention to resource usage
Hjax: or you can bury your hardware under 14 layers of abstraction and complain about how slow it is
Astrobytes: Quite!
Hjax: ill learn to write performant things sooner or later, othello is a good first step
Hjax: i dont think my performance is /terrible/ but it could be a lot better
Hjax: hello
Astrobytes: Dude, you implemented your MCTS, got it up and running, got it faster, got it smarter - take your time
Astrobytes: Hi
struct: I dont want to see java bot on top league
struct: Submit the rust bot
Astrobytes: lmao, you have Been Told.
struct: either that or new boss :)
Astrobytes: lol
Hjax: time to get rank 1 with rust
Hjax: er
Hjax: java*
Hjax: to make struct mad
Astrobytes: Top league consisting of dbdr
Hjax: i did want to get wood 1 with java before switching at least
Hjax: to prove i could
Hjax: so im glad i succeeded
Astrobytes: Yup, and wasn't a bad submit all things considered
Hjax: i messed up the wood 2 rankings with my constant submitting lol
Astrobytes: Meh. It's up to everyone else to fix their rank now eh
Hjax: i dropped snef below coffee cup and field 3
Astrobytes: Oof. Even a resubmit would put him back up tho.
Astrobytes: Probably
Hjax: over the last day or two, the boss lost like 3 points, and coffee and field gained like 3 points
Astrobytes: Boss was pushed pretty high even before you started submitting right?
Astrobytes: Like 35+ points iirc
Hjax: yeah
Hjax: side effect of small leagues i guess
Hjax: not a lot of people promoting, so the boss gains points
Astrobytes: Same in underactive multis
Hjax: i had to drag it down a lot
OndrejBakan: http://chat.codingame.com/pastebin/a88344a0-6cd7-4ba6-96dd-322cf8aa0547
tomatoes: list comprehensions
Uljahn: is it for code golf or what kind of "optimizing"?
eulerscheZahl: oh, i optimized for speed
eulerscheZahl: def x(n,m): http://chat.codingame.com/pastebin/59216db8-5902-4057-b434-35b762a3540d
OndrejBakan: I mean for code length.
eulerscheZahl: s =, not s -= ...
tomatoes: sum(i for i in range(n) if not all([i % 3, i % 5, i % 7])) :thinking:
OndrejBakan: print(sum([i for i in range(n) if i % 3 == 0 or i % 5 == 0 or i % 7 == 0]))
OndrejBakan: Oh, I see. :D Thank you. I am just a script kiddie (as you can see), but I love CodinGame. :D
eulerscheZahl: sum(i for i in range(n) if not (i%3)*(i%5)*(i%7))
eulerscheZahl: ==0 would be even shorter than "not"
eulerscheZahl: sum(i for i in range(n)if(i%3)*(i%5)*(i%7)==0)
tomatoes: <1
eulerscheZahl: right
eulerscheZahl: did we win the clash?
Uljahn: :trophy:
struct: ruby would beat it sorry :(
Hjax: ever see the code golf page on stackoverflow
Hjax: people will get like, 5 byte solutions using these weird golfing languages
Astrobytes: It's a strange hobby to me those golfing langs but whatever floats their boats I guess
Hjax: agreed
OndrejBakan: euler, we didn't I already submitted my code before asking :D
Astrobytes: Did they win the post-clash clash then?
struct: p`tail -1`.split.inject(0){|s,i|(i=i.to_i)%3&i%5&i%7<1?s+i:s}
struct: my best try
Astrobytes: trictrac do you have anything incoming for Othello?
trictrac: not yet I am working on eval
Astrobytes: Have you considered ProbCut/MultiProbCut?
trictrac: I have a kind of probcut but not sure that's the "real" one
Astrobytes: dbd r is using it quite effectively, not sure if regular probcut or multi though
Astrobytes: Interesting technique, I hadn't come across it before
trictrac: I will have a detailled look, thank you
Astrobytes: You're welcome (I think?! ;) )
Hjax: oh no, youre making him stronger :P
Astrobytes: All about tough competition ;)
Astrobytes: The tougher the opposition, the more you can improve
Astrobytes: I have a lot of improving to do :grin:
Hjax: usually the opposition is the guy in the mirror who is trying to figure out rusts borrow checker
Hjax: do you do any local testing?
Astrobytes: I thought you'd sorted this part out?
Astrobytes: Not currently, but I'm planning to
Hjax: well, ive sorted out my first fight with the borrow checker
Hjax: there will be more
Hjax: ive been meaning to see how to compile a ref for brutaltester
Hjax: i think you just insert some main class into the ref and build it
Astrobytes: Been a while since I used it, there's a line or two needs changing or something if it's not already compatible, can't remember fully
Hjax: the problem with search games is testing is super slow
Astrobytes: The main class for the ref is just to run locally no? Not for brutaltester
Astrobytes: As in run a game
Hjax: i think brutaltester supplies a main class that you need to insert into the ref
Hjax: to get it to talk to brutaltester
Astrobytes: Can't remember tbh, don't mind me
Astrobytes: lo
Astrobytes: l
Astrobytes: Think there's some info in the forums regarding this
Astrobytes: Not sure if the doc has been updated on github with the required changes or not
Hjax: the github doc talks about inserting a CommandLineInterface class into the ref
Hjax: not sure if thats accurate
Hjax: yeah that looks like what the brutaltester repo was saying
Astrobytes: Yep, seems to still be the case
Hjax: ive considered getting a more powerful cpu for codingame tests
Hjax: that may be going off the deep end though
Astrobytes: lol, dedication
Hjax: i already have a pretty powerful desktop, 6 core 12 thread
LelouchVC2: What are you using now?
Hjax: which can run 2 or 3 games concurrently
Hjax: my processor is an 8700k
Hjax: but imagine the testing on a 16 core 32 thread machine
LelouchVC2: and you want something even more powerful?!
Hjax: it would be beautiful
LelouchVC2: Doesn't seem to me it would make the difference.
Hjax: why not?
Hjax: can run 3x as many games
LelouchVC2: Those are more for servers with heavy loads rather than one heavy loud
Hjax: yeah but im running many games in parallel
LelouchVC2: for servers with many heavy loads*
Hjax: not one by one
LelouchVC2: Why?
Hjax: because its faster?
Hjax: and i want to run 1000s of games
LelouchVC2: why are u running multiple games?
struct: Dont use the referee of othello, its not very fast
Hjax: :(
Astrobytes: Only 4 cores and 8 threads here
Hjax: guess ill write my own othello engine using my bitboard lol
struct: you can, I just did not think of performance
Astrobytes: Actually using your own is a lot better
struct: ^
Hjax: removes the IO i guess?
Astrobytes: Not just for this but any multi you wanna do locally
Astrobytes: You can optimise it to hell and back
Hjax: lol
Hjax: some games speed doesnt really matter
Hjax: UTG was super fast anyway
Hjax: because my bot only took a couple ms to make a move
Astrobytes: Depends how many games you need to run
LelouchVC2: I think the performance gain may disappoint you
Hjax: i usually run 1000 or so
Astrobytes: For a statistically significant outcome that is
Hjax: during contests ill let tests run overnight
Hjax: doing 50k games or whatever
Astrobytes: Just don't do that in summer
tomatoes: a lot
Astrobytes: Well, I guess you probably have a great cooling system so ;)
tomatoes: i'm doing 100 with swap and then arena time
LelouchVC2: everytime u cum, u save it
LelouchVC2: and use it as liquid cooling
Hjax: ...
Astrobytes: ...
LelouchVC2: Are we not open minded inventors?
Hjax: we are not 7th grade trolls
LelouchVC2: old >~>
Astrobytes: Old eh
LelouchVC2: Once u pass 7th grade, ur old
Astrobytes: I am 37
LelouchVC2: You're practically dead according to Hjax
Hjax: ?
LelouchVC2: an 8th grade troll is fine, but those pesky 7th grade trolls
LelouchVC2: !
Hjax: 37 isnt old
Astrobytes: It's 'mature'
Hjax: especially when it comes to a site like this, where experience helps a lot
LelouchVC2: might be taking things too literally and seriously
Astrobytes: You know I only do this as a hobby Hjax? I'm technically a biologist
Hjax: i didnt know that!
Hjax: im a software engineer, and then i go home and write more code
Astrobytes: Yeah, I'm assistant manager at my local wildlife conservation centre and I do pharmaceutical regulatory work in my other time
Astrobytes: And then I code
Astrobytes: Where do you work Hjax? Well, as in what kind of company that is
Hjax: its a contractor, makes submarines
Astrobytes: Oh nice. You'll get along with the Thales guys on here then eh :D
Hjax: ah neat, they are apparently the 8th largest defense contractor
Hjax: i work for the 6th largest, so pretty comparable
struct: time to write submarine physics game
Astrobytes: Nice! Get learning your optimisations so you can beat them :P
Astrobytes: lol struct
Hjax: OOC was a submarine game
Hjax: but i didnt like it very much
Astrobytes: It was nicer than the pacman game
Astrobytes: (imo)
Hjax: i put a lot of effort into the pacman game
Hjax: and just ended up annoyed
Astrobytes: I wasn't keen on either tbh, but I was quite 'medicated' for the duration
struct: When I see fog I quit
struct: On OOC I can understand
Hjax: i can deal with reasonable amounts of fog
Astrobytes: Maybe I'll revisit them when I'm more bored than when I finally feel the need to do UTTT
Hjax: but both OOC and pacman had absurd amounts
Hjax: i really enjoyed the unofficial pr2 contest
Astrobytes: At least OOC was actually about that though, it was pointless for pacman
Astrobytes: Yeah I only put a few hours in to PR2 but I wouldn't have done it otherwise, will definitely revisit it
struct: I think it's very hard to balance games with fog
Hjax: my bot was basically just "run munkres and win"
struct: I think best fog game is WW
Hjax: but it was still fun to make
Astrobytes: lol I forgot about that being built into python
Hjax: yep!
Astrobytes: I need to improve my WW
Hjax: usually for contests i spend the first day doing python, just messing around with the inputs
Hjax: and then port to java
Hjax: but i felt no need to use java for pr2
struct: my ww is just eval available moves
Hjax: python was perfect
struct: So depth 0.5 :p
Hjax: im surprised there arent many python on the leaderboard in pr2
Hjax: free munkres makes it pretty easy to get a strong bot
Hjax: only 4 python in the top 50, and im the highest rated
Astrobytes: Only 4?!
Hjax: shocking right?
Astrobytes: I guess a lot of people didn't realise the benefit of HA
Astrobytes: Munkres/whatevs
Hjax: so many names lol
AntiSquid: the others are python wrapped in C++
Hjax: ?
Astrobytes: I hadn't come across it until euler's PM for whatever contest it was.. CoIF?
Astrobytes: He's trolling ;)
Hjax: ah
Hjax: theres someone in the top 5 with js
Astrobytes: Like recurs e's 'python' bot in CSB
AntiSquid: HA ?
Hjax: hungarian algo
AntiSquid: ah
Astrobytes: How's things squiddo
AntiSquid: just living life ... time passes
Astrobytes: Ain't that the truth
AntiSquid: trying to avoid the news to no avail, it's like the world gets crazier every day and some online "friend" find the need to share me some outrageous news
Hjax: i realized not too long ago how much current events was stressing me out
Hjax: i exposed myself to less news and felt way better
Astrobytes: I've stopped reading the news every morning now
Astrobytes: Yep
Astrobytes: Still catch up with it all at some point but don't make it a daily thing
Astrobytes: How's your ML journey progressing AntiSquid?
AntiSquid: sorry, i think your previous discussion was more interesting
AntiSquid: oh well it's a long road
Astrobytes: You doing Halite?
AntiSquid: i can play with notebooks and do some basic guesses, but that doesn't count as much
AntiSquid: no
AntiSquid: i do the more traditional kaggle stuff
Astrobytes: Hey it's a start eh
Astrobytes: Even just the analysis part is something to get good at
AntiSquid: it's what videos recommend, other who rank high were saying what they'd do if they had to start from scratch: get into doing stuff and experiment until you learn
AntiSquid: so instead of going through massive amounts of theory i go through notebooks and then read theory only as much as i need to understand the notebooks on kaggle
AntiSquid: this advice is most valid for the math part
Astrobytes: Yeah that makes sense I guess
Astrobytes: You don't just get overloaded and give up at least
AntiSquid: kaggle is more about analyzing than just pure straight up ML
AntiSquid: also i find this video like perfect introduction to data science: https://www.youtube.com/watch?v=xC-c7E5PK0Y just use what you need and what works :p
AntiSquid: basically like CG contests, if just basic if-else wins use that
Astrobytes: Hey, us biologists are natural data scientists, we just get the bioinformatics guys to do the work for us
Astrobytes: But yeah, definitely use what you need and don't overcomplicate, it applies to many fields
AntiSquid: contests are messy on kaggle
AntiSquid: might get a bronze medal and it's not even because i fiddled with the parameters of a notebook :/
AntiSquid: i mean i didn't even find good magic numbers
Astrobytes: I wouldn't bother too much about achievements for now, as you say, just learning is enough
AntiSquid: well harder to work on something that isn't active at the moment
AntiSquid: as opposed to something people discuss and release new ideas frequently
Astrobytes: Your main goal right now is learning so it's not a huge issue. There are probably more useful communities elsewhere if you wanna discuss stuff, I heard Kaggle isn't great for that
AntiSquid: who said that?
AntiSquid: i mean whenever someone shares a new notebook there's a discussion on it and then someone takes that notebook improves on it or modifies it, shares the new version and then there's new discussion ...
Astrobytes: Dunno, some people said the community was a little averse to being helpful at times (hey, I don't know what they asked - could've been bullshit, I'm happy to have a fresh opinion)
Astrobytes: Well, that seems pretty cool
AntiSquid: winwin was struggling with submitting a notebook, i kept trying to give him directions, not sure if you meant him
Astrobytes: Maybe some people didn't get the concept
Astrobytes: No no, I think he got it in the end no?
AntiSquid: the UI is a bit confusing
AntiSquid: idk, i have to ask
AntiSquid: hopefully
AntiSquid: maybe it depends what you ask
AntiSquid: people there expect you to try and google some of the basics first
AntiSquid: maybe it's comparable to asking here how to implement tracking the game state?
AntiSquid: or even something more basic
Astrobytes: Yeah, that's why I disclaimered by saying I donno what they asked :P
AntiSquid: most interesting part about kaggle is how people combine models
AntiSquid: can't really do that on CG due to time constraints ... but imagine combining MCTS + GA + meanmax + whatever and then taking an average or a percentage of each prediction to use in the final answer
Astrobytes: I'll forgive your 'meanmax' there, but yeah, it's quite something when you have unlimited time to be able to use all these approaches
AntiSquid: minimax
AntiSquid: :D
Astrobytes: Way too much CG for you, /ban :P
AntiSquid: too much kaggle maybe or too long break from CG type of challenges
Astrobytes: GA to tune your minimax eval param coeffs, minimax as 'eval' in your MCTS
AntiSquid: didn't even follow the halite subforum to see what people there are doing, but last i checked they had weak halite bots
Astrobytes: I've not looked recently, too much going on atm
Astrobytes: Just CGing for now, it's comfortable :)
Hjax: kaggle halite is a disappointment imo
AntiSquid: it is from our perspective, not sure it's the same for a kaggle regular, it might be a fresh interesting concept to them
Astrobytes: Just doesn't seem like the right platform as opposed to how it was before. I'd been looking forward to participate in it's old format.
Astrobytes: But AntiSquid is right I guess
AntiSquid: aicrowd since the actual ML centered contest website, not kaggle which is more about analyzing data, but got into too much trouble, submitted some random modified starter code for aicrowd and dropped it for now
AntiSquid: aicrowd seems to be *
Astrobytes: Ah right, I see the difference even at a cursory glance
AntiSquid: that train challenge was won by C++ wrapped in python last year, now they changed the way they give out the prizes for this year's (hardly modified) version:
AntiSquid: The top three teams in the final round which use a reinforcement learning approach for their winning submission will be awarded one travel grant each.
AntiSquid: for aicrowd
Astrobytes: I'm out, painkillers getting the better of me. Catch you guys later
Hjax: cya
AntiSquid: gn8 Astrobytes
BenjaminUrquhart: I have been summoned by a necropost on one of my forum posts
BenjaminUrquhart: hi
tiwariji264: hi
kdhakal: plz share code
tiwariji264: Your task it to print a grid of width w and height h made out of periods ('.'). Every coordinate on the grid that is inside the rectangle, which has two opposite corners (x1, y1) and (x2, y2), should be a plus sign ('+') instead of a period. The upper-left corner has the coordinate (0, 0).
tiwariji264: Your task it to print a grid of width w and height h made out of periods ('.'). Every coordinate on the grid that is inside the rectangle, which has two opposite corners (x1, y1) and (x2, y2), should be a plus sign ('+') instead of a period.
The upper-left corner has the coordinate (0, 0).