From CG community
Jump to navigation Jump to search

MadKnight: Benftwc u still there ?

Default avatar.png Lukotty: hi

Default avatar.png MinerZeta: hi

MadKnight: say hi Automaton2000

Automaton2000: yes it is a bit of a java

Default avatar.png Frank89: helo

Default avatar.png gozz: napoli?

Default avatar.png gozz: someone?

Default avatar.png Frank89: sfaccim

Default avatar.png gozz: si napulitan?

Default avatar.png Frank89: eh si

Default avatar.png Frank89: stu programma

Default avatar.png gozz: ammò

Default avatar.png Pit_Cico: we we

Default avatar.png Pit_Cico: naples

Default avatar.png ZappaMoto: oh ma come si fa quindi?

Default avatar.png Lukotty: h

Default avatar.png ZappaMoto: naples

Default avatar.png ZappaMoto: baldo passa

Default avatar.png ZappaMoto: le temperature

gsomix: #it

uvBoss: #np

Default avatar.png gozz: pizza mafia mandolino

Default avatar.png gozz: mammamia

Default avatar.png erFylo: odio napoli

[CG]Thibaud: please go to #it channel, or you'll be kicked from here

Default avatar.png erFylo: no

ThunderbirdOne: well, goodbye then :P

Default avatar.png gozz: sfaccim

Default avatar.png Frank89: #h

Default avatar.png erFylo: #H

Default avatar.png gozz:

Default avatar.png gozz:

Default avatar.png gozz:

Default avatar.png gozz:

Default avatar.png Frank89: raga

Default avatar.png Frank89: aiutino

Default avatar.png gozz:

Default avatar.png Matteo.Calv: ti aiuto io franko

Default avatar.png Pit_Cico: #free gozz

Default avatar.png pirinilorenzo: ciao

Default avatar.png pirinilorenzo: hey guys i'm lorenzo from italy my global friends

tekki: hi lorenzo

Default avatar.png pirinilorenzo: where are you from

Default avatar.png ZappaMoto: tekki pls don't listen him, he only wanna a girlfriend

Default avatar.png pirinilorenzo: no

Default avatar.png pirinilorenzo: is not true

Default avatar.png poem99: hi

Default avatar.png poem99: i'm from italy too

Default avatar.png Squidkid45: I apologize for my idiot classmates they have nothing better to do

Default avatar.png lollo1: ok

Default avatar.png Squidkid45: No poem99 I can see you're from the US

Default avatar.png poem99: how? are you hacking me

Default avatar.png MrJolly: piro ma che fai

Default avatar.png Squidkid45: Just hover on another user's profile pc

Default avatar.png Squidkid45: pic*

Default avatar.png poem99: ahh lol

Default avatar.png poem99: parlo italian comunque

Default avatar.png Squidkid45: Noice

Default avatar.png ZappaMoto: bel idiota lo dici a qualcun altro

Default avatar.png poem99: stai zitto

Default avatar.png Squidkid45: Dovevo far passare il messaggio :/

ThunderbirdOne: guys, seriously... english please

ThunderbirdOne: if you refuse, go talk italian in #it

Default avatar.png Squidkid45: Ok sorry

Default avatar.png ZappaMoto: thunder sorry this is last it message

ThunderbirdOne: thank you

Default avatar.png ZappaMoto: :)

Default avatar.png lollo1: nice

Default avatar.png lollo1: :innocent:

Default avatar.png Matteo.Calv: SQUIDKID vergogna

Default avatar.png lollo1: ok

Default avatar.png lollo1:

Default avatar.png lollo1:

Default avatar.png lollo1: .

Default avatar.png yadon: Hi

AntiSquid: hey what's with the spam?

Default avatar.png yadon: e-mail of garbage

Ahriana: s+=1

Ahriana: (╯°□°)╯︵ ┻━┻

**Ahriana slaps around a bit with a large fishbot

Ahriana: /me

Default avatar.png that_akward_coder: hell there

Default avatar.png that_akward_coder: o

Default avatar.png marlet: yall weebs

Default avatar.png weedkiller: hi

Default avatar.png weedkiller: anyone here

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?


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: 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?

Default avatar.png 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:

Default avatar.png DarkhShines: yo

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

Default avatar.png mortadha: hello

vtenneke: lol haha

vtenneke: yeah no I already implemented all of those

vtenneke: but c++ dont wanna be fast xD

Default avatar.png mortadha: 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

Default avatar.png mortadha: yes it's true

vtenneke: so big sad

vtenneke: but if C# is GOAT i might just try that xD

Default avatar.png mortadha: :grinning:

Moctrof: lol

Default avatar.png 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

Default avatar.png mortadha: yes maybe you are doing something false

vtenneke: Yeah same issue but with c++

Default avatar.png 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

Default avatar.png 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

Default avatar.png mortadha: yes it's a good idea

Default avatar.png Unkmar: I don't know what mp is but... I'm good for now. I like challenge.

Default avatar.png Unkmar: I already have a good idea how to optimize my function.

Default avatar.png mortadha: as you like

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

Default avatar.png 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

Default avatar.png Alibek_Adilzhan: Thanks!

Uljahn: also CPs are evaluated once per day so you should wait for your results to be updated

Default avatar.png Pathfinder42: I'm relatively new to Codingame. Just making it out of wood league this morning (I hope)

Default avatar.png mysyljr: 233

vtenneke: managed to do it :)

vtenneke: used a different way of recognizing palindromes

Default avatar.png Unkmar: Yeah, I know the feeling.

Default avatar.png kyran: im noob coder


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

Default avatar.png Era_1313: where are my coding points? I got 100 two times but still have 0 cp

Default avatar.png Era_1313: in clash coding

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: 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


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

Default avatar.png xx.mxrilyn.xx: .

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: 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


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: 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

Default avatar.png xx.mxrilyn.xx: .

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: 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)

Default avatar.png 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: 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


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: type is for upperbound/lowerbound/exact for TTT

MSmits: TT

MSmits: (not tic tac toe)

Default avatar.png sDCrAZzE: oop

Default avatar.png sDCrAZzE: TT

Marchete: I'm using

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


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: 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

Default avatar.png 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


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:

starmaq: oo

starmaq: I will check that out

Astrobytes: Sometimes puzzles:

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

Default avatar.png mortadha: hi

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: 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:

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 :/

Default avatar.png bhupesh21: yo

Default avatar.png bhupesh21: im in java 2 but i would like to get better at coding any suggestions?

Default avatar.png bhupesh21: ive been playing these games but I feel like im not with the kids in my class skill wise

AntiSquid: java 2 ?

Default avatar.png bhupesh21: yea in college

AntiSquid: ah that's just your college standardization of courses ...

AntiSquid: (i guess)

Default avatar.png bhupesh21: yea

Default avatar.png 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?

Default avatar.png bhupesh21: we started off 1st semester java with blockcode-_-

Default avatar.png bhupesh21: well, i want to be a computer engineer

AntiSquid: ok one sec

Default avatar.png bhupesh21: but my goal is to get at a way better level of java than rn

Default avatar.png 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

Default avatar.png 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

Default avatar.png bhupesh21: exactky

Default avatar.png bhupesh21: i have starting out w java by tony gaddis

Default avatar.png 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: this guy has a computer science full course on his github, guess it's worth checking out bhupesh21

Default avatar.png 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: ^

Default avatar.png bhupesh21: okay! thank you all

Default avatar.png 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

Default avatar.png bhupesh21: thanks :)

Default avatar.png bhupesh21: @hjax wdym

PatrickMcGinnisII: Can You program triggers in java on CG?

Default avatar.png 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

Default avatar.png TheBattleTravellerEater_ff82: hi

Default avatar.png bhupesh21: yup

Default avatar.png bhupesh21: i will thank you all.

Default avatar.png 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

Default avatar.png bhupesh21: i have

Default avatar.png bhupesh21: i just got done w the descent

AntiSquid: no


Hjax: ^ these are multis

Astrobytes: The Descent is a puzzle

AntiSquid: that only requires a for loop

Default avatar.png bhupesh21: ohh okay

Default avatar.png 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

Default avatar.png bhupesh21: bet :D

Default avatar.png TheBattleTravellerEater_ff82:

Hjax: ?

Default avatar.png bhupesh21: u guys on discord?

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?

Default avatar.png bhupesh21: no, im asking u guys

Default avatar.png bhupesh21: are u guys in it?

Default avatar.png bhupesh21: so i can join

Hjax: i am

AntiSquid: i just told you .

Astrobytes: Yep

Default avatar.png bhupesh21: kk

AntiSquid: k

AntiSquid: to make it awkward

Astrobytes: :smirk:

Default avatar.png bhupesh21: lmao

Default avatar.png bhupesh21: so more than likely

Default avatar.png bhupesh21: if i get all these games done on multi


Default avatar.png 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

Default avatar.png bhupesh21: i see

Hjax: so theres a lot of strategy and creativity too

Default avatar.png bhupesh21: it doesnt matter what i start off w right?

Hjax: pick one that sounds approachable and looks fun

Default avatar.png bhupesh21: or is it categorized from easy to hard

Astrobytes: Nope

Default avatar.png bhupesh21: bet

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

Default avatar.png bhupesh21: where is bot g

Astrobytes: And I'll get around to writing a proper bot for it one day


Default avatar.png bhupesh21: thank you

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

Default avatar.png Ollie4040312: i do not use code i use blocks like a noob:disappointed:

Astrobytes: AntiSquid 3.13

Default avatar.png 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 ...

Default avatar.png Ollie4040312: can someone teach me what this means!!!???

Default avatar.png JBM: not much

Default avatar.png Ollie4040312: such advanced technology!

Default avatar.png Ollie4040312: i am dumb because i use block commands

Default avatar.png Ollie4040312: and i do not know how this means

Default avatar.png JBM: neither do thou

AntiSquid: "this"

Default avatar.png Ollie4040312: oh

AntiSquid: be specific and it's then possible to help you somehow

Default avatar.png Ollie4040312: i do not understand what the coding language is

Default avatar.png Ollie4040312: like what console,log(enemy2); I DUZNT UNDERSTAND!

Default avatar.png Unkmar: that is javascript.

Default avatar.png Unkmar: console.log() is like print() for most langaugesl.

Default avatar.png Unkmar: I'm loving the vim editor style. It is passable.

Default avatar.png mortadha: wa kammoun

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

Default avatar.png mortadha: i don't understand your question

JavaScriptCoder: ok i just experiment.

Default avatar.png hfazal018: can someone help me with python

Default avatar.png hfazal018: it is the horse racing duel

x544D: there is no assembly :p ?

Default avatar.png Lisker_the_slow: someone come 1v1

Default avatar.png Unkmar: JavaScriptCoder: Please give the exact message it gives?

x544D: there is no Assembly included in CG ?

Default avatar.png ChrisChrisLoLo: assembly is bad

MadKnight: i heard someone tried smitsi in tron

Default avatar.png midomawk: Hello guys any python guy here

Bassel: I am

Default avatar.png midomawk: i have a question about my code because im new to python

Default avatar.png midomawk:

Default avatar.png Justin123: Can you give an example of the input? Is it just a single line string like "stufufuf;anothercommand;things"

Default avatar.png midomawk: echo "hello;word";pwd;

Default avatar.png Justin123: if so you can split by ; by doing s.split(';')

Default avatar.png Justin123: which gives you array of stuff in between

Default avatar.png midomawk: i cant because echo "hello;world"

Default avatar.png midomawk: is a command

Default avatar.png midomawk: maybe there is a way to replace a char within two quotes ? with a negative ascii code ?

Default avatar.png midomawk: the way idk

Default avatar.png Justin123: so what would you want to do in the case the ; comes between ""

Bassel: Are commands guaranteed to be correct?

Default avatar.png 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

Default avatar.png 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"

Default avatar.png midomawk: yes its correct

Default avatar.png midomawk: if i have echo "hello ; world"; pwd; i should get ["hello ; world", "pwd"]

Default avatar.png midomawk: sorry ["echo hello;world", "pwd"]

Default avatar.png midomawk: my script is working just im looking for a better way because im not a python guy that's way

Default avatar.png Justin123: its not supposed to be ["echo "hello;world"","pwd"]?

Default avatar.png midomawk: yeah sure

Default avatar.png 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

Default avatar.png midomawk: yeah a good solution also

Default avatar.png midomawk: yeah sure thanks bassel

Default avatar.png midomawk: thanks to justin also

Bassel: You're welcome

Default avatar.png Justin123: re.split(;(?=(?:[^'"]|'[^']*'|"[^"]*")*$), data)

Default avatar.png Justin123: no credit to me, found online

Default avatar.png midomawk: thank you man ;D

Default avatar.png Justin123: np, basically it just uses regex and lookahead ? to make sure any ; it finds isn't between quotes