Я пытаюсь ответить на проблему makeBricks codingbat
ссылка на проблему .
Я не мог найти никакой альтернативы, но предложил следующий алгоритм перебора для решения проблемы. Я пытаюсь все возможные расчеты, чтобы равняться цели.
Я могу заставить код работать на Jupyter notebook
(anaconda python3
, но не на веб-сайте codingbat
, который выдает ошибку timed out
. Может кто-нибудь объяснить мне, почему?
def make_bricks(small, big, goal):
# make a list of all the big and small bricks
small_list=[]
for i in range(small):
small_list.append(1)
#print(small_list)
big_list=[]
for i in range(big):
big_list.append(5)
#print(big_list)
#print(goal)
target = goal
# first see if the difference between the goal and a big brick is ==0,
# if not, start removing one small brick at a time to get to goal. if not reached
# then take off another big brick and check again, then go and take off one
# by one the small bricks and so on, if by the end you dont reach ==0 it means it is False.
for i in range(len(big_list)):
target =target - big_list[i]
#print(f'i is {i}, target is {target}')
if target ==0:
return True
for k in range(len(small_list)):
target=target-small_list[k]
#print(f'k is {k}, target is {target}')
if target ==0:
return True
else:
target= goal-big_list[i]
#print(f'target is {target}')
#print(target)
#print("done")
if target !=0:
return False