688: Self-Description

Explain xkcd: It's 'cause you're dumb.
Revision as of 13:53, 10 January 2014 by (Talk)

Jump to: navigation, search
The contents of any one panel are dependent on the contents of every panel including itself. The graph of panel dependencies is complete and bidirectional, and each node has a loop. The mouseover text has two hundred and forty-two characters.
Title text: The contents of any one panel are dependent on the contents of every panel including itself. The graph of panel dependencies is complete and bidirectional, and each node has a loop. The mouseover text has two hundred and forty-two characters.


This comic is self-referential, because every graph is dependent on the whole comic. If you were to change anything in the comic, you would change the ink distribution, and would therefore have to update all three graphs. This would result in further changes that would have to be considered.

The third panel features a Droste effect, an image infinitely contained within itself.

The title text refers to the comic's own self-reference, but it is also self-referencing because of the character count in it.

"The graph of panel dependencies is complete and bidirectional, and every node has a loop." This means that if we draw a dot corresponding to each panel, and then we draw arrows connecting the dots to indicate dependencies, the resulting graph is complete (meaning that all the points are connected to one another) and bidirectional (meaning that if point A has an arrow to point B, then point B also has an arrow to point A). "Every node has a loop" means that each point also has an arrow connecting to itself.


[There is a pie chart, mostly white with a black slice. The white is labeled "Fraction of this image which is white." The black is labeled "Fraction of this image which is black."]
[There is a bar graph labeled "Amount of black ink by panel." Bar 1 is medium height, Bar 2 higher, Bar 3 lowest.]
[There is a scatterplot labeled "Location of black ink in this image." It is the positive quarter of a coordinate grid with the zeroes marked. The graph is, of course, the whole comic scaled to fit the axes, including a smaller version of itself in the last panel, etc.]

comment.png add a comment! ⋅ comment.png add a topic (use sparingly)! ⋅ Icons-mini-action refresh blue.gif refresh comments!


This is one of the comics with a direct link at the bottom of xkcd. 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. 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. 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. 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! 19:39, 15 May 2013 (UTC))

This could be another reference to the mysterious 242 inside joke which is mentioned in another comic's title text (forgot which one) 14:43, 22 January 2014 (UTC)

903:Extended Mind 01:49, 14 January 2017 (UTC)

Should I make a picture of the mentioned dependency graph and put it in the article? Basically it would be like a less ugly version of this. Fabian42 (talk) (please sign your comments with ~~~~)

I don't think this would explain anything from the comic and I can't find a "dependency graph" mentioned.--Dgbrt (talk) 14:23, 25 August 2017 (UTC)
In the mouseover text: "The graph of panel dependencies" Also this wiki explains everything in every possible detail, so I think it would be ok to include. The page is short for the amount of complexity in this comic anyway. Fabian42 (talk) 14:36, 25 August 2017 (UTC)
Yup, I should have read everything before answering. Maybe some wiki articles should be mentioned too: Dependency graph, Circular dependency, and of course Dependency hell. The paragraph here definitively needs an enhancement. Your edits are welcome and a nice picture I can upload for you. And when necessary you also can set the incomplete tag.--Dgbrt (talk) 15:06, 25 August 2017 (UTC)
Personal tools


It seems you are using noscript, which is stopping our project wonderful ads from working. Explain xkcd uses ads to pay for bandwidth, and we manually approve all our advertisers, and our ads are restricted to unobtrusive images and slow animated GIFs. If you found this site helpful, please consider whitelisting us.

Want to advertise with us, or donate to us with Paypal?