« first day (1300 days earlier)      last day (3543 days later) » 

8:02 PM
@Geobits added an example
 
@NathanMerrill Am I right to assume that Copy 15 (A) won't do anything if there is no bot directly in front of you?
 
And that your example will move once only forever, and just keep trying to flag opponents that happen to run in front of it?
nvm, it acts, then increments, so the move doesn't get skipped.
and it doesn't flag them, just adds 15 to their A variable?
 
or should it be Copy [15] (A)?
 
8:11 PM
oh, you are right
it should be [15] (A)
 
And the Flag command is a nop? You just count up all the flags over all living bots?
 
half-way to the epic badge! :)
 
as of right now, there's no such thing as a dead bot
 
Right. What happens if instead of a Flag I fill their bot with invalid commands?
 
8:14 PM
Define invalid
if its not a command, your bot won't compile
 
ASDF
Ok, got it
I wasn't sure if they had to "compile", or were interpreted line by line.
If line by line, you could loop like you're doing and place junk on a further line.
 
I'll be compiling it for faster speed
There's quite a few things interesting things you can do.
oh!
I forgot one other critical part
you are able to modify the other bot's variables
so [A] refers to your opponent's A variable
while, [(A)] refers to the Ath line of your opponent's code
bah, I got those backwards
 
That makes more sense.
Ok, this seems interesting now :D
 
Wait. If [A] is my A'th line and (A) is the opponent's A variable...
 
8:28 PM
I said it was backwards
I'm adding examples
wait a sec
 
Haha. Testing wrote a bug like "I didn't get a validation message when I clicked "Remove selected". So I asked them "Did you select anything?" They said no, but it's still a bug
So I disabled the button until an element is selected with a comment \\ Can't click me now!
So they wrote a NEW bug about how they are unable to click on the button
And for the first time ever, I was allowed to mark the bug "As Designed"
This is really unhealthy interaction between me and the test team :-/
Anyone have a suggestion for how I could tell them that I think their bugs are silly? I'm not the best wordsmith in the world.
 
I think it's actually a good thing... it means there aren't enough actual/serious bugs to keep them occupied.
(If there are, though, they're not doing their job very well)
 
Well, we gets bugs like "Can't install the product" followed by "Can't reach Page A" followed by "Can't reach any of the pages"
They really need an overhaul
 
okay, that is ridiculous
that sounds like someone really needed to vent their frustration actually :D
 
haha
 
8:41 PM
The first situation sounds like bad communication
 
Maybe I should just start asking for requirements. If it isn't written in the requirements, then it isn't a requirement.
 
I'm assuming it was different people who wrote the bugs
 
In situation 2, yes.
 
You really want to make whoever writes the requirements to list the validation messages required?
 
I can't parse that sentence
 
8:43 PM
Remove the second "to" and you'll get it
 
no, I needed to change "write" to "writes"
 
"I want to make you to eat." doesn't make any sense
"I want to make you eat." makes sense
You need to drop the second "to"
Lol ok sidetracked
 
ah, you may be write
it still sounds worse that way IMO
 
Anyway, I don't want requirements like that. Disabling the button was a design decision. The button says "Remove Selected". Why on earth would you want to click it without selecting anything?
And so rather than throwing my hands up in the air and asking why someone would do something like that, I took the option away from them.
But testing not only wants to be able to click that button, they want a message explaining why clicking it doesn't work
If my bug gets rejected again, I'll do it their way, but I won't be happy about it :-/
Not because I hate the extra work, but because I think it degrades the product
 
-2
Q: delete this delete this

SurveySondelete this delete this delete this

 
8:49 PM
Maybe I'm the one that needed to vent. I feel much better now :)
 
Wheres a @Doorknob when you need one?
 
I had to create a custom close reason. It's clear what he is asking lol.
It can't be a duplicate (for very long anyway)
Oh well I guess the other close votes could have been before the edit lol.
I wish editing the question refreshed your close vote.
 
Okay, I can now render all the necessary prototiles for my aperiodic tiling.
Now I need to implement the actual tiling :D
 
0
Q: Refresh close votes when a question is edited

RainboltI think that close votes should be "refreshed" after a question is edited, similar to how up and down votes are "unlocked" after a post is edited. More specifically, I want the option to reassign my close vote once each time the post is edited. Consider the following scenarios: A question is T...

Make it happen!
I can't tell you how many times I have lost my close vote on a question that entered an edit war and finally settled on crap.
 
+1 from me!
 
9:02 PM
Indeed
 
I can't believe it's not a duplicate though
ah, there are the duplicates :D
@Rainbolt wow that random guy seems to be really annoyed by your post :D
 
I guess so
He search for two keywords then pasted everything he found
 
Well they are all relevant to your first example.
I guess it would help your question if your focused on the second example.
The first one is just latent OCD.
The second one is a real problem.
especially here on PPCG.
 
The effect of the first one could be complaints in chat like "Why did you close my code trolling question as Too Broad if you really meant [some other reason]."
 
I thought the purpose of a single close/reopen vote (could be wrong) was to prevent, or at least lessen, close/reopen wars.
 
9:13 PM
If I could have changed my reason, I wouldn't have to appear as though i made it up last second. This actually happened.
 
(yay I've got my bounty privilege on meta.SE back, I can throw it out the window again! :D)
@Rainbolt I tend to clarify this in a comment.
 
Does meta bounty just go to meta rep?
 
@githubphagocyte meta.SE has its own rep like any other SE site
and you can't set bounties on site-specific metas
 
maybe bounty on meta.SE doesn't provoke as much response because people value real internet points more than meta internet points
 
lol
you'd think that a bounty on a feature request on meta.SE would provoke a mod/dev to respond
especially if that feature request has >40 upvotes and not a single answer
(and only one comment which wasn't official information either)
 
9:20 PM
@MartinBüttner The only bountied feature-req I see on meta with 40+ votes has two mod responses. I assume you're talking about something else?
 
@Geobits it's already expired
43
Q: Indicate revisions in vote history

Ben BrockaI'm against all the "notify me when a post I downvoted is updated" requests, but I had an idea that might be useful while unobtrusive. How about quietly showing how many revisions/edits were made between your downvote and now? It could also "clear" when you recheck the post, so they don't stay m...

@Rainbolt I can't understand how Shadow Wizard has trouble understanding you :D
 
Personally I think that would help only a small minority of users, at the expense of fetching the revision history for every question everyone's downvoted on every profile load. But, I'm no mod/dev :D
(and check when you visited it last so it knows to clear the flags)
 
@Geobits the functionality basically exists for favourited questions. I can't believe it would be so hard to activate it for downvoted posts as well.
 
The answer's easy then - just favourite everything you downvote...
 
I thought favorites was a simple boolean changed/notchanged. It doesn't have to say "3 revisions", "50% edited", whatever. Also, I imagine most people DV more than favorite.
 
9:26 PM
@Geobits yes on all counts - I just couldn't resist the absurdity :)
 
@Geobits Couldn't it just clear the flags for a mere 5 users, instead of loading every revision history ever?
 
I'm not saying it's a terrible idea, but maybe a dedicated page for that would be better. Something under 'review', maybe.
 
@MartinBüttner sigh he has given up without conceding. I hate it when people do that. Now I'm left with a polluted comments section.
 
If the site won't support it inately, is it something someone could write a data script for to flash up in conjunction with the rep bar dropping down?
 
@MartinBüttner I thought about this while waiting for some friends to arrive at a bar, and I had come to a similar idea. I was going to propose that it should be able to test primality and (to avoid people claiming the tool factor as a programming language) perform addition.
 
9:28 PM
@Rainbolt is it bad enough for a mod to clear it for you?
 
@Geobits I think the number of posts affected by favourites would be similar, because it catches all the answers along with the question.
 
@MartinBüttner Oh, you pulled his trigger again. ShadowWizard isn't getting off that easy!
 
@Rainbolt certainly not
 
@githubphagocyte I don't know. Perhaps I should have offered to move the discussion to a chatroom so we can talk about the difference between "retract" and "reassign"
 
@Rainbolt you can't always tell which ones are going to drag on until they've already dragged on...
 
9:30 PM
@MartinBüttner To be fair, if you squashed all of those other questions together, mine is a duplicate. But as it stands, the pieces are scattered. Mine is the only whole question with all the pieces I wanted to be present.
 
@PeterTaylor Something like that sounds like a good test. Although I'd probably allow for any calculation to be a test, because a language might just have boolean output.
 
But now it has this ugly headline and polluted comments so I'll just give up on it.
 
@Rainbolt close them all as duplicates of yours!
 
@Rainbolt @MartinBüttner I don't know exactly what the behind-the-scenes is for edits, but it sounds likely it could be done that way.
 
I think it would be difficult to think of any new question that wasn't made up largely of things that have been asked before. Otherwise you'd have to avoid every topic ever asked about.
 
9:31 PM
@PeterTaylor The real issue mentioned by Doorknob remains though. You could still create a language that is cat for every invalid program and still have your 0/1 byte quine.
 
@MartinBüttner I was going to handle that by saying that it can implement decision versions. That's pretty standard in complexity theory.
 
@PeterTaylor Yeah exactly
We could even combine our ideas and make a list of several simple problems which are reasonably distinct and say "solve any two of these"
 
@MartinBüttner Maybe we need to add a "standard loophole" for quines and say that unless the question explicitly says otherwise it should be a true quine (i.e. one which actually composes a string). A fairly simple test would eliminate most cheats: if I can remove a character and it still "quines" then I repeat; if I get down to the empty program, it's disqualified.
I can't think of any case which the primality test test doesn't discriminate other than factor
 
Hm yeah you're probably right
@Rainbolt did "random" just chain random words together?
I have no idea what he's saying
 
What's to stop people from editing/reclosing something they didn't want to see reopened?
 
9:39 PM
Hm... maybe only OP edits refresh?
 
Or how does the up/down vote refresh work when edited? Can I edit something and then change my vote?
I've never thought of that before, but might try it out later.
 
@Geobits Even if you can't it's a different situation for close votes. You could get together with 5 others - one edits, the others close again.
 
Oh, I know. Just curious now.
 
Does this just need more background or is it actually helplessly underspecified?
0
Q: Write a functioning bare-bones IRCd

Sven SlootwegA bit of an unusual one, but hey, why not? :) The objective: Write a functioning IRCd in your language of choice that provides barebones functionality, in as few characters as possible. As long as it fulfills the criteria below, it does not have to fully comply with the IRC RFCs (this would make...

 
I don't know any of the background but I'm guessing that "barebones functionality, to keep the challenge short and fun" is a little optimistic about how short it will be
 
9:51 PM
lol yeah
 
@MartinBüttner I don't either...
 
10:07 PM
I find it fascinating that my most recent KoTH has given me twice the reputation my other one gave me (at the same question-oldness), simply because I provided 4 of my own bots, which have subsequently been upvoted
 
0
A: What are programming languages?

Peter TaylorMy previous answer was criticised for not drawing a line in a sand, so following some discussion on chat I propose a line. Executive Summary A purported programming language should be accepted as such if and only if it is capable of addition of natural numbers and primality testing of natural n...

 
@MartinBüttner just spent a good hour or so thinking my program was broken because I was replacing the top-left / with a D rather than a C, causing the 1 line to be 1 frame behind, breaking all my comparisons - new method seems to be working though
 
@PeterTaylor Looks great. Just one thing. For the purposes of this site, I think that a programming language should have an implementation.
If you agree, you might want to add it. If not, I'm happy to discuss it. :)
@VisualMelon I hate when that happens :D
 
I'm sure I've never done that before, implies I've never properly tested anything that requires the powerline
 
Let me know when you've got the new version up, so I can rerun the tests
 
10:15 PM
do you want a preview now
or would rather I got on an packaged it up for the answer to the question
 
sure, take your time
 
will do
 
(that is no, I don't need a preview now ;))
 
understood ;)
 
@MartinBüttner That gets a bit tricky when you're talking about automata. E.g. would that exclude this answer?
 
10:20 PM
4 way multiplexer is only 691 * 245 now (not tested)
 
If you accept programs in languages that are not implemented, would that force acceptance of quantum algorithms?
 
@PeterTaylor I'd expect interpreters to exist for the more popular automata models
That being said, I think if there is no implementation, excluding it seems like a reasonable decision, since it's not easily testable otherwise.
@VisualMelon wow
@githubphagocyte Good point. I think it would.
 
Sounds like you were leaning away from accepting non-implemented languages anyway, but I thought that might be a reasonably large factor to help decide
 
@githubphagocyte I don't think so. They're all probabilistic, aren't they?
 
@PeterTaylor I don't have any knowledge of them, but I'm guessing they would give an advantage most question posters wouldn't have in mind
@PeterTaylor I had a vague impression of them being equivalent to massively parallel, since unlike a monte carlo approach they would sample the entire space. I don't have the background to guess how accurate that impression is though.
 
10:28 PM
@PeterTaylor Not at all, e.g. Deutsch-Jozsa is non-probabilistic.
 
I mean a sample including the entire space, rather than just sampling from the entire space
 
@Howard Interesting. Thanks.
 
3 bit adder is taking some time...
 
I think that since the question is about defining what a PL is, having an implementation or not is borderline off-topic, so I've added a link in the Observations sections to a more relevant meta question.
 
@PeterTaylor I think it's quite relevant here. This is not an academic/philosophic discussion about what is a programming language in general. We're trying to define rules for what makes a valid programming language in the context of PPCG answers.
 
10:47 PM
aaand the 3 bit multiplier will take even longer
 
I can see the issue spinning off a separate argument about non-free implementations etc. If you feel strongly about it, you can post your own answer, but I think it would be better as a separate question with links either way as "Related question".
 
on the side topic of freeness, do people consider C# >version2 free these days?
 
@VisualMelon Mono?
 
I think Mono implements the language of v4, even though it doesn't fully implement the libraries.
 
I'll take that as an affirmative ;)
 
10:49 PM
@PeterTaylor Hm yeah, that's a good point. I'm fine with the comment you have in there now. It kinda implies that the language should be testable.
 
I know people who would shun C# because it hasn't been an open spec for a few versions (i.e. not IEw/e it is edition)
and I know people who really hate mono
 
Free and free is nice but I think as long as a reasonable number of people are able to test I wouldn't insist on it for all questions. I might insist on it for my own question, but most strongly for a KotH where I have to be able to run everything...
 
Yes. I am not impressed with the person who answered the stock trading KotH in Fortran for flavour reasons and then kept it in Fortran even after he had to wrap it in Python in order to meet the output spec.
 
FORTRAN runs everywhere, no?
 
@PeterTaylor I'm trying to implement this tiling right now. I think decomposition is easiest, because that's also how the tiling is defined (that picture there is a single decomposition step of an upwards-pointing pentagram). Now I wonder how I can best implement the decomposition. I can't just do it tile-by-tile because the connections between neighbours need to be patched up as well.
 
10:53 PM
Possibly, but how many people do you know who already have it installed?
 
good point, to answer your question only 1 (not including people on PPCG (and thus myself))
 
yeah, I really wish we had a dedicated server to run KoTHs on
it would make things much simpler
 
@MartinBüttner, the way I handled that for the Labyrinth tiling was to have maps both ways between a tile and its vertices and then to use the vertices to find the neighbours. Provided you're careful about how you do the subdivision you can ensure that each vertex is only calculated once and so you don't risk rounding errors breaking the identification.
 
did someone say pi rack? :D
 
(I say subdivision: I actually did it by inflation and then subdivision).
 
10:57 PM
@MartinBüttner lol I was away from the window for a moment - I'm glad you were around to put my suggestion forward again ;)
 
@PeterTaylor well yes, I'll basically do that, but I've got limited screen space so I'll just start with a tile filling all of it and then subdivide
@PeterTaylor Well keeping track of the neighbours isn't really a problem I think. It's more like, having the full grid, what's the cleanest way to implement the subdivision, since I can't just map big tiles 1:n to new tiles. I'll be missing some tiles that arise between previously adjacent tiles, as well as their new adjacency information.
 
I wanted on-demand expansion to avoid the risk of a glider hitting the edge of the world and dying before I detected it. But given how few tilings seem to have easy-to-find gliders, I can understand if that's not something you're worried about.
Oh, so your concern is failing to identify all of the faces?
 
Well, look at that picture I sent you. Say I subdivide the large pentagrams again (leaving the small ones intact). Looking at the middle and the lower left one. Each gets replaced by 6 pentagrams one size smaller, and 5 pentagrams two sizes smaller, as well as 5 rhombs. But there will also appear an octagon and two rhombs between them which I can't assign to either one.
(here is a picture two iterations ahead, where the small pentagrams have been divided as well: geometricolor.files.wordpress.com/2012/08/ite2.jpg)
 
Right. If you're doing one tiling generation phase by subdivision at the start then perhaps the solution is to split it into two phases.
Phase 1: do the subdivision and generate the edges of the tiling.
Phase 2: join the edges together into faces.
In phase 1 you set up a map from edges to vertices.
 
Currently my data structure doesn't even have a concept of edges or vertices.
It's just tiles and their neighbours.
Then I can just associate some geometry with each tile and render them all. But the GoL code doesn't need to know about edges and vertices. It only cares about neighbours.
 
11:07 PM
Then maybe you can tackle it with en.wikipedia.org/wiki/Disjoint-set_data_structure ?
 
But maybe that's impractical here?
 
love disjoint sets
 
I'm off to bed, anyway. I'll catch up in the morning.
 
new solver passes all the test cases now :D
 
interesting
 
11:10 PM
(at the cost of slightly larger 4-input solutions)
 
not sure how I'll use that though :D
@PeterTaylor good night!
I guess what I could do is just to do two passes, one over edge-neighbour pairs and one over tiles. And create specific tiles that replace an edge.
wait there is a tile between them... that white rhomb... lol
 
@MartinBüttner can you just collect vertex neighbours and discard duplicates?
or am I thinking of the wrong problem?
 
You might be... I'm not entirely sure.
But I think the problem is simpler than I thought
 
I'm only half in this window so take me even less seriously than normal :)
 
It doesn't seem like there are any tiles that can't be assigned to a single parent tile. So it's just a question of finding the neighbours in the new tiles of two different parents.
 
11:16 PM
Are you still doing all of this up front?
 
Yes. As opposed to?
 
As opposed to expanding for gliders like Peter Taylor was mentioning
 
Not yet. I just want to get the tiling at all for starters. If I want to expand, I can always do 4 more iterations, and transfer the old state to the new grid.
As long as I stick to this 5-fold symmetric version, doing 4 iterations contains a minified copy of the original tiling
 
Does it end up the same way up and superimposable every 4 iterations?
you answered before I asked...
 
Actually every 2, but mirrored, so even that would work
Okay but I think it will indeed be easiest to keep track of everything, tiles, edges and vertices. And to find neighbours via edges and vertices.
 
11:24 PM
Are there only 10 distinct angles an edge can be at?
No 5...
 
10 I think
no you're right 5
 
I assumed 10 because of the upside down ones, then had to go back and look at the picture again...
 
yeah same here :D
 
Is it worth using an irrational base polar coordinate system or would that introduce more problems than it solves?
 
Not sure how it would help. I'm not concerned with accurately placing/plotting the tiles. I've got enough precision for errors not to be noticeable. Currently, I'm only talking about the abstract adjacency graph for this.
 
11:30 PM
I tried to think of ways it would help. I got zero.
 
Can the adjacency calculation be included in the iteration at each step?
I mean expand the subdivision step to update adjacencies as it goes
I've got my traveling salesman approach to the single curve image question running in the background. It looks OK from a distance but looking closer there are still a lot of crossed lines :(
 
@githubphagocyte I think I've been unclear. The point of the subdivision is to create both the adjacency graph and tile types/positions. The latter is rather trivial. So I'm only worried about the former.
 
Ah. Thanks for clarifying.
 
Updating the adjacency graph within one decomposed tile is not a problem. The only tricky part is to update edges that get split up into multiple edges.
But I think by keeping track of edges as well, it shouldn't be too hard.
The update rules for the 5 prototiles (disregarding adjacency) are:
 
11:38 PM
Could you just keep track of vertices, and point to them so that any shape that shares a vertex points to the same one? Then neighbours in terms of vertices would be straightforward
 
Large Pentagram -> 6 large pentagrams, 5 small pentagrams, 5 rhombs, 20 triangles
Small Pentagram -> large pentagram
Rhomb -> octagon and 2 rhombs
Octagon -> 2 small pentagrams, 1 rhomb and 8 triangles
Triangle -> 2 triangles
@githubphagocyte I'd still need to assign new vertices to the right subcomponent of the decomposed adjacent tiles
actually I think I need to refine those update rules a bit more
I think I need a check that when decomposing a large pentagram I only add small pentagrams on sides where it's not touching a small pentagram already
(otherwise I get overlaps)
wow this stuff is so hard to communicate
 
I'm trying to get the idea straight in my head. For each new shape you create, you define it in terms of vertices, and you don't store any of those vertices with the shape, but just pointers into a list of vertices, adding new vertices to the list if they aren't already there to point to. So then each shape is a list of pointers (as many pointers as it has vertices). And it's neighbours are those that share a pointer in common.
 
basically, yes... that sounds like I don't even need edges
let me think about that
 
Don't those exactly fit without overlap? I can't quite picture it though
 
@githubphagocyte "those"?
 
11:46 PM
A picture of the 2nd or 3rd iteration would settle it
@MartinBüttner in reply to this
 
well I've only got a picture of what I'd consider two iteratons ahead
iteration 1: http://geometricolor.files.wordpress.com/2012/08/basicite.jpg
iteratoin 3: http://geometricolor.files.wordpress.com/2012/08/ite2.jpg
Hm no I think I can't split those up into two iterations.
The subdivision rule for rhombs is different, and that for the other shapes probably as well.
Ah no it DOES work, there are just two different rhombic prototiles!
Interesting :D
 
Looking at the later iteration I think I'm wrong - you can't assume things will just happen to fit
No wait - it works!
I have the two images open in adjacent tabs and rapid use of ctrl-page up and ctrl-page down shows how they line up
 
haha
that's what I've been doing for an hour now :D
 
lol
Can you do it all in terms of pentagrams?
Are the other rules redundant?
 
I don't think so
let me try to explain how I picture the immediate iteration.
 
11:52 PM
You would get a lot of duplication, but if you're doing it in terms of a vertex list you can just discard shapes which have all vertices in common with another
Didn't you have an intermediate image before? With the concave octagons empty? Or did I imagine that?
 
in the latter picture, wherever you have 6 blue pentagrams group them back together into a large one. and then ditch all the blue remaining ones completely
 
now the 4-way multiplexer is 346 * 117
 
@githubphagocyte I think you must have imagined it, because I'm imagining it :D
there is one picture of several iterations ahead where you get octagons between blue pentagrams
 
but this one isn't really helping with picturing the decomposition rules
just with finding the prototiles
 
11:55 PM
joy
 
Ah yes that has empty octagons
 
@VisualMelon impressive!
 
@VisualMelon nice one - sorry for the delay my head is full of stars
 
it does it nice and quickly as well, much better than 3k * 1k in 1.4hours
 
If I could photoshop I'd quickly create a picture of the intermediate iteration
actually I'll give it a try
 
11:57 PM
so are these 1, 3, and then 5 that you've shown inline?
 
it's just a little exercise in masking :D
@githubphagocyte I don't know which iteration the inline one is. probably a bit later on
 
Do you only want the intermediate iteration so that you can use its tiles?
 
I want it because I think it's conceptually simpler
 
Seeing the odd iterations as the only iterations seems a lot simpler to me, but maybe I'm missing some reason why it can't just be a pentagram rule
 
@githubphagocyte What confuses me about using the odd iterations only is that the first of those doesn't generate octagons. But apparently later ones do.
So I'd rather break it down into two, where each one captures all the possibilities.
 

« first day (1300 days earlier)      last day (3543 days later) »