Chat:World/2020-09-17
MadKnight: Benftwc u still there ?
MadKnight: say hi Automaton2000
Automaton2000: yes it is a bit of a java
ZappaMoto: oh ma come si fa quindi?
gsomix: #it
uvBoss: #np
[CG]Thibaud: please go to #it channel, or you'll be kicked from here
ThunderbirdOne: well, goodbye then :P
Matteo.Calv: ti aiuto io franko
pirinilorenzo: hey guys i'm lorenzo from italy my global friends
tekki: hi lorenzo
pirinilorenzo: where are you from
ZappaMoto: tekki pls don't listen him, he only wanna a girlfriend
Squidkid45: I apologize for my idiot classmates they have nothing better to do
Squidkid45: No poem99 I can see you're from the US
poem99: how? are you hacking me
Squidkid45: Just hover on another user's profile pc
poem99: parlo italian comunque
ZappaMoto: bel idiota lo dici a qualcun altro
Squidkid45: Dovevo far passare il messaggio :/
ThunderbirdOne: guys, seriously... english please
ThunderbirdOne: if you refuse, go talk italian in #it
ZappaMoto: thunder sorry this is last it message
ThunderbirdOne: thank you
Matteo.Calv: SQUIDKID vergogna
AntiSquid: hey what's with the spam?
Ahriana: s+=1
Ahriana: (╯°□°)╯︵ ┻━┻
**Ahriana slaps around a bit with a large fishbot
Ahriana: /me
JeffGe: :hushed:
DomiKo: Test in Arena? rly?
DomiKo: can we closed that thing "What we learned" in last battles?
geppoz: performance question:
geppoz: to know the number of decimal digit in an integer
geppoz: is faster:
geppoz: 1) convert to string and get length
geppoz: 2) calculate ceil(log10(n+1))
geppoz: ?
ryantimjohn: second one is less memory intensive
geppoz: well, I suppose memory not an issue, integer max dozen of chars
geppoz: do you mean effort for allocate buffer?
MrGabsss: hello
Ramdeath: Hi, how to participate in Autumn AI 2020?
DomiKo: https://hs-emina.github.io/autumnai.github.io/
Ramdeath: there is just leaderbords
ErebosTheos: Click on general
Ramdeath: clicked and entered my nick
Ramdeath: 15 min ago :D
ErebosTheos: noice
Ramdeath: and thats all?
DomiKo: yes
Astrobytes: Yeah, now you need to improve your Kutulu bot
Ramdeath: and jsut improve inside codingame?
Astrobytes: Yup.
Astrobytes: Progress is measured by improvement from initial leaderboard placement
Ramdeath: strange... ok tnx ppl
Astrobytes: Just an unofficial "contest"
Ramdeath: impossible :D
Ramdeath: cant go higher 13 place :)
Astrobytes: Well, you can try :)
vtenneke: does anyone have any tips on the longest palindrome puzzle? im not sorting anymore, not reversing any string, using 2 for loops but don't know how to improve or if I can...
DomiKo: longest palindrome?
DomiKo: can you give link?
vtenneke: https://www.codingame.com/ide/puzzle/longest-palindrome
vtenneke: https://www.codingame.com/training/hard/longest-palindrome
vtenneke: that ones better
vtenneke: All solutions I see online are composed of like 3-4 nested for/while loops, mine only has 2 and still times out xD
Moctrof: I havent done it, but maybe yyou are using functions that are doing loops without knowing it
Moctrof: I will try to do it
vtenneke: i think the only real expensive ones would be substring, push back and one erase.
Moctrof: substring yeah
Moctrof: maybe
vtenneke: but kinda need the substring for palindrome haha
vtenneke: hmm imma check
Q12: How is the first place now?
Unkmar: Okay, I will take a shot at the palindrome thing.
Q12: *in the first place
DomiKo: you dont really need substring
DomiKo: and pushback
vtenneke: How would i go storing the string without pushback or substring though?
DomiKo: you don't need to store them
vtenneke: go about *
DomiKo: you can just print them
vtenneke: ah
vtenneke: Im gonna try that thanks
DomiKo: no problem
vtenneke: but there are cases where it wil find smaller palindromes first
DomiKo: yes
vtenneke: then how do u know not to print those
DomiKo: i don't know
DomiKo: but
DomiKo: i could know
DomiKo: if i calculated longest palindrome first
vtenneke: Yeah true
vtenneke: i though mine was already doing that but it isnt
vtenneke: so ill crunch on that for a bit
vtenneke: thanks
DomiKo: no problem
DomiKo: :sweat_smile:
Scarfield: oi
Moctrof: Well... I don't know how but it worked for me
Moctrof: Didn't do anaything particular to improve speed and I used substring ^^
Moctrof: C# is goat that's why probably
Moctrof: I thought about improvment though, like if you arrive at 10 letters of the end and your longest palyndromes is 12 then you can stop
Moctrof: And don't check for palyndromes if the word you are checking is smaller than your longest palyndrome
vtenneke: lol haha
vtenneke: yeah no I already implemented all of those
vtenneke: but c++ dont wanna be fast xD
vtenneke: and if i dont save them in a vector i fail at DNA medium because the first biggest palindrome it finds is TT
vtenneke: so big sad
vtenneke: but if C# is GOAT i might just try that xD
Moctrof: lol
Unkmar: Okay, so I have done the palindrome test and Taking too long in javascript at 5000 chars.
Moctrof: Maybe you are doing something wrong
mortadha: yes maybe you are doing something false
vtenneke: Yeah same issue but with c++
Unkmar: I'm not surprised at my results. I'm starting with a search for the longest and giving up when it isn't longest. The effect has me testing every character multiple times across a sort of slider. Certainly not optimized.
Moctrof: So strange that I didn't have to optimize at all
Unkmar: I might be able to improve mine dramatically by simply changing my palindrome function.
Moctrof: I can watch your code in mp if you want and give you a hint if I have one
mortadha: yes it's a good idea
Unkmar: I don't know what mp is but... I'm good for now. I like challenge.
Unkmar: I already have a good idea how to optimize my function.
Moctrof: private message so I guess it's pm. I am not english native speaker ^^
Moctrof: Yeah good luck ! vetenneke same for you if you want help I can watch
Alibek_Adilzhan: Hi, all, I am new here, so the first question of 1534289 : how can I earn CodingPoints?
MadKnight: complete puzzles
Uljahn: Alibek_Adilzhan: through competing in https://www.codingame.com/multiplayer
Uljahn: also CPs are evaluated once per day so you should wait for your results to be updated
Pathfinder42: I'm relatively new to Codingame. Just making it out of wood league this morning (I hope)
vtenneke: managed to do it :)
vtenneke: used a different way of recognizing palindromes
Unkmar: Yeah, I know the feeling.
geppoz: https://www.codingame.com/ide/puzzle/fair-numbering
geppoz: this is puzzle of the week, last week
geppoz: nice one, try if you want @vtenneke
vtenneke: I'll check it out later!
vtenneke: thanks
geppoz: this involves some maths
geppoz: since if you try without, on big numbers will timeout
Era_1313: where are my coding points? I got 100 two times but still have 0 cp
Moctrof: it' refreshed once a day
Uljahn: :point_up_2:
TheSilent_Boy: what are coding points?
eulerscheZahl: something you get for competing with others (multiplayers, optim, clash of code, contest) and that's used to determine your global ranking
NikkiRedfox: .
Elsa_Polindo: q pasa gilesqls
MSmits: hi guys
MSmits: I have a c++ question. I am always running up against the fact that the standard library unordered map/set are much slower than other implementations. Is there anyway to get a better one into your bot without running up against codesize issues?
MSmits: this for example:
MSmits: https://martin.ankerl.com/2019/04/01/hashmap-benchmarks-04-05-result-RandomFindString_1000000/
MSmits: this robin hood thing for example... way too much code
Hjax: thats an interesting question, im too much of a C++ noob to offer any advice D:
MSmits: well I'm pretty much a noob also, when it comes to general c++ knowledge
Hjax: if it were me id probably be thinking about alternative data structures, if you only need the set to do membership tests you could use a bloom filter
MSmits: nah I use it for transpositions
MSmits: so i need the value
MSmits: either I use a set with a property that is the value or a map
MSmits: i'll have a look at bloom filter, never heard of that
Hjax: its a probablistic data structure
MSmits: hmm ok
Hjax: basically you define a hashing function, to add to the structure you | the current number to it
Hjax: a number is probably in the set if all bits from the hashing function are high in the bloom filter
Hjax: (but not guaranteed due to collisions)
Hjax: and definitely not in the set if at least one bit is low
MSmits: I see
Hjax: upside: its super fast, and with enough bits the odds of a false positive are low
Hjax: downside: you cant remove from the set, false positives as possible
Hjax: are*
Hjax: but you are guaranteed that a false negative is impossible
DomiKo: you can easily upgrade unordered_map
DomiKo: sometimes like 2x in time
DomiKo: first use reserve
DomiKo: second you can change load factor
MSmits: yeah I did that before
MSmits: but it's still a rather weak hashmap compared to other implementations
MSmits: which surprises me
MSmits: it shouldn't be so slow that other implementations are 3x faster. Then there's something wrong
DomiKo: can we use PBDS here?
MSmits: no idea
DomiKo: yes we can
DomiKo: nice
DomiKo: sooo
YurkovAS: if distinct keys not many (< 1-100k), then you may change keys to ints ids and store data in static array. This fast if you switch to int keys. For keys use map<string, int> and auto increment in creation.
DomiKo: you can use map and set from PBDS
MSmits: are these better DomiKo?
DomiKo: yes
Hjax: distinct keys probably quite large for a TT entry
DomiKo: and they offer a lot of features
MSmits: YurkovAS I sometimes have millions
MSmits: DomiKo I dont need many features though, usually I just have a struct or something I want to hash
Hjax: now im musing how chess engines implement their tt
MSmits: often just a struct of two or three uint64_t
Hjax: time to check stockfish
Hjax: stockfish uses a flat array
DomiKo: I'm just saying
DomiKo: they are a little bit hard to use
Hjax: and indexes into it based on the key for the position, with some logic to handle collisions
Hjax: probably much faster than any hashmap
MSmits: mmh not sure that wil lhelp me with my dots and boxes solver
Hjax: surely you have some memory constraint, so the hashmap cant grow forever either
MSmits: memory is not the bottleneck really
MSmits: but reserve and load would help. I may need to figure out what works best
Hjax: then allocate a huge flat array and index into it by key
MSmits: hmm
MSmits: whats the difference with the way unordered map/set would do it?
Hjax: those handle key collisions by having the entries of the array be a linked list (ew)
Hjax: so that multiple entries can share the same key
MSmits: hmm so the item is stored somewhere else
MSmits: in a list
MSmits: extra level of indirection
Hjax: yes
MSmits: though, the jump might actually be faster than spreading it out over 100 mb of data
Hjax: maps go: take a key, find the right bucket with the key, find the right entry in the bucket
MSmits: cache efficiency
MSmits: yeah ok, but i still might get collisions
MSmits: even if the flat array is huge
Hjax: and if you do, you treat it like it wasnt in the table at all
MSmits: I was just gonna say that. That's pretty smart
MSmits: if it isn't likely to happen, you dont lose much
Hjax: yeah exactly
MSmits: you do have to always do an equality check dont you?
MSmits: which you dont with an unordered map
MSmits: it only checks if there are more than 1 item
Hjax: i think it still has to do the check though
Hjax: it at least has to check how many items there are
MSmits: yeah
MSmits: but if there's 1 item, it doesnt need to check for equality
MSmits: because the hash guarantees it then
MSmits: hmm now I am not sure
MSmits: so I guess I would need to make sure the hash is spread out nicely over the huge array
Hjax: you would have to do that yes
MSmits: http://chat.codingame.com/pastebin/3815f2ab-7275-49cb-bec5-26419b97b15e
Hjax: if im going to continue with the chess engine approach, their solution to that is zorbist hashing
Hjax: zobrist*
MSmits: i have two uint64_t's now, one is xorshifted
MSmits: inline uint64_t xorshift(uint64_t x) { x ^= x >> 12; x ^= x << 25; x ^= x >> 27; return x * 0x2545F4914F6CDD1D; }
MSmits: not sure if this will do the trick
irishcoder: Cr3aHal0 Mind sharing your code?
Hjax: oh you are just using your state as the seed into a prng?
Hjax: to get a hash?
MSmits: yeah
MSmits: two things
MSmits: a map and a bunch of object counts
MSmits: both are a uint64_t
Hjax: are you familiar with zobrist hashing?
MSmits: map as in, a 2D map fit inside the uint64_T
MSmits: yeah somewhat
MSmits: from what I know, it works in cases where the order of actions doesnt matter
MSmits: but in this case it does
Hjax: hmm?
MSmits: so i cant make a progressive hash
MSmits: well i can, but i will get collisions is what i mean
MSmits: same actions in different order means different state
Hjax: oh because of captures?
MSmits: similar to that
Hjax: the owner of the square in d&b is whoever placed the last line, but you cant infer that just by knowing where the lines are
MSmits: no, this is more complicated
MSmits: i make a graph
MSmits: and strings are removed from it
MSmits: which forces other strings to merge
MSmits: into new strings
MSmits: the length of those strings is affected by the order
Hjax: youve just gone too deep into d&b theory for me to keep up lol
MSmits: so think of it as a hash formed from a graph
MSmits: yeah, I think I might need a few hrs to explain what I am doing
Hjax: lol
MSmits: it's going quite well though
MSmits: about 150 ms for 1000 solved endgames
Hjax: nice
MSmits: problem is, the spread in times
MSmits: if i try a million seeds, one of them will be 150 ms all on its own
MSmits: just very rare
MSmits: I kinda want to make them fast enough that even the slowest seeded map will be below 100 ms when solved
MSmits: so currently, one map will take maybe 50 microseconds and the other 3000 times longer
Hjax: i see you unbroke your kutulu btw
MSmits: yeah i just removed one line
MSmits: it's still my contest bot really, nothing else changed
Hjax: meanwhile im trying to get legend without writing a search, its going poorly
MSmits: I was very stressed out about writing a search for that
DomiKo: kutulu is so ........
MSmits: it's very hard because of it being simultaneous and also 4p
Hjax: but you can up with smitsimax
Marchete: MSmits, hi, can you give me some examples of your endgames?
Hjax: came*
MSmits: Marchete sure, I can find a slow one or a fast one or both?
MSmits: right Hjax
MSmits: it could be much better than it is currently
MSmits: I only eval sanity
MSmits: if you put in distance related features, it could be better
Scarfield: oh yea, saw your PM, thought you came up with that for CSB
Hjax: the fact you are ranked so high with a super simple eval
MSmits: nah, kutulu was first
Hjax: is a testament to how effective your search is in this game
Marchete: both
MSmits: yeah it is, i got tunnel vision which made me scared to try anything else
MSmits: kk will try it now Marchete
Marchete: I have some kind of unordered_map
Marchete: I haven't tested it on D&B
Marchete: maybe you want it
Laminator: Dude Clash of code has gotten really hard ngl
MSmits: Marchete yes please :)
Marchete: http://chat.codingame.com/pastebin/78c755a8-ba99-46fd-85ce-9d76105c499a
Marchete: chunk is for splitting a huge vector on smaller parts
Marchete: because it's a new() array
jacek: :scream:
Marchete: chunk=1 it's a simple array
Marchete: UM_CACHE_SIZE size of your unordered_map, it never increases, it just replace stuff
MSmits: http://chat.codingame.com/pastebin/d66a4939-3478-41a3-a860-2a2dee37ab4b
Marchete: you can have another version with a fast clear()
MSmits: slowest one out of 100k seeds, takes my solver 85 ms
Marchete: by adding a version id to the hashes
Hjax: thats some very pretty ascii art
MSmits: but its complex right?
Marchete: so in your endgames you never have a box with only 1 side, isn't it?
MSmits: the splits have them
Hjax: that picture has a box with only one side
Hjax: near bottom right
MSmits: some even have 0 sides
Marchete: these are my endgames right now
Marchete: http://chat.codingame.com/pastebin/d88f0ee4-29d0-4b37-8060-bfeafd53ddd9
Marchete: how?
Marchete: how do you have 0? that means some score, no?
Hjax: middle column, second row
Hjax: has 0
Marchete: as you see, my print is completely the opposite
MSmits: no i mean 0 sides filled in
MSmits: no lines drawn on this box
MSmits: all of these end games are completely blank, no boxes taken, only lines filled
MSmits: so they are the most complex they can be
Marchete: I mean the opposite lol, all 4 sides placed
MSmits: no i dont have captured boxes
Marchete: sorry I use the graph and not sides
Marchete: but these endgames are nowhere similar to those in papers
MSmits: my endgames are earlier
MSmits: and much more complex
MSmits: might be at ply 40-45 even
MSmits: if there are a lot of splits
MSmits: the papers are usually meant for 5x5 or smaller
MSmits: they dont have many splits
MSmits: and frankly, they seem to ignore them, because they are hard to deal with
NikkiRedfox: .
MSmits: these are loony endgames though, because anywhere you try to put a line, you offer boxes
MSmits: there is no safe line to play
Hjax: ive got to say, the stuff you guys do with board games has got to be one of the most niche hobbies ive ever encountered
MSmits: yeah :)
MSmits: lemme find a fast one Marchete
Hjax: i might be able to be competitive if we got chess as a multi
Hjax: but things like d&b are too much for me
Marchete: how's your endgame solver tackling it?
leojean890: chess would be fun:)
MSmits: the exact method has several steps including two different negamax algorithms
Marchete: so some search
Marchete: not an static method
MSmits: I run one to establish which player ends up in control and then i run negamax again with different behaviors for both players
MSmits: if you know you cant get control you make different choices
MSmits: yeah its a search
Marchete: :S
Marchete: then it's not much different from the rest of the simulation
Marchete: I mean I thought theorems and stuff would help more
MSmits: I came up with some new stuff I didnt find in papers
MSmits: for dealing with short strings
MSmits: short isolated chains are easy
MSmits: but when they are part of a network it's not easy at all
Marchete: I thought about partition the game
Marchete: like trying to make some patterns
MSmits: what kind of patterns
Marchete: like halving the board
Marchete: making a big loop
Marchete: to remove possible edges
MSmits: oh ok
MSmits: http://chat.codingame.com/pastebin/9911b3c8-2b52-482d-948a-af05a9a23167
MSmits: this one's fast
MSmits: it has only 1 split
MSmits: long chain connected to 6-loop
Marchete: yeah, seems easier
MSmits: basically
MSmits: the algorithm stops as soon as all splits are gone
MSmits: it heuristically calculates the rest
MSmits: this I got from the papers
MSmits: so the negamax doesnt need to play all chains and loops
Marchete: pick good edges, cut, rinse and repeat...
Marchete: a lot of time in some endgames
MSmits: also, a thing I have discovered. you can *always* leave all long isolated chains (4+) for last
MSmits: so they give no branching at all!
MSmits: doesnt matter what else is on the map
Marchete: long isolated like X-2-2-2-2-2-2-X?
MSmits: yeah, no connections to anything
MSmits: grounded on both sides
MSmits: to the edge
MSmits: also true for loops >= 8
MSmits: you do need to factor in 4 and 6 loops
MSmits: they are sometimes better offered earlier
MSmits: the reason why it's not useful to offer big loops and long chains earlier is that they are always a loss for you
MSmits: it's not gonna cause the other guy to give up control
MSmits: so why bother
Marchete: well, any doubledeal chain
MSmits: a 4 length double deal is a net 0 to keep control
MSmits: and a 8 loop double deal also
MSmits: thats why the limit is placed there
MSmits: there's no gain to playing them earlier
MSmits: and they are isolated, so they affect no other structures on the map
MSmits: if you play a connected string (to a split) you do affect the map, because it merges other strings together
Marchete: I'm still on the endgame generation
MSmits: btw, I always test these heuristics on at least 1000 maps to see if any of the negamax values are different
Marchete: I think I'll tackle the endgame solver soon
MSmits: sometimes 10k or 100k if its a weird heuristic and i dont believe my result
Marchete: but I think I need to start with simple stuff
MSmits: yeah you do
Marchete: like only 1 or 2 box-3
MSmits: i did the simple endgames first
MSmits: the ones with no splits, but that's only 0,3% of loony endgames :(
Marchete: yeah
Marchete: I'm seeing it
MSmits: 2 and 3 splits are most common
MSmits: but 12 splits also exist
Marchete: I have some endgames with a chain of 48 boxes and a small of 1 box
MSmits: chain meaning an isolated one?
MSmits: no splits?
Marchete: yes
Marchete: I mean
MSmits: that would be so easy to solve :P
Marchete: a chain that can't cut anything without giving a box
Marchete: so a lot of 3-boxes
MSmits: 3?
MSmits: isn't that 2?
MSmits: i mean if it's a chain according to the papers then all boxes in it will have 2 sides filled
MSmits: a split will have 1 side filled or 0
MSmits: depending on whether it is connected to 3 or 4 strings
MSmits: (or loopy stuff)
ArthurMorgan: can anyone have any tips for code of kutulu ?
MSmits: it really depends on what your knowledge level is on search algorithms
MSmits: it's not an easy game to search beyond the basic pathfinding algo's
MSmits: heuristics can work. A ton of if/else scenarios
Marchete: http://chat.codingame.com/pastebin/d7494c47-463a-42d0-acdb-b7e99958492e
Marchete: I mean like these
Marchete: 1 huge chain
MSmits: hmm you call that a chain, but that's confusing
MSmits: you mean it's a huge object with many splits
Marchete: and you can't cut without giving a box
MSmits: a chain is actually more of a long snakey thing with no splits, following the papers that is
MSmits: yes
MSmits: thats how i define my endgames
MSmits: you cant cut without giving a box
Marchete: then that's an endgame
MSmits: this one would take long to solve probably
MSmits: maybe still under 100 ms
MSmits: but long
MSmits: has 7 splits i think?
MSmits: yeah 7 boxes > 2
MSmits: I have seen ones with 12
MSmits: it's not necessarily always slower when it has more splits though, 4-way splits are also much worse than 3-way splits
MSmits: because 3-way splits can be resolved in 3 ways, by playing any one of the strings
MSmits: but 4-way splits can be resolved in 4 * 3 = 12 ways
Marchete: do you filter equivalent moves in some way?
MSmits: many ways
Marchete: i.e. I know loops are only 1 move
MSmits: transposition tables for one
MSmits: loops are one move yes, but i disallow completely the move of a string + loop
MSmits: only the string first
MSmits: then the loop
Marchete: string + loop tyes
Marchete: yes
Marchete: daisy chain for me
MSmits: because if you do the loop first, you give away everything
Marchete: effective chain of loop is the whole chain
Marchete: effective length*
MSmits: yeah
Marchete: and effective length of the string it's just that string
MSmits: so i just have an "is allowed" function
MSmits: it checks many things
MSmits: like
MSmits: for grounded long stringds
Marchete: and it doesn't matter where to cuton the string
MSmits: I always pick the shortest grounded long string
Marchete: so you keep track of chains?
Marchete: or are still on a big edge bitmap?
MSmits: for isolated objects i only count them
MSmits: I count 3 chains, 4 loops and 6 loops
MSmits: and long chains and long loops
Marchete: I keep track a lot of stuff on each
MSmits: i dont care about their length
Marchete: I have an edge hash and a "graph hash"
MSmits: I have a map hash and a hash for isolated object counts
MSmits: the graph itself is not hashed
MSmits: not necessary because the connections dont change
AntiSquid: https://imgur.com/a/i6PHY2x
MSmits: any box that is played, disappears
Marchete: mine is about reusing states
MSmits: yeah i try that with transpositions
Marchete: I tried simple stuff, like loops moved or rotated
Marchete: it works
Marchete: but I haven't fully tested on a lot of weird stuff
MSmits: oh yeah thats why for simple objects i only count them, then it doesnt matter where they are
MSmits: but the complex ones with splits, i dunno how to do that
Marchete: I just count a lot of stuff, but probably not enough
MSmits: i just have a uint64_t map which shows which parts of the objects are still up
MSmits: and which are dead/captured
Marchete: boxes by number of sides, grounded boxes, etc
Marchete: I hope it's enough
MSmits: let me give you my state function
MSmits: http://chat.codingame.com/pastebin/1fd3d46c-62f5-4ce2-8a88-4da477a4a268
MSmits: type is for upperbound/lowerbound/exact for TTT
MSmits: TT
MSmits: (not tic tac toe)
Marchete: I'm using https://create.stephan-brumme.com/xxhash/
MSmits: the counts are global which is why they dont enter the function are params, ugly i know
Marchete: for graph hash
Marchete: I just push some bytes and get some hash value
MSmits: yeah I should do something like that
MSmits: my way is really just the first thing i tried a long time ago
MSmits: what I found though, stuff like what hash you use or similar is negligible to the power of a single heuristic
Marchete: http://chat.codingame.com/pastebin/00388d6a-2186-4a40-8621-90968445fba1
MSmits: a pruning heuristic i mean
Marchete: the more "bytes" explaining the thing, the better
MSmits: yeah less collisions
MSmits: btw, I can give you another pruning heuristic that proved extremely worthwhile
MSmits: say you're the player that's going to be in control when all short chains and strings are done.
MSmits: then there is absolutely no reason to play anything other than short chains and short strings until they are all gone
MSmits: the other player has a different agenda though
MSmits: he knows he's not in control, so he's gonna try to manipulate the splits to create as many chains and strings as he can, because the controlling player loses 2 boxes on every double deal
MSmits: this is why i have a separate negamax just to figure out who is the eventual controlling player
Marchete: how "fast" do you cut? I have like 100k cuts per 90ms it seems
Marchete: no other thing
Marchete: just cut and calculate stuff
MSmits: hmm i dont cut individual boxes, i cut links off splits. Let me do a check how fast
MSmits: disconnected: 33155153 total time in microseconds: 11052339
MSmits: thats 27k per 90 ms
MSmits: however
MSmits: when i cut a string, a lot of stuff happens
MSmits: and I possibly do a few loops over arrays to find out if the cut is even allowed
MSmits: very heavy pruning
Marchete: ok
MSmits: like, is this string grounded, connected to a split with another string that is shorter and also grounded
MSmits: if so, then dont cut
MSmits: cut the shorter one first
MSmits: unless the shorter one is a short string ( <= 2) and the longer one isnt
MSmits: you can see it gets pretty complicated very quickly
Marchete: I just have some basic 3-way detection
Marchete: once the thing has more than that I just say "complex!" and move on...
Marchete: :S
MSmits: small part of code from my pruning:
MSmits: http://chat.codingame.com/pastebin/e34e3a66-ec9d-415c-890c-c01aea1698eb
MSmits: it's basically all meant to have some kind of fixed order to playing the strings in a complex object that does not affect the outcome
MSmits: to reduce branching
Marchete: ShortestGroundedLongStringWithNoShortAndNoDouble :rofl:
Marchete: are you german?
MSmits: many ideas didnt work. I would do 1000 maps and it would work for 997 maps and 3 would be an exception
MSmits: lol
MSmits: no
MSmits: yeah i ran out of distinct names for functions
MSmits: so i thought screw it
MSmits: i'll just do the whole description
MSmits: btw, when i talk about strings, in my code these are called links so as not to confuse the compiler
Astrobytes: lol, perhaps a shorter function name and a comment with a description would be better ;)
MSmits: maybe :)
Astrobytes: You're definitely going deep on this one, this chat is like reading a paper
Marchete: better (FTFY)
Marchete: most pàpers are sh*t
Marchete: like 3x5 or stupid stuff
Astrobytes: Yeah, fair point Marchete
Marchete: I have like 70KB without even a solver...
MSmits: yeah Astrobytes I am pretty sure the current state of my solver is more advanced than anything in the papers I have read
MSmits: but not happy with it
MSmits: also it will take a lot work to put it into a bot
MSmits: currently it just solves the value of the game, thats not the same as picking a move
Astrobytes: I have confidence in you
MSmits: and dealing with people doing stupid moves
Marchete: stupid moves break good bots :D
MSmits: sometimes yeah :)
Astrobytes: Either way, you have amassed a whole lot of valuable knowledge
MSmits: not sure if it's valuable, but sure, to D&B enthousiasts
MSmits: to publish it, I would also have to do some heavy math, because often I kind of intuitively know a heuristic will work and then i test it on 1000+ maps and it produces no error, but thats not a mathematical proof
Astrobytes: Team up with aCat, maybe you can do a presentation at a virtual game playing AI conference
Astrobytes: Yeah sure, the maths would be most of the work most likely
MSmits: i dont know if you've looked at the papers on this, but the math is extremely verbose and messy
Astrobytes: I've seen some yeah
Astrobytes: Didn't read much if I'm honest!
MSmits: thats the most useful one to me
Astrobytes: Yeah I've seen that one
Astrobytes: I haven't delved into the game enough yet for any to be useful to me at the moment
MSmits: there are two levels to reading this
MSmits: 1 is to just take the rules for granted and apply them
MSmits: which is mostly what i did
Hjax: the d&b discussion passed my level of comprehension an hour or two ago @Astrobytes
MSmits: 2 is to read and check the proofs... thats horribly difficult
Astrobytes: Yes agreed MSmits, I get that a lot with these kinds of papers. Some are reasonably easy to follow, some are like this
Astrobytes: lol Hjax, how's your Kutulu?
Hjax: i didnt work on it at all last night
Hjax: i started writing a slasher predictor, except when i uploaded it, it got 4th 15 times in a row :D
Hjax: and i havent looked as to why its broken yet
MSmits: 4th legend?
Astrobytes: lol, oh dear
Astrobytes: last place 4th
Hjax: ^
MSmits: whats that
MSmits: last place 4th?
Astrobytes: first to die
Hjax: i know losing is unfamiliar to you
Astrobytes: Kutulu
MSmits: ohhh
Hjax: but if you do really poorly
MSmits: sorry :P
Hjax: you get last
AntiSquid: what's the point of that weird wording when he could explain it in stupidly simple words?
Hjax: :P
Astrobytes: hehehe
AntiSquid: in the paper you linked
MSmits: the proof
MSmits: the rules are simple to follow
MSmits: but it's science, so they need to mathematically prove the rules
MSmits: which is not at all interesting from a bot programmer standpoint
AntiSquid: no i mean i don't see the point, it's like he wanted to add that abstract notation to make the paper look like it means much more than it does
Hjax: the weird thing was my slasher tracker was printing the right things to stderr
MSmits: hmm maybe, I didn't look at the proofs closely enough to know if they could have been written more simply
Hjax: probably just incorporated it into my scoring wrong
MSmits: I remember the pain of the slasher
Hjax: my bot is just wildly inconsistent
Hjax: sometimes it will get 1st in a lobby with the boss and the top 2 bots
Hjax: sometimes it will get last with a lobby of a bunch of rank 150 gold bots
MSmits: the game is also unpredictable
MSmits: a guy can screw you over by taking an unexpected turn and leaving you behind
MSmits: so you and he are both solo and the other 2 are together
MSmits: = you are 3rd and 4th
AntiSquid: teamkiller
Marchete: yeah, that happens a lot
Hjax: i frequently have that problem even if all 4 explorers are together
Hjax: 3 go one way, i go the other
Astrobytes: And there are a fair few non-deterministic ones out there too, just to muddy your waters a bit more
MSmits: happens to me as well
MSmits: mine is non deterministic I think
MSmits: not sure
Hjax: you do some random rollouts at the start
Hjax: im sure that is enough to bias between a few good options
AntiSquid: didn't the wanderers have some random? that's how i remember it
Hjax: they break ties randomly
Marchete: the first game with smitsimax, right?
MSmits: is it really random? Or in some weird order?
MSmits: yeah, it's a poorly implemented version
Astrobytes: No that's the turning directions
MSmits: with a 1 property eval and ofc, in C#, with very few sims
Astrobytes: The tiebreaking for targets is random
Hjax: if theres 2 equidistant explorers, and the wanderer wasnt chasing either of them last frame
Hjax: it will break the tie randomly
MSmits: ahh ok
MSmits: i didnt even do that random thing in my sim i think
MSmits: i think i assumed it would follow me
Hjax: "me" being the explorer running the sim?
Hjax: or "me" being always MSmits
AntiSquid: being MSmits running from wanderers irl
Hjax: lol
Astrobytes: Ah that's what he does when he goes out for his walks
Hjax: oh i guess you only have one sim
MSmits: lol
Hjax: i wonder if its better to give each explorer a slightly different sim
Hjax: biased against them
MSmits: yeah I had one sim with 4 search trees
MSmits: and i now remember why its nondeterministic
MSmits: it does the first 10 choices of each node randomly
Hjax: yeah
MSmits: so as not to get some weird resonance between the explorers
MSmits: all go right, all go left etc.
Hjax: your post mortem said if you didnt do that sometimes youd get stuck in a horrible local optima
Hjax: where everyone does bad moves
MSmits: yeah
Astrobytes: Yeah, that's kinda necessary
MSmits: happened in csb too
MSmits: when i forgot about that
Astrobytes: It's in your Smitsimax playground
MSmits: ahh ok
MSmits: been a while since i wrote that
MSmits: but I also didnt use the algo much, because of all the board games
Astrobytes: Still interesting nonetheless
MSmits: yeah, really I came up with it because I didn't know what else to do for 4p simultaneous
MSmits: it's just to have something to search even if it's horribly flawed. Something is better than nothing
MSmits: for a game like that, everyone makes some messed up algo
Hjax: i like smitsimax way more than minimax for code of kutulu
Hjax: the idea that everyone is out to get you isnt very realistic, the idea that everyone is self interested is very realistic
MSmits: yeah, but mostly because, how would you even do minimax?
Astrobytes: Well, it certainly has its uses, so not that flawed or messed up
MSmits: simultaneous minimax is already hard
MSmits: and then it's also 4p
Hjax: the people that did minimax (like agade) just assumed everyone was out to get them
Hjax: and optimized against the worst case
GuillaumeRicou: Hi guys ! What do you think about PHP ?
Astrobytes: aka Paranoid
MSmits: yeah i meant flawed/messed up compared to how neat those 2p boardgame searches are
Astrobytes: ah right
Hjax: im honestly surprised the paranoia search works for kutulu
Astrobytes: Yeah same
Astrobytes: But, it did
MSmits: same, you actually need eachother
Hjax: it seems like it would always guess the wrong opponent moves
Hjax: but apparently it works
AntiSquid: fits with the theme (paranoia)
Hjax: doesnt makes sense to me personally
Astrobytes: lol
Astrobytes: He had Kutulu on his side during the contest eh
Hjax: kutulu isnt on my side
Hjax: need to go sacrifice a lamb
Astrobytes: hahaha
AntiSquid: https://i.pinimg.com/originals/fa/40/10/fa4010efde0f1a8ff0a1f51d000f924f.jpg
Astrobytes: :D
MSmits: did you watch the boys yet
MSmits: on amazon?
MSmits: it has an aquaman
MSmits: pretty cool show
Astrobytes: Currently finishing off Orange is the New Black final series
MSmits: ahh ok, never watched that
Astrobytes: Watch it, brilliant show
MSmits: i like the boys because almost every superhero is a jackass or totally evil
Astrobytes: Yeah you mentioned it before, think it's on my list
MSmits: far more realistic than all that marvel stuff
Hjax: >>>> only watches anime
Hjax: :D
Astrobytes: lol
Marchete: yeah, the boys season 1 was awesome
Fireballl: *only watches anime as well so can relate*
MSmits: just watch the opening scene of the boys. Just the first scene and you're immediately hooked
MSmits: so grisly
Marchete: indeed
Marchete: first season was a blast, I saw it some time ago
MSmits: saw it recently
Marchete: the first 2 chapters of season 2 are meh
AntiSquid: MSmits i was the one that recommended you the boys actually maybe you forgot and watched because someone else recommended?
Astrobytes: How many seasons so far?
MSmits: no, sorry AntiSquid I did forget you recommended it, but I found it just by YT advertisement
MSmits: however, thanks for recommending it, you were right :P
MSmits: this is also how i found CG
Astrobytes: adverts on youtube?
MSmits: someone recommended it and then 2 yrs later i found it by googl
derjack: i could recommend certain cartoon
MSmits: then i told the guy i found CG and it was like dude, i told you this 2 yrs ago
AntiSquid: then MSmits did you at least watch "Watchmen" ? kinda similar idea sort of but different heroes and different goal
MSmits: yeah i watched the movie 3 times
Astrobytes: derjack :o
MSmits: series partly
MSmits: not derjack, he's not active
MSmits: he just tried it when cg was new and left
AntiSquid: i didn't like the series, dropped after few episodes, is the Watchment series good?
MSmits: RL friend
Astrobytes: no MSmits, I'm replying to derjack/jacek
MSmits: AntiSquid it's ok i guess
MSmits: ahh ok
MSmits: nothing close to the boys
MSmits: the boys is epic
AntiSquid: i watched latest episodes from season 2
MSmits: I like stormfront
MSmits: otherwise some storylines are less interesting, but still good show
Astrobytes: The neo-nazi website stormfront or another TV series? :P
MSmits: she is a neonazi basically in the show
MSmits: so both?
Astrobytes: Haven't heard of the show
AntiSquid: checked reddit about the boys, regarding stormfront people seem personally offended, i don't get it it's an actual nazi with nazi reference in the name :/
MSmits: thats because the show is brilliant
MSmits: they make you feel she's a feminist
MSmits: and then she does some :poop:
MSmits: and some people cant take that
AntiSquid: nah i thought she's nazi from the start because of the name
MSmits: ah i didnt realize that
Astrobytes: That's why I mentioned the website, that should be the clue
MSmits: anyway gtg to the store before it closes
AntiSquid: MSmits : Stormfront is a white nationalist,[3] white supremacist,[4] antisemitic, Holocaust-denialist,[5][6][7] and neo-Nazi[8] Internet forum, and the Web's first major racial hate site.[9] In addition to its promotion of Holocaust denial, Stormfront has increasingly become active in the propagation of Islamophobia.
MSmits: ahh ok
MSmits: yeah, i realize that now
MSmits: not so versed in the nazi stuff
MSmits: good thing i guess ? :)
Astrobytes: It's been around forever that site
Astrobytes: like 20+ years anyway
AntiSquid: general knowledge, whatever you know might be useful
MSmits: ttyl :)
AntiSquid: or not
MSmits: yeah agree
MSmits: thanks
Astrobytes: laters
AntiSquid: bye
AntiSquid: wait astro thought you watched the boys already
AntiSquid: it's at season 2 episode 5 airs tomorrow
AntiSquid: (i watch on amazon)
Astrobytes: Nah, added it to my list
Astrobytes: Cool, will try and check it out soon
starmaq: I assume there is no way to set a filter for public clash of codes?
starmaq: like if I only want reverse mode,
irishcoder: ugh these captchas
irishcoder: :angry:
irishcoder: and starmaq no there isnt unfortunately
Astrobytes: You can do that if you create private clashes
Astrobytes: And choose a language iirc
starmaq: I see irish, thanks
starmaq: yeah astro I can, but that's not public and filling it up with people would be a delay each time
Astrobytes: Yeah, only works if you have a bunch of people willing to join already I guess
Astrobytes: There's a #clash channel though starmaq, mostly for joining but you can always post a private clash there
starmaq: good idea actually
Astrobytes: It's not well-publicised though
starmaq: I will try that thanks
Astrobytes: But is getting more popular since it's quite recent
Astrobytes: There's a few bots that pick up clashers from twitch and such, then link to it in there
jacek: and clash is apparently more popular since the quest map
Astrobytes: Yeah, though even a month or so before it was really getting hugely popular for some reason
starmaq: tbh I'm mainly here for clash of code, what do you guys usually do here
jacek: multiplayer bot programming
Astrobytes: Multis: https://www.codingame.com/multiplayer
starmaq: oo
starmaq: I will check that out
Astrobytes: Sometimes puzzles: https://www.codingame.com/training
Astrobytes: Mostly multis though
Astrobytes: And yeah, check it out. A lot of people never see it and miss out
irishcoder: they look harder than the clashes
Astrobytes: Bit more time and effort required for the bot programming sure, puzzles a bit less for the most part
AntiSquid: they have leagues and you start off with a very easy version of the game
AntiSquid: and i am still surprised most people do clashes here, the main part of the site is the multi section
AntiSquid: you can do clashes an puzzles on many other sites too so ya
Astrobytes: I know, so many people don't even notice it
AntiSquid: how many quit before even touching the multi section?
Astrobytes: Yeah, I've often wondered about that
AntiSquid: when i first joined i looked at the multis same way i look at ROS (robot operating system) now though confused and thinking it's harder than it looks
Astrobytes: All I noticed back in 2015 was the puzzle stuff, sites changed a bit in that time mind you
AntiSquid: tron 2014, maybe the layout doesn't direct people to where it should
AntiSquid: main page doesn't get the add-ons it needs
Astrobytes: When I got active again it was Code Royal contest so just got into the bot stuff after that
Astrobytes: *Royale
Astrobytes: Yeah, it should be more obvious I think
Astrobytes: I mean ofc clash is 'Compete' but... it's not really in the same category as the rest of the 'Compete' section
Astrobytes: hello
PatrickMcGinnisII: Jello . always room for jello
Astrobytes: oh hey Patrick
PatrickMcGinnisII: U do Eulers bender 4?
PatrickMcGinnisII: anyone?
Astrobytes: Nope. Been on my todo since... a while
AntiSquid: not ye
AntiSquid: t
AntiSquid: stuck with reading books, maybe it makes me smarter
PatrickMcGinnisII: ok, I've rewritten my bot twice, still won't solve 20x20 without running out of memory
PatrickMcGinnisII: rewriting again
Astrobytes: You've to compress the path in Bender 4 right?
PatrickMcGinnisII: since everyone hates php, I'll cheat...7-segment scanner
PatrickMcGinnisII: http://chat.codingame.com/pastebin/a3c78f9c-dc53-476d-a532-d7bb42ed02c5
PatrickMcGinnisII: the compression is kinda secondary to the pathfinder, but yes
AntiSquid: lol
Hjax: i still find it amusing that most of the (presumably) best clashers on this site
Hjax: dont play clash at all
Hjax: because multis are far more interesting
Astrobytes: Some also don't like the short time because they're slower coders, or got fed up with repetition
Astrobytes: And the quality issue
Hjax: i played enough to get pretty high ranked and then just quit forever
Hjax: it gets boring pretty fast imo
Astrobytes: I played a few back in the day and got bored. And also got followed by so many people that I just stopped
Zenoscave: ^ this.
AntiSquid: fangirls
Zenoscave: I was ranked 2nd at one point. it just isn't the same as a good multi
Hjax: you made it further than i did, i think i peaked at like rank 200
Hjax: most of my losses were reverse puzzles
PatrickMcGinnisII: The new adventure quest map thing on the homepage kinda makes u play it...i still don't have the patience to play 50 clashes
Astrobytes: Yeah, multis all the way. And I like a good puzzle now and then
Astrobytes: I am happy with not completing the clash part of my quest map
Astrobytes: Just need the contribution part
AntiSquid: how do i even check highest clash rank?
Zenoscave: api calls probably
Astrobytes: Was thinking about Morpion Solitaire as an optim
Astrobytes: (aka join 5)
Zenoscave: morpion solitaire?
PatrickMcGinnisII: anyone have link to the leaderboard thing someone made?
Astrobytes: Zenoscave: https://en.wikipedia.org/wiki/Join_Five
Zenoscave: just found it, thankyou Astrobytes
PatrickMcGinnisII: the optimization path is impossible for php
Astrobytes: Could work as either multi or optim
Astrobytes: Or both
Zenoscave: do both
Astrobytes: Just need to find the time :/
bhupesh21: im in java 2 but i would like to get better at coding any suggestions?
bhupesh21: ive been playing these games but I feel like im not with the kids in my class skill wise
AntiSquid: java 2 ?
AntiSquid: ah that's just your college standardization of courses ...
AntiSquid: (i guess)
bhupesh21: i feel like other colleges around me are way past us in coding'
AntiSquid: ya so what do you want to do / use java for?
bhupesh21: we started off 1st semester java with blockcode-_-
bhupesh21: well, i want to be a computer engineer
AntiSquid: ok one sec
bhupesh21: but my goal is to get at a way better level of java than rn
bhupesh21: i have the book but im more of a visual learner :/
Hjax: the only way to improve is to write lots of code
Hjax: imo
bhupesh21: and my teacher is booboo
PatrickMcGinnisII: Intro to Java by D. Liang is pretty good
Hjax: ive never been one for programming books personally
bhupesh21: i have starting out w java by tony gaddis
bhupesh21: but its so big and i dont wanna read it. i wanna code and get better practicing
PatrickMcGinnisII: I have a pretty healthy book collection, I admit - most are junk... but there are tidbits here and there you just aren't gonna find on the internet
AntiSquid: https://www.youtube.com/c/FKnight/videos this guy has a computer science full course on his github, guess it's worth checking out bhupesh21
bhupesh21: plus like i said im a visual learner and out teacher this semester has a really heavy accent and our class can barely understand him
Hjax: id say just pick any game from the bot programming section and go for it
Astrobytes: I'm oldskool, I like books :P But yeah, practice. Learn a concept and practice the hell out of it
Hjax: whenever you arent sure how to do something, look it up
AntiSquid: also you could just search on github for java courses and keep improving, i doubt colleges teach you everything so learning on the side helps
Hjax: and use what you learn in your program
Astrobytes: ^
bhupesh21: okay! thank you all
bhupesh21: and i will def be checking his yt out
Astrobytes: Oh, and - don't give up
Hjax: thats how ive learned every programming language i know, just the cycle of "i want to do x" "look up x" "use x" repeat
PatrickMcGinnisII: Can You program triggers in java on CG?
bhupesh21: ohh x as in what ur searching for haha
Hjax: like, pick something you want to make
Hjax: whenever you get stuck while working on it
Hjax: look up how to do the thing you want to do
AntiSquid: apply your knowledge by solving problems ? bhupesh21
TheBattleTravellerEater_ff82: hi
bhupesh21: i will thank you all.
bhupesh21: i feel like the most important thing ive learned is that its stressful but yea not to give up.
PatrickMcGinnisII: i use alot of triggers, i didn't think CG would allow that
AntiSquid: so do a multi in java bhupesh21, not sure why else you joined the site any multi
bhupesh21: i just got done w the descent
AntiSquid: no
Hjax: https://www.codingame.com/multiplayer/bot-programming
Hjax: ^ these are multis
Astrobytes: The Descent is a puzzle
AntiSquid: that only requires a for loop
bhupesh21: are the multis way more helpful?
Hjax: yes
AntiSquid: challenging more like it
Hjax: because they are open ended problems
Astrobytes: Can be, for sure.
Hjax: you have to learn new things to solve them
TheBattleTravellerEater_ff82: elaaroussiayoub1@gmail.com
Hjax: ?
Astrobytes: They're not easy, but it's a great opportunity to learn bhupesh21
PatrickMcGinnisII: tron or Obapa are pretty easy to get started
AntiSquid: you can click discord button at the top if you want bhupesh21
Astrobytes: Are you on the CG discord bhupesh21?
bhupesh21: no, im asking u guys
Hjax: i am
AntiSquid: i just told you .
Astrobytes: Yep
AntiSquid: k
AntiSquid: to make it awkward
Astrobytes: :smirk:
bhupesh21: so more than likely
bhupesh21: if i get all these games done on multi
AntiSquid: https://www.youtube.com/watch?v=7Oqpiaj0IUM&feature=youtu.be
bhupesh21: my coding will improve a hell of a lot.
Hjax: @bhupesh21 the thing about multis is they are competitive games, your program plays against other programs
Hjax: and goes on a leaderboard
Hjax: so theres a lot of strategy and creativity too
bhupesh21: it doesnt matter what i start off w right?
Hjax: pick one that sounds approachable and looks fun
bhupesh21: or is it categorized from easy to hard
Astrobytes: Nope
Astrobytes: Though a lot of the board games are harder than they look
Hjax: personally i think ghost in the cell is a fun beginner game
Uljahn: Coders Strike Back has a tutorial
Astrobytes: even PR2
Hjax: pr2 is also a fun beginner game (platinum rift 2)
AntiSquid: same for BotG
Astrobytes: But, it's subjective as always
Astrobytes: Yeah, BotG might be the one for you too
Astrobytes: Try a few out and get a feel for how they work, ask questions if you have to
Hjax: botg is one of the games i havent even looked at lol
Astrobytes: I don't like it (personally) but I still recommend people try it
Hjax: the rank 1 guy seems to be absurdly dominant
Astrobytes: And I'll get around to writing a proper bot for it one day
Hjax: https://www.codingame.com/multiplayer/bot-programming/botters-of-the-galaxy
PatrickMcGinnisII: Toonify, kewl
AntiSquid: the #1 gave a massive, i mean really long text of feedback how to rebalance the game, but i amnot sure about some of the stuff he said
PatrickMcGinnisII: damn it's in python, shouldda known
AntiSquid: that was 2 years ago
Hjax: well he clearly knows something everyone else doesnt
Hjax: because thats a massive points lead
AntiSquid: maybe but he also said melee heroes are still stronger but nobody uses them correctly or he wouldn't be first, not sure about this though
AntiSquid: i am worried we made ranged heroes suddenly more powerful through one tiny change, but then decided we don't change anything until we get some activity on the game ... but then CG is very quiet outside contests :/
Astrobytes: BotG 2
AntiSquid: lazy
Hjax: unofficial contest
Hjax: gogo
AntiSquid: what's the current sdk version ?
PatrickMcGinnisII: Toonify, wow 9 days on a 16GB GPU to train your own...20 minutes an image therafter, holy crap
Ollie4040312: i do not use code i use blocks like a noob:disappointed:
Astrobytes: AntiSquid 3.13 https://github.com/CodinGame/codingame-game-engine
Ollie4040312: i have never learned them or practiced them
AntiSquid: bunch of obsolete / outdated packages it seems .
AntiSquid: when i try to setup locally i mean it won't work, not sure what i do wrong, XR still works
AntiSquid: sdk changed a bit since then, wonder how CG keeps all old game up to date so easily without docker containers
AntiSquid: want to do a new multi anyway, don't like the art in botg .
AntiSquid: one day ...
Ollie4040312: can someone teach me what this means!!!???
Ollie4040312: such advanced technology!
Ollie4040312: i am dumb because i use block commands
Ollie4040312: and i do not know how this means
AntiSquid: "this"
AntiSquid: be specific and it's then possible to help you somehow
Ollie4040312: i do not understand what the coding language is
Ollie4040312: like what console,log(enemy2); I DUZNT UNDERSTAND!
Unkmar: console.log() is like print() for most langaugesl.
Unkmar: I'm loving the vim editor style. It is passable.
Uljahn: please use english here
JavaScriptCoder: I have a questiono
JavaScriptCoder: question*
AntiSquid: ok thanks for letting us know
JavaScriptCoder: it says to add a end at the end of my script but theirs already a end
JavaScriptCoder: then when i added a end the script glitched
mortadha: i don't understand your question
JavaScriptCoder: ok i just experiment.
hfazal018: can someone help me with python
hfazal018: it is the horse racing duel
x544D: there is no assembly :p ?
Lisker_the_slow: someone come 1v1
Unkmar: JavaScriptCoder: Please give the exact message it gives?
x544D: there is no Assembly included in CG ?
ChrisChrisLoLo: assembly is bad
MadKnight: i heard someone tried smitsi in tron
midomawk: Hello guys any python guy here
Bassel: I am
midomawk: i have a question about my code because im new to python
midomawk: http://chat.codingame.com/pastebin/cfcd31aa-8856-44d3-b5dc-51206cf99f9d
Justin123: Can you give an example of the input? Is it just a single line string like "stufufuf;anothercommand;things"
midomawk: echo "hello;word";pwd;
Justin123: if so you can split by ; by doing s.split(';')
Justin123: which gives you array of stuff in between
midomawk: i cant because echo "hello;world"
midomawk: maybe there is a way to replace a char within two quotes ? with a negative ascii code ?
Justin123: so what would you want to do in the case the ; comes between ""
Bassel: Are commands guaranteed to be correct?
midomawk: i did pass through the string like the c way if i find " i skip it until the next quote
Bassel: Also
Bassel: is this a valid command
midomawk: i will test the commands later if there is correct or not i have just to get a list of commands
Bassel: echo "hello \" ;\" world"
midomawk: if i have echo "hello ; world"; pwd; i should get ["hello ; world", "pwd"]
midomawk: sorry ["echo hello;world", "pwd"]
midomawk: my script is working just im looking for a better way because im not a python guy that's way
Justin123: its not supposed to be ["echo "hello;world"","pwd"]?
midomawk: just for the example i forgot it
Bassel: hmmm
Bassel: You can split by ';' and iterate all commands, if one of them is missing closing double quotes, merge it with the next one with ; in between
midomawk: yeah a good solution also
midomawk: yeah sure thanks bassel
midomawk: thanks to justin also
Bassel: You're welcome
Justin123: re.split(;(?=(?:[^'"]|'[^']*'|"[^"]*")*$), data)
Justin123: no credit to me, found online
Justin123: np, basically it just uses regex and lookahead ? to make sure any ; it finds isn't between quotes