Chat:World/2020-11-18

From CG community
Jump to navigation Jump to search

phord: I can't stop working on this for more than a couple of hours because my code is so full of spaghetti I'll forget how any of it works.

ClockSort: :spaghetti:

F0lio: idk if im the only one who suffer from the console size, why not more flexibility in size adjustment.

Icebox: just use local IDE

F0lio: yeah, that's what i do

F0lio: but..

useAllTheThings: the console output, would be nice if there was an easy way to resize it without taking up the entire vertical view

Default avatar.png JamesOConnor: Is there anyway to get the inputs they give?

Default avatar.png JamesOConnor: so as to test on a local ide?


Icebox: only if you reprogramm the game offline

Icebox: or you could copy the referee

Default avatar.png JamesOConnor: how do I get the referee?

jrke: https://github.com/CodinGame/FallChallenge2020

jrke: ^^ refree

Default avatar.png JamesOConnor: ah

Default avatar.png JamesOConnor: do they do that for all games?


Icebox: yes

jrke: yup

Xenoid: yeah

jrke: everygame is having refree

Default avatar.png JamesOConnor: I mean do they release the referee code for all games

jrke: yes

Icebox: yes

Default avatar.png JamesOConnor: where would I find the one for ghost in the cell?


Default avatar.png JamesOConnor: I see

Icebox: https://github.com/CodinGame/ghost-in-the-cell

Default avatar.png JamesOConnor: thanks

jrke: JamesOCornnor just goto this link - https://github.com/CodinGame you will nearly every refree code here

Default avatar.png JamesOConnor: Thank you, it was very painful to try and debug my code on the codingame system

ScriptKiddie0101: guys, what do you think about using random and getting 100% acceptance?

ScriptKiddie0101: without time limit

ClockSort: my arena submission is timing out, but it works fine in the Play My Code area

ClockSort: any ideas?

Default avatar.png JamesOConnor: how much have you tested it in the play my code area

ClockSort: 5 runs, all workd

Default avatar.png JamesOConnor: it might be that it is just not encountering that scenario

ClockSort: 100% of them timeout in arena

Default avatar.png JamesOConnor: hm

ClockSort: oh wow, the cause was C#'s [MethodImpl(MethodImplOptions.AggressiveInlining)]

ClockSort: i guess that plays differently in the arena somehow (Release vs Debug build, maybe?)

ClockSort: anyway, now i know that cause. Thanks for the "hm"

ClockSort: here was the cause: i have a prebuilt array of gamestates that i put my searched into. With this inlining flag, it searched so fast that it ran out and crashed "array out of bounds"

ClockSort: easy to fix, just add some "sleep" statements :D

Zenoscave: or more states.... ;)

ClockSort: @zenoscave thank you so much for your c# garbage collection ideas. I'm now searching 500k nodes in 35ms in C# because of your help. I was about to give up and rebuild in C++ when you saved the project for me :)

Zenoscave: clock sort wanna help me?

ClockSort: any specific question?

Zenoscave: I only get 20K max

NinjaDoggy: 500k nodes? O.o

NinjaDoggy: in 35 ms? o.O

Zenoscave: Beam search level wise with an array having trouble

ClockSort: everybody switch to C# now :laughing:

NinjaDoggy: do you have a hashmap of some sort?

eulerscheZahl: i'm hitting a wall :/

NinjaDoggy: to track transpositions?

Zenoscave: no

NinjaDoggy: also... locally? or on codingame @ clocksort

Zenoscave: lol NinjaDoggy if it was local it would still be impressive

ClockSort: here's a random match from my submission. https://www.codingame.com/share-replay/504875554

ClockSort: d is search depth, i'm doing full BFS on CAST and BREW.

Zenoscave: Ok just need to figure out bfs with an array again

NinjaDoggy: ok phew I panicked for nothing ;)

NinjaDoggy: I easily double the depth :P

ClockSort: Ninja, do you trim somehow?

Zenoscave: clocksort beam search

NinjaDoggy: i do trim but

NinjaDoggy: the result is the same as untrimmed

NinjaDoggy: guarenteed!

Zenoscave: Ninja you have perfect heuristic?

NinjaDoggy: yes!

Zenoscave: lies

NinjaDoggy: will talk about in my write up ;)

Zenoscave: DP????

Zenoscave: I can't wait

Tanmay_105: hello

ClockSort: i haven't decided how to trim yet

NinjaDoggy: @eulerscheZahl want to talk strategy if you're stuck? :D

NinjaDoggy: I've been thinking and working nonstop, despite low number of submission i swear ;)

ClockSort: my code still loads up on inventory though. ha. https://www.codingame.com/share-replay/504875722

ClockSort: what beam width do you use, ninjadoggy?

NinjaDoggy: i don't beamsearch, it's plain bfs

ClockSort: oh it's zenos doing beam

Icebox: oh eulerscheZahl you're awake already

Codeab: ?Icebox its in the afternoon

hbouillo: The world is made of different timezones buddy

Codeab: whoops

eulerscheZahl: 6am afternoon, yes

hbouillo: :D

eulerscheZahl: i think my bot rests too much. but how to change?

Gonny: NinjaDoggy you go to depth 15 and find the best path there? How are you not at least top 5?

NinjaDoggy: because I don't have enemy sim

NinjaDoggy: it's pure single play lol

NinjaDoggy: so if we're both against afk bot, and we learn the same stuff

NinjaDoggy: I'm almost confident my bot is stronger than top 5

NinjaDoggy: but that's not the game ;)

eulerscheZahl: because lots of users can plan 15 turns ahead

NinjaDoggy: also perfect shortest distance can be beaten by better heuristics

NinjaDoggy: hey eulerscheZahl

NinjaDoggy: you should make an optimization puzzle from this game :D

eulerscheZahl: nah

NinjaDoggy: given a set of tomes, and a fixed set of deliveries, shortest turns to do it ;)

DreadY2K: Anyone have tips for optimizing BFS? I can't get past 3 without timeout :(

phord: How many candy pieces can I fit in my backpack?

NinjaDoggy: 10

ClockSort: @dreadY2K what language?

DreadY2K: I think my bottleneck is copying an array, for the sequence of actions and for which spells are castable, at each step

DreadY2K: But idk how to better optimize that

ClockSort: make sure you aren't newing up and freeing a lot of memory in your core loop

DreadY2K: @ClockSort I'm using Rust, but I think this isn't a language-specific thing

DreadY2K: My core loop is using and freeing a bit of memory, to track the sequence of steps and which spells are castable at that moment

DreadY2K: I'm just out of ideas for how to cut that out and avoid all those allocs and frees

ClockSort: well that's probably what's slowing it down

ClockSort: I newed up all my memory on turn 1 (you get 1000 ms) and then keep references to it at all times.

raymoo: you should use some structure like an immutable linked list that would let you share path prefixes

raymoo: then you don't need copying or quadratic memory

phord: Will rust let you reuse parts of a pre-allocated pool?

ClockSort: it's not a pool, it's just a giant static array...


       public static LeanState[] States = new LeanState[2000000];

DreadY2K: Rust has some allocator stuff that you can change how it allocates memory, but idk how to work with that specifically

ClockSort: i figure 2 million ought to be enough XD

DreadY2K: I think I'll go with raymoo's idea and do a linked-list thing

DreadY2K: That sounds easier than messing with how it allocs memory

tomatoes: make queue on first turn then only clear

ClockSort: that's more likely to get you a job

ClockSort: if any employer saw my code they would probably vomit :)

tomatoes: avoid heap/vec for small and tmp

raymoo: if you want to mess with alloc while doing the linked list thing you could allocate the list nodes in a pool

raymoo: not that I'm doing that

phord: If I saw my code on a whiteboard interview, I wouldn't hire me.

raymoo: and I dont' know rust so don't know how you would do that

Default avatar.png JamesOConnor: I have broken my code beyond repair :(

DreadY2K: I could google how to do allocator stuff if I was sufficiently motivated

phord: \o/ Time start over!

DreadY2K: Language specifics are easy enough to research

DreadY2K: But high-level algorithms are harder to search for, and a weaker point of mine

DreadY2K: Hence my asking

Default avatar.png KevinisMAD: How are people dealing with the resting mechanic within the bfs or are y'all just ignoring it?

eulerscheZahl: that's a valid move so it has to be included in the simulation

DreadY2K: Yeah, rest is a move that's equal to casting any spell, etc

jrke: REST becomes invalid when all of your CAST spells are castable

ClockSort: i'm considering a RESt any time something isn't castable.

DreadY2K: The optimal solution found by bfs (or fancier algs) wouldn't rest in that case, so you're safe from that

ClockSort: maybe i should change it to require two things

DreadY2K: Though it will slightly decrease fanout

ClockSort: yeah, it helps your search when you

remove double-rests

DreadY2K: So it's probably good for being faster

Default avatar.png KevinisMAD: Yeah that was what I am wrestling with. Adding it when I have found the path that okayish or trying to include it within my bfs

Default avatar.png KevinisMAD: that is okayish*

hbouillo: ClockSort you might miss optimal solutions if you prevent a REST with only 1 spell used

ClockSort: hbouillo i just wonder if it's worth it

hbouillo: Unless you really have a performance issue I wouldn't. It could be quite common that you need to use the same spell twice in a row at the end of a path, for instance

hbouillo: I didn't get a proper look at available spells, I'm pulling that assumption of frequency out of my *ss

phord: I'm worried about it only because someone may consistently beat me to the brew I'm after.

hbouillo: If you consider REST at the first used spell, you will never have a longer path than without considering it

hbouillo: Assuming your algorithm finds you an optimal solution

hbouillo: Only reason to increase the REST requirement is for performances

hbouillo: time wise

NinjaDoggy: *fingers crossed* finally top 20 again?

NinjaDoggy: nvm it's still bugged :(

eulerscheZahl: meanwhile i struggle to be the first toad https://prnt.sc/vl82ea

jrke: toad behind toad

jrke: lol

Whiskee: are there any gotchas I'm not aware of, using a c# Stopwatch?

eulerscheZahl: i just realized psyho's pic shows to ears. I always thought something impaled one of his eyes

Whiskee: I'm getting timeouts with less than 45 from last line in to console out

eulerscheZahl: start the stopwatch after reading the first line of input

eulerscheZahl: we all get occasional timeouts, something wrong on the CG end

Whiskee: ah, I see, thanks

eulerscheZahl: so it it's 1 in 10-20 matches, accept it. nothing else you can do

eulerscheZahl: if it's*

sadakatsu: I am currently timing out despite continuously increasing my safety margin ~_~

Icebox: saaaaaame :/

eulerscheZahl: https://www.codingame.com/replay/504890582 aaand I'll just resubmit

Default avatar.png Nabil-Hayek: why cant i view others code after clash is complete

Icebox: because they haven't shared it

Default avatar.png Nabil-Hayek: thanks

eulerscheZahl: because you are fighting against bots and those never share

Icebox: shhhhhh

Icebox: eulerscheZahl you just had to break the illusion

Icebox: Spielverderber

eulerscheZahl: let's call them shadows of previous times

NinjaDoggy: How do I make my bot not give up :(

NinjaDoggy: finally I got opponent sim working, but now if it finds that the opponent wins

NinjaDoggy: it just gives up and plays random stuff :(

NinjaDoggy: instead of hoping the opponent messes up and maximize points still :(

eulerscheZahl: i had a similar problem. disabled the opponent again now :/

NinjaDoggy: also if my submit was 8/10

NinjaDoggy: and i'm on 10 winstreak should i resub?

eulerscheZahl: let it run

NinjaDoggy: 8/10 -> 15/17

NinjaDoggy: not worth resub?

eulerscheZahl: be patient

NinjaDoggy: ok ok

NoobCod3: can somebody help me learn Python

Icebox: did you read the tutorial NoobCod3?

NoobCod3: i forgot

dbf: I've read about timeouts, so implemented object pool in my code. I start to get timeouts, and was able to fix them only when object pool was removed :|

NoobCod3: i will read tomorrow

NoobCod3: because 11:15 for me in America

eulerscheZahl: very long ago (coders of the caribbean) CG had a bug where you always timed out your first 10 games on submit

NoobCod3: huh

eulerscheZahl: a top10 bot barely reaching top100

NoobCod3: wow

ScriptKiddie0101: wow you are the top 1

ScriptKiddie0101: you must have really high IQ

eulerscheZahl: just high dedication

ScriptKiddie0101: nice

Westicles: He also has a high basketball IQ

ScriptKiddie0101: how old are u

ScriptKiddie0101: and since when do you code?

dbf: for couple of hours today already I think? :)

useAllTheThings: Can someone explain what's happening at turn 28 here

useAllTheThings: https://www.codingame.com/replay/504893131

NinjaDoggy: @eulerscheZahl, earlier you linked some game history -> opponent conversion thing right?

NinjaDoggy: can you link it again please?

eulerscheZahl: this? http://eulerschezahl.herokuapp.com/codingame/replays/reproduce/?id=502157528

ScriptKiddie0101: euler, hwo old are u

eulerscheZahl: 29

NinjaDoggy: yea, thanks

NinjaDoggy: is there a way to generate input data from this?

ScriptKiddie0101: with which age did u start coding

ScriptKiddie0101: ?

NinjaDoggy: without running it locally? :P

eulerscheZahl: around 15

eulerscheZahl: just print all the input to stderr

ScriptKiddie0101: am i really going to impove here?

eulerscheZahl: https://prnt.sc/vl8hyc then you have it in the replay info

Icebox: ScriptKiddie0101 depends on how much time you're gonna put in

ScriptKiddie0101: tthis shortest code mode isnt good practice

eulerscheZahl: you can learn a lot here if you are willing to investigate on your own and follow your ideas. there isn't much handholding to guide you

ScriptKiddie0101: i'm putting in like 8 hours a day here xD

ScriptKiddie0101: i'm addicted to this website

Samer: is there a tutorial somewhere that explains how to set up a game locally for testing?

Default avatar.png Rodrigo_the_coder: noobcod3, private chat me... :disappointed:

eulerscheZahl: Samer https://forum.codingame.com/t/how-to-run-ocean-of-code-github-project-locally/168041/3?u=eulerschezahl

Samer: thanks eulerscheZahl

sadakatsu: I am having severe timeout issues every single game now.

ScriptKiddie0101: do people really get jobs because of this website?

Default avatar.png KevinisMAD: No idea but it is a fun way to practice skills used in interviews kinda sorta

Samer: i just play for fun and to learn new stuff

Default avatar.png KevinisMAD: Same for me

Samer: i'm an engineer, programming is not my career... it's a hobby

Default avatar.png KevinisMAD: Although I will say I do also just like tweaking algos it makes you have to learn it more than just taking a class or whatever

DreadY2K: I just spent an hour trying to debug why my BFS wasn't working

DreadY2K: It turns out, my BFS was fine

DreadY2K: I just took the path to the LONGEST brew, instead of the shortest brew

Default avatar.png KevinisMAD: Haha

DreadY2K: It did get me to re-write it as one BFS instead of one BFS per brew, which should be faster, so it's not a total loss

DreadY2K: But that's still a bit annoying that I'd pull a bit like that

Default avatar.png Rodrigo_the_coder: CSB

Default avatar.png Westons_Dad: hello all. n00b here just getting started today and looking to learn python. any resources you can point me to would be great. i have familiarty with MATLAB, but thats more scientific programming.

DreadY2K: I first learned python by doing the Codecademy course. It's free, not too long, and gets you started with basic language familiarity

DreadY2K: It doesn't get too deep into it, but it'll get you started

Default avatar.png Westons_Dad: ok thanks! I'll have to check that out too.

sadakatsu: Since you have a background in MATLAB, you might find a somewhat straightforward comparison in the comparisons between the languages by looking at tutorials for the matplotlib, numpy, and scipy Python packages. You'll see stuff you probably used to do in Python syntax.

sadakatsu: It's not a traditional approach, but it might give you a better feel for what's going on when you switch to more traditional Python tutorials.

Uljahn: Westons_Dad: take a look at numpy and scipy packages for scientific python then

Uljahn: oh the chat freezing again

DreadY2K: Also, thanks to whoever it was that suggested I use a linked list instead of a vector for my BFS. I doubled my search horizon with this change.

daffie: linked list that's totally what I was just thinking to use but wasn't sure thanks

Whiskee: oh my god I spent minutes trying to figure out why the hell I got stuck with a full inventory

Whiskee: and

Whiskee: I wasn't on the left

Whiskee: but on the right

Whiskee: I'll just go to sleep

Xenoid: :D

Default avatar.png Rodrigo_the_coder: :dissappointed:

Default avatar.png Rodrigo_the_coder: :disappointed:

Default avatar.png Rodrigo_the_coder: I'm lonely

Default avatar.png mabdallah1422: Is the thor one kinda bugged? It says I fail one of them but he reaches it and he just keeps going

Default avatar.png Rodrigo_the_coder: thor part 1?

Default avatar.png mabdallah1422: yea

Default avatar.png mabdallah1422: I doubt it is bugged since ik people have done it but he literally goes over the lightning

Default avatar.png mabdallah1422: then just keeps going

Default avatar.png Rodrigo_the_coder: in python 3:

Default avatar.png Rodrigo_the_coder: http://chat.codingame.com/pastebin/8e405173-f9b8-4584-8d50-26a0d66467e8

Default avatar.png Rodrigo_the_coder: did it work

Default avatar.png mabdallah1422: It did

Default avatar.png mabdallah1422: idk why mine didn't though

Default avatar.png Rodrigo_the_coder: I'm a expert at python

Default avatar.png Rodrigo_the_coder: btw i saw your profile

Default avatar.png mabdallah1422: Yeah I just started

Default avatar.png mabdallah1422: I'm taking a python class too rn but just wanted more practice and this came up when I searched on reddit

Default avatar.png Rodrigo_the_coder: https://docs.python.org

Default avatar.png Rodrigo_the_coder: I'm so lonely :disappointed:

Uljahn: you have Automaton2000 here

Automaton2000: i was trying to figure out how to do

Q12: how to do what Automaton2000?

Automaton2000: what is your problem with it?

Q12: > Automaton2000 I want to know what you want to do

Automaton2000: there should be a thing in python

Q12: > Automaton2000 I agree, there definitely should be a thing in python :joy:

Automaton2000: when i go to bed now

Default avatar.png Rodrigo_the_coder: i remember automaton2000 kicked me

Automaton2000: i'm trying to get the gold

Default avatar.png Rodrigo_the_coder: what gold

Default avatar.png Rodrigo_the_coder: I'm very lonely!!! :disappointed:

Default avatar.png Rodrigo_the_coder: :sad:

Default avatar.png Rodrigo_the_coder: :sob:

Default avatar.png Rodrigo_the_coder: :disappointed: :sob:

Augis123: hi

Augis123: hello???

Default avatar.png LLG: I'm trying to check if REST is a valid move, then iterate through all of my learned spells and update their castable property to true.

it's hitting my performance real hard, you guys have any idea how to deal with that?

Augis123: IDK :)

Icebox: is it really that costly?

Icebox: I wouldve thought flipping one bool for like 10 spells shouldn't be a performance issue :D

WINWINWIN: Are you somehow repeatedly going through the spell list?

Q12: when gold league will be open?

eulerscheZahl: in 9h

Q12: thanks, I don't know what else to improve till then, I am stuck :pensive:

Samer: eulerscheZahl still here?

eulerscheZahl: no

Samer: oh ok

Samer: :P

eulerscheZahl: he's gone ;)

Samer: how did you resolve the missing manifest error when compiling the game?

Samer: i've been fighting with this for an hour

Samer: the only main i found is in Fall2020Main, and that runs on the game engine... i downloaded the game engine, but no idea if and how to combine it with the fall game

Samer: i'm sure i'm missing something, or the code is missing a proper manifest

eulerscheZahl: did you build it with maven?

Samer: yes

Samer: build was successful

eulerscheZahl: tbh i never tried it run it outside of my IDE

Samer: when trying to run it, i get the manifest error

Samer: oh

eulerscheZahl: good ol' IntelliJ

Default avatar.png LordSkaven: euler did you break your bot again?

eulerscheZahl: i don't think so. others just get stronger

eulerscheZahl: and submit is extremely slow again

eulerscheZahl: "We'd like to apologize for the troubles we had with the game and the platform at the beginning of the challenge. Everything should be running smoothly now. "

eulerscheZahl: Thibaud lied to us!

Default avatar.png LordSkaven: I dont think I am going to submit before gold, unless I make a breakthrough

eulerscheZahl: i don't submit before it gets faster again

Default avatar.png LordSkaven: one of the major things I still need to add is end game logic, i.e gaining more ingredients above tier0 at the end. I am losing quite a few games by 1 or 2 points because of that

TheSpiffiest: Do I have to wait for arena submissions? Like is the judging happening on my PC, or is it on the server? I would rather do other stuff than watch the matches

eulerscheZahl: happens on the server. but something is broken right now

eulerscheZahl: don't worry, you can close the tab and turn off your computer

TheSpiffiest: Coool. It's 4am here, just did a quick get out of wood league thing but I have to sleep

TheSpiffiest: thank you

raymoo: I left for 20 minutes and I got 5 battles since then

raymoo: simply epioc

Icebox: I could make another season of paranormal activity just by reviewing my code every episode ngl

eulerscheZahl: dbdr reported it 1.5h ago. let's see when something will happen about it

Joris_Serva: ka jus lopai

Icebox: Joris_Serva that's bannable

Icebox: refrain from insulting others on the chat

eulerscheZahl: then do it Icebox ;)

Joris_Serva: raminkis

eulerscheZahl: tell be when i should enter

jrke: reported what euler?

eulerscheZahl: the slow submits

Icebox: Joris_Serva just because you assume noone understands what you're saying doesn't make it okay

Default avatar.png shroudo7: guys i use vs code and sync very good working. But i wanna see console output in my terminal. How can i do this?

Default avatar.png Poviliukas: looks like arena simulations back on track

eulerscheZahl: whee!

Icebox: can we promote CG less

Icebox: so that it doesn't die every contest?

Icebox: Kappa

jrke: no promote CG as much as you can

eulerscheZahl: last time it went smoothly as far as i remember

eulerscheZahl: might be related to their database upgrade from postgres 9 to 12

eulerscheZahl: (just guessing)

jrke: except on first day euler(spring challenge)

eulerscheZahl: i already forgot about that. what happened?

jrke: there was boom in starting few hours so battles became slow or stopped for some people

eulerscheZahl: maybe i already went to bed at that time

jrke: 20% battles in an hour in wood leagues

Default avatar.png LordSkaven: are submits better now?

jrke: i think its better now

WINWINWIN: I just checked, over 6000 people are participating, its fantastic :)

eulerscheZahl: and only 20 tshirts

jrke: and 3 canvases :(

Jchenaud: ya des sort repeatable ? si oui c'est quoi leur signe distinquetife dans la scene ?

eulerscheZahl: finally back to top10. legend will be a hard fight for me :(

eulerscheZahl: while my submit finishes, emil is still stuck

jrke: legend opening will be top 20-40 i think

eulerscheZahl: no :D

jrke: it was 16 for spring challenge right?

eulerscheZahl: i don't remember the exact number. but legend size usually is a fixed number and not a fraction

CommanderCero: wait does that mean you can get kicked out

eulerscheZahl: i also predict a small legend league (somehow that's how simulation contests usually turn out)

eulerscheZahl: you can't get demoted

eulerscheZahl: only go up

jrke: but it turns 100 until end of contest

eulerscheZahl: you may stay in the lower league and then have to beat the boss like you did for wood bosses

wlesavo: submits alive again

eulerscheZahl: emil still stuck

eulerscheZahl: dbdr too

eulerscheZahl: wait, dbdr is back

jrke: 195 bots computing too many

DomiKo: Is League boss fixed before the contest?

eulerscheZahl: no

eulerscheZahl: chosen on friday

eulerscheZahl: some player code

DomiKo: ohhhh

DomiKo: so that's how it work's

DomiKo: so they choose some place

eulerscheZahl: CG has no time to write top level bots

DomiKo: and that player is boss?

eulerscheZahl: yes

**eulerscheZahl was the boss at BOTG

DomiKo: nice

eulerscheZahl: unless gold players start to optimize against your bot to promote

eulerscheZahl: and then they kick you hard in legend

wlesavo: there should be an achievement become a boss

eulerscheZahl: too random

jrke: thats why BOTG boss ignores groot :grin:

wlesavo: but there would be a battle, people would tune their bots aiming somewhere to the league edge

jrke: i think 300 will be opening of gold

Default avatar.png Rodrigo_the_coder: https://sga.talk-cloud.net/static/defaultClassEnd/index.html?skin=skin_beyond_default&language=english&time=&no=

eulerscheZahl: "We’ll put release in IDE for Rust, C#, F# and VB.net this morning (Wednesday) and see if doesn’t create too many issues for people used to Debug"

tomatoes: :nerd:

wlesavo: mid contest is the best time for language updates as always

Uljahn: that's more like a platform update

wlesavo: well still holds up

Uljahn: that's because there's a lot more feedback during contests

mlemm: anybody using dfs/bfs here ?

andrefpoliveira: bfs

mlemm: whats your rank andre

eulerscheZahl: with some variation of BFS you can surely enter top10

BenjaminUrquhart: I have a variation of bfs and I'm not there :upside_down:

andrefpoliveira: 1450th xD

mlemm: the thing is i was planning to use C to implement it but kinda dead end :D

Quidome: How deep is your look ahead?

eulerscheZahl: who?

BenjaminUrquhart: give me a sec

andrefpoliveira: Im trying to improve my depth

Quidome: anyone :)

jrke: mine depth is 5

andrefpoliveira: Im only getting between 3 and 6

Bubbly_Bee: Hi all. Is there possibility to buy a coding game T-shirt? Probably I will never get to top 20, but i would like to have one :D

eulerscheZahl: about 15

Quidome: what!

Quidome: nice ...

andrefpoliveira: damn

eulerscheZahl: you can only win them, limited edition

BenjaminUrquhart: seems to be at most 8

Quidome: And that in C#

Quidome: very good

BenjaminUrquhart: but it stops at first brewable

JBence: hey euler

wlesavo: somehow my depth 7 twice better than my depth 15 ladderwise

JBence: got you back

eulerscheZahl: i could go deeper if i prune more. depth means nothing

JBence: https://www.codingame.com/replay/504160287

Quidome: Aha with pruning, ok

eulerscheZahl: you won by 2 points JBence :/

eulerscheZahl: any obviously bad move i'm doing?

Quidome: OK , for another measure then, how many states do you evaluate in a turn?

eulerscheZahl: oh, that's an old version of my bot

andrefpoliveira: 150? xD thats sad

eulerscheZahl: the one which tells you when you can finish the next potion in the speech bubble

JBence: yeah, this is from yesterday

eulerscheZahl: 50k-60k states including duplicates

andrefpoliveira: F

wlesavo: eulerscheZahl what was the second message for?

Quidome: hm , I need to keep working :P

JBence: you can gain a lot of depth by dropping duplicates

DomiKo: Euler in first turn?

eulerscheZahl: your max score after X turns

DomiKo: in 50ms?

wlesavo: oh i see

eulerscheZahl: my time limit is 40ms

eulerscheZahl: i know i could go higher for the first

eulerscheZahl: but i don't reuse my tree and i don't need 1s to figure out i should LEARN

andrefpoliveira: I need to use repeatable spells

andrefpoliveira: Currently only using 1 time

wlesavo: same, with 40ms almost no timeouts actually

JBence: i'm getting timeouts with anything over 30ms

eulerscheZahl: i few still happen. even in turn 1 where i need 40ms out of 1s. but CG won't tackle that during the contest

DomiKo: I ask about first turn, because the number of simulation could differ a lot then I guess.

JBence: working on some tricky bit shifting right now

DomiKo: Using 1s is uselless I guess

DomiKo: I could reach like 200K in first one.

DomiKo: But my eval is so bad :(

JBence: you don't need that at the start

mlemm: guys any materials to read before recoding bfs with c++/c# ?

eulerscheZahl: just hit compile until there are no more errors

JBence: DomiKo, just try to learn good spells

Default avatar.png rohit523: mlemm c language will also work in c++ right??

JBence: even without sim

DomiKo: In terms of top10 "good spell" is not that easy to pick.

JBence: I'm just saying that you don't need the sim for the spells at the start

BenjaminUrquhart: I am successfully losing all my battles

BenjaminUrquhart: yay

JBence: just do the opposite of what your bot suggest

BenjaminUrquhart: I'm not usually this bad, not sure what's going on

Scarfield: take a short break, can work wonders when stuck

BenjaminUrquhart: I did take a break, I haven't really touched this since bronze

Default avatar.png k7n: is there a table where you can see which id a tome gets when turned into a spell?

Uljahn: there is the referee code

Default avatar.png k7n: thanks, i took me a while to find how the new id gets attributed

RockyMullet: so is the chat dead or alive today ?

RockyMullet: oh alive, good good

RockyMullet: hi

wlesavo: hi, is this mullet alive? :slight_smile:

ciaoo: when will gold league open?

eulerscheZahl: 6h

andrefpoliveira: tomorrow

eulerscheZahl: in my timezone it's today

andrefpoliveira: they changed to 19th

eulerscheZahl: this display is sometimes buggy

andrefpoliveira: oh okok

eulerscheZahl: it's always monday, wednesday, friday

eulerscheZahl: (except if the contest lasts for a full month)

Ramdeath: static or dynamic arrays is faster for bfs?

Ramdeath: in c++

andrefpoliveira: Can someone teach me how to play offline?

tobk: there's no straight-forward way to see the number of potions the opponent has brewed, righ?

andrefpoliveira: You can keep track of how many times the score went up

Locter: Step 1: turn off the internet

eulerscheZahl: right, you have to count how often the score increases

andrefpoliveira: @Locter nice

andrefpoliveira: Now for real xD

eulerscheZahl: i can teach you if you use an IDE (intelliJ or eclipse). never tried from the command line

tobk: Turning off the entire internet is overkill. You just have to unplug your own computer.

Locter: =))

andrefpoliveira: I have intellij yeah

andrefpoliveira: Put I use python

andrefpoliveira: Is it realy needed?

andrefpoliveira: really

RockyMullet: I just saw a FB ad looking for a 3 "ninja master" senior programmer then it followed with "Do you call yourself Sir C++ of Coding ?"

I puked a little

ZarthaxX: :rofl:

ZarthaxX: excellent ad

ZarthaxX: carneeeeeeeeeee

RockyMullet: holla carrnneeeeeee

ZarthaxX: hai toad

RockyMullet: are you a ninja master ?

ZarthaxX: howdy carne

ZarthaxX: obv, im the najaest

ZarthaxX: ninjaest*

RockyMullet: you are Sir Ninja Master

ZarthaxX: you gotta show that ad btw :rofl:

RockyMullet: it's in french

RockyMullet: sadly

RockyMullet: I translated the good parts :P

ZarthaxX: cant translate it coz its an image?

ZarthaxX: sad :(

RockyMullet: filled with emojis and "remeber that thing when we were kids" so "old senior programmers" would apply

eulerscheZahl: hi ZarthaxX

ZarthaxX: haha okey :P

ZarthaxX: howdy toad

RockyMullet: it's a web / mobile app company who keeps poping in my ads, with cringe reference to ninjas all the time

eulerscheZahl: did i break my bot again or did the timeouts kill my submit?

RockyMullet: there webpage even is at .ninja

ZarthaxX: hhahahah so good

ZarthaxX: are there timeouts issues now??

ZarthaxX: you are sinking in the bottom toad :(

ZarthaxX: ah there you go lol

eulerscheZahl: "Really hard to investigate. Won’t fix before the end of the challenge. We’ll try to make improvements for next contest. I can only advise to take a bit more margin against the 50ms limit and to limit the nb of objects created for GC. It impacts all players."

RockyMullet: the toad can swim

ZarthaxX: okey... sad

ZarthaxX: true

eulerscheZahl: will this be one of the contests where i go to legend and call it a day?

JBence: nah, go for the win

andrefpoliveira: always ftw

ZarthaxX: eulerscheZahl prob

ZarthaxX: i dont see much motivation in this contest

eulerscheZahl: and resubmit again. 4 timeouts in 20 games at too much to climb

ZarthaxX: does it really feel like a solo optim game?

ZarthaxX: that's rough

eulerscheZahl: and now i lost again https://www.codingame.com/share-replay/505037009

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

eulerscheZahl: https://www.codingame.com/share-replay/505037118 doubleflip

ZarthaxX: fuck :(

yhyoxx: guys is there a way to remove timeouts for testing sake

wlesavo: easy https://www.codingame.com/share-replay/505028382

CommanderCero: euler leave my tables alone

eulerscheZahl: ┻━┻︵ \(°□°)/ ︵ ┻━┻

andrefpoliveira: Nice

CommanderCero: :rage:

RockyMullet: yhyoxx no, the best way is to test locally on your computer

RockyMullet: but thats not plug n play

FrancoisB: I don't get the line number in my C# expection stacktrace. I was under the impression it was there before. Is there a trick?

FrancoisB: exception*

Uljahn: i guess C# is now in release mode in ide :thinking:

eulerscheZahl: yes, that was announced to happen

FrancoisB: Maybe they though it could help with the timeouts?

FrancoisB: ok, cool

eulerscheZahl: "let's see how many people complain"

CommanderCero: ive just set my timeout to 40ms

CommanderCero: and hope it works

FrancoisB: just making sure I wasn't imagining things haha

FrancoisB: Well it was convenient to get the line number but it's nothing that a few debug statement can fix. I appreciate they are trying to improve performance.

[CG]SaiksyApo: Do you prefer promotion with or without recalc. last time, the server was still on heavy load even without it, so I didn't change that much :shrug:

Whiskee: what's the cutoff, usually?

dbdr: [CG]SaiksyApo without recalc, no point to it, better to save resources

[CG]SaiksyApo: It depends of the game and the amount of code required

[CG]SaiksyApo: Since I played that one, I know for sure that the cut will be way higher than my current score 280+

[CG]SaiksyApo: Like 150 or so

[CG]SaiksyApo: Silver was just using some spells in the tome + a proper use of rest time.

Gold should be a better use of tome + multiple casts + better strat overall

Csipcsirip: euler are u hardstuck rank30 now ?

wlesavo: any prediction for the initial legend size?

[CG]SaiksyApo: Legend is aim to be less than 100

[CG]SaiksyApo: (at the end)

[CG]SaiksyApo: So usually top 10/20

wlesavo: euler already started hiding his bot behind timeous

wlesavo: i see, thx

FrancoisB: :joy:

JohnCM: wow why is bronze so hard for this one?

JohnCM: i'm trying very hard not to code bfs, but looks like i have to even to get into silver

[CG]SaiksyApo: Bronze boss has no BFS, it's a simple loop

Maciulis: well you dont, but if you do, you will be semi prepared for silver

wlesavo: you will need *some* kind of search anyway, so better start now

CommanderCero: how do you know that

CommanderCero: oh nvm

CommanderCero: ignore me

JohnCM: oh is it? my code is just 50 lines for wood haha.. also a simple loop

JohnCM: i'm trying to do as little as possible to get into silver

MadKnight: why so ?

MadKnight: do as fancy as possible while u are still in bronze and get 100% winrate agaainst everyone in bronze

PED: Hey Maddy

JohnCM: haha i want to leave some room for improvement

PED: Wadup ?

JohnCM: if i code something too good, what if i can't improve further

mlemm: there is always room for improvements

RockyMullet: JohnCM and can your code be too good but not good enough at the same time ?

RockyMullet: there's not much room for heuristic in this one imo

RockyMullet: better go tryhard now

JohnCM: heuristic ftw!

JohnCM: have you heard of heuristic bfs

RockyMullet: my favorite

JohnCM: ya that will be my silver

RockyMullet: there's either something wrong with my sim or my scoring, I NEVER have a sim result that the last actions isnt a brew

CommanderCero: do you maybe check gameOver wrong

CommanderCero: in regards to potion count

eulerscheZahl: makes sense to end the game with brew

RockyMullet: lol you guys are assuming my sim reaches end of game haha

RockyMullet: but maybe that's it

tobk: if you have to pay tax for a spell that already has tax on it itself, you still have to pay the tax before getting the tax back, right?

PED: Hey eulerscheZahl

andrefpoliveira: yes

eulerscheZahl: hi

RockyMullet: I do have a check to see if all potions are brewed, maybe I wrongly ended up in that case and never check behond that

eulerscheZahl: haven't seen you in a while

PED: Havn't been around in a while ^^

JohnCM: hi

eulerscheZahl: and a new profile pic

PED: So corporate ikr

eulerscheZahl: but not the old Pango one

PED: Good times

PED: Anyway, I'm slowly discovering MCTS, had never heard of it before

PED: Would oyu have ideas on about to deal with the depth of the search ?

eulerscheZahl: cool algo if you have no idea what's going on

PED: Ahah exactly

aCat: Standard Output Stream: http://chat.codingame.com/pastebin/a012b5e3-def4-4aab-ad8e-89b607dfcea6

eulerscheZahl: beam search for this game i guess

aCat: why this can happen - it catches my output !

eulerscheZahl: so little opponent interaction

eulerscheZahl: maybe a really close timeout?

aCat: according to Stopwatch I did my search in 3ms

eulerscheZahl: this contest i a nightmare regarding timeouts

PED: +1

eulerscheZahl: and a "won't fix", at least for the duration of the contest

PED: Ok thanks for the tips euler :)

RockyMullet: ok, clearly it, once I brew a potion, I never pass in my sim with this potion brewed, something is wrong

hasleron: how do you put out the time it took for the move?

eulerscheZahl: depends on your language

hasleron: c++

mlemm: for C i ise clock()

mlemm: and difference

RockyMullet: meaning I only choose sims with a brew last, meaning I favorise late brews, meaning my bot has ADD and always switch brew

hasleron: oh I see

PED: I've had issues with clock in this contest,, I switched to C++ and high_resolution_clock, since then I have fewer timeouts

JohnCM: oh no... 35/2406 for bronze with pure heuristic

JohnCM: i'm still short:(

JohnCM: haha time to pull out the big guns

JohnCM: if ppl put sacrifice on a spell, can i learn that spell and gain their sacrifice?

hasleron: if you can afford your own sacrifices first

struct: Hello

JohnCM: as in the sacrifice is for a spell at the bottom of a tomb

hasleron: yeah

JohnCM: cool, i see some of my opponents building pyramid

JohnCM: they put 4 tier 0 sacrifice at the bottom level

JohnCM: might as well just learn that spell

hasleron: I see many just learning many spells in the beginning, seems quite successful

RockyMullet: JohnCM you can substitute a spell cast that only gives you tier0 ingredient for a learn spell giving taxes

RockyMullet: you get tier0s AND learn a spell, everybody wins

struct: Anyone getting random performance spikes in the same game?

struct: Like 1 turn has 25% less performance than the rest>?

eulerscheZahl: everyone

JohnCM: thanks RockyMullet

JohnCM: rank 35/2406... not enough

struct: So similar to what I said euler?

JohnCM: i'm determined to heuristic my way through bronze

PED: Can you send a replay JohnCM ?

SelectNull: he-he-he. My bot doesn't use bfs, just only a couple of primitive if-else heuristic rules and it is in the middle of silver leauge...

mlemm: im stuck in the middle too with same if else

JohnCM: https://www.codingame.com/share-replay/505077713

JohnCM: this is like 100 lines of if else code

Chiefbas: 🍋🍋🍋

JohnCM: heuristic can win this game

SelectNull: our if-else bots can mine bitcoins when others calculate paths )

mlemm: yeah when i saw the execution time i was like, it's dumb yes but its hella fast

PED: Hmm maybe you could consider buying more spells

struct: Yeah, this really seems to be related to CG, I tried localy, and the turn that I got around 60% less sims, had no performance difference localy

struct: in c++

PED: Overall it looks good tho JohnCM :)

PED: In this replay towards the end nearly all the potions brewable require some green and you don't have many ways to produce it, so you rely on the basic spell that turns one blue into a green several times, that's not super efficient

ZarthaxX: PEEEEEEEED

PED: ZaaaaarthaxX

ZarthaxX: howdy

eulerscheZahl: TOOOOOAD

eulerscheZahl: sorry

ZarthaxX: i can see your real face now

ZarthaxX: calling yourself toad :rofl:

PED: Pretty fancy what the tecvchnology can do nawadays

ZarthaxX: what haha

ZarthaxX: photoshoped

Astrobytes: Good afternoon all

ZarthaxX: heyo astro

struct: hi

mlemm: hello there :D

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

CommanderCero: everyones just throwing my tables around

eulerscheZahl: little Bobby tables...

Illedan: I can drop them instead..

JohnCM: thanks PED

JohnCM: i'll think of how to buy spells

JohnCM: now i'm 6/2402 just need a little more push

eulerscheZahl: wait a bit

struct: ^

struct: you are only .76 points away frmo boss

eulerscheZahl: how do you see that so fast?

struct: Im in bronze

eulerscheZahl: clever

JohnCM: haha... if this one cannot i'll code a bfs tomorrow

eulerscheZahl: good idea

JohnCM: just lazy to code extra haha

wlesavo: wait till you see silver boss

JohnCM: silver no boss yet right

DomiKo: yes

eulerscheZahl: in 4.5h

struct: Im going to try and implement BFS to day

wlesavo: today there gonna be one

struct: I think my sim is fast enough

eulerscheZahl: i'm more worried about the golden one

wlesavo: same

JohnCM: see who's code gets selected for silver then

JohnCM: whose*

wlesavo: legend is gonna be so hard

JBence: approx how many players will go through gold?

wlesavo: saisky said ~150

wlesavo: damn tilda

DomiKo: can we all crash our bots that boss will be bad?

eulerscheZahl: what's wrong with the tilde?

DomiKo: and make easy legend for everyone :D ?

JBence: i read it as a tilde

struct: tilde always showed like that for me in chat ~ -

eulerscheZahl: we already do crash our bots

eulerscheZahl: i blame CG

eulerscheZahl: right, you and your weird font sets

JohnCM: yes easy legend ty

JohnCM: pls bump me up bronze... i'm 2 spots away from boss

JohnCM: XD

JohnCM: thank you everyone.. i'm in silver now:)

PED: GZ !

JohnCM: thanks PED

JohnCM: i realize my bot crashes when it reaches tier 4 ingredients and cannot do anything else

JohnCM: what do you all do to resolve it?

Default avatar.png goolmoos: use the tier 4 ingredients

JohnCM: but what if i can't

Default avatar.png goolmoos: plan ahead

SirLoxley: or convert to tier 0 and dump on tomes

JohnCM: i see... you need the convert tier 0 spell though

JohnCM: anyway i only plan 3 steps ahead so far

JohnCM: maybe it will be resolved after i do bfs

Default avatar.png goolmoos: try to plan ahead more than one move at a time

SirLoxley: consider tomes as some sort of a extra heap for tier0 ingreds

Default avatar.png goolmoos: yeah, 3 is still not mush

JohnCM: my 3 steps ahead is actually not really planning

JohnCM: it is more like a for loop for requirements

JohnCM: it is still essentially a one-step planning

JohnCM: oh.. and 1283/1623

JohnCM: in silver

JohnCM: i think with bfs can go gold alr

JohnCM: also, quick question

JohnCM: do you all use the repeated casting ability?

RockyMullet: its important yes

JohnCM: i don't see ppl using it though

JohnCM: maybe not in bronze

WaRiOrOfCoDe: https://www.codingame.com/replay/505102312

WaRiOrOfCoDe: i don't no what to improve next?

WaRiOrOfCoDe: hint pls?

RockyMullet: JohnCM in the viewer it looks like a single spell

SelectNull: JohnCM without bfs you can be in the middle of the list as I do )))

JohnCM: haha i am already in the middle of the list lol

SelectNull: cool)

JohnCM: warrior of code, yours look like you are not prioritizing the right spell

JohnCM: your potion making speed same as the boss, but the score is much lower

JohnCM: go for spells that give high cost low turn ratio

JohnCM: for me i used a heuristic to judge how many turns it needs

JohnCM: with bfs you can get exact

WaRiOrOfCoDe: hmm basically I have to improve my method to calculate profit

WaRiOrOfCoDe: right?

CommanderCero: Question: You can only get 8times an urgency bonus during a game right? +3 4 times and +1 4 times. Its not like once +3 is used up that +1 will always be awarded, right?

struct: yeah

PED: WaRiOrOfCoDe in your replay you almost only use basic spells

WaRiOrOfCoDe: Hmm I don't know why ?

PED: These are not very efficient, maybe you shoudl get more spells or find a way to use your non-basic spells more often

WaRiOrOfCoDe: Yeah I am working on that...

WaRiOrOfCoDe: thanks

JohnCM: yes... non-basic spells save turns

PED: npnp :)

WaRiOrOfCoDe: @JohnCM thanks for input as well

WaRiOrOfCoDe: your*

JohnCM: http://chat.codingame.com/pastebin/79b76988-4436-49b5-b960-1edbb37e6fec

WaRiOrOfCoDe: thanks :smiley:

WINWINWIN: How many more hours till the opening of Gold?

struct: 3:30

struct: probably

WINWINWIN: 3:30 by which time?

WINWINWIN: Just so that I can convvert to IST :D

struct: I meant add 3:30

Uljahn: in hours from now

struct: to your time :p

WINWINWIN: :P

arkwaw: action id = 0 was always {-3,0,0,1} :o ?

arkwaw: for some reason I had {-2,0,0,1} :o

eulerscheZahl: but add 3h 30min to which timezone?

Default avatar.png the...G: how do I get into silver level?

struct: be above bronze boss

Default avatar.png the...G: IS that named UrBossa?

struct: yes

aCat: Warning: your code did not read all available input before printing an instruction, your outputs will not be synchronized with the game's turns and unexpected behaviour may occur.

Default avatar.png the...G: Oh, I've no chance. I'm rate 1269

aCat: What may be the reason for this if i am reading everything and then doing stdout?

Uljahn: could be timeout i guess

aCat: it is timeout - but I didn;t know the timeout is because of that or this is because of timeout

eulerscheZahl: just fix it aCat

aCat: ...

AshKetchum: aCat I once got it when I printed lot of debug info to err stream

eulerscheZahl: that's the kind of sentence i would expect from AutomatonNN

Default avatar.png the...G: I had that once, I closed the browser and reopened. It went away.

AutomatonNN: uploaded some contest to see if it works

eulerscheZahl: https://prnt.sc/vlhywt :(

eulerscheZahl: i should just give up

CommanderCero: *sad toad noises*

aCat: fix it

struct: beaten by a toad

struct: If that doesnt motivate you, I dont know what will

eulerscheZahl: he alrady did on topcoder

struct: No more ideas euler?

eulerscheZahl: speed

struct: Im getting around 400k

struct: 400-500k

struct: By doing getAllActions, play random do simple eval

eulerscheZahl: remove a 0 and we are on par

struct: If I remove pragmas I get one less 0

struct: But speed is not everything

yhyoxx: i just implemented minimax to find best decision in every step, more that 4 in depth results in timeout, am i wasting my time or should i explore ways to optimize ?

struct: Despite me having this number I doubt I can do a good AI

Default avatar.png tpeti: can it happen in CoC that the evaluator mistakes? I mean two practically same solutions got 80% and 100%

CommanderCero: i also can get around 200k but my ai is lacking in terms of heuristic and opponent prediction

Nerchio: when saying these numbers do you guys mean states processed or created

Default avatar.png LordSkaven: I usually explore around 4000 nodes,

CommanderCero: rounds simulated, so states processed

yhyoxx: per turn µ?

struct: Create state -> for (i < depth){ getallactions, playrandomAction} eval

Presac: How do you save your states/nodes? Cause mine seems to take to long to process.

struct: How big is your state Presac?

Presac: Pretty big.

struct: how many bytes?

Presac: oh, didn't think of bytes. Using classes in python.

yhyoxx: my states are a class with a bunch of vectors and methods

Presac: Haven't tried my hand a lot at these bots. Didn't think about using bytes to represent it instead.

struct: my state is 168 bytes

yhyoxx: i guess classes are slow, one should try to store everything in smaller data structure

Presac: Damn that is a lot of restructuring of my code...

yhyoxx: mine is 136 apparently

Default avatar.png SauceChord: Is this chat about the spring challenge or something more global?

struct: global

yhyoxx: is it spring already where u are ?

Default avatar.png SauceChord: It's fall where I am :)

yhyoxx: :')

tempux: its spring in southern hemisphere

tempux: probably

struct: Damn, I now feel your pain euler, I saw leaderboard

AbsentMoon: Is anyone else trying to run the game locally?

struct: and so few languages at the top besides rust and c++

Default avatar.png Rodrigo_the_coder: improve my code:

Default avatar.png Rodrigo_the_coder: http://chat.codingame.com/pastebin/648841e1-beb5-46e6-83e2-8624913af6de

Uljahn: pardun?

struct: je ne comprend pas

Default avatar.png Rodrigo_the_coder: CSB

Default avatar.png Rodrigo_the_coder: http://chat.codingame.com/pastebin/1457a9fa-ff48-4c35-bd3c-9c28096ff93f

Astrobytes: Read my reply: No

tempux: I have run the code locally

tempux: @absentmoon

Default avatar.png Rodrigo_the_coder: read my reply: :disappointed:

Default avatar.png Rodrigo_the_coder: http://chat.codingame.com/pastebin/19d8edb2-3454-42ce-8820-5d99fcffb6a2

Default avatar.png Rodrigo_the_coder: never got to silver

Astrobytes: Rodrigo_the_coder: There is a way to ask for help you know

Astrobytes: Just pasting your code and demanding we improve it probably isn't the best idea.

AshKetchum: When I run my code with the same inputs locally, my bot chooses some other move, how is this possible. I am using srand and rand, previously it was repeatable

struct: http://files.magusgeek.com/csb/csb_en.html

struct: Besides that, I cant help you much more, I have to start spending time on contest

Uljahn: legend or delete?

AshKetchum: Uljahn was the question for me?

eulerscheZahl: is it harsh to use ?disableChat when random users keep DMing you with questions?

struct: If that was the case I could delete now

Astrobytes: Depends how many/how frequently eulerscheZahl

struct: Depends on the user too

Astrobytes: You really have been getting them this time around huh

Astrobytes: Yeah for sure struct

eulerscheZahl: somehow i'm a DM magnet this contest

Uljahn: AshKetchum: have you set the same seed?

struct: This is why i am not at the top

AshKetchum: yes

struct: /s

AshKetchum: 54321 was my seed

Default avatar.png LordSkaven: I want to ask euler some questions, but I decided to wait until after the contest

eulerscheZahl: https://www.codingame.com/replay/505164739 and i was supposed to win this game

yhyoxx: who wouldnt dm you

Astrobytes: Being the Almighty Toad is a double-edged sword eh ;)

struct: that is the way to do it lord

yhyoxx: who wouldnt want to dm you*

eulerscheZahl: I

struct: I dont thnk I ever dm anyone during contests asking questions

struct: I just use global chat

ZarthaxX: ofc you dont

ZarthaxX: :D

struct: ZarthaxX you are different

ZarthaxX: im your partner

struct: except ZarthaxX and MadKnight

ZarthaxX: :*

WINWINWIN: Euler, dont you have to follow the person for them to be able to DM you?

ZarthaxX: how is that sim going structo

struct: :hugging:

struct: 400k-500k sims

Astrobytes: ZarthLoverStructaxX

struct: I want to try something else though

ZarthaxX: AstroTaxx

ZarthaxX: AstroTaxX

Astrobytes: :P

eulerscheZahl: no WINWINWIN. when i'm here on chat they can just click my name

ZarthaxX: okey, the tax part doesnt sound nice

ZarthaxX: AstroThaxX

ZarthaxX: :rofl:

WINWINWIN: Oh, yeah forgot about that

Hurda: Does my Java code run in the JVM with anything else?

Astrobytes: Meh, don't worry Zartho, just messing around, call me what you like :P

Hurda: Is there any more info on the JVM environment?

ZarthaxX: Astrobyto then

WINWINWIN: Hurda, I think that there are some details on languages in the forum

WINWINWIN: I`ll try to pull up the link

Hurda: TY that wold be helpfull, I'm trying optimize something nad I could not get proper sleep thinking about it... :-D

WINWINWIN: :D we all know the feeling

Astrobytes: hey WINWINWIN :)

WINWINWIN: Hey Astrobytes :)

SirLoxley: Who else is adding random insults at the end of the output?

SirLoxley: I put them to spice up the battle.

MadKnight: just don't make them too straight

Presac: Anyone who has some tips on working with bytes to represent states in python?

MadKnight: yea i got one

MadKnight: don't use python if u want speed

Uljahn: Presac: structured arrays or ndarrays in numpy?

Presac: numpy would be preffered

WINWINWIN: Anyone know where the forum post on the details of each languages is?

WINWINWIN: With how they are loaded and used?

eulerscheZahl: do you mean the FAQ? https://www.codingame.com/faq

WINWINWIN: Ah, thanks Euler

Presac: Just getting questions back from asking questions is already giving me more to work with. There are so many things I didn't even think to use, even though I know about them. Had forgotten about numpy too.

AllYourMCTS: anyone have function that takes number of each ingredient and outputs index into the 1001 possible ingredient hands?

Uljahn: ye

eulerscheZahl: no

AntiSquid: maybe

Uljahn: inventory_ix = np.where(np.all(possible_inventories == inventory, axis=-1)) # ezpz

AllYourMCTS: lol

AllYourMCTS: yeah a hashmap may be fastest

AntiSquid: do you have a pet turtle ?

JohnCM: you could just store the inventory as a 4-digit number

AntiSquid: oh john is back, hi

JohnCM: abcd, a = tier 0, b = tier 1, c = tier2, d = tier3

JohnCM: hello

wlesavo: JohnCM 10 is not a digit though

ZarthaxX: hexa hehe

JohnCM: you won't have 10 of the same ingredient will you?

AllYourMCTS: yeah but i want to use it as an index into an 1001 length array

JohnCM: haha

Default avatar.png RaghuveerJayanth: help me in coders strike back

Default avatar.png RaghuveerJayanth: python

Default avatar.png RaghuveerJayanth: pls

AntiSquid: https://imgur.com/a/MetUCuk :thinking:

struct: There are so many resources for csb

struct: on forum

struct: and the link I provided also helps

ZarthaxX: AntiSquid scary

Default avatar.png RaghuveerJayanth: send code

Default avatar.png RaghuveerJayanth: pls

struct: sure

struct: Do you want my avx version or non avx?

Default avatar.png RaghuveerJayanth: coder stiirke back

Astrobytes: lol

AntiSquid: RaghuveerJayanth .... . .-.. .-.. ---

eulerscheZahl: http://chat.codingame.com/pastebin/14e0c710-1ce3-4044-b3ae-456ad57d3b2d

ZarthaxX: lol

eulerscheZahl: i'll cry in the corner

Illedan: I

ZarthaxX: sad

Illedan: I'll join you.

eulerscheZahl: 21 losses. 10 by timeout

JohnCM: don't lookahead so much then

eulerscheZahl: some even in the first turn. i use 40ms and CG allows 1s

Illedan: -.-

Q12: when gold league is open?

eulerscheZahl: in 2.5h

eulerscheZahl: around 150 will promote

Q12: :disappointed:

tempux: Sadge

AntiSquid: that timeout bug was there during the Winter Throne "contest", timeouts at around 30ms

Default avatar.png LordSkaven: 150? Damn that is rough

eulerscheZahl: wait for legend

eulerscheZahl: that's like 10-15

AntiSquid: that is euler's prediction, nothing official LordSkaven

CommanderCero: 100% confirmed

AntiSquid: where

eulerscheZahl: but my predictions will match the official numbers

AntiSquid: top 20 probably for legend

eulerscheZahl: i also predicted 7k contest participants

CommanderCero: i mean hes hypnotoad

Default avatar.png LordSkaven: yeah because your predictions are working so well for your bot euler hehe

struct: I believe euler

struct: yeah

struct: I predicted 6k and his prediction seems more accurate

AntiSquid: don't think it goes up to 7k ... 6.5k ok but 7? nah

struct: There are currently 6246

eulerscheZahl: and still a weekend

struct: Also a lot of people mostly from japan, keep sharing it on twitter

eulerscheZahl: and i made the prediction in friday or saturday

AntiSquid: 200-300 for gold imo

struct: too much imo

eulerscheZahl: eulerscheZahl: i go with 7k https://cg.spdns.eu/wiki/Chat:World/2020-11-14

yhyoxx: what would be a good eval function ?

wlesavo: AntiSquid saisky was on chat today, he backed up eulers predictions

wlesavo: i.e 150 / 10-15

AntiSquid: oh

eulerscheZahl: did he also confirm the 7k?

AntiSquid: well that's different then :P

Default avatar.png xSkyline: If I don't get promoted today to gold can I get in tomorrow if my bot improves ?

AntiSquid: that's not a prediction lol that's a statement

struct: yeah

eulerscheZahl: i'll single-handedly create 500 alt accounts if it's necessary

AntiSquid: official one too

struct: xSkyline yes

JohnCM: then euler can dominate gold league with his alts. no one can rise to legend

Default avatar.png xSkyline: thanks @struct

AntiSquid: you have time until contest ends, you can even do a last minute submit with the #1 bot and reach legend ....

struct: 1 submiit legend

struct: do it

AntiSquid: if you have 1k TPUs at home that is .

AntiSquid: :D

AntiSquid: some kind of ML got to be possible for this game, right ?

MarekM: is there any RAM limit? it feels like i am timeouted for no reason (python)

struct: 768MB

eulerscheZahl: 768MB

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

AntiSquid: 768MB

CommanderCero: 768MB

wlesavo: euler have timeouts irl already

MarekM: it should be enough for everyone :)

Default avatar.png LordSkaven: 768000 KB

MarekM: thank you

eulerscheZahl: submit finished now games parsed: 99 timeouts found: 14

Default avatar.png xSkyline: ┬─┬ノ(ಠ_ಠ ノ)

struct: ouch

struct: That is way too much

CommanderCero: whats your time limit

eulerscheZahl: i think i should be higher than #14

eulerscheZahl: 40ms

struct: for sure

eulerscheZahl: and timeout in turn 1

CommanderCero: okay nvm

struct: with 14 loses due to timeout

Csipcsirip: i hade to set my time limit to 35

AntiSquid: euler who do you predict to rank higher at the end, you or your twin ?

wlesavo: i had none last submit, also with 40 ms

Gronahak: I'm curious how do you count thos timeouts ? :thinking:

AntiSquid: end of contest i mean .

eulerscheZahl: wait, i forgot 3 games (wasn't completely finished)

eulerscheZahl: games parsed: 102 timeouts found: 16

CommanderCero: yes found 2 more

struct: so close to 15%

struct: Way too high

eulerscheZahl: 30 losses, 16 my timeout

eulerscheZahl: otherwise i'm happy with that submit

struct: Gronahak using api and then extract replay data

eulerscheZahl: http://chat.codingame.com/pastebin/8bdfd3b5-17a5-4029-bd5a-5c1e21b5194b

AntiSquid: you can look at last battles and count manually Gronahak ... or use api

struct: at least 2 on turn 1

struct: they are all on turn 1?

struct: what

eulerscheZahl: most, not all

Default avatar.png xSkyline: eulerscheZahl does your timeout check account for garbacge collerctor stalls ? Maybe you have some GC stalls between the time you check the timer and start it again

eulerscheZahl: time starts after reading inputs (first line actually)

wlesavo: time to rewrite

eulerscheZahl: i'll pick dbdr to compare. he just submitted too

struct: im rewriting too

struct: I want to try something

Gronahak: Oh nice ty didn't know about the API

struct: I think its my 8th rewrite

AntiSquid: no need to rewrite if i didn't write much in the first place *smart thinking*

eulerscheZahl: no timeout found? that doesn't sound right

dbdr: eulerscheZahl ?

eulerscheZahl: do you have any timeouts?

AntiSquid: Automaton2000 ?

Automaton2000: i think he wants to build a bot to get there

struct: if(language!=rust && rand() % 100 == 15) timeout

dbdr: not in my sub

Uljahn: so RIIR is new meta? :thinking:

eulerscheZahl: why not?

Illedan: RIIR?

dbdr: 25 ms

eulerscheZahl: i have 16 :(

eulerscheZahl: ah

Gronahak: @struct :joy:

eulerscheZahl: but i have so many in the first turn already

dbdr: #16 with 16 timeouts? wow

eulerscheZahl: http://chat.codingame.com/pastebin/8bdfd3b5-17a5-4029-bd5a-5c1e21b5194b

dbdr: timeout in 1s?

eulerscheZahl: i use 40ms

struct: Its very strange

eulerscheZahl: but most of my timeouts are frame 1

Kaa: Is there any way to get the example of input?

dbdr: which is 1s

Illedan: Did you check if you actually crash eulerscheZahl? :P

eulerscheZahl: random input:

eulerscheZahl: http://chat.codingame.com/pastebin/18137e1a-8437-4f8b-b318-19082eb8e9ae

dbdr: Kaa print it yourself

Kaa: thank you

eulerscheZahl: how do i check that Illedan?

AntiSquid: what if you run your code offline multiple times ?

AntiSquid: do you ever crash 1st turn?

eulerscheZahl: send to IDE works fine

Illedan: hm, ok

struct: euler print to stderr before starting the search

Kaa: should I believe that 500,000 operations per turn be <50ms (on Rust)?

Kaa: *500,000,000

eulerscheZahl: actually I do: https://prnt.sc/vljrf6

eulerscheZahl: i see the turn input

eulerscheZahl: but no turn result in stderr either

eulerscheZahl: i start my timer after reading all the inputs. but shouldn't make much of a difference?

struct: no way it can make a 10ms difference

struct: if it does its CG fault

struct: What do you mean Kaa?

eulerscheZahl: we are talking about turn 1. 960ms difference

AntiSquid: CG timer lost precision due to the many participants?

struct: true

eulerscheZahl: i really consider porting to C++

struct: Do it

Kaa: We have TL for 50ms per turn.. I'm trying to figure out how many operations my algo can do

Presac: eulerscheZahl what does the last 4 numbers in each line represent in the image?

struct: castable repeatable?

eulerscheZahl: that's just the input stream to stderr

AntiSquid: tax

eulerscheZahl: i'll check timeouts for another C# player

Illedan: Check mine.

eulerscheZahl: emkjp with 3

eulerscheZahl: http://chat.codingame.com/pastebin/c1bbfd64-7196-47c8-86b5-dbdfbe79b22a

JBence: I had a few even at 30ms

eulerscheZahl: illedan with 5

eulerscheZahl: http://chat.codingame.com/pastebin/2dcc2bab-fe14-4b5c-ac7d-e99dda73178b

eulerscheZahl: games parsed is folder size, i should limit to games where you take part :D

Illedan: yeah :P

struct: euler now check for c++ player :)

AntiSquid: check emil

PED: Hey! do we know around which time gold will open?

struct: in 2 hours

dreadylein: you had the timeouts on first turn right ?

PED: ty

eulerscheZahl: Illedan: 5 out of 90

Illedan: eulerscheZahl, I do get longer time on the first round from the first input to the last input :O

Illedan: Only 7 ms, but you should check your code

Illedan: every other round is 0 ms

eulerscheZahl: but 900ms?

Illedan: :shrug:

Illedan: Worth measuring :P

eulerscheZahl: emil without any timeouts

dreadylein: dont know enough about the gc design but in theory, if they feed 1 line and the server stalls for x it could absolutly mess up measuring on the clientside i guess

dreadylein: but in this case you would have to see it at least sometimes in native languages also

eulerscheZahl: ClockSort (C#):

eulerscheZahl: http://chat.codingame.com/pastebin/dec3975f-702f-4af0-b89a-19124e6171a1

Default avatar.png LucasMorin: hello, i would like to train on trees, do you know which game I should be playing ?

dreadylein: but yeah .. 900ms is a lot of time for a gc

eulerscheZahl: i definitely get more timeouts than other C# users

eulerscheZahl: but C# seems to be more affected than Rust (would need more data for that thesis)

ClockSort: my c# strategy is to never new anything onto the heap that will lose its reference

ClockSort: and I'm running 650k iterations DFS with no problem in C#

eulerscheZahl: rafbill 3 out of 228

ClockSort: almost no timeouts

hbouillo: Is there any way to know automatically how many battles timed outs?

ClockSort: currently 57th place.

ClockSort: sorry, BFS, not DFS lol

eulerscheZahl: that's why i checked you ClockSort. you are among the highest with C#

eulerscheZahl: I still tend to convert to C++

ClockSort: yes, I decided to stick with C# to improve my C# skills, which are more useful in other areas of my world

eulerscheZahl: you have to finish this fight without me then. I believe in the power of C#. just not on this CG platform

reCurse: Your mileage may vary

reCurse: Oh of your world

ClockSort: I last used C++ about 20 years, so i'm a bit rusty there, no pun intended, haha

reCurse: Carry on

ClockSort: recurse you've been really helpful, thanks btw

reCurse: :blush:

hbouillo: Wasn't the gold league supposed to open 4 minutes ago? :grin: Sorry I'm just getting excited hehe

reCurse: 2 hours

reCurse: Approximately

reCurse: Could be 3! or more

hbouillo: Okay, thanks!

ClockSort: probably not 3! because that's actually 6

hbouillo: So there's no fixed time for leagues to open?

Default avatar.png RaghuveerJayanth: #UZMeNow

reCurse: I was afraid of that joke the moment I pressed enter

ClockSort: unexpected factorial :D

RockyMullet: good old time in contest where I fix my stuff and it's worse because I was avoiding bugs

reCurse: It's done manually

reCurse: But usually around whatever is your time in 2 hours

hbouillo: Oooh I see!

hbouillo: Alright, thanks!

ClockSort: @rockymullet I know how you feel!

ClockSort: i had a bug where REST would only rest one of my items in the search. I fix it and now I rest too much. haha

Csipcsirip: rest in peace

RockyMullet: ClockSort yeah exactly, had a bug where I would stop at first brew in my sim, I fixed it, now I full my inveotyr too much cause I dont have any difference in my scoring for having too many ingredients, as long as I have enough

ClockSort: exactly :)

ClockSort: recurse what do you think of LEARN commands? worthwhile to put them in the search, especially at first, or better to build a separate heuristic for your spellset?

reCurse: :zipper_mouth:

RockyMullet: learning allows you to cast it deeper in your sim

Q12: I check my sim with Learn and it didn't help

MaxTheorum: I remember there being a github page for something to convert cpp into codingame compatible code but I can't seem to find it, does anyone know what it's called?

struct: convert cpp into cg compatible?

Astrobytes: file bundler?

MaxTheorum: like convert multiple files into a single one

struct: I use this one https://github.com/MarcosCosmos/cg-cpp-bundler

MaxTheorum: awesome that was what I was looking for!

Astrobytes: and there is also: https://github.com/Viatorus/quom

Astrobytes: And maybe others

MaxTheorum: This already helps a bunch thanks!

noisy_datum: the king has returned

noisy_datum: wouldn't languages like Java and C++ be more appriopately called class oriented programming?

noisy_datum: rather than object oriented programming

noisy_datum: dey so ignant

Samer: hey guys

Samer: i'm gonna try asking again, maybe someone can help now

Samer: who succeeded in running the game locally for testing? i'm getting a "main manifest missing" error when trying to run the game

arkwaw: in c++ nowadays you have things like "std::visit" straight from object programing patterns

Zenoscave: mornin

Zenoscave: do I have time for a final submit before gold?

Zenoscave: I should probably wait...

SippinSelecto: hello guys, python question: someone know how to use variable into an array index with a colon (ex: array[var:10]) thanks :)

Zenoscave: like a slice ?

Zenoscave: That should work as you type it

SippinSelecto: :grimacing: well i'm embarassed that i haven't think of slice ahah

SippinSelecto: thank you

Zenoscave: your code you typed in the first message is fine. it works

SippinSelecto: well i tried it and nothing was returned

Zenoscave: then var is larger than the size of the array

Zenoscave: http://chat.codingame.com/pastebin/169c29ef-0dd3-4d0f-b9d9-6fbd11eaa843

SippinSelecto: in my case it's a string not an array, i forgot to mention that

Gronahak: http://chat.codingame.com/pastebin/2aebc01f-920b-4d47-843d-5a9b6d39740a

Zenoscave: strings are character arrays in python

Zenoscave: they both work the same (more or less)

THH: elca

Gronahak: http://chat.codingame.com/pastebin/bb69cf15-ac4b-493b-b4be-e588e7e5dbaf

Gronahak: @SippinSelecto check thos exemples out ^

SippinSelecto: thanks i checked your examples

SippinSelecto: but in codingame IDE it seems not working, im trying again

Gronahak: when you use a slice the first index is included, but the last one is excluded

Zenoscave: ^ this is important

ClockSort: i just built my own simulator

Zenoscave: nice clock sort

Zenoscave: Not using the ref?

ClockSort: nope. so i can tweak my bot and play it against my old bot 300x to see if it was an improvement

Gronahak: :clap:

Zenoscave: Brutal tester

Zenoscave: How long to run 300?

ClockSort: long time ya

ClockSort: because they both try to use 50ms per move :)

AntiSquid: errar on LB

Zenoscave: Fair. There's a generic solution available. but it needs some edits. I'm forking and fixing now

ClockSort: i didn't want to mess with jvm

Samer: Zenoscave are you referring to what i asked about earlier?

ClockSort: how do you hook up the inputs/outputs to your agent?

Zenoscave: Samer yes

Zenoscave: stddup

emh: I'm trying to use _pdep_u64(1ULL << n, x); but getting compile error that it won't inline

emh: any ideas?

emh: I have #pragma to inline

Zenoscave: inline void foo (const char) __attribute__((always_inline))

Zenoscave: use the attribute

Zenoscave: it makes inlining more aggressive

Zenoscave: I assume c++ and not rust

Poli2312: Hi

Default avatar.png TEstTEst: hello, when the gold league will open?

ClockSort: hello, maybe two hours

struct: 30 minutes+-

emh: Zenoscave doesn't seem to help. same error message

jrke: 35 mins from now

jrke: max 40 mins

Zenoscave: what's the error emh? PM me

Default avatar.png TEstTEst: thanks, and there is a fix number of participant that will be promoted or it just related to score?

ntroPi: One bot will be selected as new silver boss. Promotion rules are as always.

ntroPi: (ranked above boss == promotion)

AntiSquid: one bot to rule them all

AbsentMoon: How can I figure out how long each turn is taking me?

AntiSquid: is rust faster than C++ ?

AntiSquid: on CG

Ikhadem: how can i detect the exact ms i did a watch on my code but it return times that are way over the limit and i dont time-out

dbdr: very similar I think

TimurSeitosmanov: +1 to timing question... those random timeouts are killing me

jrke: which lang TimurSeitosmanov?

TimurSeitosmanov: typescript

jrke: TimurSeitosmanov how much time is your code using in non timeouts game on average?

TimurSeitosmanov: how can I see this?

jrke: is your bot heuristic based or any search?

TimurSeitosmanov: bfs search

TimurSeitosmanov: but seriously, is there any API accessible from js runner for timing?

jrke: no idea for timing APIs

Kaa: are there any limitation for id?

Zenoscave: https://github.com/LSmith-Zenoscave/FallChallenge2020/releases/tag/v1.0-SNAPSHOT https://github.com/LSmith-Zenoscave/cg-brutaltester/releases/tag/1.0.0-zenoscave

Zenoscave: I'll add a small script in a gist to show running them

tomatoes: what kinds of limitation?

karliso: #ru

AbsentMoon: Does anyone mind helping me with getting my program to run locally?

LastRick: Ikhadem: I saw a similar thing yesterday with Dart. Code says I've been inside my search for over 50 ms, no timeout. No idea how that happens.

Lysk: thanks @Zenoscave

Donotalo: how can i show messages on the screen? i've seen some players are doing it

Default avatar.png pedrosorio: print({your action} {your message})

eulerscheZahl: what time is it?

JBence: it's gold time

Default avatar.png pedrosorio: (i.e. add your message after a space next to the action)

eulerscheZahl: correct answer JBence

JBence: do I get gold for it?

eulerscheZahl: saiksy at 110

eulerscheZahl: you at 112

struct: I would wait

eulerscheZahl: but bots are different, i just tested if you might be the boss

jrke: league opening message :smiley:

AntiSquid: crab league

eulerscheZahl: http://chat.codingame.com/pastebin/823c3135-191e-4f78-ab4e-571d4c9971f2

eulerscheZahl: how do i do that in C++?

AntiSquid: saiksy first on LB but ranked 115 ?

JBence: are you turning to the dark side?

AntiSquid: wonder how their promotion works

eulerscheZahl: too many timeouts

jrke: saiksy in gold

JBence: I'm thinking about it too

tempux: c++ doesnt have yield :D

eulerscheZahl: cheater

Default avatar.png kreska: so only top 115 will qulify for gold?

WINWINWIN: what about storing and returning an array euler?

AntiSquid: what is yield ?

AntiSquid: in c#

WINWINWIN: Returning multiple values

eulerscheZahl: one time saiksy decided to put a player as boss

AntiSquid: just return array / vector ?

eulerscheZahl: and at the exact moment the player hit submit

eulerscheZahl: everyone got promoted

AntiSquid: last contest

CommanderCero: did they just put everyone in gold

eulerscheZahl: fun times

ClockSort: i only see 131 in gold

AntiSquid: and demoted

CommanderCero: oh nvm

Illedan: Sweet! Smaller league!

CommanderCero: it showed me 1600

JBence: went from silver 113 to gold 96

eulerscheZahl: pending submits

jrke: 131

CommanderCero: yeah my rank also went up

AntiSquid: more to come

eulerscheZahl: we lost pb

Illedan: They didn't move all yet

AntiSquid: > 200 watch

WINWINWIN: Has the guy put as 132 been made the boss?

tempux: :unamused: stuck in silver for ever i guess

Default avatar.png kreska: im 173 and i was 300 so i guess 127 go to gold?

jrke: did ranking got changes

eulerscheZahl: some players left behind who were not pending

eulerscheZahl: that round dice was beating me hard anyways, deserves him right

WINWINWIN: Ah, so they autopromote some guys then set a boss?

jrke: can anyone in silver tell me the name of silver boss

eulerscheZahl: just promotions that got more boring

Lysk: bossdorf

Q12: Bossdorf

eulerscheZahl: years ago you could see the boss submit

eulerscheZahl: and climb up the ladder

jrke: thanks

Lysk: once upon a time yeah

Default avatar.png StrykerS: http://chat.codingame.com/pastebin/2454bbfb-0c4c-4c5f-9579-07680186b42f

eulerscheZahl: everyone cheering where it will end

eulerscheZahl: i miss that :(

jrke: lol people who were having pending submits lefted in silver

eulerscheZahl: lefted?

AntiSquid: you mean the 4 hour long recalc on new league open?

eulerscheZahl: i miss that aspect less

jrke: means they didn't get promoted to gold euler

AntiSquid: kinda weird opening this time, i see a lot of top 100 still in silver lol

miszu: question for the challenge, is optimization important? I like to code in OOP way but to achieve best perfomance you need to put it away and play with bytes, bitoperations etc. Is that necessary?

wlesavo: saisky asked today if we want recal for gold or not

eulerscheZahl: yeees!

struct: Why does vs code intellisense keep breaking

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

eulerscheZahl: at least for legend

AntiSquid: so that means what? 20 people in chat were asked :P

eulerscheZahl: struct i need your C++ skills

eulerscheZahl: http://chat.codingame.com/pastebin/823c3135-191e-4f78-ab4e-571d4c9971f2

eulerscheZahl: how to do that in C++?

eulerscheZahl: it's like an iterator

Lysk: you can't directly

eulerscheZahl: :(

Michael_Howard: Damn that silver boss is higher than I expected.

CommanderCero: you need to remember the state yourself

Lysk: something about coroutine

Default avatar.png goolmoos: one behind boss!

Beresta: I don't think you should do that in C# either, performance-wise won't be great :D

WINWINWIN: https://stackoverflow.com/questions/7213839/equivalent-in-c-of-yield-in-c

WINWINWIN: Euler

Csipcsirip: u can have static variable inside functions. its like a global variable but only accessable from the fucntion

eulerscheZahl: that yield return avoids creating a list

lowzhao: huge pressure D:

miszu: oh I am doing it in java

CommanderCero: oh yeah static variables is a good idea

AntiSquid: ah missed a lmgtfy WINWINWIN :P

WINWINWIN: :P

miszu: but I am afraid ppl with C++ will have it an easy time

struct: easy time?

jrke: ^

struct: is not like if you know c++ you get instant legend

AntiSquid: why not return pointer to a list euler?

miszu: no fore sure but

CommanderCero: c++ is the most confusing clusterfuck of a language ive ever seen

Default avatar.png LordSkaven: C++ isnt a magic pill

Starbender: well.. they have to code in c++ so feel for them haha

AntiSquid: or vector ! @_@

miszu: c++ you can do stuff that in java you can't

miszu: that 50ms is very small for java

struct: euler if you pass a vector that has already reserved memory it is fast

AntiSquid: i am confused by your confusion CommanderCero

eulerscheZahl: but that refers to BOOST

CommanderCero: AntiSquid did you hurt yourself

AntiSquid: unless we talk about templates and meta programming CommanderCero

struct: That should return all active spells right?

Default avatar.png LordSkaven: lol the boss just timed out

eulerscheZahl: vector would work i guess

Beresta: CommanderCero I wonder if you seen PHP for example :D

eulerscheZahl: or that static array. and i just return the number of items

struct: If you reserve the memory of the vector it is fast

WINWINWIN: Is MSmits there in the contest?

CommanderCero: Im also talking about the subtle differences between references and pointers, how they handle iterators etc

eulerscheZahl: feels ugly but it already is

Lysk: reserved space is nice when you know the max size

CommanderCero: nothing ive seen in any other language

AntiSquid: http://chat.codingame.com/pastebin/1c0e154c-43b6-4c59-bb8c-d03ee7a9f865

struct: Lysk that or if you reuse the same vector

CommanderCero: std::move() was also confusing me for a while idk why

struct: multiple times

jrke: MSmits is 2473 currently

AntiSquid: overengineering

eulerscheZahl: so, what's the next scheduled promotion time for silver players?

eulerscheZahl: i see some finished submits but no new golden players

struct: should be instant right?

struct: or close to it

eulerscheZahl: yes

struct: Or did they forgot to change it for this contest?

eulerscheZahl: worked for lower leagues

eulerscheZahl: who's in silver and can tell?

ZarthaxX: boss almost finished computing

eulerscheZahl: oh

Nerchio: the algorithm is bugged i didn't get into gold

jrke: oh boss is also computing lol

AntiSquid: what rank were you Nerchio ?

ZarthaxX: c# boss toad

ZarthaxX: your friend c# :P

Starbender: I've just reached bronze and that varying spell cost is gonna be such a pain to handle 😨

eulerscheZahl: yeah i'm a C++ guy now

dbf: 40 ms per turn - 3/10 timeouts :(

eulerscheZahl: i feel with you dbf

Nerchio: AntiSquid like 140 idk

eulerscheZahl: was hoping that it would get better when i convert

eulerscheZahl: but you use C++, don't you?

jrke: looks sinofwrath is gold boss

jrke: c# + bottom gold

jrke: sorry silver boss not gold boss

jrke: 8 entered in gold

eulerscheZahl: https://www.codingame.com/share-replay/505324359 not exactly the same

miszu: dbf, do you computer moves in advance or not?

JBence: maybe not deterministic

miszu: compute*

struct: I guess I need to switch back to VS 2019, for some reason vs code seems to keep breaking intellisense

struct: Does it happen for someone else?

struct: Im using cpp with wsl 2

eulerscheZahl: boss is deterministic

Gabbek: hello :)

Gabbek: how's going guys?

struct: hi

eulerscheZahl: it's timing out

struct: the boss?

ZarthaxX: toad

eulerscheZahl: me

ZarthaxX: :rofl:

NinjaDoggy: :rofl:

eulerscheZahl: i'm self-centered

ZarthaxX: he is still "joking" with that

struct: still in C#?

ZarthaxX: sad jokes tbh

Gabbek: so you've changed to C++ eulerscheZahl?

struct: euler can you check how many timeouts I have?

struct: I use 40ms and dont even start the timer in the right place

Gabbek: (I've been sleeping more than doing anything useful, so I might be late to the party with my questions :P)

eulerscheZahl: i'm on it

Cappefra: @struct just go ctrl+shift+p and select "Restart Omnisharp"

aCat: boss timeouted ;p

eulerscheZahl: Error 404. Player not found. Double check your nickname and the selected puzzle. Please note that cgstats can't find your ranking if you are above the first 1000 players. If you think cgstats should find you and this is an error, try to ask Magus.

eulerscheZahl: i need you bot ID

struct: ahahah

eulerscheZahl: give me replay

reCurse: oof

struct: https://www.codingame.com/replay/504385502

NinjaDoggy: not top 1k :(

ZarthaxX: struct already deleted acc and cant be find :D

NinjaDoggy: also... recurse you playing this one? :eyes:

reCurse: :thinking:

struct: reCurse do you also use vs code with wsl 2 for cg?

reCurse: Not for cg

eulerscheZahl: http://chat.codingame.com/pastebin/81e07a8a-47f4-4ef3-9a62-72548e525a7d

struct: Have you ever had any problems where intellisense stops working for no apparent reason?

reCurse: That's been intellisense for the past 20 years

reCurse: Good luck

struct: ah ok

struct: thanks euler

reCurse: For instance right now there's a header file I made that's making intellisense go nuts

eulerscheZahl: i decided to set up VS code just for this contest (monodevelop sucks more and more)

reCurse: So I isolated it to a separate cpp so it keeps working for the rest

eulerscheZahl: i also know the crashing intellisense

Nerchio: euler what's the most processed nodes you got in C#?

reCurse: And that's with vs not vs code

reCurse: But it doesn't matter

eulerscheZahl: the root nodes

eulerscheZahl: trick question?

Nerchio: evaluated nodes i guess

eulerscheZahl: arouind 60k

reCurse: It's not about the count it's about how you use them

Nerchio: were you using bitset?

ZarthaxX: :rofl.

ZarthaxX: :rofl: *

ZarthaxX: that phrase always applies

eulerscheZahl: no but stored some data in an int that aren't an int

Nerchio: ok i guess its similar ;p

reCurse: camouflint

eulerscheZahl: my inventory isn't an array at least

reCurse: Why not a class with 4 properties

eulerscheZahl: wait, i have a screenshot for you

reCurse: That was a joke btw

eulerscheZahl: https://prnt.sc/vjj4he

reCurse: Class with 4 ints, is there a worse way to represent inventory

reCurse: OK

dreadylein: class with 4 strings ^^

reCurse: I've been defeated

ZarthaxX: wtf is that

NinjaDoggy: why is euler leaking our DMS :(

dbf: not yours, name is about 3 lettes :D

Astrobytes: lol, I remember that from the other day. Still wtf :D

eulerscheZahl: don't DM me if you can't handle leaks

struct: ZarthaxX dont you dare leaking

eulerscheZahl: i'm not discrete

ZarthaxX: time to expose structo

Astrobytes: Just continous eulerscheZahl?

struct: :hammer:

AntiSquid: ya that was a short name :thinking:

reCurse: Haha I was jokingly thinking of someone

reCurse: Then I was thinking, hmm too long

reCurse: Then I check Discord, short name

eulerscheZahl: maybe i edited it that you think it's short

struct: :thinking:

AntiSquid: maybe not !

miszu: why a class with 4 ints is bad?

struct: Cant be me I use structs

NinjaDoggy: lol

AntiSquid: ok then not

struct: I said before I store the 4 ingredients in 1 int

v1993: Well, you need 4bits per ingredient, so 16bit unsigned could do...

eulerscheZahl: how to handle overflows?

NinjaDoggy: a 10 bit unsigned could also do :)

struct: ^

struct: too much work

eulerscheZahl: and for convenience you want the total too

struct: 1 int is simple

NinjaDoggy: honestly having done both methods...

v1993: Never said that you can use it like that, just store

eulerscheZahl: i can fit it in 16 bit. but that makes using it less efficient

NinjaDoggy: bitmask is tougher than precompute

NinjaDoggy: I had a 25 bit bitmask to store inventory

eulerscheZahl: but probably faster

NinjaDoggy: is it faster than array access?

AntiSquid: submits slow?

eulerscheZahl: just add 2 numbers and you have the new inventory

NinjaDoggy: you also need to check valid after?

NinjaDoggy: so it's like add 2 numbers, and then a check right?

eulerscheZahl: yes

eulerscheZahl: would have to time what's faster

CommanderCero: I know that the bitmask increased my speed by quite a bit, but Ive used 4 ints previously. Seems like many people also just used 4chars idk if thats faster

JBence: euler, why would the 16bit be less efficient?

struct: I guess because you need to deal with overflow

Cappefra: @struct for intellisense just go ctrl+shift+p and select "Restart Omnisharp"

eulerscheZahl: talking about speed efficiency when you want to do computations with it

eulerscheZahl: take 2 deltas (your inventory + spell)

struct: Cappefra Ominsharp doesnt show for me

eulerscheZahl: and add them. overflows will affect the other types

struct: Im using c++

eulerscheZahl: so you need a 0 as a blocker

Cappefra: oh ok than I have no idea

struct: np

struct: ill just use VS

Cappefra: gawd I'll never optimize like that :/ my bot is all object-oriented, for inventory, spells and orders I have subclasses of a class called Ingredients

Default avatar.png LordSkaven: I dont know if I need to improve performance or evalutation to better my bot. hmmm

Cappefra: I guess that's part of the reason why my bfs can only visit so many states

Cappefra: @LordSkaven I feel ya

Cappefra: anyways: can I be in more than one language chat?

Cappefra: I'd like to be in World, It and De too

dbdr: #De

Cappefra: that was easy, thanks!

AntonCosmin: I made the bot in C#, if I have classes does this mean is takes more time to execute?

CommanderCero: creating a lot of classes will make it quite slow. One optimisation in c# is to use structs and arrays if you want to generate a lot of objects. But structs do not behave like classes in c# so if you dont know the difference it can get quite messy

Gabbek: AntonCosmin - you should use profiler to find out what's slow. For example: if you're using containers in your game state then that probably takes a lot of time, especially if you're using new as well.

AbuuDarda: there should be more quests in clash of code

Gabbek: The differences can be massive - so you would probably want to optimize it quite heavily. Make sure your game state is as small as possible while still having all required info for you. If you can change any kind of container to an int - go for it, it'll be much better.

AntonCosmin: If I am using a class called Ingredients for which I have overriden the operators so that I can add to ingredients and get a new ingredients as a return...I guess this takes some time, because I use new for every operation with ingredients I do...

Zenoscave: bah I'm super low now

Zenoscave: Probably time to not ignore opp

CommanderCero: yep that will take a lot of time

Zenoscave: Not really Just need to change my search so that it can check against an argument for casts. instead of hardcoded

Zenoscave: Just realized you were talking to the message above mine..

CommanderCero: sorry xD

Gabbek: don't worry Zeno :) congrats on gold!

Zenoscave: Thanks!

Gabbek: I guess I'll try to fight for atleast gold and call it a day afterwards

Zenoscave: Can you do beam search with an array? I'm struggling with that

CommanderCero: yeah use an heap

CommanderCero: and 2 arrays

Gabbek: I admire your persistence - I've been way too lazy in last days. Never tried beam search with an array, been using heap in the past

Zenoscave: why 2? CommanderCero

Zenoscave: for curent next level?

CommanderCero: one for the old states, and one for the new states

Zenoscave: got it

CommanderCero: the new states should be represented as heap

CommanderCero: so you dont need to sort

Zenoscave: I do similar but I have GC issues.

mlemm: submission takes time more than the coding it self

reCurse: Contest victim of its own popularity

reCurse: Reminds me of hypersonic 3 years ago

reCurse: No way 4 years? Time flies :(

Zenoscave: I was thinking it was more than 3...

Zenoscave: Bah no Heap/Prioirty Queue in C#

eulerscheZahl: that HS submit with 4 player games and 100ms per turn

eulerscheZahl: some slow submits

eulerscheZahl: i've missed that a few times too Zenoscave

Gabbek: Zeno - let me find a link for you, got it lying around somewhere, but it's probably slow.

Default avatar.png Mohammed_R_Jmili: hi

numb3r5: hello

Zenoscave: I'll just write one eulerscheZahl

dbf: Switch to java then, we have timeouts and priority queue also

Zenoscave: lol dbf

Illedan: haha

RockyMullet: no free gold for me, rip, I'll have to fix my bot haha

RockyMullet: 188th in silver, no way I drift

Gabbek: good lucky Rocky, you'll make it!

RockyMullet: how many in gold ? 200 or something ?

NinjaDoggy: 152

numb3r5: how many ranks are there?

reCurse: That would be a bigger drift than changing an election

RockyMullet: oh, maybe the resubmit made get some points

RockyMullet: reCurse lol

Zenoscave: reCurse It's scary times now.

reCurse: Sorry inappropriate mood swing

reCurse: Let's move on

Zenoscave: will you be competing at all reCurse?

Zenoscave: still time to pull a NinjaDoggy

Zenoscave: and get legend in a day

reCurse: I'm either not participating, hiding or smurfing

dbf: legend from single submit (and 4 hours of waiting)

RockyMullet: I'm like 7 or 8th in canada now so... I dont care anymore reCurse, I'll allow your presence :P

reCurse: Oh finally

RockyMullet: since I know it was the only thing holding you

llllllllll: any way to debug segfaults in c++? Try catch prints nothing, traping SIGSEGV did nothing... I don't want to debug locally :C

reCurse: segfaults are not a c++ exception

llllllllll: I was just trying to find anything helpful, nothing really worked

struct: locally is the only real way

Zenoscave: truly

llllllllll: ah, crap

reCurse: There's also firing printf in your code like a homicidal maniac with a shotgun

Zenoscave: Gabbek did you find what you were looking for

Zenoscave: a homicidal manic who shoots his own foot *

reCurse: Sometimes it's the only way when local repro don't work

llllllllll: yeah, that kinda doesn't work in a function that is called 30k times

llllllllll: so I have to go local.. crap

eulerscheZahl: Zenoscave last time i ended up copying this: https://stackoverflow.com/a/13776636

eulerscheZahl: not sure how optimized it is

reCurse: You can still do it but you have to be creative

Zenoscave: eulerscheZahl I was looking at that too

Zenoscave: https://secondboyet.com/Articles/WritingapriorityqueueinC.html This one too

Gabbek: Zenoscave sorry for silence, me and finding code - uhh, so hard. Anyway, let me just upload it somewhere

Gabbek: https://ideone.com/4hXvBH

Gabbek: I think I found it somewhere, so you most likely found something very similar if not identical.

mlemm: what's the max depth you've achieved with bfs guys ?

ClockSort: i'm getting full BFS depth around 6 to 8 looking at only BREW and CAST, using C#

Default avatar.png rmuskovets: I achieved "no depth limit" with my *really* crappy dfs

mlemm: depends how you define *really* crappy but i got the idea, and reaching dfs's full depth is less challenging than bf's isn't

Quidome: What do you mean by achieving no depth limit?

Default avatar.png rmuskovets: I don't set one

fel-hita: im pretty sure he means max with no error handling

Quidome: so you calculate every state possible in a turn?

fel-hita: timeout*

Default avatar.png rmuskovets: Quidome yes

Quidome: How many states do you visit?

Quidome: on average?

Default avatar.png rmuskovets: idk

Quidome: I really don't see how you can do that

Quidome: in 50 ms

wlesavo: probably stop at first buy then

llllllllll: I do ~20k nodes

fel-hita: Quidome i think it's quite possible with a really light bfs, but he said his was crappy

fel-hita: dfs* sry

Default avatar.png rmuskovets: it's not like a slow one, it generates bad actions

Quidome: curious how many states that are

fel-hita: can you check @rmuskovets, let us now.

Quidome: To check my assumptions :P

Default avatar.png rmuskovets: btw what do you mean by state? inventory state or possible recipe?

Default avatar.png rmuskovets: @fel-hita ok

Quidome: For every action you simulate you got a new state

Default avatar.png rmuskovets: aha, ok

miszu: gonna try to do java without hitting gc. brb preparing rope

Quidome: fast games are 30 levels deep or so, that would me to much to simuate

Default avatar.png rmuskovets: there's definitely smth bad in my code: it only generated 29 (!) nodes

Default avatar.png rmuskovets: unique nodes*

Quidome: :D

Default avatar.png rmuskovets: thats probably the reason of the bad moves

Default avatar.png rmuskovets: https://www.codingame.com/share-replay/505388026

Default avatar.png rmuskovets: here you can see how bad it is

Quidome: and why you think you had no depth limit

Default avatar.png rmuskovets: because I didn't set one!

Default avatar.png rmuskovets: http://chat.codingame.com/pastebin/6415cadd-8b9c-468c-b89e-14aeb7a46f8c

Default avatar.png rmuskovets: this is my code for the DFS

Default avatar.png rmuskovets: it just looked like a DFS for me

PatrickMcGinnisII: got a notification about gold opening, schedule says a time...but what timezone? Does CG know my timezone?

Default avatar.png rmuskovets: I think either +0 or your TZ

Default avatar.png rmuskovets: @Quidome how's it to you?

Quidome: at least you did one delivery :D

Default avatar.png rmuskovets: and boss did 5

fel-hita: why didn't you go for bfs rmusko ? :smile:

Default avatar.png rmuskovets: what's the difference?

MadKnight: so i created new BinaryReader(new MemoryStream())

fel-hita: dfs will get you the fastest path

MadKnight: do i have to call dispose on those ?

Default avatar.png rmuskovets: looks like I actually do a BFS

fel-hita: yeah bfs is definitely the pick between them both, it may be costy but worth it with a decent optimization, goodlulck buddy

fel-hita: i meant dfs and not"why didn't you go for bfs rmusko ?", spelled them too much this week

Default avatar.png rmuskovets: looks like I get a timeout when using DFS-like code (queue.unshift instead of queue.push)

PatrickMcGinnisII: rmuskovets maybe I'm reading your code wrong, but it looks like the path length is always 1, so your path only gets set on the first one it finds... maybe I'm wrong... I dunno

PatrickMcGinnisII: rmuskovets it's not going after the quickest, that's fer sure

PatrickMcGinnisII: I have a similar routine, but I return path length, first element of path, and $/length of the best of the 5 according to a passed criteria....do i want it quick or do I want it pricey.

miszu: question for java. the actionType is a String input and string are immutable. So everytime I read it, it creates extra object in heap thus GC could be triggered. How you avoid using a string here?

Default avatar.png LordSkaven: make it an enum or int

Default avatar.png LordSkaven: unless you mean reading it instead of storing it.

miszu: thing is, when you read the input, it returns a string: scanner.next()

miszu: yeah talking about reading it

PatrickMcGinnisII: rmuskovets add the nodes to the queue after your neighbor loop, otherwise you are only gonna find the first in that first castable

Default avatar.png LordSkaven: mmm yeah then I have no ideas

jacek: fifty states

jacek: argh not scrolled

ParticleBeam: Hmm. Going to have to up my bot

PatrickMcGinnisII: jacek are you in silver? can't find u

miszu: Is there a way to avoid using string for actionType?

ParticleBeam: What do you mean? Recode it as a number when you read the inputs in

miszu: I am coding it in java. The scanner.next() returns a String so it is bad for the java gc. Is there a way to avoid using string?

eulerscheZahl: these few strings are you smallest problem. a simulation creating thousands of nodes is a much better problem

AntiSquid: is sinofwrath the boss ?

AntiSquid: (silver)

eulerscheZahl: no

AntiSquid: do you know who it is then?

Ccleetus: Does anybody know a puzzle for beginners in Lua?

Default avatar.png pedrosorio: AntiSquid: Bossdorf

eulerscheZahl: turned out i did have a bug in my code causing some random crashes, whoops

Ccleetus: Does anybody know a puzzle for beginners in Lua?

jamessizeland: whoops!

AntiSquid: no, that's the boss, not the player it's copied from pedrosorio

eulerscheZahl: timing related but my bot's fault

aCat: Ccleetus start with any easy puzzle

Default avatar.png pedrosorio: AntiSquid oops, sorry

Ccleetus: How do i find an easy puzzle?

AntiSquid: nw

Ccleetus: Im new to this website,

AntiSquid: practice top left

aCat: https://www.codingame.com/training/easy

Ccleetus: Thank you!

Default avatar.png pedrosorio: I converted my bot from Python to Java thinking it was going to be so fast and awesome, turns out GC in Java ssssssucks and makes it timeout every time, had to some dirty hacks to keep object creation to a minimum

aCat: https://www.codingame.com/training/easy/onboarding this for total beginning

aCat: and start with puzzles WITHOUT user accounts

AntiSquid: ya see leaderboard, it's either rust or c++ pedrosorio :P

aCat: they are more fun / more grapic / better made

phord: @eulerscheZahl timing-related segfault? Are you multithreading?

eulerscheZahl: simulating the opponent first and then me

eulerscheZahl: opponent took too long, so i had 0 moves for myself

phord: ah.

AntiSquid: python on #36 :O

Default avatar.png pedrosorio: I mean, my Java bot is about to get promoted to gold, I think (38% battles it's at #14 in silver), but if I have to do dirty hacks might as well code it in C++, yeah -- 2nd rewrite, here I come lol

AntiSquid: python for quick bronze and then c++ is usually best imo

Default avatar.png pedrosorio: ah... lesson learned

llllllllll: yeah, definitely

Falkor: msg toma25 Why are you win me always with the same score :p

ClockSort: before gold opened, i was rank 80 silver. now i'm rank 35 gold (no changes to code). is this normal?

CommanderCero: well im still rank ~130 before and after gold

Default avatar.png pedrosorio: ClockSort does your bot occasionally lose against really bad bots?

ClockSort: I haven't particularly noticed that

NinjaDoggy: my bot is finally... BUG FREE!!!

NinjaDoggy: (i think...)

reCurse: Quiet fool! That's when they're coming

Default avatar.png goolmoos: No bugs is actually bad

Default avatar.png goolmoos: because if they are no bugs to resolve, how will you improve?

Default avatar.png goolmoos: *there

NinjaDoggy: yep... they just showed up :(

NinjaDoggy: thanks reCurse

NinjaDoggy: I have a to do list... :(

NinjaDoggy: I just can't work on new features when current ones are broken lol

Astrobytes: Don't confuse bugs with poor/sub-optimal strategy goolmoos

NinjaDoggy: luckily... every time i've fixed a bug

NinjaDoggy: my bot got better :)

Default avatar.png goolmoos: It was a joke

miszu: question all: is it worth doing a solution in java for bronze and up? Or should I go for C++ instead?

NinjaDoggy: you can get really high up with java

NinjaDoggy: I got 3rd once with it :D

NinjaDoggy: but generally, the higher you go the more worth it is to swap to C++

miszu: :D what position you are now?

NinjaDoggy: 3rd as in end of contest(for another contest)

miszu: ohh okay

NinjaDoggy: I peaked like top 10 this contest with java

NinjaDoggy: it was really early on though so..

miszu: I am just worried that GC in java will slap a timeout to my face

NinjaDoggy: it does

NinjaDoggy: swapping to C++ feels sooo good

NinjaDoggy: always 45-47 ms a turn

NinjaDoggy: never time out

NinjaDoggy: in java... 35-55 ms a turn

NinjaDoggy: timeout 1/20

NinjaDoggy: :(

miszu: why they don't increase the timeout for java? It would help java devs

NinjaDoggy: hard to make every langugage "fair"

miszu: yeah but then it's like saying in order to compete in higher level, you must use X language

NinjaDoggy: waaay too much work to balance every language though...

NinjaDoggy: and would result in longer game times

miszu: I guess so

Default avatar.png pedrosorio: miszu I converted my bot from Python to Java, it was a pain to get rid of the GC timeouts, but now it works

If you're comfortable with C++ just go for it

reCurse: There's a big forum thread explaining why it's a terrible idea

Default avatar.png KevinisMAD: Yeah my bfs gets to depth of about 7 or 8 so I am working on how to trim without cutting good paths

miszu: my c++ is rusty. Time to refresh it

Default avatar.png KevinisMAD: If I can't trim my python enough by like 6 I am going to learn cpp and implement it

wlesavo: my c++ is pythonish, thats worse

Default avatar.png pedrosorio: Also, can we make the bots get out of the league a bit quicker? Mine has been comfortably above the boss since 30% and it's still waiting to get promoted at 70% an hour later xD

NinjaDoggy: @wlesavo :joy:

reCurse: The real issue is slow submit because the contest is ridiculously popular

NinjaDoggy: yea...

miszu: C++ = RAII + lvalue + rvalue + core dumps

NinjaDoggy: can we donate CPU time to servers?

NinjaDoggy: I would gladly donate a few cores to make things run faster...

reCurse: I mentioned a submit fast pass monetization option on discord, but I doubt they'll listen to my genius idea :p

NinjaDoggy: LOL

NinjaDoggy: it does sound pretty genius ;)

struct: Just like lichess

struct: use users cpu for analysis

NinjaDoggy: yea :D

eulerscheZahl: tshirt merchandising would bring a few bucks as well. i saw some users ask if it's possible to buy them

NinjaDoggy: but that...

Astrobytes: One of the better monetization ideas I've heard regarding CG

reCurse: Then they would run out of special prizes

reCurse: The real tshirt value is its rarity

NinjaDoggy: that takes away from the glory of top 20 :(

Astrobytes: t-shirts nah

eulerscheZahl: true

eulerscheZahl: buying and winning is not the same

Astrobytes: fast-track submits might not generate enough though

Astrobytes: Well, mind you in a contest like this...

eulerscheZahl: showing ads before every 10th replay

eulerscheZahl: i know :door:

eulerscheZahl: i would hate that myself

Astrobytes: Banished.

reCurse: Can a mod ban another mod

reCurse: Let's find out

eulerscheZahl: yes

Astrobytes: :D

eulerscheZahl: but are you faster than me?

reCurse: Duel outside in 10 minutes

phord: There are prizes?

eulerscheZahl: good night

eulerscheZahl: 20 tshirts, 3 canvases

phord: :thumbsup:

eulerscheZahl: a fair reward for a full week of hard work

phord: :laughing:

reCurse: The real reward is the friends we make along the way

inoryy: aww

NinjaDoggy: awww ofcourse :)

JBence: reBlessing

reCurse: Eh, reminds me of my reBlessed smurf (not on cg)

NinjaDoggy: how do I have a bug tracking the number of potions I've brewed -_-

JBence: don't drink your own potions, rule #1

NinjaDoggy: oh nvm... I don't, my opponent ended the game and I won

Default avatar.png KevinisMAD: By the way are y'all recalculating best path at ever cast?

denik1981: I'm new on Codingame ...Can someone help me figure out why I don't have Coding Points even that I solve a few exercises?

denik1981: I shows 0 in the leaderboard

denik1981: it

reCurse: Puzzles don't award CP

denik1981: Clash of Code??

Default avatar.png firehell: @kevinisMAD i have the same question in mind

aCat: tehy are updated onece per day

aCat: *they

denik1981: I realized that .. so I solve a Clash of Code exercise and still nothing ..

Default avatar.png firehell: 50 ms by turn is'nt enough

denik1981: Ahh .. so I will have to wait

aCat: there should be visible tomorrow morning i guess

aCat: yep

reCurse: You want 24 hour submits instead? :p

struct: I want 150ms just like CSB old days

reCurse: Good old 8 hour submits

Default avatar.png pedrosorio: struct than they have to limit the competition to fewer than 6k people, or get more servers :D

VirtuaL42: Having issues to get a correct circuit breaking to handle timeouts (c++). At some point the referee is killing me for not responding (like at 18ms mark). Is there any tricks or things to be aware of ? :/

Counterbalance: you could run it offline on the turn that times out and see if it aborts timely. Could be you're not checking for timeout often enough

VirtuaL42: what i thought but i'm fine locally and i put checks everywhere with logs just to be sur i was not stuck in a long loop somewhere.

Counterbalance: if you log too much data that can also be considered a timeout

VirtuaL42: reduced but it seems the same. I'm using chrono::high_resolution_clock::now could it be wrong ?

Counterbalance: i'm using that too, works fine.

VirtuaL42: damn ok :(

Default avatar.png SAChamp: https://www.codingame.com/contribute/view/572391469495f4f007323ae10613055c9602

Counterbalance: you start measuring after you read the 1st line of input? And you're using something like chrono::duration_cast<chrono::microseconds>(elapsed).count() ?

Default avatar.png SAChamp: Check this out! Suggestions are welcome

Default avatar.png SAChamp: https://www.codingame.com/contribute/view/572391469495f4f007323ae10613055c9602

VirtuaL42: yes but i see that i'm using nanos and dividing it by 1 million, perhaps some rounding issue

RockyMullet: great all my lost are random timeouts, I feel the servers a trolling me

struct: How many time do you use rocky?

jacek: all the time

RockyMullet: I stop my sim at 39 ms

ShadowJ24: Hello, why doesnt my AI quest map doesn't update even though I've done the tutorial on Coders Strike Back?

RockyMullet: ok resubmitted and my losts are actual lost

RockyMullet: ShadowJ24 you need to click it to "claim" it

llllllllll: I also stop at 45 ms, but I don't think it's the servers

RockyMullet: I like blaming others for my mistakes :D

ShadowJ24: When I click it it just goes to the page of Coders Strike back...

RockyMullet: oh god, seems like it wasnt a good time to submit

RockyMullet: 1 game past the initial 10...

struct: yeah rocky

RockyMullet: :sleepy:

ClockSort: rockymullet could it be the GC?

RockyMullet: but my bot is better ! :cry:

Counterbalance: i use micros and divide by 1000.. could be, yeah..

Counterbalance: (crap scroll)

fel-hita: writing c# in this IDE is painful

fel-hita: everybody just copy pasta ?

RockyMullet: second game, progress !

struct: There are extensions fel-hita to sync

RockyMullet: fel-hita yeah code somewhere else locally on your computer

struct: https://www.codingame.com/forum/t/codingame-sync-beta/614/

RockyMullet: if you like your sanity

ClockSort: fel-hita yeah i use VS and paste it in

fel-hita: many thanks

LogalogScholar: We're coding not being sane here

Default avatar.png LordSkaven: same here

struct: I could not imagine coding more than 50 lines on this ide

RockyMullet: 3 games ! All wins at least :D

ClockSort: there are tools to combine your files, but I'm not afraid of a measly thousand lines.

RockyMullet: struct I did some small easy puzzles when learning a new language

RockyMullet: but thats it

struct: clock sometimes it happens that you accidently paste in chat

struct: and do not notice

RockyMullet: 4th game, a win also, I guess there's more anticipation that way lol

fel-hita: maybe the games are very intense that's why its ranking slowly :laughing:

RockyMullet: hype overload

RockyMullet: 16% patience is a virtue

struct: just need to wait around 2 hours maybe

tobk: wow, crept up to gold from silver 65. did not expect that.

numb3r5: hello evryone

ClockSort: hello numb3r5

miszu: do you get big advantage by stuffing all 4 inventories into one int?

ClockSort: i can't figure out how to subtract costs and determine unaffordability after stuffing deltas into a single int

struct: I ditched from storing all in one int

struct: I had a bug

struct: Noticed it by luck

ClockSort: why not fix bug? :)

miszu: I guess keep it simple is a good advice

Skynse: Yall ever have one of the test cases fail but you get 100%

PED: struct I did all on GitC in this ide ^^

struct: How?

Vinay96: does anything change in silver?

struct: no

Vinay96: so what's the point?

Vinay96: i'm so confused

PED: Obstination mostly I suppose

Astrobytes: And that was the older version of the IDE!

PED: also I didn't know about CG sync

struct: Vinay96 to increase competition

Astrobytes: It means the best players go through to next league, so people are competing with people at the right level.

Astrobytes: @Vinay96

Vinay96: Makes sense! - Cheers Guys

starmaq: hmm the ide is pretty drunk

starmaq: test cases are taking ages to test, and the output is always finding Nothing

starmaq: started working again out of a sudden

fel-hita: better avoid using the embedded IDE https://chrome.google.com/webstore/detail/codingame-sync-ext/ldjnbdgcceengbjkalemckffhaajkehd?hl=en

fel-hita: i was doing the same painful mistake

miszu: I need some inspiration for a class name. How do you call all the spells/potions/tome?

Default avatar.png LordSkaven: Thing0,Thing1, Thing2, Thing3

SelectNull: Action

PatrickMcGinnisII: never gonna get out of silver with this bot, gotta rewrite :(

miszu: yeah action sounds resonable

BrunoFelthes: any ideas to rank the tomes?

Braykin08: BrunoFelthes my tip is the same for every problem you are trying to solve : What are you lacking, improve there. Diversity, quantity, how fast can you cast them

ParticleBeam: I've rewritten my bot multiple times. I seem to have hit my limit.

LogalogScholar: Nothing like seeing your ranking dropping 6500 places

miszu: I am in bronze and I am rewriting in C++. By just outputing "WAIT" I am beating many opponents. I guess you can actually win by doing nothing.

Default avatar.png KevinisMAD: The heuristic for choosing the next spell to cast is killing me

Default avatar.png pedrosorio: ParticleBeam neverrrrrr give up

LogalogScholar: Nothing like waiting for your opponent to self destruct

Default avatar.png KevinisMAD: Honestly some of the people towards the top must be crazy good at coming up with ideas I am almost completely out I can't even add the options for repeating cast because my bfs isn't fast enough to have that help

LogalogScholar: It all boils down to optimization I think as you get higher up.

MarekM: deltas

TC9792: beating the boss in silver league probably does not require bfs/minimax

TC9792: a good heuristic function for your action in this turn might be good enough

Default avatar.png KevinisMAD: Probably not but I got to about rank 1200 and couldn't push pass that without it

Zenoscave: TC9792 Yes but that definitely won't scale

Default avatar.png KevinisMAD: Although I just found a bug in my code which is helping a ton

TC9792: I am at the middle of silve league , just using heuristic function for current turn, without casting spell repeatedly

TC9792: but ya, if you want to get into the top, you need optimized minimax

Zenoscave: Middle silver to gold is a big leap... Think you'll be able to continue

miszu: how far can you go in this tournament without simulations? ie: compute the best move without looking in future?

Zenoscave: and minimax doesn't work well in simultaneous games

Kaa: can I test somehow 2 different versions of my algo?

Zenoscave: submit one and play against it in ide with the other

Zenoscave: or submit both and see how they do

Kaa: Can I add my previous algo in ide?

Zenoscave: yes if you enable expert mode in the settings

TC9792: I will start building game search algorithm if I cant advance my position anymore

Zenoscave: on the left panel

Kaa: hmm... its on expert

Scarfield: remember to backup current code, if you havent submitted it yet

TC9792: I already have the heuristic function

Kaa: found. thank you

TC9792: what are you planning otherwise? if not a minimax with alpha beta pruning

ScriptKiddie0101: is 496 good rank?

TC9792: it is a very common approach for 1v1 game

Zenoscave: BFS is popular rn

Zenoscave: it's a common approach for turn alternative 1v1 games

TC9792: ya true

Kaa: oh... after reading you... I feel I'll never be promoted to gold league (

Zenoscave: don't give up Kaa!


Kaa: BFS is my maximum)

TC9792: errichto was doing DP during his last live stream

Zenoscave: Many people in Gold use only BFS. Just need to choose wisely where to search

AntiSquid: DP ?

Scarfield: do you have any pruning kaa?

Zenoscave: Dynamic Programming

Zenoscave: TC9792 was it based on knapsack?

Zhmyh: How do you guys select parameters (or weights if you like)? Like I have ~10 weights and it's impossible for me to choose them well. Are there any lifehacks or is smb using some kind of primitive neural networks for this?

TC9792: ya knapsack

AntiSquid: errichto still in bronze though

Zenoscave: interesting i'll look into it for heurstic meta

Scarfield: yea what a n00b he is :p

AntiSquid: yup

Kaa: I have already asked it... but I don't remember the answer... Is there an ID number bound?

TC9792: not a lot of time you can beat Errichto haha

AntiSquid: seriously, he might change his approach entirely Scarfield

TC9792: for now

Default avatar.png KevinisMAD: Errichto said he was going to work more on this tomorrow so who knows whatll happen

Scarfield: i havent seen his streams, but is he even participating for real, or just to make a tutorial out of it?

AntiSquid: he is going for legend

Zenoscave: How many legend y'all think? 20-30?

Default avatar.png KevinisMAD: Yeah the thing is he has some other coding competitions he wanted to do more or something like that

TC9792: he streamed 5,6 hrs on this

Scarfield: i guess there is a limit for how much he will be allowed to stream during the contest then?

AntiSquid: 20 imo Zenoscave, but apparently saiksy said in chat it will be 15 so ...

AntiSquid: that's official right?

Scarfield: it has been 15 the last few times i think

Zenoscave: only 15!?

Zenoscave: Christ

Astrobytes: errichto finally got the CG bug properly

Scarfield: AstroBug

Zenoscave: https://www.codingame.com/replay/505563320

Zenoscave: sad

Astrobytes: Scarfasterthanme :D

Scarfield: lol zeno, 2 green > 1 yellos obviously

Scarfield: yellow *

AntiSquid: 2-3 hours later and still sub running

Zenoscave: I don't add count to final score yet

Scarfield: how normal are draws up there?

Zenoscave: only had 1/35 against sim.an so far

SinOfWrath: That's sad Zeno on the replay. In silver I had a 6 streak loss during submit where I had the resources for a potion and the enemy finished on that turn and I would have won in the next turn.

Zenoscave: I lost simply for having one less teir-1+ in inventory at the end lol

fel-hita: that's why i keep one under my sleeves

Scarfield: 5 aces?

Astrobytes: fel-hita or mlemm... it keeps changing depending on my browser tab lol

Zenoscave: lol Scarcheat

Astrobytes: Missed the obvious there Zeno: ScarfAce

Scarfield: Platoscave, ive never been caught

Scarfield: uuh

Whiskee: if I get "Warning: your code did not read all available input" but I'm breaking after just 20ms, does it mean I'm hitting memory limits?

Scarfield: "Say hello to ma lit'le fren"

MarekM: hi, action_id change from LEARN to CAST after learning it is random? :)

Astrobytes: Also Scarfield: "Platoscave" :rofl:

Scarfield: Whiskee could be you error print too much (it takes time)

Whiskee: oh

Scarfield: yea i always think of that when i see zenos name

Astrobytes: What about poor Socrates

Scarfield: hmm i dont remember him having a cave? :thinking:

Whiskee: I disable all logging, error goes away, I re-enable it, it doesn't come back

Whiskee: aaaaa

Whiskee: why is this so inconsistent

Astrobytes: No he didn't but he read Zenos no?

Astrobytes: Or studied him or something.

Astrobytes: *Zeno

Scarfield: plato was socrates student, i dont remember who zeno is actually

Scarfield: was * :p

Default avatar.png KevinisMAD: By the way is gold open?

DomiKo: yes finnaly sim is done!!!

Astrobytes: My Greek philosophy is lacking. He was pre-Socrates I know that much.

AntiSquid: https://plato.stanford.edu/entries/zeno-elea/ LMGTFY !!111

Scarfield: just googled, can confirm

AntiSquid: too late, entire chat got lmgtfy-ed !

struct: Are servers slower?

struct: My code performs worse without changes

AntiSquid: too many bots? :P

AntiSquid: 6.3k already

reCurse: 500 active submissions

struct: Yeah, but I was wondering if it could affect on IDE aswell

reCurse: It's the same farm

AntiSquid: CG getting wrecked for real this time

Astrobytes: KevinisMAD: yep

Illedan: No problem AntiSquid. These submits wont be done until contest is over

Astrobytes: And yeah, IDE performance is a bit meh too

struct: Im surprised it is handling this load tbh

Astrobytes: How many now?

struct: players?

reCurse: The only difference in load is it takes 3 hours to handle a submit and there's no downtime

Astrobytes: Was ~6200 last I checked, yeah

AntiSquid: https://www.codingame.com/contests/fall-challenge-2020/leaderboard/global?column=SCORE&value=INPROGRESS just look here astro @_@

AntiSquid: that's nuts

Astrobytes: No I meant total AntiSquid, and I cba to actually look myself frankly

struct: 6364

AntiSquid: 6360 total . maybe this contest does reach 7k

AntiSquid: 4 new users in 5 minutes? someone making alts? or just popular ?

Astrobytes: There's the streaming thing, and Errichto

struct: And japanese tweets

Astrobytes: That spreads word across the CP community for a start

AntiSquid: then just need few of the real big streamers to kill CG

Astrobytes: yeah struct

Astrobytes: Also the contest is quite CP-community friendly in a lot of ways I guess

DomiKo: that contest is Bit-opti friendly

DomiKo: that sim is super cool

Default avatar.png meh1001: Whats CP stand for? Obviously I'm not in whatever community that i slol

Scarfield: Cyber P**n

Astrobytes: Sorry, CP == Competitive Programming

Astrobytes: topcoder, codeforces etc type stuff

Default avatar.png KevinisMAD: Yea it is a bad term just think of child p***....

Default avatar.png KevinisMAD: Like pick a better name cmon

AntiSquid: CP = computer programming :P

reCurse: Yeah like anyone sensibly minded would think of that upon seeing CP

Default avatar.png meh1001: rofl! that one didn't cross my mind, I was thinking 'C programmers' as my best guess

reCurse: Grow up

Astrobytes: ^

AntiSquid: this isn't a news site true

Astrobytes: So anyway, since this contest seems to lean more in the direction of single player optim, it's more attractive to the CP community in general

Astrobytes: So I think that's a factor

sirsatan: is there copy module ?

Scarfield: that segway xD

miszu: what you mean singple player optim?

Astrobytes: *segue Scarfield segue!

Scarfield: xD

Zenoscave: wait it isn't spelled segway?

Zenoscave: or cegway?

AntiSquid: https://www.codingame.com/multiplayer/optimization miszu there's a full category with just optimizing for better score

sirsatan: i want use deepcopy (python3)

Astrobytes: EcksDee yourself :P

Astrobytes: "Cegway" lel

JFB: sirsatan: copy.deepcopy() :-)

Zenoscave: the cegway is asking . where is ceg btw

Astrobytes: No Zeno, it's segue

Astrobytes: He's around

AntiSquid: oh ceg did join, i wasn't around enough this time to see him

reCurse: Didn't you notice the statement copied almost verbatim to the webchat?

sirsatan: JFB thanks i missed copy.copy in other phrase

Astrobytes: lol

Scarfield: he asked almost as much as always :p but apparently actually read some of the statement for once

Astrobytes: And his sister is competing too iirc

Scarfield: segueprakash?

Astrobytes: :expressionless:

Astrobytes: Anyway. Still smurfing around reCurse? :)

reCurse: Who knows

Astrobytes: :grin:

Zenoscave: so yes

reCurse: There's a rumor going around that timeouts are happening across the board as a result of managed language activists seeing to equalize the field

Zenoscave: how would managed languages increase opp timeouts?

Zenoscave: or do you mean in general

reCurse: In general

Zenoscave: Unsafe assumption on my part

reCurse: They cried about balance and CG just injected random GC spikes to everyone

Zenoscave: I was unaware of this

Astrobytes: tbf the spikes have been pretty bad for a few months (at least)

reCurse: Is my trolling too subtle or yours even more

Zenoscave: We will say the latter...

Astrobytes: And no, I think we got it

struct: I believed you for a sec

Zenoscave: I did for more than a sec

struct: I even googled what was managed languages

AntiSquid: too close to reality

Zenoscave: Gullible and trusting. that's me

Zenoscave: C# java etc struct

reCurse: Just wait until I reveal ceg was my smurf all along

Scarfield: xD

Zenoscave: I'd be pissed

Astrobytes: lel

ZarthaxX: no way

ZarthaxX: you cant act so ceglike

Zenoscave: Also how can one reveal a smurf?

struct: your indian acent is pretty good

Zenoscave: screenshot of two browsers

ZarthaxX: you delete your true account Zenoscave

struct: Zenoscave

ZarthaxX: oh look, struct suddenly appeared

Astrobytes: You're not ceg anyway, I know his name

struct: https://github.com/MultiStruct/proof

Zenoscave: hmmmm.

Astrobytes: *ceg's name

reCurse: And you know mine?

Zenoscave: We knew that already

Zenoscave: @struct

AntiSquid: struct ceg was on cam, so it would be the other way around, ceg can mimic an english accent :P

ZarthaxX: indian ceg face

Astrobytes: Well, I have an idea of some part of it but no reCurse :D

struct: I think I said my name here before

struct: Not sure

struct: i know that one time I posted a picture with meta data

struct: That had my name

Zenoscave: Ceg we summon you !!! Prove that you are not a reCurse smurf

reCurse: Like I'd fall for that

Zenoscave: -_-

AntiSquid: Zenoscave hint: the smurf isn't on the leaderboard

reCurse: Or is it

AntiSquid: ceg main account, recurse smurf duh

struct: Hiding in plain site

Astrobytes: <insert gumball meme here>

Zenoscave: gumball meme?

struct: siight*

Zenoscave: what's a gumball meme

Astrobytes: Zenoscave: https://www.youtube.com/watch?v=HwtBEQT9Uck

struct: We need a clue

struct: Give me a clue and ill find 100%

Astrobytes: Sorry, I have nieces and nephews, what can I say

reCurse: Right

Zenoscave: oh the show! I've heard of this

Scarfield: or do you?

Astrobytes: Or have you?

AntiSquid: god that's awful .

Zenoscave: Why are you all so suspicious of the world. face value. it does wonders

Scarfield: or does it?

reCurse: Face value. On the internet.

Zenoscave: ^ should have seen that comming

Astrobytes: "Face value. On the internet." <-

Zenoscave: Why do you think so many nigerian princes talk to me

Zenoscave: Because I trust people

AntiSquid: thispersondoesnotexist = one of the best face value websites out there

reCurse: What's your email again?

Zenoscave: whose mine?

reCurse: Yes

struct: Wow

struct: The accountant winner is playing on this contest

Zenoscave: lol I'm dumb but not that dumb

struct: had no clue

Astrobytes: l**esmi*h@zenoscaveswebsite.com

Scarfield: https://youtu.be/s3zjRcMnRNY?t=88 this is you zeno?

Zenoscave: maybe

AntiSquid: the amazon support guy that keeps calling started to sound geniune

AntiSquid: more genuine ... not really there yet

Zenoscave: I get car insurance department calls

Zenoscave: that's the company name "Car insurance dept."

Astrobytes: lol

struct: I think I found foul proof way to find re curse alt

struct: Just invite everyone to CoC until you get banned

Scarfield: xD

Scarfield: would defo work if euler is using an alt

AntiSquid: just mention amnezia from the car accident, tell them to give you the details, or ask stupid questions, mentioned bikes, 3 wheelers, etc they'll stop calling and tell you're not a customer anymore

Astrobytes: But the alt isn't a moderator (OR IS IT?!)

reCurse: Jokes on you I have more than 1 alt

The_Auditor: is Automato2000 still arround?

Scarfield: no

AntiSquid: AutomatonNN ?

AutomatonNN: eulerscheZahl is there a way to see a very simple code to see the best path to the list of the resul

The_Auditor: is Automaton2000 still arround?

icecream17: (test) automaton2000

Automaton2000: the challenge is to get it

Automaton2000: i thought my bot was kinda smart, but it's not working for me

Astrobytes: I suspect you have one per contest reCurse. It's what I'd do anyway ;)

reCurse: Maybe.

icecream17: i wonder how often automaton2000 pings someone

Scarfield: why use an alt though? is being a mod online during contest a hazzle or whats the reason?

Automaton2000: looking forward to the next league

reCurse: Too stressful

Astrobytes: If the contest isn't something you like or whatever then you can ditch it

struct: If he wants to quit he can always delete the smurf

Astrobytes: (I'm not using an alt btw, my rank is really that bad)

reCurse: It's totally a flaw it's just how I cope with it

Scarfield: im still just doing random action, hopefully tomorrow i will get further

struct: I dont have anything against it

Astrobytes: It's not a flaw at all.

Scarfield: but why make an alt, you could just quit, or does joining with your main put on pressure to perform. Im just curious btw

Astrobytes: We're all human at the end of the day.

Scarfield: or ..

Astrobytes: yeah yeah

reCurse: I feel obligated to perform and it tilts me when people read into a bad performance or whatever

reCurse: With an alt I can just delete and move on

Scarfield: makes sense

AntiSquid: taking it too personally

reCurse: Yeah

struct: I dont think you need to prove anything

struct: But w/e its your choice afterall

Astrobytes: Yeah but you can't always force yourself to believe that struct

struct: Yeah, I understand

struct: I dont wanted to sound harsh

Astrobytes: Subconsciously I mean

reCurse: Getting too emotionally invested has been my biggest flaw in competitive endeavors

Astrobytes: No you didn't struct

Scarfield: luckily i dont have that kind of pressure on me xD

reCurse: At this point I give up on changing that :P

struct: Well your 1 day bot could beat my 30 day bot

struct: What rank do you usually aim for re curse?

reCurse: 1

struct: 1st? or top N?

struct: damn

Scarfield: makes me wonder how hard it would be to rank as the very last. Timing out every match might not work

reCurse: Server-side rng for matchmaking

Scarfield: isnt there actually an award in tour de france for finished 2nd last?

struct: no

struct: you are the 1st loser

struct: thats about it

agenordebriat: Finishing is a feat in itself

agenordebriat: Might not be the case here... :D

struct: There is Yellow jersey (general time winner), Green jersey(ponts), Dot jersey(Mountain points), White Jersey(youth general time)

struct: Time to port tdf game here

Scarfield: Lanterne rouge is the very last to finish, for some reason remembered it as the 2nd last

struct: Didnt know it existed

struct: The name is funny

Scarfield: "refers to the red lantern hung on the rear vehicle of a passenger railway train"

avdg: hmm not sure if some are doing sim, I did not track chat so far

avdg: doing my sim version and it seems expensive :-)

ZarthaxX: yes, people is doing sim

struct: I dont think its that expensive

struct: If you are simming both

struct: maybe

avdg: I need to trace my bottlenecks

avdg: and cut out some calculations

avdg: code is just a few hours old

avdg: though I didnt spend too much time coding, my non-sim version reached top of bronze

struct: How do I stop early optimizations? It's my biggest problem.

avdg: tackle the problem big enough from the start

avdg: if you take the challenge big enough, you only have to focus on the little ones

Bobbadillio: In the sense that you're trying to write optimized code early, and then it becomes too slow to update?

avdg: though it is an recursive thingy

Astrobytes: Forget intrinsics exist struct, there are none. There is no AVX. Your code is pure.

Astrobytes: ;)

struct: Bobbadillio I keep trying to optimize early and keep rewriting

struct: im stuck on a loop

struct: No way im gonna use AVX here

Astrobytes: But you're doing lots of bitwise optimisations prematurely I would guess

JohnCM: it seems like i must make 6 potions under 45 turns to win silver boss

struct: well I saw top brewing 6 under 30

struct: So 45 seems feasible

JohnCM: how??

struct: Astrobytes I dont even know what im doing anymore

JohnCM: brew under 30

avdg: hmm my sim does about 1000-1500 iterations at the start

JohnCM: that is nuts

avdg: but crashes after a few turns

ZarthaxX: F

Bobbadillio: What's an iteration avdg? a full rollout through a game, or something else?

avdg: a move in a sim

Bobbadillio: Ah, cool

ZarthaxX: Astrobytes you cant stop structo from optimizing

struct: continue;

ZarthaxX: he always ignores the phrase "optimization is the root of all evil"

ZarthaxX: struct LOL

struct: That is not how I exit an infinite loop is it?

ZarthaxX: how is that efficient sim going anyway

ZarthaxX: break;

ZarthaxX: mah man

Bobbadillio: haha, I mean, it's ONE way to get it done ;)

Bobbadillio: wait, no it's not

Bobbadillio: actually, I wrote that bug earlier

JohnCM: i see it now

Bobbadillio: in my own code

ZarthaxX: loooooooooool

JohnCM: silver boss uses repeatable spells

JohnCM: i don't

Astrobytes: lol ZarthaxX :D

avdg: my can, but my non-sim can only do so limited

avdg: *mine

struct: ZarthaxX that is not helping my optimization addiction

ZarthaxX: :D


avdg: my sim one can handle repeatable spells just fine

avdg: it only makes it a bit slower I guess

ZarthaxX: lang?

avdg: lang of my ai?

struct: TS

avdg: yeah TS

struct: ok no more optimizations

struct: until I reach gold

avdg: I guess my code should be better written in a non-gc and a bit more optimized datastructure

AbundantPuddle: But if there are no more optimizations, then your code won't be optimized.

avdg: -O0 all the way?

avdg: my sim def needs some -O3

Bobbadillio: ehh, what's a factor of 2 in speed between friends?

icecream17: i wonder, what's the fewest possible amount of moves it would take to win if both players output valid actions

Bobbadillio: Probably a mirror match, but maybe not

Bobbadillio: actually, almost definitely not!

Bobbadillio: Wait, maybe it would be...

ZarthaxX: TS is not the way to go for sims :(

avdg: assemblyscript maybe

Bobbadillio: I was thinking of highest points/turn for a win, and the loser helping the winner by buying any expensive spells that would otherwise get the bonus.

icecream17: maybe the opponent would help by learning all the unuseful spells

JohnCM: fewest number of moves depends on the orders and spells

avdg: not sure if the js engine supports wasm

Bobbadillio: ah, okay, so fewer tax ingredients ? that makes sense.

avdg: but I think it can?

DreadY2K: The opponent could also get high-tax ingredients to transfer ingredients over

Bobbadillio: Ohhh, yeah, there you go

DreadY2K: Small help, but might make a difference @icecream17

Bobbadillio: That would be cool if the JS engine supports wasm, I should find out. Maybe I can compile my rustbot to wasm and become a javascript competitor :D

icecream17: i wonder what would happen if the contest was to lose

icecream17: oh, then no one would do any potions. nvm

DreadY2K: Yeah, you can just wait so nothing happens

DreadY2K: Though, if spells are always castable, and resting and waiting are removed, then that might be an interesting optimization

DreadY2K: How few points can you get while casting or brewing every round

avdg: I saw things with 7, maybe 6 points

gacii: ca

linjoehan: Do you have to track the number of orders completed?

avdg: mine doesn't

avdg: though there is a limit

avdg: but I think it this way

avdg: if you brew very fast, you would probably win anyway

avdg: unless you brew the things that have a low price

avdg: (except if these were the very easy ones to make)

linjoehan: you may want to brew fast cheap ones when you in the lead and slow big ones when you are behind

JohnCM: if the contest was to lose, i'll just rest all the way

reCurse: Why rest when you can crash

avdg: so in theory, an ai that is optimized enough shouldn't care about tracking orders

linjoehan: but it should, you need to know that you can win by ending the game early

DreadY2K: I wrote code to track the number of orders I've done and not brew a potion if brewing it would make me lose

DreadY2K: But I haven't seen that code actually be run

DreadY2K: Either I win easily enough, or the opponent brews the last potion and beats me

avdg: you just have to know that you are maximizing points with the lowest moves possible

JohnCM: there's a possible deny strategy

JohnCM: to trap your opponent with tier 4 ingredients by brewing the tier 4 faster than him

linjoehan: avdg your opponent has just brewed one putting them 10 points ahead, you can brew that 7 point on your next turn but it will be your 6th one and in doing so you will lose.

DreadY2K: @linjoehan fwiw, I wrote code to handle that case, and I've never seen it actually prevent that scenario

avdg: hmm yeah actually its more complicated indeed

DreadY2K: It can happen, but it seems to be rare

avdg: though the start is the same

avdg: and the only influence is the tome

avdg: and orders

Codeab: morning

Astrobytes: Out for tonight, take care all and see you tomorrow :)

Illedan: bye

avdg: cya

avdg: and meh, my sim only goes max 5 steps ahead

struct: cya

Shparki: What is the best way to debug these things? I can't really log or pint more than one line

struct: you can print to stderr more than one line

Shparki: It quits though when I print something it doesn't expect

struct: what language are you using?

Shparki: python

struct: print("Debug messages...", file=sys.stderr, flush=True)

Shparki: Ah swee thanks, OH stderr, I totally read that but read stdout

linjoehan: So if you see the first 5 orders and the first 6 spells you can back engineer the random seed and then be the best at look ahead?

struct: If you have infinite time sure

struct: and im sure that 2 seeds can have same start position

struct: and not be equal after it

miszu: I find one of the c hallenge is to come up with good heuristics. Just checking the difference in inventories doesn't seem enough

avdg: got my sim up to 3300 moves now

avdg: I only get 14 steps in the game :p

miszu: your depth is 14?

avdg: 5

avdg: but in game step 14, the computation is too big

miszu: too many spells you have

avdg: true

avdg: though my bot in arena is the non-sim version

miszu: I am trying to do a non sim version

miszu: basically take the best step

miszu: but my heuristics is weak

avdg: yeah that was the plan

avdg: the trouble is, sometimes you have to do like 4 good and sometimes unintuitive steps to make progress

avdg: the trouble is in assembling the required ingredients

miszu: I am trying to do a heuristics where you compute how much effort would it take instead of differences in inventory and potion

JohnCM: https://www.codingame.com/share-replay/505654642

JohnCM: this is pure luck

phord: Yargh! All my output has stopped showing in the game info window...

phord: refresh brought it back.

avdg: hmm my sim can now handle 5000 moves

avdg: not enough

JohnCM: lol i think heuristic only can get to gold

miszu: gold is good enough for me

JohnCM: i haven't even optimized my spell use i am now around 600 in silver alr. just purely choosing the right spells at the start gives that much of an edge

JohnCM: and i am only doing 1-step ahead

JohnCM: ya this competition to get into legend probably needs insane optimization of the lookahead search process

Default avatar.png meh1001: I've never programmed a bo before this, or read anything about game programming, so I can't even imagine what heuristic would do that well

Default avatar.png meh1001: I did a heuristic thing at first and it cleared wood but didn't do well at all in bronze

JohnCM: your heuristic must approximate number of turns needed to make the potion well

Default avatar.png meh1001: in fact I had just found this website like a week before the challenge and did 4 or 5 puzzles and then thought what the heck might as well give it a shot

JohnCM: the more accurate one will be bfs (including repeats)

JohnCM: it's good to start

JohnCM: i joined 6 months ago in time for the spring challenge

JohnCM: i would say the wood league for this challenge is harder, so kudos to you for making it to bronze

Default avatar.png meh1001: I thought a heuristic was when when you approximated

JohnCM: typically the simpler the challenge, the harder the ai

miszu: I prefer simple rule but hard AI

JohnCM: this challenge not as much moving parts as the previous ones

JohnCM: so it will be very optimization based

miszu: too much rules and then you are not sure where is wrong in your code

JohnCM: haha my code is about 150 lines long only for silver

JohnCM: once i do bfs, it will be about 200-300 lines

Default avatar.png meh1001: yeah I don't know if this one is simple or hard for othe rpeople but it's blowing my mind lol I'm having a great time though

JohnCM: gd luck

JohnCM: i'm sure you can make it to silver with a few tweaks

miszu: my heuristic is like 200 lines of code

miszu: you and our 150 lines for silver

miszu: your*

yhyoxx: what's a good state eval ?

Default avatar.png meh1001: I have BFS at the moment and am at like 380 lines, but 1/3 of that is commented out old stuff snicker

JohnCM: haha i'm not joking, it's really 150 if i remove the comments, maybe only 100 lines

JohnCM: this is my simplest code ever for silver actually

ScriptKiddie0101: guys, is there any way to remove these fucking comments in the code?

JohnCM: pretty glad it worked

JohnCM: delete them

ScriptKiddie0101: i dont want to delete it everytime

JohnCM: isn't it delete once, and it will stay that way forever

ScriptKiddie0101: how do i delete it?

JohnCM: on your code screen, just delete the line

JohnCM: meh1001, are you in gold alr?

Default avatar.png meh1001: nope bronze rofl... but I think I'm about to break into silver

Default avatar.png meh1001: I finally had an epiphany about how I could do the repeats

JohnCM: all the best

JohnCM: good state eval is important

Default avatar.png meh1001: I'm 73% in my arena run at #1 so should hit silver

JohnCM: haha i'm about to code in my repeats now

JohnCM: haven't coded it yet

JohnCM: XD

JohnCM: probably can do hand in hand with bfs

Default avatar.png meh1001: yeah I got em working in tandem

Default avatar.png meh1001: or in the mix anyway

JohnCM: it's like another action anyway

JohnCM: action A, B1, B2, C, D, E, F1, F2

JohnCM: then just bfs it

JohnCM: what depth is your bfs

avdg: 5 now

JohnCM: i wonder if python3 can do depth 5

avdg: and searching sometimes through 5000 states

avdg: mine is typescript

JohnCM: assuming 10 actions per turn, that is 10^5 enumerations

avdg: pything might be a little bit slower, but not too much

yhyoxx: i can only do 2depth with cpp

JohnCM: maybe can monte carlo this one also haha

JohnCM: have a state eval, do down 3 depth and use monte carlo tree search to choose next action

miszu: my heuristic has a bug. It doesn't do the move it should. I fixed partially and now it does some children's based potion but it still have a bug

mikestratton: Anyone on Wood 1 League Fall Challenge?

Default avatar.png meh1001: I'm not sure what ya'll mean by depth in bfs, I think I'm probably not doing it the asme way ya'll are

JohnCM: you cap the max depth for your bfs

Default avatar.png Rodrigo_the_coder: me

JohnCM: if not you might be overtime

Default avatar.png meh1001: I think this chat is only people who are in the fall challenge screen

Default avatar.png Rodrigo_the_coder: i in wood 3

mikestratton: ok

avdg: my sim solver is now making my sim unhappy about creating too many items in the inventory :p

mikestratton: Not quite understanding what they are asking for in Wood 1 League

avdg: making the sim spam few 100 lines about inv overflow

mikestratton: Trying to figure out if there is a way to display the input of the game in the console

JohnCM: mike which part is not clear

JohnCM: i could help

miszu: yes fixed it finally

mikestratton: If I could read the input it would help

Default avatar.png meh1001: mike you can just write some code that will debug out all the inputs

miszu: you can use system err

Default avatar.png meh1001: whilte True: print(input())

JohnCM: ah...

Default avatar.png meh1001: well, to the stderr

JohnCM: # print(taskid, file = sys.stderr, flush = True)


JohnCM: in python, this is what i did to print out the input

JohnCM: like my taskid is basically the inputs given for the inv0, inv1, etc.

mikestratton: It won't let you print until its time for my output

mikestratton: if I do before it just returns error

JohnCM: what language are you using

Default avatar.png meh1001: Yeah I did that thing I said and then copy/pasted it all into notepad so I could look at it and feed it locally for some debugging, which I didn't do much of because it was kind of irksome

mikestratton: PHP

JohnCM: oh can't advice, maybe something to do with the caching

JohnCM: why not just output something, store all in variables, then print the variables out

JohnCM: or you can store in strings

mikestratton: Won't let me

phord: PHP for this game? I bow to your courage.

Default avatar.png meh1001: it's kind of hacky, but you can definitely make it read the inputs, write them to stderr, then output WAIT so it moves to the next turn

mikestratton: ok will try\

Default avatar.png meh1001: I mean obviously if you are literally just scraping input to look at it you don't want to win that round anyway

miszu: ok so with only looking at current best move + chosing most expensive potions to reach for + not learning new spell I can beat the 999th player in bronze

miszu: in C++ :sunglasses:

mikestratton: Ok got the input to display - that helps

avdg: go get my ai at pos 84 :-)

avdg: while its still non-sim

miszu: in bronze?

miszu: or silver?

avdg: bronze

miszu: let me try

Default avatar.png Topjimmies: how do I convert my depth first to breadth first :sweat_smile: driving me nuts

miszu: yeah you beat mine by at least 20 pts

miszu: OOOO

miszu: I beat yours in 1 simulation

miszu: https://www.codingame.com/replay/505684248

miszu: = my bot is def better than yours :joy:

JohnCM: to do bfs, you simply enumerate all the next states first and store the next next states in a buffer. next turn, evaluate the next next states and store the next next next states in a buffer

avdg: my ai is kinda learn greedy

JohnCM: dfs is basically whenever you go into the next state, continue from there until end of tree

miszu: also noticed your AI just want to learn random spells

miszu: and then yolo

Default avatar.png Topjimmies: learn the whole spellbook, then take the best potions all at once

JohnCM: before you even finish learning the whole spellbook, a gold-level opponent would have won the game

JohnCM: seems like if you can't brew 6 potions in 30 turns, you can't go legend

avdg: hmm I needed 3 more items in inv to win

JohnCM: that's about 4-5 turns per pot

Default avatar.png Topjimmies: oh shit, gold is already open

Default avatar.png Rodrigo_the_coder: lalalalala.....

phord: Every time I think I'm done, it pulls me back in. :crazy:

Default avatar.png Rodrigo_the_coder: Every time I think I'm done, it pulls me back in. :sob:

avdg: k solved my counting issue in the sim

elderlybeginner: are there any changes in in/out between contest's silver and gold league?

tomatoes: no

avdg: now my sim gets 6833 moves befoe crash

avdg: I will plan some optimizations tomorrow

avdg: to flatten some computation trees

Default avatar.png meh1001: I don't know what that means but it sounds like progress!

JohnCM: once you hit bronze, it is just about being better than the others already

avdg: my sim is now basically 1 big dfs

tomatoes: x4 slower bfs impl gives better result :sweat:

luthaihoc: Newbie quesion. I 've got top 1 in 1 wood league, How can i prompt to Bronze league ?

Default avatar.png meh1001: it should happen automatically once the arena run completes

luthaihoc: Thank you

avdg: my sim is about 600 lines of code inc data structure definitions

caozouhulue: hello everyone

NoobCod3: hey

avdg: so sim this thing isnt too hard

NoobCod3: anybody wanna be friends?

caozouhulue: yeah

caozouhulue: hi noob

NoobCod3: hello

caozouhulue: where are you from

NoobCod3: America

NoobCod3: I'm listening to Dr. Dre LOL

NoobCod3: and now eminem

caozouhulue: nice to meet you

NoobCod3: LOL

caozouhulue: eminem is great

NoobCod3: nice to meet you too @caozouhulue

caozouhulue: but rap is not my dish

NoobCod3: yea

caozouhulue: i like jazz

NoobCod3: im listening to slim shady from eminem

NoobCod3: tell me what song you like

NoobCod3: i will listen to it

caozouhulue: i will listen eminem

NoobCod3: whats your favorite song?

caozouhulue: i like boney james

caozouhulue: he's a great saxer

NoobCod3: im listening

caozouhulue: i reccomend you his ain't no sunshine

NoobCod3: dang he is a great saxer

NoobCod3: wow

NoobCod3: THAT'S CRAZY!

caozouhulue: yeah

NoobCod3: ima listen to the aint no sunshine one

caozouhulue: he's excellent

NoobCod3: I like to play guitar and piano

caozouhulue: oh i found that i have listened the slim shady

caozouhulue: it' has great beat

NoobCod3: yea

caozouhulue: i almost dance with it

NoobCod3: LEL

NoobCod3: you should listen to Someone I used to know by Gotye

NoobCod3: it's a good song

caozouhulue: what is the mean of LEL

NoobCod3: LOL i meant

caozouhulue: ok

caozouhulue: but we usually call lol as League of LEagends

NoobCod3: good

caozouhulue: i like play league of leagends

caozouhulue: how do you feel

NoobCod3: good

Default avatar.png Rodrigo_the_coder: so lonely...

KrabbyFR: Hey there! how can I replay the same seed please?

Default avatar.png Topjimmies: god damn python is slow

Default avatar.png Topjimmies: I can only search depth 2, depth 3 times out

miszu: ok so my naive AI reached 1230/2387 in bronze

miszu: that's good progress

miszu: that moment when you beat an opponent by 1 pt. #gg2ez

Default avatar.png Rodrigo_the_coder: #

Default avatar.png Rodrigo_the_coder: # lol

Default avatar.png Rodrigo_the_coder: #lol

Default avatar.png Rodrigo_the_coder: :disappointed:

miszu: why sad?

Default avatar.png Rodrigo_the_coder: no one chat

miszu: i responded to the gg2ez

miszu: in the ide, is it possible to run vs an ai multiple times and see an average outcome

Zenoscave: not automatically

miszu: so I have to press "play my code" 5 times to see 5 outcomes?

Zenoscave: Or submit or play offline with a referree engine

miszu: alright

Default avatar.png meh1001: I looked at the referee thing and then got 100 compile errors because I don't know how to java and figured I'd spend a whole day trying to figure out how to get it working so went back to hitting play

NinjaDoggy: relatable... except I know java :(

Default avatar.png meh1001: :laughing:

Default avatar.png LLG: my bot keeps hoarding tier 4 ingredients and get stuck with a full inventory

Default avatar.png LLG: I think evaluating by inventory state is not a good idea lol

Batpapa: ahah same

miszu: LLG, your heuristics is too simple so many cases where values are equal

Default avatar.png LLG: yeah I guess

miszu: had the same problem and need to raise your game man

Default avatar.png LLG: right now I only check for 3 things

Default avatar.png LLG: current score, inventory state and distance to best recipe

NinjaDoggy: nah evaluate by inventory state is ok

NinjaDoggy: as long as your search is deep enough ;)

Default avatar.png Rodrigo_the_coder: help

miszu: inventory state is not enough

Default avatar.png LLG: I guess I need to decrease the weight on inventory state

miszu: I used a better heuristics

NinjaDoggy: i eval only by end of game, potion scores, and inventory

JohnCM: you need to progress towards a potion/potions

miszu: whatever you are missing, how much time would it take +/- to reach it. Also if you have any extra items, use it to reduce the overall costs

JohnCM: cannot just by inventory ingredient value

NinjaDoggy: that's where the deep search comes in

JohnCM: my heuristic only 1-ply search is now rank 527 in silver:)

miszu: my gf says my code is not deep enough :(

JohnCM: the heuristic is also impt if you don't want to search deep

Default avatar.png LLG: thing is, I haven't really applied any real pruning to my search

Default avatar.png LLG: so I can't go deep

Default avatar.png LLG: atm I just get the local maxima of the current depth and expand from there

Default avatar.png Rodrigo_the_coder: how to go bronze on python

NinjaDoggy: bronze?

NinjaDoggy: just pick a potion

NinjaDoggy: and work towards it

NinjaDoggy: 1 turn at a time

NinjaDoggy: find what you're missing

JohnCM: yea that's my strategy for bronze also

NinjaDoggy: and try to produce that

Default avatar.png Topjimmies: my code keeps timing out after turn 6

JohnCM: same as silver too

Default avatar.png Rodrigo_the_coder: tell the code

miszu: right now my code is not learning new spells. I guess it's time to incorporate that

NinjaDoggy: honestly

NinjaDoggy: learning spells is overrated ;)

NinjaDoggy: I still have 8 turns of hardcoded learning at the start

NinjaDoggy: and then no more learns after

miszu: the bronze bot is mass learning spells and beating me hard

miszu: I do 0 learning. Learning is for nerds

NinjaDoggy: lol

NinjaDoggy: try hard coding X turns of learning at the beginning

NinjaDoggy: and focusing on cast/brew

NinjaDoggy: you can get quite far with just that I promise

miszu: I konw I could do that naive approach

NinjaDoggy: (currently 41st in gold with it)

miszu: but I want to have a mechanic where I learn smart spells

miszu: like -0 + 1

NinjaDoggy: spells are surprizingly all good

NinjaDoggy: it's possible to get bad combinations

NinjaDoggy: but each spell on its own basically has the same value as other spells

miszu: how a 3 tier0 that gives you 1 tier3 is considered good spell?

miszu: absolutely barbaric

Default avatar.png Topjimmies: "your code did not read all available input" then timing out after 5-6 turns

NinjaDoggy: ok yea... that one is a bit questionable

NinjaDoggy: if you have a time out

NinjaDoggy: it will display that error

miszu: I am confused with the learning spell. I can only learn at index 0?

NinjaDoggy: basically it goes like this:

NinjaDoggy: learning a spell costs tier-0 ingredients equal to the index

NinjaDoggy: so index 0 is free, index 1 costs 1 etc

NinjaDoggy: and the tier-0 ingredient is then placed onto the spells leading up to it

NinjaDoggy: and that's the tax

NinjaDoggy: after you learn a spell, you gain tier-0s equal to the tax

miszu: sometimes I see like 2-3 tier0 into one square

miszu: is that normal?