Задания
Версия для печати и копирования в MS Word
Тип 9 № 68242
i

От­крой­те файл элек­трон­ной таб­ли­цы, со­дер­жа­щей в каж­дой стро­ке шесть на­ту­раль­ных чисел. Будем счи­тать две за­пол­нен­ные ячей­ки со­сед­ни­ми, если у них есть общая сто­ро­на или угол. У каж­дой ячей­ки в углах таб­ли­цы  — три со­сед­ние, у не­уг­ло­вых ячеек в пер­вых и по­след­них стро­ках и столб­цах  — по пять со­сед­них, у внут­рен­них ячеек таб­ли­цы  — по во­семь со­се­дей.

Назовём ячей­ку таб­ли­цы ин­те­рес­ной, если вы­пол­ня­ют­ся сле­ду­ю­щие усло­вия:

—  число в дан­ной ячей­ке боль­ше не встре­ча­ет­ся в дан­ной стро­ке;

—  в со­сед­них ячей­ках есть хотя бы одно число, боль­шее, чем число в дан­ной ячей­ке.

Опре­де­ли­те ко­ли­че­ство строк таб­ли­цы, для ко­то­рых вы­пол­не­ны сле­ду­ю­щие усло­вия:

—  стро­ка со­дер­жит не менее трёх ин­те­рес­ных ячеек;

—  в стро­ке есть по­вто­ря­ю­щи­е­ся числа.

За­да­ние 9

Спрятать решение

Ре­ше­ние.

Для на­ча­ла до­ба­вим в на­ча­ло пу­стую стро­ку вна­ча­ле и пу­стой стол­бец. Таким об­ра­зом, мы по­лу­чим, что у всех ячеек будет оди­на­ко­вое ко­ли­че­ство со­сед­них.

Най­дем, сколь­ко раз числа по­вто­ря­ют­ся в стро­ке. Для этого в ячей­ку I2 вве­дем фор­му­лу:

=СЧЁТЕСЛИ($B2:$G2;B2)

и ско­пи­ру­ем ее на диа­па­зон I2:N16001.

Опре­де­лим, яв­ля­ет­ся ли ячей­ка ин­те­рес­ной, для этого в ячей­ку O2 вве­дем фор­му­лу:

=ЕСЛИ(И(I2=1;ИЛИ(A2>B2;A1>B2;B1>B2;C1>B2;C2>B2;C3>B2;B3>B2;A3>B2));1;0)

и ско­пи­ру­ем ее на диа­па­зон O2:T16001.

По­счи­та­ем ко­ли­че­ство ин­те­рес­ных ячеек в стро­ке. Для этого в ячей­ку U2 вве­дем фор­му­лу:

=СУММ(O2:T2)

и ско­пи­ру­ем ее на диа­па­зон U2:U16001.

Про­ве­рим, вы­пол­ня­ют­ся ли для стро­ки усло­вия за­да­чи. Для этого в ячей­ку V2 вве­дем фор­му­лу:

=ЕСЛИ(И(СУММ(I2:N2)>6;U2>2);1;0)

и ско­пи­ру­ем ее на диа­па­зон V2:V16001.

Окон­ча­тель­но на­хо­дим ко­ли­че­ство ис­ко­мых строк:

=СУММ(V2:V16001)

и по­лу­ча­ем ответ  — 1986.

 

Ответ: 1986.

 

При­ведём ре­ше­ние Игоря Лев­ши­на на языке Python.

r = open('09.txt')

r = [list(map(int,st.split())) for st in r]

count = 0

r.insert(0,[0,0,0,0,0,0,0,0])

r.append([0,0,0,0,0,0,0,0])

for i in r:

i.insert(0,0)

i.append(0)

for i in range(1,len(r)-1):

k_i=0

for j in range(1,7):

if r[i].count(r[i][j])==1:

t=r[i][j]

if (t < r[i][j-1] or t < r[i][j+1]

or t < r[i-1][j-1] or t < r[i-1][j] or t < r[i-1][j+1]

or t < r[i+1][j-1] or t < r[i+1][j] or t < r[i+1][j+1]):

k_i+=1

if k_i >= 3 and len(set(r[i])) < 7 :

count += 1

print(count)

 

При­ме­ча­ние. Для про­грамм­но­го ре­ше­ния файл exсel не­об­хо­ди­мо со­хра­нить как тек­сто­вый до­ку­мент.


Аналоги к заданию № 68242: 68271 68510 Все