2024年1月11日 星期四

print leaves

 def dfs(graph, node, visited, leaf_nodes):

    if node not in visited:

        visited.add(node)

        print(node, end=' ')

        if not graph[node]:  # 檢查節點是否為樹葉

            leaf_nodes.append(node)

        for neighbor in graph[node]:

            dfs(graph, neighbor, visited, leaf_nodes)


# 使用範例


graph = {'A': ['B', 'C'], 'B': ['D', 'E'], 'C': ['F'], 'D': [], 'E': ['G'], 'F': [],'G':[]}

for k, v in graph.items():

    visited = set()

    leaf_nodes = []

    dfs(graph, k, visited, leaf_nodes)

    print(" -- Leaf nodes:", leaf_nodes)


# 執行結果

A B D E G C F  -- Leaf nodes: ['D', 'G', 'F']

B D E G  -- Leaf nodes: ['D', 'G']

C F  -- Leaf nodes: ['F']

D  -- Leaf nodes: ['D']

E G  -- Leaf nodes: ['G']

F  -- Leaf nodes: ['F']

G  -- Leaf nodes: ['G']

sort

 #select sort

#d = [1,3,5,7,9,10,8,6,2,4]

#n = len(d)

#for i in range(n):

#    imin = i

#    for j in range(i+1,n):

#        if d[j]<d[imin]:

#            imin=j

#    d[i],d[imin]=d[imin],d[i]

#    print(d)    


# insert sord

d = [3,1,5,7,9,10,8,6,2,4]

n= len(d)

dd = [-99,99]


for i in range(n):

    j=0

    while d[i]>dd[j] and j+1<len(dd):j+=1

    dd = dd[:j]+[d[i]]+dd[j:]

dd = dd[1:-1]    

print(dd)


#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

2024年1月10日 星期三

list to dictionary

 # g = {

#      1:[2,3],

#      2:[4,5],

#      3:[6,7],

#      4:[],

#      5:[8],

#      6:[],

#      7:[],

#      8:[]     

#      }


d = '''

1 2

1 3

2 4

2 5

3 6

3 7

5 8

'''


d = d.strip()

e = [int(i) for i in d if i >='0' and i<='9']

d = [i.split() for i in d.split('\n')]

d = [[int(i[0]),int(i[1])] for i in d]


g = {}

for k in set(e):

    a = []

    for j in d:

        if k == j[0]:

            a.append(j[1])

    g[k]=a

print(g)



g = {}

for key in set(e):

    a =[]

    for j in d:

        if j[0]==key:

            a.append(j[1])

    g[key]=a        

print(g)


v = []

def dfs(g,v,n):

    print(n,end=' ')

    v.append(n)

    for nb in g[n]:

        if nb not in v:

            dfs(g,v,nb)

dfs(g,v,1)

print()


v=[]

q = []

def bfs(g,v,n):

      q.append(n)

      while q:

          p=q.pop(0)

          if p not in v:

              print(p,end=' ')

              v.append(p)

              for nb in g[p]:

                  if nb not in v:

                      q.append(nb)

bfs(g,v,1)


# 執行結果

# 1 2 4 5 8 3 6 7 

# 1 2 3 4 5 6 7 8 

dfs and bfs

 g = {

     1:[2,3],

     2:[4,5],

     3:[6,7],

     4:[],

     5:[8],

     6:[],

     7:[],

     8:[]     

     }


v = []

def dfs(g,v,n):

    print(n,end=' ')

    v.append(n)

    for nb in g[n]:

        if nb not in v:

            dfs(g,v,nb)

dfs(g,v,1)

print()


v=[]

q = []

def bfs(g,v,n):

     q.append(n)

     while q:

         p=q.pop(0)

         if p not in v:

             print(p,end=' ')

             v.append(p)

             for nb in g[p]:

                 if nb not in v:

                     q.append(nb)

bfs(g,v,1)


# 執行結果

# 1 2 4 5 8 3 6 7 

# 1 2 3 4 5 6 7 8 

2024年1月9日 星期二

left right Parentheses...Stack

 for d in ['[][][]','{}[()]','{[()]}','{[()}]']:

    left_stack = []

    msg = 'OK'

    for i in d:

        if i in '([{':

            left_stack.append(i)

        else:

            t = left_stack.pop()

            ti = t+i

            if  not(ti =='()' or ti =='[]'  or ti =='{}'):  

                msg = 'Error'

    print(d,msg)


#執行結果

[][][] OK

{}[()] OK

{[()]} OK

{[()}] Error

Josephus question ... Queue

 d = list(range(1,15))

q = []+ d

print(q)

k = 7

i = 0

while len(q)>1:

    t = q.pop(0)

    i+=1

    if i%k!=0:

        q.append(t)

    else:

        print(q)

#執行結果 

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

[8, 9, 10, 11, 12, 13, 14, 1, 2, 3, 4, 5, 6]

[1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13]

[9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6]

[3, 4, 5, 6, 9, 10, 11, 12, 13, 1]

[12, 13, 1, 3, 4, 5, 6, 9, 10]

[9, 10, 12, 13, 1, 3, 4, 5]

[5, 9, 10, 12, 13, 1, 3]

[5, 9, 10, 12, 13, 1]

[9, 10, 12, 13, 1]

[12, 13, 1, 9]

[9, 12, 13]

[12, 13]

[13]

2023年12月4日 星期一

Green Judge Ref

 # name = 'Tom'

# age = 36

# print('My name is' ,name + '.','I am',age, 'years old.' )

# print('My name is ' + name + '. ' + 'I am '+ str(age) + ' years old.' )

# print('My name is' ,name + '.','I am',age, 'years old.' ,sep='**')


# print(f'My name is {name} I\'m {age:<6} years old.')

# print(f'My name is {name} I\'m {age:>6} years old.')


# s = 10.14159

# print(f'我的月薪${s:.2f}萬')


# for i in range(2,10):

#     for j in range(2,10):

#         # print(i,'*',j,'=',i*j)

#         print(f'{j}*{i}={i*j:>2}',end='   ')

#     print()


# q29

# a,b = map(int,input().split())

# s = 0

# for i in range(a,b+1):

#     if i == b:

#         print(i,end='=') 

#     else:

#         print(i,end='+') 

#     s = s + i

# print(s)



# q30

# a,b = map(int,input().split())

# s = 0

# if b>=a:

#     for i in range(a,b+1):

#         if i == b:

#             print(i,end='=') 

#         else:

#             print(i,end='+') 

#         s = s + i

# else:

#     for i in range(a,b-1,-1):

#         if i == b:

#             print(i,end='=') 

#         else:

#             print(i,end='+') 

#         s = s + i

# print(s)



#Q27

# n = 5

# for i in range(n,-1,-1):

#     print(i,end=' ') 


#Q26

# n = 3

# for i in range(n):

#     print('I love you.')


#q25

# d = input()

# print(d[::-1])


# Q24

d = '12345'

s = 0

for i in d:

    s = s + int(i)

print(s)