{"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\/da\/blog\/news\/ya-poluchil-ot-knuta-chek-na-0x-3-00","title":{"rendered":"Jeg modtog en check fra Knut p\u00e5 0x$3,00","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b>Donald Knuth<\/b>\u00a0\u2014 en forsker inden for datalogi, der bekymrer sig s\u00e5 meget om n\u00f8jagtigheden af sine b\u00f8ger, at han tilbyder <b>en hexadecimal dollar<\/b> ($2,56, 0x$1,00) for enhver fundet \"fejl\", hvor en fejl defineres som alt, hvad der er \"teknisk, historisk, typografisk eller politisk forkert\". Jeg \u00f8nskede virkelig at modtage en check fra Knuth, s\u00e5 jeg besluttede at lede efter fejl i hans fremragende v\u00e6rk <b>\"Kunstens Programmering\"<\/b> (TAOCP). Jeg lykkedes med at finde tre. Trods ordet, Knuth sendte en check p\u00e5 <b>0x$3,00<\/b>.<\/p>\n<p><img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/ea8c328c9f7f67d1e2c0d729268aca01.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSom du kan se, er dette ikke en rigtig check. Tidligere sendte Knuth rigtige checks, men stoppede i 2008 p\u00e5 grund af <noindex><a rel=\"nofollow\" href=\"https:\/\/www-cs-faculty.stanford.edu\/~knuth\/news08.html\">ubarmhjertig svindel<\/a><\/noindex>. Nu sender han \"personlige indbetalingscertifikater\" fra <noindex><a rel=\"nofollow\" href=\"https:\/\/www-cs-faculty.stanford.edu\/~knuth\/boss.html\">San Serriff-banken<\/a><\/noindex> (BoSS). Han siger, at han er villig til at sende rigtige penge, hvis n\u00f8dvendigt, men det ser ud til at v\u00e6re for besv\u00e6rligt.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nJeg fandt to trykfejl og en historisk fejl. Jeg vil n\u00e6vne dem i r\u00e6kkef\u00f8lge efter faldende trivialisering.<\/p>\n<h1>Trykfejl nr. 1<\/h1>\n<p>\nDen f\u00f8rste trykfejl findes p\u00e5 side 392 af tredje bind \"Sortering og s\u00f8gning\", ottende linje fra bunden: \"Efter et mislykket s\u00f8gning er det nogle gange (sometime) \u00f8nskeligt at indtaste en ny post i tabellen, der indeholder <i>K<\/i>; metoden, der g\u00f8r dette, kaldes s\u00f8ge- og inds\u00e6tningsalgoritmen. Fejlen er, at i stedet for <b><i>sometime<\/i><\/b> skal v\u00e6re <b><i>sometimes<\/i><\/b>.<\/p>\n<p>Selvf\u00f8lgelig er der ikke noget overraskende ved en s\u00e5dan fejl. I denne artikel er der uden tvivl flere trykfejl (ingen bel\u00f8nninger for at finde dem). Det, der faktisk er overraskende, er, at de er blevet overset s\u00e5 l\u00e6nge. Side 392 er ikke begravet dybt i matematikafsnittet, det er <b>den allerf\u00f8rste side<\/b> af det sjette kapitel \"S\u00f8gning\"! M\u00e5ske en af de mest l\u00e6ste sektioner i bogen. Id\u00e9en er, at der burde v\u00e6re f\u00e6rre trykfejl der, men nej.<\/p>\n<p>Forresten, hvis du nogensinde har overvejet at l\u00e6se TAOCP, s\u00e5 pr\u00f8v. Mange vil sige, at det er <b>en opslagsbog<\/b>, der ikke er beregnet til direkte l\u00e6sning, men det er ikke sandt. Forfatteren har en klar synsvinkel og en s\u00e6rpr\u00e6get stil. Det eneste, der hindrer l\u00e6sbarheden, er kompleksiteten af matematikken. Men der er en simpel l\u00f8sning: L\u00e6s, indtil du n\u00e5r til den matematik, du ikke forst\u00e5r, spring over den, og \u00e5bn n\u00e6ste afdeling, som du kan forst\u00e5. P\u00e5 den m\u00e5de springer jeg over mindst 80 % af bogen, men de resterende 20 % er fremragende!<\/p>\n<p>Det siges ogs\u00e5, at TAOCP <b>er irrelevant<\/b>, for\u00e6ldet eller p\u00e5 anden m\u00e5de uanvendelig til \u00abrigtig programmering\u00bb. Dette er ogs\u00e5 usandt. For eksempel behandles s\u00f8gning efter et element i et usorteret array i f\u00f8rste sektion efter introduktionen. Den simpleste algoritme er kendt af alle programm\u00f8rer. Start pegeren i begyndelsen af arrayet, og udf\u00f8r derefter f\u00f8lgende trin i en l\u00f8kke:<\/p>\n<ol>\n<li>Tjek om det nuv\u00e6rende element er det \u00f8nskede. Hvis ja, return\u00e9r det; ellers\n<\/li>\n<li>Tjek om pegeren er uden for arrayet. Hvis ja, return\u00e9r en fejl; ellers\n<\/li>\n<li>\u00d8g pegeren og forts\u00e6t.<\/li>\n<\/ol>\n<p>\nLad os nu overveje: hvor mange gr\u00e6nsekontroller kr\u00e6ver denne algoritme i gennemsnit? I v\u00e6rste fald, n\u00e5r arrayet ikke indeholder elementet, kr\u00e6ves der en kontrol for hvert element i listen, og i gennemsnit vil det v\u00e6re noget i stil med <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/6c99f945807d8a8aeac1d42854c83295.jpg\" style=\"display:block;margin: 0 auto;\" \/>. En klogere s\u00f8gealgoritme kan klare sig med kun \u00e9n gr\u00e6nsekontrol. F\u00f8j det \u00f8nskede element til slutningen af arrayet, start derefter pegeren i begyndelsen af arrayet og udf\u00f8r f\u00f8lgende trin i en l\u00f8kke:<\/p>\n<ol>\n<li>Tjek om det nuv\u00e6rende element er det \u00f8nskede. Hvis ja, return\u00e9r svaret, hvis pegeren er inden for arrayet, eller en fejl, hvis ikke. Ellers\n<\/li>\n<li>\u00d8g pegeren og forts\u00e6t.<\/li>\n<\/ol>\n<p>\nUanset hvad, vil elementet blive fundet, og gr\u00e6nsekontrollen udf\u00f8res kun \u00e9n gang, n\u00e5r det sker. Dette er en dyb id\u00e9, men den er enkel nok selv for en nybegyndende programm\u00f8r. Jeg kan nok ikke tale om relevansen af arbejdet for andre, men jeg kunne straks anvende denne visdom i b\u00e5de mit personlige og professionelle kode. Bogen TAOCP er fuld af s\u00e5danne perler (for retf\u00e6rdighedens skyld, der er ogs\u00e5 mange underlige ting, s\u00e5som <noindex><a rel=\"nofollow\" href=\"https:\/\/nickdrozd.github.io\/2018\/11\/02\/bubble.html\">bubblesort<\/a><\/noindex>).<\/p>\n<blockquote><p><i>\u00abS\u00f8gningen, s\u00f8gningen<br \/>\nS\u00e5 l\u00e6nge<br \/>\nS\u00f8gningen, s\u00f8gningen<br \/>\nJeg ville bare danse\u00bb<\/i> <br \/>\n\u2014 Luther Vandross, \u00abS\u00f8gning\u00bb (1980)<\/p><\/blockquote>\n<p><\/p>\n<h1>Trykfejl nr. 2<\/h1>\n<p>\nDen anden trykfejl er i bind 4A, \"Kombinatoriske algoritmer\", del 1. P\u00e5 side 60 beskrives en opgave med at planl\u00e6gge optr\u00e6dener for komikere i forskellige kasinoer. Som eksempel n\u00e6vnes flere virkelige komikere, herunder Lily Tomlin, Weird Al Yankovic og Robin Williams, som stadig var i live, da bogen blev udgivet. Knuth angiver altid de fulde navne i indekset, s\u00e5 Williams n\u00e6vnes p\u00e5 side 882 som \"Williams, Robin McLaurin\". Men hans mellemnavn slutter med \"n\" og ikke \"m\", det vil sige McLaurin.<\/p>\n<p>McLaurin er hans moders efternavn. Hun var oldebarn af Anselm Joseph McLaurin, den 34. guvern\u00f8r i Mississippi. Hans embedsperiode huskes \u00e5benbart ikke for noget godt. Fra bogen <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: en historie\"<\/a><\/noindex>:<\/p>\n<blockquote><p><i>\"Det vigtigste begivenhed under McLaurins administration var, at De Forenede Stater erkl\u00e6rede krig mod Spanien i for\u00e5ret 1898... Desv\u00e6rre gav krigen muligvis nogle offentlige embedsm\u00e6nd mulighed for at praktisere bestikkelse. McLaurin blev beskyldt for forskellige tvivlsomme praksisser, herunder nepotisme og overdreven brug af ben\u00e5dning. I en tid med afholdenhedsbev\u00e6gelsen blev guvern\u00f8ren kritiseret for sin alkoholisme, som han offentligt tilstod.\"<\/i><\/p><\/blockquote>\n<p><\/p>\n<h1>Historisk fejl<\/h1>\n<p>\nLad os overveje <b>den traditionelle multiplikationsalgoritme<\/b> fra skolepensum. Hvor mange en-cifrede multiplikationer kr\u00e6ver den? Antag, at du multiplicerer <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/d15239ad41c6fc6953641760f9ffcfdd.jpg\" style=\"display:block;margin: 0 auto;\" \/>-cifret tal <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/b731d35571751cec684ca767411a023d.jpg\" style=\"display:block;margin: 0 auto;\" \/> og f\u00e5 en fungerende kommando. <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/c1f7221e05cbca33ff54da5b6f665dd2.jpg\" style=\"display:block;margin: 0 auto;\" \/>-cifret <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/390eee500fc99f74a2252db0b3ba6fe4.jpg\" style=\"display:block;margin: 0 auto;\" \/>. F\u00f8rst multiplicerer du det f\u00f8rste ciffer <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/8d4db48caef1e8cceac94ae2fca4fc24.jpg\" style=\"display:block;margin: 0 auto;\" \/> med hvert ciffer <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/dccbe5f9c5f2fe9bd3538f567e2bb214.jpg\" style=\"display:block;margin: 0 auto;\" \/> en ad gangen. Dern\u00e6st multiplicerer du det andet ciffer <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/b76bfeb3fb4f60f9f1ac66dcb937f736.jpg\" style=\"display:block;margin: 0 auto;\" \/> med hvert ciffer <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/bbe37fb224a8e6115872a2b2cdefa26e.jpg\" style=\"display:block;margin: 0 auto;\" \/> en ad gangen og s\u00e5 videre, indtil du har passeret alle cifre <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/df227a29c1bc24a1c7cbf9269c764b21.jpg\" style=\"display:block;margin: 0 auto;\" \/>. S\u00e5ledes kr\u00e6ver traditionel multiplikation <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/f0c5ea2abdccff4a5b92fd1c70706d21.jpg\" style=\"display:block;margin: 0 auto;\" \/> primitive multiplikationer. Is\u00e6r kr\u00e6ver multiplikationen af to tal med <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/f609965f49d095d59264e127f6db0e64.jpg\" style=\"display:block;margin: 0 auto;\" \/> cifre <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/fb16f262bc1b872f6e8c003be2efe2d8.jpg\" style=\"display:block;margin: 0 auto;\" \/> en-cifrede multiplikationer.<\/p>\n<p>Det er ikke godt, men processen kan optimeres ved hj\u00e6lp af en metode udviklet af den sovjetiske matematiker Anatolij Alexejevitsj Karatsuba. Antag, at <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/3f42481650d00fe8cf1083be9479958f.jpg\" style=\"display:block;margin: 0 auto;\" \/> og <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/756872cc2c490be54640606bba6cb8c7.jpg\" style=\"display:block;margin: 0 auto;\" \/>\u00a0- to-cifrede decimaler; det vil sige, at der findes tal <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/4f1f27cc95638aab9f6836f809b42cc1.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/0192ac28c89bfd24a20a1fc1b06ce1a6.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/bebb062d37ca6e82ce30589b5f790a0f.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/907b83653f451f4a861109f2244b175a.jpg\" style=\"display:block;margin: 0 auto;\" \/> s\u00e5ledes at <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/22b668162b9e64b9aba33d5fe475d65b.jpg\" style=\"display:block;margin: 0 auto;\" \/> og <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/3a226e2600b99ec92d37b7acfbd63d20.jpg\" style=\"display:block;margin: 0 auto;\" \/> (generaliseringen af denne algoritme til st\u00f8rre cifre kr\u00e6ver visse manipulationer; selvom det ikke er s\u00e5 sv\u00e6rt, vil jeg hellere holde mig til et simpelt eksempel for ikke at lave fejl i detaljerne). S\u00e5 <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/a3a658b41241bf40a1f0e779527b3eb2.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/bf8e1b283d1cfa76314380b74b308b38.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/69c922747089f3affb9d640910047a41.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Multiplikation af to led giver <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/274f90358c358641db7ccb2bda5896b1.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Indtil nu har vi stadig <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/be0a72ca4a77d7c710b99741619c4492.jpg\" style=\"display:block;margin: 0 auto;\" \/> en-cifrede multiplikationer: <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/10af5b0ea33a7df7bceb34de5757ba5d.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/66919878cca7db5c80eca9e89c2bca13.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/c9987bea5bc2a1fb928ef2c60bf880fb.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/c6136863142c02a1b6ba260f02544c0c.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Lad os nu l\u00e6gge sammen og tr\u00e6kke fra <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/1e9707de3bac2233c9343d2d95d5d1bb.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Efter flere omarrangementer, som jeg vil lade v\u00e6re som en opgave for l\u00e6seren, f\u00e5r man <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/9015c02c113b58d67e73013fea4ce9dd.jpg\" style=\"display:block;margin: 0 auto;\" \/>\u00a0\u2014 i alt tre ensteges multiplikationer! (Der er nogle permanente koefficienter, men de kan kun beregnes ved addition og bit-shifting).<\/p>\n<p>Bed ikke om bevis, men <b>Karatsuba-algoritmen<\/b> (rekursivt generaliseret fra det ovenfor n\u00e6vnte eksempel) forbedrer den traditionelle multiplikationsmetode fra <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/99577e368b573f762034767d5af05032.jpg\" style=\"display:block;margin: 0 auto;\" \/> operationer til <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/df139625f074f236e50343ecf5f2021a.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Bem\u00e6rk, at dette er en reel forbedring af algoritmen og ikke en optimering til mentale beregninger. Faktisk er algoritmen ikke velegnet til hovedregning, da den kr\u00e6ver store omkostninger til rekursive operationer. Desuden vil effekten ikke fuldt ud vise sig, f\u00f8r tallene bliver store nok (heldigvis kom der endnu hurtigere metoder efter Karatsuba-algoritmen: i marts 2019 blev der offentliggjort en algoritme, der kun kr\u00e6ver <noindex><a rel=\"nofollow\" href=\"https:\/\/web.maths.unsw.edu.au\/~davidharvey\/papers\/nlogn\/\"><i>n log n<\/i><\/a><\/noindex> multiplikationer; accelerationen g\u00e6lder kun for ubegribeligt store tal).<\/p>\n<p>Denne algoritme er beskrevet p\u00e5 side 295 i den anden bind af 'De beregnede algoritmer'. Der skriver Knuth: 'Det er interessant, at denne id\u00e9 kun blev opdaget i <b>1962<\/b> \u00e5ret', da der blev offentliggjort en artikel, der beskrev Karatsuba-algoritmen. Men! I 1995 offentliggjorde Karatsuba en artikel 'Computationskompleksitet', hvor han n\u00e6vner flere ting: 1) Omkring 1956 antog Kolmogorov, at multiplikation ikke kan udf\u00f8res med mindre end <img decoding=\"async\" alt=\"Jeg modtog en check fra Knut p\u00e5 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/87c650ae7cb55d5b5cd1f7d440cadbee.jpg\" style=\"display:block;margin: 0 auto;\" \/> trin; 2) i <b>1960<\/b> \u00e5ret deltog Karatsuba i et seminar, hvor Kolmogorov fremlagde sin hypotese n\u00b2. 3) 'Bare en uge' senere udviklede Karatsuba 'divide and conquer'-algoritmen; 4) i 1962 skrev og offentliggjorde Kolmogorov en artikel <i>p\u00e5 vegne af Karatsuba<\/i> med beskrivelsen af algoritmen. 'Jeg h\u00f8rte f\u00f8rst om denne artikel, efter at den blev genoptrykt.'<\/p>\n<p>S\u00e5ledes ligger fejlen i, at i stedet for <i>1962<\/i> skal der angives <i>1960<\/i> \u00e5ret. Det er det hele.<\/p>\n<h1>Analyse<\/h1>\n<p>\n<b>Fejls\u00f8gningen kr\u00e6vede ikke stor dygtighed.<\/b><\/p>\n<ol>\n<li>Den f\u00f8rste fejl var s\u00e5 banal, som det overhovedet kan v\u00e6re, og l\u00e5 et relativt synligt sted (starten af kapitlet). Enhver idiot ville have fundet den; det var bare mig, der var den idiot.\n<\/li>\n<li>At finde den anden fejl kr\u00e6vede held og flid, men ikke n\u00f8dvendigvis dygtighed. Indekset for 'Williams' findes p\u00e5 n\u00e6stsidste side af bindet, en ganske v\u00e6sentlig del af bogen. Jeg var lige i gang med at bladre i indekslisten (det er ikke s\u00e5 slemt, som det lyder, fordi Knuths indekser gemmer p\u00e5 p\u00e5ske\u00e6g. For eksempel er der poster p\u00e5 arabisk og hebraisk, og begge henviser til side 66. Men p\u00e5 denne side omtales ingen af \u200b\u200bde sprog; i stedet n\u00e6vnes 'sprog, der l\u00e6ses fra h\u00f8jre mod venstre'). Og mit opm\u00e6rksomhed blev fanget af det andet navn. Da jeg normalt l\u00e6ser Wikipedia, tjekkede jeg Robin Williams og opdagede en uoverensstemmelse.\n<\/li>\n<li>Jeg ville \u00f8nske, jeg kunne sige, at jeg havde udf\u00f8rt en seri\u00f8s unders\u00f8gelse for at finde den historiske fejl, men jeg kiggede faktisk bare p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Karatsuba_algorithm\">Wikipedia-siden om Karatsuba-algoritmen<\/a><\/noindex>. I de f\u00f8rste s\u00e6tninger st\u00e5r der: 'Karatsuba-algoritmen er en algoritme til hurtig multiplikation. Opdaget af Anatoly Karatsuba i 1960 og offentliggjort i 1962'. Efter dette var det kun at l\u00e6gge to og to sammen.<\/li>\n<\/ol>\n<p>\nI fremtiden ville jeg gerne finde en mere v\u00e6sentlig fejl, is\u00e6r i Knuths kode. Jeg ville ogs\u00e5 gerne finde en fejl i f\u00f8rste bind af 'Fundamentale algoritmer'. M\u00e5ske ville jeg finde en, men i det lokale bibliotek findes der af en eller anden grund kun bind 2, 3 og 4A.<\/p>\n<p><b>Finansielle fakta:<\/b><\/p>\n<ul>\n<li>I alt best\u00e5r mit bidrag til TAOCP kun af tre tegn: \u00e9n tilf\u00f8jelse <i>s<\/i>, \u00e9n erstatning <i>m<\/i> og f\u00e5 en fungerende kommando. <i>n<\/i> og <i>2<\/i> og f\u00e5 en fungerende kommando. <i>0<\/i>. Til $2,56 er det ret lukrative tegn; hvis du blev betalt s\u00e5dan, ville en artikel p\u00e5 1000 ord (i gennemsnit fire tegn) give dig ti enheder.\n<\/li>\n<li>Med tre hexadecimale dollars deler jeg sammen med 29 andre borgere 69. pladsen p\u00e5 listen over de rigeste indskydere i banken San Serriff (pr. 1. maj 2019).<\/li>\n<\/ul>\n<h1>Andre diskussioner om checks fra Knuth<\/h1>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kevinlawler.com\/knuth\">Hvordan man f\u00e5r en check fra Knuth<\/a><\/noindex>\n<p>Generelle anbefalinger til fejlfinding i Knuths b\u00f8ger. De handler prim\u00e6rt om tekniske fejl, som jeg ikke har. Der er \u00e9n s\u00e6tning, jeg tog alvorligt:<\/p>\n<blockquote><p>Det er bedre at vente, indtil du har samlet et s\u00e6t fejl til at sende. Ved at samle flere reelle, men ikke s\u00e6rlig v\u00e6rdifulde fejl, \u00f8ger du chancerne for, at en af dem faktisk bliver anset som en fejl eller en anbefaling. Hvis du sender fejl \u00e9n ad gangen, kan hver enkelt blive afvist.<\/p><\/blockquote>\n<p>\nJeg \u00f8nskede ikke bare at sende ligegyldige skrivefejl, s\u00e5 jeg fulgte r\u00e5det og sendte brevet f\u00f8rst, da jeg fandt en historisk fejl, som syntes at v\u00e6re alvorlig nok.\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/ashutoshmehra.net\/blog\/about\/knuth-reward-checks-and-certificates\/\">Checks fra Ashutosh Mehra<\/a><\/noindex>\n<p>Ashutosh Mehra \u2013 den tredje rigeste bidragyder i San-Seriff med en kolossal formue p\u00e5 0x$207,f0 i BoSS.\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.truetex.com\/knuthchk.htm\">Check for nogle ikke-funktionelle fejl i den faktiske TeX-kode<\/a><\/noindex>\n<\/li>\n<li>Diverse: <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>Kilde: <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.3 - 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\/da\/blog\/news\/ya-poluchil-ot-knuta-chek-na-0x-3-00\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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\udd47Jeg modtog en check fra Knuth p\u00e5 0x$3,00 | ProHoster","description":"Donald Knuth \u2013 en computerforsker, der er s\u00e5 optaget af korrektheden af sine b\u00f8ger, at han tilbyder en hex-dollar ($2,56, 0x$1,00) for enhver fundet \"fejl\".","canonical_url":"https:\/\/prohoster.info\/da\/blog\/news\/ya-poluchil-ot-knuta-chek-na-0x-3-00","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/34164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=34164"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/34164\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/25780"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=34164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=34164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=34164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}