Загрузка данных


#!/usr/bin/env python3

'''
Тип 8 № 17328
Герасим составляет 7-⁠буквенные коды из букв Г, Е, Р, А, С, И, М.
Каждую букву нужно использовать ровно 1 раз, при этом нельзя ставить подряд две
гласные или две согласные. Сколько различных кодов может составить Герасим?
'''

def ege_8_17328():
	print("ege_8_17328")
	x = ['g', 'e', 'r', 'a', 's', 'i', 'm']
	y = [1, 0, 1, 0, 1, 0, 1]
	def cb(s, b):
		c = 0
		for i in range(len(s)):
			if(s[i] == b): c += 1
		return c
	def eq(b, x, y):
		for i in range(len(x)):
			if(x[i] == b): return y[i]
		return 0
	def gs(s, x, y):
		r = []
		for i in range(len(s)):
			r.append(eq(s[i], x, y))
		return r
	def corr(r):
		p = r[0]
		for i in range(1, len(r)):
			if(p == r[i]): return 0
			p = r[i]
		return 1
	count = 0
	for a in x:
		for b in x:
			for c in x:
				for d in x:
					for e in x:
						for f in x:
							for g in x:
								s = a + b + c + d + e + f + g
								#print(s)
								if(cb(s, 'a') > 1): continue
								if(cb(s, 'b') > 1): continue
								if(cb(s, 'c') > 1): continue
								if(cb(s, 'd') > 1): continue
								if(cb(s, 'e') > 1): continue
								if(cb(s, 'f') > 1): continue
								if(cb(s, 'g') > 1): continue
								r = gs(s, x, y)
								cr = corr(r)
								print("%s = %s / %d" % (s, r, cr))
								if(cr > 0): count += 1
	print("ege_8_17328 count= %d" % count)
	pass

'''
Тип 8 № 26953
Найдите количество пятизначных восьмеричных чисел, в которых все цифры различны
и никакие две четные или нечетные не стоят рядом.
'''

def ege_8_26953():
	print("ege_8_26953")
	x = [0, 1, 2, 3, 4, 5, 6, 7]
	count = 0
	for a in x:
		for b in x:
			for c in x:
				for d in x:
					for e in x:
						v = [a, b, c, d, e]
						ok = 1
						for i in range(5):
							for j in range(5):
								if(i == j): continue
								if(v[i] == v[j]): ok = 0
						if(ok < 1): continue
						r = []
						for i in range(5):
							r.append(v[i] & 0x01)
						ok = 1
						p = r[0]
						for i in range(1, 5):
							if(p == [r[i]]): ok = 0
							p = r[i]
						print("%s = %s / %d" % (v, r, ok))
						if(ok > 0): count += 1

	print("ege_8_26953 count= %d" % count)
	pass

'''
Тип 8 № 26982
Сколько существует шестизначных чисел, делящихся на 5, в которых каждая цифра
может встречаться только один раз, при этом никакие две чётные и две нечётные
цифры не стоят рядом.
'''

def ege_8_26982():
	print("ege_8_26982")
	pass

#ege_8_17328()
ege_8_26953()
#ege_8_26982()