Construct magic rectangles and nearly magic rectangles of any order p × q for which one exists.
🔗 Live calculator: https://arijitray2.github.io/magic-rectangles/ — the same algorithms, running in your browser.
A magic rectangle of order p × q arranges the integers 1, …, pq so that every row sums to q(pq+1)/2 and every column sums to p(pq+1)/2. It exists precisely when p and q have the same parity — excluding the impossible 2 × 2 and single-row/column orders (Hagedorn 1999).
When p and q have opposite parity the magic constants are not integers, so a magic rectangle cannot exist; a nearly magic rectangle (Chai, Singh & Stufken 2019) exists instead: it uses 1, …, pq once each, has constant sums along one direction, and sums along the other direction differing by at most 1.
To our knowledge this is the first R package that constructs magic rectangles and
nearly magic rectangles (the CRAN package magic covers magic squares and
hypercubes only).
# install.packages("remotes")
remotes::install_github("Arijitray2/magic-rectangles")library(magicrect)
magic_rectangle(3, 5) # odd x odd magic rectangle
magic_rectangle(8, 10) # even x even magic rectangle
magic_rectangle(6, 7) # nearly magic rectangle (6 even, 7 odd)
magic_rectangle(7, 11) # reproduces Chai-Das-Midha (2013), Section 3
rectangle_type(4, 7) # "nearly magic"
rectangle_type(2, 2) # "none" - the classical exception
r <- magic_rectangle(13, 19)
r$matrix # the 13 x 19 integer matrix
r$row_sums # all equal q(pq+1)/2
verify_rectangle(r) # "magic" - checked from first principlesExample output:
> magic_rectangle(3, 5)
3 x 5 magic rectangle
[,1] [,2] [,3] [,4] [,5]
[1,] 1 9 7 10 13
[2,] 8 11 14 2 5
[3,] 15 4 3 12 6
Row sums: 40 40 40
Column sums: 24 24 24 24 24
| Order p × q | Object | Construction |
|---|---|---|
| both even | magic rectangle | De Los Reyes, Das, Midha & Vellaisamy (2009) |
| both odd | magic rectangle | Chai, Das & Midha (2013): pattern matrix G_p, within-column interchanges, and the Theorem 2.1 composition for q ≡ 0 (mod 3) |
| even × odd | nearly magic rectangle | Chai, Singh & Stufken (2019): Theorems 2.1, 2.3, 2.4 |
| 2 × 2 | — | provably impossible |
| 1 × n, n > 2 | — | provably impossible |
tests/exhaustive.R (run automatically by R CMD check) constructs every
order 1 ≤ p, q ≤ 40 and verifies each result from first principles: the entries
are exactly {1, …, pq}, and the row/column sums satisfy the relevant definition.
The construction also reproduces the worked 7 × 11 and 13 × 19 examples printed
in Chai, Das & Midha (2013) digit for digit. The JavaScript port used by the
website is additionally cross-checked to be byte-identical to the R output on
all 843 constructible orders with p, q ≤ 30, and self-verified up to 100 × 100.
- T. R. Hagedorn (1999). Magic rectangles revisited. Discrete Mathematics 207, 65–72.
- J. P. De Los Reyes, A. Das, C. K. Midha, P. Vellaisamy (2009). On a method to construct magic rectangles of even order. Utilitas Mathematica 80, 277–284.
- F.-S. Chai, A. Das, C. Midha (2013). Construction of magic rectangles of odd order. Australasian Journal of Combinatorics 55(1), 131–144.
- F.-S. Chai, R. Singh, J. Stufken (2019). Nearly magic rectangles. Journal of Combinatorial Designs 27(6), 368–376.