« first day    last day (47 days later) » 

12:00 AM
Was there mention earlier of not telling the player the task, but only telling the bot?
So the bot has to tailor a solution each run
 
yes, that was Nathan's suggestion. the player knows there are a handful of operations to perform, but only the bot is told how many of each.
 
I like that idea. Changing the balance of the constraints. Would it be too excluding?
(I mean excluding of people like me who don't have insight into data structures...)
 
@trichoplax no, nothing is preventing people from ignoring that information and using the same data structure for all test cases
but I think if we just picked a task with uncommon large-scale restructuring operations that would already be enough to thwart obvious default choices for data structures
 
Cool - so we'd get gradually improving solutions
Yes uncommon sounds good. So it's not just rewriting something there's already a library for
 
like the case of the rubiks cube with the rotations. or we were talking lego earlier... where the operations are joining, separating and rotating blocks, as well as querying the position of lego pieces in space.
although to simplify, Nathan suggested just having unit cubes that can attach on all sides
 
12:04 AM
I read back over the transcript but I couldn't remember exactly who said what
I prefer the idea of something that has some intuitive use like the rubiks cube, rather than making up operations for the sake of it, like "swap all the items with prime number indices". I think being able to picture a purpose might make people more likely to read through long enough to understand the idea.
 
yeah, I'd prefer something spatial as well
 
I have a 3d hilbert curve approximation in my head now, but I have no idea whether operations on that would be relevant
 
i'm back!
 
lord save us.
 
@MartinBüttner what?
 
12:10 AM
@trichoplax lol, neither do I
 
What if you had to rotate an axbxc subcube of an mxnxo hilbert curve and make it all link up in the right order again?
 
@TAbraham I was joking, interpreting your "I'm back!" as a villains "catch phrase" or something.
 
um.. @trichoplax i think it's a little too complicated for some ... don't u think?
 
I don't know if that's too far away from data structures though - unless there's some justification for storing things in a hilbert curve
 
@MartinBüttner lol.. :)
 
12:12 AM
@TAbraham I don't know - I'm out of my depth here so just throwing out guesses...
 
@trichoplax at least it is a little too complicated for me... I like @Rainbolt 's idea... what happened to @Sp3000 ? Why isn't he here? isn't this his idea? u know when he'll come back?
 
I know that a hilbert curve looks complicated but can be addressed quite simply, so I couldn't guess whether my suggestion is too complicated or too simple. If there turns out to be a simple approach then once someone finds it all the subsequent solutions will just be variants of the same thing
 
@TAbraham people sleep. (and have lives.)
 
Well, I sleep... :)
 
@MartinBüttner of course.. but do you know when he's usually up?
 
12:14 AM
he is now
(in the nineteenth byte)
 
then he should come here.. He will know more about his idea than any of us do...
 
12:29 AM
In a KotH, how could data structures be advantageous? I know that's horribly broad, just fishing for ideas
 
@trichoplax I liked Rainbolt's..
 
@TAbraham Which one?
The bots being nodes in a network?
That made me think of distributed storage
 
1 hour ago, by Rainbolt
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.
@trichoplax yeah...
 
Yeah that was interesting. I'm wondering how much would need to be imposed as rules, and how much could be self regulating. For example, is a bot simply forbidden from sending false data, or would it be set up in such a way that bots are free to send false data but will end up being cut off by the other bots?
 
@trichoplax I think in the original idea, bots didn't have any control over the actual data, they only decided about how to route it.
anyway, I'm off tonight...
 
12:33 AM
@MartinBüttner bye... nice seeing you...
 
Me too. Hopefully we'll settle on something tomorrow
 
@trichoplax will u be available 4 a few minutes?
wanted to talk about some stuff...
 
Sure a few minutes will be fine
Data structure stuff or genetic algorithms stuff?
 
@trichoplax genetic algorithims and neural networks...
want to talk in the nineteenth byte?
 
the GA room makes sense...
 
12:36 AM
@trichoplax ok.. typing up my question... see you there!
 
 
3 hours later…
3:14 AM
Well just to clarify, the reason I suggested data structures was because we don't see much them on PPCG
The initial types of ideas I had were things like "Print out all the nodes for the suffix tree of this string" or "Implement this data structure having these complexities for operations"
But, of course, I'm not expecting that to be the sort of thing we pick at the end
(currently reading what's been posted so far)
 
So, what do u think?
 
Thinking about the Lego one currently, and how I would write an operation that does "rotate this substructure about this point by 90 degrees"
I think the idea of a data structures KotH was also pretty cool, and your submission actually being part of a large structure rather than just implementing one
I wonder if we can do something like have a controller which respond to queries by the data structure. That could be a way around measuring efficiency, so that languages aren't disadvantaged as they would be if we used clock time
e.g. the data structure needs to go through the controller to compare two elements, and the controller returns the result
 
4:15 AM
@Sp3000 which lego idea?
 
@TAbraham Starting here
 
@Sp3000 great idea!
 
Yeah, rotating a substructure's the operation that's got me interested currently
But it needs a good winning criteria
 
hm, now I realize I was the only one thinking about a structure actually made of data
 
@Sp3000 wait, what's the input, output, and submission supposed to be or do?
 
4:22 AM
I was imagining the lego bricks had pieces of data written on them
and you try to organize them somehow
 
@feersum what was @NathanMerrill then? isn't that what u said?
 
that's what I said. not sure what others were talking about
 
Input would be operations to perform, like inserts/rotates/removals, output would be results to queries if any were performed (e.g. count how many blocks in this area/get sizes of neighbouring blocks/whatever) and submission supposed to do would be maintaining the structure of blocks in a hopefully efficient way
... was the impression I got from reading
 
@Sp3000 thanks...
 
I thought it would be fun to have the insertion operation be placing a lego brick with the data that is being inserted written on it
and then efficiency of your structure is amount of times you have to connect legos
for some operations
 
4:29 AM
Is that what you meant by the linked list pic?
From any block you can only traverse to blocks you're connected to?
 
I don't have a real specific idea of what exactly the rules could be
Now I'm trying to make a binary tree and it's not easy. Maybe that would be a good challenge;)
 
@Sp3000 I agree..
@feersum but it's a common data structure, isn't it?
 
I'm actually thinking about trees right now, and back on the "controller is the middle man between you and the data" idea
 
I'm talking about a b tree made of legos
 
I wonder if it's possible to have a controller which has operations for making a tree, like add_node() or swap_nodes() or something, and the submission needs to build a tree given the allowed operations
 
4:37 AM
if you have all the same shape of lego, they block each other
 
@feersum that's a good idea...
 
if anyone else wants to try the lego simulator, it's buildwithchrome.com/builder#
 
"It appears that the experiment is not supported on your hardware." :(
 
@feersum already tried that... it's good.. what about them?
@Sp3000 u need chrome I think...
 
I'm on Chrome :'(
 
4:39 AM
@Sp3000 windows?
 
ah well surely there are other lego simulators
 
Yeah
 
4:57 AM
@Sp3000 what other ideas have been proposed?
 
Well there's Rainbolt's idea which I think you've seen. I like that one - it'd work well for another fortnight even if it doesn't make it for this one
If we're worried about hitting common data structures, I think someone briefly mentioned something which sounded like an online structure, queries coming in at any time
Those should be less studied than their offline counterparts, I'd think
(depending on the problem, of course)
 
@Sp3000 yeah it's good...
@Sp3000 so out of these ideas, do we vote or something?
 
From the looks of it, you were involved with Lab Rat - do you know what happened then? (was busy for that time period, so I missed out on the fun)
For audio processing, I just remember a lot of ideas being thrown around until one that sounded reasonable, then Martin just wrote the proposal
 
@Sp3000 I only came after the idea was decided...
 
Ah ok. Well I don't think there's a formal vote per se, but you can express your interest in one particular idea over another
 
5:16 AM
@Sp3000 when will a sandbox question be posted?
 
Judging from the previous challenges, probably around 2-3 days. Eagerly awaiting the challenge or something? :)
 
@Sp3000 yeah.. want to work on it soon..
 
If everybody was online right now it'd go faster, but between timezones and it being the weekend it tends to take a few days
Hmm so on the build-your-own-tree idea, what if you get X points per round, and a round consists of a number of operations (query/inserts/etc). Every comparison, traversal from node to node, adding/swapping nodes, etc takes points, and your score at the end of the round is the number of points you have left over
(really rough idea there)
 
with legos or something else?
 
Hopefully striking some sort of balance between inserting naively, getting lots of early points but being unable to perform queries later due to not enough points, or balancing the tree early on so you can keep progressing on longer
Not legos, just a different idea tangentially inspired by Rainbolt's
 
5:31 AM
isn't this totally standard stuff though?
in every textbook?
 
Well tree operations are standard, but I thought it'd be interesting if the number of operations you're allowed to perform is limited
Like, you might not have enough points in one round to fully balance the tree
 
5:48 AM
@Sp3000 didn't understand...
 
Basically I'm trying to work out a way that lets "most efficient" be the winning criterion without resorting to measuring how long a program runs or something, as I was wondering whether having predefined operations with costs would help
e.g. when something is inserted you only know it's data #2, but you don't know how it compares to data #0 and data#1. You can call the compare() function of the controller to find out, but every time you do so costs 1 point.
Too weird?
 
@Sp3000 how would "how lonq program runs" be a good winning cirteria?
@Sp3000 i don't think so..
 
That's how many fastest-algorithm challenges are scored (by empirical running time), but I'd prefer to avoid that if possible so that it's fairer between different languages
 
@Sp3000 i agree..
 
 
1 hour later…
7:08 AM
@Sp3000 I like that idea. We would have to make it sufficiently complex but it seems like a very interesting challenge.
 
 
7 hours later…
2:17 PM
There's a lot of focus on a live contest (KotH or interaction with a controller), which I love the idea of. Before we settle on something, could we discuss other options too? I'd like to hear ideas that don't require interaction, so we have a wider selection to choose from.
Rainbolt pointed out that restricting memory can just end up with a compression challenge, which isn't what we're going for here. What types of restriction would lead to interesting data structure without veering towards compression?
 
Data accesses? Like reading the input exactly once (for some problems)
I also mentioned online algorithms vs offline algorithms, if you can call that a restriction
Hm...
 
3:01 PM
how is the data structure challenge idea going?
or "abstract data type" :)
 
3:41 PM
@Sp3000 Online meaning that new data is still flowing in during the challenge?
 
And queries can come in at any time, yeah
The classic example is online median - at any point, you need to be able to return the median of the data so far in O(1)
 
3:54 PM
Ah. Interesting
I like the idea of something like that. So we don't impose a data structure - people try to come up with the one(s) that works best
 
The only problem with that though is, how to define "best" ;)
 
Hmm yes
 
@Lembik Just people throwing ideas around currently :)
 
I guess in a KotH you could score a point each time you are the first to respond, so you have to compromise and choose which query types to focus more or less on
 
"First to respond", eh...
 
3:58 PM
(correctly...)
Or for independent answers that are scored one at a time, the average/best/worst long term performance could be used
 
Interesting, hm...
 
I really think an interesting data structure are ones with an different type of data
That's why rubik's cube and legos are interesting
because I can do large scale rotation and query the data at a specific point
but if we want a KoTH, then I think that "every bot is a node" is what you want
but I imagine that there are other data structures with interesting rotations
 
Can you think of a way to make operations on a 3d hilbert curve approximation into a challenge?
 
I have no idea what that is
 
A Hilbert curve (also known as a Hilbert space-filling curve) is a continuous fractal space-filling curve first described by the German mathematician David Hilbert in 1891, as a variant of the space-filling Peano curves discovered by Giuseppe Peano in 1890. Because it is space-filling, its Hausdorff dimension is (precisely, its image is the unit square, whose dimension is 2 in any definition of dimension; its graph is a compact set homeomorphic to the closed unit interval, with Hausdorff dimension 2). is the th approximation to the limiting curve. The Euclidean length of is , i.e., it grows...
 
4:11 PM
already there :P
 
lol
 
although its coode that the image is animated in chat
 
Yes I wasn't expecting that...
It allows you to order the squares in a grid or the cubes in a lattice so that adjacent items are also spatially adjacent
 
heh.
what about a maze-based problem where you are required to place walls
but you try to place the walls in the least restrictive place
has nothing to do with data structures
 
Sounds interesting so it could be queued up for a later fortnight...
 
4:19 PM
Group theory is probably a good location to look for data structure ideas
would it be interesting to have data that is unreliable?
so, I map X to Y with 90% reliability
but A to B is only 25%
and A to C is 25%
but if I then map A to B again with 25%, it now has 43.75%
(25% + 25% - 25%^2)
I dunno
Ok, what about this:
We construct graphs
and then perform operations on graphs
Operations on graphs produce new graphs from old ones. They may be separated into the following major categories. == Unary operations == Unary operations create a new graph from the old one. === Elementary operations === These are sometimes called "editing operations" on graphs. They create a new graph from the original one by a simple, local change, such as addition or deletion of a vertex or an edge, merging and splitting of vertices, edge contraction, etc. === Advanced operations === Line graph Dual graph Complement graph Graph minor Power of graph: The k-th power Gk of a graph G i...
the winner is the person who can do all of the operations in the fewest number of copies/moves/whatever
 
5:24 PM
Would it be acceptable to use a meta question to post the various suggestions for discussion and voting? It seems anyone joining the conversation at this point is going to have too much reading back to do before indicating what they prefer.
 
5:35 PM
@trichoplax seems like a good idea.. or in general it seems we need a system to discuss details of fortnightly challenges
 
Yes either meta or a pinned document so everyone can chip in
 
a sandbox post would probably be enough for now
I wanted to let @Sp3000 post it, but if anyone else wants to, feel free to do so.
let me know and I'll pin it
 
6:18 PM
@MartinBüttner What are we posting?
 
a sandbox post to collect the ideas in one place
 
Ah k, I didn't know you guys did that for GA :)
 
6:37 PM
Posted - feel free to ping/edit the post if I've missed anything
 
 
1 hour later…
8:03 PM
so, what's happening?
 
8:38 PM
@Sp3000 Wow. You condensed this entire chat into one page...
 
9:03 PM
@trichoplax please join discussion in Nineteenth Byte...
 
@TAbraham whichever room you ping me from I will still get it (provided I'm in the room)
 
9:41 PM
@trichoplax provided you have been in the room in the last two weeks or so ;)
 
In that case I'll get a notification in the list but I don't think I get an audible warning unless I have the room open in a tab. Haven't tested that though...
Actually, ping me here now (I'm about the close the tab)
 
@trichoplax ping
 
@MartinBüttner lol..
 
closing the tab won't make you leave the room so I think the other room should show the ping immediately
I think it's only when you actually leave the room that the notification will be delayed by some 15 minutes
 
Wow the ping showed up in the side bar of the Nineteenth Byte tab, and I got an audible ping :)
 
9:55 PM
let's work!
 
hi
 
@Lembik hi..
 
actually the lego challenge looks like something I vaguely know about. You have a 3d snake and you want to fold it up into a cube.
there are a number of variants one can imagine of course
like difficult starting positions
it's not so simple, you have to make sure the snake doesn't hit itself to start with
or you start in a cube shape (all wrapped up) and you the input tells you which shape you should end up in
and you want to minimize the maximum diameter you ever make as well as minimizing the number of moves
 
@Lembik cool, I like that idea too..
 
"Print all nodes in a compressed suffix tree" seems a little boring on its own.. although I love suffix trees :)
we could also have space*time competitions.. so for example implement a data structure that supports "Range minimum queries" where the score is the space you use in bits * the average time over 100,000 queries
we can define space I think by insisting that the whole data structure is stored in an array of integers, which almost all languages should support
just some thoughts :)
(the snake can be 2d, it's still not that simple)
 
10:02 PM
@Lembik thnx..
 
(but visualising the 3d snake moving would be fun)
@TAbraham is there a general consensus forming?
(the snake challenge can be made even more difficult if one ones .. you can insist that it rests on a surface and then you have to worry about gravity.. :)... might be too hard)
 
@Lembik not really..
@Lembik interesting idea..
 
@TAbraham I think this whole idea is great by the way
I mean the fortnightly challenges
 
@Lembik I agree... I helped w/ the previous one, it was a good experience...
 
@TAbraham the genetic algorithms one?
 
10:09 PM
@Lembik yeah..
 
it has been a massive success!
well done :)
 
@Lembik yeah..
@Lembik thanks.. also thank martin, trichoplax, nathan, feersum, rainbolt, and more.. they all helped! I played a minor role actually, I was a tester..
 
it is really great that so many people contributed as well
many SE sites really don't work
 
@Lembik I agree..
 
even cs.stackexchange.com is not really a massive success
one of the issues I have noticed is attitude
when a site has people who are excited to contribute it really helps... when it is full of people getting annoyed about the questions and questioners.. not so much
on cs.stackexchange you just get the feeling that the answerers think they are better people than the questioners :)
which ain't good
this was a roundabout way of saying codegolf.se rocks :)
 

« first day    last day (47 days later) »