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 шт):

Автор решения: MBo

Делайте по шагам:

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
→ Ссылка
Автор решения: Vladimir Bogdanov

Данный вариант выдал 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)
→ Ссылка
Автор решения: Qwertiy

tio.run

from re import findall

print(len(findall(r'([BCD])(?!\1)(?=([BDE])(?!\2)[BCE])', s)))
1280

На строке BDEB получается 2.

→ Ссылка
Автор решения: Stanislav Volodarskiy

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 молча перестают определять переменные.

→ Ссылка