Els exemples que compten per la nota són només els que van seguits de ``# doctesttag: +TAG=``... ------------------------------------------------------------------------ Tests parelles -------------- >>> import networkx as nx >>> from npc import parelles >>> g = nx.DiGraph() >>> parelles(g) # doctesttag: +TAG=1_parelles [] >>> g = nx.DiGraph() >>> g.add_edge("idle", "walk", canvi="start_walk") >>> parelles(g) # doctesttag: +TAG=1_parelles [] >>> g = nx.DiGraph() >>> g.add_edge("x", "y", canvi="a") >>> g.add_edge("y", "x", canvi="b") >>> parelles(g) # doctesttag: +TAG=1_parelles [('x', 'y')] >>> g = nx.DiGraph() >>> edges = [ ... ("b", "a", "e1"), ("a", "b", "e2"), ... ("c", "d", "e3"), ("d", "c", "e4"), ... ("a", "c", "e5"), ... ] >>> for u,v,c in edges: ... g.add_edge(u, v, canvi=c) >>> parelles(g) # doctesttag: +TAG=1_parelles [('a', 'b'), ('c', 'd')] >>> g = nx.DiGraph() >>> g.add_edge("Node1", "node2", canvi="x") >>> g.add_edge("node2", "Node1", canvi="y") >>> g.add_edge("Node10", "Node2", canvi="z") >>> g.add_edge("Node2", "Node10", canvi="w") >>> parelles(g) # doctesttag: +TAG=1_parelles [('Node1', 'node2'), ('Node10', 'Node2')] >>> g = nx.DiGraph() >>> g.add_edge("s1", "t1", canvi="c") >>> g.add_edge("t1", "s1", canvi="d") >>> g.add_edge("u", "v", canvi="e") >>> g.add_edge("loop", "stay", canvi="l") >>> parelles(g) # doctesttag: +TAG=1_parelles [('s1', 't1')] >>> g = nx.DiGraph() >>> g.add_edge("aa", "ab", canvi="c1") >>> g.add_edge("ab", "aa", canvi="c2") >>> g.add_edge("aa", "a", canvi="c3") >>> g.add_edge("a", "aa", canvi="c4") >>> parelles(g) # doctesttag: +TAG=1_parelles [('a', 'aa'), ('aa', 'ab')] >>> g = nx.DiGraph() >>> nodes = [f"n{i}" for i in range(20)] >>> for i in range(19): ... g.add_edge(nodes[i], nodes[i+1], canvi=str(i)) >>> g.add_edge("n1", "n0", canvi="r1") >>> g.add_edge("n3", "n2", canvi="r2") >>> g.add_edge("n5", "n4", canvi="r3") >>> g.add_edge("n10", "n11", canvi="fwd") >>> g.add_edge("n11", "n10", canvi="back") >>> parelles(g) # doctesttag: +TAG=1_parelles [('n0', 'n1'), ('n10', 'n11'), ('n2', 'n3'), ('n4', 'n5')] >>> g = nx.DiGraph() >>> nodes = [f'n{i}' for i in range(16)] >>> g.add_nodes_from(nodes) >>> uni = [ ... ('n0','n2'),('n1','n3'),('n2','n4'),('n3','n5'), ... ('n4','n6'),('n5','n7'),('n6','n8'),('n7','n9'), ... ('n8','n10'),('n9','n11'),('n10','n12'),('n11','n13') ... ] >>> for u,v in uni: ... g.add_edge(u,v,canvi='u') >>> bidir_pairs = [('n12','n13'),('n13','n12'),('n0','n1'),('n1','n0'), ... ('n14','n15'),('n15','n14'),('n2','n3'),('n3','n2')] >>> for u,v in bidir_pairs: ... g.add_edge(u,v,canvi='b') >>> parelles(g) # doctesttag: +TAG=1_parelles [('n0', 'n1'), ('n12', 'n13'), ('n14', 'n15'), ('n2', 'n3')] >>> g = nx.DiGraph() >>> nodes = [f'node{i:02d}' for i in range(16)] >>> g.add_nodes_from(nodes) >>> uni = [ ... ('node00','node02'),('node01','node03'),('node02','node04'), ... ('node03','node05'),('node04','node06'),('node05','node07'), ... ('node06','node08'),('node07','node09'),('node08','node10'), ... ('node09','node11') ... ] >>> for u,v in uni: ... g.add_edge(u,v,canvi='u') >>> bidir = [('node00','node01'),('node01','node00'), ... ('node02','node03'),('node03','node02'), ... ('node04','node05'),('node05','node04'), ... ('node06','node07'),('node07','node06'), ... ('node12','node13'),('node13','node12')] >>> for u,v in bidir: ... g.add_edge(u,v,canvi='b') >>> parelles(g) # doctesttag: +TAG=1_parelles [('node00', 'node01'), ('node02', 'node03'), ('node04', 'node05'), ('node06', 'node07'), ('node12', 'node13')] Tests llista_canvis ------------------- >>> from npc import llista_canvis >>> g = nx.DiGraph() >>> g.add_edge('A','B', canvi='x') >>> llista_canvis(g, 'A', 'B') # doctesttag: +TAG=2_canvis ['x'] >>> g = nx.DiGraph() >>> g.add_edge('A','C', canvi='a') >>> llista_canvis(g, 'C', 'A') # doctesttag: +TAG=2_canvis [] >>> g = nx.DiGraph() >>> g.add_edge('A','B', canvi='x') >>> g.add_edge('B','D', canvi='y') >>> g.add_edge('A','C', canvi='u') >>> g.add_edge('C','D', canvi='v') >>> # Dos camins A->B->D (x,y) i A->C->D (u,v), amb longitud 2; qualsevol és acceptable >>> res = llista_canvis(g, 'A', 'D') # doctesttag: +TAG=2_canvis >>> res in (['x','y'], ['u','v']) True >>> g = nx.DiGraph() >>> g.add_edge('s','a',canvi='x') >>> g.add_edge('a','s',canvi='y') >>> g.add_edge('a','b',canvi='z') >>> g.add_edge('s','b',canvi='w') >>> llista_canvis(g, 's', 'b') # doctesttag: +TAG=2_canvis ['w'] >>> g = nx.DiGraph() >>> g.add_edge('p','q',canvi='go',weight=3) >>> g.add_edge('q','r',canvi='enter',cost=1) >>> llista_canvis(g, 'p', 'r') # doctesttag: +TAG=2_canvis ['go', 'enter'] >>> g = nx.DiGraph() >>> nodes = [f'n{i}' for i in range(16)] >>> g.add_nodes_from(nodes) >>> edges = [ ... ('n0','n1','a'),('n1','n2','b'),('n2','n3','c'),('n3','n4','d'), ... ('n4','n5','e'),('n5','n6','f'),('n6','n7','g'),('n7','n8','h'), ... ('n8','n9','i'),('n9','n10','j'),('n10','n11','k'),('n11','n12','l'), ... ('n12','n13','m'),('n13','n14','n'),('n14','n15','o'), ('n2', 'n7', 'w'), ... ('n0','n2','p'),('n2','n4','q'),('n4','n6','r'),('n6','n8','s'),('n8','n10','t'), ... ] >>> for u,v,c in edges: ... g.add_edge(u,v,canvi=c) >>> llista_canvis(g, 'n0', 'n15') # doctesttag: +TAG=2_canvis ['p', 'w', 'h', 't', 'k', 'l', 'm', 'n', 'o'] >>> llista_canvis(g, 'n7', 'n12') # doctesttag: +TAG=2_canvis ['h', 't', 'k', 'l'] >>> g = nx.DiGraph() >>> nodes = [f'node{i:02d}' for i in range(16)] >>> g.add_nodes_from(nodes) >>> edges = [ ... ('node00','node01','x'),('node01','node02','y'),('node02','node03','z'), ... ('node03','node04','a'),('node04','node05','b'),('node05','node06','c'), ... ('node06','node07','d'),('node07','node08','e'),('node08','node09','f'), ... ('node09','node10','g'), ... ('node00','node10','s1'),('node10','node11','h'),('node11','node12','i'), ... ('node12','node13','j'),('node13','node14','k'),('node14','node15','l'), ... ('node05','node09','s2'),('node02','node06','s3'),('node06','node10','s4'), ... ('node03','node07','s5'), ... ] >>> for u,v,c in edges: ... g.add_edge(u,v,canvi=c) >>> g.number_of_nodes(), g.number_of_edges() (16, 20) >>> llista_canvis(g, 'node00', 'node03') # doctesttag: +TAG=2_canvis ['x', 'y', 'z'] >>> llista_canvis(g, 'node06', 'node12') # doctesttag: +TAG=2_canvis ['s4', 'h', 'i'] >>> lc = llista_canvis(g, 'node01', 'node09') >>> lc == ['y', 'z', 's5', 'e', 'f'] or lc == ['y', 'z', 'a', 'b', 's2'] or lc == ['y', 's3', 'd', 'e', 'f'] # doctesttag: +TAG=2_canvis True Tests recursivitat (eleva_pol) ------------------------------ >>> from polinomis import Polinomi >>> from power import eleva_pol >>> p = Polinomi() >>> q = eleva_pol(p,1) >>> print("[p(x)]^2 =", q) # doctesttag: +TAG=3_eleva [p(x)]^2 = 0 >>> p = Polinomi() >>> p[1], p[0] = -4, -1 >>> q = eleva_pol(p, 3) >>> print("p(x) =", p, "; [p(x)]^2 =", q) # doctesttag: +TAG=3_eleva p(x) = -4x-1 ; [p(x)]^2 = -64x^3-48x^2-12x-1 >>> p = Polinomi() >>> p[3], p[2], p[1] = -1, 1, -2 >>> q = eleva_pol(p, 5) >>> print("p(x) =", p, "; [p(x)]^5 =", q) # doctesttag: +TAG=3_eleva p(x) = -x^3+x^2-2x ; [p(x)]^5 = -x^15+5x^14-20x^13+50x^12-105x^11+161x^10-210x^9+200x^8-160x^7+80x^6-32x^5 >>> p = Polinomi() >>> p[2] = 1 >>> print(eleva_pol(p, 50)) # doctesttag: +TAG=3_eleva x^100 >>> print(eleva_pol(p, 170)) # doctesttag: +TAG=3_eleva x^340 >>> p = Polinomi() >>> p[3], p[1], p[0] = -1, 2, -1 >>> print(eleva_pol(p, 4)) # doctesttag: +TAG=3_eleva x^12-8x^10+4x^9+24x^8-24x^7-26x^6+48x^5-8x^4-28x^3+24x^2-8x+1 >>> print(eleva_pol(eleva_pol(p, 2), 2)) # doctesttag: +TAG=3_eleva x^12-8x^10+4x^9+24x^8-24x^7-26x^6+48x^5-8x^4-28x^3+24x^2-8x+1 >>> print(eleva_pol(p, 8)) # doctesttag: +TAG=3_eleva x^24-16x^22+8x^21+112x^20-112x^19-420x^18+672x^17+784x^16-2184x^15-112x^14+3920x^13-2618x^12-3136x^11+5136x^10-840x^9-3440x^8+3120x^7-420x^6-1120x^5+1008x^4-440x^3+112x^2-16x+1 >>> print(eleva_pol(p, 0)) # doctesttag: +TAG=3_eleva 1 >>> p = Polinomi() >>> p[7], p[4], p[3], p[0] = -1, 2, 1, -1 >>> print(eleva_pol(p, 3)) # doctesttag: +TAG=3_eleva -x^21+6x^18+3x^17-12x^15-15x^14-3x^13+8x^12+24x^11+12x^10+x^9-12x^8-15x^7-3x^6+6x^4+3x^3-1 Tests costos_proveidor ---------------------- >>> import pandas as pd >>> from restaurant import costos_proveidor >>> df1 = pd.read_csv('restaurant-test1.csv') >>> a,b = costos_proveidor(df1, 'LactisNord') >>> (a, int(b)) # doctesttag: +TAG=4_costos (2, -133) >>> a,b = costos_proveidor(df1, 'CervesesArt') >>> (a, int(b)) # doctesttag: +TAG=4_costos (0, 0) >>> a,b = costos_proveidor(df1, 'OliOriol') >>> (a, int(b)) # doctesttag: +TAG=4_costos (1, 4523) >>> a,b = costos_proveidor(df1, 'MontLact') >>> (a, int(b)) # doctesttag: +TAG=4_costos (1, -30) >>> a,b = costos_proveidor(df1, 'VinsPenedès') >>> (a, int(b)) # doctesttag: +TAG=4_costos (2, -798) >>> df2 = pd.read_csv('restaurant-test2.csv') >>> a,b = costos_proveidor(df2, 'GransGlobal') >>> (a, int(b)) # doctesttag: +TAG=4_costos (3, -2) >>> a,b = costos_proveidor(df2, 'EcoVerd') >>> (a, int(b)) # doctesttag: +TAG=4_costos (2, -23) >>> a,b = costos_proveidor(df2, 'ConfisCat') >>> (a, int(b)) # doctesttag: +TAG=4_costos (0, 0) >>> a,b = costos_proveidor(df2, 'CarnsDelCamp') >>> (a, int(b)) # doctesttag: +TAG=4_costos (5, -207) >>> a,b = costos_proveidor(df2, 'CarnsDelCamp') >>> a,b = costos_proveidor(df2, 'ArtisMutis') >>> (a, int(b)) # doctesttag: +TAG=4_costos (0, 0) Tests article_per_mesos ----------------------- >>> from restaurant import article_per_mesos >>> df1 = pd.read_csv('restaurant-test1.csv') >>> article_per_mesos(df1, 'Fesols') == {'gener': 39, 'maig': 23, 'novembre': 18, 'febrer': 0, 'març': 0, 'abril': 0, 'juny': 0, 'juliol': 0, 'agost': 0, 'setembre': 0, 'octubre': 0, 'desembre': 0} # doctesttag: +TAG=5_article True >>> article_per_mesos(df1, 'Emmental') == {'agost': 37, 'desembre': 21, 'febrer': 44, 'gener': 0, 'març': 0, 'abril': 0, 'maig': 0, 'juny': 0, 'juliol': 0, 'setembre': 0, 'octubre': 0, 'novembre': 0} # doctesttag: +TAG=5_article True >>> article_per_mesos(df1, 'Pit de pollastre') == {'abril': 8, 'juliol': 39, 'novembre': 12, 'gener': 0, 'febrer': 0, 'març': 0, 'maig': 0, 'juny': 0, 'agost': 0, 'setembre': 0, 'octubre': 0, 'desembre': 0} # doctesttag: +TAG=5_article True >>> article_per_mesos(df1, 'Mató') == {'agost': 18, 'novembre': 34, 'gener': 0, 'febrer': 0, 'març': 0, 'abril': 0, 'maig': 0, 'juny': 0, 'juliol': 0, 'setembre': 0, 'octubre': 0, 'desembre': 0} # doctesttag: +TAG=5_article True >>> article_per_mesos(df1, 'Pebre negre') == {'agost': 846, 'novembre': 937, 'octubre': 231, 'gener': 0, 'febrer': 0, 'març': 0, 'abril': 0, 'maig': 0, 'juny': 0, 'juliol': 0, 'setembre': 0, 'desembre': 0} # doctesttag: +TAG=5_article True >>> df2 = pd.read_csv('restaurant-test2.csv') >>> article_per_mesos(df2, 'Elefant') == {'gener': 0, 'febrer': 0, 'març': 0, 'abril': 0, 'maig': 0, 'juny': 0, 'juliol': 0, 'agost': 0, 'setembre': 0, 'octubre': 0, 'novembre': 0, 'desembre': 0} # doctesttag: +TAG=5_article True >>> article_per_mesos(df2, 'Botifarra') == {'agost': 91, 'desembre': 18, 'febrer': 108, 'gener': 42, 'juliol': 49, 'maig': 38, 'març': 38, 'novembre': 8, 'octubre': 58, 'abril': 0, 'juny': 0, 'setembre': 0} # doctesttag: +TAG=5_article True >>> article_per_mesos(df2, 'Cava') == {'desembre': 692, 'febrer': 170, 'gener': 672, 'juliol': 776, 'maig': 1748, 'març': 0, 'abril': 0, 'juny': 0, 'agost': 0, 'setembre': 0, 'octubre': 0, 'novembre': 0} # doctesttag: +TAG=5_article True >>> article_per_mesos(df2, 'Tonyina en llauna') == {'desembre': 41, 'febrer': 30, 'gener': 89, 'juliol': 6, 'març': 28, 'novembre': 27, 'octubre': 48, 'setembre': 1, 'abril': 0, 'maig': 0, 'juny': 0, 'agost': 0} # doctesttag: +TAG=5_article True >>> x = article_per_mesos(df2, 'Menuts') >>> article_per_mesos(df2, 'Menuts') == {'agost': 4, 'febrer': 65, 'juny': 41, 'març': 8, 'setembre': 69, 'gener': 0, 'abril': 0, 'maig': 0, 'juliol': 0, 'octubre': 0, 'novembre': 0, 'desembre': 0} # doctesttag: +TAG=5_article True