2021年5月27日 星期四

分組累積例 python list

 s = [int(i) for i in input().split()]


start = 0

end = 0


while end<len(s):

acc =0

while s[start]*s[end]>0 or s[start]==0 and s[end]==0:

acc+=s[end]

end+=1

if end >=len(s): break

end = end -1

if acc>0: print(start+1,end+1,end-start+1,acc)

start = end+1

end = end+1

acc = 0

2021年5月26日 星期三

dict and multi key list sorting

 s = input().lower()

s =s.replace('.','').replace(',','').split()


d = {}

for i in s:

if i in d:

d[i]+=1

else :

d[i]=1

list1 = []

for k,v in d.items():

t = [k,v]

list1.append(t)


for i in range(len(list1)):

for j in range(i+1,len(list1)):

if list1[i][1]<list1[j][1]: list1[i],list1[j]=list1[j],list1[i]

elif list1[i][1]==list1[j][1] and  list1[i][0]>list1[j][0]:  list1[i],list1[j]=list1[j],list1[i]

for i in list1:

print(i[0],i[1])

2021年5月18日 星期二

Graph in Dict structure

 d ='''A -> B

    A -> C

    B -> C

    B -> D

    C -> D

    D -> C

    E -> F

    F -> C'''

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

v = set()

for i in e:

    for j in i:

        if j>='A':

            v.add(j)

v = list(v)

v.sort()


print(e)

print(v)


g = {}

for i in v:

    t = []

    for j in e:

        if i in j:

            for k in j:

                if k>='A' and k<='Z':

                    if k not in i:

                        t.append(k)

    g[i]=t

print(g)

2021年5月13日 星期四

dfs bfs python code

 def dfs(visited,graph,node):

    if node not in visited:

        global d

        d+=1

        print(node,end='->')

        visited.add(node)

        for neighbor in graph[node]:

            dfs(visited,graph,neighbor)

            

def bfs(visited,graph,node):

    visited.append(node)

    queue.append(node)

    while queue:

        s = queue.pop(0)

        print(s,end='->')

        for neighbor in graph[s]:

            if neighbor not in visited:

                visited.append(neighbor)

                queue.append(neighbor)


a = '''8

0 1

0 2

0 3

7 0

1 4

1 5

3 6'''


# create graph

a = a.split('\n')

a.pop(0)


v =set() 

e = []

for i in a:

    t = i.split(' ') 

    print(t)

    e.append(t)

    for j in t:

        v.add(j)

print()


v = list(v)

v.sort()


g ={}

for i in v:

    t =set()

    for j in e:

        if i in j:

            for k in j:

                if k!= i:

                    t.add(k)

    g[i] = t


for x,y in g.items():

    print(x,y)

print()


# dfs 

d = 0

for node in v: 

    visited=set()

    d = 0

    dfs(visited,g,node)

    print(':',d)

print()


# bfs 

for node in v:

    queue = []

    visited = []

    bfs(visited,g,node)

    print()

print()


#  = = = = =

Output:

['0', '1']

['0', '2']

['0', '3']

['7', '0']

['1', '4']

['1', '5']

['3', '6']


0 {'3', '2', '7', '1'}

1 {'0', '5', '4'}

2 {'0'}

3 {'0', '6'}

4 {'1'}

5 {'1'}

6 {'3'}

7 {'0'}


0->3->6->2->7->1->5->4->: 8

1->0->3->6->2->7->5->4->: 8

2->0->3->6->7->1->5->4->: 8

3->0->2->7->1->5->4->6->: 8

4->1->0->3->6->2->7->5->: 8

5->1->0->3->6->2->7->4->: 8

6->3->0->2->7->1->5->4->: 8

7->0->3->6->2->1->5->4->: 8


0->3->2->7->1->6->5->4->

1->0->5->4->3->2->7->6->

2->0->3->7->1->6->5->4->

3->0->6->2->7->1->5->4->

4->1->0->5->3->2->7->6->

5->1->0->4->3->2->7->6->

6->3->0->2->7->1->5->4->

7->0->3->2->1->6->5->4->


dfs Sample

 def dfs(visited,graph,node):

    if node not in visited:

        global d

        d+=1

        print(node,end='->')

        visited.add(node)

        for neighbor in graph[node]:

            dfs(visited,graph,neighbor)


a = '''8

0 1

0 2

0 3

7 0

1 4

1 5

3 6'''


# create graph

a = a.split('\n')

a.pop(0)


v =set() 

e = []

for i in a:

    t = i.split(' ') 

    print(t)

    e.append(t)

    for j in t:

        v.add(j)

print()


v = list(v)

v.sort()


g ={}

for i in v:

    t =set()

    for j in e:

        if i in j:

            for k in j:

                if k!= i:

                    t.add(k)

    g[i] = t


for x,y in g.items():

    print(x,y)

print()


# each node process    

d = 0

for node in v: 

    visited=set()

    d = 0

    dfs(visited,g,node)

    print(':',d)


#   ====

Output:

['0', '1']

['0', '2']

['0', '3']

['7', '0']

['1', '4']

['1', '5']

['3', '6']


0 {'1', '3', '7', '2'}

1 {'5', '4', '0'}

2 {'0'}

3 {'0', '6'}

4 {'1'}

5 {'1'}

6 {'3'}

7 {'0'}


0->1->5->4->3->6->7->2->: 8

1->5->4->0->3->6->7->2->: 8

2->0->1->5->4->3->6->7->: 8

3->0->1->5->4->7->2->6->: 8

4->1->5->0->3->6->7->2->: 8

5->1->4->0->3->6->7->2->: 8

6->3->0->1->5->4->7->2->: 8

7->0->1->5->4->3->6->2->: 8