>>> from variacions import var_prim >>> r = var_prim([2.0, 2.03, 2.04], 0.04) >>> r # doctesttag: +TAG=1_variacions-no_var_alarmant -1 >>> r = var_prim([3.0, 3.01, 3.04, 3.05, 3.08, 3.1, 3.15, 4, 5, 6], 0.04) >>> r # doctesttag: +TAG=1_variacions-var_alarmant 5 >>> r = var_prim([4.01, 4.02, 4.03, 4.04, 4.08, 4.12, 5, 6], 0.04) >>> r # doctesttag: +TAG=1_variacions-var_alarmant 3 >>> r = var_prim([1.96, 2.03, 2.04, 2.05, 2.06, 2.07, 2.08, 3], 0.06) >>> r # doctesttag: +TAG=1_variacions-var_alarmant 0 >>> r = var_prim([3.0, 3.01, 3.02, 3.09, 3.1, 3.2, 4, 5, 6, 7, 8, 9], 0.06) >>> r # doctesttag: +TAG=1_variacions-var_alarmant 2 >>> r = var_prim([4.017, 4.02, 4.03, 4.04, 4.08, 4.12, 4.15, 5, 6, 7, 8], 0.005) >>> r # doctesttag: +TAG=1_variacions-var_alarmant 1 >>> from metro import actualitza_evD >>> ev = {} >>> actualitza_evD(ev, 1, ['espanya', 'hostafrancs', 'p.sants']) >>> for l in ev.values(): l.sort() >>> ev == { # doctesttag: +TAG=2_metro-1_actualitza_evD ... 'p.sants': [('hostafrancs', 1)], ... 'espanya': [('hostafrancs', 1)], ... 'hostafrancs': [('espanya', 1), ('p.sants', 1)]} True >>> ev = { ... 'p.sants': [('hostafrancs', 1)], ... 'espanya': [('hostafrancs', 1)], ... 'hostafrancs': [('espanya', 1), ('p.sants', 1)]} >>> actualitza_evD(ev, 3, ['espanya', 'tarragona', 'sants', 'p.centre']) >>> for l in ev.values(): l.sort() >>> ev_r = { ... 'sants': [('p.centre', 3), ('tarragona', 3)], ... 'p.sants': [('hostafrancs', 1)], ... 'espanya': [('hostafrancs', 1), ('tarragona', 3)], ... 'tarragona': [('espanya', 3), ('sants', 3)], ... 'p.centre': [('sants', 3)], ... 'hostafrancs': [('espanya', 1), ('p.sants', 1)]} >>> if not ev == ev_r: print(ev) # doctesttag: +TAG=2_metro-1_actualitza_evD >>> ev = ev_r >>> actualitza_evD(ev, 5, ['sants', 'p.sants', 'badal']) >>> for l in ev.values(): l.sort() >>> ev_r = { ... 'sants': [('p.centre', 3), ('p.sants', 5), ('tarragona', 3)], ... 'p.sants': [('badal', 5), ('hostafrancs', 1), ('sants', 5)], ... 'badal': [('p.sants', 5)], ... 'espanya': [('hostafrancs', 1), ('tarragona', 3)], ... 'tarragona': [('espanya', 3), ('sants', 3)], ... 'p.centre': [('sants', 3)], ... 'hostafrancs': [('espanya', 1), ('p.sants', 1)]} >>> if not ev == ev_r: print(ev) # doctesttag: +TAG=2_metro-1_actualitza_evD Segon joc de proves: el centre de Barcelona >>> dl = { ... 1: ['universitat', 'catalunya', 'urquinaona'], ... 2: ['st.antoni', 'universitat', 'p.gracia', 'tetuan'], ... 3: ['catalunya', 'p.gracia', 'diagonal'], ... 4: ['p.gracia','urquinaona', 'jaume.i'], ... 5: ['h.clinic', 'diagonal', 'verdaguer'], ... } >>> ev = {} >>> actualitza_evD(ev, 1, dl[1]) >>> for l in ev.values(): l.sort() >>> ev_r = { ... 'universitat': [('catalunya', 1)], ... 'catalunya': [('universitat', 1), ('urquinaona', 1)], ... 'urquinaona': [('catalunya', 1)], ... } >>> if not ev == ev_r: print(ev) # doctesttag: +TAG=2_metro-1_actualitza_evD >>> ev = ev_r >>> actualitza_evD(ev, 2, dl[2]) >>> for l in ev.values(): l.sort() >>> ev_r = { ... 'universitat': [('catalunya', 1), ('p.gracia', 2), ('st.antoni', 2)], ... 'catalunya': [('universitat', 1), ('urquinaona', 1)], ... 'urquinaona': [('catalunya', 1)], ... 'st.antoni': [('universitat', 2)], ... 'p.gracia': [('tetuan', 2), ('universitat', 2)], ... 'tetuan': [('p.gracia', 2)], ... } >>> if not ev == ev_r: print(ev) # doctesttag: +TAG=2_metro-1_actualitza_evD >>> ev = ev_r >>> actualitza_evD(ev, 3, dl[3]) >>> for l in ev.values(): l.sort() >>> ev_r = { ... 'universitat': [('catalunya', 1), ('p.gracia', 2), ('st.antoni', 2)], ... 'catalunya': [('p.gracia', 3), ('universitat', 1), ('urquinaona', 1)], ... 'urquinaona': [('catalunya', 1)], ... 'st.antoni': [('universitat', 2)], ... 'p.gracia': [('catalunya', 3), ('diagonal', 3), ('tetuan', 2), ('universitat', 2)], ... 'tetuan': [('p.gracia', 2)], ... 'diagonal': [('p.gracia', 3)], ... } >>> if not ev == ev_r: print(ev) # doctesttag: +TAG=2_metro-1_actualitza_evD >>> ev = ev_r >>> actualitza_evD(ev, 4, dl[4]) >>> for l in ev.values(): l.sort() >>> ev_r = { ... 'universitat': [('catalunya', 1), ('p.gracia', 2), ('st.antoni', 2)], ... 'catalunya': [('p.gracia', 3), ('universitat', 1), ('urquinaona', 1)], ... 'urquinaona': [('catalunya', 1), ('jaume.i', 4), ('p.gracia', 4)], ... 'st.antoni': [('universitat', 2)], ... 'p.gracia': [('catalunya', 3), ('diagonal', 3), ('tetuan', 2), ('universitat', 2), ('urquinaona', 4)], ... 'tetuan': [('p.gracia', 2)], ... 'diagonal': [('p.gracia', 3)], ... 'jaume.i': [('urquinaona', 4)], ... } >>> if not ev == ev_r: print(ev) # doctesttag: +TAG=2_metro-1_actualitza_evD >>> ev = ev_r >>> actualitza_evD(ev, 5, dl[5]) >>> for l in ev.values(): l.sort() >>> ev_r = { ... 'universitat': [('catalunya', 1), ('p.gracia', 2), ('st.antoni', 2)], ... 'catalunya': [('p.gracia', 3), ('universitat', 1), ('urquinaona', 1)], ... 'urquinaona': [('catalunya', 1), ('jaume.i', 4), ('p.gracia', 4)], ... 'st.antoni': [('universitat', 2)], ... 'p.gracia': [('catalunya', 3), ('diagonal', 3), ('tetuan', 2), ('universitat', 2), ('urquinaona', 4)], ... 'tetuan': [('p.gracia', 2)], ... 'diagonal': [('h.clinic', 5), ('p.gracia', 3), ('verdaguer', 5)], ... 'jaume.i': [('urquinaona', 4)], ... 'h.clinic': [('diagonal', 5)], ... 'verdaguer': [('diagonal', 5)], ... } >>> if not ev == ev_r: print(ev) # doctesttag: +TAG=2_metro-1_actualitza_evD >>> from metro import genera_evD >>> d = { ... 1: ['espanya', 'hostafracs', 'p.sants'], ... 3: ['espanya', 'tarragona', 'sants', 'p.centre'], ... 5: ['sants', 'p.sants', 'badal'] ... } >>> dsol = genera_evD(d) >>> for l in dsol.values(): l.sort() >>> dsol_r = { ... 'sants': [('p.centre', 3), ('p.sants', 5), ('tarragona', 3)], ... 'p.sants': [('badal', 5), ('hostafracs', 1), ('sants', 5)], ... 'badal': [('p.sants', 5)], ... 'espanya': [('hostafracs', 1), ('tarragona', 3)], ... 'tarragona': [('espanya', 3), ('sants', 3)], ... 'p.centre': [('sants', 3)], ... 'hostafracs': [('espanya', 1), ('p.sants', 1)]} >>> if not dsol == dsol_r: print(dsol) # doctesttag: +TAG=2_metro-2_genera_evD Segon joc de proves: el centre de Barcelona >>> d = { ... 1: ['universitat', 'catalunya', 'urquinaona'], ... 2: ['st.antoni', 'universitat', 'p.gracia', 'tetuan'], ... 3: ['catalunya', 'p.gracia', 'diagonal'], ... 4: ['p.gracia','urquinaona', 'jaume.i'], ... 5: ['h.clinic', 'diagonal', 'verdaguer'], ... } >>> dsol = genera_evD(d) >>> for l in dsol.values(): l.sort() >>> dsol_r = { ... 'universitat': [('catalunya', 1), ('p.gracia', 2), ('st.antoni', 2)], ... 'catalunya': [('p.gracia', 3), ('universitat', 1), ('urquinaona', 1)], ... 'urquinaona': [('catalunya', 1), ('jaume.i', 4), ('p.gracia', 4)], ... 'st.antoni': [('universitat', 2)], ... 'p.gracia': [('catalunya', 3), ('diagonal', 3), ('tetuan', 2), ('universitat', 2), ('urquinaona', 4)], ... 'tetuan': [('p.gracia', 2)], ... 'diagonal': [('h.clinic', 5), ('p.gracia', 3), ('verdaguer', 5)], ... 'jaume.i': [('urquinaona', 4)], ... 'h.clinic': [('diagonal', 5)], ... 'verdaguer': [('diagonal', 5)], ... } >>> if not dsol == dsol_r: print(dsol) # doctesttag: +TAG=2_metro-2_genera_evD >>> import tempfile >>> import os >>> from construccio import retards >>> s = "xy_98967;NO INICIADA;23000;12;04/24\nWT_87563;EN CURS;12500;3;08/23\nATRP_785;NO INICIADA;245000;23;08/24\nxyT_12967;ACABADA;20000;6;04/23\nWTMN_563;EN CURS;12500;3;02/24\nLLRTP_85;NO INICIADA;245000;23;08/24\nBAxy_98967;NO INICIADA;600000;20;12/24\nWEST_87563;EN CURS;12500;3;08/23\nRAZTP_785;NO INICIADA;245000;23;08/24\nALMxy_98967;NO INICIADA;23000;10;12/23\nCAWT_87563;ACABADA;5500;5;12/23\nTDRTP_785;NO INICIADA;245000;33;08/26" >>> ft = tempfile.NamedTemporaryFile(mode='w', delete=False) >>> with ft as f: ... n = f.write(s) >>> r = retards(ft.name, '05/23') >>> r # doctesttag: +TAG=3_construccio-no_buida [('xy_98967', 11, 12), ('ATRP_785', 15, 23), ('LLRTP_85', 15, 23), ('BAxy_98967', 19, 20), ('RAZTP_785', 15, 23), ('ALMxy_98967', 7, 10)] >>> r = retards(ft.name, '10/23') >>> r # doctesttag: +TAG=3_construccio-no_buida [('xy_98967', 6, 12), ('ATRP_785', 10, 23), ('LLRTP_85', 10, 23), ('BAxy_98967', 14, 20), ('RAZTP_785', 10, 23), ('ALMxy_98967', 2, 10)] >>> r = retards(ft.name, '01/24') >>> r # doctesttag: +TAG=3_construccio-no_buida [('xy_98967', 3, 12), ('ATRP_785', 7, 23), ('LLRTP_85', 7, 23), ('BAxy_98967', 11, 20), ('RAZTP_785', 7, 23), ('ALMxy_98967', -1, 10), ('TDRTP_785', 31, 33)] >>> r = retards(ft.name, '01/23') >>> r # doctesttag: +TAG=3_construccio-no_buida [('ATRP_785', 19, 23), ('LLRTP_85', 19, 23), ('RAZTP_785', 19, 23)] >>> os.remove(ft.name) Joc de proves 2: cap obra iniciada >>> s = """\ ... WT_87563;NO INICIADA;12500;3;05/23 ... xyT_12967;NO INICIADA;20000;6;04/23 ... WTMN_563;NO INICIADA;12500;3;02/24 ... WEST_87563;NO INICIADA;12500;3;08/23 ... CAWT_87563;NO INICIADA;5500;5;12/23 ... """ >>> ft = tempfile.NamedTemporaryFile(mode='w', delete=False) >>> with ft as f: ... n = f.write(s) >>> r = retards(ft.name, '09/22') >>> r # doctesttag: +TAG=3_construccio-buida [] >>> r = retards(ft.name, '10/22') >>> r # doctesttag: +TAG=3_construccio-no_buida [('xyT_12967', 6, 6)] >>> r = retards(ft.name, '11/22') >>> r # doctesttag: +TAG=3_construccio-no_buida [('xyT_12967', 5, 6)] >>> r = retards(ft.name, '04/23') >>> r # doctesttag: +TAG=3_construccio-no_buida [('WT_87563', 1, 3), ('xyT_12967', 0, 6)] >>> os.remove(ft.name) Joc de proves 3: no hi ha obres no iniciades >>> s = """\ ... WT_87563;EN CURS;12500;3;08/23 ... xyT_12967;ACABADA;20000;6;04/23 ... WTMN_563;EN CURS;12500;3;02/24 ... WEST_87563;EN CURS;12500;3;08/23 ... CAWT_87563;ACABADA;5500;5;12/23 ... """ >>> ft = tempfile.NamedTemporaryFile(mode='w', delete=False) >>> with ft as f: ... n = f.write(s) >>> r = retards(ft.name, '05/23') >>> r # doctesttag: +TAG=3_construccio-buida [] >>> r = retards(ft.name, '10/23') >>> r # doctesttag: +TAG=3_construccio-buida [] >>> os.remove(ft.name) Joc de proves 4: fitxer buit >>> s = """\ ... """ >>> ft = tempfile.NamedTemporaryFile(mode='w', delete=False) >>> with ft as f: ... n = f.write(s) >>> r = retards(ft.name, '05/23') >>> r # doctesttag: +TAG=3_construccio-buida [] >>> r = retards(ft.name, '10/23') >>> r # doctesttag: +TAG=3_construccio-buida [] >>> os.remove(ft.name) >>> from math import atanh >>> from series_invtrigoh import termes ---- inici >>> eps = 1e-6 >>> x = 0.5 >>> r = termes(x, eps) Llista r amb els elements arrodonits a 6 decimals. >>> [round(t, 6) for t in r] # doctesttag: +TAG=4_series_invtrigoh [0.5, 0.041667, 0.00625, 0.001116, 0.000217, 4.4e-05, 9e-06, 2e-06] ---- fi >>> abs(sum(r) - atanh(x)) < eps and abs(sum(r[:-1]) - atanh(x)) >= eps True >>> eps = 1e-4 >>> x = 0.9 >>> r = termes(x, eps) >>> [round(t, 6) for t in r] # doctesttag: +TAG=4_series_invtrigoh [0.9, 0.243, 0.118098, 0.068328, 0.043047, 0.028528, 0.019553, 0.013726, 0.00981, 0.00711, 0.00521, 0.003853, 0.002872, 0.002154, 0.001624, 0.001231, 0.000936, 0.000715, 0.000548, 0.000421, 0.000324, 0.000251, 0.000194, 0.00015, 0.000117, 9.1e-05, 7.1e-05, 5.5e-05, 4.3e-05, 3.4e-05, 2.7e-05] >>> abs(sum(r) - atanh(x)) < eps and abs(sum(r[:-1]) - atanh(x)) >= eps True >>> eps = 1e-10 >>> x = 0.1 >>> r = termes(x, eps) >>> [round(t, 10) for t in r] # doctesttag: +TAG=4_series_invtrigoh [0.1, 0.0003333333, 2e-06, 1.43e-08, 1e-10] >>> abs(sum(r) - atanh(x)) < eps and abs(sum(r[:-1]) - atanh(x)) >= eps True >>> eps = 1e-10 >>> x = 0.3 >>> r = termes(x, eps) >>> [round(t, 10) for t in r] # doctesttag: +TAG=4_series_invtrigoh [0.3, 0.009, 0.000486, 3.12429e-05, 2.187e-06, 1.61e-07, 1.23e-08, 1e-09] >>> abs(sum(r) - atanh(x)) < eps and abs(sum(r[:-1]) - atanh(x)) >= eps True >>> eps = 1e-4 >>> x = 0.7 >>> r = termes(x, eps) >>> [round(t, 6) for t in r] # doctesttag: +TAG=4_series_invtrigoh [0.7, 0.114333, 0.033614, 0.011765, 0.004484, 0.001798, 0.000745, 0.000317, 0.000137, 6e-05] >>> abs(sum(r) - atanh(x)) < eps and abs(sum(r[:-1]) - atanh(x)) >= eps True >>> eps = 1e-6 >>> x = 0.6 >>> r = termes(x, eps) >>> [round(t, 7) for t in r] # doctesttag: +TAG=4_series_invtrigoh [0.6, 0.072, 0.015552, 0.0039991, 0.0011197, 0.0003298, 0.0001005, 3.13e-05, 1e-05, 3.2e-06, 1e-06] >>> abs(sum(r) - atanh(x)) < eps and abs(sum(r[:-1]) - atanh(x)) >= eps True >>> eps = 1e-7 >>> x = 0.2 >>> r = termes(x, eps) >>> [round(t, 7) for t in r] # doctesttag: +TAG=4_series_invtrigoh [0.2, 0.0026667, 6.4e-05, 1.8e-06] >>> abs(sum(r) - atanh(x)) < eps and abs(sum(r[:-1]) - atanh(x)) >= eps True >>> eps = 1e-6 >>> x = 0.4 >>> r = termes(x, eps) >>> [round(t, 6) for t in r] # doctesttag: +TAG=4_series_invtrigoh [0.4, 0.021333, 0.002048, 0.000234, 2.9e-05, 4e-06] >>> abs(sum(r) - atanh(x)) < eps and abs(sum(r[:-1]) - atanh(x)) >= eps True >>> eps = 1e-5 >>> x = 0.8 >>> r = termes(x, eps) >>> [round(t, 6) for t in r] # doctesttag: +TAG=4_series_invtrigoh [0.8, 0.170667, 0.065536, 0.029959, 0.014913, 0.007809, 0.004229, 0.002346, 0.001325, 0.000759, 0.000439, 0.000257, 0.000151, 9e-05, 5.3e-05, 3.2e-05, 1.9e-05, 1.2e-05, 7e-06, 4e-06] >>> abs(sum(r) - atanh(x)) < eps and abs(sum(r[:-1]) - atanh(x)) >= eps True >>> eps = 1e-4 >>> x = 0.95 >>> r = termes(x, eps) >>> [round(t, 6) for t in r] # doctesttag: +TAG=4_series_invtrigoh [0.95, 0.285792, 0.154756, 0.099762, 0.070028, 0.051709, 0.039488, 0.030886, 0.024595, 0.019861, 0.016217, 0.013363, 0.011096, 0.009272, 0.007791, 0.006578, 0.005577, 0.004745, 0.004051, 0.003469, 0.002978, 0.002562, 0.00221, 0.001909, 0.001653, 0.001433, 0.001245, 0.001083, 0.000943, 0.000822, 0.000717, 0.000627, 0.000548, 0.00048, 0.000421, 0.000369, 0.000324, 0.000285, 0.00025, 0.00022, 0.000194, 0.000171, 0.00015, 0.000133, 0.000117, 0.000103, 9.1e-05, 8.1e-05, 7.1e-05, 6.3e-05, 5.6e-05, 4.9e-05, 4.4e-05, 3.9e-05, 3.4e-05, 3e-05, 2.7e-05, 2.4e-05, 2.1e-05, 1.9e-05, 1.7e-05, 1.5e-05, 1.3e-05, 1.2e-05] >>> abs(sum(r) - atanh(x)) < eps and abs(sum(r[:-1]) - atanh(x)) >= eps True