All about flooble | fun stuff | Get a free chatterbox | Free JavaScript | Avatars
 perplexus dot info

 Numeric Anagrams (Posted on 2009-03-17)
In general,
find an integer I which can be classified as Prime, Triangle, Square or Cube, comprised of unique digits and when the digits are rearranged, one of those categories applies.
[eg: 19 (P) → 91 (T)]

Then specifically apply that rule to fill the table with the lowest values possible per category (integer I) with its anagram being larger, in the lower cell per category.

Note: It may not be possible to offer solutions for all asymetric categories.
You might care also to offer some suggestions whereby some integers, without rearranging, may fall into another category - 36 (S), 36 (T); 729 (S), 729 (C).

Note that colours by row and column are category-defined.

 See The Solution Submitted by brianjn No Rating

Comments: ( Back to comment list | You must be logged in to post comments.)
 computer solution | Comment 1 of 2

DECLARE SUB permute (a\$)
DECLARE FUNCTION anagram# (a\$, b\$)
DEFDBL A-Z
DIM num\$(1000, 4)

PRINT

' Build table of primes, triangles, squares and cubes

num\$(1, 1) = "2"
s = 2: i = 3
DO
good = 1
FOR j = 1 TO s - 1
IF i MOD VAL(num\$(j, 1)) = 0 THEN good = 0: EXIT FOR
NEXT
IF good THEN
num\$(s, 1) = LTRIM\$(STR\$(i))
s = s + 1
END IF
i = i + 1
LOOP UNTIL s > 1000

num\$(1, 2) = "1"
s = 2: i = 2
DO
num\$(s, 2) = LTRIM\$(STR\$(VAL(num\$(s - 1, 2)) + i))
s = s + 1
i = i + 1
LOOP UNTIL s > 1000 OR LEN(num\$(s - 1, 2)) > 4

num\$(1, 3) = "1"
s = 2: i = 2
DO
num\$(s, 3) = LTRIM\$(STR\$(i * i))
s = s + 1
i = i + 1
LOOP UNTIL s > 1000 OR LEN(num\$(s - 1, 3)) > 4

num\$(1, 4) = "1"
s = 2: i = 2
DO
num\$(s, 4) = LTRIM\$(STR\$(i * i * i))
s = s + 1
i = i + 1
LOOP UNTIL s > 1000 OR LEN(num\$(s - 1, 4)) > 4

' Match column against column to find results

FOR c1 = 1 TO 4
FOR c2 = 1 TO 4
FOR i = 1 TO 1000
found = 0
FOR j = 1 TO 1000
IF LEN(num\$(j, c2)) > LEN(num\$(i, c1)) THEN EXIT FOR
IF anagram(num\$(j, c2), num\$(i, c1)) THEN
found = 1
PRINT c1; c2, num\$(i, c1); "  "; num\$(j, c2)
grid\$(c1 * 2, c2) = num\$(j, c2)
grid\$(c1 * 2 - 1, c2) = num\$(i, c1)
EXIT FOR
END IF
NEXT
IF found THEN EXIT FOR
NEXT
NEXT
NEXT

' Present grid of solutions

FOR c1 = 1 TO 4
FOR c2 = 1 TO 4
PRINT RIGHT\$("      " + grid\$(c1 * 2 - 1, c2), 5);
NEXT
PRINT
FOR c2 = 1 TO 4
PRINT RIGHT\$("      " + grid\$(c1 * 2, c2), 5);
NEXT
PRINT
PRINT
NEXT

' Expand to larger numbers to fill in triangle/cube gap

' triangle to cube
tr = 0
FOR i = 1 TO 3000
tr = tr + i
t\$ = LTRIM\$(STR\$(tr))
IF LEN(t\$) > 1 THEN
h\$ = t\$
DO
IF LEFT\$(t\$, 1) <> "0" THEN
v = VAL(t\$)
cr = INT(v ^ (1 / 3) + .5)
IF cr * cr * cr = v THEN
PRINT tr; v, i; cr
EXIT FOR
END IF
END IF
permute t\$
LOOP UNTIL h\$ = t\$
END IF
NEXT

' cube to triangle
FOR i = 1 TO 3000
cu = i * i * i
c\$ = LTRIM\$(STR\$(cu))
IF LEN(c\$) > 1 THEN
h\$ = c\$
DO
IF LEFT\$(c\$, 1) <> "0" THEN
v = VAL(c\$)
tn = INT((SQR(1 + 8 * v) - 1) / 2 + .5)
IF tn * (tn + 1) = 2 * v THEN
PRINT cu; v, i; tn
EXIT FOR
END IF
END IF
permute c\$
LOOP UNTIL h\$ = c\$
END IF
NEXT

END

FUNCTION anagram (a\$, b\$)
IF LEN(a\$) <> LEN(b\$) THEN anagram = 0: EXIT FUNCTION
IF a\$ = b\$ THEN anagram = 0: EXIT FUNCTION
x\$ = a\$
FOR i = 1 TO LEN(b\$)
ix = INSTR(x\$, MID\$(b\$, i, 1))
IF ix THEN
x\$ = LEFT\$(x\$, ix - 1) + MID\$(x\$, ix + 1)
ELSE
anagram = 0: EXIT FUNCTION
END IF
NEXT
anagram = 1
END FUNCTION

The found anagrams (limited to 4-digit numbers or smaller):

`From:    \   to anagram:             prime tri  sq  cubeprime          13   19   61  251  anagram:     31   91   16  125`
`triangle       91  120  136  anagram:     19  210  361`
`square         16  361  144 1296  anagram:     61  136  441 9261`
`cube          125      2197  125  anagram:    251      7921  512              `

The triangle/cube spots are empty as they are 5-digit numbers:

226th triangular number = 25651;  15625 = 25^3
22^3 = 10648; 283rd triangular number = 40186

So to complete the table:

`             prime     tri     sq     cubeprime          13       19      61     251  anagram:     31       91      16     125`
`triangle       91      120     136   25651  anagram:     19      210     361   15625`
`square         16      361     144    1296  anagram:     61      136     441    9261`
`cube          125    10648    2197     125  anagram:    251    40186    7921     512              `

When the anagrammed number must be larger than the original number, we get

`             prime     tri     sq     cubeprime          13       19     163     251  anagram:     31       91     361     512`
`triangle      136      120     136   57970  anagram:    163      210     361   79507`
`square         16     1089     144    1296  anagram:     61     9180     441    9261`
`cube          125    10648    2197     125  anagram:    251    40186    7921     512              `

Note that the 25,651 to 15,625 triangle-to-cube anagram has disappeared completely. The other replacemed items are still present in the reverse direction.

The changed values come from programs like the following:

`Prime to square:                  5   N=10   10   while Found=0   20    N=nxtprm(N)   30    Ns=cutspc(str(N))   40    H=Ns:gosub *Permute(&Ns)   50    while H<>Ns   60      Sq=val(Ns)   70      Sr=sqrt(Sq)   80      if Sr*Sr=Sq then   90       :if Sq>N then  100         :print N,Sq  105         :Found=1  110      gosub *Permute(&Ns)  120    wend  130   wend  440   end Square to triangular:      5   N=0   10   while Found=0   20    I=I+1:N=I*I   30    Ns=cutspc(str(N))   40    H=Ns:gosub *Permute(&Ns)   50    while H<>Ns   60      Sq=val(Ns)   70      Sr=int(sqrt(1+8*Sq)+0.5)   80      if Sr*Sr=1+8*Sq then   90       :if Sq>N then  100         :print N,Sq  105         :Found=1  110      gosub *Permute(&Ns)  120    wend  130   wend  440   end  `

Extra part:

The only prime that's a triangular number is 3.

No prime can be square or cube.

The squares that are cubes are all the 6th powers.

The following program:

DEFDBL A-Z
PRINT
DO
sr = INT(SQR(t) + .5)
IF sr * sr = t THEN PRINT t: ct = ct + 1
cr = INT(t ^ (1 / 3) + .5)
IF cr * cr * cr = t THEN PRINT SPACE\$(20); t
LOOP UNTIL ct > 45

finds only 1 as being both triangular and cube.  The following list shows those that are triangular and square:

1
36
1225
41616
1413721
48024900
1631432881
55420693056
1882672131025

the last triangular number checked when the program was interrupted being 22482404920990.

 Posted by Charlie on 2009-03-17 17:29:27

 Search: Search body:
Forums (0)