Files
2020-06-02 13:38:27 +02:00

50 lines
1.0 KiB
Python

import itertools as it
import numpy as np
n=4
def enum(n):
for i in reversed(range(1,n+1)): #Number of characters considered
for j in reversed(range(0,n+1)): #Number of characters used
for k in it.combinations(range(1,i),j):
yield k+(i,)
def select(n, r):
a = 0
e = enum(n)
x = next(e)
while x!=r:
a+=1
x = next(e)
if x==r:
return a
def getSoldiers(skills, requirement):
soldiers = []
for j in range(len(requirement)):
if int(requirement[j]):
for i in range(len(skills)):
if int(skills[i][j]) and not(i+1 in soldiers):
soldiers.append(i+1)
break
return soldiers
#Test case
skills = ['00', '10', '01', '11']
requirement = '01'
#using functions
soldiers = tuple(getSoldiers(skills, requirement))
choosen = select(n, soldiers)
#output
print(choosen%(10**9+7))
#Maybe the algorithm is right, but it is too long to execute,
#it didn't pass time limit
const a = 5