Today I solved one of the problems required for solving Google Kick Start in 2020, see on my account.
Round H 2020 - Kick Start 2020
Boring Numbers (7pts, 12pts)
Problem
Ron read a book about boring numbers. According to the book, a positive number is called boring if all of the digits at even positions in the number are even and all of the digits at odd positions are odd. The digits are enumerated from left to right starting from 1. For example, the number 1478 is boring as the odd positions include the digits {1, 7} which are odd and even positions include the digits {4, 8} which are even.
Given two numbers L and R, Ron wants to count how many numbers in the range [L, R] (L and R inclusive) are boring. Ron is unable to solve the problem, hence he needs your help.
Let's try to find the solution:
import math
print("Round H 2020 - Kick Start 2020: Detect is positive number is called boring.\n")
nr = int(input("get natural positive number: "))
all_cond = []
# detect if the number is odd or even number
def detect_odd_even(num):
if (num % 2) == 0:
#print("{0} is Even number".format(num))
detect = True
else:
#print("{0} is Odd number".format(num))
detect = False
return detect
# check if is an boring number.
def boring_number(num):
for p,num in enumerate(str(num),1):
print(p,num)
if (detect_odd_even(p) == detect_odd_even(int(num))): all_cond.append(True)
else:
all_cond.append(False)
# check the number is
boring_number(nr)
# print result if the positive number is boring
if (all(all_cond) == True): print("{0} is an positive boring number".format(nr))
else:
print("{0} is not a positive boring number".format(nr))
Let's test it:
~/mathissues$ python math_003.py
Round H 2020 - Kick Start 2020: Detect is positive number is called boring.
get natural positive number: 345
(1, '3')
(2, '4')
(3, '5')
345 is an positive boring number
Then la last step is to test any number from range of given two numbers L and R.
The new source code is this:
import math
print("Round H 2020 - Kick Start 2020: Detect is positive number is called boring.\n")
#nr = int(input("get natural positive number: "))
all_cond = []
# detect if the number is odd or even number
def detect_odd_even(num):
if (num % 2) == 0:
#print("{0} is Even number".format(num))
detect = True
else:
#print("{0} is Odd number".format(num))
detect = False
return detect
# check if is an boring number.
def boring_number(num):
for p,num in enumerate(str(num),1):
print(p,num)
if (detect_odd_even(p) == detect_odd_even(int(num))): all_cond.append(True)
else:
all_cond.append(False)
# check the number is
#boring_number(nr)
# print result if the positive number is boring
nr1 = int(input("get firt natural positive number: "))
nr2 = int(input("get firt natural positive number: "))
if nr1 < nr2:
n1 = nr1
n2 = nr2
else:
n1 = nr2
n2 = nr1
for all_nr in range(n1,n2):
all_cond = []
boring_number(all_nr)
print(all_nr)
# print result if the positive number is boring
if (all(all_cond) == True): print("{0} is an positive boring number".format(all_nr))
else: print("{0} is not a positive boring number".format(all_nr))
all_cond = []
The final solution result to test all numbers in range given two numbers L and R can be see bellow:
~/mathissues$ python math_003.py
Round H 2020 - Kick Start 2020: Detect is positive number is called boring.
get firt natural positive number: 11
get firt natural positive number: 16
(1, '1')
(2, '1')
11
11 is not a positive boring number
(1, '1')
(2, '2')
12
12 is an positive boring number
(1, '1')
(2, '3')
13
13 is not a positive boring number
(1, '1')
(2, '4')
14
14 is an positive boring number
(1, '1')
(2, '5')
15
15 is not a positive boring number