首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在迭代后打印每一行

在迭代后打印每一行
EN

Stack Overflow用户
提问于 2014-02-13 06:20:22
回答 1查看 132关注 0票数 0

我正在试着为绞刑者游戏写一个函数。该函数将接受一串猜测的单词和一串猜测的字母。一个输出是在尝试每个字母后的棋盘字符串,另一个输出应该是与单词不匹配的字母串(我们称之为遗漏的字母),最后一个输出是游戏的结果。如果我们得到六个以上的字母与单词不匹配,输出结果是'You lest!‘,如果在六个错误猜测之前字母匹配,则输出结果是'You win!’。如果遗漏的字母数未达到6个,则输出应为“You have <#> lives left.‘”。猜测的字母总是小写,猜测的单词可以是大小写的组合。因此,如果单词是单词是'MatLab‘,并且猜测的字母是'aeiot’,则应该输入输出

代码语言:javascript
复制
    word='MatLab'
letter='aeiot'

输出

代码语言:javascript
复制
board=['_''a''_''_''a''_'; 
      '_''a''_''_''a''_'; 
      '_''a''_''_''a''_'; 
      '_''a''_''_''a''_'; 
      '_''a''t''_''a''_']

missed='eio'
result='You have 3 lives left.'

当我编写函数时,我不知道如何在每次迭代后获得棋盘,第二件事是如何获得遗漏的字母。

下面是我的函数

代码语言:javascript
复制
function [boards, missed, result]=playHangman(word,letter)

 for ind=1:length(letter)
   compare=((word==letter(ind))|(word==(char(double(letter(ind)-32)))));
 end
boards=word;
boards(~compare)='_';
 missed=**??**
 if strcmp(word,boards)
   result='You win!';
 elseif strcmp(word,boards)==false||6-length(missed)==0
   result='You lose!';
 else 
   result=sprintf('You have %d lives left.',6-length(missed));
 end
end

任何帮助都将不胜感激。谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-02-13 06:29:23

我不确定这是不是你想要的。使用ismember可以轻松获取board,使用setdiff可以轻松获取missed

代码语言:javascript
复制
word = 'MatLab'; %// data
letter = 'aeiot'; %// data

N = numel(letter);
board = cell(N,1);
missed = cell(N,1);
for n=1:N
    board{n} = word;
    board{n}(~ismember(lower(word),letter(1:n))); = '_' %// hide letters not hit
    missed{n} = setdiff(letter(1:n),word); %// letters not present in word
end

结果:

代码语言:javascript
复制
board = 
    '_a__a_'
    '_a__a_'
    '_a__a_'
    '_a__a_'
    '_at_a_'

missed = 
    []
    'e'
    'ei'
    'eio'
    'eio'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21741074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档