When I understand why you think that challenge has a data structure theme, I will understand the theme of this week the way you want me to understand it.
when asked whether your network idea was about data structures, I asked, because there was no data to be modelled (well, there was, but my question for whether there was, was answered with "no there isn't")
I stopped participating earlier because both you and feersum seem to have an idea of what a "data structure challenge" is despite my repeated attempt to explain that a data structure is a tool and not a challenge.
the second you guys clarified that bots do get information about the network, I didn't push it any further, because obviously you need a data structure to model that network
(although that still doesn't mean that the emphasis of the challenge is necessarily on designing a good data structure, which would be nice for the given theme)
hm, I don't know... I really don't see a problem with a challenge along the lines of "here is a bunch of data you can model however you want. the following operations have to be performed on the data. you should optimise your implementation towards goals X, Y, Z."
whether this task is explicit or implicitly wrapped in koth and some interesting story seems irrelevant
of course it does... do you insert more often than you remove? do access more often than you insert? are there any common restructuring operations you need to perform all the time?
you can't solve all of these with a single data structure given a goal
but my question was why the goals have to be performance goals. why wouldn't golfing also determine what kind of data structure you use? surely, some data structures will allow for shorter code than others.
and I think this could actually be more interesting, because the well-known structures aren't optimised towards that goal.
The amount of space your program takes up is a real issue. I only listed two. I didn't say my list was all inclusive.
My point was that it's the goal that drives what structure you use. Not the task.
You need to access data. Great, I'll just store it in an array. You need to access data quickly. Ok, I'll hashmap it. You need to access data and you are limited on space. Suddenly a hashmap is off limits.
But how does this not depend on the task? Do I want to model something that resembles a sparse graph? Adjacency list. Do I want to model something that resembles a dense graph? Adjacency matrix. Do I not care about the graph at large but only traverse neighbours locally? Network of linked nodes.
My main point is that everyone should stop shooting down ideas with "What does this have to do with data structures." You can take literally any task that involves data retrieval, slap a performance criteria on it an suddenly everyone is using a data structure.
Let the idea play out, and then decide how to encourage the use of data structures.
@MartinBüttner What motivates you to model those things with those structures? Literally nothing is driving you to do these things. You just decided you were going to.
@Rainbolt I'd argue that "given n print the numbers from 1 to n" cannot be turned into a data structure challenge, because there is no data to be modelled in a data structure.
@Rainbolt I never claimed that different goals wouldn't require different structures.
I claim that the task will also determine the data structure.
okay, let's say we have a time and a size constraint
you're given a sparse graph and you want to perform some operations on it. you'll probably want an O(E) space solution, because otherwise you waste loads of space, which won't be worth the time savings, so you use an adjacency list. now you're given a dense graph. so E ~ O(V^2) anyway. so you might as well switch to an adjacency matrix, because it won't affect storage much, but greatly improve time complexity of accesses.
wtf, dude... you're really ignoring what I'm saying. yes, the goals are relevant in determining the structure. I've never said the goals are irrelevant. what I'm saying is the task also matters (which you keep disagreeing with and then arguing that the goals are important). I don't know if you deliberately stopped reading my last message after the first half... I've listed a different use case, with the same goals, where a different data structure would be beneficial.
You listed a different use case with different goals. The latter use case had something about complexity of accesses. If you want to compare apples and oranges to prove that apples are like oranges then go ahead.
@Rainbolt You didn't refute half of what I said. You disagreed with me, then (apparently as an argument) used half of what I said for an entirely different point (which I said multiple times I agreed with), and ignored the other half. But if you'll just claim that any relevant part of the task is part of the goal, then I can't argue with that, and we've been agreeing all along. brilliant! :)
@Rainbolt btw, it is ridiculous that you keep getting back to this point after any unrelated argument we have. we've established at least twice now, that this is not an issue any more.
there is none yet. a few ideas have been thrown around though, so feel free to read through the transcript (the earlier parts were arguably more productive than the latter)
I can only summarize the one idea that I was excited about. I'll let others cover the other ideas
We have a Controller than needs to send and receive messages through a network. Submissions make up the nodes in that network. At the beginning, they know only of themselves and their immediate neighbors. As the game progresses, they can replace their neighbors. The goal is that when the Controller asks you for something, you retrieve it efficiently.
I think efficiency was determined by number of hops through the network. I don't know that that was settled.
I also may have embellished a lot. Take my recollection with a grain of salt lol
The idea was that participants would maintain a routing table or some other data structure in order to win. However, the ability to replace your neighbors and forge new connections might prevent people from blindly copy pasting online code for routing tables (which is a good thing).
@Rainbolt Okay, I'm going to try to ask you a question, and please don't take it the wrong way, I'm genuinely interested, because the problem sounds interesting: is there an incentive to make the data structure representing the network particularly sophisticated? i.e. will give a good choice of data structure with a mediocre algorithm an advantage over a submission with a good algorithm and a mediocre data structure?
@Rainbolt Yes you're right. I've been trying to think of something along those lines that would be about efficient arrangement of data rather than compression, but I don't think the two can be easily separated so I'm back to square one...
In the real world, people use data structures. They obviously have reasons for this. Are any of those reasons likely to make up part of an interesting challenge?
Are there any settings for which the majority of well studied data structures would be unsuitable, so that something novel would be rewarded?