cyber-zen question on ruby code/data/graph

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

wedge

Leave a comment