Я должен написать функцию, которая принимает A, B в качестве целых чисел и должна возвращать строку, содержащую ровно A букв Y B букв N без 3 последовательных букв, являющихся то же самое.

-3
niteesh k 14 Сен 2018 в 19:13

2 ответа

Лучший ответ

Поскольку это, очевидно, домашний вопрос, я просто дам несколько советов.

Во-первых, не все комбинации параметров имеют решение, например, A = 3, B = 0.

Можете ли вы придумать рабочую стратегию, когда A = B?

Теперь предположим, что A> B. Что вы можете вывести, чтобы свести числа оставшихся символов ближе друг к другу? Так что в конце концов они одинаковы.

1
Henry 14 Сен 2018 в 16:36

Я только что наткнулся на эту страницу, когда мне нужно сделать домашнее задание, похожее на @niteesh k

Мой ответ вдохновлен комментариями здесь, а также решением, предоставленным с использованием сценария Java. Я думал, что это будет полезно для тех, кто все еще ищет решение в Python

def sol(A, B):

    if abs(A-B)>3:
        print('Desired Solution is impossible')

    else:
        d = {'a': A, 'b': B}
        full_str = ''
        length = A + B                                 

        next_chr = 'a' if A >= B else 'b'             

        for i in range(length):
            full_str += next_chr             
            d[next_chr] -= 1                

            if len(full_str) > 1:                        
                if (full_str[-1] == next_chr and full_str[-2] == next_chr) or (d[next_chr] == 0):
                    if next_chr == 'a': 
                        next_chr = 'b'
                    else: 
                        next_chr = 'a'

        print(full_str)
-1
Moses Soleman 10 Фев 2019 в 14:14