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
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
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
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
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]
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)
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))