Can You Help Me Find an Algorithm to Fill a Grid Without Repeating Places?

  • Thread starter Thread starter calluscus
  • Start date Start date
  • Tags Tags
    Algorithm Grid
Mathematics news on Phys.org
calluscus said:
Hi:

I'm looking for an algorithm to fill a grid without repeating places.
I have looking for Pseudorandom number lists (http://en.wikipedia.org/wiki/List_of_pseudorandom_number_generators#gsl_rng_minstd) but i do not get it clearly...

Any help ? :)

Well, what exactly are you trying to accomplish? If the grid is small enough, you could fill in the grid with integers, 1 ... r * c, and then for each cell, swap its value with another, random cell, that is to the right or below the current cell. This is similar to Knuth's shuffling algorithm except in two dimensions. C code follows.

Code:
#include <stdlib.h>

#define X (80)
#define Y (24)

int main()
{
  int x, y; /* current grid position */
  int i, j; /* x, y for random grid position with which to swap*/
  int k;    /* auxiliary variable to fill out the initial sorted grid */
  int t;    /* auxiliary variable for swapping */
  int grid[X][Y];

  srand(time(NULL)); /* seed the random number generator */
  k = 0;

  /* fill in the grid with (1, 2, ..., x*y) */
  for (y = 0; y < Y; ++y)
    for (x = 0; x < X; ++x)
      grid[x][y] = ++k;

  for (y = 0; y < Y; ++y)
    for (x = 0; x < X; ++x)
    {
      /* select a random row between this one and the last one */
      j = rand() % (Y - y) + y;

      if (j == y)
      {
        /* if it's on the current row, select a column to our right */
        i = rand() % (X - x) + x;
      }
      else
      {
        /* if it's on a row below, select _any_ column */
        i = rand() % X;
      }

      /* swap */
      t = grid[i][j];
      grid[i][j] = grid[x][y];
      grid[x][y] = t;
    }

  /* do stuff with the grid here */

  return 0;
}

(note: I have not even so much as compiled the above code, but hopefully you can follow what I'm trying to do)
 
Last edited:
ty very much
 
Insights auto threads is broken atm, so I'm manually creating these for new Insight articles. In Dirac’s Principles of Quantum Mechanics published in 1930 he introduced a “convenient notation” he referred to as a “delta function” which he treated as a continuum analog to the discrete Kronecker delta. The Kronecker delta is simply the indexed components of the identity operator in matrix algebra Source: https://www.physicsforums.com/insights/what-exactly-is-diracs-delta-function/ by...
Fermat's Last Theorem has long been one of the most famous mathematical problems, and is now one of the most famous theorems. It simply states that the equation $$ a^n+b^n=c^n $$ has no solutions with positive integers if ##n>2.## It was named after Pierre de Fermat (1607-1665). The problem itself stems from the book Arithmetica by Diophantus of Alexandria. It gained popularity because Fermat noted in his copy "Cubum autem in duos cubos, aut quadratoquadratum in duos quadratoquadratos, et...
Thread 'Imaginary Pythagorus'
I posted this in the Lame Math thread, but it's got me thinking. Is there any validity to this? Or is it really just a mathematical trick? Naively, I see that i2 + plus 12 does equal zero2. But does this have a meaning? I know one can treat the imaginary number line as just another axis like the reals, but does that mean this does represent a triangle in the complex plane with a hypotenuse of length zero? Ibix offered a rendering of the diagram using what I assume is matrix* notation...
Back
Top