Форум » Обработка целых чисел » Не сходиться ответ 17 задание (№ 5066) А. Брейк » Ответить

Не сходиться ответ 17 задание (№ 5066) А. Брейк

Ilya Panov: (А. Брейк) В файле 17-288.txt содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от -10 000 до 10 000 включительно. Запишите в ответе количество троек элементов последовательности, в которых семеричные записи всех чисел оканчиваются на разные цифры и хотя бы одно число отрицательно. Затем минимальную разность между максимальным и минимальным числами в таких тройках. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности Ответ: 3889 145 У меня же получилось 3896 145. Где я мог допустить ошибку? Вот код: k = [] a = [int(x) for x in open('17-288.txt')] for i in range(len(a)-2): f = a g = a[i+1] d = a[i+2] h = ((f)%7, (g)%7, abs(d)%7) if len(set(h))==3 and (f<0 or g <0 or d<0): k.append(max(f, g ,d)-min(f, g, d)) print(len(k), min(k))

Ответов - 13

1llumi: def sem(x): c = abs(x) a = [] while c>0: a = [c%7] + a c = c//7 return a a = [int(c) for c in open("17-288.txt")] a2 = [] for i in range(len(a)-2): num_1 = sem(a) num_2 = sem(a[i+1]) num_3 = sem(a[i+2]) j = [num_1[-1] if len(num_1)!=0 else 0, num_2[-1] if len(num_2)!=0 else 0, num_3[-1] if len(num_3)!=0 else 0] if (a<0 or a[i+1]<0 or a[i+2]<0) and len(set(j))==3: a2.append(max(a, a[i+1], a[i+2])-min(a, a[i+1], a[i+2])) print(len(a2), min(a2))

1llumi: почему-то отсылается так, но в строчке num_1 = sem(a[тут ай, которая почему-то удаляется сайтом]). Как и в некоторых последующих))

s11kai: 1llumi пишет: почему-то отсылается так, но в строчке num_1 = sem(a[тут ай, которая почему-то удаляется сайтом]). Как и в некоторых последующих)) В самом начале странички подробно написано почему, и что надо делать, "зри в корень" "Программы "заворачивайте" в тэг "["pre2"]"..."["/pre2"]", при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[ i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом."


1llumi: Только сейчас понял, где у вас ошибка, поэтому привел свое решение. abs не для всех поставили.

s11kai: *PRIVAT*

s11kai: Ilya Panov пишет: У меня же получилось 3896 145. Где я мог допустить ошибку? Вот код: k = [] a = [int(x) for x in open('17-288.txt')] for i in range(len(a)-2): f = a g = a[i+1] d = a[i+2] h = ((f)%7, (g)%7, abs(d)%7) if len(set(h))==3 and (f<0 or g <0 or d<0): k.append(max(f, g ,d)-min(f, g, d)) print(len(k), min(k)) Красивое решение, кстати, его можно записать еще компактнее, например, так: [pre2] k = [] a = [ int(x) for x in open("17-288.txt") ] for i in range(len(a)-2): t = a[i:i+3] if len(set(abs(x) % 7 for x in t)) == 3: if any( x < 0 for x in t ): k.append(max(t) - min(t)) print(len(k), min(k)) [/pre2]

Ilya Panov: Спасибо большое всем тем, кто решил помочь мне с моей проблемой! Глубочайший вам поклон!

s11kai: Ilya Panov пишет: Спасибо большое всем тем, кто решил помочь мне с моей проблемой! Глубочайший вам поклон! Приятно, не так часто, как хотелось-бы, встречаются столь воспитанные люди! Удачи!

Ж: [pre2] s=[int(c) for c in open('c:/17-288.txt')] tr=[(max(s[i:i+3])-min(s[i:i+3])) for i in range(len(s)-2) if any(a<0 for a in s[i:i+3]) and len(set([abs(a)%7 for a in s[i:i+3]]))==3] print(len(tr),min(tr)) [/pre2]

s11kai: Ж пишет: tr=[(max(s[i:i+3])-min(s[i:i+3])) for i in range(len(s)-2) if any(a<0 for a in s[i:i+3]) and len(set([abs(a)%7 for a in s[i:i+3]]))==3] Компактно и красиво, но для начинающего - несколько сложновато для понимания поскольку тело цикла идет впереди самого цикла,привычнее, когда вначале цикл, а уж затем его тело

Ж: Согласна, что не для новичков, но для формата егэ в самый раз, т.к. размер кода на егэ имеет чуть ли не решающее значение (во всяком случае для моего сына, который в длинных кодах теряется..) Поэтому с помощью генераторов удалось сильно уменьшить код во всех задачах ЕГЭ, и за год подготовки сын стал легко и уверенно код такого плана воспроизводить. Все 17-е задачи на пары-тройки можно решить в 4 таких строки: считать файл, сделать предподсчет какого-то значения, выбрать пары по условию, распечатать ответ Кстати, так же решаются задачи 27(а) на выбор нескольких чисел, чтобы их сумма, произведение обладали каким-то свойством. Для выбора пар-троек используется combinantions из модуля itertools

s11kai: Ж пишет: за год подготовки сын стал легко и уверенно код такого плана воспроизводить. Это, лично меня, немного настораживает - "стал легко код такого плана воспроизводить" Но, с ругой стороны, согласен, это как с курицей, одни предпочитают ее вначале сварить, а уж потом есть, но есть и такие, кому удобнее ее съесть, а уж затем переваривать...

s11kai: Не понял,откуда появились рекламные ролики! Неужели Константин Юрьевич начал нас (форумчан) продавать!?



полная версия страницы