function result = magic_trick(input_string)
% 將輸入字符串轉(zhuǎn)換為字符數(shù)組
elements = char(input_string);
% 隨機(jī)打亂順序
permutation = elements;
permutation = permutation(randperm(length(permutation)));
fprintf('初始排列: %s\n', permutation);
% 定義通用交換函數(shù)
function perm = swap(perm, index, direction)
if strcmp(direction, 'left') && index > 1
perm([index-1, index]) = perm([index, index-1]);
elseif strcmp(direction, 'right') && index < length(perm)
perm([index+1, index]) = perm([index, index+1]);
end
end
% 執(zhí)行動作
for i = 1:length(permutation)
if permutation(i) == 'A'
permutation = swap(permutation, i, 'left');
elseif permutation(i) == 'B'
permutation = swap(permutation, i, 'right');
elseif permutation(i) == 'C'
permutation = swap(permutation, i, 'left');
end
fprintf('執(zhí)行動作后排列: %s\n', permutation);
end
% 檢查最右邊的元素是否為B
right_check = permutation(end) == 'B';
if right_check
result = true;
fprintf('成功!最右邊的元素是B。\n');
else
result = false;
fprintf('失?。∽钣疫叺脑夭皇荁。\n');
end
end
% main_script.m
result = magic_trick("ABC");
fprintf('最終結(jié)果: %d\n', result);
%這個是magic_trick.m代碼
% main_script.m
% 定義測試次數(shù)
num_tests = 10000;
success_count = 0;
for i = 1:num_tests
result = magic_trick("ABC");
if result
success_count = success_count + 1;
end
end
fprintf('經(jīng)過 %d 次測試,成功 %d 次。\n', num_tests, success_count);
fprintf('成功率: %.2f%%\n', (success_count / num_tests) * 100);
