{"id":34164,"date":"2019-10-31T21:56:44","date_gmt":"2019-10-31T18:56:44","guid":{"rendered":"https:\/\/prohoster.info\/blog\/ya-poluchil-ot-knuta-chek-na-0x-3-00\/"},"modified":"2019-10-31T21:56:44","modified_gmt":"2019-10-31T18:56:44","slug":"ya-poluchil-ot-knuta-chek-na-0x-3-00","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/news\/ya-poluchil-ot-knuta-chek-na-0x-3-00","title":{"rendered":"I received a check from Knuth for 0x$3.00","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b>Donald Knuth<\/b>\u00a0\u2014 a scholar in the field of computer science who cares so much about the accuracy of his books that he offers <b>one hexadecimal dollar<\/b> ($2.56, 0x$1.00) for any found \"mistake,\" where a mistake is defined as anything that is \"technically, historically, typographically, or politically incorrect.\" I was eager to receive a check from Knuth, so I decided to look for errors in his outstanding work <b>\"The Art of Computer Programming\"<\/b> (TAOCP). I managed to find three. True to his word, Knuth sent me a check for <b>0x$3.00<\/b>.<\/p>\n<p><img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/ea8c328c9f7f67d1e2c0d729268aca01.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAs you can see, this is not a real check. Previously, Knuth used to send real checks, but he stopped in 2008 due to <noindex><a rel=\"nofollow\" href=\"https:\/\/www-cs-faculty.stanford.edu\/~knuth\/news08.html\">rampant fraud<\/a><\/noindex>. Now he sends out \"personal deposit certificates\" from <noindex><a rel=\"nofollow\" href=\"https:\/\/www-cs-faculty.stanford.edu\/~knuth\/boss.html\">San Serriffe Bank<\/a><\/noindex> (BoSS). He says he is willing to send real money if necessary, but it seems too cumbersome.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nI found two typos and one historical error. I will list them in order of decreasing triviality.<\/p>\n<h1>Typo #1<\/h1>\n<p>\nThe first typo is on page 392 of the third volume \"Sorting and Searching\", the eighth line from the bottom: \"After an unsuccessful search sometimes (sometime) it is desirable to enter a new record into the table containing <i>K<\/i>; the method that does this is called the search and insert algorithm. The error is that instead of <b><i>sometime<\/i><\/b> should be <b><i>sometimes<\/i><\/b>.<\/p>\n<p>Of course, there is nothing surprising about such an error. In this article, there are bound to be several typos (no rewards for finding them). What is truly surprising is how long it went unnoticed. Page 392 is not buried deep in a math section; it is <b>the very first page<\/b> of chapter six \"Searching\"! Perhaps one of the most read sections of the book. Ideally, there should be the fewest typos there, but no.<\/p>\n<p>By the way, if you ever thought about reading TAOCP, give it a try. Many will say it is <b>a reference manual<\/b>, not intended for direct reading, but that is not true. The author has a clear point of view and a distinctive style. The only thing hindering readability is the complexity of the mathematics. However, there is a simple solution: read until you reach the mathematics you do not understand, skip it, and move on to the next section you can grasp. Reading this way, I skip at least 80% of the book, but the remaining 20% is magnificent!<\/p>\n<p>It is also said that TAOCP <b>is irrelevant<\/b>, outdated or otherwise inapplicable to \"real programming.\" This is also untrue. For example, in the first section after the introduction, the search for an element in an unsorted array is discussed. The simplest algorithm is known to all programmers. Start the pointer at the beginning of the array, then perform the following steps in a loop:<\/p>\n<ol>\n<li>Check if the current element is the desired one. If so, return it; otherwise,\n<\/li>\n<li>Check if the pointer is out of bounds of the array. If so, return an error; otherwise,\n<\/li>\n<li>Increment the pointer and continue.<\/li>\n<\/ol>\n<p>\nNow let\u2019s consider: how many boundary checks does this algorithm require, on average? In the worst case, when the array contains no elements, each element in the list will require one check, resulting in something like <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/6c99f945807d8a8aeac1d42854c83295.jpg\" style=\"display:block;margin: 0 auto;\" \/>. A smarter search algorithm may only need one boundary check. Attach the desired element to the end of the array, then start the pointer at the beginning of the array and perform the following steps in a loop:<\/p>\n<ol>\n<li>Check if the current element is the desired one. If so, return the response if the pointer is within the array bounds, or an error if not. Otherwise,\n<\/li>\n<li>Increment the pointer and continue.<\/li>\n<\/ol>\n<p>\nIn any case, the element will be guaranteed to be found, and the boundary check is performed only once when that happens. This is a profound idea, yet it's simple enough even for a novice programmer. I probably can\u2019t speak to the relevance of this work for others, but I was able to apply this wisdom right away in both my personal and professional code. The book TAOCP is full of such gems (to be fair, there are also many odd things, such as <noindex><a rel=\"nofollow\" href=\"https:\/\/nickdrozd.github.io\/2018\/11\/02\/bubble.html\">bubble sort<\/a><\/noindex>).<\/p>\n<blockquote><p><i>\"Searching, searching<br \/>\nSo long<br \/>\nSearching, searching<br \/>\nI just wanted to dance\"<\/i> <br \/>\n\u2014 Luther Vandross, \"Searching\" (1980)<\/p><\/blockquote>\n<p><\/p>\n<h1>Typo #2<\/h1>\n<p>\nThe second error is in volume 4A, \"Combinatorial Algorithms\", part 1. On page 60, there is a problem about scheduling comedian performances in various casinos. Several real comedians are mentioned, including Lily Tomlin, Weird Al Yankovic, and Robin Williams, who was still alive when the book was published. Knuth always provides full names in the index, so Williams is mentioned on page 882 as \"Williams, Robin MacLaurin.\" But his middle name ends with an 'n' and not an 'm', meaning MacLaurin.<\/p>\n<p>MacLaurin is the maiden name of his mother. She was the great-granddaughter of Anselm Joseph MacLaurin, the 34th governor of Mississippi. His administration does not seem to be remembered for anything good. From the book <noindex><a rel=\"nofollow\" href=\"https:\/\/books.google.com\/books?id=OvNjBAAAQBAJ&amp;pg=PA177&amp;lpg=PA177&amp;dq=anselm+mclaurin&amp;source=bl&amp;ots=kPu_kLXUrz&amp;sig=ACfU3U2UKRAmJyH_dVfcb2tfSmzYemEgTw&amp;hl=en&amp;sa=X&amp;ved=2ahUKEwjTl9vvroDiAhVHI6wKHfCTC6I4MhDoATADegQICRAB#v=onepage&amp;q&amp;f=false\">\"Mississippi: A History\"<\/a><\/noindex>:<\/p>\n<blockquote><p><i>\"The most significant event during MacLaurin's administration was the United States' declaration of war against Spain in the spring of 1898... Unfortunately, the war may have provided some public officials with the opportunity to practice bribery. MacLaurin was accused of various questionable practices, including nepotism and excessive use of pardoning powers. During the temperance movement, critics accused the governor of drunkenness, which he publicly admitted.\"<\/i><\/p><\/blockquote>\n<p><\/p>\n<h1>Historical Error<\/h1>\n<p>\nConsider <b>traditional multiplication algorithm<\/b> from the school curriculum. How many single-digit multiplication operations does it require? Suppose you are multiplying <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/d15239ad41c6fc6953641760f9ffcfdd.jpg\" style=\"display:block;margin: 0 auto;\" \/>-digit number <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/b731d35571751cec684ca767411a023d.jpg\" style=\"display:block;margin: 0 auto;\" \/> to <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/c1f7221e05cbca33ff54da5b6f665dd2.jpg\" style=\"display:block;margin: 0 auto;\" \/>-digit <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/390eee500fc99f74a2252db0b3ba6fe4.jpg\" style=\"display:block;margin: 0 auto;\" \/>. First, multiply the first digit <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/8d4db48caef1e8cceac94ae2fca4fc24.jpg\" style=\"display:block;margin: 0 auto;\" \/> by each digit <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/dccbe5f9c5f2fe9bd3538f567e2bb214.jpg\" style=\"display:block;margin: 0 auto;\" \/> in turn. Then multiply the second digit <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/b76bfeb3fb4f60f9f1ac66dcb937f736.jpg\" style=\"display:block;margin: 0 auto;\" \/> by each digit <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/bbe37fb224a8e6115872a2b2cdefa26e.jpg\" style=\"display:block;margin: 0 auto;\" \/> in turn and so on, until you have gone through all the digits <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/df227a29c1bc24a1c7cbf9269c764b21.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Thus, traditional multiplication requires <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/f0c5ea2abdccff4a5b92fd1c70706d21.jpg\" style=\"display:block;margin: 0 auto;\" \/> primitive multiplications. Specifically, multiplying two numbers by <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/f609965f49d095d59264e127f6db0e64.jpg\" style=\"display:block;margin: 0 auto;\" \/> digits requires <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/fb16f262bc1b872f6e8c003be2efe2d8.jpg\" style=\"display:block;margin: 0 auto;\" \/> single-digit multiplications.<\/p>\n<p>This is not ideal, but the process can be optimized using a method developed by Soviet mathematician Anatoly Alexeyevich Karatsuba. Suppose that <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/3f42481650d00fe8cf1083be9479958f.jpg\" style=\"display:block;margin: 0 auto;\" \/> and <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/756872cc2c490be54640606bba6cb8c7.jpg\" style=\"display:block;margin: 0 auto;\" \/>\u00a0- are two-digit decimal numbers; that is, there exist numbers <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/4f1f27cc95638aab9f6836f809b42cc1.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/0192ac28c89bfd24a20a1fc1b06ce1a6.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/bebb062d37ca6e82ce30589b5f790a0f.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/907b83653f451f4a861109f2244b175a.jpg\" style=\"display:block;margin: 0 auto;\" \/> such that <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/22b668162b9e64b9aba33d5fe475d65b.jpg\" style=\"display:block;margin: 0 auto;\" \/> and <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/3a226e2600b99ec92d37b7acfbd63d20.jpg\" style=\"display:block;margin: 0 auto;\" \/> (generalizing this algorithm to larger digits requires certain manipulations; while this is not too complicated, to avoid mistakes in the details, I would prefer to stick to a simple example). Then <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/a3a658b41241bf40a1f0e779527b3eb2.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/bf8e1b283d1cfa76314380b74b308b38.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/69c922747089f3affb9d640910047a41.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Multiplying binomials gives <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/274f90358c358641db7ccb2bda5896b1.jpg\" style=\"display:block;margin: 0 auto;\" \/>. At this point, we still have <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/be0a72ca4a77d7c710b99741619c4492.jpg\" style=\"display:block;margin: 0 auto;\" \/> single-digit multiplications: <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/10af5b0ea33a7df7bceb34de5757ba5d.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/66919878cca7db5c80eca9e89c2bca13.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/c9987bea5bc2a1fb928ef2c60bf880fb.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/c6136863142c02a1b6ba260f02544c0c.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Now let's add and subtract <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/1e9707de3bac2233c9343d2d95d5d1bb.jpg\" style=\"display:block;margin: 0 auto;\" \/>After several rearrangements, which I will leave as an exercise for the reader, it results in <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/9015c02c113b58d67e73013fea4ce9dd.jpg\" style=\"display:block;margin: 0 auto;\" \/>\u00a0\u2014 only three single-digit multiplications! (There are some constant coefficients, but they can only be computed by addition and bit shifting).<\/p>\n<p>Don't ask for proof, but <b>the Karatsuba algorithm<\/b> (recursively generalized from the example above) improves the traditional method of multiplication from <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/99577e368b573f762034767d5af05032.jpg\" style=\"display:block;margin: 0 auto;\" \/> operations down to <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/df139625f074f236e50343ecf5f2021a.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Note that this is a real improvement of the algorithm, not an optimization for mental calculations. Indeed, the algorithm is not suitable for mental arithmetic as it incurs significant overhead for recursive operations. Moreover, the effect will not materialize fully until the numbers are sufficiently large (fortunately, even faster methods than the Karatsuba algorithm have emerged: in March 2019, an algorithm was published that requires only <noindex><a rel=\"nofollow\" href=\"https:\/\/web.maths.unsw.edu.au\/~davidharvey\/papers\/nlogn\/\"><i>n log n<\/i><\/a><\/noindex> multiplications; the acceleration only applies to unimaginably large numbers).<\/p>\n<p>This algorithm is described on page 295 of the second volume of \"The Art of Computer Programming\". There, Knuth writes: \"Interestingly, this idea was discovered only in <b>1962<\/b> year\", when a paper describing the Karatsuba algorithm was published. But! In 1995, Karatsuba published a paper titled \"Complexity of Computation\", where he mentions several things: 1) around 1956, Kolmogorov suggested that multiplication cannot be carried out in less than <img decoding=\"async\" alt=\"I received a check from Knuth for 0x$3.00\" src=\"\/wp-content\/uploads\/2019\/05\/87c650ae7cb55d5b5cd1f7d440cadbee.jpg\" style=\"display:block;margin: 0 auto;\" \/> steps; 2) in <b>1960<\/b> year, Karatsuba attended a seminar where Kolmogorov presented his hypothesis n\u00b2. 3) \"Exactly one week later\" Karatsuba developed the \"divide and conquer\" algorithm; 4) in 1962, Kolmogorov wrote and published a paper <i>on behalf of Karatsuba<\/i> describing the algorithm. \"I only learned about this article after it was reprinted.\"<\/p>\n<p>Thus, the mistake lies in the fact that instead of <i>1962<\/i> the year should have been specified. <i>1960<\/i> That's all.<\/p>\n<h1>Analysis<\/h1>\n<p>\n<b>Finding errors didn't require particular skill.<\/b><\/p>\n<ol>\n<li>The first mistake was as trivial as possible and was located in a relatively obvious place (the beginning of the chapter). Any idiot would have found it; I just happened to be that idiot.\n<\/li>\n<li>Finding the second typo required luck and diligence, but not skill. The index for \"Williams\" is located on the penultimate page of the volume, a fairly conspicuous part of the book. I was just flipping through the index (it's not as painful as it seems, because there are Easter eggs hidden in Knuth's indexes. For instance, there are entries in Arabic and Hebrew, and both point to page 66. But neither language is mentioned on that page; instead, it talks about \"languages that read right to left\"). And my attention was caught by the second name. As I usually read Wikipedia, I checked Robin Williams and noticed a discrepancy.\n<\/li>\n<li>I wish I could say that I conducted serious research to find a historical error, but in reality, I just looked at <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Karatsuba_algorithm\">the Wikipedia page on the Karatsuba algorithm.<\/a><\/noindex>In the very first lines, it states: \"The Karatsuba algorithm is a fast multiplication algorithm. Discovered by Anatoly Karatsuba in 1960 and published in 1962.\" After that, it was just a matter of adding two and two.<\/li>\n<\/ol>\n<p>\nIn the future, I would like to find a more significant error, especially in Knuth's code. I would also like to find a bug in the first volume of \"The Art of Computer Programming\". Perhaps I would have, but for some reason, the local library only has volumes 2, 3, and 4A.<\/p>\n<p><b>Financial facts:<\/b><\/p>\n<ul>\n<li>In total, my contribution to TAOCP consists of just three symbols: one addition <i>tr1 != str2<\/i>, one replacement. <i>m<\/i> to <i>n<\/i> and <i>2<\/i> to <i>0<\/i>At a price of $2.56, these are quite profitable symbols; if you were paid such a rate, an article of 1,000 words (on average, about four symbols) would net you ten grand.\n<\/li>\n<li>With three hexadecimal dollars, I share 69th place on the list of the richest depositors of the San Serriffe bank with 29 other citizens (as of May 1, 2019).<\/li>\n<\/ul>\n<h1>Further discussions on checks from Knuth<\/h1>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kevinlawler.com\/knuth\">How to obtain a check from Knuth<\/a><\/noindex>\n<p>General recommendations for finding errors in Knuth's books. Mainly concern technical errors, which I do not have. There is one statement I took seriously:<\/p>\n<blockquote><p>It's better to wait until you\u2019ve gathered a set of errors to send. By combining a few real, but not very significant mistakes, you\u2019ll increase the likelihood that one of them will actually be regarded as an error or suggestion. If you send errors one by one, each may be rejected.<\/p><\/blockquote>\n<p>\nI didn't want to send just silly typos, but I took the advice and only sent the letter when I found a historical error that seemed serious enough.\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/ashutoshmehra.net\/blog\/about\/knuth-reward-checks-and-certificates\/\">Checks of Ashutosh Mehra<\/a><\/noindex>\n<p>Ashutosh Mehra is the third wealthiest contributor in San-Serif with a colossal fortune of 0x$207,f0 in BoSS.\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.truetex.com\/knuthchk.htm\">Check for some non-functional errors in the real TeX code<\/a><\/noindex>\n<\/li>\n<li>Miscellaneous: <noindex><a rel=\"nofollow\" href=\"http:\/\/ed-thelen.org\/KnuthCheck.html\">#1<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"http:\/\/www.club.cc.cmu.edu\/~ajo\/knuth-check.html\">#2<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"http:\/\/joaoff.com\/2008\/02\/25\/a-reward-check-from-donald-knuth\/\">#3<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/www.quora.com\/What-is-it-like-to-receive-a-Knuth-reward-check\">#4<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"http:\/\/www.joshwakefield.com\/knuth\/\">#5<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"http:\/\/www.righto.com\/2011\/05\/my-knuth-reward-check.html\">#6<\/a><\/noindex><\/li>\n<\/ul>\n<p>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/452812\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u043e\u043d\u0430\u043b\u044c\u0434 \u041a\u043d\u0443\u0442\u00a0\u2014 \u0443\u0447\u0451\u043d\u044b\u0439 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0431\u043e\u0442\u0438\u0442\u0441\u044f \u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0432\u043e\u0438\u0445 \u043a\u043d\u0438\u0433, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u044b\u0439 \u0434\u043e\u043b\u043b\u0430\u0440 ($2,56, 0x$1,00) \u0437\u0430 \u043b\u044e\u0431\u0443\u044e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u0443\u044e \u00ab\u043e\u0448\u0438\u0431\u043a\u0443\u00bb, \u0433\u0434\u0435 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0451, \u0447\u0442\u043e \u00ab\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438, \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438, \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u043b\u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u00bb. \u042f \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0442\u0435\u043b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0447\u0435\u043a \u043e\u0442 \u041a\u043d\u0443\u0442\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0435\u0433\u043e \u0432\u044b\u0434\u0430\u044e\u0449\u0435\u043c\u0441\u044f \u0442\u0440\u0443\u0434\u0435 \u00ab\u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u00bb (TAOCP). \u0423\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":25780,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-34164","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0414\u043e\u043d\u0430\u043b\u044c\u0434 \u041a\u043d\u0443\u0442 \u2014 \u0443\u0447\u0451\u043d\u044b\u0439 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0431\u043e\u0442\u0438\u0442\u0441\u044f \u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0432\u043e\u0438\u0445 \u043a\u043d\u0438\u0433, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u044b\u0439 \u0434\u043e\u043b\u043b\u0430\u0440 ($2,56, 0x$1,00) \u0437\u0430 \u043b\u044e\u0431\u0443\u044e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u0443\u044e \u00ab\u043e\u0448\u0438\u0431\u043a\u0443\u00bb, \u0433\u0434\u0435 \u043e\u0448\u0438\u0431\u043a\u043e\u0439.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/news\/ya-poluchil-ot-knuta-chek-na-0x-3-00\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u042f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043e\u0442 \u041a\u043d\u0443\u0442\u0430 \u0447\u0435\u043a \u043d\u0430 0x$3,00 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u043e\u043d\u0430\u043b\u044c\u0434 \u041a\u043d\u0443\u0442 \u2014 \u0443\u0447\u0451\u043d\u044b\u0439 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0431\u043e\u0442\u0438\u0442\u0441\u044f \u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0432\u043e\u0438\u0445 \u043a\u043d\u0438\u0433, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u044b\u0439 \u0434\u043e\u043b\u043b\u0430\u0440 ($2,56, 0x$1,00) \u0437\u0430 \u043b\u044e\u0431\u0443\u044e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u0443\u044e \u00ab\u043e\u0448\u0438\u0431\u043a\u0443\u00bb, \u0433\u0434\u0435 \u043e\u0448\u0438\u0431\u043a\u043e\u0439.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/news\/ya-poluchil-ot-knuta-chek-na-0x-3-00\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:56:44+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:56:44+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47I received a check from Knuth for 0x$3.00 | ProHoster","description":"Donald Knuth is a computer science scholar who cares so much about the correctness of his books that he offers one hexadecimal dollar ($2.56, 0x$1.00) for any discovered 'error.'","canonical_url":"https:\/\/prohoster.info\/en\/blog\/news\/ya-poluchil-ot-knuta-chek-na-0x-3-00","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u042f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043e\u0442 \u041a\u043d\u0443\u0442\u0430 \u0447\u0435\u043a \u043d\u0430 0x$3,00 | ProHoster","og:description":"\u0414\u043e\u043d\u0430\u043b\u044c\u0434 \u041a\u043d\u0443\u0442 \u2014 \u0443\u0447\u0451\u043d\u044b\u0439 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0431\u043e\u0442\u0438\u0442\u0441\u044f \u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0432\u043e\u0438\u0445 \u043a\u043d\u0438\u0433, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u044b\u0439 \u0434\u043e\u043b\u043b\u0430\u0440 ($2,56, 0x$1,00) \u0437\u0430 \u043b\u044e\u0431\u0443\u044e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u0443\u044e \u00ab\u043e\u0448\u0438\u0431\u043a\u0443\u00bb, \u0433\u0434\u0435 \u043e\u0448\u0438\u0431\u043a\u043e\u0439.","og:url":"https:\/\/prohoster.info\/en\/blog\/news\/ya-poluchil-ot-knuta-chek-na-0x-3-00","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:56:44+00:00","article:modified_time":"2019-10-31T18:56:44+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34164","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 18:10:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:27:29","updated":"2026-01-21 18:10:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/34164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=34164"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/34164\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/25780"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=34164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=34164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=34164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}