Форум » Кодирование и декодирование информации » ege8 задание Р=00 » Ответить

ege8 задание Р=00

s11kai: Здравствуйте, Константин Юрьевич! Благодарю Вас за публикацию моих решений в ege8.doc! Изумило предложенное Вами решение задания Р-00 своей компактностью и, показался интересным «метод грубой силы» Б.С. Михлина, своей нестандартностью подхода в поиске номера строки без вычитания 1! В связи, с чем возникла идея, вот бы объединить обе идеи в одной программе, и вот что получилось: [pre2]from itertools import product k=0 for a, b, c, d, e in product('УОА',repeat=5): k+=1 if k == 240: break print(k,'-', a, b, c, d, e)[/pre2] Буду рад, если вы сочтете возможным опубликовать его. С уважением и благодарностью к вашему труду во благо продвижения информационных технологий в образовании, Александр

Ответов - 4

s11kai: Только что обнаружил, что решение, предложенное к задаче №10 ege8 вообще не из «этой оперы», да и ответ дает 35 вместо 92 [pre2] A = "0123456789" N = 6 A = list( reversed(A) ) Aeven = [x for x in A if ord(x) % 2 == 0] Aodd = [x for x in A if ord(x) % 2 != 0] allWords = [] def rec( word, k, Alpha ): #print( ' '*len(word), '>'+word+'<', k, Alpha ) if len(word) == k: if not word in allWords: allWords.append( word ) return 1 return 0 count = 0 for i, c in enumerate(Alpha): if( word == '' or ( (Alpha.index(c) % 2 != Alpha.index(word[-1]) % 2) and (Alpha.index(c) > Alpha.index(word[-1])) ) ): count += rec( word+c, k, Alpha ) return count print( rec( "", N, A ) ) [/pre2] Одно из возможных и правильных решений к этому заданию может выглядеть так: [pre2] n = 0 from itertools import product s = product('АОУ',repeat=5) for x in s: #print(n,x) n += 1 if (x[0] == 'О' and x[1] == 'А' and x[2] == 'О' and x[3] == 'А' and x[4] == 'О'): print(n) break [/pre2] Спасибо!

s11kai: так тоже работает [pre2] k=0 from itertools import product for a, b, c, d, e in product('АОУ',repeat=5): k+=1 if (a == 'О' and b == 'А' and c == 'О' and d == 'А' and e == 'О'): break print(k,'-', a, b, c, d, e) [/pre2]

s11kai: и, даже, без подключения библиотек: [pre2] k = 0 for a in range(3): for b in range(3): for c in range(3): for d in range(3): for e in range(3): k+=1 if (a == 1 and b == 0 and c == 1 and d == 0 and e == 1): print(k) break [/pre2]


s11kai: и даже так: print(int('10101',3)+1) отсюда следует что задание (автор – В.В. Путилов): Р-01. Все 5-буквенные слова, составленные из 5 букв А, К, Л, О, Ш, записаны в алфавитном порядке. Вот начало списка: 1. ААААА 2. ААААК 3. ААААЛ 4. ААААО 5. ААААШ 6. АААКА …… На каком месте от начала списка стоит слово ШКОЛА? можно решить всего в одну строку, а именно: print(int('41320',5)+1) Спасибо!



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