24 Задание ЕГЭ Информатика . Python
Есть такое задание : текстовом файле k7c-1.txt находится цепочка из символов латинского алфавита A, B, C, D, E. Найдите количество цепочек длины 3, удовлетворяющих следующим условиям: • 1-й символ – один из символов B, C или D; • 2-й символ – один из символов B, D, E, который не совпадает с первым; • 3-й символ – один из символов B, C, E, который не совпадает со вторым.
Я написал для него программу на Питоне :
f=open("k7c-1.txt", 'r')
a=f.read()
total = 0
i=0
while i<(len(a)-2):
if (a[i]=='B' or a[i]=='C' or a[i]=='D') and (a[i+1]=='B' or a[i+1]=='D' or a[i+1]=='E')!=a[i] and (a[i+2]=='B' or a[i+2]=='C' or a[i+2]=='E')!=a[i+1]:
total=total+3
i=i+3
else:
total = 0
i=i+1
print(total)
У меня получился ответ "6", но я не знаю точный верный ответ. И скорее всего у меня ошибка в условии программы . Можете проверить это ?
Текстовый файл для задания: EAACEEDABDDADDABDECBBCCEBECEDEABEDECCDBCCDECDEEABDADEBABDEDDEECECCDAAEDADDECEAADDBBCBBDBDAACDDBEEABDBDDAEEDEBACEBDEADDECBEEADAEACADEBEEDCDDBACCDBCEDECACDCDDCDCDAADDEECCABAEBCACECABBBCBDBCDACCCAEDCCABCDCCCDBDEECCCAEBEDDCCEDAEABABAEADDCCCDCBABADCACDDDBCDEDDCAAAAACAECEEEAABDDEECCBEDCEBDAEAECDADBBDADAADDAADCDCAECEEACCBBEEABDCABBBEEABDAAAECACDDDCAACCCABDDDECACCAAACCDBDEAADEECBDCBACACCDDDABDDACCCAACDCCECEAEDDBBCCDCBADABBBBCBBCAABBCACACADDCDADBECBACCADCCEDDDAABEDEEEDDDEBDEBDEDBDAADBEDAACBBEEEDBBDBBEEDDBCDBCBEBEEBAEACCCEACBBEDABCBDEBCADDBBCCDDCEAADAEEDBDBADBDDCDCAEEBBCCACAADCADBCABACBAAAEBCADDDDECBAAECDCBEEEDBCCAEBDBCCAAEDECCADCDABBDEAECDDEAACCEEBAEBDACDDECCDCDEBDACECBCCEDBACBEBDAABEDBDBCEACCECEAAEBCDCCAAEDEBBCBCEEBBEBCACBADECEAEECAEEABDEBADAEDCDBDCCBDBABEAEDDDAEDAEBBACEBBCBCACEBDAABACCDCEDDCBCADADCCBABECCDBEBEAACBEDAECBAAACDDABDDCDACDACDEBAACDEEEAAECCBDECBCEAEDBAABECEEBBDDADEEACDCACBDEBADDAEDCEDCBCACDEECBCCCADECADEEADECEDBBDBCEDEECBDEDEACDAADECCECBDBDABCBBEDCBCBDADBDAEBABEBCDDEDDEADDAAAECDEDDBDECEEEEAAACCBDBBCADDBBEECCBEDBCDCEABCDBDDEEBDEABDCBBDACDADABEACDEEBCDEEAACCAAEEACBDEAEEEABEBDBDEACDBDAABCACEADCDAAABBCEAECDDCDDBDCCAADCDEBDAACCEECCDDBEEBDEECBEBECDDBDDEEEACBCADBBACCBBCDEAABAEBBBADCDDDBCDBCBEDCDBBBDDCABAEDCAAEEADEBCCBBDADDEBBEBBCDAACDCBBBADCBCAAABBCEACCCECEDABABBACDACCCDADEAEABEABBCDCBCACCCEADDDEBBBEBEDDEDBBBEBAEECCDECEACBBDBDEEEECDADDBCCDBBDADEBECAAACDDACCEBCABCCDDECCACCABACAAADCACBABCEDADBABADCDEDCDEAAEBDCDCADDDEDEDCBDCBCDCDBCDEDCDEEAADDDDEBDDECEBABEEBDBBAADBCEEABDCACBBDAABCCCCBABEAECECABEAADAECDECDDAACABECADBDCBBEBDBDEDBEBCAEDAADDBAECABDEAAEEBBEDDEDDACBDEEEACEEBAECEDABABBCECEDBECDACDCAAEDDBEEADBAEACEBDBADEECCBAADCAEEBBECCBBABAAEADAEEADCABEBADDCCACBBCEDDBCAAECDCBAADDBCEAEEBCCDBCEBCCEECCCABEBEADECCDECCEADEBDCDBECACCBCDAAABABAADAAABBCEBACADDBDABDDDCCAEAEDCAAACDDDBEDCADBEBCBCEEDEABCABDACBDBADBEBDDCDEABEEDCCAAABEDADEDEBCAEEDEADBDEEECBEEADEDBCBBDABDDAEDCCDCBDACBDCABADBEBEEDDBBBECAEEDEECCEBCEDEABDCEEECCCEBBEDCCECAEDCBAADCEDAABDCAACDBCEEEACEEDCCEDBCEADECECEADDADEACAECEBEAECCCEBBDECCEAEECDCDEBBDABCBBEBCDDAADAAAEEDBBCABBCCAEBECCADBABCDBCACEEDCCBEDDBABBDBCCCCCCCDDEADDBECDAECECBCEEABCDDBBEBECEADEACDCBBEDCBCDCCADACCBBDCADCCAABDACDBDBBAABEACAADCADDABBEEDEEEBAACDAAEADCEAEEACCCCACDECDEAADACADEDECCDBBBADDBDBEDEBABBADDADCACCCBDADECEBBDBCEBEBCAABACBBAECDDAEAEDAEBAEAEAECDBEEBEEEDBCBCBDCDDECAEACECBDCCCEAEDDDCCECABEEBEAACCBEECBEDEECDDEDEEAEBADBCECDDCECADEBDEBBBDDAEBDDBABBCEBECEAECCDCEABDEDBDCCAACCCACABBDCCCAEBEADCBACCACDDEEACDDBDDBBEACEEEAAAAADEDACCDADCCAEAEBBEECEDEDDBCEADAECCBAEABCAEABCEBEEBCBECBCBCADBCBBACCABEDBDCBEBEDADEACACCABBBEABABDBCAEBBAEDEBABADECEABECCEDBEDBBADCACCAAEBABCDEAACEEAECCCCCAAEAACBCDAAEDDDAABADDAADDEADEDADEDECAEDECBBEECAADAEDDCADAEDDBAEBCEAABDBBDCACDADBBCBEEBECEBCACEEDDEECAEABEEDCCAEDAEBEBADCACEDDAEBABACEEBAADDAAECCDDECDAEEDDBAEBABCBEAECCAEBDEECCEDBEACEDBDDBDDBBECEBEBCCACBDAEDCEEABABCACEDCECACAEBCECEADDBDDACCDDBDDCAECDDADCAEEEAEDCECDABEDCDDABCBCDBCCCCEEAADEBEBBADDECEEDABBCECAECEADDBAABDADCAABDEADBBCAEEDECACBBBEBCCECBDDABDCADEAABCEABECAEEDBEEEDBDBAADDCCACCDEDECEEEEADEEAEAEBBCCDACEACCBBECEBABBACCBACDAAAABABEABDBBCEADEAACCCBEBAEDDACCCCCDCDDBAABEBDBABECEDAAECCDBEBEBCEDEADAECEDEECCCBDEDDDDBAECBEDDAABBAAACDABBCAAEABCBADDBECDCABBABCBBCBCBDEBAAAEDDACDABCDBCBADECABACABDDACDDEEBDEDEBCECEDCEAAADCADCACABBDDDAEBBEDDCDDDDDBBDCBBBDEEEAEBECCEECCABCBBCCCEDCBBCDACDCBEEABDCDDCDBEBEEBCCECEDDCECCCEDABCBDECBDEDEDADCAEBBCCBACBBADAABDBBBCBBECDABCBEBDBBBCEEDBDDEBDCCDBABEBEECACBBEACCEBECCDABEDEBCBBBBCBBAEBCDBEDDCDDBCEABACBCABDBDEDAEDDDECABDAECEEBBEEECBDBDEAACBCCCBBBCBAAEBBCEEEBDEDAAEDBBBCECCBABCBCBCCCBEABBEDCBCCBBDBCBEEEDBEEBCEDACECBCDCDBEEDECCADBABAADEAAACEECCCBDCDEBABECBDEBAEEECAAEBAADADBBBCDBDDDEAAEDDEEBDECDEEDBADAEBCCEDEBBDEEAAECDEDCBBCACBCACBDAACCDADACDEBCBCDEADECACCDBBCECEADCBAEDAEEACEDECBAEADEEBACAAEACBCBDEADDDCCDCBAECCBCDBBDBDCCBCCBEEADACDBCAEBEDADBDEEEBDCBBAAAEBBBEBDEADEDABDAACEDCCBADCBCDAAABEEBAAECBDDABBBEDECDDEEABACCEAAACCAEBCACDBAEAEECCDAAABADDDBDDCBCABBEEABBAABADCDBDCEEACEECDBEBEDCBACCCECBDACDEEAEEEBBEEBACCEDADAAAADECEEADBEEEACBDCDEBDCCCBBEDDBEDBEBEECDAADAEBAAECCBBBEBCEEEECCAEAEDEDCEECCCBAEDEAEEDADABEAEAEEEAADDBABADEADDACBAEDDEEABADCDAECBEBCEEAEDCDEDDABDCDEDEEBAEECDDCDDEEAEBDEECDACDCBBBAEDEACEBABDBEBCDCCCBBEDCABEDBCABECDEEDECCDCADBDDADDCCDCDCAACDCAEDBEBBBBEEAABAACCAACCBCDCBBAECDAADCCEEBCDCCAEEADBCDCBCAACEAEAABBEACCBBABDBBCDABBCCBCCDADBEDBEBDEDEEADBBCAAEDCDBEADADBBBBADBEADBBDBABACCDCDAACEABBDDACAEDCBCCEABBBBEEBCEBDBECCECAEBCDADEBCCBBAECCCEEEDADBEBAEAAAACBABACEAAEADECEBEDAECABAABAAEBABCBBCDDAAEDBEACBEDACBBEDCCDBEDBEEECBCEEDDEDBACCEBAECABDEDCABDBEEADBCBECCAACEBCEEDEECDBAECABDBEABDCBEECADEBECADDBCAEBDEBEACABBACEAADEABEBBDCEEEABEADCEBEEEDACBDEDBDBACAADDAECECCABAEEEABECBEEEDBEBECADDDEDCBDACCECAECEDDDCACBBBCCDEEDAAACEDAEDEBDCDACCABAEDEADBBDCADDDECBABDCCCEADCEBEACDAEABEAACEBEBDCBCCEBDEACDBCEDCBABBDBBEBDBCCEBDBBCBEDACBBBCBEBBCCAACDAEADBDBDDECDBDAADAEDEDACCCDCCAABDBBCEDACBCCCBDECACCCBABDCCCCEEDEDCACECDDADBEDCEECCAACBAEDAEEBCDDABEDEBECEAEEBEAECDEEAEBAAADEDCDCCDACECDDAECECCBADACEDDAACBADBBECCEECECECCBCEDEBDEDEECDAEBCEEAACEBADACDDCECDACBAADCDECBADEACDCBADEECDDBECCEBAECBEACAEBEDBDDCCBCACEACBBECEACBBBEDEAEAACCDEBEDECCDBECEEDCDBEEABCCBCDACBBDDEDEBEACADDBAEADCBCEBECDBABDAACBCBEDBCAACEAACBCDAAEBACECEEBEDADCEEEBABCDDBEADDACAEECBAADBEDCBCDCDACCACBBBCDAEABBDBAEBDDBAAEBECCEADACADDDADCDDDCADCCEBBABEEECDEBEDDAEDEEAEDACAAAEBCBEEADDADCEDDBDADACCADBEECDEADAAEBAADEABEADAECAEEDDBBCADAEBBCCEAAEEECDDAAEBECABADBABDECEBCACCAEBADCCBBCACDBDDAAEDAEEAACDAABCCABCEBACDECBDADECCCEDDEDDDEBBCBBDDEDACCBCABBCDDAACDCCCAACEDABAECEACBCCDBCCCEAEEACACCDEAECBDBCDEAEBAADDEEDDCEACAECEBECDAEEBDEDCDCEDEABBEABBAAAABBEADDDCEADEDEBDECCBDBCDCACDBEEEDBDBBEEAADABCBAAECDEAACCCBDCCCCCCBCEBBEECBABACEDDCEADADADCBDEBEECDBDEDECBCCEAEAEDAABCCDACACCBBBEAABCECEDDEBAECDBBDCAAECEBEDCCCBAABCDAABBBABCACCBAAADDBDABAEACEABECCACBAEDCEDACAADADAEDEDCBBCCEDACAEEBBBAAADBEBBBECCBBEAABDDDABDEABEACBCEABDEEECECCCBCDEAAABAABDBABECDCCCBBCDCCEACBDCADACBBBABCBBDDAAEAEEDBACCEDEEEDBECBEACADDEACAADDDCBADEBDEDECDDDDEADCDCEBCABAEBBDEBDAAABBCABAEBAEDBBACBAABBBABEECEDAEDBCAACCABCDEEADCEECCBDABDAEBDEAABEABBACDEEABCAEDBBECDCDECACDCECDAADABEAEECBCBBBBBDAAEADBCBABADCDABDAEAABDCCDCEADADDEEABDCDAAEAACAEECDAEEBDBBDBEDDBBCEDADEBADDAEDBAADCADEAAADAACCBDABCDDBDEBEDACCBABABDBDDCDABBBACCADCBADCBCDDBEDDDDDBECDDBAEDCDEDEADEECEEAABDACDEDDECEBEABCDADDCBBBBCCBDBABCCDDCADDDDABABCCBADADEBDDCCBBCDBEAABDAEEEEADDEAECECDCECBBEECECDCDCBADCABEBABDCCACCEABCACDAABEBDBCDBBBCCEADAEACECDCAECAEEDAAADCEBEBCBBDCEEDBCABDDAEEBBBEDCBCEDABCEADCBCBECBACCABEEADADDBCACDBAEACCAEDDACEEAACADACEDDCAEADCABCDEEDADECDECDDDCDECACDECCBCDBDADEEDCDECEDBAEAEEECCACDCCADABEDAEDCCEBCBEBEAEADBABEDBACBDBBAABCCEEDEEBDABADADBDBEDDBBDDADCCEBECEDABABAAACCBDEACEBCDACBDCAEDDDDADCBEEECEEABDDAAEDDCABAABCDEECECCDCEDCACEDCEDDBDCDBADEDACDECADDDCCCDCDBABECEABDABBDDEEEDAACEBAEDBBEDBDBCDEABEBDDEEBDABDBDEACBDABCCADCCAEAAAECDBDEBAECAEECEACCBEECCEDAAEECBDBBBDCADCDCCABDDDEBBEDCCCADBDECEBDBBCDAEBEDEABDBBACCEDAACEEDEBBEDBEDBBECECDBCEABCDAEBDDEBADBEBBEDADCECAAACDAAEEBBDDEABEACBADBDAECDAADEBACEAADCAEDAEEEEECAACBCCEBCBAEEABCEDCBBAEABEEEAECECBEDABCCBABEECCEDADAEDBBCBBEEBDACACEEDBCEDDAEEEDBEDAADDCEDBEDCECCCAAAEBEBDACAEBAEAAABDEEBCBDDCCBBAACBBAEAADEECECCECDDBCCEEDAADADABECEDEDACADEAABADABCDDCECADEDEEACDAECDDEBDCBBADEDBDCDCBDABCCCBDEBECDBEAEDEADBDDDACDAACEEAEEACCDAEABCCADCBDACEBAEEEBAEBABBBEEBDBBBBAAACDEEBAACCBBDCDCDCDACCDEBDBAEDDDDBBDDDDAEEAEABCCECCEEBDCCBBBDBDDEACABEBAAEADDECACCBDEBADACCAAEADDDEACBEECBDDABBBDBEBBCAADDEACBCACEDDAEBBABBABAACEBBDEABCCCCEABEDCDEEADBDBCACABEADABCBDDDEEDDABBAACDAEBDDCBBACADCBBAAADBBAECBEEEDEEBDBCEBAAEDCCADBEACBAAECBDABABACACBBCDAADADDEEEABABEDDAAECAECBAEEECACDCDCDCEDAAECECDBCCAEEBDAACEBBDBAEADECBDEABBDCADCEBCAACADDCCAEBACBEAAABCDCDBCDCCBAECAEAEDBCAEDEEEBBDBDBACEDAEEEADABDABECEECACADEDEBCCCDBAAABBDABEEADDBECBDCADEEBADCADEAABDCAADCCAEBDDCCBCABEDDECADDBCECDACBAEBCDACEEADAEDBECEDBEDBBDABCADEBEBBBDBAEEBBDDAACEEBEDECAEECBBCEADDECEEBADADEEAAECACCAEDEBCCBBEBDDADBCDBEDDDBEBCEECADBDDBEDDEACAABEECECCAEECEEADEABACAEECAEBDCABBCBDBEDCCECECCAECECBDCEAEACDBBAADDDBBEDCEBCBBCBADAEDDEEDECEECBBDECBACBCCDEDDAEDCAEBBADDEDAAADCBDEAAADEBDDBADECDEADCCBCCDDCBBCECABBCBBABADACCEABCDAEDADCAACAACCAEBEDDEDBAEBDECCDDEEEACAAAECCBEDCECEDAABECEECDDAABEEAABCECEBEADAADDBCCDEEEDCBACAADCADEDACCBBCDABEBDABEACCBDDCEDBBCCEDAEBACDCCEACEBCAABCCDBAAEBBADCBAAEDECECBCCEBBEAEEABCBCADBEADECCABADDDCBBBECDCCDECEAEADABAEACAAABADBACCEBBBADDCBCECCACDCDCCEBBDDAEBCDBECDEEECBCCBDBDBBDADADDDAACCADDEBCDADEBCBCBCCADBDDEBEBAADDAABBCCCEBEBECCABEEAEECDEDEDAADBDAECACDACEDBBCACEDCEDECBADCCEDEDADBBACABCEDCDDCDDBDECADEEBCDCEEBBDEDDDBECBADCDBEACADEADDACDDAEDCEDEDCCBACCCEADACCBEBEDCDBDEDCCCCAEBEDCEABCCDAEEAAADBEABDDEADEBCCAADDCCDAAEDBADBDECDBBCECBECCDEEBDEECAEBDDABAAEEEEADEBDBBCDDCBBEEBDECEABAEBAEBBEAADDABBBAEEBEBAACBECDBCADECDABADACCCECAECABBACAAAEBEBAACACBEEAEAEDDACCCEADADECBDDECBECCDEDAADCEBABBDAACEEBBBAEDCDDDBDEEACAABCDEBEDBACEDACBBEEBCBBBDEEBDABABEBACEAADBCADABADDADACACADCAECEBDDCDDCCECDCBBEAAEBDDCBACEEBACBDABEBEDBDDABABEABADABABABAEABCEBCABBBBEEEDACCADCEBBEEAEBEEECCCBDBEDDBDCEEECBBBDCAEEBACEACCCDBEDBABACDCCABACDABDCDBEECAABBABCDBBDDBDCBCDEEDCBBACCBBBAAACCDAECBDDDDCABCCABDECCEAACABEECEBBEBCBBABCDECEAAAAECABCCAECCCDCDCBCCADABCADCECDECECDCBDBDBACBBAAEDCADAEDBEEDDEAEEDDBABAADEBDCEEECCCAEEEDACAECDBCACEDDDAECDEEDCEEBACCDCDCDBAAEDCABBBADDBCDEDDEEEDCDBCBCBCABABDBEDCBAABBEDCDEDBEEEEBDDAADCECBBACDAEAAEDBCEAACBAEDDEBEAADAECBECDDECAACBDBCCECBCCACBECBEAECADBBEEADEABABBBEDADBACCECDAAAACCBEAEDCDBEAABACDBACCACBBCCCBADBABBEDDACEEADBCCEBBAEEECBABEEBACACDABEAEEEEEAABACCBADDBCACCBCADDDABBAADBDAEECACEDBEADCEADADAECECDCADEDCBAADDDADBCCAEEEDCCAEBABADAACBACDEACECAACBAACEDEEDCBEBEDCAEBDAABACACAEBAEEEAEDEEABBACBBBABBBDBDCEAEBDDCECACAECABDDBCBBEDBDCEAABEAABDABBACBACDABABEBDEEEBADACBDBEBDECCABCEECAEAAEBDCEBDDECDEDBADBEDCDCBACBAADCBEADBEEEDDEEEABCEACADBDABBEAAEAEDADEABECAEEDEEEBCBDBDDBDDCAECCDBAAAEEEDDDAEDDEECCACBCADDDBBCBDCABEEEECDBEAADCCBAEAABACCCCEACDAAEACBDCEADCDEAADDACEBAAACAAACEBCDDBEEEADDADAADDDEEEBDCACEDCECBBACBBABEEEABCCBEEBDABDAEBDDEAABECDCABBDBADECACCACEEAAABACDDDBDBDCDEEEAEEDDAABDEECDEDCECACAADECCABBDECBECEBACDDCBACBEABBAEADCBACEECABABEDBEBBDECACABCEABCBEBEBBABEDCAADDCABDDEBBBBAEEEBEBBBBBACADCDAECEACABCDEDBAECDDCBEDAADBDCAAEDCCEDBECDACDBDDAEACECEBBCECDDDEBBBEABDAADCDCBEADBADACEBCCDCEBCEAABABEEDCCECCDECEDCDACCBBCEBDDECEEBABDAABDEDAADECABDEDAEAEDADDCBCCCAADBEBDCDBAADBBEBEDDCDDCDDDADBAB
Простите, что не могу перенести в виде файла .txt, так как это не позволяет сайт.
Ответы (4 шт):
Делайте по шагам:
if a[i]=='B' or a[i]=='C' or a[i]=='D':
if a[i+1]=='B' or a[i+1]=='D' or a[i+1]=='E':
if a[i+1]) != a[i]:
if a[i+2]=='B' or a[i+2]=='C' or a[i+2]=='E':
if a[i+2] != a[i + 1]:
total += 1
Данный вариант выдал 1280. Проверял на меньшей выборке, алгоритм работает корректно. Внимание, в условии не сказано, могут ли цепочки пересекаться. Представленный алгоритм работает с пересекающимися цепочками, но можно доработать для непересекающихся.
P.S. Строчка 'data=a' по сути не нужна, если в коде заменить 'data' на 'a'. Или сохранить данные из файла в 'data'.
P.S.S. У вас файл после open не закрывается. Рекомендую использовать менеджер контекста 'with', который автоматически закроет файл. Либо вручную закрывать в конце кода.
import itertools
# Вариант, построенный на итераторах
data = a
len_substr = 3
filters = (set("BCD"), set("BDE"), set("BCE"))
iters = (itertools.islice(data, i, None) for i in range(len_substr))
total = sum(
1
for substr in zip(*iters)
if all(s in f for s, f in zip(substr, filters))
and all(a != b for a, b in itertools.pairwise(substr))
)
print(total)
from re import findall
print(len(findall(r'([BCD])(?!\1)(?=([BDE])(?!\2)[BCE])', s)))
1280
На строке BDEB получается 2.
1
Аппетит приходит во время еды. Читаю файл, создаю последовательность троек символов, считаю их collections.Counter, генерирую все подходящие комбинации itertools.product, суммирую счётчики:
import collections
import itertools
with open('k7c-1.txt') as f:
s = f.read()
c = collections.Counter(zip(s, s[1:], s[2:]))
s = 0
for t in itertools.product('BCD', 'BDE', 'BCE'):
if t[0] != t[1] != t[2]:
s += c[t]
print(s)
$ python temp.py 1280
2
В комментариях указали, что память линейная. Посыпаю голову пеплом и исправляюсь. В новом варианте память константная. Файл посимвольно читается (chars), поток символов преобразуется в поток троек (triples), который собирается в словаре. Словарь имеет константный размер, не более 35 (= 243) элементов.
import collections
import itertools
def chars(f):
while c := f.read(1):
yield c
def triples(seq):
it = iter(seq)
for a in it: break
for b in it: break
for c in it:
yield a, b, c
a, b = b, c
with open('k7c-1.txt') as f:
c = collections.Counter(triples(chars(f)))
print(sum(
c[t]
for t in itertools.product('BCD', 'BDE', 'BCE')
if t[0] != t[1] != t[2]
))
3
Ещё один вариант из обсуждения в комментариях. Константная память, словарь не нужен:
import itertools
def chars(f):
while c := f.read(1):
yield c
def triples(seq):
it = iter(seq)
for a in it: break
for b in it: break
for c in it:
yield a, b, c
a, b = b, c
permitted = set(
t
for t in itertools.product('BCD', 'BDE', 'BCE')
if t[0] != t[1] != t[2]
)
with open('k7c-1.txt') as f:
print(sum(1 for t in triples(chars(f)) if t in permitted))
P.S. Первый раз в моей практике пригодился моржовый оператор, в chars.
P.P.S. В triples использован странный способ присваивать переменной значение итератора. Обычно пишется a = next(it), тут for a in it: break. Этот способ позволяет без ошибок обрабатывать последовательности длиной меньше двух элементов. Если элементов не хватает, очередные for молча перестают определять переменные.