There is a difference between using APIs specifically intended to allow different programs to work together and using (that is, incorporating or linking with) actual code, though - the fact that it would be a stupid business move, anyway, nonwithstanding, I don't think that Microsoft even could rightfully demand fees to be paid for programs that merely run on windows by interfacing with the kernel and the rest of the OS by making use of the published APIs. And similarly, I don't think that someone who merely uses a trademark in a purely descriptive way - i.e., to state a fact -, could or should be legally required to pay fees for using that trademark.
Another example: should Microsoft be required to demand a royalty from me because I used the trademarks "Windows" and "Microsoft" in my post? Certainly not.
Of course, that's really just descriptive use, though; if you want to put a big "iPod seal of quality" on your product, for example, then the situation is different, as you'd then indeed be using the trademark (and exploiting the trademark's value) for advertising purposes.
But on the other hand, the manufacturers of the third party add-ons are making a mint off the iPod themselves. If their entire industry is based on the existance of the iPod, doesn't Apple have the authority to ask for a cut of the sales? Without the iPod, those accessories wouldn't exist. I'd see it as paying a royalty to use the iPod brand/name/whatever.
There is no such right, in general - this is what patents are for. The mere fact that you created something does not mean that you're entitled to profits when others build upon your work.
Otherwise, shouldn't Microsoft receive a fee whenever someone creates a program that runs on Windows, too, for example?
Part of the fuss may be that "made for iPod", even though it uses a trademarked name, could actually reasonably be construed as being purely descriptive in nature - that is, as a mere statement of fact ("this product is compatible with Apple's iPod"). Given that there is pretty much no way to state this fact without actually using the term "iPod", it's easy to see why companies aren't keen on paying for this.
Is there a trademark equivalent of fair use? If this was a copyright issue, this would probably fall under that, but I'm not sure if there is anything equivalent for trademarks. The only thing I can think of would be the freedom of speech guaranteed in the bill of rights - one could argue that freedom of speech is impinged upon when it's not possible to state a fact ("this product is compatible with Apple's iPod") without having to pay royalties for the use of the trademarked term.
Of course Google doesn't need 5000 computers just to serve a website. But have you ever considered that they might need a lot of computers for their index database? The last figure they gave on their website I recall was on the order of 8.5 billion indexed pages; their appliances seem to be able to index about 1 million documents per unit (in the more expensive models), so it's probably not unreasonable to assume that Google itself uses (very roughly!) 8500 computers for that, at least.
They probably still have a large number of machines dedicated to datamining as well, but don't underestimate the computing power necessary to power a large search engine.
Perl just gives you enough rope to hang yourself with - the fact that you *do* choose to hang yourself is not the language's fault.:) In fact, given the fact that Perl is supposed to make easy things easy and hard things possible, forcing a certain programming style upon its users would run contrary to the language's goals - specifically, it would run contrary to the "make the easy things easy" part.
That being said, if you want to learn about how to design Perl programs, why not pick up a copy of Perl Best Practices, for example?
Huh? Since when does "big iron" have anything to do with the manufacturer of the CPUs used? Sorry, but your attempt to be cool by sneering at AMD's failing, kid - you're only making yourself look like a fool who doesn't know what he's talking about.:)
You moderators may think this is funny, but it's actually true - Mozilla (both Firefox and Seamonkey) is generally a rather crash-happy program. I'm using Seamonkey 1.7.12, myself, which really is supposed to accumulate only critical bug and security fixes, but it still crashes or locks up at least once a day.
If it wasn't for AdBlock, I'd switch to Opera in an instant.
You don't understand, do you? The king has not the power to turn the chalice as often as he wants - he can only turn it k times, and k is a FIXED number. What's so hard to understand about that? Sure, it might be very large - a billion, say -, but then you just use a code that's able to correct billions of bit errors. Sure, it's gonna be a lot of overhead, but who cares? The only thing that matters is that the thing is fool-proof.
Let me just repeat that for you: the king has NOT complete control of the message at all times. In fact, if he did, then the whole riddle would trivially have no solution at all, as in that case, the king could indeed cancel or manipulate all communication that ever occurs.
But he can't, and that's the point which you don't seem to be able to understand.
You're not quite right. The key point is that the king can NOT manipulate the message in any way he sees fit - he's limited to at most k bit manipulations, which is why a code able to detect and correct a certain amount of bit manipulations is needed. The king can do a number of things besides just flipping bits, of course - he can also insert bits into the stream by manipulating the chalice and the order in which the prisoners are summoned -, but he can't do so as often as he might like to.
That's why I said the code needs to be able to correct O(k) errors instead of just k - although thinking about it, it may also be O(k^2) or something similar. But that's beside the point; the thing is that there is a finite number l > k such that a code being able to correct l errors will suffice.
So as long as the king plays fair and only manipulates the chalice k times at most, the prisoners can set up a safe communication channel and communicate with each other - in such a way that the king, and this is important, is not able to influence even a *single* logical bit sent back and forth. Of course, if k is large, it's gonna take forever to actually do that, but that's beside the point.:)
As for the rest of your post, just let me say two things:
a) it does not matter who sent a particular logical bit; you can add that information at the message layer about the logical bit layer. b) there is no such thing as an intended recipient in my scheme AT ALL: all communication is broadcast in nature. But again, if you wanted to add that information, you could just encode it at the message layer. As I said, think Ethernet - originally, Ethernet was a shared medium (the wire) as well, and all communication was, a priori, broadcast.
So I still believe that the scheme would work. Of course, it is crucial that the king is fair, that time is unlimited, and that the prisoners know k in advance so they can choose an appropriate code for the logical bit layer, but all that is given.
I think that it's a good thing that the more mainstream-oriented press is reporting on these issues - from personal experience, I can say that most people have a fundamentally flawed idea of what patents are about.
I had a conversation about it with my parents recently, and I was rather shocked to find out that they thought that the ONLY purpose of a patent was to give an inventor the ability to milk the market for as much money as possible (that's not the way they phrased it, of course, but what they said in essence). They didn't realise that there is a bargain behind patent ("we'll give you a limited-time monopoly, and in return, you make your invention public so that after a while, everyone will be able to make use of it"), and that patents are only supposed to be granted when the invention is sufficiently new to justify the granting of a (limited-time) monopoly.
Somehow, they never thought about that, and that's despite the fact that my father at least has a lot to do with different kinds of businesses, job-wise.
Until this changes and until the general public know *why* there are patents and what they are supposed to accomplish, the situation most likely will not change (or if it will, then only for the worse), and any kind of reporting on this in the mainstream press can only be a good thing.
Here's another nice one, courtesy of Raymond Smullyan.
Suppose there are three people, called A, B and C. Each of these is a "perfect logician"; that is, given some information, they all are able to immediately draw any and all conclusions that can possibly be drawn from this information. Furthermore, suppose there are four red and four green stamps.
Now, all three of them close their eyes, and two stamps are glued to their foreheads, each; the remaining two stamps are put away. Now, they all open their eyes again.
Then, the first, A, is asked whether he knows the colours of the stamps on his forehead. He says he doesn't. Then B is asked the same thing, and also says he doesn't, and afterwards, C is asked and says he doesn't, too. Now, A is asked a second time, and he still says he doesn't know. But then, when B is asked a second time, he now says he does know.
Oldie but goldie, and certainly a riddle that has made most people I've mentioned it to think rather hard. Consider the following situation: we play a game where I present you with two envelopes, each of which contains a certain amount of money; you may choose one, open it, and keep the money in it. One of the envelopes contains twice as much money as the other, but outside of that, you don't know how much they contain (I do, though, because I put the money inside).
Now, there's a twist: after you choose one envelope but *before* you open it, I offer you a chance to back out of your decision and take the other envelope instead. You can do this or not; it's completely up to you. No matter what you do, the envelope you choose now is final, and you get to keep the money in it, but you don't get the money in the other envelope.
Naturally, you want to maximize the amount of money you get.
Now, the problem is as follows: after you choose one envelope, which contains a certain amount of money n, you know that the other envelope contains either n/2 or 2n. In other words, the other envelope contains, on average, 1.25n, which is more than the envelope you currently have - so you should trade yours for the other one. Okay.
However, you could also look at it the following way: call the smaller amount of money n, then the envelope you have contains either 2n or n. On average, it thus contains 1.5n, and the same goes for the other envelope, too - it also contains either 2n or n, and thus, on average, 1.5n. So it doesn't matter whether you trade yours or not. Okay.
Unfortunately, it's obvious that not both these things can be correct - it either is better for you to trade, or it's not, but not both at the same time. What's going on here?
If you heard about this before and know the solution already, please don't post it so the riddle's not spoiled for everyone else.:) If you haven't heard of this riddle yet and think you know the solution, be sure to also explain it.:)
As many days as she wants. On the first day, she cooks 0 dwarves; on the second day, she cooks twice that much, which is still 0 dwarves; and so on, ad infinitum (or ad nauseam, which probably is more appropriate when you cook dwarves).
"Does the statue guarding the door to salvation always tell the truth?"
If the answer is "Yes", which is true, then the statue's the honest one and the door leads to salvation; if it's not, then the statue's the lying one and the door leads to death.
Of course, you could also ask "is 1+1=2" or something similar.
First of all, what is a liar? It could either be someone who always lies or someone who only does some of the time; typically, a person will be called a liar even if they only lie sometimes.
In that case, it's easy: if all Cretans are liars, then Epimenides is one, too, but that doesn't mean his statement is necessarily untrue.
If it's not the case, then Epimenides' statement cannot be true. However, it can still be false: the negation is "there is at least one Cretan who is not a liar", but that Cretan doesn't have to be Epimenides.
You do have a case if Epimenides is the only Cretan there is and if he never said anything else in his life, but then, it's just the stament "this statement is false".
I don't know the solution, but here's a quick attempt...
Start by turning on two of the switches, for example A and B. Then, wait for a while. Turn off one switch now (B, for example), and enter the room with the light bulbs. Now you have the solution: the bulb that is on is connected to switch A. The bulb that is off but still hot is connected to switch B. And the bulb that is off and cold is connected to switch C.
Oh, I didn't mean to imply that a counting solution is feasible; it's just the argument that the king would be able to decrease the counter that's not true. That nonwithstanding, I am reasonably sure that an attempt to use counting for the solution must fail, for the reasons you give.
But there are other ways to solve the problem. I posted an idea of mine here, and while it could probably be refined, I don't see any immediate problems with it that would render it infeasible.
First of all, you need a code that can correct about O(k) raw bit errors in a transmitted raw message (k is probably sufficient, but I'm not an expert in coding theory, and this is a detail, anyway ^_~). The prisoners will use this code to send logical bits to each other. The choice of code guarantees that the king's ability to introduce k errors into the raw communication channel (the chalice) will not affect the logical bits transmitted.
Now, the basic idea is that, starting with prisoner 1, each prisoner sends the message "I (prisoner n) has been here" to all others (it's probably sufficient to send this to prisoner n+1, but I like to err on the safe side).
This is done (logical) bit by bit (using the code above), and every single logical bit is acknowledged by every prisoner except for the one who sent the bit, in order - so, for example, prisoner 1 sends a logical bit, then prisoner 2 acknowledges receipt, then prisoner 3 does, and so on, until prisoner n. Only when all acknowledgements have been received by prisoner 1 is the next logical bit sent. Every prisoner who is not currently sending (either sending a logical bit or an acknowledgement) doesn't do anything when called into the room except observe, in order to not interfere with the running communication. The fact that the order in which acknowledgements are sent is predetermined makes sure that synchronisation is not lost here.
The fact that the king eventually has to call every prisoner to the main room an unlimited number of times until the riddle has been solved - that is, that he is not allowed to "starve" a prisoner forever, not even after the prisoner has already been called in a certain amount of times - guarantees that the exchange of logical bits and acknowledgements will happen eventually.
Now that the prisoners can send logical bits to each other in a safe and guaranteed channel (the king can neither change the bits sent, due to the code used, nor can he prevent a prisoner from sending or receiving information), we have a means to transmit *messages*. So now the problem becomes simple: prisoner 1 sends the message "prisoner 1 was here"; once that message has been transmitted, prisoner 2 sends a similar message, and so on, until prisoner n does. At that point, all the prisoners know that everyone else has been there. Acknowledgements of the messages could probably be used here, but aren't really necessary if the message format is predetermined to avoid loss of synchronisation.
Well, thinking about it, it's probably not even necessary to build the message sending layer, as the acknowledgements that bits have been seen on the logical bit layer are already enough to conclude that every prisoner has been there. But it's nice to be able to exchange actual messages, too.:)
So... in a way, what the prisoners need to do is model layers 1 and 2 of the OSI model. They probably even could use the actual Ethernet specs for this.:)
No, he can't. The counter was given as a value that the counter (that is, the prisoner doing the counting) has in their head and that they only increase under certain circumstances but never decrease. So unless the king is able to do a lobotomy on the counting prisoner, he won't be able to decrease it.:)
You don't seem to know that much about statistics.
Neither do I, of course, but your comment has some rather blatant errors in it. First of all, the inmates cannot wait an *infinite* time, but they can wait an arbitrary time - that is, for any finite amount of time t, they can wait for that amount.
The part about "what if the prisoners have waited for an infinite amount of time" is rubbish, too - the state the whole system is in simply isn't well-defined if you attempt to take the limit. In fact, considering that the king cannot "starve" a prisoner forever but has to recall them to the central room again eventually, there is *no* possible situation where the limit *is* well-defined - i.e., where you can say, after an infinite amount of time, precisely where every prisoner is.
And finally, the "10 prisoners, each prisoner called once, k=1 billion" scenario is also rubbish, because - as the puzzle stated - every prisoner has to be called out again eventually. In particular, this also means that each prisoner will be called out at least m times, for *any* natural number m - a situation where a prisoner correctly answers "yes" nonwithstanding, of course.
There is a difference between using APIs specifically intended to allow different programs to work together and using (that is, incorporating or linking with) actual code, though - the fact that it would be a stupid business move, anyway, nonwithstanding, I don't think that Microsoft even could rightfully demand fees to be paid for programs that merely run on windows by interfacing with the kernel and the rest of the OS by making use of the published APIs. And similarly, I don't think that someone who merely uses a trademark in a purely descriptive way - i.e., to state a fact -, could or should be legally required to pay fees for using that trademark.
Another example: should Microsoft be required to demand a royalty from me because I used the trademarks "Windows" and "Microsoft" in my post? Certainly not.
Of course, that's really just descriptive use, though; if you want to put a big "iPod seal of quality" on your product, for example, then the situation is different, as you'd then indeed be using the trademark (and exploiting the trademark's value) for advertising purposes.
There is no such right, in general - this is what patents are for. The mere fact that you created something does not mean that you're entitled to profits when others build upon your work.
Otherwise, shouldn't Microsoft receive a fee whenever someone creates a program that runs on Windows, too, for example?
Part of the fuss may be that "made for iPod", even though it uses a trademarked name, could actually reasonably be construed as being purely descriptive in nature - that is, as a mere statement of fact ("this product is compatible with Apple's iPod"). Given that there is pretty much no way to state this fact without actually using the term "iPod", it's easy to see why companies aren't keen on paying for this.
Is there a trademark equivalent of fair use? If this was a copyright issue, this would probably fall under that, but I'm not sure if there is anything equivalent for trademarks. The only thing I can think of would be the freedom of speech guaranteed in the bill of rights - one could argue that freedom of speech is impinged upon when it's not possible to state a fact ("this product is compatible with Apple's iPod") without having to pay royalties for the use of the trademarked term.
But I certainly ANAL.
Of course Google doesn't need 5000 computers just to serve a website. But have you ever considered that they might need a lot of computers for their index database? The last figure they gave on their website I recall was on the order of 8.5 billion indexed pages; their appliances seem to be able to index about 1 million documents per unit (in the more expensive models), so it's probably not unreasonable to assume that Google itself uses (very roughly!) 8500 computers for that, at least.
They probably still have a large number of machines dedicated to datamining as well, but don't underestimate the computing power necessary to power a large search engine.
Perl just gives you enough rope to hang yourself with - the fact that you *do* choose to hang yourself is not the language's fault. :) In fact, given the fact that Perl is supposed to make easy things easy and hard things possible, forcing a certain programming style upon its users would run contrary to the language's goals - specifically, it would run contrary to the "make the easy things easy" part.
That being said, if you want to learn about how to design Perl programs, why not pick up a copy of Perl Best Practices, for example?
Let me rephrase that question: why would developers chose another language over Perl for a new project?
Huh? Since when does "big iron" have anything to do with the manufacturer of the CPUs used? Sorry, but your attempt to be cool by sneering at AMD's failing, kid - you're only making yourself look like a fool who doesn't know what he's talking about. :)
You moderators may think this is funny, but it's actually true - Mozilla (both Firefox and Seamonkey) is generally a rather crash-happy program. I'm using Seamonkey 1.7.12, myself, which really is supposed to accumulate only critical bug and security fixes, but it still crashes or locks up at least once a day.
If it wasn't for AdBlock, I'd switch to Opera in an instant.
Ah, OK. Yes, that's something he can do.
You don't understand, do you? The king has not the power to turn the chalice as often as he wants - he can only turn it k times, and k is a FIXED number. What's so hard to understand about that? Sure, it might be very large - a billion, say -, but then you just use a code that's able to correct billions of bit errors. Sure, it's gonna be a lot of overhead, but who cares? The only thing that matters is that the thing is fool-proof.
Let me just repeat that for you: the king has NOT complete control of the message at all times. In fact, if he did, then the whole riddle would trivially have no solution at all, as in that case, the king could indeed cancel or manipulate all communication that ever occurs.
But he can't, and that's the point which you don't seem to be able to understand.
Haha, you almost got me there. Good one! :)
You're not quite right. The key point is that the king can NOT manipulate the message in any way he sees fit - he's limited to at most k bit manipulations, which is why a code able to detect and correct a certain amount of bit manipulations is needed. The king can do a number of things besides just flipping bits, of course - he can also insert bits into the stream by manipulating the chalice and the order in which the prisoners are summoned -, but he can't do so as often as he might like to.
:)
That's why I said the code needs to be able to correct O(k) errors instead of just k - although thinking about it, it may also be O(k^2) or something similar. But that's beside the point; the thing is that there is a finite number l > k such that a code being able to correct l errors will suffice.
So as long as the king plays fair and only manipulates the chalice k times at most, the prisoners can set up a safe communication channel and communicate with each other - in such a way that the king, and this is important, is not able to influence even a *single* logical bit sent back and forth. Of course, if k is large, it's gonna take forever to actually do that, but that's beside the point.
As for the rest of your post, just let me say two things:
a) it does not matter who sent a particular logical bit; you can add that information at the message layer about the logical bit layer.
b) there is no such thing as an intended recipient in my scheme AT ALL: all communication is broadcast in nature. But again, if you wanted to add that information, you could just encode it at the message layer. As I said, think Ethernet - originally, Ethernet was a shared medium (the wire) as well, and all communication was, a priori, broadcast.
So I still believe that the scheme would work. Of course, it is crucial that the king is fair, that time is unlimited, and that the prisoners know k in advance so they can choose an appropriate code for the logical bit layer, but all that is given.
I think that it's a good thing that the more mainstream-oriented press is reporting on these issues - from personal experience, I can say that most people have a fundamentally flawed idea of what patents are about.
I had a conversation about it with my parents recently, and I was rather shocked to find out that they thought that the ONLY purpose of a patent was to give an inventor the ability to milk the market for as much money as possible (that's not the way they phrased it, of course, but what they said in essence). They didn't realise that there is a bargain behind patent ("we'll give you a limited-time monopoly, and in return, you make your invention public so that after a while, everyone will be able to make use of it"), and that patents are only supposed to be granted when the invention is sufficiently new to justify the granting of a (limited-time) monopoly.
Somehow, they never thought about that, and that's despite the fact that my father at least has a lot to do with different kinds of businesses, job-wise.
Until this changes and until the general public know *why* there are patents and what they are supposed to accomplish, the situation most likely will not change (or if it will, then only for the worse), and any kind of reporting on this in the mainstream press can only be a good thing.
If we're lucky, they at least performed a full body cavity search on him.
"Bend over, this won't hurt... MUCH."
Here's another nice one, courtesy of Raymond Smullyan.
Suppose there are three people, called A, B and C. Each of these is a "perfect logician"; that is, given some information, they all are able to immediately draw any and all conclusions that can possibly be drawn from this information. Furthermore, suppose there are four red and four green stamps.
Now, all three of them close their eyes, and two stamps are glued to their foreheads, each; the remaining two stamps are put away. Now, they all open their eyes again.
Then, the first, A, is asked whether he knows the colours of the stamps on his forehead. He says he doesn't. Then B is asked the same thing, and also says he doesn't, and afterwards, C is asked and says he doesn't, too. Now, A is asked a second time, and he still says he doesn't know. But then, when B is asked a second time, he now says he does know.
The question is: how?
Oldie but goldie, and certainly a riddle that has made most people I've mentioned it to think rather hard. Consider the following situation: we play a game where I present you with two envelopes, each of which contains a certain amount of money; you may choose one, open it, and keep the money in it. One of the envelopes contains twice as much money as the other, but outside of that, you don't know how much they contain (I do, though, because I put the money inside).
:) If you haven't heard of this riddle yet and think you know the solution, be sure to also explain it. :)
Now, there's a twist: after you choose one envelope but *before* you open it, I offer you a chance to back out of your decision and take the other envelope instead. You can do this or not; it's completely up to you. No matter what you do, the envelope you choose now is final, and you get to keep the money in it, but you don't get the money in the other envelope.
Naturally, you want to maximize the amount of money you get.
Now, the problem is as follows: after you choose one envelope, which contains a certain amount of money n, you know that the other envelope contains either n/2 or 2n. In other words, the other envelope contains, on average, 1.25n, which is more than the envelope you currently have - so you should trade yours for the other one. Okay.
However, you could also look at it the following way: call the smaller amount of money n, then the envelope you have contains either 2n or n. On average, it thus contains 1.5n, and the same goes for the other envelope, too - it also contains either 2n or n, and thus, on average, 1.5n. So it doesn't matter whether you trade yours or not. Okay.
Unfortunately, it's obvious that not both these things can be correct - it either is better for you to trade, or it's not, but not both at the same time. What's going on here?
If you heard about this before and know the solution already, please don't post it so the riddle's not spoiled for everyone else.
As many days as she wants. On the first day, she cooks 0 dwarves; on the second day, she cooks twice that much, which is still 0 dwarves; and so on, ad infinitum (or ad nauseam, which probably is more appropriate when you cook dwarves).
"Does the statue guarding the door to salvation always tell the truth?"
If the answer is "Yes", which is true, then the statue's the honest one and the door leads to salvation; if it's not, then the statue's the lying one and the door leads to death.
Of course, you could also ask "is 1+1=2" or something similar.
That's easy.
First of all, what is a liar? It could either be someone who always lies or someone who only does some of the time; typically, a person will be called a liar even if they only lie sometimes.
In that case, it's easy: if all Cretans are liars, then Epimenides is one, too, but that doesn't mean his statement is necessarily untrue.
If it's not the case, then Epimenides' statement cannot be true. However, it can still be false: the negation is "there is at least one Cretan who is not a liar", but that Cretan doesn't have to be Epimenides.
You do have a case if Epimenides is the only Cretan there is and if he never said anything else in his life, but then, it's just the stament "this statement is false".
Form a tetrahedron?
I don't know the solution, but here's a quick attempt...
:)
Start by turning on two of the switches, for example A and B. Then, wait for a while. Turn off one switch now (B, for example), and enter the room with the light bulbs. Now you have the solution: the bulb that is on is connected to switch A. The bulb that is off but still hot is connected to switch B. And the bulb that is off and cold is connected to switch C.
Am I right?
Oh, I didn't mean to imply that a counting solution is feasible; it's just the argument that the king would be able to decrease the counter that's not true. That nonwithstanding, I am reasonably sure that an attempt to use counting for the solution must fail, for the reasons you give.
But there are other ways to solve the problem. I posted an idea of mine here, and while it could probably be refined, I don't see any immediate problems with it that would render it infeasible.
I think I have a solution.
:)
:)
First of all, you need a code that can correct about O(k) raw bit errors in a transmitted raw message (k is probably sufficient, but I'm not an expert in coding theory, and this is a detail, anyway ^_~). The prisoners will use this code to send logical bits to each other. The choice of code guarantees that the king's ability to introduce k errors into the raw communication channel (the chalice) will not affect the logical bits transmitted.
Now, the basic idea is that, starting with prisoner 1, each prisoner sends the message "I (prisoner n) has been here" to all others (it's probably sufficient to send this to prisoner n+1, but I like to err on the safe side).
This is done (logical) bit by bit (using the code above), and every single logical bit is acknowledged by every prisoner except for the one who sent the bit, in order - so, for example, prisoner 1 sends a logical bit, then prisoner 2 acknowledges receipt, then prisoner 3 does, and so on, until prisoner n. Only when all acknowledgements have been received by prisoner 1 is the next logical bit sent. Every prisoner who is not currently sending (either sending a logical bit or an acknowledgement) doesn't do anything when called into the room except observe, in order to not interfere with the running communication. The fact that the order in which acknowledgements are sent is predetermined makes sure that synchronisation is not lost here.
The fact that the king eventually has to call every prisoner to the main room an unlimited number of times until the riddle has been solved - that is, that he is not allowed to "starve" a prisoner forever, not even after the prisoner has already been called in a certain amount of times - guarantees that the exchange of logical bits and acknowledgements will happen eventually.
Now that the prisoners can send logical bits to each other in a safe and guaranteed channel (the king can neither change the bits sent, due to the code used, nor can he prevent a prisoner from sending or receiving information), we have a means to transmit *messages*. So now the problem becomes simple: prisoner 1 sends the message "prisoner 1 was here"; once that message has been transmitted, prisoner 2 sends a similar message, and so on, until prisoner n does. At that point, all the prisoners know that everyone else has been there. Acknowledgements of the messages could probably be used here, but aren't really necessary if the message format is predetermined to avoid loss of synchronisation.
Well, thinking about it, it's probably not even necessary to build the message sending layer, as the acknowledgements that bits have been seen on the logical bit layer are already enough to conclude that every prisoner has been there. But it's nice to be able to exchange actual messages, too.
So... in a way, what the prisoners need to do is model layers 1 and 2 of the OSI model. They probably even could use the actual Ethernet specs for this.
No, he can't. The counter was given as a value that the counter (that is, the prisoner doing the counting) has in their head and that they only increase under certain circumstances but never decrease. So unless the king is able to do a lobotomy on the counting prisoner, he won't be able to decrease it. :)
You don't seem to know that much about statistics.
Neither do I, of course, but your comment has some rather blatant errors in it. First of all, the inmates cannot wait an *infinite* time, but they can wait an arbitrary time - that is, for any finite amount of time t, they can wait for that amount.
The part about "what if the prisoners have waited for an infinite amount of time" is rubbish, too - the state the whole system is in simply isn't well-defined if you attempt to take the limit. In fact, considering that the king cannot "starve" a prisoner forever but has to recall them to the central room again eventually, there is *no* possible situation where the limit *is* well-defined - i.e., where you can say, after an infinite amount of time, precisely where every prisoner is.
And finally, the "10 prisoners, each prisoner called once, k=1 billion" scenario is also rubbish, because - as the puzzle stated - every prisoner has to be called out again eventually. In particular, this also means that each prisoner will be called out at least m times, for *any* natural number m - a situation where a prisoner correctly answers "yes" nonwithstanding, of course.