Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Solution 189909

Submitted on 11 Jan 2013

Incorrect

230Size
Leading solution size is 144.
This solution is locked. To view this solution, you need to provide a solution of the same size or smaller.

Test Suite

Test
Code Input and Output
1
Pass
 
%%
assignin('caller','score',300);
a.words0={'BUZZ','COZY','DOZE','FUZZ','GAZE','HAZE','JAZZ','LAZY','SIZE','ZERO','ZONE'};
a.e=0;
for n=randperm(numel(a.words0))
  a.i=n;
  a.words=a.words0;
  a.n=n;
  for m=1:100,
    a.m=m;
    assignin('caller','a',a);
    letter=hangman(a.words);
    letter=char(letter(1));
    a=evalin('caller','a');
    m=a.m;
    fprintf('Target word %s; Step %d; Word list %s; Guess %c\n',a.words{a.i},a.m,sprintf('%s ',a.words{:}),letter);
    matchedletters=a.words{a.i}==letter;
    if ~any(matchedletters), a.e=a.e+1; end
    matchedwords=find(cellfun(@(x)isequal(matchedletters,x==letter),a.words));
    a.i=find(matchedwords==a.i);
    a.words=regexprep(a.words(matchedwords),letter,'');
    nonemptywords=find(cellfun('length',a.words)>0);
    a.i=find(nonemptywords==a.i);
    if isempty(a.i), break; end
  end
  if ~isempty(a.i), error(sprintf('algorithm did not guess word after 100 steps. Last message: Target word %s; Step %d; Word list %s; Guessed letter %c\n',a.words{a.i},a.m,sprintf('%s ',a.words{:}),letter)); end
  n=a.n;
end
a.e=a.e/numel(a.words0);
fprintf('Average number of errors per word %f\n',a.e);
assert(a.e<5);
assignin('caller','score',evalin('caller','score')-100+round(a.e/5*100));
Target word HAZE; Step 1; Word list BUZZ COZY DOZE FUZZ GAZE HAZE JAZZ LAZY SIZE ZERO ZONE ; Guess S
Target word HAZE; Step 2; Word list BUZZ COZY DOZE FUZZ GAZE HAZE JAZZ LAZY ZERO ZONE ; Guess D
Target word HAZE; Step 3; Word list BUZZ COZY FUZZ GAZE HAZE JAZZ LAZY ZERO ZONE ; Guess Z
Target word HAE; Step 4; Word list COY GAE HAE LAY ; Guess O
Target word HAE; Step 5; Word list GAE HAE LAY ; Guess E
Target word HA; Step 6; Word list GA HA ; Guess A
Target word H; Step 7; Word list G H ; Guess G
Target word H; Step 8; Word list H ; Guess H
Target word COZY; Step 1; Word list BUZZ COZY DOZE FUZZ GAZE HAZE JAZZ LAZY SIZE ZERO ZONE ; Guess Z
Target word COY; Step 2; Word list COY DOE GAE HAE LAY SIE ; Guess A
Target word COY; Step 3; Word list COY DOE SIE ; Guess E
Target word COY; Step 4; Word list COY ; Guess C
Target word OY; Step 5; Word list OY ; Guess Y
Target word O; Step 6; Word list O ; Guess O
Target word DOZE; Step 1; Word list BUZZ COZY DOZE FUZZ GAZE HAZE JAZZ LAZY SIZE ZERO ZONE ; Guess E
Target word DOZ; Step 2; Word list DOZ GAZ HAZ SIZ ZON ; Guess H
Target word DOZ; Step 3; Word list DOZ GAZ SIZ ZON ; Guess G
Target word DOZ; Step 4; Word list DOZ SIZ ZON ; Guess N
Target word DOZ; Step 5; Word list DOZ SIZ ; Guess Z
Target word DO; Step 6; Word list DO SI ; Guess O
Target word D; Step 7; Word list D ; Guess D
Target word GAZE; Step 1; Word list BUZZ COZY DOZE FUZZ GAZE HAZE JAZZ LAZY SIZE ZERO ZONE ; Guess E
Target word GAZ; Step 2; Word list DOZ GAZ HAZ SIZ ZON ; Guess D
Target word GAZ; Step 3; Word list GAZ HAZ SIZ ZON ; Guess G
Target word AZ; Step 4; Word list AZ ; Guess Z
Target word A; Step 5; Word list A ; Guess A
Target word SIZE; Step 1; Word list BUZZ COZY DOZE FUZZ GAZE HAZE JAZZ LAZY SIZE ZERO ZONE ; Guess Z
Target word SIE; Step 2; Word list COY DOE GAE HAE LAY SIE ; Guess H
Target word SIE; Step 3; Word list COY DOE GAE LAY SIE ; Guess S
Target word IE; Step 4; Word list IE ; Guess I
Target word E; Step 5; Word list E ; Guess E
Target word JAZZ; Step 1; Word list BUZZ COZY DOZE FUZZ GAZE HAZE JAZZ LAZY SIZE ZERO ZONE ; Guess Z
Target word JA; Step 2; Word list BU FU JA ; Guess U
Target word JA; Step 3; Word list JA ; Guess J
Target word A; Step 4; Word list A ; Guess A
Target word ZONE; Step 1; Word list BUZZ COZY DOZE FUZZ GAZE HAZE JAZZ LAZY SIZE ZERO ZONE ; Guess Z
Target word ONE; Step 2; Word list ERO ONE ; Guess N
Target word OE; Step 3; Word list OE ; Guess O
Target word E; Step 4; Word list E ; Guess E
Target word ZERO; Step 1; Word list BUZZ COZY DOZE FUZZ GAZE HAZE JAZZ LAZY SIZE ZERO ZONE ; Guess R
Target word ZEO; Step 2; Word list ZEO ; Guess E
Target word ZO; Step 3; Word list ZO ; Guess Z
Target word O; Step 4; Word list O ; Guess O
Target word LAZY; Step 1; Word list BUZZ COZY DOZE FUZZ GAZE HAZE JAZZ LAZY SIZE ZERO ZONE ; Guess Z
Target word LAY; Step 2; Word list COY DOE GAE HAE LAY SIE ; Guess A
Target word LY; Step 3; Word list GE HE LY ; Guess G
Target word LY; Step 4; Word list HE LY ; Guess Y
Target word L; Step 5; Word list L ; Guess L
Target word FUZZ; Step 1; Word list BUZZ COZY DOZE FUZZ GAZE HAZE JAZZ LAZY SIZE ZERO ZONE ; Guess B
Target word FUZZ; Step 2; Word list COZY DOZE FUZZ GAZE HAZE JAZZ LAZY SIZE ZERO ZONE ; Guess Z
Target word FU; Step 3; Word list FU JA ; Guess J
Target word FU; Step 4; Word list FU ; Guess U
Target word F; Step 5; Word list F ; Guess F
Target word BUZZ; Step 1; Word list BUZZ COZY DOZE FUZZ GAZE HAZE JAZZ LAZY SIZE ZERO ZONE ; Guess A
Target word BUZZ; Step 2; Word list BUZZ COZY DOZE FUZZ SIZE ZERO ZONE ; Guess O
Target word BUZZ; Step 3; Word list BUZZ FUZZ SIZE ; Guess Z
Target word BU; Step 4; Word list BU FU ; Guess U
Target word B; Step 5; Word list B F ; Guess F
Target word B; Step 6; Word list B ; Guess B
Average number of errors per word 1.636364
2
Fail
 
%%
rng default;
a.words0=cellstr(unique(char('A'+ceil(26*rand([200,3]).^2)-1),'rows'))';
a.e=0;
for n=randperm(numel(a.words0))
  a.i=n;
  a.words=a.words0;
  a.n=n;
  for m=1:100,
    a.m=m;
    assignin('caller','a',a);
    letter=hangman(a.words);
    letter=char(letter(1));
    a=evalin('caller','a');
    m=a.m;
    matchedletters=a.words{a.i}==letter;
    if ~any(matchedletters), a.e=a.e+1; end
    matchedwords=find(cellfun(@(x)isequal(matchedletters,x==letter),a.words));
    a.i=find(matchedwords==a.i);
    a.words=regexprep(a.words(matchedwords),letter,'');
    nonemptywords=find(cellfun('length',a.words)>0);
    a.i=find(nonemptywords==a.i);
    if isempty(a.i), break; end
  end
  if ~isempty(a.i), error(sprintf('algorithm did not guess word after 100 steps. Last message: Target word %s; Step %d; Word list %s; Guessed letter %c\n',a.words{a.i},a.m,sprintf('%s ',a.words{:}),letter)); end
  n=a.n;
end
a.e=a.e/numel(a.words0);
fprintf('Average number of errors per word %f\n',a.e);
assert(a.e<5);
assignin('caller','score',evalin('caller','score')-100+round(a.e/5*100));
Error: Assertion failed.
3
Pass
 
%%
rng default;
a.words0=cellstr(unique(char('A'+ceil(26*rand([200,4]).^2)-1),'rows'))';
a.e=0;
for n=randperm(numel(a.words0))
  a.i=n;
  a.words=a.words0;
  a.n=n;
  for m=1:100,
    a.m=m;
    assignin('caller','a',a);
    letter=hangman(a.words);
    letter=char(letter(1));
    a=evalin('caller','a');
    m=a.m;
    matchedletters=a.words{a.i}==letter;
    if ~any(matchedletters), a.e=a.e+1; end
    matchedwords=find(cellfun(@(x)isequal(matchedletters,x==letter),a.words));
    a.i=find(matchedwords==a.i);
    a.words=regexprep(a.words(matchedwords),letter,'');
    nonemptywords=find(cellfun('length',a.words)>0);
    a.i=find(nonemptywords==a.i);
    if isempty(a.i), break; end
  end
  if ~isempty(a.i), error(sprintf('algorithm did not guess word after 100 steps. Last message: Target word %s; Step %d; Word list %s; Guessed letter %c\n',a.words{a.i},a.m,sprintf('%s ',a.words{:}),letter)); end
  n=a.n;
end
a.e=a.e/numel(a.words0);
fprintf('Average number of errors per word %f\n',a.e);
assert(a.e<5);
assignin('caller','score',evalin('caller','score')-100+round(a.e/5*100));
Average number of errors per word 4.845000