Fair Pairs

You can get a glimpse of the gorgeous very easily. After all, you can work out the following sum in your head: 1 + 2 + 3 + 4 + 5 = ?

The answer is… 1 + 2 + 3 + 4 + 5 = 15. So that sum is example of this pattern: n1:n2 = sum(n1..n2). A simple computer program will soon supply other sums of consecutive numbers following the same pattern. I think these patterns based on the pair n1 and n2 are beautiful, so I’d call them fair pairs:


15 = sum(1..5)
27 = sum(2..7)
429 = sum(4..29)
1353 = sum(13..53)
1863 = sum(18..63)
3388 = sum(33..88)
3591 = sum(35..91)
7119 = sum(7..119)
78403 = sum(78..403)
133533 = sum(133..533)
178623 = sum(178..623)
2282148 = sum(228..2148)
2732353 = sum(273..2353)
3882813 = sum(388..2813)
7103835 = sum(710..3835)
13335333 = sum(1333..5333)
17016076 = sum(1701..6076)
17786223 = sum(1778..6223)


I went looking for variants on that pattern. If the function rev(n) reverses the digits of n, here’s n1:rev(n2) = sum(n1..n2):


155975 = sum(155..579)
223407 = sum(223..704)
4957813 = sum(495..3187)


I like that pattern, but it doesn’t seem beautiful like n1:n2 = sum(n1..n2). Nor does rev(n1):n2 = sum(n1..n2):


1575 = sum(51..75)
96444 = sum(69..444)
304878 = sum(403..878)
392933 = sum(293..933)
3162588 = sum(613..2588)
3252603 = sum(523..2603)
3642738 = sum(463..2738)
3772853 = sum(773..2853)
6653691 = sum(566..3691)
8714178 = sum(178..4178)


But rev(n1):rev(n2) = sum(n1..n2) is beautiful again, in a twisted kind of way:


97944 = sum(79..449)
452489 = sum(254..984)
3914082 = sum(193..2804)
6097063 = sum(906..3607)
6552663 = sum(556..3662)


Now try swapping n1 and n2. Here’s n2:n1 = sum(n1..n2):


204 = sum(4..20)
216 = sum(6..21)
20328 = sum(28..203)
21252 = sum(52..212)
21762 = sum(62..217)
23287 = sum(87..232)
23490 = sum(90..234)
2006118 = sum(118..2006)
2077402 = sum(402..2077)
2132532 = sum(532..2132)
2177622 = sum(622..2177)


Do I find the pattern beautiful? Yes, but it’s not as beautiful as n1:n2 = sum(n1..n2). The beauty disappears in n2:rev(n1) = sum(n1..n2):


21074 = sum(47..210)
21465 = sum(56..214)
22797 = sum(79..227)
2013561 = sum(165..2013)
2046803 = sum(308..2046)
2099754 = sum(457..2099)
2145065 = sum(560..2145)


And rev(n2):n1 = sum(n1..n2):


638 = sum(8..36)
2952 = sum(52..92)
21252 = sum(52..212)
23287 = sum(87..232)
66341 = sum(41..366)
208477 = sum(477..802)
2522172 = sum(172..2252)
2852982 = sum(982..2582)
7493772 = sum(772..3947)
8714178 = sum(178..4178)


Finally, and fairly again, rev(n2):rev(n1) = sum(n1..n2):


638 = sum(8..36)
125541 = sum(145..521)
207972 = sum(279..702)
158046 = sum(640..851)
9434322 = sum(223..4349)


The beauty’s back. And it has almost become self-aware. In rev(n2):rev(n1) = sum(n1..n2), each side of the equation seems to be looking at the other half as those it’s looking into a mirror.


Previously Pre-Posted (Please Peruse)…

Nuts for Numbers — looking at patterns like 2772 = sum(22..77)

RevNumSum

If you take an integer, n, and reverse its digits to get the integer r, there are three possibilities:


n > r (e.g. 85236 > 63258)
n < r (e.g. 17783 < 38771)
n = r (e.g. 45154 = 45154)

If n = r, n is a palindrome. If n > r, I call n a major number. If n < r, I call n a minor number. And here are the minor and major numbers represented as white squares on an Ulam-like spiral (the negative of a minor spiral is a major spiral, and vice versa — sometimes one looks better than the other):

b=2 (minor numbers)


b=3


b=4


b=5


b=6


b=7 (major numbers)


b=8 (minor numbers)


b=9 (mjn)


b=10 (mjn)


b=11 (mjn)


b=12 (mjn)


b=13 (mjn)


b=14 (mjn)


b=15 (mjn)


b=16 (mjn)


b=17 (mjn)


b=18 (mjn)


b=19 (mjn)


b=20 (mjn)


Minor numbers, b=2..20 (animated)


Now let’s look at a sequence formed by summing the reversed numbers, minor ones, major ones and palindromes. Here are the standard integers:


1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17...

If you sum the integers, you get what are called the triangular numbers:


1 = 1
3 = 1 + 2
6 = 1 + 2 + 3
10 = 1 + 2 + 3 + 4
15 = 1 + 2 + 3 + 4 + 5
21 = 1 + 2 + 3 + 4 + 5 + 6
28 = 1 + 2 + 3 + 4 + 5 + 6 + 7
36 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8
45 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9
55 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10
66 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11
78 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12
91 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13
105 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14
120 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15
136 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16
153 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17
171 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18
190 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19
210 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20

But what happens if you reverse the integers before summing them? Here side-by-side are the triangular numbers and the underlined revnumsums (as they might be called):


45 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9
45 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9
55 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10
46 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1
66 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11
57 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1 + 11
78 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12
78 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1 + 11 + 21
91 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13
109 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1 + 11 + 21 + 31
105 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14
150 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1 + 11 + 21 + 31 + 41
120 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15
201 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1 + 11 + 21 + 31 + 41 + 51
136 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16
262 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1 + 11 + 21 + 31 + 41 + 51 + 61
153 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17
333 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1 + 11 + 21 + 31 + 41 + 51 + 61 + 71
171 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18
414 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1 + 11 + 21 + 31 + 41 + 51 + 61 + 71 + 81
190 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19
505 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1 + 11 + 21 + 31 + 41 + 51 + 61 + 71 + 81 + 91
210 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20
507 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1 + 11 + 21 + 31 + 41 + 51 + 61 + 71 + 81 + 91
+ 2

Unlike triangular numbers, revnumsums are dependent on the base they’re calculated in. In base 2, the revnumsum is always smaller than the triangular number, except at step 1. In base 3, the revnumsum is equal to the triangular number at steps 1, 2 and 15 (= 120 in base 3). Otherwise it’s smaller than the triangular number.

And in higher bases? In bases > 3, the revnumsum rises and falls above the equivalent triangular number. When it’s higher, it tends towards a maximum height of (base+1)/4 * triangular number.

For Revver and Fevver

This shape reminds me of the feathers on an exotic bird:

feathers

(click or open in new window for full size)


feathers_anim

(animated version)


The shape is created by reversing the digits of a number, so you could say it involves revvers and fevvers. I discovered it when I was looking at the Halton sequence. It’s a sequence of fractions created according to a simple but interesting rule. The rule works like this: take n in base b, reverse it, and divide reverse(n) by the first power of b that is greater than n.

For example, suppose n = 6 and b = 2. In base 2, 6 = 110 and reverse(110) = 011 = 11 = 3. The first power of 2 that is greater than 6 is 2^3 or 8. Therefore, halton(6) in base 2 equals 3/8. Here is the same procedure applied to n = 1..20:

1: halton(1) = 1/10[2] → 1/2
2: halton(10) = 01/100[2] → 1/4
3: halton(11) = 11/100[2] → 3/4
4: halton(100) = 001/1000[2] → 1/8
5: halton(101) = 101/1000[2] → 5/8
6: halton(110) = 011/1000 → 3/8
7: halton(111) = 111/1000 → 7/8
8: halton(1000) = 0001/10000 → 1/16
9: halton(1001) = 1001/10000 → 9/16
10: halton(1010) = 0101/10000 → 5/16
11: halton(1011) = 1101/10000 → 13/16
12: halton(1100) = 0011/10000 → 3/16
13: halton(1101) = 1011/10000 → 11/16
14: halton(1110) = 0111/10000 → 7/16
15: halton(1111) = 1111/10000 → 15/16
16: halton(10000) = 00001/100000 → 1/32
17: halton(10001) = 10001/100000 → 17/32
18: halton(10010) = 01001/100000 → 9/32
19: halton(10011) = 11001/100000 → 25/32
20: halton(10100) = 00101/100000 → 5/32…

Note that the sequence always produces reduced fractions, i.e. fractions in their lowest possible terms. Once 1/2 has appeared, there is no 2/4, 4/8, 8/16…; once 3/4 has appeared, there is no 6/8, 12/16, 24/32…; and so on. If the fractions are represented as points in the interval [0,1], they look like this:

line1_1_2

point = 1/2


line2_1_4

point = 1/4


line3_3_4

point = 3/4


line4_1_8

point = 1/8


line5_5_8

point = 5/8


line6_3_8

point = 3/8


line7_7_8

point = 7/8


line_b2_anim

(animated line for base = 2, n = 1..63)


It’s apparent that Halton points in base 2 will evenly fill the interval [0,1]. Now compare a Halton sequence in base 3:

1: halton(1) = 1/10[3] → 1/3
2: halton(2) = 2/10[3] → 2/3
3: halton(10) = 01/100[3] → 1/9
4: halton(11) = 11/100[3] → 4/9
5: halton(12) = 21/100[3] → 7/9
6: halton(20) = 02/100 → 2/9
7: halton(21) = 12/100 → 5/9
8: halton(22) = 22/100 → 8/9
9: halton(100) = 001/1000 → 1/27
10: halton(101) = 101/1000 → 10/27
11: halton(102) = 201/1000 → 19/27
12: halton(110) = 011/1000 → 4/27
13: halton(111) = 111/1000 → 13/27
14: halton(112) = 211/1000 → 22/27
15: halton(120) = 021/1000 → 7/27
16: halton(121) = 121/1000 → 16/27
17: halton(122) = 221/1000 → 25/27
18: halton(200) = 002/1000 → 2/27
19: halton(201) = 102/1000 → 11/27
20: halton(202) = 202/1000 → 20/27
21: halton(210) = 012/1000 → 5/27
22: halton(211) = 112/1000 → 14/27
23: halton(212) = 212/1000 → 23/27
24: halton(220) = 022/1000 → 8/27
25: halton(221) = 122/1000 → 17/27
26: halton(222) = 222/1000 → 26/27
27: halton(1000) = 0001/10000 → 1/81
28: halton(1001) = 1001/10000 → 28/81
29: halton(1002) = 2001/10000 → 55/81
30: halton(1010) = 0101/10000 → 10/81

And here is an animated gif representing the Halton sequence in base 3 as points in the interval [0,1]:

line_b3_anim


Halton points in base 3 also evenly fill the interval [0,1]. What happens if you apply the Halton sequence to a two-dimensional square rather a one-dimensional line? Suppose the bottom left-hand corner of the square has the co-ordinates (0,0) and the top right-hand corner has the co-ordinates (1,1). Find points (x,y) inside the square, with x supplied by the Halton sequence in base 2 and y supplied by the Halton sequence in base 3. The square will gradually fill like this:

square1

x = 1/2, y = 1/3


square2

x = 1/4, y = 2/3


square3

x = 3/4, y = 1/9


square4

x = 1/8, y = 4/9


square5

x = 5/8, y = 7/9


square6

x = 3/8, y = 2/9


square7

x = 7/8, y = 5/9


square8

x = 1/16, y = 8/9


square9

x = 9/16, y = 1/27…


square_anim

animated square


Read full page: For Revver and Fevver