% a script to determine how many perfect shuffles are required % before a given deck of cards returns to its original order clear all, close all % problem statement: % suppose we have a deck of 8 (distinct) cards % 1 2 3 4 5 6 7 8 % define a perfect shuffle as interleaving the cards as follows % 1 5 2 6 3 7 4 8 % in other words, given a deck of an even number of distinct cards, % divide the deck in half, % then alternately insert cards from the bottom half into the top half % for a deck of 8 cards, it is easily seen that the original order % is obtained after 3 applications of this process % the task is to write a program that tests this out for N cards, % where we are particularly interested in the case N=52, % the size of a standard deck of cards % here are the basic steps: % get the size of the deck % check that the input is valid % initialize deck to unique cards % repeat: % perfectly shuffle the deck % keep track of how many shuffles have been made % until: original order has been obtained disp('Counting perfect shuffles of decks with an even number of cards.') disp(' ') N = input('Please enter size of deck: '); % check that N is a (positive!) even number; else fail if ((N < 0) | (rem(N,2) ~= 0)), error('Deck must contain an even number of cards.'); end % initialize deck to unique cards originalDeck = [1:N]'; shuffles = 0; % perform the first shuffle explicitly shuffledDeck = perfectShuffle(originalDeck); shuffles = shuffles + 1; while (~isequal(shuffledDeck,originalDeck)), shuffledDeck = perfectShuffle(shuffledDeck); shuffles = shuffles + 1; end disp(['A deck of size ', num2str(N), ' requires ', num2str(shuffles), ... ' perfect shuffles before it returns to its original state.'])
matlab deckShuffling
转载mb5fe559b5073e8 ©著作权
上一篇:浅谈PHP数据结构之队列
举报文章
请选择举报类型
内容侵权
涉嫌营销
内容抄袭
违法信息
其他
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M
e1a5cfbc162e 8 月前
0e6d08193baf 8 月前