Предмет: Информатика,
автор: sage1101
В некоторой компьютерной игре вам необходимо убивать врагов, получая за это новые уровни. Враги бывают двух видов: обычные и боссы. Чтобы получить новый уровень, необходимо убить двух врагов или одного босса. При этом, если вы убиваете босса после того, как убили одного врага, вы получаете новый уровень, и начинаете получать следующий с нуля (то есть убитый до этого враг не считается). Вам дана последовательность убийств, в которой E обозначает обычного врага, а B - босса. Какой уровень вы получили, если изначально вы были на нулевом уровне? EBEEEEEBEEEBEEEEBEEEEEEEBBEEEEEEBBEBEEBBEBBEBEEEEBBBBEEBEEEEEEEBEEBBBEEBBBEEEEBBEEBEEEEBBEBBBBEBEBEE
Аноним:
Видимо, сам придумал))))
Ответы
Автор ответа:
0
s = "EBEEEEEBEEEBEEEEBEEEEEEEBBEEEEEEBBEBEEBBEBBEBEEEEBBBBEEBEEEEEEEBEEBBBEEBBBEEEEBBEEBEEEEBBEBBBBEBEBEE"
level = 0
score = 0
for i in 0..s.size
if s[i]=="E"
score+=1
end
if s[i]=="B" or score == 2
score = 0
level += 1
end
end
p level
ответ 63
level = 0
score = 0
for i in 0..s.size
if s[i]=="E"
score+=1
end
if s[i]=="B" or score == 2
score = 0
level += 1
end
end
p level
ответ 63
Автор ответа:
1
// PascalABC.NET 3.1, сборка 1204 от 24.03.2016
begin
var lvl:=0;
var s:= 'EBEEEEEBEEEBEEEEBEEEEEEEBBEEEEEEBBEBEEBBEBBEBEEEEBBBBEEBEEEEEEEBEEBBBEEBBBEEEEBBEEBEEEEBBEBBBBEBEBEE';
var predE:=false;
foreach var c in s do
if c='E' then begin
if predE then begin predE:=false; lvl+=1 end
else predE:=true
end
else
if c='B' then begin predE:=false; lvl+=1 end;
Writeln(lvl,' level')
end.
Результат выполнения программы
63 level
И второй вариант, "как не учат в школе":
// PascalABC.NET 3.1, сборка 1204 от 24.03.2016
begin
var s:= 'EBEEEEEBEEEBEEEEBEEEEEEEBBEEEEEEBBEBEEBBEBBEBEEEEBBBBEEBEEEEEEEBEEBBBEEBBBEEEEBBEEBEEEEBBEBBBBEBEBEE';
Writeln(Regex.Matches(s,'E[EB]|B').Count,' Level')
end.
Результат выполнения аналогичный.
begin
var lvl:=0;
var s:= 'EBEEEEEBEEEBEEEEBEEEEEEEBBEEEEEEBBEBEEBBEBBEBEEEEBBBBEEBEEEEEEEBEEBBBEEBBBEEEEBBEEBEEEEBBEBBBBEBEBEE';
var predE:=false;
foreach var c in s do
if c='E' then begin
if predE then begin predE:=false; lvl+=1 end
else predE:=true
end
else
if c='B' then begin predE:=false; lvl+=1 end;
Writeln(lvl,' level')
end.
Результат выполнения программы
63 level
И второй вариант, "как не учат в школе":
// PascalABC.NET 3.1, сборка 1204 от 24.03.2016
begin
var s:= 'EBEEEEEBEEEBEEEEBEEEEEEEBBEEEEEEBBEBEEBBEBBEBEEEEBBBBEEBEEEEEEEBEEBBBEEBBBEEEEBBEEBEEEEBBEBBBBEBEBEE';
Writeln(Regex.Matches(s,'E[EB]|B').Count,' Level')
end.
Результат выполнения аналогичный.
Похожие вопросы
Предмет: Геометрия,
автор: ostrovskaaolga598
Предмет: Английский язык,
автор: slabkaanna
Предмет: Қазақ тiлi,
автор: cvetlanasveta33
Предмет: Литература,
автор: nikitabubenko23
Предмет: ОБЖ,
автор: netreba1986