cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A246559 List of one-sided polyominoes in binary coding, ordered by number of bits, then value of the binary code. Can be read as irregular table with row lengths A000988.

Original entry on oeis.org

0, 1, 3, 7, 11, 15, 23, 27, 30, 39, 54, 75, 31, 47, 55, 62, 79, 91, 94, 143, 181, 182, 188, 203, 286, 314, 406, 551, 566, 1099, 63, 95, 111, 126, 159, 175, 183, 189, 190, 207, 219, 221, 222, 252, 287, 303, 315, 318, 347, 350, 378, 407, 413, 476, 504
Offset: 1

Views

Author

M. F. Hasler, Aug 29 2014

Keywords

Comments

The binary coding (as suggested in a post to the SeqFan list by F. T. Adams-Watters) is obtained by summing the powers of 2 corresponding to the numbers covered by the polyomino, when the points of the quarter-plane are numbered by antidiagonals, and the animal is pushed to both borders as to obtain the smallest possible value. See example for further details.
The smallest value for an n-omino is the sum 2^0+...+2^(n-1) = 2^n-1 = A000225(n), and the largest value, obtained for the straight n-omino (in x direction), is 2^0+2^1+2^3+...+2^A000217(n-1) = A181388(n-1).

Examples

			Number the points of the first quadrant as follows:
...
9 ...
5 8 ...
2 4 7 ...
0 1 3 6 10 ...
The "empty" 0-omino is represented by the empty sum equal to 0 = a(1).
The monomino is represented by a square on 0, and the binary code 2^0 = 1 = a(2).
The dominos ".." and ":" would be represented by 2^0+2^1 = 3 and 2^0+2^2 = 5. Since they are equivalent up to rotation, only 3 = a(3) is listed.
The A000988(3) = 2 one-sided trominoes are represented by 2^0+2^1+2^3 = 11 (...) and 2^0+2^1+2^2 = 7 (:.). Again these values are listed in increasing size as a(4) and a(5).
		

Crossrefs

See A246521 and A246533 for enumeration of free and fixed polyominoes.

Programs

  • PARI
    rot(P,T=[0,1;-1,0])=P=Set(apply(x->x*T,P));apply(x->x-[P[1][1],0],P)
    onesided(L,N=apply(p2n,L))={ local(L=L, R=apply(P->setsearch(L,rot(P)),L), cleanup(i)=my(m=N[i]); while(m!=N[i=R[i]], if( m>N[i], m=N[i], L[i]=0))); for(i=1,#L, L[i] && cleanup(i));if(#L>1,select(P->P,L),L)}
    for(i=0,5,print(Set(apply(p2n,onesided(L=if(i,grow(L),[[]])))))) \\ see A246533 for grow() and p2n()