Автомат получает ** вход трёхзначное десятичное число. По полученному числу строится...

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

Автомат получает на вход трёхзначное десятичное число. По полученному числу строится новое десятичное число по следующим правилам:
1)если число трехзначное,то удваивается его первая цифра(вместо первой цифры записывается её удвоенное значение),если четырехзначное,то вместо последней цифры записывается 1;
2)в полученном числе каждая цифра заменяется на предыдущую (1 заменяется на 0,2-на 1 и т.д.),а 0 заменяется на 9.
Незначащие нули в полученном числе отбрасываются.Получившееся таким образом число является результатом работы автомата.
Например,из числа 327 на первом шаге будет получено число 627,на втором-516;из числа 5126 на первом шаге будет получено число 5121,на втором -4010;из числа 1326 на первом шаге будет получено число 210.
Определите сколько из приведенных ниже чисел могут получиться в результате работы автомата.
159 261 1916 1120 820 105 5100 9410


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

Код для проверки

def Avtomat(chislo)
    s = chislo.to_s

    if s.length == 4
        s = s[0..-2] + "1"
    end
    if s.length == 3
        s = (2*(s[0].to_i)).to_s + s[1..-1]
    end

    sym = [9,0,1,2,3,4,5,6,7,8]
    s_new = ""
    for k in 0..s.size - 1
        s_new += sym[s[k].to_i].to_s
    end

    return s_new.to_i
end

for i in 100..9999
    r = Avtomat(i)
    p [i,r] if [159, 261, 1916, 1120, 820, 105, 5100, 9410].include?(r)
end

Вывод
[116, 105]
[160, 159]
[616, 105]
[660, 159]
[1930, 820]
[1931, 820]
[1932, 820]
[1933, 820]
[1934, 820]
[1935, 820]
[1936, 820]
[1937, 820]
[1938, 820]
[1939, 820]
[2230, 1120]
[2231, 1120]
[2232, 1120]
[2233, 1120]
[2234, 1120]
[2235, 1120]
[2236, 1120]
[2237, 1120]
[2238, 1120]
[2239, 1120]
[6210, 5100]
[6211, 5100]
[6212, 5100]
[6213, 5100]
[6214, 5100]
[6215, 5100]
[6216, 5100]
[6217, 5100]
[6218, 5100]
[6219, 5100]

В перечисленное не попали числа 261 1916 9410

Но если брать что "
Автомат получает на вход трёхзначное десятичное число", т.е 4 значные не подаются на вход то не войдут числа
261 1916 1120 820 5100 9410

(55.0k баллов)