Chat:World/2021-08-16
Wontonimo: yeah, i get it
xxd: perfect for people like me ._.
xxd: honestly i dont have fun while coding it up, the fun and dopamine only comes when it finally works
xxd: its like super polarizing
xxd: actually, i get dopamine from imagining it working in my head
Westicles: I thought you kids get dopamine these days from huffing your grandma's prescriptions
xxd: thats rookie stuff.
Westicles: oh nvm, I was mixing it up with serotonin
Wontonimo: that's a great insight xxd about the dopamine from imagining it working. There is a great study about that.
LinhT.Nguyen: zhong wen shui ping bu cuo
Westicles: wing ding ding-a-ling
xxd: bruh
Wontonimo: english only here
Wontonimo: there are other non-english channels
ChickenCoder123: hey what u guys do here now
ChickenCoder123: which are the best challenges
Wontonimo: Try the Mars Lander series
Wontonimo: if you haven't
xxd: :)
Wontonimo: (turn off your volume)
xxd: yeah, mute the ab
xxd: tab*
Westicles: just curious, why the obsession with mars lander and csb?
ChickenCoder123: after this insanely confusing coc that i just got
Wontonimo: they are fun for beginners
Wontonimo: nice graphincs
xxd: as a beginner i do not condone that statement
Wontonimo: haha
ChickenCoder123: can u guys help with my coc
ChickenCoder123: its about water levels
xxd: its active right now? no
Wontonimo: you didn't find Mars 1 fun xxd?
xxd: mars 1 doesnt count. and i spent longer than i should've solving it
xxd: kept running out of fuel :facepalm:
ChickenCoder123: how do i get to the mars lander thingy
Wontonimo: https://www.codingame.com/ide/puzzle/mars-lander-episode-1
Westicles: I would think young programmers would prefer algorithms over physics problems
Wontonimo: it can also be solved as a control problem
xxd: i agree with westicles
Wontonimo: using PID
Wontonimo: oh :(
Wontonimo: i didn't know kids these days are so abstracted from the physical world
xxd: lol
Wontonimo: okay then, solve this one https://www.codingame.com/ide/puzzle/network-cabling
Wontonimo: route some cable to low rent houses
xxd: thats a cool one
ChickenCoder123: it doesnt seem too hard
xxd: or this: https://www.codingame.com/training/easy/next-growing-number
Wontonimo: or this one https://www.codingame.com/ide/puzzle/the-resistance
xxd: lol
xxd: i had to solve that one in C++ since python timed out
Wontonimo: i did it in python
xxd: wow
ChickenCoder123: im mars lander does rotation of +-15 degrees happen instantly?
xxd: did you use a trie?
Wontonimo: let me time it ... just a sec
Wontonimo: 0.063 seconds to complete "Long sequence, large dictionary"
xxd: darn
xxd: do you use string slicing?
xxd: or a trie
xxd: (or hash?)
Wontonimo: no. i build a large lookup of combinations so far
xxd: not sure what you mean by that
xxd: well, the good news is naive string slicing is fast enough in C++
xxd: so i sorta cheesed the problem
ChickenCoder123: doesnt it just mean combinations of height and speed that output thrust?
Wontonimo: for mars lander 1? yes
ChickenCoder123: hey how do i output something in like another output stream, because if i output something in standard output stream it takes that as control for my rover
Westicles: use the error stream
Westicles: it says in the default code
ChickenCoder123: for mars lander if power could be a float then, after speed reaches like 30 or something you could just set power to 3.711 lmao:joy:
xxd: :flushed:
ChickenCoder123: is there a second part to the mars landing?
ChickenCoder123: becos it said that there were three levels
Wontonimo: https://www.codingame.com/ide/puzzle/mars-lander-episode-2
xxd: its a lot harder
xxd: but YMMV
Wontonimo: don't shoot for solving all test cases quickly. if you just solve 1, feel accomplished !
ProCoder03: it took me 2 days to just solve the first one !!
Wontonimo: Here is a physics based solution (not PID) for the first one https://www.codingame.com/replay/575819757
ProCoder03: the horrible part is, it took me 11 or 12 if elses
ProCoder03: PS: I didn't use PIDs
ProCoder03: why is optimization so difficult :crying: ??
Wontonimo: optimization of what?
ProCoder03: the optimization quest map
Wontonimo: which one are you on?
ProCoder03: the 3rd one , some code of rings
ProCoder03: wait idk anything abt brainf**k
Wontonimo: i kinda feel like my solution to Ring of Codes is a big cheesy
Wontonimo: *bit
ProCoder03: Mayan Calc is like ASCII art right???
ProCoder03: and one more what is 'Radix' ???
Wontonimo: for Code of the rings, i calculate the cost of changing every rune to the letter that is needed and then greedily pick the one with the least cost. That's it really.
ProCoder03: ohh!!!!
Wontonimo: it is dumb tbh, because it just ends up cycling between 2 runes usually
Wontonimo: a beam search would be way better
Wontonimo: i guess it is a beam search of width 1
Wontonimo: :P
Wontonimo: the Mayan Calc is a little more than ascii art
ProCoder03: Well what is a beam search ??:sweat_smile:
Wontonimo: do you know what a BFS is?
Wontonimo: or DFS ?
ProCoder03: nahh.. I am just started learning trees
Wontonimo: ok. Check this out https://www.youtube.com/watch?v=j1H3jAAGlEA
ProCoder03: thanks !!!
xxd: I watched that guys videos for GA and minimax
xxd: RIP
ProCoder03: wait do I need trees to understand search ??
KamadoTanjiro: hi
xxd: trees?
KNTK: Graphs probably
xxd: as in the data structure of a tree?
Wontonimo: yes, once you get into the weeds of it, you'll need trees
Wontonimo: ;)
ProCoder03: ohhhh....
xxd: Oh no, Code of the rings is a necessary quest checkpoint?
xxd: why are they making us do certain problems
xxd: this is pain
Wontonimo: who is making you?
RightHandElf: dopamine
RightHandElf: I should start playing cookie clicker again
Wontonimo: wow, a lot of people online suddenly. did school just start somewhere?
xxd: it's 7:44 for people in france, it seems
ProCoder03: Ig Codingame is fast becoming a place where students are there instead of school
ProCoder03: including me !!
ProCoder03: @xxd are you in high school ??
Westicles: xxd is a professor emeritus at caltech
ProCoder03: wow !!!
ProCoder03: just got confused because bcoz his profile said some school
Westicles: oh, well not really :P
xxd: westicles is trolling
derjack: good morning
EvilBrocolli_1bf6: good morning
TheOneCode: Why isn't it possbile to end up my code optionaly (without ranking of course)
Uljahn: because entering a clash means you agreed to compete
BryanNativel: yo
TheOneCode: yeah the Code until 15minutes should go for the rank, but if you are not lead the code to the end that you can optional complete it, so that that code doesnt go to rank-system...
Uljahn: just submit it and go ahead, clash rank is a lie
derjack: life is a lie
RightHandElf: that's deep
ProCoder03: hello @Armin_programmer2010!!!
Armin_programmer2010: how can I download my source code for this site?
UnnamedCodinGamer: there is a history tab, after you submit you can copy your code from there
Armin_programmer2010: hey guys I'm looking for a good python course
ProCoder03: learnpython.org
ProCoder03: or http://bedford-computing.co.uk/learning/wp-content/uploads/2015/10/Python-Cookbook-3rd-Edition.pdf
ProCoder03: if you want a book :pointup:
ProCoder03: urw
Armin_programmer2010: did you have a quesion @IMustFarm?
TheOneCode: there is no "CodinGame" in twitch lol
TheOneCode: i looked for streamer on twitch but there is no one
ProCoder03: prob there is no one streaming now !!!
Armin_programmer2010: :neutral_face:
Armin_programmer2010: hey guys who want to join the fall challenge 2021?
Armin_programmer2010: you can register in the compete option in the activity tab
Almin5k: hello
Almin5k: how are you today? :)
Almin5k: Do you know arman
Armin_programmer2010: good thanks
TobiasA: i can see a pattern emerging:spy:
YusufEmad04: hellllllllllooooooooooo
Almin5k: bonjour
[O-O]: come on ,where are you from
derjack: :scream:
Svat623: privet vsem patzani i devochki
valentino.sm: pashol nahuy
valentino.sm: sam idi suda ti ubludok mat' tvoyu
Astrobytes: Guys, English in the World chat please
Uljahn: nah, i see you swearing :smirk:
derjack: sacre bleu!
Astrobytes: Yeah, I didn't check until afterwards sadly
DJUndyingKnight_b8a9: hey, can someone help me with syntax? im very new to coding :D
RightHandElf: just tweak it until the editor stops complaining
DJUndyingKnight_b8a9: i tryed :<
DJUndyingKnight_b8a9: elif plus_temp = 5526 and minus_temp = -273: http://chat.codingame.com/pastebin/811562ae-18ed-4e87-b581-9b6dae7502cb
Astrobytes: ==
DJUndyingKnight_b8a9: ah it worked, kinda, my solution was wrong, but at least i got to the same error as before :D
TheOneCode: Where can i find my history?
Uljahn: it's separate for each puzzle/multi, so enter browser IDE first, then it should be on the left
Almin5k: what you know about rolling down in the deep?
Q12: When your brain goes numb?
Almin5k: You can call that mental freeze
BryanNativel: hello i'm on Shadows of the Knight - Episode 1 it's hard x)
Merfi: i just did it, very easy
Almin5k: u just have to oteeoxnee
Merfi: easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy, easy,
BryanNativel: oh
BryanNativel: :'(
Almin5k: he has a frisbee
BryanNativel: ok x)
Almin5k: :sunglasses:
BryanNativel: i nerver give up so
Almin5k: keep fighting:muscle:
BryanNativel: i'm very bad in algo x) so i try lvl up
Merfi: i pray for u!! and give u strength :muscle_tone5: :muscle_tone5: :muscle_tone5: :muscle_tone5: :muscle_tone5: :muscle_tone5: :muscle_tone5: :muscle_tone5: :muscle_tone5: :muscle_tone5: :muscle_tone5: :muscle_tone5: :muscle_tone5: :muscle_tone5: :muscle_tone5: :muscle_tone5:
BryanNativel: how many time you code ?
Uljahn: Merfi: stop spamming pls
BryanNativel: :pray:
Almin5k: It's easy to have faith everything is going to work out, when everything is working out You see, it's much harder to have faith, when you are facing challenges in your life But that is exactly when you need to apply your faith
Almin5k: you know what i mean
Merfi: thats true my friend :ok_hand:
Almin5k: thank you
BryanNativel: :ok_hand:
TobiasA: :eyes:
Broski_974: thanks fo advice
Almin5k: no problem
Almin5k: The secret of getting ahead is getting started
Broski_974: you coding since long time ?
Almin5k: No, not for long
Almin5k: but i keep grinding:muscle:
Merfi: All our dreams can come true, if we have the courage to pursue them. If you can dream it, you can do it
Almin5k: wise words merfi
BryanNativel: I want work in google an leave france country xD
Almin5k: you can do it my friend, you have to dream before your dreams can come true
Merfi: very trye Almin5k. If people are doubting how far you can go, go so far that you can’t hear them anymore
Broski_974: x)
Broski_974: google : "best citation ":eye:
Almin5k: it comes from the hear
Almin5k: t
Broski_974: x)
Uljahn: so guys you're not really interested in coding, are you?
Broski_974: ?
Sumit-coder: ?
z7m10n: yo wassup
z7m10n: any one already working
Dev-Wings: Hello good people. I have been invited to take a technical assessment for an entry developer(front end development) on this platform.If there's any heads-up you would want me to know before taking this test please let me know.
TobiasA: i don't have any but goodluck
martinpapa69: if you are first time here on this site solving some easy puzzles first might help you to get used to the platform
FBF_Luis: hi dev-wings. I also found this because of a technical assessment for a company. The only thing I remember from the test is that it has nothing to do with the puzzles presented here
mtagizadee: Hey everyone. How is it going?
FBF_Luis: can't figure out what is wrong with my c++ code
Totototo34twgrettgw: C++ is probably what is wrong
Dev-Wings: Appreciated.I must admit this was a lot to absorb and overwhelming at first considering the amount puzzles but I get the idea.Thanks again good people for the feedback.
michaellan: C++ is gr8
FBF_Luis: I bet it is, but it is not beginner friendly at all
xxd: are you getting error messages?
FBF_Luis: yes, my last 20 minutes were just googling error messages
FBF_Luis: I'm getting there slowly (I think)
sheaaaaaaaaa: if you start with the hardest then everything else will be easier
xxd: googling error messages is a good skill to have
FBF_Luis: I started with python, but next month I'll start working for a company that asks for c++
FBF_Luis: they know I'm a beginner but still chose me, so I'm doing my best until then :)
xxd: congrats man
sheaaaaaaaaa: congrats
KalamariKing: :0
KalamariKing: WOW my coc rank fell from 200 something to 1805
xxd: lol, doesnt matter TBH
xxd: I'm super close to getting mars lander working, in theory. Just have to write the fitness function
TobiasA: aay kalamari
KalamariKing: ayy someone remembers me
BlaiseEbuth: No. He's just polite.
KalamariKing: oh hey blaise
BlaiseEbuth: Who are you ?
BlaiseEbuth: :thinking:
KalamariKing: idk
KalamariKing: who am i
TobiasA: bet you don't remember me
KalamariKing: I do
KalamariKing: I remember quite a few of you
TobiasA: good
andrefpoliveira: Hey. Im finishing MARS LANDER - EPISODE 1 with 309l but I cant get the achievement. Is this normal?
TobiasA: did you submit?
andrefpoliveira: yeah
TobiasA: try and submit again
andrefpoliveira: i did 4 times xD
TobiasA: damn
BlaiseEbuth: 309l is from IDE's tests ?
andrefpoliveira: yeah. Can I see the results from the submission?
BlaiseEbuth: Don't remember, but you probably don't do so well on validators
andrefpoliveira: I thought it was the same test
andrefpoliveira: Well, will try to get a better result on the IDE
BlaiseEbuth: You can see your validators result
BlaiseEbuth: Click on 'details' in the 'results' tab
andrefpoliveira: Oh on the validator i get 294. Ok thanks!
xxd: oof.
xxd: what strategy are you using? andrefpoliveira
andrefpoliveira: Ahah its not a good one xD
andrefpoliveira: Just checking height
BlaiseEbuth: "don't crash"
andrefpoliveira: basically yeah
xxd: O _ O
andrefpoliveira: The good: http://chat.codingame.com/pastebin/9ba8c543-7dc6-447a-a678-b41d555df895
andrefpoliveira: xD
xxd: hmmm :thinking:
BlaiseEbuth: You probably get better result using speed instead of y
xxd: yeah. check if v_speed < -35 or something
andrefpoliveira: Yeah true
xxd: man im so close to solving ML i can feel it flowing thru my veins
xxd: i think my GA might be too slow tho
Darius_504: how do i fix de angle in wood 2
BlaiseEbuth: ml2 or 3?
xxd: wood 2?
xxd: since when was there leagues
AllYourTrees: whats ML?
xxd: mars lander
AllYourTrees: oooh
BlaiseEbuth: Yeah, you know, the wood2 league of THE unique multiplayer game of the site
BlaiseEbuth: xxd ml2 or ml3
xxd: all of them...?
xxd: my GA should technically work for all situations
xxd: just might not converge corretly on things like cave, wrong side
BlaiseEbuth: Even cave? Good.
xxd: technically*
xxd: in theory
xxd: i'm probably still a week from getting it
TobiasA: oh oh what about the replay can i see
xxd: im running all the tests locally on my computer right now
xxd: no replays to share, yet
TobiasA: oh
TobiasA: when you get it i would really like to see the replay
BlaiseEbuth: I only made a lazy solution for ml2 that can't work on ml3. ^^
BlaiseEbuth: One I'll do it seriously...
xxd: i think the annoying part to tweak will be the evaluation/fitness scoring function
BlaiseEbuth: In any search algorithm depending on a
eulerscheZahl: just take the fuel consumption?
BlaiseEbuth: *an evaluation function
eulerscheZahl: fuel works fine when you can ensure that you find a valid path
eggeggwe: I spent a day solving a easy puzzle, and I finally did it :D
BlaiseEbuth: gg
xxd: grats
xxd: which one?
BlaiseEbuth: onboarding :3
eggeggwe: temperature, I am new here.
eggeggwe: it's time to solve more puzzles :3
BlaiseEbuth: Go go go eggeggwe!
dmin: im going to be honest, I can't solve temperature
dmin: i think i just cant understand the prompt lol
dmin: kinda embarrassing
BlaiseEbuth: What don't you understand?
TobiasA: aayy i'm not the only one who is bad at easy things
TobiasA: and is also embarrased about it
eggeggwe: that's not a big deal, I can't in the beginning, either. I spent 2 hours to understand what should I do.ww
BlaiseEbuth: No need to be.
Wontonimo: hey, welcome eggeggwe
Wontonimo: hello regulars :wave:
eggeggwe: thanks for welcome me. :D
TobiasA: hi wontonimo
eggeggwe: hello to you, too. wontonimo
michaellan: hi wontonimo :)
Wontonimo: hey xxd! I was going to ask you what fitness function you are thinking of using? Probably *don't crash* is a good one
gilufin: how can I find my clash chat if i close it?
Wontonimo: it's gone dude
gilufin: bug
Wontonimo: gone for good, lost in the void
gilufin: not if I open from the alert when the clash is over
michaellan: you can use browser history
michaellan: oh wait nevermind, misread
michaellan: anyway, i'm over clashes now
gilufin: reload the page and it's back
michaellan: Wontonimo: I'm having trouble writing the distance metric
michaellan: i wanted to do the distance-along-the-surface but its much harder than i thought it to be
Wontonimo: did you try the flood fill thing I mentioned?
michaellan: right now i'm just taking (index of crash surface - index of landing surface) * some constant
michaellan: wouldnt that be slow?
michaellan: like 7k by 3k map
Wontonimo: you only have to calculate it once at startup where you have 1 sec anyway
TobiasA: wait what
michaellan: I think if I'm using GA, I'm supposed to get the answer in the very first second and then just print out the moves for the rest of the game...
michaellan: maybe thats wrong
Wontonimo: and you make it 4x4 or 10x10 granularity
TobiasA: you can use flood fill in mars lander?:hushed:
michaellan: ah of course
michaellan: what is it with me and not being able to register the fact i can downscale things
Wontonimo: and if the flood fill increments, then you have a distance field from the landing pad
michaellan: yup
michaellan: my visuaslizer is nice though
michaellan: which comforts me
TobiasA: you have a visualizer:0
TobiasA: fancy
michaellan: its super extensible
michaellan: i wrote it for CvZ
TobiasA: damn
TobiasA: you are really good at coding
michaellan: it crashed my browser when i tried uploading 670k frames though
TobiasA: what language did you use?
michaellan: JS
TobiasA: sheesh
eggeggwe: well....How I save my program?
Wontonimo: ctrl-c ctrl-v
michaellan: ctrl-c alt-tab ctrl-v
Wontonimo: if it is a multi (bot battle) or a challenge
eulerscheZahl: alt-tab?
Wontonimo: then it saves every time you submit
michaellan: alt tab to go back to text editor
Wontonimo: and for multis if you send to arena it also saves every version in your history (left hand side)
eulerscheZahl: oh, that's usually ALT+2 for me. VS Code on virtual desktop #2
Wontonimo: http://chat.codingame.com/pastebin/33627748-627d-44ae-bd44-6956d539679b
Wontonimo: ^^ example of mars flood fill
Wontonimo: with increment
eggeggwe: OK,so if I submit my program,I still can continue coding it next I open the program?
michaellan: damn
michaellan: why does that pastebin look so... satisfying to look at
michaellan: do you use a BFS?
michaellan: how do you get all the starting poitns
Wontonimo: no, flood fill
Wontonimo: ??
michaellan: because the input is in the form of lines
TobiasA: wait how does that even work
Wontonimo: you look for the horizontal line
eggeggwe: oh wait. I got it. Thanks everyone. :D
Wontonimo: you already know how to calculate the landing pad
Wontonimo: what do you mean TobiasA?
TobiasA: last time i checked the height of the mars lander screen was larger than 12
michaellan: i think he chunked them into like 50x50-pixel blocks
michaellan: cuz it doesnt have to be super precise
TobiasA: oh makes sense
TobiasA: but damn that looks clean
michaellan: when you're floodfilling, do you have to cehck for collisions?
michaellan: with the lines
Wontonimo: i wasn't going to paste a 4x4 pixel version ... just too bug
Wontonimo: *big
michaellan: i guess the floodfill is better than distance-along-surface cuz you can get the distance metric even if you dont land in time
Wontonimo: for collision with lines, I used a polygon calculation. I added 3 lines to the surface, left, right, and bottom, such that the surface is a closed polygon
Wontonimo: then there are calculators to check if a point is inside the polygon
**michaellan is not smart enough to understand wontonimo
Wontonimo: another method is to walk along the terrain lines, and fill the grid with -1 (or watever you are using to mean crash) before the flood fill
Wontonimo: if you want a border of safety, then when you are walking along the terrain lines, don't just fill that square, but also fill the squares nearby
michaellan: how do you walk along the terrain lines though
TobiasA: bet it has to do with slope
michaellan: hmm
michaellan: OH
michaellan: you walk from one x to the next x value
TobiasA: not sure
michaellan: and then use the slope
michaellan: to get the approximate y value
TobiasA: yea that's what i was guessing
JackSepticEyeSpeedISkey: hey could i have some friends?
JackSepticEyeSpeedISkey: here is my escape room link https://escape.codingame.com/game-session/LMZ-W7m-TvW-jha
Wontonimo: yeah, that's one way to do it xxd
Wontonimo: you have to consider the case of vertical lines, in which case walk the y axis
michaellan: ah
oxydowe: hi, is it possible to prevent font resize in editor panel?
michaellan: wait, theres only gonna be one horizontal line
michaellan: so i think i should just walk y
Wontonimo: and instead of walking 1 x at a time, you cam walk in increments of your grid size
michaellan: this is so complciated
Wontonimo: for best results you want to walk x or y depending on which one has the least slope
Wontonimo: so that you don't skip squares
michaellan: It's *sorta* working https://imgur.com/a/CQABa3F
michaellan: not really
michaellan: i think its my fitness function thats jank
michaellan: i'm worried bc i cant run that many iterations
Wontonimo: nice. mine really improved when i calculated early crash conditions, for example
michaellan: what does that mean
Wontonimo: if 1500 units above the landing pad I know that the lander is descending so fast that it would crash no matter what, then i count it as crashing in the air where it currently is
Wontonimo: doesn't have to be 1500 units, whatever
michaellan: oh interesting
michaellan: would have never thought of that optimization
Wontonimo: otherwise you spend a lot of time searching unrecoverable crashes
michaellan: i'm not sure whether i should store my thrust and angle as floats or ints
michaellan: yeah true
Wontonimo: trying to turn sideways or speed up
beepbooping: anyone know how a ruby library with the #!ruby thing
michaellan: are you in a shortest-mode clash right now?
michaellan: the sad part is i'm probably still really far from solving ML
JackSepticEyeSpeedISkey: oh ok
Wontonimo: calling it ML is really confusing. I keep thinking your are talking about Machine Learning.
TobiasA: me too:joy:
MSmits: what does he mean by ML then?
Wontonimo: Mars Lander 2 & 3
MSmits: ohhh ok
Wontonimo: using GA
MSmits: yeah don't call it ML on this chat. Half the time we talk about machine learning here :)
Wontonimo: maybe ML3 or ML23
MSmits: ye
MSmits: hey Wontonimo, I got confirmation today my oware endgame book is correct!
Wontonimo: oh! How did you do that?
jacek: by whom
MSmits: I submitted a normal (non ML) bot using the meta mcts generated book that uses the endgame book. It got 3-2 vs robo on submit
MSmits: and thats because it explores the best paths first
MSmits: aka, Robo's
MSmits: i dont win >50% though, because my bot is weaker on 36 seeds and lower
Wontonimo: why is that?
MSmits: but the fact that it wins and predicts 18 of Robo's moves tells me it's correct
MSmits: because it doesnt have hardcoded moves in the <= 36 region
Wontonimo: ah. is robos a NN ?
MSmits: it's the nr 1 NN, far better than the rest
MSmits: btw, just to be clear, i used no outside information. this is just bruteforce and meta mcts selfplay
MSmits: no counterbooking or some such, the program has no capability for it
Wontonimo: did you submit it?
MSmits: yeah, it's still 10th
MSmits: because it sucks vs weaker players (meta mcts didn't go there)
Wontonimo: ah
MSmits: i am just using this to test if the endgame book is correct though, it's a complicated process to generate it. I was worried about bugs
Wontonimo: my son tells me that fencing is like that. Train too much with the pros and noobs can take you out super easy.
MSmits: well i dont mean actual weak players. I just mean the other NN's :P
MSmits: my bot wrecks all non-NN's
Astrobytes: I only resubmitted oware 'cause martinpapa69 keeps spamming submits and pulling me down :P
martinpapa69: weaklings
Wontonimo: yeah, i know. i wasn't saying everyone else is a noob in Oware
MSmits: Marchete has brought forth a legion of bots that beat me :)
Astrobytes: Nice that it's working MSmits
Wontonimo: excellent, team effort of making you have to adapt
Wontonimo: gotta learn new tricks
MSmits: yeah, I have been putting off working on the NN part. I have no more excuses to put it off now
Astrobytes: Work?
MSmits: another week off :)
Astrobytes: Ah right, my bad
Wontonimo: I thought you had a backyard
Wontonimo: that needed fence posts and stuff
Astrobytes: that was ages ago :D
MSmits: sure, but i have these two big green bins that get emptied every 2 weeks and i fill them in like 1 day
MSmits: so i cant do this all week
MSmits: i cut down some bushes, mow some grass and that's it
MSmits: backyard slowly coming into shape though
Astrobytes: nice
Wontonimo: just gather it into big pile in the middle of the road and burn it. easy peasy
MSmits: yeah, don't think the neighbors will appreciate :)
Wontonimo: i have that same problem
Wontonimo: another way to train a NN is to have a child
Wontonimo: and if it's blond, it will be an ANN
MSmits: yeah
MSmits: artificial blonde ?
Wontonimo: Artificial NN
Wontonimo: okay, not my best joke
**Astrobytes sends a taco
Wontonimo: lol
Wontonimo: (that's me catching it)
Astrobytes: I know it ain't Tuesday but whatever :)
jacek: oO
Wontonimo: you don't know about tuesday Jacek?
Wontonimo: https://www.youtube.com/watch?v=KzbxpzKwDXA
MSmits: it's tuesday in Australia Wontonimo. Just talk to an Australian here on chat while you eat it. That covers it
Astrobytes: lol, awesome Wontonimo
martinpapa69: remembert to write horizontally mirrored letters, so they can read it
martinpapa69: ɐᴉๅɐɹʇsnɐ ɯoɹɟ ǝๅdoǝd oๅๅǝɥ
TobiasA: :joy:
JackSepticEyeSpeedISkey: Hello!!!
Wontonimo: hey JackSeptic
TobiasA: hoi
Wontonimo: Have you tried thing outside of clash of code JackSepticEyeSpeedISkey ?
Wontonimo: we were just talking about mars lander and oware
Wontonimo: https://www.codingame.com/multiplayer/bot-programming/oware-abapa
Wontonimo: https://www.codingame.com/training/medium/mars-lander-episode-2
JackSepticEyeSpeedISkey: can u guys join my escape room?
JackSepticEyeSpeedISkey: https://escape.codingame.com/game-session/syb-0B6-FZQ-Z6I
Wontonimo: no thanks
michaellan: i want to take a break from Mars Lander but on the other hand i don't think i'm too far
michaellan: one question that I keep having is, I have some metric where a higher value is worse, but I want to convert it into a metric where a higher value is better
JackSepticEyeSpeedISkey: im not good at coding yet im bad at the clash of code
michaellan: aka distance -> fitness score
michaellan: i'm not sure what I should use to convert it
michaellan: subtract the original value from a large constant?
michaellan: that's what i'm currently doing but I don't know if it's any good
TobiasA: you can do 1/distance maybe
michaellan: ah true, i didnt think of that
Wontonimo: you can optimize to lower a value
Wontonimo: or to raise a value
michaellan: true but like
michaellan: fuel: more = better; distance more = worse
Wontonimo: used fuel = worse
michaellan: damn smart
Wontonimo: used full + distance = bad
michaellan: I'm gonna probably re-write my mars lander GA from scratch
michaellan: there's just so much cognitive things to keep track of
TobiasA: i feel your struggle
TobiasA: :pray:
michaellan: :pray:
michaellan: i'm using a really suspicious method of finding intersections
michaellan: that i found on Stack overflow
michaellan: using counterclockwise checks
michaellan: WHAT?? Di_masta only needed 400 generations to converge
michaellan: bruh... I am not converging on solution after 10k :rofl:
eulerscheZahl: also depends on the population size
eulerscheZahl: that counterclockwise test for crossings is pretty common
eulerscheZahl: https://github.com/eulerscheZahl/TryAngle-Catch/blob/master/src/main/java/engine/Edge.java#L40
michaellan: coolio
eulerscheZahl: oh, lastweektonight has an IT topic this time
TobiasA: what's lastweektonight?
eulerscheZahl: https://www.youtube.com/watch?v=WqD-ATqw3js
eulerscheZahl: they have a new topic every week and talk about it for 20-25 minutes
eulerscheZahl: recent issues that are sometimes not even that well known
TobiasA: oooh it looks interesting
michaellan: I'm not getting enough dopamine from solving Mars lander, gonna try some other stuff
michaellan: for LoCM, I keep seeing something called ClosestAI/ClosetAI, I'm not sure what that is/where to find it
michaellan: it apparently has the best draft strategy
michaellan: i'm guessing thats a higher-league bot?
eulerscheZahl: closet won the contest
eulerscheZahl: would be first in the multiplayer too but never submitted
TobiasA: "I might as well be a faster idiot":joy:
TobiasA: i like that guy
TobiasA: what is LoCM?
Scarfield: Legends of Code and Magic
reCurse: Locm had significant changes in the multi so it's not clear the contest results are 1:1 /shrug
eulerscheZahl: oh right. i totally forgot about those
eulerscheZahl: just patched my bot so it wouldn't crash and called it a day
michaellan: I didnt see anybody called closet on the leaderboard
reCurse: He didn't submit in multi
eulerscheZahl: https://www.codingame.com/contests/legends-of-code-and-magic-marathon/leaderboard/global
michaellan: i'm looking at the contest leaderboard though
eulerscheZahl: sprint or marathon leaderboard?
michaellan: oh.... what's the difference?
Scarfield: did he share more than his ranking of the cards?
eulerscheZahl: wrote a post mortem
Scarfield: ok kewl
eulerscheZahl: https://www.codingame.com/forum/t/legends-of-code-magic-cc05-feedback-strategies/50996/25
eulerscheZahl: he's still occasionally active on the CG discord
Scarfield: i actually looked at my python code for LoCaM, one of the first multies i tried, damn its ugly xD
eulerscheZahl: the game doesn't deserve a nice bot code
michaellan: D:
eulerscheZahl: i'm biased. i just hated the game
michaellan: luck?
eulerscheZahl: might have been better in a shorter format. doesn't have the strategic depth to keep us busy for long
eulerscheZahl: you end up fighting over tiny differences. and RNG in draft => gameplay order has a heavy impact
Scarfield: i played some Magic back in the day, so i liked the idea of coding something playing a card game, but yea others have been saying the same as you
eulerscheZahl: anyways, good night
Scarfield: :wave:
Benji-the-scripter: cant code so good
Benji-the-scripter: actually a noob at coding
Scarfield: hi new, im dad
Scarfield: how new though, this site kind of assumes you know the very basics. you know for loops and the like=
Geiler: What should I do if I can't solve a challenge? I can't look at other people's solution because they most likely use a language I don't know
Scarfield: you cant see others solution before you have solved it yourself, but ask a specific question and you might get an answer
Scarfield: chat seems to have been a bit slow lately, so dont expect too much help :/
Scarfield: what challenge are you having trouble with? :)
Geiler: Right now I'm not having trouble with anything, last time I couldn't solve the "Inverse a square matrix" problem
Benji-the-scripter: i cant code =(
Geiler: I have looked up code on google but I hate reading other people's code
Geiler: They don't use my style, name their variables single letters
Benji-the-scripter: call me noob
Scarfield: i dont know the "inverse a square matrix" problem, nothing named that here(?) but there are plenty others to choose from :)
Benji-the-scripter: i have coding problems =(
michaellan: benji why dont you get to work learning how to code
michaellan: do you write lua for roblox or something?
michaellan: thats the only demographic i know who call themselves "scripters"
Astrobytes: If you're having code problems I feel bad for you son, I got 99 problems and my scripts ain't one
Scarfield: JayZstrobytes xD
Astrobytes: Scarfoncé :D
Scarfield: LOL
Scarfield: put a ring on it
Astrobytes: I can't see your halo
Scarfield: :innocent:
Astrobytes: lol, I got nothin'
Scarfield: i have a big problem.. cant decide which multi to go for after C4
Astrobytes: I've been optimising some of my optims
Scarfield: ooh
Scarfield: i didnt even implement the idea i gave domi ko for marslander myself
Astrobytes: wasn't that quite some time ago?
Scarfield: yup
Astrobytes: lol
Astrobytes: There you go
Scarfield: xD something else caught my attention
Astrobytes: Which is...
Scarfield: not a bad idea, its a nice optim
Astrobytes: *was
Scarfield: the idea?
Astrobytes: No, what distracted you originally
Scarfield: not sure, i have bounced around the multies
Scarfield: mars lander was my first GA, so probably CvZ
Astrobytes: Yeah, I went in on FB after that Spaghetti contest and got legend, then couldn't decide on a multi so went optim
Maxim251: Hurra D I did achieve mentor ranking :D I am so happy :D
Astrobytes: well done Maxim251!
Scarfield: im not like smits, i am quickly hapy enough with my bot, and move on
Scarfield: :muscle:
Astrobytes: I need to get back to breakthrough at some point, 20th or something there. But I need to do all the official CG multis
Scarfield: oh FB is not a bad choice either, only submitted some super basic stuff
Astrobytes: My bot is fairly basic, just a reflex bot
Scarfield: yea i still have plenty to even start :)
Scarfield: uuu and pcr, i need to make and todo list
Astrobytes: I misplaced mine lol
Astrobytes: Should make another I guess
Scarfield: sad times :(
Scarfield: chess, i forgot about chess
Astrobytes: Arf, yes, I still have to start that
Scarfield: its by far the largest bot i have written so far, and didnt even implement castling or en passant
martinpapa69: codinga chess sim :sleeping:
Scarfield: ye
Astrobytes: It's somewhat 'involved'
Scarfield: i made a local version that you can play against with the console, i want it to be able to beat my friend some day
Astrobytes: nice
Scarfield: yea its fun, untill he castles xD
Astrobytes: lol
Maxim251: I have question, I am plaing now A*Craft, do I need use tree search? Or use hard coded choices to cgeck which direction will give more points?
Astrobytes: Something like flat Monte Carlo to start with, then simulated annealing or some kind of hill-climbing I think
Astrobytes: You can run those offline to get optimal solutions and then hardcode
Astrobytes: Or just do it online
Maxim251: second question is about game information, message " 2 8 is a void cell. 15 5 is a void cell. 17 8 is a void cell. "
Maxim251: that are empty space, then why I have information about that?
Astrobytes: because some maps have empty spaces in them
Astrobytes: So you kinda need to know that so you don't just walk off into space
Maxim251: O my gosh, Never mind, I know why is printing that
Maxim251: Is my fold. Because to know what is happenning on game and check rulles in game I did hard coded moves, now I change test case, and map is different, but hard coded moves stays... And game is printing that I try make move on empty space :X
Maxim251: To day, thinking is not going so well for me :P
Astrobytes: Yeah, that won't work :)
Scarfield: gonna call it a night, cya :)
michaellan: gn
Astrobytes: gn Scarfield
AllYourTrees: kill a bunch of slimes
michaellan: wow... apparently ClosetAI's draft strategy was dominating
michaellan: did he release it anywhere or must I, too, go download 14GB of his replays :P
michaellan: ah he has a list
michaellan: maybe this list is enough to get me into silver
ADamYuan: do ppl cheat in this
michaellan: in what
ADamYuan: cus some ppl are finishing before i read the question
michaellan: thats like asking do people shoplift the dust on the store shelves
michaellan: yeah thats probably because they are good at scanning the important parts of the input
Swyfti: how do you cheat in clash of code though? contributions are put into codingame daily
Swyfti: its really hard to cheat in coc
michaellan: i think you can write a bot to search up the corresponding contribution and grab the solution code
Swyfti: thats what clash of code bots do lol
TobiasA: i can tell swyfti is speaking from experience
michaellan: mhm
Swyfti: they grab a random solution from the past, and slams it wheither its correct or not
michaellan: oh i meant
michaellan: the actual contribution page
Rob022: use bot code to hax any computer in the world
Swyfti: l love it when the bots submit like 1000+ character solutions in shortest mode and still get it right
michaellan: so theres a 100% chance of it being correct, at least not in shortest mode
michaellan: i'm gonna see if ClosetAI's draft carries me into the next league
Swyfti: good luck
michaellan: i wish there were no items in the game
MSmits: why?
MSmits: with a good algorithm you can pretty much calculate all possible ways to play cards, almost every turn
MSmits: so it's not really limiting you in that way.
michaellan: hmm
MSmits: but of course it requires a lot more coding
MSmits: I think my bot outputs the calculation time it uses.
ADamYuan: can someone spot the pattern for me input: 3 7 20 output: 1 input: 17 2 1651 output: 34 input: 4 3 5 output:2 input: 1000000000 1000000000 1000000007 output: 49
michaellan: bruh
michaellan: do your own work
Wontonimo: input 3 numbers , output 3 numbers
Wontonimo: oh , no
Wontonimo: sorry
Wontonimo: the patter is
Wontonimo: input 3 numbers, output 1 number !
Wontonimo: there you go!
Wontonimo: no problem!
michaellan: i actually already found it but i wont tell you
Wontonimo: that's just mean xxd
michaellan: the second case gives it away
michaellan: first and second
Wontonimo: give the person a forgiveness taco
MSmits: https://www.codingame.com/replay/539894159 xxd
MSmits: me: is my turn. en: is enemy turn
**michaellan gives ADamYuan a kid-size taco
MSmits: a sim is a sequence of actions, and it says how much calculation time is used
MSmits: in milliseconds
Wontonimo: that works, it wasn't that mean so i approve the size :D
michaellan: the screen is black for me
michaellan: nvm
BlaiseEbuth: You have a problem with black screens?
MSmits: the trick to searching the space of possible actions is to either use hashing, or to do it like me, which is to say limit the order in which you do things
michaellan: MSmits: do you have N enemy playouts for each of your playouts?
michaellan: are you using minimax or MC
MSmits: it's a sort of minimax, but it's only my turn and then his turn, so depth 2 i guess
MSmits: i assume he has no cards
MSmits: so just his creature attacks
ADamYuan: ok thanks i see it now
michaellan: does minimax have to consider every permutation of actions?
michaellan: yup understood that part
MSmits: yes, but here's the thing
MSmits: dont search equivalent series of actions
michaellan: how are you only running <10 sims
MSmits: because most series of actions are equivalent
michaellan: ah
michaellan: so hash? i read that eulerscheZahl said he hashed
MSmits: if you attack creature A with B and C, then it doesnt matter if you attack first with B or first with C
MSmits: yes, you can hash, that works fine
MSmits: i didnt know how to hash back then
michaellan: but you cant do something like sort right?
michaellan: wow you've come a long way then
MSmits: yeah
michaellan: since things like breakthrough should attack last
MSmits: exactly yes
michaellan: oh nvm
michaellan: i think thats a bit easier than hashing
MSmits: i just have an inordinate amount of rules to do things in order
MSmits: many many rules
michaellan: DS:
michaellan: D:
MSmits: and exceptions
MSmits: I think maybe i have a PM of this, sec
michaellan: i think the line for me is still fuzzy between minimax and monte carlo sim here
michaellan: are you doing any sort of random playouts for your own side, or only for opponent, or neither?
MSmits: https://www.codingame.com/forum/t/legends-of-code-magic-cc05-feedback-strategies/50996/18
MSmits: read this first. And if you want, any of the other pms
MSmits: i have most of my ordering rules in there
michaellan: thank you
michaellan: whats a pm
MSmits: post mortem
MSmits: summary of your work during contest
MSmits: people who do well are kind of expected to do it and many people also just like to share
michaellan: gotcha. i've read thru a bunch already, but they mostly just raved about closetAI draft :D
MSmits: yeah, I stole it by hand
MSmits: took 4 hrs
MSmits: I just made custom games with only 2 different cards in them and checked which ones he preferred
MSmits: something like that anyways
MSmits: then euler had an automated program to mine it from replays
MSmits: or some such
xxd: mhm, i think kovi also did that too
MSmits: btw, if you're confused by the bit stuff in my pm, ignore that. I had just discovered bitboards and went a little overboard with it
xxd: hmm, you mention "Since they always remove ward (with 1 exception)"
xxd: this doesn't seem to be the case...? did the cardpool change?
MSmits: let me see the context
xxd: heres a bit more copy pasted: http://chat.codingame.com/pastebin/caa82953-2210-484c-8811-63033c5f8e07
reCurse: fwiw he's still overboard with it :P
xxd: we were talking about how you used tritboards on something yesterday
MSmits: reCurse ok ok, I am *less* overboard with it now
MSmits: tritboards on uttt yeah, to have smaller lookup arrays
MSmits: not particularly helpful, but was a fun excercise
MSmits: i still have a little bit of tritboards in my bot i think
xxd: your search is super duper complex
Swyfti: what is a tritboard?
MSmits: instead of 0 and 1 as options, you have 0 and 1 and 2
Swyfti: oh that is useful
MSmits: also expensive to calculate with
Swyfti: i can see why
MSmits: basically you can do a TTT board like this:
xxd: "When I thought of this trick, my required simcount became roughly 20x smaller and calculation time mostly rounded down to 0 ms."
xxd: hah, nice
MSmits: every square can be 0 or 1 or 2
MSmits: 0 = empty
MSmits: so you do board = 0 * 3^0 + 2 * 3^1 + 1* 3^2
Swyfti: that is some calculations right there
xxd: in my current bot i have so many lines of code that try to kill guard enemies with lethal before spamming face
Swyfti: in legends of code and magic?
xxd: do you think i should try MC or go with minimax
MSmits: mc works fine
xxd: this minimax tree and ordering actions seems so complicated
MSmits: euler did mc, his bot was almost equal to mine, he had some bad luck on the final recalc
xxd: ouch
xxd: "My bot uses a minimax, where the moves are generated randomly instead of doing a full search."
xxd: thats... MC right
Swyfti: import java.util.random;
MSmits: yeah but i guess keeping the best result somehow qualifies as it being minimax? I dunno what that was about
MSmits: you can do a staggered mc
MSmits: keeping the best result in every step
MSmits: not really minimax though
xxd: how/when do you evaluate board state
xxd: do you randomly playout along the way
MSmits: i dont
MSmits: mine is full search
xxd: oh i meant
xxd: in a staggered MC
xxd: sorry
reCurse: MC Stagger
MSmits: oh, i guess if you do it staggered, you evaluate right before choosing what to keep
xxd: I'm sorta on my honeymoon with MC/MCTS right now
xxd: ha
MSmits: i am not really that experienced with MC
xxd: okay, so you dont run like N sims on each child
xxd: o
MSmits: I only ever used it once
xxd: darn
xxd: for what?
MSmits: zombies
MSmits: before I hardcoded it
xxd: same! i used MC for that
xxd: ._.
Swyfti: monto carlo tree search?
MSmits: no just monte carlo
MSmits: no tree
Swyfti: no tree
Swyfti: ahhh
MSmits: it's one of the easiest search
xxd: i was wondering if i should also try CvZ with GA
MSmits: but also usually inferior to something else
Swyfti: easier than BFS and DFS?
xxd: apparently euler has never written a GA on codingame
xxd: inferior to what
xxd: something in particular?
MSmits: Swyfti similar
MSmits: depends on the domain
xxd: ah
MSmits: in uttt, mcts is superior
xxd: in the case of CvZ, what would be superior
MSmits: ga is definitely better than plain mc if you do it right
xxd: ooo
xxd: i am just learning GA so i maybe will try it on CvZ
xxd: i have already written simulation etc
MSmits: i never used GA. I tried some SA though
xxd: writing an evaluation/fitness function scares to no end
xxd: scares me*
xxd: ah
MSmits: SA seems cleaner
MSmits: simpler
MSmits: and often works just as well
xxd: thats what i thought too
MSmits: less hyperparams
xxd: but westicles told me its often slower than GA
reCurse: GArbage
xxd: cant argue with that logic
AllYourTrees: MSmits this is unrelated, but do you know of any ways to do MCTS solver where you prune solved nodes but without biasing the q values?
reCurse: Isn't pruning a systematic bias
xxd: you dont remove them
xxd: thats what i read in a apaper
xxd: the solver paper talks about it
AllYourTrees: yeah but i feel like theres something better than what they talk about
AllYourTrees: i feel as if you should be able to not visit solved nodes but still backup their outcomes somehow
Westicles: slow is only an issue with 50ms problems, not offline optims
reCurse: From my experience it doesn't seem necessary at all for win and loss since they are arguably infinity
reCurse: Draws however are still a mystery to me
Wontonimo: why does the evaluation/fitness function scare you so much?
Wontonimo: ^^ xxd
xxd: maybe because i've had bad experiences trying to write such functions for LoCM and mars lander
MSmits: AllYourTrees are you just talking about draws?
MSmits: https://imgur.com/a/IioPYd1
AllYourTrees: well im working on C4 so yes draws, but i kinda feel like it would apply without? like shouldn't a node with 5 proven losses be worse than a node with 3 proven losses (i guess depending on values of other nodes)
MSmits: so if you look at my picture, only backpropagate results from nodes with an average value > 0
reCurse: You already backpropped 5 losses over 3 losses
reCurse: So the bias should already be there
MSmits: no you backpropagate all
MSmits: not just losses or wins
AllYourTrees: but if you're pruning then won't the values of unpruned nodes overwhelm those after a while?
reCurse: Well the loss is very unlikely to picked again
reCurse: And the win terminates the node
reCurse: So it shouldn't really matter
reCurse: Draw is where it's icky
MSmits: my way works because generally we're talking about bad nodes right? With < 0 value
michaellan: :q!
MSmits: you can keep exploring those, without harming the parent value
AllYourTrees: hmm yeah looking at your pic now
michaellan: oops ignore that
MSmits: it will get closer to 0 only
MSmits: because you're backpropping 0
MSmits: until somehow the bad node becomes good
AllYourTrees: are you backpropping max value among siblings?
MSmits: no
MSmits: just either the result, or the 0
MSmits: depending on the average node value of the selected child
MSmits: and only when there's a solved draw sibling
MSmits: so this is an exception
MSmits: a *fix* to reduce the bias
reCurse: I don't understand your pic
xxd: im dumb do you mind giving more context to someone new to solver
MSmits: let me put it into words then
MSmits: there's a parent
MSmits: it has a solved child
MSmits: and x unsolved nodes
MSmits: some of them are bad
MSmits: if they are bad (< 0 value) their sim results are not backpropped
MSmits: but 0 is
MSmits: if they are good nodes, backprop happens as normal
MSmits: including losses
MSmits: so it's not that it only backprops wins or something
reCurse: I'm becoming so scared of uct behavior over time I have no idea how it's going to react
AllYourTrees: lol
reCurse: Every 'smart' mod I did to it resulted in tragedy
MSmits: yeah uct does some whacky stuff
MSmits: anyway, from everything i came up with, this made the most sense to me
MSmits: however, i play no games where this bias even visibly affects my results
reCurse: That's the issue for me, sense is the enemy
michaellan: whats the difference between win/loss and positive/negative value
MSmits: a win or loss is the result of a simulated game in basic mcts
MSmits: an average value is total wins - losses divided by visits
reCurse: The only sense I can make out of it empirically is the same as for solving a game
reCurse: You generally are in the right direction if the number of possibilities decrease
reCurse: UCT sort of does that through average however infuriating the concept is
MSmits: ah right, but that's not even always true. In some games with long narow branches, this performs very poorly
reCurse: In theory
MSmits: i saw this in yavalath
reCurse: In practice it still works better than if you try to account for it
reCurse: Either that or I'm stupid
reCurse: Which is very possible
MSmits: sure
MSmits: yeah most things i try to fix this made it worse also
MSmits: could be because you're easily overcompensating
reCurse: I've plotted mcts behavior and it's very maddening
MSmits: and creating new problems
MSmits: yes, it fluctuates between good and bad moves
MSmits: eventually converging on the good move
MSmits: but more visits may sometimes make it worse
MSmits: this is also true for minimax sometimes. More depth can cause you to pick a worse move
reCurse: No minimax is 100x more sensed
MSmits: but in mcts it's worse I think
MSmits: sure, it's easier to grasp it
MSmits: i agree
MSmits: i mean why it works
reCurse: I keep trying to untangle the concepts of mcts to improve them more easily and it fails
MSmits: you can reason about it
MSmits: same
reCurse: I would like to be able to explore nodes without fucking up the expected value
reCurse: But I can't
reCurse: I don't even understand how the expected value should behave
reCurse: It still makes zero sense to me that a 40k visits node can have average -0.05 below what it should be
reCurse: When 97% of its visits are on one child that has a better average
reCurse: And 3% have terrible evals
reCurse: You *should* be able to get rid of the 3%
reCurse: But nope, you can't
reCurse: (╯°□°)╯︵ ┻━┻
AllYourTrees: sounds like you've had some frustrating experiences with MCTS lol
reCurse: It's about as opaque as uttt
reCurse: So they're a match made in heaven
reCurse: It's more about how I read dozens of papers, did dozens of tweaks/improvements and almost all of them resulted in worse or equal performance
Swyfti: is it worth learning mcts?
BlaiseEbuth: No. Just copy/paste it.
MSmits: no, i know exactly what you mean. I stared at meta mcts a lot, which is basically mcts happening 10000x slower. So i see this a lot
Swyfti: i dont even know what it is
Swyfti: how can i copy paste it
Swyfti: its like trying to find something when you dont even know what you are trying to find
BlaiseEbuth: Just copy paste a full solution, don't look what's inside.
BlaiseEbuth: You perhaps already copied a MCTS.
AllYourTrees: from codingame import mcts mcts.play()
reCurse: Can we try not shitting up the chat when there's a good conversation going for once
AllYourTrees: recurse have you tried implementing something that you think would make things worse? :)
reCurse: Hah, I did actually
reCurse: Getting desperate
AllYourTrees: lol
reCurse: So at this point AllYourTrees I'd say just go empirically
AllYourTrees: how many bugs do you think mcts researchers have in their code they use for papers?
reCurse: It's scary actually
AllYourTrees: :scream:
reCurse: Funny you mention that
MSmits: reCurse I think maybe you're expecting more from mcts that what it can give you. You're intuition tells you it should be better, but intuition and stuff related to probability is very poorly matched
reCurse: I was looking at a paper a few days ago
reCurse: Oh, code on github
reCurse: Good, helps me understand something I wasn't clear about
reCurse: And... oh there's a major bug in the exploration part
reCurse: Like no sqrt
reCurse: ...
AllYourTrees: lmao
reCurse: Whole paper is based on those experiments
MSmits: lol...
MSmits: maybe thats why they dont often share the code used
reCurse: That's why I often only use it for inspiration without really caring for results
JBM: sharing code is bad for your academic career
AllYourTrees: are you sure the original UCT authors meant to put in the sqrt? maybe they accidentally left it in there
reCurse: But for mcts it's been mostly a failure
reCurse: Apart for maybe a few minor things
reCurse: MSmits I really really want to have something closer to thompson sampling work
MSmits: The only enhancements to mcts I use are the solver, rolling out multiple children at once or not using rollouts at all
reCurse: And get rid of UCT for once
reCurse: But no luck so far
MSmits: well I'm glad you tried thomsen sampling, so i dont have to
AllYourTrees: are there "things" other than minimax/alphabeta and mcts? i only know those two main ones
reCurse: I didn't try thompson sampling itself
reCurse: I tried stuff close enough to it
MSmits: ahh ok
reCurse: The idea being to rely on observations to build a more reliable probability distribution
reCurse: And use that to have a more reliable Q
MSmits: AllYourTrees those things you mentioned are umbrellas
reCurse: But it's not working
MSmits: there are many versions of minimax/ab
MSmits: negascout
MSmits: and such
reCurse: It seems to be like gradient descent as in it requires a 'noisy' part to work better
MSmits: reCurse did you try them on equal number of iterations instead of calc time?
MSmits: in that case you may at least see the improvement
AllYourTrees: did you unit test your code?
AllYourTrees: :)
MSmits: from what i noticed with mcts "improvements" is that the performance hit usually kills the gain
reCurse: It's all tied together
MSmits: but if you try it with equal number of iterations you can at least see that it works in principle
reCurse: Assuming equal number of iterations gives better result
AllYourTrees: is there some higher level algorithm that mcts/minimax are some specific version of?
reCurse: Where do I go from there
reCurse: It's like saying a bigger NN on equal iterations works better
reCurse: Great.
MSmits: you could try to optimize. If it doesn't even give better results, you can throw the idea away
reCurse: I usually implement in a way that I'm not going to magically be able to 2x it after
MSmits: well, if you're going to try a bunch of variations on uct that give you small improvements, it helps to at least initially eliminate the performance part.
AllYourTrees: have you tried just deleting your code and creating your own algorithm from scratch? half joking/half serious
AllYourTrees: (thinking back to what msmits said about mcts not able to give you more)
reCurse: I don't see the point
MSmits: this area has been researched to death so if you do find an actual improvement it is a big find
AllYourTrees: isnt it the same point of trying all the little changes?
reCurse: The point of trying all these changes is sort of to go outside of mcts but not inventing something completely new either
reCurse: Because I really don't have more intuition than that
reCurse: I just think the assessment of Q and U would make more sense by building a probability distribution and updating it
reCurse: Instead of averaging a bunch of bad choices
reCurse: That's the basis of thompson sampling as I understand it
reCurse: That way exploring a bad node has almost zero impact on the policy
MSmits: also... doesn't it make more sense to use more advanced things than basic uct when it's not a bottleneck. I would expect some serious gain there while using a NN
MSmits: i mean obviously with a million random rollouts in uttt, any improvement is going to give a serious slowdown, but it shouldn't in your case
reCurse: Not really true
reCurse: I use small networks
MSmits: oh
reCurse: In hopes of gaining better search
MSmits: how many rollouts compared to a non-NN version? x 0.25 ?
reCurse: I have no idea how I'm supposed to answer that
MSmits: i mean, say you replaced with a simple eval
reCurse: Right now my chess bot has 85% of thinking time on NN eval
reCurse: Roughly
MSmits: ah ok
MSmits: yeah then i guess selection can still eat some
MSmits: especially with high branching
reCurse: When you start doing slightly complicated stuff in selection or backprop it shows
MSmits: in a game like oware, it should not matter
reCurse: 30% drop in nodes can be pretty bad so you need pretty good compensation
MSmits: so few moves, selection is super cheap
reCurse: That's what happened when I got fancy with distributions
MSmits: I see
reCurse: Well not 30% more like 50%
reCurse: Anyway
reCurse: Maybe it's better but I couldn't see hope in optimizing it enough
AllYourTrees: with a NN its not really searhc anymore is it? its correcting for the lack of accuracy/training in the NN? not sure if theres a valuable difference between the two
reCurse: NN is very noisy
MSmits: you average out the poor evals
AllYourTrees: like if you train enough/with enough accuracy the search part shouldn't change the policy?
MSmits: some NN evals are bad
reCurse: That's a very idealistic vision
AllYourTrees: :)
reCurse: Imagine a complicated tactical position in chess
reCurse: It would basically have to compute all the tactical variations in the NN to compensate
reCurse: It's extremely difficult
reCurse: But pair it with a simple search to see through the basic results
reCurse: And suddenly it's better
AllYourTrees: still though, with a NN (or some policy) you're just trying to search for something that proves your current policy wrong?
MSmits: it's also going to encounter boards that are somewhat rare in training
reCurse: The NN is better seen as intuition
MSmits: board-types
reCurse: Like 'this should be better'
reCurse: To guide the search
reCurse: Then the search confirms or denies it
AllYourTrees: only confirms on terminal nodes since its using its own value though right?
reCurse: No, UCT confirms it
reCurse: Maybe the root eval is good
reCurse: But search sees you lose a queen in 3
reCurse: Oh, not so good
reCurse: It's unrealistic to expect the NN to see all the possibilities, it just develops a feel for what's good and what's not
AllYourTrees: so it just needs to learn to approximate, and then also how to guide the search such that its error is correct with the search
AllYourTrees: corrected&
AllYourTrees: *
reCurse: That's for training yeah
reCurse: But it won't be perfect so inherently noisy
reCurse: I'm still rather amazed it works in minimax with nnue to be honest
reCurse: Minimax shouldn't be a good match for noisy values
AllYourTrees: yeah i still vote for you trying things that sound good if you think about them for 1 s, but any further thoughts make them seem not good
AllYourTrees: aka uct, nnue + minimax
AllYourTrees: :upside_down:
reCurse: Well trying stuff didn't work so great
reCurse: I mean the baseline is pretty solid
reCurse: Just trying to improve it further when it blunders :/
michaellan: i'm by no means familiar with NN, but is it hard to understand because the process is a black box?
MSmits: not exactly
MSmits: it's just obscure why the NN makes the decision it does
MSmits: but the process is very understandable
reCurse: At this point I find mcts more obscure than nn tbh
michaellan: i see
michaellan: lol, goodness gracious
MSmits: it's like how a biologer understands every part of a cell, but can't build it out of separate parts
reCurse: And this goes all the way back before nn with uttt
Swyfti: programming can be used anywhere
michaellan: huh
Swyfti: okay what forget what i said
michaellan: if there were some hierarchy of AI approaches, would NN be near the top?
michaellan: i feel like the top people often use NNs
reCurse: Use the right tool for the job
Swyfti: "and don't cheat if you want to be respected" - anonymous
michaellan: what cant NN do?
reCurse: Multiply two numbers
TobiasA: damn
michaellan: would NN for LoCM for example not make sense?
MSmits: NN is not a full solution usually. There's usually a lot of components that are also used when a NN is not part of the solution
MSmits: like we're talking about mcts now for a while, which you can do with a NN or without it
michaellan: oh i see
michaellan: sorry if i'm asking dumb questions
MSmits: it's not a dumb question
michaellan: i'm just too tired to code so i'm just listening to your convo
reCurse: Still in the top 5% of this chat
MSmits: NN is usually most of the work and it's a pretty new thing in the field of AI, or at least it got big recently
MSmits: <10 yrs i think?
MSmits: mcts is about 20 yrs and minimax is much much older
michaellan: oh wow
reCurse: Deep learning has a lot of hype so it obviously receives a lot of attention
reCurse: Doesn't mean it's always the best tool
michaellan: i used a NN library once for data science, but i suppose the process looks very different for bot programming and such
AllYourTrees: they've been around for decades, but the compute (and data) has blown up and made them accessible/usable
MSmits: doesnt have to be very different xxd
MSmits: depends on how you use it
MSmits: what i am trying to do with it now is probably very close to it being used in data science
michaellan: after you're done with your offline training, do you have some array like "const weights=[3234,6,26,642,462,...]" or something just squeezed together as tight as possible?
MSmits: if you're doing azero, then yeah, very different
michaellan: *when you submit to CG
AllYourTrees: yep pretty much
MSmits: xxd yeah, for code size reasons usually compressed into a long meaningless string or something
MSmits: or it's sent as a binary
MSmits: 㚟㖖ഥ⹍㲶䄸䆸䉦䆳ㆃᾐ䄤䆬䉦㤪䈽⊮ㄬ䈤୳ਠ䆀
michaellan: cool, thanks
MSmits: start of my oware opening book :P
michaellan: lol, nice
TobiasA: that's binary?
michaellan: unicode i think?
MSmits: it's my way of turning moves into unicode yeah
MSmits: I put 5 moves in 1 character
michaellan: darn
TobiasA: eh i think my brain is stalling
TobiasA: why does unicode look like chinese
michaellan: I wish more of the top people would stream so we could see their workflows
michaellan: or like make videos
TobiasA: exactly
michaellan: but i suppose they would be giving away secrets
reCurse: Because mandarin has the most characters
AllYourTrees: have you seen cg zero?
TobiasA: nope
MSmits: for oware it's easy, you have 6 moves and i have 1 possible "move" that just says go up the tree
AllYourTrees: marchete open sourced code to train alpha zero
MSmits: so 7 possible moves
MSmits: a* 7^0 + b*7^1 + c*7^2 .... e * 7^4
MSmits: has a maximum of 16807
MSmits: fits in unicode range
reCurse: Completely useless knowledge outside CG
MSmits: yep
AllYourTrees: not so sure
TobiasA: how do you guys convert to unicode?
AllYourTrees: could be useful for embedded stuff
reCurse: No
MSmits: let me check TobiasA
reCurse: Encoding it this way actually occupies more bytes
reCurse: Counting characters is more of a java thing to do
michaellan: lol
AllYourTrees: turn float into 4 bytes, use base65536 to turn 4 bytes into unicode
reCurse: No, try it and count the bytes
AllYourTrees: oh right cause CG does the weird counting thing
MSmits: TobiasA in this case i originally had a string of numbers of 0 to 5 for oware moves and '}'for going up the tree.
MSmits: http://chat.codingame.com/pastebin/22e3d7a5-c1f4-44e9-9e9f-d245fa8599db
reCurse: bbl
MSmits: this is in C#, me converting to unicode
MSmits: i decode it back to normal in my c++ bot
michaellan: code golf finally coming in useful?
TobiasA: so that function returns the string in mandarin?
michaellan: are you at the point where you need to golf the submitted code
MSmits: TobiasA yes
MSmits: it turns 01345}123}431 etc. to that Mandarin thingy
TobiasA: hmmm that's something i can use to impress my little sister
MSmits: shrinking it by a factor of 5
michaellan: the mandarin? TobiasA
TobiasA: she would go crazy if she sees that:joy:
MSmits: in some bots I somehow get a lot of emotes in the encoded string
MSmits: like a beach chair, or sun
MSmits: or beer
michaellan: yeah my brother recently showed me a encryption strategy he thought of where he rotates the ascii value of each character
michaellan: :clap:
TobiasA: wait what did you say emotes
michaellan: emojis are in unicode
TobiasA: woah this is a whole new level
MSmits: yeah it looks really weird
michaellan: a lot of ppl argue they shouldn't be
michaellan: but i dont have the time nor energy to care
michaellan: there's a "Fast random" class in the CGZero source code, i wonder if it's worth using
michaellan: I'm currently just seeding to high-resolution time and using uniform_(int|real)_distribution
TobiasA: Msmits does is that the format your bot outputs commands or you convert it back?
MSmits: i convert it back
MSmits: have some recursive function for this
MSmits: it's a stored tree of gamestates
TobiasA: oh
MSmits: basically i start at the root
MSmits: first move is the best move from the root
MSmits: then the one after that is the best reply
TobiasA: you store your trees:scream:
TobiasA: what kind of algorithm is that
MSmits: a } sign in the original string means you go back up the tree and try a sibling move thats less good for the purpose of opponent countering
MSmits: well i used to counterbook players, but now i just automatically generate this tree locally
MSmits: it's just for the opening of the game, for fixed start games
TobiasA: oh locally
MSmits: my current oware version has just 818 of these moves
MSmits: but somehow this is enough to often take my game all the way down to 36 seeds on the board vs robo
TobiasA: is robo a bot?
MSmits: and we both seem to play perfectly according to my meta mcts
MSmits: robosta c is a player
MSmits: (nr 1 oware)
TobiasA: oh
MSmits: i stop at 36 seeds as that is where my endgame book begins locally. So my opening doesnt go deeper than that
MSmits: but because his bot is so good, he plays the same lines of play as my locally calculated tree
TobiasA: how does he do his own endgames?
MSmits: my bot is just a normal mcts + eval
MSmits: so it does that when the opening book ends
MSmits: but locally it just does a lookup
MSmits: it makes the search a lot faster
TobiasA: does robo also use an endgame book?
MSmits: dont think so
MSmits: but if you use it ingame, you cant go much further than 9 seeds
MSmits: I think apart from me it's just tric trac doing this, he has 5 or 6 seeds
MSmits: it's helpful though, it means perfect play when you get there
MSmits: these NN's would definitely be stronger if they put some endgame books in
MSmits: it's not really that much code either
TobiasA: tomorrow is going to be the first time i use MCTS
MSmits: that's cool
TobiasA: one small step for me
MSmits: try it on the simplest possible game first
TobiasA: one big step for me kind
MSmits: so you dont bug out on the sim
TobiasA: i've started trying it on uttt
MSmits: yeah uttt is a good way to get something working. The only problem is that the only way to know your bot is doing well is by the rank
MSmits: you cant tell by actual gameplay
MSmits: well unless it's *really* bad
TobiasA: thanks for the advice
MSmits: and unless of course you're a good uttt player yourself
TobiasA: gtg
MSmits: kk cya!
TobiasA: goodnight
YurkovAS: backpropagate 0 when node score < 0 and parent has solved draw?
MSmits: parent has a solved child that is a draw
MSmits: that's a way to reduce bias
MSmits: otherwise you'll continuously explore that bad node and make the parent seem strong than it really is because you're not visiting the drawn child
MSmits: stronger
MSmits: this way you're visiting the bad child, but for the tree above that point, it seems you really visited the drawn node because you're backpropagating 0
MSmits: so you get to explore a bad node, without introducing much bias
MSmits: note: I am not actually using this anywhere on CG. I use it sometimes locally in meta mcts. It doesn't help all that much
YurkovAS: thanks, I will experiment
N-ONE: jjjjjjjjkkkkkkkkkkkkkkkkkjj
Wontonimo: just me and the mods again
michaellan: and me
MSmits: I am waiting for you two to burst into an argument about avocado's vs taco's
reCurse: What about burritos
michaellan: hehe
michaellan: It seems that the official Multis are worth more CodinPoints than the community Multis, is that correct?
MSmits: xxd it depends on the number of players, to a maximum of 500
MSmits: if you're nr 1 in a 500 player game, you get the maximum
MSmits: however, because some games (like csb) have many more players, it's easier to get near the maximum
MSmits: community games don't usually reach 500 players
michaellan: Ah, that makes perfect sense
michaellan: thanks
michaellan: yeah, the equation in the help page is a bit confusing
MSmits: it is, but eventually most players stop caring about cp other than a small carrot to keep going. It's better to pick games you actually like
michaellan: Yeah, fair enough. I just want to estimate how difficult it would be to get grand master, thats my dream
michaellan: but i guess i need to focus on the small things and the CP is the side effect
MSmits: yeah focus on learning new things and apply them where it's fun
MSmits: xxd were you the one that asked about ward in locam earlier?
MSmits: "Since they always remove ward (with 1 exception)"
MSmits: I think there might be one creature that ignores ward?
MSmits: not sure...
michaellan: yeah, that was me; odd. if so i completely missed it
Conclure: the objectively cool chat
MSmits: no it's not that, there is some other reason for this exception
MSmits: there is an item that just removes guard
MSmits: maybe i was referring to that
MSmits: anyway, gonna go get some sleep. Ttyl
michaellan: im too lazy to look through all the cards
michaellan: gn!
Wontonimo: hey Conclure :wave:
Wontonimo: gn MSmits
Wontonimo: i must have left just before you got back on xxd
Wontonimo: hey, you still haven't fixed your gold CSB bot xxd !
dkim19375: Is it just me or is shortest so frequent ;-; I got shortest mode 3 times in a row now
michaellan: fixed? Wontonimo
michaellan: i dont see anything wrong with it
michaellan: i never bothered to even code up the two-pods thing
michaellan: i sorta just left it there after i passed silver :P
michaellan: how do you know my gold bot is broken?
Wontonimo: cuz it has a score of 1.14
Wontonimo: hey, have you seen this video about Artificial Evolution / GA xxd https://www.youtube.com/watch?v=wL7tSgUpy8w
michaellan: hmm
Wontonimo: mmh?
michaellan: so if i understand correctly, the model he's training is trained only to work on that map right?
michaellan: oh thats the top comment's question
Wontonimo: yeah, i think so. now take a look at this GA which isn't learning moves, but learning the NN values https://www.youtube.com/watch?v=gnfkfUQvKDw
Wontonimo: ^^ I don't understand a thing this guy says but the video pretty much explains the whole thing and process
Wontonimo: he uses flood fill ;)
michaellan: the video is making me dizzy
michaellan: flood fill is nice
michaellan: i'm gonna try writing fitness func for mars again
Wontonimo: maybe your mutation function wasn't aggressive enough
michaellan: i think if i do the distance correctly i will be very close
michaellan: that is my gut feeling
michaellan: may i ask what size "chunks" you used for your floodfill?
michaellan: I think i'll try 50x50 first
Wontonimo: i'll look
michaellan: *another one of a gazillion hyperparameters to tune*
Wontonimo: 50
michaellan: nice
Wontonimo: wow
Wontonimo: nice call
Wontonimo: another thing to add to the fitness is landing / crashing velocity. All speed when crashing should count against the fitness
Wontonimo: hitting the landing pad at mach ridiculous should count against fitness
Wontonimo: I also tend to create a few "seeds" in a GA. Like a soft bank left, right, straight up, and drop for all time steps.
michaellan: yup, i incorpoarate speed currently
michaellan: hmm
michaellan: that sounds very difficult
michaellan: i will keep that in mind but not do that for now
michaellan: im wondering if i should use some variant on (1 / speed) or like (50 - speed)
Wontonimo: okay, as far as "difficult", let's compare it to the mutate and random functions
Wontonimo: lets say you make a function fill(degrees,thrust) which fills/makes a Genome with just that amount of degrees and thrust
Wontonimo: in your while(enough time) loop where you explore and mutate genomes,
michaellan: yeah but like what *is* a soft bank
Wontonimo: 15 degrees
michaellan: i'm unfamiliar with any of the particular physics that may accompany this
michaellan: oh
Wontonimo: 15 degrees is soft, with thrust 4
michaellan: what does "for all time steps" mean
michaellan: man i have so many questions for Di_masta but i can't reach him
Wontonimo: if your genome is the actions your lander will take for the next 20 time steps, then it is 2 lists,
Wontonimo: int thrust[20]
Wontonimo: and
Wontonimo: int angle[20]
Wontonimo: for 1 genome
michaellan: each gene in my chromosome/genome currently corresponds to 1 time step
michaellan: should i change that
michaellan: I was wondering how one could get away with a genome of length 40 when each run is normally 100+ steps...
Wontonimo: sure, you could do it struct Gene { int thrust; int angle }
struct Genome { Gene genes[20] }
Wontonimo: you could make the gene anything you want. for example, it could have a third item after thrust and angle which is repeats, which means to repeat that instructions X many times
Wontonimo: then your genome of length 20 could get your pod to 100 steps
Wontonimo: but you don't need it to do all 100 steps in one go
Wontonimo: at the end of the turn, your lander moves one turn, and you advance all the genomes 1 time step, and recalculate
michaellan: I'm somehow segfaulting before I can print something out in the first line of int main()
michaellan: i think higher powers are telling me to stop doing mars lander
Wontonimo: cool
Wontonimo: i took a break from it for a couple weeks before finishing it
michaellan: my code looks sorta nice though, I put these nice comments everywhere
reCurse: // Nice!
michaellan: lolz
Wontonimo: gn all
Wontonimo: xxd , don't dream about programming GA
RightHandElf: design a GA to dream about GAs for you
Gameonn: Checkout it once, worth 5mins of your valuable time https://medium.com/@jindal.ankit89/just-9-tasks-per-day-can-change-your-life-forever-1bbceb220d91
KamadoTanjiro: help
xxd: You've literally sent this same link before
xxd: how degenerate can you get Gameonn
michaellan: ohhhh... segfaulting before main = too much data on the stack
michaellan: RIP
michaellan: i'm super confused still
michaellan: omg... GNU g++ gives better error messages than clang++, shocker
RightHandElf: lmao, I decided to do Mars Lander 1 in every language for easy xp and now I'm not allowed to submit for a few minutes
hornymineta: yoyoyoyoyoy
hornymineta: yoyoyooyoyoy
hornymineta: whoooooooo
ProCoder03: is there any starter kit kinda sample for UTTT bronze ???
michaellan: I've been tempted to do the every-language thing for the achievements but i've held off for now
michaellan: theres more interesting things to pursue
RightHandElf: I just wanna get past the "get level 20" thing in the achievement tree
michaellan: do that by solving puzzles
michaellan: much more worthwhile
michaellan: though it may take longer
RightHandElf: technically, I *was* solving it
RightHandElf: it was just one puzzle being solved the same way
xxd: bruh
xxd: ProCoder0: what do you mean by starter kit?
Westicles: RightHandElf, that's how it starts out, just going after achievements. Then the sickness creeps in...
Westicles: https://chadok.info/codingame/players_puzzles.php?level=medium&commu=1&player=3354337&update=0
xxd: holy crud
xxd: that is some commitment
xxd: Escaping the cat: 0 ;)
RightHandElf: you missed "escaping the cat"
Westicles: heh heh, yeah I never liked trig much
Westicles: someday I will get that bored...
RightHandElf: on the one hand, basically any problem other than "mars lander 1" will probably require more than copying and pasting a single line with a one character difference
RightHandElf: on the other hand, the website probably won't think I'm a bot
xxd: mars lander 1 isnt even the easiest
RightHandElf: it requires absolutely zero familiarity with the language you're using tho
xxd: the thing is like with some languages, you need different approaches
xxd: like i have haskell in mind but surely theres some others
RightHandElf: maybe we have different solutions to mars lander 1
xxd: mine is an if-else
RightHandElf: I used that for some languages until I realized that it doesn't need to be synced to the inputs
xxd: what do you mean?
RightHandElf: so I just copied the default "print('0 3')" and pasted it as "print('0 4')"
xxd: i dont get what you mean
xxd: so you just output everythign at once?
RightHandElf: you can just output '0 3' and '0 4' alternating and it'll work
xxd: lol
RightHandElf: you'll get a warning message about being out of sync but it works
xxd: these are all symptoms that you need to find something better to do
RightHandElf: and if it didn't, just copy and paste the input lines
xxd: i like having few languages used
RightHandElf: I will say that my original version in python used bitwise negation to swap a variable 'a' between 0 and -1 with print(0,4+a) as the output
RightHandElf: but I didn't think that'd work well in bash
xxd: lol
xxd: you can just
xxd: tr it
xxd: tr/34/43
Westicles: It is nice seeing people's solutions in all languages. Even the clojure weirdos
xxd: my floodfill thingy: https://pasteboard.co/KgfwbDB.png
xxd: (or at least the first step of floodfill); thanks wontonimo!