R: Subhypercubes of magic hypercubes

allsubhypercubes {magic} | R Documentation

## Subhypercubes of magic hypercubes

### Description

Extracts all subhypercubes from an n-dimensional hypercube.

### Usage

    allsubhypercubes(a)

### Arguments

`a` | The magic hypercube whose subhypercubes are computed

### Value

Returns a list, each element of which is a subhypercube. Note that major diagonals are also returned (as n-by-1 arrays).

The names of the list are the extracted subhypercubes. Consider `a <- magichypercube.4n(1,d=4)` (so n=4) and if `jj <- allsubhypercubes(a)`, consider `jj[9]`. The name of `jj[9]` is `"n-i+1,i,i,"`; its value is a square matrix. The columns of `jj[9]` may be recovered by `a[n-i+1,i,i,]` with i=1...n (NB: that is, jj[[9]] == `cbind(a[n-1+1,1,1,], a[n-2+1,2,2,], a[n-3+1,3,3,], a[n-4+1,4,4,])` where `n=4`).

The list does not include the whole array.

### Note

This function is a dog's dinner. It's complicated, convoluted, and needs an absurd use of the `eval(parse(text=...))` construction. Basically it sucks big time.

BUT... I cannot for the life of me see a better way that gives the same results, without loops, on hypercubes of arbitrary dimension.

On my 256MB Linuxbox, `allsubhypercubes()` cannot cope with `d` as high as 5, for `n=4`. Heigh ho.

The term “subhypercube” does not include diagonally oriented entities at `is.magichypercube`. But it does here.

### Author(s)

Robin K. S. Hankin

### See Also

`is.perfect`

### Examples

      a <- magichypercube.4n(1,d=4)
      allsubhypercubes(a)

[Package magic version 1.5-8 Index]