File Export
-
What a team !
-
Finished the table!
// QRCode Error Correction // by Pianofire // Version WIP struct ECBlock string name // Version-Level int g1b // Group 1 Blocks int g1d // Data Codewords in Group 1 int g2b // Group 2 Blocks int g2d // Data Codewords in Group 2 int tdc // Total Data Codewords endstruct ECBlock ecBlocks = [ [ .name = "1-L", .g1b = 1, .g1d = 19, .g2b = 0, .g2d = 0, .tdc = 19 ], [ .name = "1-M", .g1b = 1, .g1d = 16, .g2b = 0, .g2d = 0, .tdc = 16 ], [ .name = "1-Q", .g1b = 1, .g1d = 13, .g2b = 0, .g2d = 0, .tdc = 13 ], [ .name = "1-H", .g1b = 1, .g1d = 9, .g2b = 0, .g2d = 0, .tdc = 9 ], [ .name = "2-L", .g1b = 1, .g1d = 34, .g2b = 0, .g2d = 0, .tdc = 34 ], [ .name = "2-M", .g1b = 1, .g1d = 28, .g2b = 0, .g2d = 0, .tdc = 28 ], [ .name = "2-Q", .g1b = 1, .g1d = 22, .g2b = 0, .g2d = 0, .tdc = 22 ], [ .name = "2-H", .g1b = 1, .g1d = 16, .g2b = 0, .g2d = 0, .tdc = 16 ], [ .name = "3-L", .g1b = 1, .g1d = 55, .g2b = 0, .g2d = 0, .tdc = 55 ], [ .name = "3-M", .g1b = 1, .g1d = 44, .g2b = 0, .g2d = 0, .tdc = 44 ], [ .name = "3-Q", .g1b = 2, .g1d = 17, .g2b = 0, .g2d = 0, .tdc = 34 ], [ .name = "3-H", .g1b = 2, .g1d = 13, .g2b = 0, .g2d = 0, .tdc = 26 ], [ .name = "4-L", .g1b = 1, .g1d = 80, .g2b = 0, .g2d = 0, .tdc = 80 ], [ .name = "4-M", .g1b = 2, .g1d = 32, .g2b = 0, .g2d = 0, .tdc = 64 ], [ .name = "4-Q", .g1b = 2, .g1d = 24, .g2b = 0, .g2d = 0, .tdc = 48 ], [ .name = "4-H", .g1b = 4, .g1d = 9, .g2b = 0, .g2d = 0, .tdc = 36 ], [ .name = "5-L", .g1b = 1, .g1d = 108, .g2b = 0, .g2d = 0, .tdc = 108 ], [ .name = "5-M", .g1b = 2, .g1d = 43, .g2b = 0, .g2d = 0, .tdc = 86 ], [ .name = "5-Q", .g1b = 2, .g1d = 15, .g2b = 2, .g2d = 16, .tdc = 62 ], [ .name = "5-H", .g1b = 2, .g1d = 11, .g2b = 2, .g2d = 12, .tdc = 46 ], [ .name = "6-L", .g1b = 2, .g1d = 68, .g2b = 0, .g2d = 0, .tdc = 136 ], [ .name = "6-M", .g1b = 4, .g1d = 27, .g2b = 0, .g2d = 0, .tdc = 108 ], [ .name = "6-Q", .g1b = 4, .g1d = 19, .g2b = 0, .g2d = 0, .tdc = 76 ], [ .name = "6-H", .g1b = 4, .g1d = 15, .g2b = 0, .g2d = 0, .tdc = 60 ], [ .name = "7-L", .g1b = 2, .g1d = 78, .g2b = 0, .g2d = 0, .tdc = 156 ], [ .name = "7-M", .g1b = 4, .g1d = 31, .g2b = 0, .g2d = 0, .tdc = 124 ], [ .name = "7-Q", .g1b = 2, .g1d = 14, .g2b = 4, .g2d = 15, .tdc = 88 ], [ .name = "7-H", .g1b = 4, .g1d = 13, .g2b = 1, .g2d = 14, .tdc = 66 ], [ .name = "8-L", .g1b = 2, .g1d = 97, .g2b = 0, .g2d = 0, .tdc = 194 ], [ .name = "8-M", .g1b = 2, .g1d = 38, .g2b = 2, .g2d = 39, .tdc = 154 ], [ .name = "8-Q", .g1b = 4, .g1d = 18, .g2b = 2, .g2d = 19, .tdc = 110 ], [ .name = "8-H", .g1b = 4, .g1d = 14, .g2b = 2, .g2d = 15, .tdc = 86 ], [ .name = "9-L", .g1b = 2, .g1d = 116, .g2b = 0, .g2d = 0, .tdc = 232 ], [ .name = "9-M", .g1b = 3, .g1d = 36, .g2b = 2, .g2d = 37, .tdc = 182 ], [ .name = "9-Q", .g1b = 4, .g1d = 16, .g2b = 4, .g2d = 17, .tdc = 132 ], [ .name = "9-H", .g1b = 4, .g1d = 12, .g2b = 4, .g2d = 13, .tdc = 100 ], [ .name = "10-L", .g1b = 2, .g1d = 68, .g2b = 2, .g2d = 69, .tdc = 274 ], [ .name = "10-M", .g1b = 4, .g1d = 43, .g2b = 1, .g2d = 44, .tdc = 216 ], [ .name = "10-Q", .g1b = 6, .g1d = 19, .g2b = 2, .g2d = 20, .tdc = 154 ], [ .name = "10-H", .g1b = 6, .g1d = 15, .g2b = 2, .g2d = 16, .tdc = 122 ], [ .name = "11-L", .g1b = 4, .g1d = 81, .g2b = 0, .g2d = 0, .tdc = 324 ], [ .name = "11-M", .g1b = 1, .g1d = 50, .g2b = 4, .g2d = 51, .tdc = 254 ], [ .name = "11-Q", .g1b = 4, .g1d = 22, .g2b = 4, .g2d = 23, .tdc = 180 ], [ .name = "11-H", .g1b = 3, .g1d = 12, .g2b = 8, .g2d = 13, .tdc = 140 ], [ .name = "12-L", .g1b = 2, .g1d = 92, .g2b = 2, .g2d = 93, .tdc = 370 ], [ .name = "12-M", .g1b = 6, .g1d = 36, .g2b = 2, .g2d = 37, .tdc = 290 ], [ .name = "12-Q", .g1b = 4, .g1d = 20, .g2b = 6, .g2d = 21, .tdc = 206 ], [ .name = "12-H", .g1b = 7, .g1d = 14, .g2b = 4, .g2d = 15, .tdc = 158 ], [ .name = "13-L", .g1b = 4, .g1d = 107, .g2b = 0, .g2d = 0, .tdc = 428 ], [ .name = "13-M", .g1b = 8, .g1d = 37, .g2b = 1, .g2d = 38, .tdc = 334 ], [ .name = "13-Q", .g1b = 8, .g1d = 20, .g2b = 4, .g2d = 21, .tdc = 244 ], [ .name = "13-H", .g1b = 12, .g1d = 11, .g2b = 4, .g2d = 12, .tdc = 180 ], [ .name = "14-L", .g1b = 3, .g1d = 115, .g2b = 1, .g2d = 116, .tdc = 461 ], [ .name = "14-M", .g1b = 4, .g1d = 40, .g2b = 5, .g2d = 41, .tdc = 365 ], [ .name = "14-Q", .g1b = 11, .g1d = 16, .g2b = 5, .g2d = 17, .tdc = 261 ], [ .name = "14-H", .g1b = 11, .g1d = 12, .g2b = 5, .g2d = 13, .tdc = 197 ], [ .name = "15-L", .g1b = 5, .g1d = 87, .g2b = 1, .g2d = 88, .tdc = 523 ], [ .name = "15-M", .g1b = 5, .g1d = 41, .g2b = 5, .g2d = 42, .tdc = 415 ], [ .name = "15-Q", .g1b = 5, .g1d = 24, .g2b = 7, .g2d = 25, .tdc = 295 ], [ .name = "15-H", .g1b = 11, .g1d = 12, .g2b = 7, .g2d = 13, .tdc = 223 ], [ .name = "16-L", .g1b = 5, .g1d = 98, .g2b = 1, .g2d = 99, .tdc = 589 ], [ .name = "16-M", .g1b = 7, .g1d = 45, .g2b = 3, .g2d = 46, .tdc = 453 ], [ .name = "16-Q", .g1b = 15, .g1d = 19, .g2b = 2, .g2d = 20, .tdc = 325 ], [ .name = "16-H", .g1b = 3, .g1d = 15, .g2b = 13, .g2d = 16, .tdc = 253 ], [ .name = "17-L", .g1b = 1, .g1d = 107, .g2b = 5, .g2d = 108, .tdc = 647 ], [ .name = "17-M", .g1b = 10, .g1d = 46, .g2b = 1, .g2d = 47, .tdc = 507 ], [ .name = "17-Q", .g1b = 1, .g1d = 22, .g2b = 15, .g2d = 23, .tdc = 367 ], [ .name = "17-H", .g1b = 2, .g1d = 14, .g2b = 17, .g2d = 15, .tdc = 283 ], [ .name = "18-L", .g1b = 5, .g1d = 120, .g2b = 1, .g2d = 121, .tdc = 721 ], [ .name = "18-M", .g1b = 9, .g1d = 43, .g2b = 4, .g2d = 44, .tdc = 563 ], [ .name = "18-Q", .g1b = 17, .g1d = 22, .g2b = 1, .g2d = 23, .tdc = 397 ], [ .name = "18-H", .g1b = 2, .g1d = 14, .g2b = 19, .g2d = 15, .tdc = 313 ], [ .name = "19-L", .g1b = 3, .g1d = 113, .g2b = 4, .g2d = 114, .tdc = 795 ], [ .name = "19-M", .g1b = 3, .g1d = 44, .g2b = 11, .g2d = 45, .tdc = 627 ], [ .name = "19-Q", .g1b = 17, .g1d = 21, .g2b = 4, .g2d = 22, .tdc = 445 ], [ .name = "19-H", .g1b = 9, .g1d = 13, .g2b = 16, .g2d = 14, .tdc = 341 ], [ .name = "20-L", .g1b = 3, .g1d = 107, .g2b = 5, .g2d = 108, .tdc = 861 ], [ .name = "20-M", .g1b = 3, .g1d = 41, .g2b = 13, .g2d = 42, .tdc = 669 ], [ .name = "20-Q", .g1b = 15, .g1d = 24, .g2b = 5, .g2d = 25, .tdc = 485 ], [ .name = "20-H", .g1b = 15, .g1d = 15, .g2b = 10, .g2d = 16, .tdc = 385 ], [ .name = "21-L", .g1b = 4, .g1d = 116, .g2b = 4, .g2d = 117, .tdc = 932 ], [ .name = "21-M", .g1b = 17, .g1d = 42, .g2b = 0, .g2d = 0, .tdc = 714 ], [ .name = "21-Q", .g1b = 17, .g1d = 22, .g2b = 6, .g2d = 23, .tdc = 512 ], [ .name = "21-H", .g1b = 19, .g1d = 16, .g2b = 6, .g2d = 17, .tdc = 406 ], [ .name = "22-L", .g1b = 2, .g1d = 111, .g2b = 7, .g2d = 112, .tdc = 1006 ], [ .name = "22-M", .g1b = 17, .g1d = 46, .g2b = 0, .g2d = 0, .tdc = 782 ], [ .name = "22-Q", .g1b = 7, .g1d = 24, .g2b = 16, .g2d = 25, .tdc = 568 ], [ .name = "22-H", .g1b = 34, .g1d = 13, .g2b = 0, .g2d = 0, .tdc = 442 ], [ .name = "23-L", .g1b = 4, .g1d = 121, .g2b = 5, .g2d = 122, .tdc = 1094 ], [ .name = "23-M", .g1b = 4, .g1d = 47, .g2b = 14, .g2d = 48, .tdc = 860 ], [ .name = "23-Q", .g1b = 11, .g1d = 24, .g2b = 14, .g2d = 25, .tdc = 614 ], [ .name = "23-H", .g1b = 16, .g1d = 15, .g2b = 14, .g2d = 16, .tdc = 464 ], [ .name = "24-L", .g1b = 6, .g1d = 117, .g2b = 4, .g2d = 118, .tdc = 1174 ], [ .name = "24-M", .g1b = 6, .g1d = 45, .g2b = 14, .g2d = 46, .tdc = 914 ], [ .name = "24-Q", .g1b = 11, .g1d = 24, .g2b = 16, .g2d = 25, .tdc = 664 ], [ .name = "24-H", .g1b = 30, .g1d = 16, .g2b = 2, .g2d = 17, .tdc = 514 ], [ .name = "25-L", .g1b = 8, .g1d = 106, .g2b = 4, .g2d = 107, .tdc = 1276 ], [ .name = "25-M", .g1b = 8, .g1d = 47, .g2b = 13, .g2d = 48, .tdc = 1000 ], [ .name = "25-Q", .g1b = 7, .g1d = 24, .g2b = 22, .g2d = 25, .tdc = 718 ], [ .name = "25-H", .g1b = 22, .g1d = 15, .g2b = 13, .g2d = 16, .tdc = 538 ], [ .name = "26-L", .g1b = 10, .g1d = 114, .g2b = 2, .g2d = 115, .tdc = 1370 ], [ .name = "26-M", .g1b = 19, .g1d = 46, .g2b = 4, .g2d = 47, .tdc = 1062 ], [ .name = "26-Q", .g1b = 28, .g1d = 22, .g2b = 6, .g2d = 23, .tdc = 754 ], [ .name = "26-H", .g1b = 33, .g1d = 16, .g2b = 4, .g2d = 17, .tdc = 596 ], [ .name = "27-L", .g1b = 8, .g1d = 122, .g2b = 4, .g2d = 123, .tdc = 1468 ], [ .name = "27-M", .g1b = 22, .g1d = 45, .g2b = 3, .g2d = 46, .tdc = 1128 ], [ .name = "27-Q", .g1b = 8, .g1d = 23, .g2b = 26, .g2d = 24, .tdc = 808 ], [ .name = "27-H", .g1b = 12, .g1d = 15, .g2b = 28, .g2d = 16, .tdc = 628 ], [ .name = "28-L", .g1b = 3, .g1d = 117, .g2b = 10, .g2d = 118, .tdc = 1531 ], [ .name = "28-M", .g1b = 3, .g1d = 45, .g2b = 23, .g2d = 46, .tdc = 1193 ], [ .name = "28-Q", .g1b = 4, .g1d = 24, .g2b = 31, .g2d = 25, .tdc = 871 ], [ .name = "28-H", .g1b = 11, .g1d = 15, .g2b = 31, .g2d = 16, .tdc = 661 ], [ .name = "29-L", .g1b = 7, .g1d = 116, .g2b = 7, .g2d = 117, .tdc = 1631 ], [ .name = "29-M", .g1b = 21, .g1d = 45, .g2b = 7, .g2d = 46, .tdc = 1267 ], [ .name = "29-Q", .g1b = 1, .g1d = 23, .g2b = 37, .g2d = 24, .tdc = 911 ], [ .name = "29-H", .g1b = 19, .g1d = 15, .g2b = 26, .g2d = 16, .tdc = 701 ], [ .name = "30-L", .g1b = 5, .g1d = 115, .g2b = 10, .g2d = 116, .tdc = 1735 ], [ .name = "30-M", .g1b = 19, .g1d = 47, .g2b = 10, .g2d = 48, .tdc = 1373 ], [ .name = "30-Q", .g1b = 15, .g1d = 24, .g2b = 25, .g2d = 25, .tdc = 985 ], [ .name = "30-H", .g1b = 23, .g1d = 15, .g2b = 25, .g2d = 16, .tdc = 745 ], [ .name = "31-L", .g1b = 13, .g1d = 115, .g2b = 3, .g2d = 116, .tdc = 1843 ], [ .name = "31-M", .g1b = 2, .g1d = 46, .g2b = 29, .g2d = 47, .tdc = 1455 ], [ .name = "31-Q", .g1b = 42, .g1d = 24, .g2b = 1, .g2d = 25, .tdc = 1033 ], [ .name = "31-H", .g1b = 23, .g1d = 15, .g2b = 28, .g2d = 16, .tdc = 793 ], [ .name = "32-L", .g1b = 17, .g1d = 115, .g2b = 0, .g2d = 0, .tdc = 1955 ], [ .name = "32-M", .g1b = 10, .g1d = 46, .g2b = 23, .g2d = 47, .tdc = 1541 ], [ .name = "32-Q", .g1b = 10, .g1d = 24, .g2b = 35, .g2d = 25, .tdc = 1115 ], [ .name = "32-H", .g1b = 19, .g1d = 15, .g2b = 35, .g2d = 16, .tdc = 845 ], [ .name = "33-L", .g1b = 17, .g1d = 115, .g2b = 1, .g2d = 116, .tdc = 2071 ], [ .name = "33-M", .g1b = 14, .g1d = 46, .g2b = 21, .g2d = 47, .tdc = 1631 ], [ .name = "33-Q", .g1b = 29, .g1d = 24, .g2b = 19, .g2d = 25, .tdc = 1171 ], [ .name = "33-H", .g1b = 11, .g1d = 15, .g2b = 46, .g2d = 16, .tdc = 901 ], [ .name = "34-L", .g1b = 13, .g1d = 115, .g2b = 6, .g2d = 116, .tdc = 2191 ], [ .name = "34-M", .g1b = 14, .g1d = 46, .g2b = 23, .g2d = 47, .tdc = 1725 ], [ .name = "34-Q", .g1b = 44, .g1d = 24, .g2b = 7, .g2d = 25, .tdc = 1231 ], [ .name = "34-H", .g1b = 59, .g1d = 16, .g2b = 1, .g2d = 17, .tdc = 961 ], [ .name = "35-L", .g1b = 12, .g1d = 121, .g2b = 7, .g2d = 122, .tdc = 2306 ], [ .name = "35-M", .g1b = 12, .g1d = 47, .g2b = 26, .g2d = 48, .tdc = 1812 ], [ .name = "35-Q", .g1b = 39, .g1d = 24, .g2b = 14, .g2d = 25, .tdc = 1286 ], [ .name = "35-H", .g1b = 22, .g1d = 15, .g2b = 41, .g2d = 16, .tdc = 986 ], [ .name = "36-L", .g1b = 6, .g1d = 121, .g2b = 14, .g2d = 122, .tdc = 2434 ], [ .name = "36-M", .g1b = 6, .g1d = 47, .g2b = 34, .g2d = 48, .tdc = 1914 ], [ .name = "36-Q", .g1b = 46, .g1d = 24, .g2b = 10, .g2d = 25, .tdc = 1354 ], [ .name = "36-H", .g1b = 2, .g1d = 15, .g2b = 64, .g2d = 16, .tdc = 1054 ], [ .name = "37-L", .g1b = 17, .g1d = 122, .g2b = 4, .g2d = 123, .tdc = 2566 ], [ .name = "37-M", .g1b = 29, .g1d = 46, .g2b = 14, .g2d = 47, .tdc = 1992 ], [ .name = "37-Q", .g1b = 49, .g1d = 24, .g2b = 10, .g2d = 25, .tdc = 1426 ], [ .name = "37-H", .g1b = 24, .g1d = 15, .g2b = 46, .g2d = 16, .tdc = 1096 ], [ .name = "38-L", .g1b = 4, .g1d = 122, .g2b = 18, .g2d = 123, .tdc = 2702 ], [ .name = "38-M", .g1b = 13, .g1d = 46, .g2b = 32, .g2d = 47, .tdc = 2102 ], [ .name = "38-Q", .g1b = 48, .g1d = 24, .g2b = 14, .g2d = 25, .tdc = 1502 ], [ .name = "38-H", .g1b = 42, .g1d = 15, .g2b = 32, .g2d = 16, .tdc = 1142 ], [ .name = "39-L", .g1b = 20, .g1d = 117, .g2b = 4, .g2d = 118, .tdc = 2812 ], [ .name = "39-M", .g1b = 40, .g1d = 47, .g2b = 7, .g2d = 48, .tdc = 2216 ], [ .name = "39-Q", .g1b = 43, .g1d = 24, .g2b = 22, .g2d = 25, .tdc = 1582 ], [ .name = "39-H", .g1b = 10, .g1d = 15, .g2b = 67, .g2d = 16, .tdc = 1222 ], [ .name = "40-L", .g1b = 19, .g1d = 118, .g2b = 6, .g2d = 119, .tdc = 2956 ], [ .name = "40-M", .g1b = 18, .g1d = 47, .g2b = 31, .g2d = 48, .tdc = 2334 ], [ .name = "40-Q", .g1b = 34, .g1d = 24, .g2b = 34, .g2d = 25, .tdc = 1666 ], [ .name = "40-H", .g1b = 20, .g1d = 15, .g2b = 61, .g2d = 16, .tdc = 1276 ] ] verifyECBlocks() ecb = getECBlock( 22, "H" ) print(ecb) update() sleep(10) // get the error correction block for the specified version and level // version: 1-40 // level: L, M, Q, H function getECBlock( version, level ) ECBlock result = [ .name = "", .g1b = 0, .g1d = 0, .g2b = 0, .g2d = 0, .tdc = 0 ] int i string name = str( version ) + "-" + level for i = 0 to len( ecBlocks ) loop if ecBlocks[ i ].name == name then result = ecBlocks[ i ] break endif repeat return result // Check that total data codewords match with expected // prints any that don't function verifyECBlocks() for i = 0 to len(ecBlocks) loop ecb = ecBlocks[i] if ecb.tdc != ( ecb.g1b * ecb.g1d ) + ( ecb.g2b * ecb.g2d ) then print(ecb, "\n") endif repeat return void
-
Just got to check I've got 104 bits in final code and tidy up my messy code!
Had to have "HELLO WORLD!" to avoid odd number of chars. Makes it a bit easier. Work on that part later..
If not 104 bits a bit of padding to do. -
So far …
encoder ID: MXK7BH2UW5
If you want to tidy up the mess feel free !!!
I'll do it, just wanted you to see progress. -
@faz808 That's fine. No pressure, I still have plenty to do on the error correction anyway
-
I haven't checked for crashes with other phrases - I daren't !
There's bound to be run errors but if we can generate a QR code with HELLO WORLD! then that's got to be a major step forward...encoder2 ID: KFA73M5T15
-
@faz808 Yes that is my initial objective too! I should have some more time to spend on this over the weekend
-
Fingers crossed !
-
@faz808 Oh Joy another massive table! https://www.thonky.com/qr-code-tutorial/character-capacities
-
Will it ever end !!!
-
@faz808 A bit more progress on the error correction AYK73MBHMN
Can now determine the smallest version for the data ( up to about version 12 )
-
Glad I didn't volunteer to enter that lot..
Well done ! -
I have found some more tables but I think by entering these I won't have to try to understand the maths so I don't mind keying them!
-
@faz808 Now have ploynomial division working with no clue what it does!
-
I thought everyone knew what Polynomial long division is . .ho ho ho ...
Polynomial long division is an algorithm that implements the Euclidean division of polynomials, which starting from two polynomials A (the dividend) and B (the divisor) produces, if B is not zero, a quotient Q and a remainder R such that. A = BQ + R, and either R = 0 or the degree of R is lower than the degree of B.
Don't understand a word of it but well done sir.
What the difference between ploynomial division and Polynomial long division? -
Seriously, how are we doing?
-
Well this is the next bit https://www.thonky.com/qr-code-tutorial/structure-final-message
-
But for our short message we could skip straight to here: https://www.thonky.com/qr-code-tutorial/module-placement-matrix
-
At least it doesn't look like there's any maths involved. Just bit placement.
-
I'll have a go later if you want ..