В очереди стоят мальчики и девочки. В начале каждой минуты, если за каким-то мальчиком...

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

В очереди стоят мальчики и девочки. В начале каждой минуты, если за каким-то мальчиком стоит девочка, то он меняется с ней местами, пропуская ее вперед (при этом общее количество ребят в очереди не меняется).

Вам дана очередь в виде последовательности букв M и D (начало очереди слева), определите, как она будет выглядеть через 10 минут.

MDDDMMDMDDDMMMMMMDDM

В качестве ответа выведите строку из заглавных латинских букв M и D (не разделяя их пробелами).


Информатика (17 баллов) | 42 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

# Код на ruby 2.2.3p173
def zadanie(line, time)
    line = line.gsub(/[^MD]/, "")
    time.times {
        k = 0
        while k < line.size - 1 do

            if  line[k..k + 1] == "DM"
                line[k], line[k + 1] = line[k + 1], line[k]
                k+=1
            end
            k+=1
            p [k,line]
        end
    }
    return line
end
# # Примеры применения
p zadanie("MDDDMMDMDDDMMMMMMDDM", 10)

Ответ для примера
"MMMMMMMMDMDMDMDDDDDD"

(55.0k баллов)
0

DDDDDDDDMDMMMMMMMMMM

0

# Код на ruby 2.2.3p173
def zadanie(line, time)
line = line.gsub(/[^MD]/, "")
time.times { |i|
k = 0
while k < line.size - 1 do
if line[k..k + 1] == "MD"
line[k], line[k + 1] = line[k + 1], line[k]
k+=1
end
k+=1
end
p [i+1,line]
}
return line
end