|
kyorofumi |
|
Burnside's counting theorem, written with Matlab function sansu() toys = de2bi([0:1023]); sigma = zeros(1,8); for i = 1:1024 toy = toys(i,:); if isequal(toy,toy) sigma(1) = sigma(1)+1; end if isequal(toy,fliplr(toy)) sigma(2) = sigma(2)+1; end if isequal(toy,flipbt(toy)) sigma(3) = sigma(3)+1; end if isequal(toy,rotate(toy)) sigma(4) = sigma(4)+1; end if isequal(toy,fliplr(flipbt((toy)))) sigma(5) = sigma(5)+1; end if isequal(toy,fliplr(rotate((toy)))) sigma(6) = sigma(6)+1; end if isequal(toy,rotate(flipbt((toy)))) sigma(7) = sigma(7)+1; end if isequal(toy,fliplr(rotate(flipbt((toy))))) sigma(8) = sigma(8)+1; end end sigma sum(sigma)/8 end function toy = fliplr(toy) %flip the toy left to right toy = toy([6,5,4,3,2,1,10,9,8,7]); end function toy = flipbt(toy) %flip the toy bottom to top toy = toy([1,10,9,8,7,6,5,4,3,2]); end function toy = rotate(toy) toy = toy([6:10,1:5]); end Stdout: sigma = 1024 32 64 32 32 64 32 1024 ans = 288 |
|
11月3日(木) 18:39:44
45483 |