過去ログ

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

過去問題一覧へ戻る