Talk:688: Self-Description

Explain xkcd: It's 'cause you're dumb.
Revision as of 10:15, 16 September 2013 by 138.96.199.247 (talk)
Jump to: navigation, search

This is one of the comics with a direct link at the bottom of xkcd. 173.26.186.224 04:18, 29 December 2012 (UTC)

I do wish they said 'comic' rather than 'image' as for the longest time, I assumed 'image' only referred to the individual box, which doesn't make each one necessarily linked.24.70.188.179 06:52, 27 January 2013 (UTC)

Anyone know what language Randall may have used to create this image? Perhaps Python? and how do you prevent it from entering an infinite feedback loop? Saibot84 (talk) 23:02, 12 May 2013 (UTC)
I'd do it in Perl, but that's because I'm a bit partial to Perl. I don't think it matters too much. It could even be a semi-manual process.
However, whatever way it's done, if there was a loop (or a flip-flop state, i.e. more black pixels overall means less black pixels on a graph, which means less black pixels overall, without a point of stability) then I'd detect for that and work out which "immutable" parts (e.g. lengths of drawn axes) could be altered by an appropriate number of pixels to have another go at looking for stability. In Perl, that'd be detected by something like a simple "$coverage{$no_of_black_pixels}++" for every state visited, with an "if (exists $coverage{$no_of_black_pixels}) { reject_and_renew() }"-style check before that, probably "die"ing the program to let me read the log of rejections that led there and let me choose a basic change (or other mutable element) that could lead us in the right direction.
In an interview, Randall Munroe explains that he did it completely by hand, counting the black pixels with Photoshop and iterating manually. Notice that, once you chose the radius of the disc, the width and scale for the rectangles of the second panel, and the text, decorations and legend, it is fairly easy to write the equations satisfied by the amount of black ink each panel. It turns out to be a set of linear equations, easily solved. This is for the continuous problem (say, if the comic strip were drawn with Bezier curves and a vector image). For the discrete problem, you have to iterate a little bit from this first insight, but not that much. 138.96.199.247 10:15, 16 September 2013 (UTC)
As a more simple example, if the original title-text hadn't turned out to be one where a certain stated number of characters made the text that same number of characters, I'd add, remove or change a word (or item of punctiation!) towards something that worked. As a dumb example of the way I'd do it: "This sentence has <foo> characters." has 35, there, including the five of "<foo>", so "thirty-five" would be six too many, "forty-one" would be 39-long, "thirty-nine" makes it "forty-one", and we know that loops back. I could be more intelligent and choose a number where own_length==(what it depicts, minus thirty), where the easy answer is "32" in digits. But there's no obvious set of number words that obet that rule, so let's change the sentence to "There are <foo> characters in this sentence.", and see where that leads us. Quick answer? 39+length of added number words. If I'm right, that's "forty-nine".
Of course, there are multiple loop-backs with a self-referential image. But while it would be 'obvious' if extra spaces were inserted (or some removed!) to make a line of text fit itself in a self-referential way, an image has more "neutral space" (or 'fill') that can be changed with no effect on itself but (in a non-linear way and deminishing returns, especially with the multiple levels of recursion in the third panel) can shuffle values in the rest, perhaps to hit upon a self-consistent result overall. Narrowing or widening the panes (thus making more/less white space, and only slightly different black space) could change the ratio enough to hit a solution. Or altering the radius of the pie-chart by a pixel or three (while obviously also updating the angle filled in) could help. And if it didn't work with a pie-chart, for some reason, a big block of text saying "x% black vs y% white", or similar, could have possibly set up a result. The problem is not finding a method of solving the problem, but that there are way too many ways. But once you hit one that doesn't look forced, that'd be good enough and you could roll with it.
Still, I'm rather in awe of the concept of the comic. I know I could repeat it (or something very like it), but to think of the idea in the first place is, I think, the most amazing thing about what we have here...
Too wordy? Meh... There are three-hundred and twenty-one 'e's in this entry. 31.111.35.144 19:39, 15 May 2013 (UTC)
(Post-script: of course "three-hundred and twenty" would also have worked, there, assuming I counted correctly in the first place! 31.111.35.144 19:39, 15 May 2013 (UTC))