========================================================= == written by: Thomas Scheidegger, former C# MVP == == http://dnetmaster.net/ == ========================================================= My solution to the PDC 2008 'Hard Hat Challenge' of August 22nd on Channel9: http://channel9.msdn.com/posts/Dan/Countdown-to-PDC2008-Pick-Your-Sessions-Build-Your-Agenda-and-Win-a-Trip/ Used hints posted Aug 28th @ 12:41 AM by mswanson: "Yes, the left side of the image is a frequency chart." "The primary technique is based on a paper from 1952." = Huffman (http://en.wikipedia.org/wiki/Huffman_coding) "if two structures are considered "equal," first pick the structure that contains the element with the lowest overall character value." = as there is an ambiguity in building huffman trees, this looks like a rule to further sort nodes of identical frequency. Thus I wrote a C# huffman method to include this critera. // -------------- Frequency table ('Windings'-font obfuscated) 33, ' ', 20, ',', 2, '.', 1, '0', 9, '1', 13, '2', 10, '3', 5, '4', 4, '5', 6, '6', 3, '7', 4, '8', 1, '?', 1, 'I', 1, 'O', 1, 'S', 3, 'a', 6, 'c', 3, 'd', 8, 'e', 2, 'f', 4, 'h', 5, 'i', 2, 'l', 2, 'm', 4, 'n', 8, 'o', 7, 'p', 2, 'r', 6, 's', 7, 't', 1, 'u', 5, 'w', // ------------- Huffman codes My C# huffman tree generator reports these codes: [' '=<000>] [','=<101>] ['.'=<0100101>] ['0'=<01001001>] ['1'=<1101>] ['2'=<0101>] ['3'=<1001>] ['4'=<11000>] ['5'=<001101>] ['6'=<01111>] ['7'=<011101>] ['8'=<001100>] ['?'=<01001000>] ['I'=<00101111>] ['O'=<00101110>] ['S'=<00101101>] ['a'=<011100>] ['c'=<01101>] ['d'=<010011>] ['e'=<00100>] ['f'=<0010101>] ['h'=<11111>] ['i'=<10001>] ['l'=<0010100>] ['m'=<111101>] ['n'=<11001>] ['o'=<1110>] ['p'=<01000>] ['r'=<111100>] ['s'=<01100>] ['t'=<00111>] ['u'=<00101100>] ['w'=<10000>] // --------------------------------------- Wrote some lines in C# 'scanning' a Channel9 video screenshot for converting the two columns of black & white dots to a boolean-array. // -------- Huffman encoded data (16 black & white dots per column) 'I' 'n' ' ' 't' 'h' 'e' .... 00101111 11001 000 00111 11111 00100 .... // ---------------- huffman decoded plain text: In the www.microsoftpdc.com description of Open Space without open space, what does this spell? 5, 17, 38, 47, 138, 144, 165, 166, 208, 215, 221, 222, 223, 231, 237, 266, 281, 335, 343, 364 => What a shock, another puzzle: // -------- text from http://www.microsoftpdc.com/Agenda/UnSessions.aspx -------- OpenSpaceisawaytobringtogethergroupsofpeopleinterestedinacommontopictohavea ninteractivediscussion.InanOpenSpacesession,theremaybeanexpertwhoispassiona teaboutatopicpresentingtoanaudienceortheremaybeasmallgroupofpeoplediscussin ganidea.FourprinciplesofOpenSpace:1.Whoevercomesaretherightpeopletobethere2 .Whateverhappensistheonlythingthatcouldhavehappened3.Wheneveritstarts == 'Softwareplusservices' ---------- I started my work some time after mswanson posted additional hints on aug 28nd, and still nobody posted a solution. It took me about 3hrs of C# coding, about 8hrs of searching/guessing/counting/discarding, and I had to do a deep refresh of my basic huffman knowledge ;-) === Thanks Microsoft, nice done!