Question:
A Traditional Russion Square is made by 4 blocks, and have 7 different patterns.
Given N blocks, how many different patterns would is.
N = 1, p# = 1
N = 2, p# = 1
N = 3, p# = 3
N = 4, p# = 7.
Assume N = k, p# = Pk
Then if N = k+1, p# = for each P in Pk, append one more block around P, remove dups.
Class pattern{ list<block> blocks; // return true if this pattern can be translated to another patter p By rotate or moving. boolean issame (pattern p) { // todo } }list<pattern> allpatthens (n) { if (n == 1) { return pattern.builder (). Build (); } list<pattern> patternsfornminusone = numofpattern (n - 1); list<pattern> toreturn = new arraylist<> (); for (PATTERN&NBSP;P&NBSP;:&NBSP;PATTERNSFORNMINUS1) { list<pattern > patternswithonemoreblock = patternswithonemoreblock (p); for ( pattern newp : patternswithonemoreblock) { if (!contains (TORETURN,&NBSP;NEWP)) { toreturn.add (NewP); } } } return Toreturn;} Boolean contains (list<pattern> list, pattern p) { for (Pattern pinlist : list) { if (Pinlist.issame (p)) return true; } return false;} Given pattern p.// Return all unique valid patterns with One more block. List<pattern> patternswithonemoreblock (pattern p) { list<pattern> Toreturn = new arraylist<> (); for (Block b : p.blocks ()) &NBsp; { list<block> newblocks = arrays.as (B.left (), B.right (), b.up (), b.down ()); for (block newblock : Newblocks) { if (!p.contains (newblock)) { // a new pattern found pattern newp = p.appendblock ( Newblock); if (!contains (TORETURN,&NBSP;NEWP)) { toreturn.add ( NEWP); } } } } return toreturn;} too complicated.
All possible patterns for N Russian squares