hi all a quick post #10 with a tricky CS puzzle for anyone interested, & am figuring out how to post code in wordpress for the 1st time.
I include some ruby code and the output. I graphed stdout
, 2nd column below.
Cyber-Zen Question: what does this code do?
#!/usr/bin/ruby1.8 def way(l) x, y = l z = $seen[y] z = $first if (z.nil?) l2 = [] if (x) then l2 << [true, y + 2, [z[0], z[1]]] l2 << [false, y, [z[0] + '1', z[1]]] end y2 = y * 3 + 1 y2 >>= 1 while (y2.even?) l2 << [false, y2, [z[0] + '2', z[1] + [y]]] if (!x) return l2 end def rank(x) return x[1] z = $seen[x[1]] z = $first if (z.nil?) return z return z[1] end $seen = {} $first = ['', []] $seen[1] = $first l = [[true, 1]] n = 0 $seen2 = {} loop \ { n += 1 break if (n == 2000) # p([n, l.size, $seen.size]) i = (0...l.size).to_a.sort_by { |x| rank(l[x]) } # puts # i.each { |x| p([l[x], $seen[l[x][1]], rank(l[x])]) } a = l.delete_at(i[0]) a2 = way(a) a2.each \ { |a| # puts("\t" +a.inspect) x, y, z = a if (!x && $seen.member?(y)) # puts("\t" + a.inspect) z[1].each \ { |x| next if ($seen2.member?(x)) puts([n, x].join("\t")) $seen2[x] = nil } next end $seen[y] = z if (!x) l << [x, y] } }
4 3 5 5 9 9 11 7 13 13 16 11 16 17 21 21 23 15 25 25 28 19 28 29 33 33 35 23 37 37 40 27 40 41 45 45 47 31 49 49 52 35 52 53 57 57 59 39 61 61 64 43 64 65 69 69 71 47 73 73 76 51 76 77 81 81 83 55 85 85 88 59 88 89 93 93 95 63 97 97 100 67 100 101 105 105 107 71 109 109 112 75 112 113 117 117 119 79 121 121 124 83 124 125 129 129 131 87 133 133 136 91 136 137 141 141 143 95 145 145 148 99 148 149 153 153 155 103 157 157 160 107 160 161 165 165 167 111 169 169 172 115 172 173 177 177 179 119 181 181 184 123 184 185 189 189 191 127 193 193 196 131 196 197 201 201 203 135 205 205 208 139 208 209 213 213 215 143 217 217 220 147 220 221 225 225 227 151 229 229 232 155 232 233 237 237 239 159 241 241 244 163 244 245 249 249 251 167 253 253 256 171 256 257 261 261 263 175 265 265 268 179 268 269 273 273 275 183 277 277 280 187 280 281 285 285 287 191 289 289 292 195 292 293 297 297 299 199 301 301 304 203 304 305 309 309 311 207 313 313 316 211 316 317 321 321 323 215 325 325 328 219 328 329 333 333 335 223 337 337 340 227 340 341 345 345 347 231 349 349 352 235 352 353 357 357 359 239 361 361 364 243 364 365 369 369 371 247 373 373 376 251 376 377 381 381 383 255 385 385 388 259 388 389 393 393 395 263 397 397 400 267 400 401 405 405 407 271 409 409 412 275 412 413 417 417 419 279 421 421 424 283 424 425 429 429 431 287 433 433 436 291 436 437 441 441 443 295 445 445 448 299 448 449 453 453 455 303 457 457 460 307 460 461 465 465 467 311 469 469 472 315 472 473 477 477 479 319 481 481 484 323 484 485 489 489 491 327 493 493 496 331 496 497 501 501 503 335 505 505 508 339 508 509 513 513 515 343 517 517 520 347 520 521 525 525 527 351 529 529 532 355 532 533 537 537 539 359 541 541 544 363 544 545 549 549 551 367 553 553 556 371 556 557 561 561 563 375 565 565 568 379 568 569 573 573 575 383 577 577 580 387 580 581 585 585 587 391 589 589 592 395 592 593 597 597 599 399 601 601 604 403 604 605 609 609 611 407 613 613 616 411 616 617 621 621 623 415 625 625 628 419 628 629 633 633 635 423 637 637 640 427 640 641 645 645 647 431 649 649 652 435 652 653 657 657 659 439 661 661 664 443 664 665 669 669 671 447 673 673 676 451 676 677 681 681 683 455 685 685 688 459 688 689 693 693 695 463 697 697 700 467 700 701 705 705 707 471 709 709 712 475 712 713 717 717 719 479 721 721 724 483 724 725 729 729 731 487 733 733 736 491 736 737 741 741 743 495 745 745 748 499 748 749 753 753 755 503 757 757 760 507 760 761 765 765 767 511 769 769 772 515 772 773 777 777 779 519 781 781 784 523 784 785 789 789 791 527 793 793 796 531 796 797 801 801 803 535 805 805 808 539 808 809 813 813 815 543 817 817 820 547 820 821 825 825 827 551 829 829 832 555 832 833 837 837 839 559 841 841 844 563 844 845 849 849 851 567 853 853 856 571 856 857 861 861 863 575 865 865 868 579 868 869 873 873 875 583 877 877 880 587 880 881 885 885 887 591 889 889 892 595 892 893 897 897 899 599 901 901 904 603 904 905 909 909 911 607 913 913 916 611 916 917 921 921 923 615 925 925 928 619 928 929 933 933 935 623 937 937 940 627 940 941 945 945 947 631 949 949 952 635 952 953 957 957 959 639 961 961 964 643 964 965 969 969 971 647 973 973 976 651 976 977 981 981 983 655 985 985 988 659 988 989 993 993 995 663 997 997 1000 667 1000 1001 1005 1005 1007 671 1009 1009 1012 675 1012 1013 1017 1017 1019 679 1021 1021 1024 683 1024 1025 1029 1029 1031 687 1033 1033 1036 691 1036 1037 1041 1041 1043 695 1045 1045 1048 699 1048 1049 1053 1053 1055 703 1057 1057 1060 707 1060 1061 1065 1065 1067 711 1069 1069 1072 715 1072 1073 1077 1077 1079 719 1081 1081 1084 723 1084 1085 1089 1089 1091 727 1093 1093 1096 731 1096 1097 1101 1101 1103 735 1105 1105 1108 739 1108 1109 1113 1113 1115 743 1117 1117 1120 747 1120 1121 1125 1125 1127 751 1129 1129 1132 755 1132 1133 1137 1137 1139 759 1141 1141 1144 763 1144 1145 1149 1149 1151 767 1153 1153 1156 771 1156 1157 1161 1161 1163 775 1165 1165 1168 779 1168 1169 1173 1173 1175 783 1177 1177 1180 787 1180 1181 1185 1185 1187 791 1189 1189 1192 795 1192 1193 1197 1197 1199 799 1201 1201 1204 803 1204 1205 1209 1209 1211 807 1213 1213 1216 811 1216 1217 1221 1221 1223 815 1225 1225 1228 819 1228 1229 1233 1233 1235 823 1237 1237 1240 827 1240 1241 1245 1245 1247 831 1249 1249 1252 835 1252 1253 1257 1257 1259 839 1261 1261 1264 843 1264 1265 1269 1269 1271 847 1273 1273 1276 851 1276 1277 1281 1281 1283 855 1285 1285 1288 859 1288 1289 1293 1293 1295 863 1297 1297 1300 867 1300 1301 1305 1305 1307 871 1309 1309 1312 875 1312 1313 1317 1317 1319 879 1321 1321 1324 883 1324 1325 1329 1329 1331 887 1333 1333 1336 891 1336 1337 1341 1341 1343 895 1345 1345 1348 899 1348 1349 1353 1353 1355 903 1357 1357 1360 907 1360 1361 1365 1365 1367 911 1369 1369 1372 915 1372 1373 1377 1377 1379 919 1381 1381 1384 923 1384 1385 1389 1389 1391 927 1393 1393 1396 931 1396 1397 1401 1401 1403 935 1405 1405 1408 939 1408 1409 1413 1413 1415 943 1417 1417 1420 947 1420 1421 1425 1425 1427 951 1429 1429 1432 955 1432 1433 1437 1437 1439 959 1441 1441 1444 963 1444 1445 1449 1449 1451 967 1453 1453 1456 971 1456 1457 1461 1461 1463 975 1465 1465 1468 979 1468 1469 1473 1473 1475 983 1477 1477 1480 987 1480 1481 1485 1485 1487 991 1489 1489 1492 995 1492 1493 1497 1497 1499 999 1501 1501 1504 1003 1504 1505 1509 1509 1511 1007 1513 1513 1516 1011 1516 1517 1521 1521 1523 1015 1525 1525 1528 1019 1528 1529 1533 1533 1535 1023 1537 1537 1540 1027 1540 1541 1545 1545 1547 1031 1549 1549 1552 1035 1552 1553 1557 1557 1559 1039 1561 1561 1564 1043 1564 1565 1569 1569 1571 1047 1573 1573 1576 1051 1576 1577 1581 1581 1583 1055 1585 1585 1588 1059 1588 1589 1593 1593 1595 1063 1597 1597 1600 1067 1600 1601 1605 1605 1607 1071 1609 1609 1612 1075 1612 1613 1617 1617 1619 1079 1621 1621 1624 1083 1624 1625 1629 1629 1631 1087 1633 1633 1636 1091 1636 1637 1641 1641 1643 1095 1645 1645 1648 1099 1648 1649 1653 1653 1655 1103 1657 1657 1660 1107 1660 1661 1665 1665 1667 1111 1669 1669 1672 1115 1672 1673 1677 1677 1679 1119 1681 1681 1684 1123 1684 1685 1689 1689 1691 1127 1693 1693 1696 1131 1696 1697 1701 1701 1703 1135 1705 1705 1708 1139 1708 1709 1713 1713 1715 1143 1717 1717 1720 1147 1720 1721 1725 1725 1727 1151 1729 1729 1732 1155 1732 1733 1737 1737 1739 1159 1741 1741 1744 1163 1744 1745 1749 1749 1751 1167 1753 1753 1756 1171 1756 1757 1761 1761 1763 1175 1765 1765 1768 1179 1768 1769 1773 1773 1775 1183 1777 1777 1780 1187 1780 1781 1785 1785 1787 1191 1789 1789 1792 1195 1792 1793 1797 1797 1799 1199 1801 1801 1804 1203 1804 1805 1809 1809 1811 1207 1813 1813 1816 1211 1816 1817 1821 1821 1823 1215 1825 1825 1828 1219 1828 1829 1833 1833 1835 1223 1837 1837 1840 1227 1840 1841 1845 1845 1847 1231 1849 1849 1852 1235 1852 1853 1857 1857 1859 1239 1861 1861 1864 1243 1864 1865 1869 1869 1871 1247 1873 1873 1876 1251 1876 1877 1881 1881 1883 1255 1885 1885 1888 1259 1888 1889 1893 1893 1895 1263 1897 1897 1900 1267 1900 1901 1905 1905 1907 1271 1909 1909 1912 1275 1912 1913 1917 1917 1919 1279 1921 1921 1924 1283 1924 1925 1929 1929 1931 1287 1933 1933 1936 1291 1936 1937 1941 1941 1943 1295 1945 1945 1948 1299 1948 1949 1953 1953 1955 1303 1957 1957 1960 1307 1960 1961 1965 1965 1967 1311 1969 1969 1972 1315 1972 1973 1977 1977 1979 1319 1981 1981 1984 1323 1984 1985 1989 1989 1991 1327 1993 1993 1996 1331 1996 1997