Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
62
Task/Bulls-and-cows/MATLAB/bulls-and-cows.m
Normal file
62
Task/Bulls-and-cows/MATLAB/bulls-and-cows.m
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
function BullsAndCows
|
||||
% Plays the game Bulls and Cows as the "game master"
|
||||
|
||||
% Create a secret number
|
||||
nDigits = 4;
|
||||
lowVal = 1;
|
||||
highVal = 9;
|
||||
digitList = lowVal:highVal;
|
||||
secret = zeros(1, 4);
|
||||
for k = 1:nDigits
|
||||
idx = randi(length(digitList));
|
||||
secret(k) = digitList(idx);
|
||||
digitList(idx) = [];
|
||||
end
|
||||
|
||||
% Give game information
|
||||
fprintf('Welcome to Bulls and Cows!\n')
|
||||
fprintf('Try to guess the %d-digit number (no repeated digits).\n', nDigits)
|
||||
fprintf('Digits are between %d and %d (inclusive).\n', lowVal, highVal)
|
||||
fprintf('Score: 1 Bull per correct digit in correct place.\n')
|
||||
fprintf(' 1 Cow per correct digit in incorrect place.\n')
|
||||
fprintf('The number has been chosen. Now it''s your moooooove!\n')
|
||||
gs = input('Guess: ', 's');
|
||||
|
||||
% Loop until user guesses right or quits (no guess)
|
||||
nGuesses = 1;
|
||||
while gs
|
||||
gn = str2double(gs);
|
||||
if isnan(gn) || length(gn) > 1 % Not a scalar
|
||||
fprintf('Malformed guess. Keep to valid scalars.\n')
|
||||
gs = input('Try again: ', 's');
|
||||
else
|
||||
g = sprintf('%d', gn) - '0';
|
||||
if length(g) ~= nDigits || any(g < lowVal) || any(g > highVal) || ...
|
||||
length(unique(g)) ~= nDigits % Invalid number for game
|
||||
fprintf('Malformed guess. Remember:\n')
|
||||
fprintf(' %d digits\n', nDigits)
|
||||
fprintf(' Between %d and %d inclusive\n', lowVal, highVal)
|
||||
fprintf(' No repeated digits\n')
|
||||
gs = input('Try again: ', 's');
|
||||
else
|
||||
score = CountBullsCows(g, secret);
|
||||
if score(1) == nDigits
|
||||
fprintf('You win! Bully for you! Only %d guesses.\n', nGuesses)
|
||||
gs = '';
|
||||
else
|
||||
fprintf('Score: %d Bulls, %d Cows\n', score)
|
||||
gs = input('Guess: ', 's');
|
||||
end
|
||||
end
|
||||
end
|
||||
nGuesses = nGuesses+1; % Counts malformed guesses
|
||||
end
|
||||
end
|
||||
|
||||
function score = CountBullsCows(guess, correct)
|
||||
% Checks the guessed array of digits against the correct array to find the score
|
||||
% Assumes arrays of same length and valid numbers
|
||||
bulls = guess == correct;
|
||||
cows = ismember(guess(~bulls), correct);
|
||||
score = [sum(bulls) sum(cows)];
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue