Пример #1
0
def solution(expression):
    op = ['+', '-', '*']
    ans = 0
    for cse in permu([0, 1, 2], 3):
        cse = list(cse)
        A = expression.split(op[cse[0]])
        As = []
        #print(A)
        for b in A:
            C = ''
            B = []
            for c in b.split(op[cse[1]]):
                C = eval(c)
                #print('C',C)
                B.append('(' + str(C) + ')')
            #print('B',B)
            if len(B) > 1:
                B = op[cse[1]].join(B)
                As.append('(' + str(eval(B)) + ')')
            else:
                As.append('(' + str(B[0]) + ')')
        #print(As)
        if len(As) > 1:
            ans = max(ans, abs(eval(op[cse[0]].join(As))))
        else:
            ans = max(ans, int(eval(As[0])))
    #print(ans)

    return ans
Пример #2
0
def solution(expression):
    answer = 0
    cal = set(re.findall('[\D]+', expression))
    order = list(permu(cal))

    for od in order:
        temp = int(go(od, 0, expression))
        answer = max(answer, abs(temp))

    return answer
Пример #3
0
def generate_sequences():
    ''' Return all permutations of the given range of numbers.

    Returns:
        int[[]]: Every permutation of the given range.
    '''

    sequence = []
    for i, j, k, l, m in permu(range(5), 5):
        sequence.append([i, j, k, l, m])
    return sequence
Пример #4
0
def solution(numbers):
    n_len = len(numbers)
    numbers = list(numbers)
    permu_list = []
    for num_len in range(1, n_len + 1):
        permu_list += list(permu(numbers, num_len))
    permu_list = [''.join(x) for x in permu_list]
    permu_list = list(set(permu_list))
    decimals = list(set([int(x) for x in permu_list if is_prime(int(x))]))
    answer = len(decimals)
    return answer
def solution(n, weak, dist):
    answer = 0

    sorted_dist = copy.deepcopy(dist)
    # dist는 친구들이 이동할 수 있는 거리, 즉 큰수부터 확인해야지 정답을 빠르게 찾을 수 있음
    sorted_dist.sort(reverse = True)

    # 투입되는 친구의 수, 1부터 시작하며, 작은수부터 커지므로 만약 weak를 다 확인할 경우 그게 최소값
    for i in range(1, len(dist)+1):
        
        # weak 중 i개 선택 (친구의 수 만큼 선택)
        for start in permu(weak, i):
            # 각 경우 (weak에서 i개를 선택했을 때마다 weak를 따로 관리 -> new_weak)
            new_weak = copy.deepcopy(weak)
            #print(start)
            # 선택된 점의 index와 값 선택
            for index, st in enumerate(start):
                #print(index, st)
                # 선택된 점에서 sorted_dist(친구)중 멀리 이동할 수 있는 친구부터 이동하면서 new_weak를 지나칠 경우 체크
                #print(st, '~', st, '+', sorted_dist[index])

                for j in range(len(new_weak)-1, -1, -1):
                    # st + sorted_dist[index]+1 > 12
                    if st + sorted_dist[index]+1 >= n:
                        if 0 <= new_weak[j] <= (st+sorted_dist[index])%n or st <= new_weak[j] < n:
                            del new_weak[j]
                    # < 12
                    else:
                        if st <= new_weak[j] <= st+sorted_dist[index]:
                            del new_weak[j]
                #print(new_weak)

                '''
                    #print(st%n, new_weak[j], (st+sorted_dist[index]))
                    if st <= new_weak[j] <= (st+sorted_dist[index]) or ( st+sorted_dist[index] > 12 and new_weak[j] <= (st+sorted_dist[index])%n):
                        del new_weak[j]
                    #print(new_weak, '\n')
                
                for check in range(st, st+sorted_dist[index]+1):
                    # 만약 이동 중 new_weak 지점을 지날경우 삭제
                    if check%n in new_weak:
                        #new_weak.remove(check%n)
                        del new_weak[new_weak.index(check%n)]
                '''

            # weak에서 i개의 점을 선택하여 이동 거리만큼 지나면서 모든 weak를 지나쳤을 경우 투입된 친구의 수(i) 리턴
            if not new_weak:
                #print('end')
                return i
            
    # 모든 경우를 다 체크하였지만, 모든 weak를 다 돌지 못 할 경우 -1 리턴
    return -1
Пример #6
0
def generate_sequences(start, end):
    ''' Return all permutations of the given range of numbers.

    Args:
        start (int): Beginning of the range.
        end (int): End of the range.

    Returns:
        int[[]]: Every permutation of the given range.
    '''
    sequence = []
    for i, j, k, l, m in permu(range(start, end), 5):
        sequence.append([i, j, k, l, m])
    return sequence
    def longestPalindrome(self, s: str) -> str:
        numbers = [i for i in range(len(s))]
        answer = []

        def isPalindrome(test) -> bool:
            if test == test[::-1]:
                return True
            else:
                return False

        everything = permu(numbers, 2)
        new_evry = sorted(everything,
                          key=lambda x: abs(x[0] - x[1]),
                          reverse=True)

        for first, second in new_evry:
            if s[first:second + 1] != '':
                if isPalindrome(s[first:second + 1]):
                    return s[first:second + 1]

        return s[0]
Пример #8
0
from itertools import permutations as permu

for tc in range(1, int(input()) + 1):
    N = int(input())
    arr = [list(map(int, input().split())) for _ in range(N)]
    lst = [i for i in range(1, N)]

    ans = 1000000
    for seq in permu(lst, len(lst)):
        seq = [0] + list(seq) + [0]
        res = 0
        for idx in range(len(seq) - 1):
            res += arr[seq[idx]][seq[idx + 1]]
        ans = min(ans, res)
    print("#%d" % (tc), ans)
Пример #9
0
from itertools import permutations as permu
n = int(input())
k = int(input())

answer = set()


number= []

for _ in range(n):
    tmp = input()
    number.append(tmp)


per = list(permu(number, k))

for p in per:

    list_p = list(p)

    cur_n = "".join(list_p)

    answer.add(int(cur_n))


print(len(answer))