В некоторой компьютерной игре вам необходимо убивать врагов, получая за это новые уровни....

0 голосов
75 просмотров

В некоторой компьютерной игре вам необходимо убивать врагов, получая за это новые уровни. Враги бывают двух видов: обычные и боссы. Чтобы получить новый уровень, необходимо убить двух врагов или одного босса. При этом, если вы убиваете босса после того, как убили одного врага, вы получаете новый уровень, и начинаете получать следующий с нуля (то есть убитый до этого враг не считается). Вам дана последовательность убийств, в которой E обозначает обычного врага, а B - босса. Какой уровень вы получили, если изначально вы были на нулевом уровне? EBEEEEEBEEEBEEEEBEEEEEEEBBEEEEEEBBEBEEBBEBBEBEEEEBBBBEEBEEEEEEEBEEBBBEEBBBEEEEBBEEBEEEEBBEBBBBEBEBEE


Информатика (74 баллов) | 75 просмотров
0

Видимо, сам придумал))))

0

Задача в коллекцию Задорнова.

0

ответ 63

0

спасибо

Дано ответов: 2
0 голосов
Правильный ответ

// 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.

Результат выполнения аналогичный.

(142k баллов)
0

Под "не учат в школе" имелось в виду использование регулярных выражний.

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

(53.1k баллов)
0

код на Ruby

0

спасибо