a = input()
sym_index,sym,d = -1,[],""
sym_count = [0 for i in range(len(a))]
for i in range(len(a)):
if a[i]==d:
sym_count[sym_index]+=1
else:
sym+=a[i]
sym_index+=1
sym_count[sym_index]+=1
d=a[i]
for i in range(len(sym)):
if sym_count[i]!=1:
print(str(sym_count[i])+sym[i],end = "")
else:
print(sym[i],end = "")
неділя, 26 березня 2017 р.
неділя, 5 березня 2017 р.
5.20 Game of life
Напишите программу, вычисляющую следующее состояние поля для Game of life.
Поле представляет собой прямоугольник, причём для крайних клеток поля соседними являются клетки с противоположного конца (поле представляет собой тор).
Формат ввода:
На первой строке указаны два целых числа через пробел -- высота и ширина поля.
В следующих строках подаётся состояние поля. Точка "." обозначает мёртвую клетку, символ "X" − живую.
Формат вывода:
Следующее состояние поля, используя те же обозначения, что использовались на вводе.
Поле представляет собой прямоугольник, причём для крайних клеток поля соседними являются клетки с противоположного конца (поле представляет собой тор).
Формат ввода:
На первой строке указаны два целых числа через пробел -- высота и ширина поля.
В следующих строках подаётся состояние поля. Точка "." обозначает мёртвую клетку, символ "X" − живую.
Формат вывода:
Следующее состояние поля, используя те же обозначения, что использовались на вводе.
Sample Input 1:
5 5 ..... ..X.. ...X. .XXX. .....
Sample Output 1:
..... ..... .X.X. ..XX. ..X..
Sample Input 2:
5 5 ..... ..... .XXX. ..... .....
Sample Output 2:
..... ..X.. ..X.. ..X.. .....
Sample Input 3:
5 6 ...XX. .XX... ..X... XX.... X..XX.
Sample Output 3:
.X..XX .XX... X.X... XXXX.X XXXXX.
Правильно.
1
a = list(map(int,input().split()))
2
def is_life(x,y):
3
if b[x][y]=="X":
4
return True
5
else:
6
return False
7
def find_life(x,y):
8
sum=0
9
if is_life((x+1)%a[0],y):
10
sum+=1
11
if is_life(x-1,y):
12
sum+=1
13
if is_life(x,(y+1)%a[1]):
14
sum+=1
15
if is_life(x,y-1):
16
sum+=1
17
if is_life((x+1)%a[0],(y+1)%a[1]):
18
sum+=1
19
if is_life(x-1,y-1):
20
sum+=1
21
if is_life(x-1,(y+1)%a[1]):
22
sum+=1
23
if is_life((x+1)%a[0],y-1):
24
sum+=1
25
if sum==3 and b[x][y]==".":
26
return 'X'
27
elif (sum==2 or sum==3) and b[x][y]=="X":
28
return 'X'
29
else:
30
return '.'
31
b=[]
32
for i in range (a[0]):
33
b+=[list(input())]
34
for i in range(len(b)):
35
for j in range(len(b[i])):
36
print(find_life(i,j),end="")
37
print()
7.1 Minesweeper field 1 / 1 ^-^
Поле для игры сапёр представляет собой сетку размером n×m
. В ячейке сетки может находиться или отсутствовать мина.
Напишите программу, которая выводит "решённое" поле, т.е. для каждой ячейки, не являющейся миной, указывается число мин, находящихся в соседних ячейках (учитывая диагональные направления)
Формат ввода:
На первой строке указываются два натуральных числа1≤n,m≤100
, после чего вn
строках содержится описание поля в виде последовательности точек '.' и
звёздочек '*', где точка означает пустую ячейку, а звёздочка − ячейку с
миной.
Формат вывода:
n
. В ячейке сетки может находиться или отсутствовать мина.
Напишите программу, которая выводит "решённое" поле, т.е. для каждой ячейки, не являющейся миной, указывается число мин, находящихся в соседних ячейках (учитывая диагональные направления)
Формат ввода:
На первой строке указываются два натуральных числа
, после чего в
Формат вывода:
строк поля, в каждой ячейке которого будет либо число от 0 до 8, либо
мина (обозначенная символом "*"), при этом число означает количество мин
в соседних ячейках поля.
Sample Input:
4 4 ..*. **.. ..*. ....
Sample Output:
23*1 **32 23*1 0111
Хорошие новости, верно!
1
a = list(map(int,input().split()))
2
def is_mine(x,y):
3
#x 0 .. a[0]
4
if x not in range (a[0]):
5
return False
6
#y 0 .. a[1]
7
if y not in range (a[1]):
8
return False
9
if b[x][y]=="*":
10
return True
11
else:
12
return False
13
def find_mine(x,y):
14
if is_mine(x,y):
15
return '*'
16
sum=0
17
if is_mine(x+1,y):
18
sum+=1
19
if is_mine(x-1,y):
20
sum+=1
21
if is_mine(x,y+1):
22
sum+=1
23
if is_mine(x,y-1):
24
sum+=1
25
if is_mine(x+1,y+1):
26
sum+=1
27
if is_mine(x-1,y-1):
28
sum+=1
29
if is_mine(x-1,y+1):
30
sum+=1
31
if is_mine(x+1,y-1):
32
sum+=1
33
return str(sum)
34
b=[]
35
for i in range (a[0]):
36
b+=[list(input())]
37
for i in range(len(b)):
38
for j in range(len(b[i])):
39
print(find_mine(i,j),end="")
40
print()
вівторок, 28 лютого 2017 р.
Cache function
Имеется реализованная функция f(x) , принимающая на вход целое число x , которая вычисляет некоторое целочисленое значение и возвращает его в качестве результата работы.
Функция вычисляется достаточно долго, ничего не выводит на экран, не пишет в файлы и зависит только от переданного аргумента x .
Напишите программу, которая вычисляет значение этой функции для n чисел.
Для ускорения вычисления необходимо сохранять уже вычисленные значения функции при известных аргументах.
Обратите внимание, что в этой задаче установлено достаточно сильное ограничение в две секунды по времени исполнения кода на тесте.
Формат ввода:
На первой строке находится числоn − количество значений, на которых нужно посчитать функцию. После этого следует n строк, на каждой строке по одному целому числу.
На первой строке находится число
Формат вывода:
n строк, в каждой из которой результат вычисления функции на соответствующем аргументе.
Sample Input:
5 5 12 9 20 12
Sample Output:
11 41 47 61 41
Так точно!
1
# Считайте, что функция f(x) уже определена выше. Определять её отдельно не требуется.
2
a = int(input())
3
b = {}
4
for i in range(a):
5
s=int(input())
6
if s in b.keys():
7
print(b[s])
8
else:
9
b[s]=f(s)
10
print(b[s])
неділя, 26 лютого 2017 р.
Jolly jumpers
Последовательность n>0
целых чисел называется jolly jumper в случае, если значения абсолютных
разностей последовательных элементов принимают все возможные значения
между 1 и n−1
.
Например, последовательность 1 -3 -4 -1 1 является jolly jumper последовательностью, так как абсолютные разности равны 4 1 3 2, соответственно, аn−1=4
.
Будем считать, что последовательность из одного числа является jolly jumper.
Напишите программу, которая проверяет, является ли введённая последовательность jolly jumper.
Формат ввода:
Строка, содержащая1≤n≤10000
целых чисел, разделённых пробелом.
Формат вывода:
Одна строка, содержащая "Jolly" (без кавычек), если последовательность является jolly jumper и "Not jolly" в противном случае.
.
Например, последовательность 1 -3 -4 -1 1 является jolly jumper последовательностью, так как абсолютные разности равны 4 1 3 2, соответственно, а
.
Будем считать, что последовательность из одного числа является jolly jumper.
Напишите программу, которая проверяет, является ли введённая последовательность jolly jumper.
Формат ввода:
Строка, содержащая
целых чисел, разделённых пробелом.
Формат вывода:
Одна строка, содержащая "Jolly" (без кавычек), если последовательность является jolly jumper и "Not jolly" в противном случае.
Sample Input 1:
1 -3 -4 -1 1
Sample Output 1:
Jolly
Sample Input 2:
1 3 5
Sample Output 2:
Not jolly
Sample Input 3:
4
Sample Output 3:
Jolly
Хорошие новости, верно!
1
a = list(map(int,input().split()))
2
b = [abs(a[i]-a[i+1]) for i in range(len(a)-1)]
3
if len(set(b))!=len(a)-1:
4
print("Not jolly")
5
elif sum(b)!=(1+len(a)-1)/2*len(b):
6
print("Not jolly")
7
else:
8
print("Jolly")
Підписатися на:
Дописи (Atom)