├── .gitignore ├── 1. Parsing CSV ├── ZUO.csv ├── ZUO_out.csv ├── main.py └── readme.md ├── 2. Site map ├── main.py └── readme.md ├── bubble_selection_insert_sorting.py ├── conda_list.txt ├── fibonachi.py ├── hanoi_towers.py ├── length_decoding.py ├── length_encoding.py ├── linear_and_binary_search.py ├── merge_sort.py ├── pi_e.py ├── quick_sort.py ├── readme.md └── trailing_zeros_number.py /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | venv -------------------------------------------------------------------------------- /1. Parsing CSV/ZUO.csv: -------------------------------------------------------------------------------- 1 | Date,Open,High,Low,Close,Adj Close,Volume 2 | 2018-04-12,20.000000,21.850000,19.120001,20.000000,20.000000,13102400 3 | 2018-04-13,19.799999,20.820000,19.600000,20.600000,20.600000,1864700 4 | 2018-04-16,20.879999,20.879999,19.900000,20.600000,20.600000,907900 5 | 2018-04-17,20.549999,20.660000,19.000000,19.549999,19.549999,1152500 6 | 2018-04-18,19.610001,20.420000,19.073999,19.559999,19.559999,885800 7 | 2018-04-19,19.570000,19.719999,19.211000,19.650000,19.650000,463400 8 | 2018-04-20,19.549999,19.730000,19.450001,19.719999,19.719999,300100 9 | 2018-04-23,19.830000,20.100000,19.618000,20.000000,20.000000,341700 10 | 2018-04-24,20.120001,20.120001,19.410000,19.700001,19.700001,308500 11 | 2018-04-25,19.719999,19.730000,19.400000,19.610001,19.610001,272800 12 | 2018-04-26,19.680000,20.280001,19.601999,20.280001,20.280001,218800 13 | 2018-04-27,19.870001,20.219999,19.549999,19.610001,19.610001,573900 14 | 2018-04-30,19.549999,19.879999,19.200001,19.260000,19.260000,211800 15 | 2018-05-01,19.370001,19.891001,19.280001,19.670000,19.670000,149700 16 | 2018-05-02,19.920000,20.190001,19.500000,19.590000,19.590000,220000 17 | 2018-05-03,19.590000,20.020000,19.200001,19.660000,19.660000,283000 18 | 2018-05-04,19.870001,19.980000,19.379000,19.549999,19.549999,145600 19 | 2018-05-07,19.389999,19.469999,18.750000,19.250000,19.250000,417100 20 | 2018-05-08,19.280001,19.660000,19.110001,19.510000,19.510000,167900 21 | 2018-05-09,19.480000,19.900000,19.330000,19.790001,19.790001,123400 22 | 2018-05-10,19.799999,20.180000,19.420000,20.040001,20.040001,169500 23 | 2018-05-11,20.080000,20.350000,19.510000,20.160000,20.160000,264400 24 | 2018-05-14,20.299999,20.350000,19.750000,19.889999,19.889999,160000 25 | 2018-05-15,19.809999,19.844999,19.170000,19.219999,19.219999,193000 26 | 2018-05-16,19.230000,19.709999,19.200001,19.360001,19.360001,108000 27 | 2018-05-17,19.299999,19.750000,19.299999,19.690001,19.690001,68500 28 | 2018-05-18,19.660000,20.020000,19.650000,19.670000,19.670000,99100 29 | 2018-05-21,19.639999,19.739000,19.329000,19.629999,19.629999,153800 30 | 2018-05-22,19.660000,19.770000,19.660000,19.730000,19.730000,131200 31 | 2018-05-23,19.600000,20.299000,19.580000,20.010000,20.010000,301700 32 | 2018-05-24,20.000000,21.240000,19.650000,21.010000,21.010000,309000 33 | 2018-05-25,20.969999,22.188999,20.969999,21.400000,21.400000,410000 34 | 2018-05-29,21.400000,21.510000,20.000000,20.670000,20.670000,329600 35 | 2018-05-30,20.900000,22.010000,20.670000,21.940001,21.940001,316300 36 | 2018-05-31,21.840000,22.959999,21.670000,22.180000,22.180000,429800 37 | 2018-06-01,23.120001,27.500000,22.219999,26.400000,26.400000,2136900 38 | 2018-06-04,29.160000,29.879999,27.299999,28.020000,28.020000,1969200 39 | 2018-06-05,28.709999,29.930000,28.170000,28.540001,28.540001,1187800 40 | 2018-06-06,28.900000,31.000000,28.680000,30.200001,30.200001,1076100 41 | 2018-06-07,30.740000,30.777000,27.150000,27.799999,27.799999,1050500 42 | 2018-06-08,28.040001,29.570000,28.010000,29.230000,29.230000,535300 43 | 2018-06-11,29.469999,32.549999,29.280001,31.530001,31.530001,1168400 44 | 2018-06-12,32.290001,33.080002,28.969999,29.000000,29.000000,1369100 45 | 2018-06-13,29.750000,30.150000,29.100000,29.740000,29.740000,1000600 46 | 2018-06-14,30.750000,32.970001,30.580000,31.340000,31.340000,1525400 47 | 2018-06-15,31.549999,36.000000,31.250000,34.630001,34.630001,4141900 48 | 2018-06-18,35.060001,37.779999,34.110001,37.090000,37.090000,3329400 49 | 2018-06-19,36.060001,37.689999,32.660000,33.509998,33.509998,2736700 50 | 2018-06-20,35.840000,35.869999,32.000000,32.009998,32.009998,1720900 51 | 2018-06-21,31.959999,32.049999,28.879999,29.190001,29.190001,2759400 52 | 2018-06-22,29.639999,29.910000,26.600000,27.639999,27.639999,2570700 53 | 2018-06-25,26.670000,29.000000,26.280001,28.680000,28.680000,1873900 54 | 2018-06-26,29.000000,30.100000,27.090000,27.469999,27.469999,1553800 55 | 2018-06-27,27.600000,28.490000,26.459999,26.959999,26.959999,1651400 56 | 2018-06-28,26.760000,28.480000,26.660000,28.330000,28.330000,1099800 57 | 2018-06-29,28.690001,30.680000,27.190001,27.200001,27.200001,1842200 58 | 2018-07-02,27.540001,28.680000,27.180000,28.490000,28.490000,1552700 59 | 2018-07-03,28.400000,28.825001,27.650000,28.320000,28.320000,649700 60 | 2018-07-05,28.370001,28.990000,26.680000,26.740000,26.740000,1516800 61 | 2018-07-06,27.080000,27.690001,25.820000,26.309999,26.309999,1219100 62 | 2018-07-09,26.709999,27.000000,25.610001,26.070000,26.070000,1331400 63 | 2018-07-10,26.410000,26.500000,24.549999,24.780001,24.780001,2243900 64 | 2018-07-11,24.299999,25.049999,24.120001,24.260000,24.260000,1628100 65 | 2018-07-12,24.510000,26.700001,24.150000,25.889999,25.889999,1934400 66 | 2018-07-13,25.790001,25.940001,23.870001,25.690001,25.690001,1487000 67 | 2018-07-16,25.230000,25.480000,24.250000,24.410000,24.410000,1051200 68 | 2018-07-17,24.299999,26.870001,24.290001,26.580000,26.580000,1740600 69 | 2018-07-18,26.850000,27.990000,26.120001,27.180000,27.180000,1658400 70 | 2018-07-19,27.090000,27.660000,25.500000,25.809999,25.809999,1400000 71 | 2018-07-20,26.000000,26.469999,25.219999,25.270000,25.270000,929900 72 | 2018-07-23,25.219999,26.639999,24.620001,26.540001,26.540001,905700 73 | 2018-07-24,26.799999,27.441000,25.010000,25.250000,25.250000,1086500 74 | 2018-07-25,25.450001,26.450001,25.410000,26.309999,26.309999,752400 75 | 2018-07-26,25.740000,26.740000,25.430000,26.030001,26.030001,431500 76 | 2018-07-27,26.180000,26.549999,24.660000,25.120001,25.120001,1027200 77 | 2018-07-30,25.120001,25.379999,22.879999,22.930000,22.930000,1369100 78 | 2018-07-31,23.500000,25.200001,22.500000,24.530001,24.530001,1920200 79 | 2018-08-01,24.180000,25.138000,23.770000,24.580000,24.580000,848800 80 | 2018-08-02,24.370001,26.000000,24.000000,25.830000,25.830000,1118100 81 | 2018-08-03,26.530001,26.559999,25.000000,25.180000,25.180000,955300 82 | 2018-08-06,25.280001,28.230000,25.260000,28.000000,28.000000,1398100 83 | 2018-08-07,28.840000,29.340000,27.000000,27.400000,27.400000,1033000 84 | 2018-08-08,27.559999,27.945999,26.110001,26.730000,26.730000,484200 85 | 2018-08-09,27.290001,28.990000,27.059999,28.200001,28.200001,1388000 86 | 2018-08-10,28.000000,29.950001,27.660000,28.430000,28.430000,1274000 87 | 2018-08-13,28.809999,29.930000,28.750000,29.379999,29.379999,1236200 88 | 2018-08-14,29.750000,30.879999,28.600000,30.570000,30.570000,1625600 89 | 2018-08-15,29.840000,30.750000,29.000000,30.000000,30.000000,920800 90 | 2018-08-16,30.500000,30.549999,29.730000,30.340000,30.340000,978500 91 | 2018-08-17,29.709999,30.290001,28.830000,29.150000,29.150000,1352800 92 | 2018-08-20,29.900000,29.990000,28.055000,28.299999,28.299999,971000 93 | 2018-08-21,28.280001,29.330000,28.231001,28.799999,28.799999,979800 94 | 2018-08-22,28.389999,30.000000,28.337000,29.719999,29.719999,761900 95 | 2018-08-23,29.870001,30.850000,29.170000,30.170000,30.170000,1047100 96 | 2018-08-24,30.379999,33.480000,30.322001,33.380001,33.380001,1821700 97 | 2018-08-27,35.310001,35.650002,33.720001,35.099998,35.099998,2239600 98 | 2018-08-28,35.450001,35.682999,32.220001,32.340000,32.340000,2711300 99 | 2018-08-29,33.367001,33.750000,31.344999,33.400002,33.400002,1726800 100 | 2018-08-30,33.419998,34.750000,32.014999,34.009998,34.009998,2454500 101 | 2018-08-31,29.129999,29.200001,27.530001,27.580000,27.580000,8608400 102 | 2018-09-04,27.700001,28.389999,26.211000,27.860001,27.860001,3298500 103 | 2018-09-05,27.049999,27.150000,25.200001,25.840000,25.840000,4166600 104 | 2018-09-06,26.040001,26.100000,24.530001,25.040001,25.040001,2424200 105 | 2018-09-07,25.000000,26.230000,24.080000,25.530001,25.530001,2054600 106 | 2018-09-10,25.500000,25.639999,24.240000,24.670000,24.670000,1551800 107 | 2018-09-11,24.780001,26.020000,24.500000,25.510000,25.510000,1191200 108 | 2018-09-12,25.840000,26.209999,25.065001,26.010000,26.010000,1306300 109 | 2018-09-13,26.290001,26.430000,25.320000,25.580000,25.580000,1659200 110 | 2018-09-14,25.580000,25.809999,24.500000,24.629999,24.629999,1379700 111 | 2018-09-17,24.350000,24.950001,23.799999,24.110001,24.110001,972600 112 | 2018-09-18,24.290001,24.480000,23.100000,23.309999,23.309999,1749300 113 | 2018-09-19,23.350000,23.420000,22.260000,22.910000,22.910000,2018300 114 | 2018-09-20,22.770000,23.450001,21.799999,22.990000,22.990000,3060500 115 | 2018-09-21,23.389999,24.000000,22.590000,23.360001,23.360001,1880700 116 | 2018-09-24,23.190001,23.469999,22.820000,22.930000,22.930000,975600 117 | 2018-09-25,22.730000,23.250000,22.200001,22.260000,22.260000,1748100 118 | 2018-09-26,22.299999,22.700001,22.020000,22.430000,22.430000,1618600 119 | 2018-09-27,22.500000,23.049999,22.370001,22.889999,22.889999,1146000 120 | 2018-09-28,22.790001,23.400000,22.170000,23.110001,23.110001,1366600 121 | 2018-10-01,23.070000,23.110001,21.410000,21.469999,21.469999,3167000 122 | 2018-10-02,21.580000,21.860001,20.410000,21.110001,21.110001,1719700 123 | 2018-10-03,20.709999,21.430000,20.420000,21.100000,21.100000,2058000 124 | 2018-10-04,20.889999,21.499001,20.520000,21.320000,21.320000,1627900 125 | 2018-10-05,21.260000,21.480000,20.690001,21.160000,21.160000,1474200 126 | 2018-10-08,20.889999,21.240000,19.770000,19.940001,19.940001,2119400 127 | 2018-10-09,19.500000,20.100000,18.969999,19.650000,19.650000,4978200 128 | 2018-10-10,19.280001,20.110001,18.150000,18.510000,18.510000,2509600 129 | 2018-10-11,18.500000,18.920000,17.719999,17.830000,17.830000,2634100 130 | 2018-10-12,19.209999,19.209999,17.959999,18.100000,18.100000,2350300 131 | 2018-10-15,18.030001,20.299999,17.730000,19.790001,19.790001,3176800 132 | 2018-10-16,20.450001,21.100000,19.809999,20.910000,20.910000,2125200 133 | 2018-10-17,21.070000,21.250000,20.000999,20.830000,20.830000,1252100 134 | 2018-10-18,20.719999,21.309999,20.257000,20.900000,20.900000,1174300 135 | 2018-10-19,21.084999,21.290001,19.780001,20.000000,20.000000,1828700 136 | 2018-10-22,20.110001,20.209999,19.209999,19.400000,19.400000,1180900 137 | 2018-10-23,18.870001,19.790001,18.580000,19.490000,19.490000,859500 138 | 2018-10-24,19.450001,19.690001,17.870001,17.910000,17.910000,1173600 139 | 2018-10-25,18.120001,19.620001,17.870001,19.320000,19.320000,1395600 140 | 2018-10-26,18.510000,19.490000,18.451000,19.030001,19.030001,1063600 141 | 2018-10-29,19.549999,19.940001,18.180000,18.459999,18.459999,1141600 142 | 2018-10-30,18.490000,19.350000,18.400000,19.350000,19.350000,1110400 143 | 2018-10-31,19.709999,20.510000,19.500999,20.420000,20.420000,1718100 144 | 2018-11-01,20.520000,20.900000,20.010000,20.600000,20.600000,1264700 145 | 2018-11-02,20.799999,21.275000,20.490000,20.780001,20.780001,1342100 146 | 2018-11-05,20.940001,21.025000,20.239000,20.709999,20.709999,600700 147 | 2018-11-06,20.870001,21.190001,20.500000,20.799999,20.799999,786400 148 | 2018-11-07,21.240000,21.510000,20.850000,21.490000,21.490000,1770100 149 | 2018-11-08,21.500000,22.020000,21.100000,21.850000,21.850000,1211200 150 | 2018-11-09,21.440001,21.700001,20.379999,20.969999,20.969999,1010600 151 | 2018-11-12,20.930000,21.100000,20.000000,20.330000,20.330000,796000 152 | 2018-11-13,20.480000,21.100000,20.219999,20.459999,20.459999,670800 153 | 2018-11-14,20.780001,21.000000,20.311001,20.450001,20.450001,855200 154 | 2018-11-15,20.370001,21.379999,20.260000,21.270000,21.270000,819400 155 | 2018-11-16,21.049999,21.510000,20.389999,20.730000,20.730000,780600 156 | 2018-11-19,20.730000,20.799999,17.709999,17.760000,17.760000,2166200 157 | 2018-11-20,16.520000,17.770000,16.000000,17.400000,17.400000,2011800 158 | 2018-11-21,17.790001,18.000000,17.370001,17.660000,17.660000,822600 159 | 2018-11-23,17.299999,18.299999,17.209000,17.930000,17.930000,397700 160 | 2018-11-26,18.200001,18.969999,18.044001,18.830000,18.830000,849800 161 | 2018-11-27,18.610001,19.240000,18.473000,18.750000,18.750000,939000 162 | 2018-11-28,19.240000,20.180000,18.910000,20.000000,20.000000,1575800 163 | 2018-11-29,20.240000,20.690001,19.709999,20.559999,20.559999,2824100 164 | 2018-11-30,19.129999,20.500000,18.347000,19.030001,19.030001,3640600 165 | 2018-12-03,20.200001,20.230000,18.809999,19.250000,19.250000,1596200 166 | 2018-12-04,18.910000,18.910000,18.000000,18.100000,18.100000,2027600 167 | 2018-12-06,17.900000,18.530001,17.549999,18.530001,18.530001,1374700 168 | 2018-12-07,18.430000,18.566999,17.809999,18.139999,18.139999,1022500 169 | 2018-12-10,18.040001,18.620001,17.790001,18.049999,18.049999,1192800 170 | 2018-12-11,18.590000,19.500000,17.900000,18.469999,18.469999,1885000 171 | 2018-12-12,18.580000,19.080000,18.580000,18.719999,18.719999,1912000 172 | 2018-12-13,18.900000,19.090000,18.000000,18.100000,18.100000,1024600 173 | 2018-12-14,17.870001,18.530001,17.650000,18.240000,18.240000,1039200 174 | 2018-12-17,17.870001,18.080000,16.100000,16.150000,16.150000,2642200 175 | 2018-12-18,16.570000,17.100000,16.400000,16.799999,16.799999,1970400 176 | 2018-12-19,16.770000,18.360001,16.709999,17.520000,17.520000,2647500 177 | 2018-12-20,18.230000,18.440001,16.690001,17.040001,17.040001,1987600 178 | 2018-12-21,17.059999,17.059999,15.880000,16.080000,16.080000,2518300 179 | 2018-12-24,15.670000,16.850000,15.560000,16.360001,16.360001,550000 180 | 2018-12-26,16.680000,17.820000,16.370001,17.809999,17.809999,1092300 181 | 2018-12-27,17.309999,17.920000,16.620001,17.900000,17.900000,1011200 182 | 2018-12-28,17.940001,18.160000,17.410000,17.650000,17.650000,1141000 183 | 2018-12-31,17.950001,18.150000,17.760000,18.139999,18.139999,1125500 184 | 2019-01-02,17.700001,18.670000,17.650000,18.200001,18.200001,1039500 185 | 2019-01-03,17.860001,18.209999,17.270000,17.680000,17.680000,766700 186 | 2019-01-04,18.090000,18.660000,17.959999,18.549999,18.549999,1355300 187 | 2019-01-07,18.830000,19.850000,18.760000,19.490000,19.490000,1602600 188 | 2019-01-08,19.940001,19.940001,19.320000,19.740000,19.740000,889700 189 | 2019-01-09,19.900000,20.000000,19.711000,19.879999,19.879999,1011200 190 | 2019-01-10,19.680000,20.110001,19.120001,19.930000,19.930000,1870700 191 | 2019-01-11,19.840000,19.990000,19.639999,19.969999,19.969999,591600 192 | 2019-01-14,19.900000,19.950001,19.500000,19.770000,19.770000,651600 193 | 2019-01-15,19.840000,20.500000,19.660000,20.480000,20.480000,1278600 194 | 2019-01-16,20.250000,20.750000,19.860001,20.200001,20.200001,1442300 195 | 2019-01-17,20.150000,20.950001,20.047001,20.760000,20.760000,1580600 196 | 2019-01-18,20.950001,21.600000,20.900000,21.139999,21.139999,2241700 197 | 2019-01-22,20.920000,21.549999,20.610001,21.340000,21.340000,892500 198 | 2019-01-23,21.500000,21.639999,19.920000,20.430000,20.430000,1029000 199 | 2019-01-24,20.350000,20.660000,19.820000,20.389999,20.389999,788000 200 | 2019-01-25,20.480000,21.480000,20.209999,21.360001,21.360001,1479300 201 | 2019-01-28,21.049999,21.379999,20.850000,21.129999,21.129999,643100 202 | 2019-01-29,21.139999,21.309999,20.860001,20.870001,20.870001,421300 203 | 2019-01-30,21.240000,21.480000,20.900000,21.340000,21.340000,650100 204 | 2019-01-31,21.379999,22.445000,21.280001,21.639999,21.639999,1216800 205 | 2019-02-01,21.230000,21.400000,20.500000,21.160000,21.160000,1249600 206 | 2019-02-04,20.980000,21.850000,20.980000,21.389999,21.389999,543000 207 | 2019-02-05,21.500000,21.719999,21.020000,21.389999,21.389999,1307500 208 | 2019-02-06,21.389999,21.510000,20.290001,20.530001,20.530001,1143600 209 | 2019-02-07,20.389999,20.980000,19.799999,20.820000,20.820000,1321200 210 | 2019-02-08,20.600000,21.490000,20.583000,21.299999,21.299999,934000 211 | 2019-02-11,21.459999,21.459999,20.080000,20.270000,20.270000,1199400 212 | 2019-02-12,20.540001,20.900000,20.400000,20.680000,20.680000,663900 213 | 2019-02-13,20.830000,21.469999,20.820000,21.180000,21.180000,1043300 214 | 2019-02-14,21.000000,22.844999,21.000000,22.510000,22.510000,2648500 215 | 2019-02-15,22.600000,23.020000,22.410000,22.500000,22.500000,1324200 216 | 2019-02-19,22.540001,23.500000,22.320000,23.219999,23.219999,1430000 217 | 2019-02-20,23.250000,23.700001,23.040001,23.180000,23.180000,1624300 218 | 2019-02-21,23.139999,23.450001,22.389999,23.309999,23.309999,830400 219 | 2019-02-22,23.690001,24.070000,23.520000,23.969999,23.969999,1741100 220 | 2019-02-25,24.280001,24.469999,23.650000,24.240000,24.240000,1641300 221 | 2019-02-26,24.280001,24.480000,23.510000,23.639999,23.639999,1185700 222 | 2019-02-27,23.660000,24.650000,23.270000,24.549999,24.549999,1259000 223 | 2019-02-28,24.440001,24.540001,23.750000,23.760000,23.760000,916300 224 | 2019-03-01,24.090000,24.200001,23.360001,23.410000,23.410000,1813100 225 | 2019-03-04,23.700001,23.719999,21.629999,22.809999,22.809999,1806400 226 | 2019-03-05,22.709999,22.799999,22.040001,22.500000,22.500000,2156000 227 | 2019-03-06,22.330000,23.299999,22.250000,22.400000,22.400000,957400 228 | 2019-03-07,22.400000,23.600000,22.309999,22.980000,22.980000,1130400 229 | 2019-03-08,22.650000,23.450001,22.360001,23.040001,23.040001,1086800 230 | 2019-03-11,23.100000,24.170000,23.100000,23.549999,23.549999,1540600 231 | 2019-03-12,23.650000,24.049999,23.400000,23.520000,23.520000,1250600 232 | 2019-03-13,23.580000,24.219999,23.450001,23.629999,23.629999,1479700 233 | 2019-03-14,23.580000,24.000000,23.280001,23.500000,23.500000,1010800 234 | 2019-03-15,23.549999,23.850000,23.090000,23.410000,23.410000,1293000 235 | 2019-03-18,23.639999,23.740000,22.770000,23.059999,23.059999,1050600 236 | 2019-03-19,24.000000,24.410000,23.309999,23.430000,23.430000,2485600 237 | 2019-03-20,23.830000,24.230000,23.400000,23.740000,23.740000,1830300 238 | 2019-03-21,23.820000,24.434000,23.680000,24.330000,24.330000,5054500 239 | 2019-03-22,22.280001,23.969999,20.280001,20.910000,20.910000,10602400 240 | 2019-03-25,20.750000,20.820000,19.510000,20.389999,20.389999,3656100 241 | 2019-03-26,20.040001,20.250000,19.129999,19.480000,19.480000,5074300 242 | 2019-03-27,19.230000,19.340000,18.129999,19.200001,19.200001,4557900 243 | 2019-03-28,19.219999,20.030001,18.870001,19.510000,19.510000,2057200 244 | 2019-03-29,19.760000,20.129999,19.379999,20.030001,20.030001,2547700 245 | 2019-04-01,20.200001,20.299999,19.570000,19.680000,19.680000,2698400 246 | 2019-04-02,19.730000,20.309999,19.600000,20.250000,20.250000,1878400 247 | 2019-04-03,20.400000,20.950001,20.219999,20.580000,20.580000,2029100 248 | 2019-04-04,20.540001,20.870001,19.700001,20.139999,20.139999,2252300 249 | 2019-04-05,20.120001,20.520000,20.059999,20.150000,20.150000,1360200 250 | 2019-04-08,20.129999,20.309999,19.740000,20.230000,20.230000,907600 251 | 2019-04-09,20.070000,20.270000,19.629999,19.680000,19.680000,720300 252 | 2019-04-10,19.650000,20.139999,19.620001,19.790001,19.790001,852100 253 | 2019-04-11,19.870001,20.000000,19.670000,19.700001,19.700001,670200 254 | 2019-04-12,19.760000,19.879000,19.180000,19.340000,19.340000,1415700 255 | 2019-04-15,19.250000,19.629999,19.049999,19.379999,19.379999,851900 256 | 2019-04-16,19.370001,19.740000,18.850000,19.490000,19.490000,1422000 257 | 2019-04-17,19.740000,19.799999,18.830000,19.549999,19.549999,1687800 258 | 2019-04-18,19.389999,19.639999,18.879999,19.219999,19.219999,1350500 259 | 2019-04-22,19.070000,19.500000,18.950001,19.320000,19.320000,883400 260 | 2019-04-23,19.400000,20.129999,19.322001,19.990000,19.990000,1320400 261 | 2019-04-24,20.200001,20.400000,19.870001,20.049999,20.049999,1332000 262 | 2019-04-25,20.549999,21.850000,20.549999,21.260000,21.260000,4727600 263 | 2019-04-26,21.450001,21.950001,21.209999,21.350000,21.350000,1950000 264 | 2019-04-29,21.410000,22.370001,21.410000,22.110001,22.110001,2141900 265 | 2019-04-30,22.010000,22.650000,21.940001,22.100000,22.100000,1146300 266 | 2019-05-01,22.209999,22.268999,21.010000,21.379999,21.379999,1658900 267 | 2019-05-02,21.450001,21.770000,21.010000,21.360001,21.360001,1110400 268 | 2019-05-03,21.540001,22.330000,21.400000,22.240000,22.240000,1148900 269 | 2019-05-06,21.780001,23.040001,21.360001,22.870001,22.870001,2885400 270 | 2019-05-07,22.500000,22.980000,21.680000,22.100000,22.100000,1616300 271 | 2019-05-08,22.100000,22.840000,22.030001,22.260000,22.260000,1249700 272 | 2019-05-09,21.940001,22.805000,21.150000,22.450001,22.450001,1372700 273 | 2019-05-10,22.219999,22.480000,21.379999,22.350000,22.350000,1369900 274 | 2019-05-13,21.820000,21.931000,20.990000,21.129999,21.129999,1135500 275 | 2019-05-14,21.309999,21.930000,21.209999,21.809999,21.809999,1095300 276 | 2019-05-15,21.610001,22.450001,21.603001,22.240000,22.240000,892100 277 | 2019-05-16,22.270000,23.000000,22.270000,22.559999,22.559999,1357800 278 | 2019-05-17,22.340000,22.889999,22.059999,22.330000,22.330000,777700 279 | 2019-05-20,22.000000,22.230000,21.664000,22.059999,22.059999,953300 280 | 2019-05-21,22.299999,22.790001,22.219999,22.590000,22.590000,1599100 281 | 2019-05-22,22.530001,22.840000,22.290001,22.389999,22.389999,1036800 282 | 2019-05-23,22.100000,22.170000,20.320000,20.799999,20.799999,3787300 283 | 2019-05-24,21.090000,21.370001,20.809999,21.350000,21.350000,1172500 284 | 2019-05-28,21.320000,22.010000,21.190001,21.370001,21.370001,2190100 285 | 2019-05-29,21.270000,21.309999,20.059999,20.350000,20.350000,2474500 286 | 2019-05-30,20.540001,20.870001,19.732000,19.900000,19.900000,3951000 287 | 2019-05-31,13.360000,14.240000,13.350000,13.990000,13.990000,18995200 288 | 2019-06-03,14.000000,14.020000,13.040000,13.260000,13.260000,8121700 289 | 2019-06-04,13.600000,14.440000,13.450000,14.300000,14.300000,3076100 290 | 2019-06-05,14.550000,14.650000,13.960000,14.180000,14.180000,2229900 291 | 2019-06-06,14.160000,14.720000,14.100000,14.570000,14.570000,2180700 292 | 2019-06-07,14.500000,14.980000,14.400000,14.560000,14.560000,2069600 293 | 2019-06-10,14.810000,15.470000,14.650000,14.760000,14.760000,3202800 294 | 2019-06-11,14.870000,14.916000,14.150000,14.170000,14.170000,2441000 295 | 2019-06-12,14.020000,15.180000,14.000000,14.970000,14.970000,3071100 296 | 2019-06-13,15.200000,15.290000,14.680000,14.940000,14.940000,1242900 297 | 2019-06-14,14.800000,14.850000,14.400000,14.730000,14.730000,1297200 298 | 2019-06-17,14.730000,15.640000,14.730000,15.500000,15.500000,1852200 299 | 2019-06-18,15.530000,16.000000,15.470000,15.660000,15.660000,1432000 300 | 2019-06-19,15.660000,16.278999,15.630000,15.910000,15.910000,1396900 301 | 2019-06-20,16.150000,16.299999,15.500000,15.710000,15.710000,1536400 302 | 2019-06-21,15.730000,16.000000,15.500000,15.910000,15.910000,3802300 303 | 2019-06-24,15.880000,15.940000,15.000000,15.120000,15.120000,1745300 304 | 2019-06-25,15.040000,15.095000,14.610000,14.890000,14.890000,1663700 305 | 2019-06-26,15.000000,15.390000,14.600000,14.740000,14.740000,1205700 306 | 2019-06-27,14.750000,15.230000,14.710000,15.030000,15.030000,1262800 307 | 2019-06-28,15.030000,15.390000,14.935000,15.320000,15.320000,13166400 308 | 2019-07-01,15.460000,15.885000,15.350000,15.460000,15.460000,2005400 309 | 2019-07-02,15.470000,15.895000,15.150000,15.850000,15.850000,1251900 310 | 2019-07-03,15.900000,16.250000,15.720000,16.040001,16.040001,863200 311 | 2019-07-05,15.820000,16.160000,15.710000,16.110001,16.110001,771300 312 | 2019-07-08,15.970000,16.180000,15.843000,16.049999,16.049999,870200 313 | 2019-07-09,15.910000,16.379999,15.760000,16.360001,16.360001,998000 314 | 2019-07-10,16.370001,16.745001,16.260000,16.450001,16.450001,762400 315 | 2019-07-11,16.450001,16.549999,16.110001,16.350000,16.350000,724600 316 | 2019-07-12,16.400000,16.570000,16.120001,16.389999,16.389999,727300 317 | 2019-07-15,16.480000,16.650000,16.260000,16.320000,16.320000,708800 318 | 2019-07-16,16.600000,16.649000,15.650000,15.760000,15.760000,1310400 319 | 2019-07-17,15.800000,16.061001,15.400000,15.480000,15.480000,1309400 320 | 2019-07-18,15.380000,15.490000,14.970000,15.490000,15.490000,1115300 321 | 2019-07-19,15.630000,15.790000,15.170000,15.310000,15.310000,734200 322 | 2019-07-22,15.390000,15.510000,15.170000,15.410000,15.410000,470600 323 | 2019-07-23,15.480000,15.480000,15.075000,15.090000,15.090000,753400 324 | 2019-07-24,15.090000,15.470000,15.000000,15.390000,15.390000,1371500 325 | 2019-07-25,15.380000,15.900000,15.200000,15.300000,15.300000,1138800 326 | 2019-07-26,15.420000,15.880000,15.325000,15.550000,15.550000,815700 327 | 2019-07-29,15.600000,15.692000,14.820000,15.190000,15.190000,908500 328 | 2019-07-30,15.060000,15.580000,14.930000,15.500000,15.500000,646300 329 | 2019-07-31,15.530000,15.630000,14.840000,15.010000,15.010000,843800 330 | 2019-08-01,15.060000,15.407000,14.670000,14.840000,14.840000,1109000 331 | 2019-08-02,14.780000,14.945000,14.420000,14.830000,14.830000,999400 332 | 2019-08-05,14.130000,14.210000,13.420000,13.960000,13.960000,1683200 333 | 2019-08-06,14.140000,14.320000,13.830000,14.020000,14.020000,746800 334 | 2019-08-07,13.910000,14.330000,13.670000,14.210000,14.210000,624200 335 | 2019-08-08,14.270000,14.880000,14.230000,14.440000,14.440000,841400 336 | 2019-08-09,14.400000,14.540000,13.980000,14.050000,14.050000,760100 337 | 2019-08-12,13.900000,14.050000,13.720000,13.840000,13.840000,597600 338 | 2019-08-13,13.800000,14.320000,13.710000,13.900000,13.900000,1120300 339 | 2019-08-14,13.700000,13.880000,13.320000,13.740000,13.740000,1188600 340 | 2019-08-15,13.750000,13.810000,13.060000,13.320000,13.320000,1258900 341 | 2019-08-16,13.460000,13.900000,13.420000,13.540000,13.540000,2426500 342 | 2019-08-19,13.780000,13.925000,13.555000,13.670000,13.670000,1171300 343 | 2019-08-20,13.630000,13.925000,13.530000,13.810000,13.810000,902500 344 | 2019-08-21,13.930000,14.453000,13.910000,14.040000,14.040000,1216400 345 | 2019-08-22,14.110000,14.410000,13.990000,14.290000,14.290000,1110200 346 | 2019-08-23,14.280000,14.670000,14.095000,14.190000,14.190000,1147600 347 | 2019-08-26,14.330000,14.430000,13.930000,14.310000,14.310000,1118000 348 | 2019-08-27,14.450000,14.500000,13.710000,14.000000,14.000000,1744900 349 | 2019-08-28,13.800000,13.960000,13.431000,13.930000,13.930000,2345000 350 | 2019-08-29,15.240000,15.510000,14.310000,14.880000,14.880000,3453300 351 | 2019-08-30,15.080000,15.400000,14.820000,15.050000,15.050000,1849400 352 | 2019-09-03,14.970000,14.970000,14.330000,14.390000,14.390000,1544400 353 | 2019-09-04,14.660000,14.830000,14.440000,14.670000,14.670000,1097600 354 | 2019-09-05,14.910000,15.070000,14.560000,14.930000,14.930000,1041200 355 | 2019-09-06,15.100000,15.450000,14.640000,15.310000,15.310000,1261000 356 | 2019-09-09,15.390000,15.870000,15.140000,15.460000,15.460000,1279100 357 | 2019-09-10,15.300000,15.950000,15.130000,15.890000,15.890000,968900 358 | 2019-09-11,15.750000,16.000000,15.270000,15.720000,15.720000,1481000 359 | 2019-09-12,15.660000,15.930000,15.290000,15.340000,15.340000,1273400 360 | 2019-09-13,15.240000,15.505000,15.130000,15.190000,15.190000,873000 361 | 2019-09-16,14.790000,15.330000,14.760000,15.310000,15.310000,1475800 362 | 2019-09-17,15.330000,15.775000,15.260000,15.700000,15.700000,1705600 363 | 2019-09-18,15.670000,15.700000,15.210000,15.490000,15.490000,1092900 364 | 2019-09-19,15.500000,15.970000,15.500000,15.760000,15.760000,810500 365 | 2019-09-20,15.750000,16.000000,15.570000,15.750000,15.750000,3576400 366 | 2019-09-23,15.630000,15.830000,15.400000,15.600000,15.600000,1305200 367 | 2019-09-24,15.720000,15.720000,15.030000,15.170000,15.170000,1358100 368 | 2019-09-25,15.180000,15.370000,14.950000,15.240000,15.240000,1675600 369 | 2019-09-26,15.230000,16.590000,15.070000,15.990000,15.990000,3679000 370 | 2019-09-27,16.219999,16.379999,14.810000,15.100000,15.100000,2199600 371 | 2019-09-30,15.150000,15.319000,14.650000,15.050000,15.050000,1144100 372 | 2019-10-01,15.050000,15.340000,14.610000,14.650000,14.650000,1399200 373 | 2019-10-02,14.470000,14.700000,14.160000,14.550000,14.550000,1359100 374 | 2019-10-03,14.540000,15.230000,14.400000,15.090000,15.090000,847700 375 | 2019-10-04,15.090000,15.280000,14.900000,15.030000,15.030000,763800 376 | 2019-10-07,15.000000,15.190000,14.750000,14.820000,14.820000,1066700 377 | 2019-10-08,14.630000,14.760000,14.300000,14.490000,14.490000,572800 378 | 2019-10-09,14.610000,14.860000,14.410000,14.530000,14.530000,641100 379 | 2019-10-10,14.550000,14.860000,14.400000,14.520000,14.520000,654700 380 | 2019-10-11,14.670000,14.940000,14.500000,14.660000,14.660000,829300 381 | 2019-10-14,14.620000,14.660000,14.180000,14.180000,14.180000,684400 382 | 2019-10-15,14.200000,14.350000,14.020000,14.180000,14.180000,837100 383 | 2019-10-16,14.050000,14.330000,13.770000,14.220000,14.220000,1491500 384 | 2019-10-17,14.310000,14.323000,14.010000,14.130000,14.130000,980700 385 | 2019-10-18,14.160000,14.200000,13.435000,13.620000,13.620000,1907600 386 | 2019-10-21,13.750000,14.190000,13.650000,14.110000,14.110000,822000 387 | 2019-10-22,14.200000,14.280000,13.780000,13.840000,13.840000,705200 388 | 2019-10-23,13.890000,14.240000,13.750000,13.990000,13.990000,846700 389 | 2019-10-24,14.050000,14.330000,13.980000,14.270000,14.270000,698800 390 | 2019-10-25,14.250000,14.450000,14.040000,14.390000,14.390000,1510700 391 | 2019-10-28,14.450000,14.630000,14.310000,14.490000,14.490000,639800 392 | 2019-10-29,14.440000,14.480000,14.140000,14.280000,14.280000,533100 393 | 2019-10-30,14.300000,14.510000,14.160000,14.350000,14.350000,506800 394 | 2019-10-31,14.390000,14.480000,14.010000,14.250000,14.250000,671300 395 | 2019-11-01,14.320000,14.670000,14.290000,14.530000,14.530000,616500 396 | 2019-11-04,14.650000,15.000000,14.390000,14.480000,14.480000,776400 397 | 2019-11-05,14.580000,14.680000,14.400000,14.610000,14.610000,567400 398 | 2019-11-06,14.590000,15.030000,14.370000,14.440000,14.440000,1109300 399 | 2019-11-07,14.560000,14.710000,14.195000,14.350000,14.350000,595500 400 | 2019-11-08,14.240000,14.630000,14.070000,14.620000,14.620000,639400 401 | 2019-11-11,14.500000,14.750000,14.370000,14.670000,14.670000,531600 402 | 2019-11-12,14.720000,15.160000,14.680000,14.770000,14.770000,727300 403 | 2019-11-13,14.730000,14.810000,14.490000,14.790000,14.790000,706400 404 | 2019-11-14,14.750000,14.970000,14.610000,14.660000,14.660000,464700 405 | 2019-11-15,14.700000,15.220000,14.700000,15.200000,15.200000,876000 406 | 2019-11-18,15.200000,15.200000,14.810000,14.900000,14.900000,711300 407 | 2019-11-19,14.950000,15.420000,14.950000,15.160000,15.160000,739100 408 | 2019-11-20,15.170000,15.670000,15.140000,15.500000,15.500000,1164900 409 | 2019-11-21,15.510000,15.750000,15.320000,15.560000,15.560000,782500 410 | 2019-11-22,15.670000,15.800000,15.340000,15.450000,15.450000,722900 411 | 2019-11-25,15.540000,15.980000,15.540000,15.720000,15.720000,663400 412 | 2019-11-26,15.730000,16.170000,15.720000,15.810000,15.810000,991600 413 | 2019-11-27,15.930000,16.000000,15.770000,15.840000,15.840000,519600 414 | 2019-11-29,15.800000,16.129999,15.700000,15.940000,15.940000,324600 415 | 2019-12-02,15.950000,15.980000,15.000000,15.040000,15.040000,987400 416 | 2019-12-03,14.620000,15.480000,14.580000,15.360000,15.360000,892600 417 | 2019-12-04,15.480000,15.700000,15.110000,15.520000,15.520000,755200 418 | 2019-12-05,15.480000,15.515000,14.995000,15.100000,15.100000,1194600 419 | 2019-12-06,15.250000,15.781000,14.720000,14.900000,14.900000,2299400 420 | 2019-12-09,15.030000,15.660000,14.940000,15.460000,15.460000,1100700 421 | 2019-12-10,15.300000,15.330000,14.410000,14.490000,14.490000,1905600 422 | 2019-12-11,14.470000,14.500000,14.000000,14.210000,14.210000,1768800 423 | 2019-12-12,14.170000,14.380000,14.000000,14.160000,14.160000,1477000 424 | 2019-12-13,14.070000,14.550000,13.900000,14.180000,14.180000,1118200 425 | 2019-12-16,14.290000,14.460000,14.110000,14.200000,14.200000,899600 426 | 2019-12-17,14.210000,14.430000,14.130000,14.290000,14.290000,1065300 427 | 2019-12-18,14.350000,14.660000,14.240000,14.620000,14.620000,1077200 428 | 2019-12-19,14.600000,14.630000,14.260000,14.350000,14.350000,868200 429 | 2019-12-20,14.390000,14.450000,14.130000,14.380000,14.380000,1914600 430 | 2019-12-23,14.370000,14.690000,14.250000,14.520000,14.520000,973900 431 | 2019-12-24,14.550000,14.559000,14.295000,14.340000,14.340000,461600 432 | 2019-12-26,14.300000,14.450000,14.220000,14.370000,14.370000,741100 433 | 2019-12-27,14.400000,14.400000,14.150000,14.210000,14.210000,914600 434 | 2019-12-30,14.100000,14.200000,13.680000,14.140000,14.140000,1739500 435 | 2019-12-31,14.050000,14.340000,14.050000,14.330000,14.330000,1130200 436 | 2020-01-02,14.190000,14.850000,14.160000,14.760000,14.760000,1792600 437 | 2020-01-03,14.560000,15.100000,14.500000,14.770000,14.770000,1104300 438 | 2020-01-06,14.660000,14.730000,14.310000,14.670000,14.670000,2004800 439 | 2020-01-07,14.740000,14.830000,14.510000,14.690000,14.690000,945600 440 | 2020-01-08,14.670000,14.820000,14.610000,14.660000,14.660000,666500 441 | 2020-01-09,14.840000,15.040000,14.710000,14.880000,14.880000,1037400 442 | 2020-01-10,14.880000,15.080000,14.760000,15.030000,15.030000,1119900 443 | 2020-01-13,15.100000,15.565000,14.930000,15.450000,15.450000,1581300 444 | 2020-01-14,15.500000,15.600000,15.210000,15.340000,15.340000,943900 445 | 2020-01-15,15.550000,15.900000,15.460000,15.500000,15.500000,1135600 446 | 2020-01-16,15.800000,15.960000,15.560000,15.660000,15.660000,840000 447 | 2020-01-17,15.750000,15.750000,15.255000,15.350000,15.350000,786600 448 | 2020-01-21,15.340000,15.394000,15.055000,15.180000,15.180000,755300 449 | 2020-01-22,15.270000,15.500000,15.270000,15.390000,15.390000,733800 450 | 2020-01-23,15.400000,15.950000,15.260000,15.780000,15.780000,1685000 451 | 2020-01-24,15.880000,16.030001,15.280000,15.450000,15.450000,830700 452 | 2020-01-27,15.000000,15.260000,14.918000,15.010000,15.010000,851100 453 | 2020-01-28,15.150000,15.190000,14.760000,15.060000,15.060000,1232400 454 | 2020-01-29,15.130000,15.230000,14.750000,14.850000,14.850000,892800 455 | 2020-01-30,14.740000,15.020000,14.740000,15.000000,15.000000,535900 456 | 2020-01-31,14.830000,14.940000,14.600000,14.750000,14.750000,805100 457 | 2020-02-03,14.760000,15.480000,14.760000,15.320000,15.320000,1212200 458 | 2020-02-04,15.540000,16.400000,15.540000,15.940000,15.940000,1857200 459 | 2020-02-05,16.160000,16.160000,15.300000,15.690000,15.690000,886900 460 | 2020-02-06,15.730000,16.080000,15.600000,15.840000,15.840000,921200 461 | 2020-02-07,15.750000,15.840000,15.460000,15.710000,15.710000,660000 462 | 2020-02-10,15.600000,15.870000,15.570000,15.840000,15.840000,522500 463 | 2020-02-11,15.930000,15.960000,15.510000,15.560000,15.560000,676400 464 | 2020-02-12,15.710000,15.880000,15.500000,15.820000,15.820000,957700 465 | 2020-02-13,15.720000,16.118999,15.720000,15.870000,15.870000,599400 466 | 2020-02-14,15.870000,16.129999,15.860000,15.970000,15.970000,547500 467 | 2020-02-18,15.860000,16.160000,15.570000,16.150000,16.150000,711500 468 | 2020-02-19,16.240000,16.500000,16.010000,16.070000,16.070000,1267500 469 | 2020-02-20,16.010000,16.389999,15.750000,16.080000,16.080000,698300 470 | 2020-02-21,16.010000,16.010000,15.400000,15.630000,15.630000,1102000 471 | 2020-02-24,14.950000,15.400000,14.707000,14.990000,14.990000,1545300 472 | 2020-02-25,15.020000,15.095000,13.940000,14.050000,14.050000,1616000 473 | 2020-02-26,14.130000,14.290000,13.500000,13.760000,13.760000,2182900 474 | 2020-02-27,13.250000,13.660000,12.870000,13.150000,13.150000,1740800 475 | 2020-02-28,12.630000,13.240000,12.310000,13.240000,13.240000,1759900 476 | 2020-03-02,13.330000,13.450000,12.450000,12.980000,12.980000,2210200 477 | 2020-03-03,12.990000,13.100000,12.210000,12.320000,12.320000,981300 478 | 2020-03-04,12.550000,12.680000,12.250000,12.520000,12.520000,913100 479 | 2020-03-05,12.230000,12.480000,11.730000,12.050000,12.050000,1202900 480 | 2020-03-06,11.670000,11.890000,11.200000,11.490000,11.490000,1414300 481 | 2020-03-09,10.420000,11.140000,10.290000,10.310000,10.310000,1322100 482 | 2020-03-10,10.730000,11.050000,10.205000,11.030000,11.030000,1736200 483 | 2020-03-11,10.660000,10.850000,9.820000,9.960000,9.960000,1170800 484 | 2020-03-12,9.240000,9.450000,8.500000,8.590000,8.590000,2202900 485 | 2020-03-13,7.080000,7.800000,6.210000,7.690000,7.690000,6335700 486 | 2020-03-16,6.670000,7.650000,6.530000,7.190000,7.190000,5716300 487 | 2020-03-17,7.460000,7.905000,7.300000,7.890000,7.890000,3626600 488 | 2020-03-18,7.390000,9.000000,7.360000,8.720000,8.720000,2637700 489 | 2020-03-19,8.740000,9.410000,8.220000,8.400000,8.400000,2380500 490 | 2020-03-20,8.580000,8.780000,7.970000,8.100000,8.100000,2508100 491 | 2020-03-23,8.110000,8.340000,7.690000,8.010000,8.010000,2442700 492 | 2020-03-24,8.390000,8.690000,8.110000,8.500000,8.500000,1755400 493 | 2020-03-25,8.510000,9.250000,8.300000,8.450000,8.450000,2651200 494 | 2020-03-26,8.560000,9.150000,8.380000,9.020000,9.020000,2144100 495 | 2020-03-27,8.750000,8.850000,7.950000,8.090000,8.090000,2255600 496 | 2020-03-30,8.070000,8.450000,8.000000,8.430000,8.430000,1353300 497 | 2020-03-31,8.370000,8.650000,8.010000,8.050000,8.050000,1769900 498 | 2020-04-01,7.750000,8.190000,7.700000,7.820000,7.820000,1433100 499 | 2020-04-02,7.190000,8.280000,7.190000,8.250000,8.250000,2522700 500 | 2020-04-03,8.070000,8.400000,7.975000,8.230000,8.230000,1216700 501 | 2020-04-06,8.500000,8.870000,8.320000,8.780000,8.780000,1461500 502 | 2020-04-07,8.900000,9.050000,8.390000,8.450000,8.450000,1878600 503 | 2020-04-08,8.540000,8.885000,8.350000,8.740000,8.740000,1683800 504 | 2020-04-09,8.880000,9.260000,8.770000,9.120000,9.120000,1959100 505 | 2020-04-13,9.170000,9.560000,9.000000,9.470000,9.470000,1565600 506 | 2020-04-14,9.340000,9.800000,9.220000,9.620000,9.620000,1833600 507 | 2020-04-15,9.360000,10.160000,9.245000,9.750000,9.750000,2336700 508 | 2020-04-16,9.930000,10.605000,9.430000,10.380000,10.380000,3314400 509 | 2020-04-17,10.580000,10.690000,9.850000,9.850000,9.850000,1391500 510 | 2020-04-20,9.750000,10.240000,9.650000,9.850000,9.850000,898100 511 | 2020-04-21,9.790000,9.890000,8.960000,9.260000,9.260000,1150300 512 | 2020-04-22,9.480000,9.590000,9.080000,9.450000,9.450000,1046300 513 | 2020-04-23,9.450000,9.930000,9.340000,9.570000,9.570000,968600 514 | 2020-04-24,9.630000,9.720000,9.380000,9.660000,9.660000,1739200 515 | 2020-04-27,9.780000,10.490000,9.780000,10.370000,10.370000,2157000 516 | 2020-04-28,10.950000,11.090000,10.120000,10.430000,10.430000,1228400 517 | 2020-04-29,10.610000,10.980000,10.500000,10.890000,10.890000,1204400 518 | 2020-04-30,10.750000,10.960000,10.510000,10.570000,10.570000,1564300 519 | 2020-05-01,10.300000,10.330000,9.960000,10.230000,10.230000,832400 520 | 2020-05-04,10.120000,10.480000,9.930000,10.210000,10.210000,1544300 521 | 2020-05-05,10.400000,10.570000,9.960000,10.030000,10.030000,1574800 522 | 2020-05-06,10.070000,10.580000,10.070000,10.460000,10.460000,1028600 523 | 2020-05-07,10.650000,11.000000,10.590000,10.990000,10.990000,1707200 524 | 2020-05-08,11.000000,11.440000,10.710000,11.260000,11.260000,1154400 525 | 2020-05-11,11.200000,11.840000,11.000000,11.530000,11.530000,1385400 526 | 2020-05-12,12.000000,12.390000,11.460000,11.490000,11.490000,1685400 527 | 2020-05-13,11.500000,11.670000,10.640000,10.820000,10.820000,1369400 528 | 2020-05-14,10.000000,10.500000,9.900000,10.300000,10.300000,1671600 529 | 2020-05-15,10.290000,10.840000,10.190000,10.580000,10.580000,1766500 530 | 2020-05-18,10.920000,11.160000,10.660000,10.850000,10.850000,1313900 531 | 2020-05-19,10.940000,11.180000,10.740000,10.870000,10.870000,857900 532 | 2020-05-20,11.150000,11.530000,11.000000,11.380000,11.380000,1421200 533 | 2020-05-21,11.310000,11.530000,11.120000,11.350000,11.350000,822300 534 | 2020-05-22,11.540000,12.100000,11.400000,12.060000,12.060000,1247600 535 | 2020-05-26,12.500000,12.580000,11.790000,11.870000,11.870000,1217700 536 | 2020-05-27,12.000000,12.108000,10.930000,11.660000,11.660000,1455100 537 | 2020-05-28,11.610000,11.910000,11.120000,11.240000,11.240000,1385300 538 | 2020-05-29,11.220000,12.060000,11.220000,12.010000,12.010000,1468000 539 | 2020-06-01,11.950000,12.500000,11.850000,12.260000,12.260000,1758000 540 | 2020-06-02,12.400000,12.400000,11.760000,12.030000,12.030000,984900 541 | 2020-06-03,12.400000,12.650000,12.060000,12.590000,12.590000,3654200 542 | 2020-06-04,15.110000,15.110000,12.500000,12.680000,12.680000,11737300 543 | 2020-06-05,12.830000,13.570000,12.520000,12.750000,12.750000,2699400 544 | 2020-06-08,12.850000,12.900000,12.030000,12.250000,12.250000,2554600 545 | 2020-06-09,12.200000,12.590000,12.140000,12.420000,12.420000,1542000 546 | 2020-06-10,12.510000,13.450000,12.500000,12.800000,12.800000,2880600 547 | 2020-06-11,12.330000,12.800000,11.725000,11.790000,11.790000,2145200 548 | 2020-06-12,12.140000,12.640000,12.110000,12.420000,12.420000,2518700 549 | 2020-06-15,12.680000,13.500000,12.540000,13.500000,13.500000,4995500 550 | 2020-06-16,14.000000,14.040000,12.610000,13.320000,13.320000,4203600 551 | 2020-06-17,13.370000,13.515000,13.200000,13.420000,13.420000,2144500 552 | 2020-06-18,13.390000,13.550000,13.220000,13.520000,13.520000,1639600 553 | 2020-06-19,13.600000,13.600000,13.000000,13.010000,13.010000,3572100 554 | 2020-06-22,13.070000,13.523000,13.020000,13.510000,13.510000,1718800 555 | 2020-06-23,13.640000,13.640000,13.290000,13.340000,13.340000,1722300 556 | 2020-06-24,13.170000,13.290000,12.700000,12.790000,12.790000,1632100 557 | 2020-06-25,12.740000,13.150000,12.567000,13.130000,13.130000,1190600 558 | 2020-06-26,13.190000,13.210000,12.670000,12.970000,12.970000,3107400 559 | 2020-06-29,13.050000,13.130000,12.340000,12.540000,12.540000,1690900 560 | 2020-06-30,12.540000,12.790000,12.440000,12.750000,12.750000,1083600 561 | 2020-07-01,12.170000,13.040000,12.050000,12.910000,12.910000,2303400 562 | 2020-07-02,13.110000,13.200000,12.780000,12.840000,12.840000,882400 563 | 2020-07-06,12.850000,13.280000,12.600000,12.730000,12.730000,1337700 564 | 2020-07-07,12.680000,12.990000,12.570000,12.630000,12.630000,1108300 565 | 2020-07-08,12.750000,12.845000,12.409000,12.680000,12.680000,1452500 566 | 2020-07-09,12.780000,12.940000,12.610000,12.840000,12.840000,1298000 567 | 2020-07-10,12.800000,12.800000,12.390000,12.430000,12.430000,992600 568 | 2020-07-13,12.500000,12.530000,11.630000,11.660000,11.660000,1690100 569 | 2020-07-14,11.530000,11.660000,11.055000,11.650000,11.650000,1268300 570 | 2020-07-15,11.800000,12.110000,11.790000,12.040000,12.040000,1190700 571 | 2020-07-16,11.880000,11.990000,11.565000,11.810000,11.810000,1022100 572 | 2020-07-17,11.790000,11.930000,11.625000,11.810000,11.810000,864000 573 | 2020-07-20,11.810000,12.270000,11.730000,12.150000,12.150000,1106900 574 | 2020-07-21,12.410000,12.410000,11.860000,11.920000,11.920000,841000 575 | 2020-07-22,11.920000,12.100000,11.730000,11.880000,11.880000,661300 576 | 2020-07-23,11.850000,12.050000,11.670000,11.870000,11.870000,1164600 577 | 2020-07-24,11.770000,11.829000,11.360000,11.520000,11.520000,726900 578 | 2020-07-27,11.560000,11.780000,11.480000,11.740000,11.740000,497300 579 | 2020-07-28,11.670000,11.708000,11.370000,11.380000,11.380000,620600 580 | 2020-07-29,11.410000,11.593000,11.350000,11.560000,11.560000,704800 581 | 2020-07-30,11.400000,11.465000,11.065000,11.370000,11.370000,802300 582 | 2020-07-31,11.530000,11.655000,11.150000,11.640000,11.640000,907300 583 | 2020-08-03,11.670000,11.969000,11.550000,11.820000,11.820000,955600 584 | 2020-08-04,11.710000,11.910000,11.510000,11.870000,11.870000,694700 585 | 2020-08-05,11.960000,12.470000,11.940000,12.440000,12.440000,1569300 586 | 2020-08-06,12.480000,12.590000,11.990000,12.140000,12.140000,733400 587 | 2020-08-07,12.050000,12.150000,11.380000,11.730000,11.730000,939900 588 | 2020-08-10,11.710000,11.788000,11.280000,11.550000,11.550000,1027000 589 | 2020-08-11,11.610000,11.700000,11.405000,11.430000,11.430000,959200 590 | 2020-08-12,11.560000,11.815000,11.440000,11.660000,11.660000,776200 591 | 2020-08-13,11.690000,12.120000,11.690000,11.840000,11.840000,809900 592 | 2020-08-14,11.830000,12.120000,11.760000,11.860000,11.860000,712800 593 | 2020-08-17,11.910000,11.970000,11.470000,11.630000,11.630000,986200 594 | 2020-08-18,11.750000,11.970000,11.710000,11.860000,11.860000,660500 595 | 2020-08-19,11.900000,11.980000,11.600000,11.770000,11.770000,761700 596 | 2020-08-20,11.700000,12.015000,11.600000,11.880000,11.880000,929000 597 | 2020-08-21,11.750000,11.940000,11.430000,11.590000,11.590000,2222600 598 | 2020-08-24,11.740000,11.740000,11.360000,11.520000,11.520000,1129700 599 | 2020-08-25,11.520000,11.770000,11.370000,11.760000,11.760000,954800 600 | 2020-08-26,11.870000,13.190000,11.870000,13.090000,13.090000,3345300 -------------------------------------------------------------------------------- /1. Parsing CSV/ZUO_out.csv: -------------------------------------------------------------------------------- 1 | Date,Open,High,Low,Close,Adj Close,Volume,Ratio 2 | 2018-04-12,20.000000,21.850000,19.120001,20.0,20.000000,13102400,-/- 3 | 2018-04-13,19.799999,20.820000,19.600000,20.6,20.600000,1864700,-/- 4 | 2018-04-16,20.879999,20.879999,19.900000,20.6,20.600000,907900,1.0 5 | 2018-04-17,20.549999,20.660000,19.000000,19.549999,19.549999,1152500,-/- 6 | 2018-04-18,19.610001,20.420000,19.073999,19.559999,19.559999,885800,-/- 7 | 2018-04-19,19.570000,19.719999,19.211000,19.65,19.650000,463400,0.95388 8 | 2018-04-20,19.549999,19.730000,19.450001,19.719999,19.719999,300100,1.0087 9 | 2018-04-23,19.830000,20.100000,19.618000,20.0,20.000000,341700,1.0142 10 | 2018-04-24,20.120001,20.120001,19.410000,19.700001,19.700001,308500,-/- 11 | 2018-04-25,19.719999,19.730000,19.400000,19.610001,19.610001,272800,-/- 12 | 2018-04-26,19.680000,20.280001,19.601999,20.280001,20.280001,218800,1.014 13 | 2018-04-27,19.870001,20.219999,19.549999,19.610001,19.610001,573900,0.99543 14 | 2018-04-30,19.549999,19.879999,19.200001,19.26,19.260000,211800,0.98215 15 | 2018-05-01,19.370001,19.891001,19.280001,19.67,19.670000,149700,-/- 16 | 2018-05-02,19.920000,20.190001,19.500000,19.59,19.590000,220000,-/- 17 | 2018-05-03,19.590000,20.020000,19.200001,19.66,19.660000,283000,1.02077 18 | 2018-05-04,19.870001,19.980000,19.379000,19.549999,19.549999,145600,0.9939 19 | 2018-05-07,19.389999,19.469999,18.750000,19.25,19.250000,417100,0.98465 20 | 2018-05-08,19.280001,19.660000,19.110001,19.51,19.510000,167900,-/- 21 | 2018-05-09,19.480000,19.900000,19.330000,19.790001,19.790001,123400,-/- 22 | 2018-05-10,19.799999,20.180000,19.420000,20.040001,20.040001,169500,1.04104 23 | 2018-05-11,20.080000,20.350000,19.510000,20.16,20.160000,264400,1.03332 24 | 2018-05-14,20.299999,20.350000,19.750000,19.889999,19.889999,160000,0.98661 25 | 2018-05-15,19.809999,19.844999,19.170000,19.219999,19.219999,193000,-/- 26 | 2018-05-16,19.230000,19.709999,19.200001,19.360001,19.360001,108000,-/- 27 | 2018-05-17,19.299999,19.750000,19.299999,19.690001,19.690001,68500,0.98994 28 | 2018-05-18,19.660000,20.020000,19.650000,19.67,19.670000,99100,1.02341 29 | 2018-05-21,19.639999,19.739000,19.329000,19.629999,19.629999,153800,0.99797 30 | 2018-05-22,19.660000,19.770000,19.660000,19.73,19.730000,131200,-/- 31 | 2018-05-23,19.600000,20.299000,19.580000,20.01,20.010000,301700,-/- 32 | 2018-05-24,20.000000,21.240000,19.650000,21.01,21.010000,309000,1.0703 33 | 2018-05-25,20.969999,22.188999,20.969999,21.4,21.400000,410000,1.08464 34 | 2018-05-29,21.400000,21.510000,20.000000,20.67,20.670000,329600,-/- 35 | 2018-05-30,20.900000,22.010000,20.670000,21.940001,21.940001,316300,-/- 36 | 2018-05-31,21.840000,22.959999,21.670000,22.18,22.180000,429800,-/- 37 | 2018-06-01,23.120001,27.500000,22.219999,26.4,26.400000,2136900,1.27721 38 | 2018-06-04,29.160000,29.879999,27.299999,28.02,28.020000,1969200,1.06136 39 | 2018-06-05,28.709999,29.930000,28.170000,28.540001,28.540001,1187800,-/- 40 | 2018-06-06,28.900000,31.000000,28.680000,30.200001,30.200001,1076100,-/- 41 | 2018-06-07,30.740000,30.777000,27.150000,27.799999,27.799999,1050500,0.99215 42 | 2018-06-08,28.040001,29.570000,28.010000,29.23,29.230000,535300,1.02418 43 | 2018-06-11,29.469999,32.549999,29.280001,31.530001,31.530001,1168400,1.07869 44 | 2018-06-12,32.290001,33.080002,28.969999,29.0,29.000000,1369100,-/- 45 | 2018-06-13,29.750000,30.150000,29.100000,29.74,29.740000,1000600,-/- 46 | 2018-06-14,30.750000,32.970001,30.580000,31.34,31.340000,1525400,0.99397 47 | 2018-06-15,31.549999,36.000000,31.250000,34.630001,34.630001,4141900,1.19414 48 | 2018-06-18,35.060001,37.779999,34.110001,37.09,37.090000,3329400,1.07104 49 | 2018-06-19,36.060001,37.689999,32.660000,33.509998,33.509998,2736700,-/- 50 | 2018-06-20,35.840000,35.869999,32.000000,32.009998,32.009998,1720900,-/- 51 | 2018-06-21,31.959999,32.049999,28.879999,29.190001,29.190001,2759400,0.787 52 | 2018-06-22,29.639999,29.910000,26.600000,27.639999,27.639999,2570700,0.82483 53 | 2018-06-25,26.670000,29.000000,26.280001,28.68,28.680000,1873900,1.03763 54 | 2018-06-26,29.000000,30.100000,27.090000,27.469999,27.469999,1553800,-/- 55 | 2018-06-27,27.600000,28.490000,26.459999,26.959999,26.959999,1651400,-/- 56 | 2018-06-28,26.760000,28.480000,26.660000,28.33,28.330000,1099800,0.9878 57 | 2018-06-29,28.690001,30.680000,27.190001,27.200001,27.200001,1842200,0.99017 58 | 2018-07-02,27.540001,28.680000,27.180000,28.49,28.490000,1552700,1.04743 59 | 2018-07-03,28.400000,28.825001,27.650000,28.32,28.320000,649700,-/- 60 | 2018-07-05,28.370001,28.990000,26.680000,26.74,26.740000,1516800,0.93857 61 | 2018-07-06,27.080000,27.690001,25.820000,26.309999,26.309999,1219100,0.92903 62 | 2018-07-09,26.709999,27.000000,25.610001,26.07,26.070000,1331400,0.99088 63 | 2018-07-10,26.410000,26.500000,24.549999,24.780001,24.780001,2243900,-/- 64 | 2018-07-11,24.299999,25.049999,24.120001,24.26,24.260000,1628100,-/- 65 | 2018-07-12,24.510000,26.700001,24.150000,25.889999,25.889999,1934400,0.9931 66 | 2018-07-13,25.790001,25.940001,23.870001,25.690001,25.690001,1487000,1.03672 67 | 2018-07-16,25.230000,25.480000,24.250000,24.41,24.410000,1051200,0.95018 68 | 2018-07-17,24.299999,26.870001,24.290001,26.58,26.580000,1740600,-/- 69 | 2018-07-18,26.850000,27.990000,26.120001,27.18,27.180000,1658400,-/- 70 | 2018-07-19,27.090000,27.660000,25.500000,25.809999,25.809999,1400000,1.05735 71 | 2018-07-20,26.000000,26.469999,25.219999,25.27,25.270000,929900,0.95071 72 | 2018-07-23,25.219999,26.639999,24.620001,26.540001,26.540001,905700,1.05026 73 | 2018-07-24,26.799999,27.441000,25.010000,25.25,25.250000,1086500,-/- 74 | 2018-07-25,25.450001,26.450001,25.410000,26.309999,26.309999,752400,-/- 75 | 2018-07-26,25.740000,26.740000,25.430000,26.030001,26.030001,431500,0.98078 76 | 2018-07-27,26.180000,26.549999,24.660000,25.120001,25.120001,1027200,0.99485 77 | 2018-07-30,25.120001,25.379999,22.879999,22.93,22.930000,1369100,0.91282 78 | 2018-07-31,23.500000,25.200001,22.500000,24.530001,24.530001,1920200,-/- 79 | 2018-08-01,24.180000,25.138000,23.770000,24.58,24.580000,848800,-/- 80 | 2018-08-02,24.370001,26.000000,24.000000,25.83,25.830000,1118100,1.12647 81 | 2018-08-03,26.530001,26.559999,25.000000,25.18,25.180000,955300,1.0265 82 | 2018-08-06,25.280001,28.230000,25.260000,28.0,28.000000,1398100,1.11199 83 | 2018-08-07,28.840000,29.340000,27.000000,27.4,27.400000,1033000,-/- 84 | 2018-08-08,27.559999,27.945999,26.110001,26.73,26.730000,484200,-/- 85 | 2018-08-09,27.290001,28.990000,27.059999,28.200001,28.200001,1388000,1.00714 86 | 2018-08-10,28.000000,29.950001,27.660000,28.43,28.430000,1274000,1.03759 87 | 2018-08-13,28.809999,29.930000,28.750000,29.379999,29.379999,1236200,1.03342 88 | 2018-08-14,29.750000,30.879999,28.600000,30.57,30.570000,1625600,-/- 89 | 2018-08-15,29.840000,30.750000,29.000000,30.0,30.000000,920800,-/- 90 | 2018-08-16,30.500000,30.549999,29.730000,30.34,30.340000,978500,1.03268 91 | 2018-08-17,29.709999,30.290001,28.830000,29.15,29.150000,1352800,0.95355 92 | 2018-08-20,29.900000,29.990000,28.055000,28.299999,28.299999,971000,0.97084 93 | 2018-08-21,28.280001,29.330000,28.231001,28.799999,28.799999,979800,-/- 94 | 2018-08-22,28.389999,30.000000,28.337000,29.719999,29.719999,761900,-/- 95 | 2018-08-23,29.870001,30.850000,29.170000,30.17,30.170000,1047100,1.06608 96 | 2018-08-24,30.379999,33.480000,30.322001,33.380001,33.380001,1821700,1.15903 97 | 2018-08-27,35.310001,35.650002,33.720001,35.099998,35.099998,2239600,1.05153 98 | 2018-08-28,35.450001,35.682999,32.220001,32.34,32.340000,2711300,-/- 99 | 2018-08-29,33.367001,33.750000,31.344999,33.400002,33.400002,1726800,-/- 100 | 2018-08-30,33.419998,34.750000,32.014999,34.009998,34.009998,2454500,0.96895 101 | 2018-08-31,29.129999,29.200001,27.530001,27.58,27.580000,8608400,0.85281 102 | 2018-09-04,27.700001,28.389999,26.211000,27.860001,27.860001,3298500,-/- 103 | 2018-09-05,27.049999,27.150000,25.200001,25.84,25.840000,4166600,-/- 104 | 2018-09-06,26.040001,26.100000,24.530001,25.040001,25.040001,2424200,-/- 105 | 2018-09-07,25.000000,26.230000,24.080000,25.530001,25.530001,2054600,0.91637 106 | 2018-09-10,25.500000,25.639999,24.240000,24.67,24.670000,1551800,0.96631 107 | 2018-09-11,24.780001,26.020000,24.500000,25.51,25.510000,1191200,-/- 108 | 2018-09-12,25.840000,26.209999,25.065001,26.01,26.010000,1306300,-/- 109 | 2018-09-13,26.290001,26.430000,25.320000,25.58,25.580000,1659200,1.03689 110 | 2018-09-14,25.580000,25.809999,24.500000,24.629999,24.629999,1379700,0.9655 111 | 2018-09-17,24.350000,24.950001,23.799999,24.110001,24.110001,972600,0.97889 112 | 2018-09-18,24.290001,24.480000,23.100000,23.309999,23.309999,1749300,-/- 113 | 2018-09-19,23.350000,23.420000,22.260000,22.91,22.910000,2018300,-/- 114 | 2018-09-20,22.770000,23.450001,21.799999,22.99,22.990000,3060500,0.95355 115 | 2018-09-21,23.389999,24.000000,22.590000,23.360001,23.360001,1880700,1.00215 116 | 2018-09-24,23.190001,23.469999,22.820000,22.93,22.930000,975600,0.98159 117 | 2018-09-25,22.730000,23.250000,22.200001,22.26,22.260000,1748100,-/- 118 | 2018-09-26,22.299999,22.700001,22.020000,22.43,22.430000,1618600,-/- 119 | 2018-09-27,22.500000,23.049999,22.370001,22.889999,22.889999,1146000,0.99826 120 | 2018-09-28,22.790001,23.400000,22.170000,23.110001,23.110001,1366600,1.03819 121 | 2018-10-01,23.070000,23.110001,21.410000,21.469999,21.469999,3167000,0.92903 122 | 2018-10-02,21.580000,21.860001,20.410000,21.110001,21.110001,1719700,-/- 123 | 2018-10-03,20.709999,21.430000,20.420000,21.1,21.100000,2058000,-/- 124 | 2018-10-04,20.889999,21.499001,20.520000,21.32,21.320000,1627900,0.99301 125 | 2018-10-05,21.260000,21.480000,20.690001,21.16,21.160000,1474200,1.00237 126 | 2018-10-08,20.889999,21.240000,19.770000,19.940001,19.940001,2119400,0.94234 127 | 2018-10-09,19.500000,20.100000,18.969999,19.65,19.650000,4978200,-/- 128 | 2018-10-10,19.280001,20.110001,18.150000,18.51,18.510000,2509600,-/- 129 | 2018-10-11,18.500000,18.920000,17.719999,17.83,17.830000,2634100,0.89418 130 | 2018-10-12,19.209999,19.209999,17.959999,18.1,18.100000,2350300,0.92112 131 | 2018-10-15,18.030001,20.299999,17.730000,19.790001,19.790001,3176800,1.09337 132 | 2018-10-16,20.450001,21.100000,19.809999,20.91,20.910000,2125200,-/- 133 | 2018-10-17,21.070000,21.250000,20.000999,20.83,20.830000,1252100,-/- 134 | 2018-10-18,20.719999,21.309999,20.257000,20.9,20.900000,1174300,1.05609 135 | 2018-10-19,21.084999,21.290001,19.780001,20.0,20.000000,1828700,0.95648 136 | 2018-10-22,20.110001,20.209999,19.209999,19.4,19.400000,1180900,0.97 137 | 2018-10-23,18.870001,19.790001,18.580000,19.49,19.490000,859500,-/- 138 | 2018-10-24,19.450001,19.690001,17.870001,17.91,17.910000,1173600,-/- 139 | 2018-10-25,18.120001,19.620001,17.870001,19.32,19.320000,1395600,0.99588 140 | 2018-10-26,18.510000,19.490000,18.451000,19.030001,19.030001,1063600,0.9764 141 | 2018-10-29,19.549999,19.940001,18.180000,18.459999,18.459999,1141600,0.97005 142 | 2018-10-30,18.490000,19.350000,18.400000,19.35,19.350000,1110400,-/- 143 | 2018-10-31,19.709999,20.510000,19.500999,20.42,20.420000,1718100,-/- 144 | 2018-11-01,20.520000,20.900000,20.010000,20.6,20.600000,1264700,1.11593 145 | 2018-11-02,20.799999,21.275000,20.490000,20.780001,20.780001,1342100,1.0739 146 | 2018-11-05,20.940001,21.025000,20.239000,20.709999,20.709999,600700,0.99663 147 | 2018-11-06,20.870001,21.190001,20.500000,20.799999,20.799999,786400,-/- 148 | 2018-11-07,21.240000,21.510000,20.850000,21.49,21.490000,1770100,-/- 149 | 2018-11-08,21.500000,22.020000,21.100000,21.85,21.850000,1211200,1.05505 150 | 2018-11-09,21.440001,21.700001,20.379999,20.969999,20.969999,1010600,1.00817 151 | 2018-11-12,20.930000,21.100000,20.000000,20.33,20.330000,796000,0.96948 152 | 2018-11-13,20.480000,21.100000,20.219999,20.459999,20.459999,670800,-/- 153 | 2018-11-14,20.780001,21.000000,20.311001,20.450001,20.450001,855200,-/- 154 | 2018-11-15,20.370001,21.379999,20.260000,21.27,21.270000,819400,1.04624 155 | 2018-11-16,21.049999,21.510000,20.389999,20.73,20.730000,780600,1.0132 156 | 2018-11-19,20.730000,20.799999,17.709999,17.76,17.760000,2166200,0.85673 157 | 2018-11-20,16.520000,17.770000,16.000000,17.4,17.400000,2011800,-/- 158 | 2018-11-21,17.790001,18.000000,17.370001,17.66,17.660000,822600,-/- 159 | 2018-11-23,17.299999,18.299999,17.209000,17.93,17.930000,397700,1.03046 160 | 2018-11-26,18.200001,18.969999,18.044001,18.83,18.830000,849800,1.0502 161 | 2018-11-27,18.610001,19.240000,18.473000,18.75,18.750000,939000,-/- 162 | 2018-11-28,19.240000,20.180000,18.910000,20.0,20.000000,1575800,-/- 163 | 2018-11-29,20.240000,20.690001,19.709999,20.559999,20.559999,2824100,1.09187 164 | 2018-11-30,19.129999,20.500000,18.347000,19.030001,19.030001,3640600,1.01493 165 | 2018-12-03,20.200001,20.230000,18.809999,19.25,19.250000,1596200,1.01156 166 | 2018-12-04,18.910000,18.910000,18.000000,18.1,18.100000,2027600,-/- 167 | 2018-12-06,17.900000,18.530001,17.549999,18.530001,18.530001,1374700,0.9626 168 | 2018-12-07,18.430000,18.566999,17.809999,18.139999,18.139999,1022500,1.00221 169 | 2018-12-10,18.040001,18.620001,17.790001,18.049999,18.049999,1192800,0.99504 170 | 2018-12-11,18.590000,19.500000,17.900000,18.469999,18.469999,1885000,-/- 171 | 2018-12-12,18.580000,19.080000,18.580000,18.719999,18.719999,1912000,-/- 172 | 2018-12-13,18.900000,19.090000,18.000000,18.1,18.100000,1024600,1.00277 173 | 2018-12-14,17.870001,18.530001,17.650000,18.24,18.240000,1039200,0.98755 174 | 2018-12-17,17.870001,18.080000,16.100000,16.15,16.150000,2642200,0.88542 175 | 2018-12-18,16.570000,17.100000,16.400000,16.799999,16.799999,1970400,-/- 176 | 2018-12-19,16.770000,18.360001,16.709999,17.52,17.520000,2647500,-/- 177 | 2018-12-20,18.230000,18.440001,16.690001,17.040001,17.040001,1987600,1.05511 178 | 2018-12-21,17.059999,17.059999,15.880000,16.08,16.080000,2518300,0.95714 179 | 2018-12-24,15.670000,16.850000,15.560000,16.360001,16.360001,550000,1.01741 180 | 2018-12-26,16.680000,17.820000,16.370001,17.809999,17.809999,1092300,-/- 181 | 2018-12-27,17.309999,17.920000,16.620001,17.9,17.900000,1011200,1.09413 182 | 2018-12-28,17.940001,18.160000,17.410000,17.65,17.650000,1141000,-/- 183 | 2018-12-31,17.950001,18.150000,17.760000,18.139999,18.139999,1125500,1.02776 184 | 2019-01-02,17.700001,18.670000,17.650000,18.200001,18.200001,1039500,-/- 185 | 2019-01-03,17.860001,18.209999,17.270000,17.68,17.680000,766700,0.97464 186 | 2019-01-04,18.090000,18.660000,17.959999,18.549999,18.549999,1355300,-/- 187 | 2019-01-07,18.830000,19.850000,18.760000,19.49,19.490000,1602600,1.05067 188 | 2019-01-08,19.940001,19.940001,19.320000,19.74,19.740000,889700,-/- 189 | 2019-01-09,19.900000,20.000000,19.711000,19.879999,19.879999,1011200,-/- 190 | 2019-01-10,19.680000,20.110001,19.120001,19.93,19.930000,1870700,1.02258 191 | 2019-01-11,19.840000,19.990000,19.639999,19.969999,19.969999,591600,1.01165 192 | 2019-01-14,19.900000,19.950001,19.500000,19.77,19.770000,651600,0.98999 193 | 2019-01-15,19.840000,20.500000,19.660000,20.48,20.480000,1278600,-/- 194 | 2019-01-16,20.250000,20.750000,19.860001,20.200001,20.200001,1442300,-/- 195 | 2019-01-17,20.150000,20.950001,20.047001,20.76,20.760000,1580600,1.05008 196 | 2019-01-18,20.950001,21.600000,20.900000,21.139999,21.139999,2241700,1.03223 197 | 2019-01-22,20.920000,21.549999,20.610001,21.34,21.340000,892500,-/- 198 | 2019-01-23,21.500000,21.639999,19.920000,20.43,20.430000,1029000,-/- 199 | 2019-01-24,20.350000,20.660000,19.820000,20.389999,20.389999,788000,-/- 200 | 2019-01-25,20.480000,21.480000,20.209999,21.360001,21.360001,1479300,1.00094 201 | 2019-01-28,21.049999,21.379999,20.850000,21.129999,21.129999,643100,0.98923 202 | 2019-01-29,21.139999,21.309999,20.860001,20.870001,20.870001,421300,-/- 203 | 2019-01-30,21.240000,21.480000,20.900000,21.34,21.340000,650100,-/- 204 | 2019-01-31,21.379999,22.445000,21.280001,21.639999,21.639999,1216800,1.02414 205 | 2019-02-01,21.230000,21.400000,20.500000,21.16,21.160000,1249600,1.0139 206 | 2019-02-04,20.980000,21.850000,20.980000,21.389999,21.389999,543000,1.01087 207 | 2019-02-05,21.500000,21.719999,21.020000,21.389999,21.389999,1307500,-/- 208 | 2019-02-06,21.389999,21.510000,20.290001,20.530001,20.530001,1143600,-/- 209 | 2019-02-07,20.389999,20.980000,19.799999,20.82,20.820000,1321200,0.97335 210 | 2019-02-08,20.600000,21.490000,20.583000,21.299999,21.299999,934000,0.99579 211 | 2019-02-11,21.459999,21.459999,20.080000,20.27,20.270000,1199400,0.95164 212 | 2019-02-12,20.540001,20.900000,20.400000,20.68,20.680000,663900,-/- 213 | 2019-02-13,20.830000,21.469999,20.820000,21.18,21.180000,1043300,-/- 214 | 2019-02-14,21.000000,22.844999,21.000000,22.51,22.510000,2648500,1.11051 215 | 2019-02-15,22.600000,23.020000,22.410000,22.5,22.500000,1324200,1.08801 216 | 2019-02-19,22.540001,23.500000,22.320000,23.219999,23.219999,1430000,-/- 217 | 2019-02-20,23.250000,23.700001,23.040001,23.18,23.180000,1624300,-/- 218 | 2019-02-21,23.139999,23.450001,22.389999,23.309999,23.309999,830400,-/- 219 | 2019-02-22,23.690001,24.070000,23.520000,23.969999,23.969999,1741100,1.0323 220 | 2019-02-25,24.280001,24.469999,23.650000,24.24,24.240000,1641300,1.01126 221 | 2019-02-26,24.280001,24.480000,23.510000,23.639999,23.639999,1185700,-/- 222 | 2019-02-27,23.660000,24.650000,23.270000,24.549999,24.549999,1259000,-/- 223 | 2019-02-28,24.440001,24.540001,23.750000,23.76,23.760000,916300,0.9802 224 | 2019-03-01,24.090000,24.200001,23.360001,23.41,23.410000,1813100,0.99027 225 | 2019-03-04,23.700001,23.719999,21.629999,22.809999,22.809999,1806400,0.97437 226 | 2019-03-05,22.709999,22.799999,22.040001,22.5,22.500000,2156000,-/- 227 | 2019-03-06,22.330000,23.299999,22.250000,22.4,22.400000,957400,-/- 228 | 2019-03-07,22.400000,23.600000,22.309999,22.98,22.980000,1130400,1.00745 229 | 2019-03-08,22.650000,23.450001,22.360001,23.040001,23.040001,1086800,1.024 230 | 2019-03-11,23.100000,24.170000,23.100000,23.549999,23.549999,1540600,1.02214 231 | 2019-03-12,23.650000,24.049999,23.400000,23.52,23.520000,1250600,-/- 232 | 2019-03-13,23.580000,24.219999,23.450001,23.629999,23.629999,1479700,-/- 233 | 2019-03-14,23.580000,24.000000,23.280001,23.5,23.500000,1010800,0.99788 234 | 2019-03-15,23.549999,23.850000,23.090000,23.41,23.410000,1293000,0.99532 235 | 2019-03-18,23.639999,23.740000,22.770000,23.059999,23.059999,1050600,0.98505 236 | 2019-03-19,24.000000,24.410000,23.309999,23.43,23.430000,2485600,-/- 237 | 2019-03-20,23.830000,24.230000,23.400000,23.74,23.740000,1830300,-/- 238 | 2019-03-21,23.820000,24.434000,23.680000,24.33,24.330000,5054500,1.05507 239 | 2019-03-22,22.280001,23.969999,20.280001,20.91,20.910000,10602400,0.89245 240 | 2019-03-25,20.750000,20.820000,19.510000,20.389999,20.389999,3656100,0.97513 241 | 2019-03-26,20.040001,20.250000,19.129999,19.48,19.480000,5074300,-/- 242 | 2019-03-27,19.230000,19.340000,18.129999,19.200001,19.200001,4557900,-/- 243 | 2019-03-28,19.219999,20.030001,18.870001,19.51,19.510000,2057200,0.95684 244 | 2019-03-29,19.760000,20.129999,19.379999,20.030001,20.030001,2547700,1.02823 245 | 2019-04-01,20.200001,20.299999,19.570000,19.68,19.680000,2698400,0.98253 246 | 2019-04-02,19.730000,20.309999,19.600000,20.25,20.250000,1878400,-/- 247 | 2019-04-03,20.400000,20.950001,20.219999,20.58,20.580000,2029100,-/- 248 | 2019-04-04,20.540001,20.870001,19.700001,20.139999,20.139999,2252300,1.02337 249 | 2019-04-05,20.120001,20.520000,20.059999,20.15,20.150000,1360200,0.99506 250 | 2019-04-08,20.129999,20.309999,19.740000,20.23,20.230000,907600,1.00397 251 | 2019-04-09,20.070000,20.270000,19.629999,19.68,19.680000,720300,-/- 252 | 2019-04-10,19.650000,20.139999,19.620001,19.790001,19.790001,852100,-/- 253 | 2019-04-11,19.870001,20.000000,19.670000,19.700001,19.700001,670200,0.9738 254 | 2019-04-12,19.760000,19.879000,19.180000,19.34,19.340000,1415700,0.98272 255 | 2019-04-15,19.250000,19.629999,19.049999,19.379999,19.379999,851900,1.00207 256 | 2019-04-16,19.370001,19.740000,18.850000,19.49,19.490000,1422000,-/- 257 | 2019-04-17,19.740000,19.799999,18.830000,19.549999,19.549999,1687800,-/- 258 | 2019-04-18,19.389999,19.639999,18.879999,19.219999,19.219999,1350500,0.99174 259 | 2019-04-22,19.070000,19.500000,18.950001,19.32,19.320000,883400,-/- 260 | 2019-04-23,19.400000,20.129999,19.322001,19.99,19.990000,1320400,-/- 261 | 2019-04-24,20.200001,20.400000,19.870001,20.049999,20.049999,1332000,-/- 262 | 2019-04-25,20.549999,21.850000,20.549999,21.26,21.260000,4727600,1.10041 263 | 2019-04-26,21.450001,21.950001,21.209999,21.35,21.350000,1950000,1.06803 264 | 2019-04-29,21.410000,22.370001,21.410000,22.110001,22.110001,2141900,1.0356 265 | 2019-04-30,22.010000,22.650000,21.940001,22.1,22.100000,1146300,-/- 266 | 2019-05-01,22.209999,22.268999,21.010000,21.379999,21.379999,1658900,-/- 267 | 2019-05-02,21.450001,21.770000,21.010000,21.360001,21.360001,1110400,0.96608 268 | 2019-05-03,21.540001,22.330000,21.400000,22.24,22.240000,1148900,1.00633 269 | 2019-05-06,21.780001,23.040001,21.360001,22.870001,22.870001,2885400,1.02833 270 | 2019-05-07,22.500000,22.980000,21.680000,22.1,22.100000,1616300,-/- 271 | 2019-05-08,22.100000,22.840000,22.030001,22.26,22.260000,1249700,-/- 272 | 2019-05-09,21.940001,22.805000,21.150000,22.450001,22.450001,1372700,0.98164 273 | 2019-05-10,22.219999,22.480000,21.379999,22.35,22.350000,1369900,1.01131 274 | 2019-05-13,21.820000,21.931000,20.990000,21.129999,21.129999,1135500,0.94541 275 | 2019-05-14,21.309999,21.930000,21.209999,21.809999,21.809999,1095300,-/- 276 | 2019-05-15,21.610001,22.450001,21.603001,22.24,22.240000,892100,-/- 277 | 2019-05-16,22.270000,23.000000,22.270000,22.559999,22.559999,1357800,1.06768 278 | 2019-05-17,22.340000,22.889999,22.059999,22.33,22.330000,777700,1.02384 279 | 2019-05-20,22.000000,22.230000,21.664000,22.059999,22.059999,953300,0.98791 280 | 2019-05-21,22.299999,22.790001,22.219999,22.59,22.590000,1599100,-/- 281 | 2019-05-22,22.530001,22.840000,22.290001,22.389999,22.389999,1036800,-/- 282 | 2019-05-23,22.100000,22.170000,20.320000,20.799999,20.799999,3787300,0.94288 283 | 2019-05-24,21.090000,21.370001,20.809999,21.35,21.350000,1172500,0.94511 284 | 2019-05-28,21.320000,22.010000,21.190001,21.370001,21.370001,2190100,-/- 285 | 2019-05-29,21.270000,21.309999,20.059999,20.35,20.350000,2474500,-/- 286 | 2019-05-30,20.540001,20.870001,19.732000,19.9,19.900000,3951000,-/- 287 | 2019-05-31,13.360000,14.240000,13.350000,13.99,13.990000,18995200,0.65466 288 | 2019-06-03,14.000000,14.020000,13.040000,13.26,13.260000,8121700,0.94782 289 | 2019-06-04,13.600000,14.440000,13.450000,14.3,14.300000,3076100,-/- 290 | 2019-06-05,14.550000,14.650000,13.960000,14.18,14.180000,2229900,-/- 291 | 2019-06-06,14.160000,14.720000,14.100000,14.57,14.570000,2180700,1.09879 292 | 2019-06-07,14.500000,14.980000,14.400000,14.56,14.560000,2069600,1.01818 293 | 2019-06-10,14.810000,15.470000,14.650000,14.76,14.760000,3202800,1.01374 294 | 2019-06-11,14.870000,14.916000,14.150000,14.17,14.170000,2441000,-/- 295 | 2019-06-12,14.020000,15.180000,14.000000,14.97,14.970000,3071100,-/- 296 | 2019-06-13,15.200000,15.290000,14.680000,14.94,14.940000,1242900,1.0122 297 | 2019-06-14,14.800000,14.850000,14.400000,14.73,14.730000,1297200,1.03952 298 | 2019-06-17,14.730000,15.640000,14.730000,15.5,15.500000,1852200,1.05227 299 | 2019-06-18,15.530000,16.000000,15.470000,15.66,15.660000,1432000,-/- 300 | 2019-06-19,15.660000,16.278999,15.630000,15.91,15.910000,1396900,-/- 301 | 2019-06-20,16.150000,16.299999,15.500000,15.71,15.710000,1536400,1.01355 302 | 2019-06-21,15.730000,16.000000,15.500000,15.91,15.910000,3802300,1.01596 303 | 2019-06-24,15.880000,15.940000,15.000000,15.12,15.120000,1745300,0.95035 304 | 2019-06-25,15.040000,15.095000,14.610000,14.89,14.890000,1663700,-/- 305 | 2019-06-26,15.000000,15.390000,14.600000,14.74,14.740000,1205700,-/- 306 | 2019-06-27,14.750000,15.230000,14.710000,15.03,15.030000,1262800,0.99405 307 | 2019-06-28,15.030000,15.390000,14.935000,15.32,15.320000,13166400,1.02888 308 | 2019-07-01,15.460000,15.885000,15.350000,15.46,15.460000,2005400,1.00914 309 | 2019-07-02,15.470000,15.895000,15.150000,15.85,15.850000,1251900,-/- 310 | 2019-07-03,15.900000,16.250000,15.720000,16.040001,16.040001,863200,-/- 311 | 2019-07-05,15.820000,16.160000,15.710000,16.110001,16.110001,771300,1.0164 312 | 2019-07-08,15.970000,16.180000,15.843000,16.049999,16.049999,870200,0.99628 313 | 2019-07-09,15.910000,16.379999,15.760000,16.360001,16.360001,998000,-/- 314 | 2019-07-10,16.370001,16.745001,16.260000,16.450001,16.450001,762400,-/- 315 | 2019-07-11,16.450001,16.549999,16.110001,16.35,16.350000,724600,1.01869 316 | 2019-07-12,16.400000,16.570000,16.120001,16.389999,16.389999,727300,1.00183 317 | 2019-07-15,16.480000,16.650000,16.260000,16.32,16.320000,708800,0.99573 318 | 2019-07-16,16.600000,16.649000,15.650000,15.76,15.760000,1310400,-/- 319 | 2019-07-17,15.800000,16.061001,15.400000,15.48,15.480000,1309400,-/- 320 | 2019-07-18,15.380000,15.490000,14.970000,15.49,15.490000,1115300,0.94914 321 | 2019-07-19,15.630000,15.790000,15.170000,15.31,15.310000,734200,0.97145 322 | 2019-07-22,15.390000,15.510000,15.170000,15.41,15.410000,470600,1.00653 323 | 2019-07-23,15.480000,15.480000,15.075000,15.09,15.090000,753400,-/- 324 | 2019-07-24,15.090000,15.470000,15.000000,15.39,15.390000,1371500,-/- 325 | 2019-07-25,15.380000,15.900000,15.200000,15.3,15.300000,1138800,0.99286 326 | 2019-07-26,15.420000,15.880000,15.325000,15.55,15.550000,815700,1.03048 327 | 2019-07-29,15.600000,15.692000,14.820000,15.19,15.190000,908500,0.97685 328 | 2019-07-30,15.060000,15.580000,14.930000,15.5,15.500000,646300,-/- 329 | 2019-07-31,15.530000,15.630000,14.840000,15.01,15.010000,843800,-/- 330 | 2019-08-01,15.060000,15.407000,14.670000,14.84,14.840000,1109000,0.97696 331 | 2019-08-02,14.780000,14.945000,14.420000,14.83,14.830000,999400,0.95677 332 | 2019-08-05,14.130000,14.210000,13.420000,13.96,13.960000,1683200,0.94134 333 | 2019-08-06,14.140000,14.320000,13.830000,14.02,14.020000,746800,-/- 334 | 2019-08-07,13.910000,14.330000,13.670000,14.21,14.210000,624200,-/- 335 | 2019-08-08,14.270000,14.880000,14.230000,14.44,14.440000,841400,1.03438 336 | 2019-08-09,14.400000,14.540000,13.980000,14.05,14.050000,760100,1.00214 337 | 2019-08-12,13.900000,14.050000,13.720000,13.84,13.840000,597600,0.98505 338 | 2019-08-13,13.800000,14.320000,13.710000,13.9,13.900000,1120300,-/- 339 | 2019-08-14,13.700000,13.880000,13.320000,13.74,13.740000,1188600,-/- 340 | 2019-08-15,13.750000,13.810000,13.060000,13.32,13.320000,1258900,0.96243 341 | 2019-08-16,13.460000,13.900000,13.420000,13.54,13.540000,2426500,0.9741 342 | 2019-08-19,13.780000,13.925000,13.555000,13.67,13.670000,1171300,1.0096 343 | 2019-08-20,13.630000,13.925000,13.530000,13.81,13.810000,902500,-/- 344 | 2019-08-21,13.930000,14.453000,13.910000,14.04,14.040000,1216400,-/- 345 | 2019-08-22,14.110000,14.410000,13.990000,14.29,14.290000,1110200,1.04535 346 | 2019-08-23,14.280000,14.670000,14.095000,14.19,14.190000,1147600,1.02752 347 | 2019-08-26,14.330000,14.430000,13.930000,14.31,14.310000,1118000,1.00846 348 | 2019-08-27,14.450000,14.500000,13.710000,14.0,14.000000,1744900,-/- 349 | 2019-08-28,13.800000,13.960000,13.431000,13.93,13.930000,2345000,-/- 350 | 2019-08-29,15.240000,15.510000,14.310000,14.88,14.880000,3453300,1.03983 351 | 2019-08-30,15.080000,15.400000,14.820000,15.05,15.050000,1849400,1.075 352 | 2019-09-03,14.970000,14.970000,14.330000,14.39,14.390000,1544400,-/- 353 | 2019-09-04,14.660000,14.830000,14.440000,14.67,14.670000,1097600,-/- 354 | 2019-09-05,14.910000,15.070000,14.560000,14.93,14.930000,1041200,-/- 355 | 2019-09-06,15.100000,15.450000,14.640000,15.31,15.310000,1261000,1.06393 356 | 2019-09-09,15.390000,15.870000,15.140000,15.46,15.460000,1279100,1.0098 357 | 2019-09-10,15.300000,15.950000,15.130000,15.89,15.890000,968900,-/- 358 | 2019-09-11,15.750000,16.000000,15.270000,15.72,15.720000,1481000,-/- 359 | 2019-09-12,15.660000,15.930000,15.290000,15.34,15.340000,1273400,0.99224 360 | 2019-09-13,15.240000,15.505000,15.130000,15.19,15.190000,873000,0.95595 361 | 2019-09-16,14.790000,15.330000,14.760000,15.31,15.310000,1475800,1.0079 362 | 2019-09-17,15.330000,15.775000,15.260000,15.7,15.700000,1705600,-/- 363 | 2019-09-18,15.670000,15.700000,15.210000,15.49,15.490000,1092900,-/- 364 | 2019-09-19,15.500000,15.970000,15.500000,15.76,15.760000,810500,1.02939 365 | 2019-09-20,15.750000,16.000000,15.570000,15.75,15.750000,3576400,1.00318 366 | 2019-09-23,15.630000,15.830000,15.400000,15.6,15.600000,1305200,0.99048 367 | 2019-09-24,15.720000,15.720000,15.030000,15.17,15.170000,1358100,-/- 368 | 2019-09-25,15.180000,15.370000,14.950000,15.24,15.240000,1675600,-/- 369 | 2019-09-26,15.230000,16.590000,15.070000,15.99,15.990000,3679000,1.025 370 | 2019-09-27,16.219999,16.379999,14.810000,15.1,15.100000,2199600,0.99539 371 | 2019-09-30,15.150000,15.319000,14.650000,15.05,15.050000,1144100,0.99669 372 | 2019-10-01,15.050000,15.340000,14.610000,14.65,14.650000,1399200,-/- 373 | 2019-10-02,14.470000,14.700000,14.160000,14.55,14.550000,1359100,-/- 374 | 2019-10-03,14.540000,15.230000,14.400000,15.09,15.090000,847700,1.00266 375 | 2019-10-04,15.090000,15.280000,14.900000,15.03,15.030000,763800,1.02594 376 | 2019-10-07,15.000000,15.190000,14.750000,14.82,14.820000,1066700,0.98603 377 | 2019-10-08,14.630000,14.760000,14.300000,14.49,14.490000,572800,-/- 378 | 2019-10-09,14.610000,14.860000,14.410000,14.53,14.530000,641100,-/- 379 | 2019-10-10,14.550000,14.860000,14.400000,14.52,14.520000,654700,0.97976 380 | 2019-10-11,14.670000,14.940000,14.500000,14.66,14.660000,829300,1.01173 381 | 2019-10-14,14.620000,14.660000,14.180000,14.18,14.180000,684400,0.96726 382 | 2019-10-15,14.200000,14.350000,14.020000,14.18,14.180000,837100,-/- 383 | 2019-10-16,14.050000,14.330000,13.770000,14.22,14.220000,1491500,-/- 384 | 2019-10-17,14.310000,14.323000,14.010000,14.13,14.130000,980700,0.99647 385 | 2019-10-18,14.160000,14.200000,13.435000,13.62,13.620000,1907600,0.96051 386 | 2019-10-21,13.750000,14.190000,13.650000,14.11,14.110000,822000,1.03598 387 | 2019-10-22,14.200000,14.280000,13.780000,13.84,13.840000,705200,-/- 388 | 2019-10-23,13.890000,14.240000,13.750000,13.99,13.990000,846700,-/- 389 | 2019-10-24,14.050000,14.330000,13.980000,14.27,14.270000,698800,1.01134 390 | 2019-10-25,14.250000,14.450000,14.040000,14.39,14.390000,1510700,1.03974 391 | 2019-10-28,14.450000,14.630000,14.310000,14.49,14.490000,639800,1.00695 392 | 2019-10-29,14.440000,14.480000,14.140000,14.28,14.280000,533100,-/- 393 | 2019-10-30,14.300000,14.510000,14.160000,14.35,14.350000,506800,-/- 394 | 2019-10-31,14.390000,14.480000,14.010000,14.25,14.250000,671300,0.98344 395 | 2019-11-01,14.320000,14.670000,14.290000,14.53,14.530000,616500,1.01751 396 | 2019-11-04,14.650000,15.000000,14.390000,14.48,14.480000,776400,0.99656 397 | 2019-11-05,14.580000,14.680000,14.400000,14.61,14.610000,567400,-/- 398 | 2019-11-06,14.590000,15.030000,14.370000,14.44,14.440000,1109300,-/- 399 | 2019-11-07,14.560000,14.710000,14.195000,14.35,14.350000,595500,0.99102 400 | 2019-11-08,14.240000,14.630000,14.070000,14.62,14.620000,639400,1.00068 401 | 2019-11-11,14.500000,14.750000,14.370000,14.67,14.670000,531600,1.00342 402 | 2019-11-12,14.720000,15.160000,14.680000,14.77,14.770000,727300,-/- 403 | 2019-11-13,14.730000,14.810000,14.490000,14.79,14.790000,706400,-/- 404 | 2019-11-14,14.750000,14.970000,14.610000,14.66,14.660000,464700,0.99932 405 | 2019-11-15,14.700000,15.220000,14.700000,15.2,15.200000,876000,1.02911 406 | 2019-11-18,15.200000,15.200000,14.810000,14.9,14.900000,711300,0.98026 407 | 2019-11-19,14.950000,15.420000,14.950000,15.16,15.160000,739100,-/- 408 | 2019-11-20,15.170000,15.670000,15.140000,15.5,15.500000,1164900,-/- 409 | 2019-11-21,15.510000,15.750000,15.320000,15.56,15.560000,782500,1.0443 410 | 2019-11-22,15.670000,15.800000,15.340000,15.45,15.450000,722900,1.01913 411 | 2019-11-25,15.540000,15.980000,15.540000,15.72,15.720000,663400,1.01748 412 | 2019-11-26,15.730000,16.170000,15.720000,15.81,15.810000,991600,-/- 413 | 2019-11-27,15.930000,16.000000,15.770000,15.84,15.840000,519600,-/- 414 | 2019-11-29,15.800000,16.129999,15.700000,15.94,15.940000,324600,1.00822 415 | 2019-12-02,15.950000,15.980000,15.000000,15.04,15.040000,987400,0.94354 416 | 2019-12-03,14.620000,15.480000,14.580000,15.36,15.360000,892600,-/- 417 | 2019-12-04,15.480000,15.700000,15.110000,15.52,15.520000,755200,-/- 418 | 2019-12-05,15.480000,15.515000,14.995000,15.1,15.100000,1194600,1.00399 419 | 2019-12-06,15.250000,15.781000,14.720000,14.9,14.900000,2299400,0.97005 420 | 2019-12-09,15.030000,15.660000,14.940000,15.46,15.460000,1100700,1.03758 421 | 2019-12-10,15.300000,15.330000,14.410000,14.49,14.490000,1905600,-/- 422 | 2019-12-11,14.470000,14.500000,14.000000,14.21,14.210000,1768800,-/- 423 | 2019-12-12,14.170000,14.380000,14.000000,14.16,14.160000,1477000,0.91591 424 | 2019-12-13,14.070000,14.550000,13.900000,14.18,14.180000,1118200,0.97861 425 | 2019-12-16,14.290000,14.460000,14.110000,14.2,14.200000,899600,1.00141 426 | 2019-12-17,14.210000,14.430000,14.130000,14.29,14.290000,1065300,-/- 427 | 2019-12-18,14.350000,14.660000,14.240000,14.62,14.620000,1077200,-/- 428 | 2019-12-19,14.600000,14.630000,14.260000,14.35,14.350000,868200,1.01056 429 | 2019-12-20,14.390000,14.450000,14.130000,14.38,14.380000,1914600,1.0063 430 | 2019-12-23,14.370000,14.690000,14.250000,14.52,14.520000,973900,1.00974 431 | 2019-12-24,14.550000,14.559000,14.295000,14.34,14.340000,461600,-/- 432 | 2019-12-26,14.300000,14.450000,14.220000,14.37,14.370000,741100,0.98967 433 | 2019-12-27,14.400000,14.400000,14.150000,14.21,14.210000,914600,0.99093 434 | 2019-12-30,14.100000,14.200000,13.680000,14.14,14.140000,1739500,0.99507 435 | 2019-12-31,14.050000,14.340000,14.050000,14.33,14.330000,1130200,-/- 436 | 2020-01-02,14.190000,14.850000,14.160000,14.76,14.760000,1792600,1.04385 437 | 2020-01-03,14.560000,15.100000,14.500000,14.77,14.770000,1104300,1.0307 438 | 2020-01-06,14.660000,14.730000,14.310000,14.67,14.670000,2004800,0.99323 439 | 2020-01-07,14.740000,14.830000,14.510000,14.69,14.690000,945600,-/- 440 | 2020-01-08,14.670000,14.820000,14.610000,14.66,14.660000,666500,-/- 441 | 2020-01-09,14.840000,15.040000,14.710000,14.88,14.880000,1037400,1.01431 442 | 2020-01-10,14.880000,15.080000,14.760000,15.03,15.030000,1119900,1.02314 443 | 2020-01-13,15.100000,15.565000,14.930000,15.45,15.450000,1581300,1.02794 444 | 2020-01-14,15.500000,15.600000,15.210000,15.34,15.340000,943900,-/- 445 | 2020-01-15,15.550000,15.900000,15.460000,15.5,15.500000,1135600,-/- 446 | 2020-01-16,15.800000,15.960000,15.560000,15.66,15.660000,840000,1.01359 447 | 2020-01-17,15.750000,15.750000,15.255000,15.35,15.350000,786600,1.00065 448 | 2020-01-21,15.340000,15.394000,15.055000,15.18,15.180000,755300,-/- 449 | 2020-01-22,15.270000,15.500000,15.270000,15.39,15.390000,733800,-/- 450 | 2020-01-23,15.400000,15.950000,15.260000,15.78,15.780000,1685000,-/- 451 | 2020-01-24,15.880000,16.030001,15.280000,15.45,15.450000,830700,1.01779 452 | 2020-01-27,15.000000,15.260000,14.918000,15.01,15.010000,851100,0.97152 453 | 2020-01-28,15.150000,15.190000,14.760000,15.06,15.060000,1232400,-/- 454 | 2020-01-29,15.130000,15.230000,14.750000,14.85,14.850000,892800,-/- 455 | 2020-01-30,14.740000,15.020000,14.740000,15.0,15.000000,535900,0.99933 456 | 2020-01-31,14.830000,14.940000,14.600000,14.75,14.750000,805100,0.97942 457 | 2020-02-03,14.760000,15.480000,14.760000,15.32,15.320000,1212200,1.03864 458 | 2020-02-04,15.540000,16.400000,15.540000,15.94,15.940000,1857200,-/- 459 | 2020-02-05,16.160000,16.160000,15.300000,15.69,15.690000,886900,-/- 460 | 2020-02-06,15.730000,16.080000,15.600000,15.84,15.840000,921200,1.03394 461 | 2020-02-07,15.750000,15.840000,15.460000,15.71,15.710000,660000,0.98557 462 | 2020-02-10,15.600000,15.870000,15.570000,15.84,15.840000,522500,1.00827 463 | 2020-02-11,15.930000,15.960000,15.510000,15.56,15.560000,676400,-/- 464 | 2020-02-12,15.710000,15.880000,15.500000,15.82,15.820000,957700,-/- 465 | 2020-02-13,15.720000,16.118999,15.720000,15.87,15.870000,599400,1.00189 466 | 2020-02-14,15.870000,16.129999,15.860000,15.97,15.970000,547500,1.02635 467 | 2020-02-18,15.860000,16.160000,15.570000,16.15,16.150000,711500,-/- 468 | 2020-02-19,16.240000,16.500000,16.010000,16.07,16.070000,1267500,-/- 469 | 2020-02-20,16.010000,16.389999,15.750000,16.08,16.080000,698300,-/- 470 | 2020-02-21,16.010000,16.010000,15.400000,15.63,15.630000,1102000,0.9678 471 | 2020-02-24,14.950000,15.400000,14.707000,14.99,14.990000,1545300,0.95905 472 | 2020-02-25,15.020000,15.095000,13.940000,14.05,14.050000,1616000,-/- 473 | 2020-02-26,14.130000,14.290000,13.500000,13.76,13.760000,2182900,-/- 474 | 2020-02-27,13.250000,13.660000,12.870000,13.15,13.150000,1740800,0.87725 475 | 2020-02-28,12.630000,13.240000,12.310000,13.24,13.240000,1759900,0.94235 476 | 2020-03-02,13.330000,13.450000,12.450000,12.98,12.980000,2210200,0.98036 477 | 2020-03-03,12.990000,13.100000,12.210000,12.32,12.320000,981300,-/- 478 | 2020-03-04,12.550000,12.680000,12.250000,12.52,12.520000,913100,-/- 479 | 2020-03-05,12.230000,12.480000,11.730000,12.05,12.050000,1202900,0.92835 480 | 2020-03-06,11.670000,11.890000,11.200000,11.49,11.490000,1414300,0.93263 481 | 2020-03-09,10.420000,11.140000,10.290000,10.31,10.310000,1322100,0.8973 482 | 2020-03-10,10.730000,11.050000,10.205000,11.03,11.030000,1736200,-/- 483 | 2020-03-11,10.660000,10.850000,9.820000,9.96,9.960000,1170800,-/- 484 | 2020-03-12,9.240000,9.450000,8.500000,8.59,8.590000,2202900,0.83317 485 | 2020-03-13,7.080000,7.800000,6.210000,7.69,7.690000,6335700,0.69719 486 | 2020-03-16,6.670000,7.650000,6.530000,7.19,7.190000,5716300,0.93498 487 | 2020-03-17,7.460000,7.905000,7.300000,7.89,7.890000,3626600,-/- 488 | 2020-03-18,7.390000,9.000000,7.360000,8.72,8.720000,2637700,-/- 489 | 2020-03-19,8.740000,9.410000,8.220000,8.4,8.400000,2380500,1.16829 490 | 2020-03-20,8.580000,8.780000,7.970000,8.1,8.100000,2508100,1.02662 491 | 2020-03-23,8.110000,8.340000,7.690000,8.01,8.010000,2442700,0.98889 492 | 2020-03-24,8.390000,8.690000,8.110000,8.5,8.500000,1755400,-/- 493 | 2020-03-25,8.510000,9.250000,8.300000,8.45,8.450000,2651200,-/- 494 | 2020-03-26,8.560000,9.150000,8.380000,9.02,9.020000,2144100,1.12609 495 | 2020-03-27,8.750000,8.850000,7.950000,8.09,8.090000,2255600,0.95176 496 | 2020-03-30,8.070000,8.450000,8.000000,8.43,8.430000,1353300,1.04203 497 | 2020-03-31,8.370000,8.650000,8.010000,8.05,8.050000,1769900,-/- 498 | 2020-04-01,7.750000,8.190000,7.700000,7.82,7.820000,1433100,-/- 499 | 2020-04-02,7.190000,8.280000,7.190000,8.25,8.250000,2522700,0.97865 500 | 2020-04-03,8.070000,8.400000,7.975000,8.23,8.230000,1216700,1.02236 501 | 2020-04-06,8.500000,8.870000,8.320000,8.78,8.780000,1461500,1.06683 502 | 2020-04-07,8.900000,9.050000,8.390000,8.45,8.450000,1878600,-/- 503 | 2020-04-08,8.540000,8.885000,8.350000,8.74,8.740000,1683800,-/- 504 | 2020-04-09,8.880000,9.260000,8.770000,9.12,9.120000,1959100,1.03872 505 | 2020-04-13,9.170000,9.560000,9.000000,9.47,9.470000,1565600,-/- 506 | 2020-04-14,9.340000,9.800000,9.220000,9.62,9.620000,1833600,-/- 507 | 2020-04-15,9.360000,10.160000,9.245000,9.75,9.750000,2336700,-/- 508 | 2020-04-16,9.930000,10.605000,9.430000,10.38,10.380000,3314400,1.09609 509 | 2020-04-17,10.580000,10.690000,9.850000,9.85,9.850000,1391500,1.02391 510 | 2020-04-20,9.750000,10.240000,9.650000,9.85,9.850000,898100,1.0 511 | 2020-04-21,9.790000,9.890000,8.960000,9.26,9.260000,1150300,-/- 512 | 2020-04-22,9.480000,9.590000,9.080000,9.45,9.450000,1046300,-/- 513 | 2020-04-23,9.450000,9.930000,9.340000,9.57,9.570000,968600,0.97157 514 | 2020-04-24,9.630000,9.720000,9.380000,9.66,9.660000,1739200,1.0432 515 | 2020-04-27,9.780000,10.490000,9.780000,10.37,10.370000,2157000,1.0735 516 | 2020-04-28,10.950000,11.090000,10.120000,10.43,10.430000,1228400,-/- 517 | 2020-04-29,10.610000,10.980000,10.500000,10.89,10.890000,1204400,-/- 518 | 2020-04-30,10.750000,10.960000,10.510000,10.57,10.570000,1564300,1.01929 519 | 2020-05-01,10.300000,10.330000,9.960000,10.23,10.230000,832400,0.98082 520 | 2020-05-04,10.120000,10.480000,9.930000,10.21,10.210000,1544300,0.99804 521 | 2020-05-05,10.400000,10.570000,9.960000,10.03,10.030000,1574800,-/- 522 | 2020-05-06,10.070000,10.580000,10.070000,10.46,10.460000,1028600,-/- 523 | 2020-05-07,10.650000,11.000000,10.590000,10.99,10.990000,1707200,1.0764 524 | 2020-05-08,11.000000,11.440000,10.710000,11.26,11.260000,1154400,1.12263 525 | 2020-05-11,11.200000,11.840000,11.000000,11.53,11.530000,1385400,1.02398 526 | 2020-05-12,12.000000,12.390000,11.460000,11.49,11.490000,1685400,-/- 527 | 2020-05-13,11.500000,11.670000,10.640000,10.82,10.820000,1369400,-/- 528 | 2020-05-14,10.000000,10.500000,9.900000,10.3,10.300000,1671600,0.89332 529 | 2020-05-15,10.290000,10.840000,10.190000,10.58,10.580000,1766500,0.9208 530 | 2020-05-18,10.920000,11.160000,10.660000,10.85,10.850000,1313900,1.02552 531 | 2020-05-19,10.940000,11.180000,10.740000,10.87,10.870000,857900,-/- 532 | 2020-05-20,11.150000,11.530000,11.000000,11.38,11.380000,1421200,-/- 533 | 2020-05-21,11.310000,11.530000,11.120000,11.35,11.350000,822300,1.04608 534 | 2020-05-22,11.540000,12.100000,11.400000,12.06,12.060000,1247600,1.10948 535 | 2020-05-26,12.500000,12.580000,11.790000,11.87,11.870000,1217700,-/- 536 | 2020-05-27,12.000000,12.108000,10.930000,11.66,11.660000,1455100,-/- 537 | 2020-05-28,11.610000,11.910000,11.120000,11.24,11.240000,1385300,-/- 538 | 2020-05-29,11.220000,12.060000,11.220000,12.01,12.010000,1468000,1.01179 539 | 2020-06-01,11.950000,12.500000,11.850000,12.26,12.260000,1758000,1.02082 540 | 2020-06-02,12.400000,12.400000,11.760000,12.03,12.030000,984900,-/- 541 | 2020-06-03,12.400000,12.650000,12.060000,12.59,12.590000,3654200,-/- 542 | 2020-06-04,15.110000,15.110000,12.500000,12.68,12.680000,11737300,1.03426 543 | 2020-06-05,12.830000,13.570000,12.520000,12.75,12.750000,2699400,1.05985 544 | 2020-06-08,12.850000,12.900000,12.030000,12.25,12.250000,2554600,0.96078 545 | 2020-06-09,12.200000,12.590000,12.140000,12.42,12.420000,1542000,-/- 546 | 2020-06-10,12.510000,13.450000,12.500000,12.8,12.800000,2880600,-/- 547 | 2020-06-11,12.330000,12.800000,11.725000,11.79,11.790000,2145200,0.96245 548 | 2020-06-12,12.140000,12.640000,12.110000,12.42,12.420000,2518700,1.0 549 | 2020-06-15,12.680000,13.500000,12.540000,13.5,13.500000,4995500,1.08696 550 | 2020-06-16,14.000000,14.040000,12.610000,13.32,13.320000,4203600,-/- 551 | 2020-06-17,13.370000,13.515000,13.200000,13.42,13.420000,2144500,-/- 552 | 2020-06-18,13.390000,13.550000,13.220000,13.52,13.520000,1639600,1.00148 553 | 2020-06-19,13.600000,13.600000,13.000000,13.01,13.010000,3572100,0.97673 554 | 2020-06-22,13.070000,13.523000,13.020000,13.51,13.510000,1718800,1.03843 555 | 2020-06-23,13.640000,13.640000,13.290000,13.34,13.340000,1722300,-/- 556 | 2020-06-24,13.170000,13.290000,12.700000,12.79,12.790000,1632100,-/- 557 | 2020-06-25,12.740000,13.150000,12.567000,13.13,13.130000,1190600,0.97187 558 | 2020-06-26,13.190000,13.210000,12.670000,12.97,12.970000,3107400,0.97226 559 | 2020-06-29,13.050000,13.130000,12.340000,12.54,12.540000,1690900,0.96685 560 | 2020-06-30,12.540000,12.790000,12.440000,12.75,12.750000,1083600,-/- 561 | 2020-07-01,12.170000,13.040000,12.050000,12.91,12.910000,2303400,-/- 562 | 2020-07-02,13.110000,13.200000,12.780000,12.84,12.840000,882400,1.02392 563 | 2020-07-06,12.850000,13.280000,12.600000,12.73,12.730000,1337700,-/- 564 | 2020-07-07,12.680000,12.990000,12.570000,12.63,12.630000,1108300,-/- 565 | 2020-07-08,12.750000,12.845000,12.409000,12.68,12.680000,1452500,-/- 566 | 2020-07-09,12.780000,12.940000,12.610000,12.84,12.840000,1298000,1.00864 567 | 2020-07-10,12.800000,12.800000,12.390000,12.43,12.430000,992600,0.98416 568 | 2020-07-13,12.500000,12.530000,11.630000,11.66,11.660000,1690100,0.93805 569 | 2020-07-14,11.530000,11.660000,11.055000,11.65,11.650000,1268300,-/- 570 | 2020-07-15,11.800000,12.110000,11.790000,12.04,12.040000,1190700,-/- 571 | 2020-07-16,11.880000,11.990000,11.565000,11.81,11.810000,1022100,1.01286 572 | 2020-07-17,11.790000,11.930000,11.625000,11.81,11.810000,864000,1.01373 573 | 2020-07-20,11.810000,12.270000,11.730000,12.15,12.150000,1106900,1.02879 574 | 2020-07-21,12.410000,12.410000,11.860000,11.92,11.920000,841000,-/- 575 | 2020-07-22,11.920000,12.100000,11.730000,11.88,11.880000,661300,-/- 576 | 2020-07-23,11.850000,12.050000,11.670000,11.87,11.870000,1164600,0.97695 577 | 2020-07-24,11.770000,11.829000,11.360000,11.52,11.520000,726900,0.96644 578 | 2020-07-27,11.560000,11.780000,11.480000,11.74,11.740000,497300,1.0191 579 | 2020-07-28,11.670000,11.708000,11.370000,11.38,11.380000,620600,-/- 580 | 2020-07-29,11.410000,11.593000,11.350000,11.56,11.560000,704800,-/- 581 | 2020-07-30,11.400000,11.465000,11.065000,11.37,11.370000,802300,0.96848 582 | 2020-07-31,11.530000,11.655000,11.150000,11.64,11.640000,907300,1.02285 583 | 2020-08-03,11.670000,11.969000,11.550000,11.82,11.820000,955600,1.01546 584 | 2020-08-04,11.710000,11.910000,11.510000,11.87,11.870000,694700,-/- 585 | 2020-08-05,11.960000,12.470000,11.940000,12.44,12.440000,1569300,-/- 586 | 2020-08-06,12.480000,12.590000,11.990000,12.14,12.140000,733400,1.02707 587 | 2020-08-07,12.050000,12.150000,11.380000,11.73,11.730000,939900,0.98821 588 | 2020-08-10,11.710000,11.788000,11.280000,11.55,11.550000,1027000,0.98465 589 | 2020-08-11,11.610000,11.700000,11.405000,11.43,11.430000,959200,-/- 590 | 2020-08-12,11.560000,11.815000,11.440000,11.66,11.660000,776200,-/- 591 | 2020-08-13,11.690000,12.120000,11.690000,11.84,11.840000,809900,1.02511 592 | 2020-08-14,11.830000,12.120000,11.760000,11.86,11.860000,712800,1.03762 593 | 2020-08-17,11.910000,11.970000,11.470000,11.63,11.630000,986200,0.98061 594 | 2020-08-18,11.750000,11.970000,11.710000,11.86,11.860000,660500,-/- 595 | 2020-08-19,11.900000,11.980000,11.600000,11.77,11.770000,761700,-/- 596 | 2020-08-20,11.700000,12.015000,11.600000,11.88,11.880000,929000,1.0215 597 | 2020-08-21,11.750000,11.940000,11.430000,11.59,11.590000,2222600,0.97723 598 | 2020-08-24,11.740000,11.740000,11.360000,11.52,11.520000,1129700,0.99396 599 | 2020-08-25,11.520000,11.770000,11.370000,11.76,11.760000,954800,-/- 600 | 2020-08-26,11.870000,13.190000,11.870000,13.09,13.090000,3345300,-/- 601 | -------------------------------------------------------------------------------- /1. Parsing CSV/main.py: -------------------------------------------------------------------------------- 1 | import csv 2 | from datetime import datetime, timedelta 3 | 4 | 5 | with open("ZUO.csv") as csvfile_in, open("ZUO_out.csv", mode="w", newline="") as csvfile_out: 6 | rows = csv.reader(csvfile_in, delimiter=',', quotechar='|') 7 | 8 | column_names_row = [] 9 | tmp = {} 10 | 11 | # convert rows object to dict 12 | for row in rows: 13 | if rows.line_num == 1: 14 | # save columns names 15 | column_names_row = row 16 | continue 17 | 18 | date_str = row[0] 19 | open_price = row[1] 20 | high_price = row[2] 21 | low_price = row[3] 22 | close_price = row[4] 23 | adj_close_price = row[5] 24 | volume = row[6] 25 | 26 | date_dt = datetime.strptime(date_str, "%Y-%m-%d") 27 | date_dt_3_days_ago = date_dt - timedelta(days=3) 28 | 29 | tmp[date_dt] = [ 30 | date_dt_3_days_ago, 31 | open_price, 32 | high_price, 33 | low_price, 34 | float(close_price), 35 | adj_close_price, 36 | volume 37 | ] 38 | 39 | # write columns names to result csv file 40 | csv_writer = csv.writer(csvfile_out, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL) 41 | column_names_row.append("Ratio") 42 | csv_writer.writerow(column_names_row) 43 | 44 | # iterate over tmp dict and calculate ratio value for each day if possible 45 | for current_dt, data in tmp.items(): 46 | ratio = "-/-" 47 | 48 | dt_3_days_ago = data[0] 49 | open_price = data[1] 50 | high_price = data[2] 51 | low_price = data[3] 52 | close_price = data[4] 53 | adj_close_price = data[5] 54 | volume = data[6] 55 | 56 | try: 57 | close_price_3_days_ago = tmp[dt_3_days_ago][4] 58 | ratio = round(close_price / close_price_3_days_ago, 5) 59 | except KeyError: 60 | # there is no some dates in the file and we can't get "3 days ago" date for some dates 61 | pass 62 | 63 | # write calculated ratio value to result csv file 64 | csv_writer.writerow( 65 | [ 66 | current_dt.strftime("%Y-%m-%d"), 67 | open_price, 68 | high_price, 69 | low_price, 70 | close_price, 71 | adj_close_price, 72 | volume, 73 | ratio 74 | ] 75 | ) 76 | -------------------------------------------------------------------------------- /1. Parsing CSV/readme.md: -------------------------------------------------------------------------------- 1 | ## Задача на парсинг CSV файла и добавление в него новой колонки с некоторыми данными. 2 | 3 | ### Условие: 4 | 5 | Извлечение финансовых данных с сайта finance.yahoo.com за всё время по заданной компании. 6 | 7 | Этап 1. Найти страницу компании на сайте. Через поиск на сайте либо любым другим способом. 8 | 9 | Этап 2. На странице компании перейти на вкладку с историческими данными. 10 | 11 | Этап 3. Выбрать данные за максимальный период. 12 | 13 | Этап 4. Скачать данные по ссылке “Download Data” 14 | 15 | Этап 5. В файл добавить колонку “3day_before_change” в которой для каждой записи должно быть отношение цены на закрытие текущей записи к цене закрытия записи 3 дня назад. 16 | 17 | ### Решение: 18 | 19 | - Запустить `main.py` 20 | 21 | - окружение: `python3.8` -------------------------------------------------------------------------------- /2. Site map/main.py: -------------------------------------------------------------------------------- 1 | import multiprocessing 2 | import threading -------------------------------------------------------------------------------- /2. Site map/readme.md: -------------------------------------------------------------------------------- 1 | ## Задача на генерацию карты сайта (sitemap) 2 | 3 | ### Условие: написать на Python скрипт, который делает [карту сайта](https://en.wikipedia.org/wiki/Site_map) (любого). 4 | 5 | Требования: 6 | 7 | - ООП 8 | 9 | - Многопоточная и/или многопроцессная обработка (multiprocessing, threading) 10 | 11 | - Итераторы/генераторы для обхода структуры 12 | 13 | - Сохранить карту в базу и визуализировать 14 | -------------------------------------------------------------------------------- /bubble_selection_insert_sorting.py: -------------------------------------------------------------------------------- 1 | from random import randint 2 | from datetime import datetime 3 | from time import time 4 | from copy import copy 5 | 6 | 7 | def timer(func): 8 | def wrapper(*args, **kwargs): 9 | start = datetime.now() 10 | start1 = time() 11 | res = func(*args, **kwargs) 12 | duration = datetime.now() - start 13 | duration2 = time() - start1 14 | print(f"Elapsed time for {func.__name__}: {duration.microseconds} ms") 15 | print(f"Elapsed time for {func.__name__}: {duration2} s") 16 | return res 17 | return wrapper 18 | 19 | 20 | @timer 21 | def bubble_sort(haystack): 22 | switched = True 23 | while switched: 24 | switched = False 25 | for i in range(len(haystack) - 1): 26 | if haystack[i] > haystack[i+1]: 27 | switched = True 28 | haystack[i], haystack[i+1] = haystack[i+1], haystack[i] 29 | return haystack 30 | 31 | 32 | @timer 33 | def selection_sort(haystack): 34 | for i in range(len(haystack)): 35 | for j in range(i+1, len(haystack)): 36 | if haystack[j] < haystack[i]: 37 | haystack[j], haystack[i] = haystack[i], haystack[j] 38 | return haystack 39 | 40 | 41 | @timer 42 | def insert_sort(haystack): 43 | for i in range(1, len(haystack)): 44 | current = haystack[i] 45 | j = i - 1 46 | while j >= 0 and haystack[j] > current: 47 | haystack[j+1] = haystack[j] 48 | j -= 1 49 | haystack[j+1] = current 50 | return haystack 51 | 52 | 53 | # O(n^2) 54 | h1 = [randint(0, 10000) for _ in range(1000)] 55 | h2 = copy(h1) 56 | h3 = copy(h1) 57 | 58 | print(h1) 59 | print(bubble_sort(h1)) 60 | 61 | print(h2) 62 | print(selection_sort(h2)) 63 | 64 | print(h3) 65 | print(insert_sort(h3)) 66 | -------------------------------------------------------------------------------- /conda_list.txt: -------------------------------------------------------------------------------- 1 | # Name Version Build Channel 2 | _ipyw_jlab_nb_ext_conf 0.1.0 py37_0 3 | _libgcc_mutex 0.1 main 4 | alabaster 0.7.12 py37_0 5 | anaconda 2020.02 py37_0 6 | anaconda-client 1.7.2 py37_0 7 | anaconda-navigator 1.9.12 py37_0 8 | anaconda-project 0.8.4 py_0 9 | argh 0.26.2 py37_0 10 | asn1crypto 1.3.0 py37_0 11 | astroid 2.3.3 py37_0 12 | astropy 4.0 py37h7b6447c_0 13 | atomicwrites 1.3.0 py37_1 14 | attrs 19.3.0 py_0 15 | autopep8 1.4.4 py_0 16 | babel 2.8.0 py_0 17 | backcall 0.1.0 py37_0 18 | backports 1.0 py_2 19 | backports.functools_lru_cache 1.6.1 py_0 20 | backports.shutil_get_terminal_size 1.0.0 py37_2 21 | backports.tempfile 1.0 py_1 22 | backports.weakref 1.0.post1 py_1 23 | beautifulsoup4 4.8.2 py37_0 24 | bitarray 1.2.1 py37h7b6447c_0 25 | bkcharts 0.2 py37_0 26 | blas 1.0 mkl 27 | bleach 3.1.0 py37_0 28 | blosc 1.16.3 hd408876_0 29 | bokeh 1.4.0 py37_0 30 | boto 2.49.0 py37_0 31 | bottleneck 1.3.2 py37heb32a55_0 32 | bzip2 1.0.8 h7b6447c_0 33 | ca-certificates 2020.1.1 0 34 | cairo 1.14.12 h8948797_3 35 | certifi 2019.11.28 py37_0 36 | cffi 1.14.0 py37h2e261b9_0 37 | chardet 3.0.4 py37_1003 38 | click 7.0 py37_0 39 | cloudpickle 1.3.0 py_0 40 | clyent 1.2.2 py37_1 41 | colorama 0.4.3 py_0 42 | conda 4.8.2 py37_0 43 | conda-build 3.18.11 py37_0 44 | conda-env 2.6.0 1 45 | conda-package-handling 1.6.0 py37h7b6447c_0 46 | conda-verify 3.4.2 py_1 47 | contextlib2 0.6.0.post1 py_0 48 | cryptography 2.8 py37h1ba5d50_0 49 | curl 7.68.0 hbc83047_0 50 | cycler 0.10.0 py37_0 51 | cython 0.29.15 py37he6710b0_0 52 | cytoolz 0.10.1 py37h7b6447c_0 53 | dask 2.11.0 py_0 54 | dask-core 2.11.0 py_0 55 | dbus 1.13.12 h746ee38_0 56 | decorator 4.4.1 py_0 57 | defusedxml 0.6.0 py_0 58 | diff-match-patch 20181111 py_0 59 | distributed 2.11.0 py37_0 60 | docutils 0.16 py37_0 61 | entrypoints 0.3 py37_0 62 | et_xmlfile 1.0.1 py37_0 63 | expat 2.2.6 he6710b0_0 64 | fastcache 1.1.0 py37h7b6447c_0 65 | filelock 3.0.12 py_0 66 | flake8 3.7.9 py37_0 67 | flask 1.1.1 py_0 68 | fontconfig 2.13.0 h9420a91_0 69 | freetype 2.9.1 h8a8886c_1 70 | fribidi 1.0.5 h7b6447c_0 71 | fsspec 0.6.2 py_0 72 | future 0.18.2 py37_0 73 | get_terminal_size 1.0.0 haa9412d_0 74 | gevent 1.4.0 py37h7b6447c_0 75 | glib 2.63.1 h5a9c865_0 76 | glob2 0.7 py_0 77 | gmp 6.1.2 h6c8ec71_1 78 | gmpy2 2.0.8 py37h10f8cd9_2 79 | graphite2 1.3.13 h23475e2_0 80 | greenlet 0.4.15 py37h7b6447c_0 81 | gst-plugins-base 1.14.0 hbbd80ab_1 82 | gstreamer 1.14.0 hb453b48_1 83 | h5py 2.10.0 py37h7918eee_0 84 | harfbuzz 1.8.8 hffaf4a1_0 85 | hdf5 1.10.4 hb1b8bf9_0 86 | heapdict 1.0.1 py_0 87 | html5lib 1.0.1 py37_0 88 | hypothesis 5.5.4 py_0 89 | icu 58.2 h9c2bf20_1 90 | idna 2.8 py37_0 91 | imageio 2.6.1 py37_0 92 | imagesize 1.2.0 py_0 93 | importlib_metadata 1.5.0 py37_0 94 | intel-openmp 2020.0 166 95 | intervaltree 3.0.2 py_0 96 | ipykernel 5.1.4 py37h39e3cac_0 97 | ipython 7.12.0 py37h5ca1d4c_0 98 | ipython_genutils 0.2.0 py37_0 99 | ipywidgets 7.5.1 py_0 100 | isort 4.3.21 py37_0 101 | itsdangerous 1.1.0 py37_0 102 | jbig 2.1 hdba287a_0 103 | jdcal 1.4.1 py_0 104 | jedi 0.14.1 py37_0 105 | jeepney 0.4.2 py_0 106 | jinja2 2.11.1 py_0 107 | joblib 0.14.1 py_0 108 | jpeg 9b h024ee3a_2 109 | json5 0.9.1 py_0 110 | jsonschema 3.2.0 py37_0 111 | jupyter 1.0.0 py37_7 112 | jupyter_client 5.3.4 py37_0 113 | jupyter_console 6.1.0 py_0 114 | jupyter_core 4.6.1 py37_0 115 | jupyterlab 1.2.6 pyhf63ae98_0 116 | jupyterlab_server 1.0.6 py_0 117 | keyring 21.1.0 py37_0 118 | kiwisolver 1.1.0 py37he6710b0_0 119 | krb5 1.17.1 h173b8e3_0 120 | lazy-object-proxy 1.4.3 py37h7b6447c_0 121 | ld_impl_linux-64 2.33.1 h53a641e_7 122 | libarchive 3.3.3 h5d8350f_5 123 | libcurl 7.68.0 h20c2e04_0 124 | libedit 3.1.20181209 hc058e9b_0 125 | libffi 3.2.1 hd88cf55_4 126 | libgcc-ng 9.1.0 hdf63c60_0 127 | libgfortran-ng 7.3.0 hdf63c60_0 128 | liblief 0.9.0 h7725739_2 129 | libpng 1.6.37 hbc83047_0 130 | libsodium 1.0.16 h1bed415_0 131 | libspatialindex 1.9.3 he6710b0_0 132 | libssh2 1.8.2 h1ba5d50_0 133 | libstdcxx-ng 9.1.0 hdf63c60_0 134 | libtiff 4.1.0 h2733197_0 135 | libtool 2.4.6 h7b6447c_5 136 | libuuid 1.0.3 h1bed415_2 137 | libxcb 1.13 h1bed415_1 138 | libxml2 2.9.9 hea5a465_1 139 | libxslt 1.1.33 h7d1a2b0_0 140 | llvmlite 0.31.0 py37hd408876_0 141 | locket 0.2.0 py37_1 142 | lxml 4.5.0 py37hefd8a0e_0 143 | lz4-c 1.8.1.2 h14c3975_0 144 | lzo 2.10 h49e0be7_2 145 | markupsafe 1.1.1 py37h7b6447c_0 146 | matplotlib 3.1.3 py37_0 147 | matplotlib-base 3.1.3 py37hef1b27d_0 148 | mccabe 0.6.1 py37_1 149 | mistune 0.8.4 py37h7b6447c_0 150 | mkl 2020.0 166 151 | mkl-service 2.3.0 py37he904b0f_0 152 | mkl_fft 1.0.15 py37ha843d7b_0 153 | mkl_random 1.1.0 py37hd6b4f25_0 154 | mock 4.0.1 py_0 155 | more-itertools 8.2.0 py_0 156 | mpc 1.1.0 h10f8cd9_1 157 | mpfr 4.0.1 hdf1c602_3 158 | mpmath 1.1.0 py37_0 159 | msgpack-python 0.6.1 py37hfd86e86_1 160 | multipledispatch 0.6.0 py37_0 161 | navigator-updater 0.2.1 py37_0 162 | nbconvert 5.6.1 py37_0 163 | nbformat 5.0.4 py_0 164 | ncurses 6.2 he6710b0_0 165 | networkx 2.4 py_0 166 | nltk 3.4.5 py37_0 167 | nose 1.3.7 py37_2 168 | notebook 6.0.3 py37_0 169 | numba 0.48.0 py37h0573a6f_0 170 | numexpr 2.7.1 py37h423224d_0 171 | numpy 1.18.1 py37h4f9e942_0 172 | numpy-base 1.18.1 py37hde5b4d6_1 173 | numpydoc 0.9.2 py_0 174 | olefile 0.46 py37_0 175 | openpyxl 3.0.3 py_0 176 | openssl 1.1.1d h7b6447c_4 177 | packaging 20.1 py_0 178 | pandas 1.0.1 py37h0573a6f_0 179 | pandoc 2.2.3.2 0 180 | pandocfilters 1.4.2 py37_1 181 | pango 1.42.4 h049681c_0 182 | parso 0.5.2 py_0 183 | partd 1.1.0 py_0 184 | patchelf 0.10 he6710b0_0 185 | path 13.1.0 py37_0 186 | path.py 12.4.0 0 187 | pathlib2 2.3.5 py37_0 188 | pathtools 0.1.2 py_1 189 | patsy 0.5.1 py37_0 190 | pcre 8.43 he6710b0_0 191 | pep8 1.7.1 py37_0 192 | pexpect 4.8.0 py37_0 193 | pickleshare 0.7.5 py37_0 194 | pillow 7.0.0 py37hb39fc2d_0 195 | pip 20.0.2 py37_1 196 | pixman 0.38.0 h7b6447c_0 197 | pkginfo 1.5.0.1 py37_0 198 | pluggy 0.13.1 py37_0 199 | ply 3.11 py37_0 200 | prometheus_client 0.7.1 py_0 201 | prompt_toolkit 3.0.3 py_0 202 | psutil 5.6.7 py37h7b6447c_0 203 | ptyprocess 0.6.0 py37_0 204 | py 1.8.1 py_0 205 | py-lief 0.9.0 py37h7725739_2 206 | pycodestyle 2.5.0 py37_0 207 | pycosat 0.6.3 py37h7b6447c_0 208 | pycparser 2.19 py37_0 209 | pycrypto 2.6.1 py37h14c3975_9 210 | pycurl 7.43.0.5 py37h1ba5d50_0 211 | pydocstyle 4.0.1 py_0 212 | pyflakes 2.1.1 py37_0 213 | pygments 2.5.2 py_0 214 | pylint 2.4.4 py37_0 215 | pyodbc 4.0.30 py37he6710b0_0 216 | pyopenssl 19.1.0 py37_0 217 | pyparsing 2.4.6 py_0 218 | pyqt 5.9.2 py37h05f1152_2 219 | pyrsistent 0.15.7 py37h7b6447c_0 220 | pysocks 1.7.1 py37_0 221 | pytables 3.6.1 py37h71ec239_0 222 | pytest 5.3.5 py37_0 223 | pytest-arraydiff 0.3 py37h39e3cac_0 224 | pytest-astropy 0.8.0 py_0 225 | pytest-astropy-header 0.1.2 py_0 226 | pytest-doctestplus 0.5.0 py_0 227 | pytest-openfiles 0.4.0 py_0 228 | pytest-remotedata 0.3.2 py37_0 229 | python 3.7.6 h0371630_2 230 | python-dateutil 2.8.1 py_0 231 | python-jsonrpc-server 0.3.4 py_0 232 | python-language-server 0.31.7 py37_0 233 | python-libarchive-c 2.8 py37_13 234 | pytz 2019.3 py_0 235 | pywavelets 1.1.1 py37h7b6447c_0 236 | pyxdg 0.26 py_0 237 | pyyaml 5.3 py37h7b6447c_0 238 | pyzmq 18.1.1 py37he6710b0_0 239 | qdarkstyle 2.8 py_0 240 | qt 5.9.7 h5867ecd_1 241 | qtawesome 0.6.1 py_0 242 | qtconsole 4.6.0 py_1 243 | qtpy 1.9.0 py_0 244 | readline 7.0 h7b6447c_5 245 | requests 2.22.0 py37_1 246 | ripgrep 11.0.2 he32d670_0 247 | rope 0.16.0 py_0 248 | rtree 0.9.3 py37_0 249 | ruamel_yaml 0.15.87 py37h7b6447c_0 250 | scikit-image 0.16.2 py37h0573a6f_0 251 | scikit-learn 0.22.1 py37hd81dba3_0 252 | scipy 1.4.1 py37h0b6359f_0 253 | seaborn 0.10.0 py_0 254 | secretstorage 3.1.2 py37_0 255 | send2trash 1.5.0 py37_0 256 | setuptools 45.2.0 py37_0 257 | simplegeneric 0.8.1 py37_2 258 | singledispatch 3.4.0.3 py37_0 259 | sip 4.19.8 py37hf484d3e_0 260 | six 1.14.0 py37_0 261 | snappy 1.1.7 hbae5bb6_3 262 | snowballstemmer 2.0.0 py_0 263 | sortedcollections 1.1.2 py37_0 264 | sortedcontainers 2.1.0 py37_0 265 | soupsieve 1.9.5 py37_0 266 | sphinx 2.4.0 py_0 267 | sphinxcontrib 1.0 py37_1 268 | sphinxcontrib-applehelp 1.0.1 py_0 269 | sphinxcontrib-devhelp 1.0.1 py_0 270 | sphinxcontrib-htmlhelp 1.0.2 py_0 271 | sphinxcontrib-jsmath 1.0.1 py_0 272 | sphinxcontrib-qthelp 1.0.2 py_0 273 | sphinxcontrib-serializinghtml 1.1.3 py_0 274 | sphinxcontrib-websupport 1.2.0 py_0 275 | spyder 4.0.1 py37_0 276 | spyder-kernels 1.8.1 py37_0 277 | sqlalchemy 1.3.13 py37h7b6447c_0 278 | sqlite 3.31.1 h7b6447c_0 279 | statsmodels 0.11.0 py37h7b6447c_0 280 | sympy 1.5.1 py37_0 281 | tbb 2020.0 hfd86e86_0 282 | tblib 1.6.0 py_0 283 | terminado 0.8.3 py37_0 284 | testpath 0.4.4 py_0 285 | tk 8.6.8 hbc83047_0 286 | toolz 0.10.0 py_0 287 | tornado 6.0.3 py37h7b6447c_3 288 | tqdm 4.42.1 py_0 289 | traitlets 4.3.3 py37_0 290 | ujson 1.35 py37h14c3975_0 291 | unicodecsv 0.14.1 py37_0 292 | unixodbc 2.3.7 h14c3975_0 293 | urllib3 1.25.8 py37_0 294 | watchdog 0.10.2 py37_0 295 | wcwidth 0.1.8 py_0 296 | webencodings 0.5.1 py37_1 297 | werkzeug 1.0.0 py_0 298 | wheel 0.34.2 py37_0 299 | widgetsnbextension 3.5.1 py37_0 300 | wrapt 1.11.2 py37h7b6447c_0 301 | wurlitzer 2.0.0 py37_0 302 | xlrd 1.2.0 py37_0 303 | xlsxwriter 1.2.7 py_0 304 | xlwt 1.3.0 py37_0 305 | xmltodict 0.12.0 py_0 306 | xz 5.2.4 h14c3975_4 307 | yaml 0.1.7 had09818_2 308 | yapf 0.28.0 py_0 309 | zeromq 4.3.1 he6710b0_3 310 | zict 1.0.0 py_0 311 | zipp 2.2.0 py_0 312 | zlib 1.2.11 h7b6447c_3 313 | zstd 1.3.7 h0b5b093_0 314 | -------------------------------------------------------------------------------- /fibonachi.py: -------------------------------------------------------------------------------- 1 | from functools import lru_cache 2 | 3 | cache = {0: 1, 1: 1} 4 | 5 | 6 | def fibo(n_): 7 | global cache 8 | 9 | if n_ not in cache: 10 | cache[n_] = fibo(n_ - 1) + fibo(n_ - 2) 11 | 12 | return cache[n_] 13 | 14 | 15 | @lru_cache(maxsize=None) 16 | def fibo1(n_): 17 | if n_ in (0, 1): 18 | return 1 19 | return fibo1(n_ - 1) + fibo1(n_ - 2) 20 | 21 | 22 | def fibo2(n_): 23 | res = 1 24 | res_1 = 1 25 | res_2 = 1 26 | 27 | for i in range(n_ + 1): 28 | if i >= 2: 29 | res = res_1 + res_2 30 | res_1, res_2 = res, res_1 31 | 32 | return res 33 | 34 | 35 | n = 400 36 | print(fibo(n)) 37 | print(fibo1(n)) 38 | print(fibo2(n)) 39 | -------------------------------------------------------------------------------- /hanoi_towers.py: -------------------------------------------------------------------------------- 1 | class Stack: 2 | def __init__(self, name): 3 | self._name = name 4 | self._container = list() 5 | 6 | def push(self, element): 7 | self._container.append(element) 8 | 9 | def pop(self): 10 | return self._container.pop() 11 | 12 | @property 13 | def is_empty(self): 14 | return bool(self._container) 15 | 16 | def __repr__(self): 17 | return f"Stack {self._name}" 18 | 19 | 20 | class Ring: 21 | def __init__(self, size): 22 | self._size = size 23 | 24 | def __str__(self): 25 | return f"Ring {self._size}" 26 | 27 | def __repr__(self): 28 | return self.__str__() 29 | 30 | 31 | def hanoi(start_tower, end_tower, temp_tower, n): 32 | global number_of_calls 33 | number_of_calls += 1 34 | if n == 1: 35 | elem = start_tower.pop() 36 | print(f"{elem}: {start_tower} -> {end_tower}") 37 | end_tower.push(elem) 38 | else: 39 | hanoi(start_tower, temp_tower, end_tower, n-1) 40 | hanoi(start_tower, end_tower, temp_tower, 1) 41 | hanoi(temp_tower, end_tower, start_tower, n-1) 42 | 43 | 44 | number_of_calls = 0 45 | N = 3 46 | 47 | green_tower = Stack("green") # initial start tower 48 | red_tower = Stack("red") # initial temp tower 49 | blue_tower = Stack("blue") # initial finish tower 50 | 51 | for i in range(N): 52 | green_tower.push(Ring(i)) 53 | 54 | 55 | # 1) перемещаем верхние n-1 колец из green в red используя blue в качестве промежуточной 56 | # 2) перемещаем нижнее кольцо из green в blue 57 | # 3) перемещаем n-1 колец из red в blue используя башню green как промежуточную 58 | 59 | 60 | hanoi(green_tower, blue_tower, red_tower, N) 61 | print(number_of_calls) 62 | -------------------------------------------------------------------------------- /length_decoding.py: -------------------------------------------------------------------------------- 1 | # Length decoding problem 2 | # "a3b5g2a4n6" -> "aaabbbbbggaaaannnnnn" 3 | # env: python3.8 4 | 5 | s = "a1b2c3g1c2d3e4" 6 | print(s) 7 | 8 | decoded_s = "" 9 | current_char = None 10 | chars_group_len_str = None 11 | 12 | len_s = len(s) 13 | 14 | for i in range(len_s): 15 | char = s[i] 16 | 17 | if not char.isdigit(): 18 | # first letter or letter from next chars group found, 19 | # need to save info about previous chars group 20 | if chars_group_len_str: 21 | chars_group_len = int(chars_group_len_str) 22 | decoded_s += current_char * chars_group_len 23 | 24 | # reset chars_group_len_str 25 | chars_group_len_str = None 26 | 27 | # override current_char by current one 28 | current_char = char 29 | else: 30 | # digit found 31 | if not chars_group_len_str: 32 | chars_group_len_str = char 33 | else: 34 | chars_group_len_str += char 35 | 36 | if i == len_s - 1: 37 | # last char found 38 | chars_group_len = int(chars_group_len_str) 39 | decoded_s += current_char * chars_group_len 40 | 41 | 42 | print(decoded_s) 43 | -------------------------------------------------------------------------------- /length_encoding.py: -------------------------------------------------------------------------------- 1 | # Length encoding problem 2 | # aaabbccccdddaaaaaa -> a3b2c4d3a6 3 | # env: python3.8 4 | 5 | s = "aaabbccccdddaaaaaa" 6 | print(s) 7 | 8 | current_char = None 9 | counter = None 10 | encodes_s = "" 11 | 12 | len_s = len(s) 13 | 14 | for i in range(len_s): 15 | char = s[i] 16 | if char != current_char: 17 | # first char or new chars group 18 | if current_char: 19 | encodes_s += f"{current_char}{counter}" 20 | current_char = char 21 | counter = 1 22 | else: 23 | # next char in the same group 24 | counter += 1 25 | 26 | if i == len_s - 1: 27 | # last char found 28 | encodes_s += f"{current_char}{counter}" 29 | 30 | print(encodes_s) 31 | -------------------------------------------------------------------------------- /linear_and_binary_search.py: -------------------------------------------------------------------------------- 1 | from string import ascii_letters 2 | from random import randint 3 | 4 | 5 | """ 6 | LINEAR SEARCH 7 | """ 8 | 9 | 10 | def linear_search(s_, sub_s_): 11 | sub_s_first_char = sub_s_[0] 12 | sub_s_len = len(sub_s_) 13 | 14 | for i in range(len(s_)): 15 | curr_char = s_[i] 16 | if curr_char == sub_s_first_char: 17 | s_slice = s_[i:i+sub_s_len] 18 | if sub_s_ == s_slice: 19 | return i 20 | 21 | 22 | s = "".join([ascii_letters[randint(1, len(ascii_letters) - 1)] for _ in range(100000)]) 23 | print(f"Haystack: {s}") 24 | 25 | sub_s = "kNe" 26 | print(f"Needle: {sub_s}") 27 | 28 | res = linear_search(s, sub_s) 29 | print(f"Result: {'found: ' + str(res) if res else 'not found'}. ") 30 | 31 | 32 | """ 33 | BINARY SEARCH 34 | """ 35 | 36 | sorted_array = list(filter(lambda x: ((x // 3) + (x // 5)) % 7 == 0, range(1000))) 37 | print(sorted_array) 38 | 39 | 40 | # we don't need cache here 41 | 42 | def binary_search(haystack, needle): 43 | """ 44 | recursion function 45 | """ 46 | middle_index = len(haystack) // 2 47 | 48 | if haystack[middle_index] == needle: 49 | return True 50 | 51 | if len(haystack) == 1 and haystack[0] != needle: 52 | return False 53 | 54 | if needle < haystack[middle_index]: 55 | return binary_search(haystack[:middle_index], needle) 56 | 57 | if needle > haystack[middle_index]: 58 | return binary_search(haystack[middle_index:], needle) 59 | 60 | 61 | def binary_search2(haystack, needle): 62 | """ 63 | function w/o recursion 64 | """ 65 | 66 | if needle > haystack[-1] or needle < haystack[0]: 67 | return False 68 | 69 | min_index = 0 70 | max_index = len(haystack) - 1 71 | 72 | while max_index >= min_index: 73 | middle_index = (max_index + min_index) // 2 74 | if haystack[middle_index] == needle: 75 | return True 76 | if haystack[middle_index] < needle: 77 | min_index = middle_index + 1 78 | continue 79 | if haystack[middle_index] > needle: 80 | max_index = middle_index - 1 81 | continue 82 | 83 | 84 | n = 40 85 | print(n) 86 | 87 | res = binary_search(sorted_array, n) 88 | print(f"Result: {'found' if res else 'not found'}") 89 | 90 | res = binary_search2(sorted_array, n) 91 | print(f"Result: {'found' if res else 'not found'}") 92 | -------------------------------------------------------------------------------- /merge_sort.py: -------------------------------------------------------------------------------- 1 | def merge_sort(unsorted_array): 2 | # возращаем исходный список если он состоит из одного или менее элементов 3 | if len(unsorted_array) <= 1: 4 | return unsorted_array 5 | 6 | # находим средний индекс, чтобы начать рекурсивно делить пополам 7 | mid = len(unsorted_array) // 2 8 | 9 | # рекурсивно делим пополам 10 | left_part = unsorted_array[:mid] 11 | right_part = unsorted_array[mid:] 12 | 13 | left_part_req = merge_sort(left_part) 14 | right_part_req = merge_sort(right_part) 15 | 16 | # возврат результирующего отсортированного списка 17 | return merge(left_part_req, right_part_req) 18 | 19 | 20 | def merge(left_list, right_list): 21 | sorted_list = [] 22 | 23 | left_elem_index = right_elem_index = 0 24 | 25 | left_list_len = len(left_list) 26 | right_list_len = len(right_list) 27 | 28 | for _ in range(left_list_len + right_list_len): 29 | if left_elem_index < left_list_len and right_elem_index < right_list_len: 30 | # сравнение элементов каджого списка 31 | if left_list[left_elem_index] <= right_list[right_elem_index]: 32 | sorted_list.append(left_list[left_elem_index]) 33 | left_elem_index += 1 34 | else: 35 | sorted_list.append(right_list[right_elem_index]) 36 | right_elem_index += 1 37 | 38 | elif left_elem_index == left_list_len: 39 | # проверяем достигли ли конца левого списка 40 | sorted_list.append(right_list[right_elem_index]) 41 | right_elem_index += 1 42 | 43 | elif right_elem_index == right_list_len: 44 | # проверяем достигли ли конца правого списка 45 | sorted_list.append(left_list[left_elem_index]) 46 | left_elem_index += 1 47 | 48 | return sorted_list 49 | 50 | 51 | print(merge_sort([1,4,2,3,1,5,1,5,8,2,4])) 52 | -------------------------------------------------------------------------------- /pi_e.py: -------------------------------------------------------------------------------- 1 | from math import pi, e 2 | 3 | # Формула Лейбница 4 | # pi = 4/1 - 4/3 + 4/5 - 4/7 + 4/9 - 4/11 + .... 5 | # 6 | # n 4*(-1)^i 7 | # pi = SUM -----------, i = (0,1,2,...) 8 | # i=0 2*i+1 9 | 10 | 11 | def _pi(n): 12 | res = 0.0 13 | for i in range(n+1): 14 | res += (4 * (-1)**i) / (2*i + 1) 15 | return res 16 | 17 | 18 | print(pi) 19 | print(_pi(10000000)) 20 | 21 | 22 | # Ряд Тейлора 23 | # n (1)^i 24 | # e = SUM -----------, i = (0,1,2,3,...) 25 | # i=0 i! 26 | 27 | 28 | def factorial(k): 29 | res = 1 30 | for i in range(1, k+1): 31 | res *= i 32 | return res 33 | 34 | 35 | def exp(n): 36 | res = 0.0 37 | for i in range(n+1): 38 | res += (1**i) / factorial(i) 39 | return res 40 | 41 | 42 | print(e) 43 | print(exp(20)) 44 | -------------------------------------------------------------------------------- /quick_sort.py: -------------------------------------------------------------------------------- 1 | def quick_sort(unsorted_list): 2 | def _helper(array, low_index, high_index): 3 | if low_index < high_index: 4 | split_index = partition(array, low_index, high_index) 5 | _helper(array, low_index, split_index) 6 | _helper(array, split_index + 1, high_index) 7 | 8 | _helper(unsorted_list, 0, len(unsorted_list) - 1) 9 | 10 | 11 | def partition(array_list, low, high): 12 | middle_index = (low + high) // 2 13 | middle_elem = array_list[middle_index] 14 | 15 | i = low - 1 16 | j = high + 1 17 | 18 | while True: 19 | i += 1 20 | while array_list[i] < middle_elem: 21 | i += 1 22 | 23 | j -= 1 24 | while array_list[j] > middle_elem: 25 | j -= 1 26 | 27 | if i >= j: 28 | return j 29 | 30 | array_list[i], array_list[j] = array_list[j], array_list[i] 31 | 32 | 33 | arr = [1,4,2,3,1,5,1,5,8,2,4] 34 | quick_sort(arr) 35 | print(arr) 36 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | ## Здесь лежит код, который пишем на стримах -------------------------------------------------------------------------------- /trailing_zeros_number.py: -------------------------------------------------------------------------------- 1 | """ 2 | 3 | Пусть S(n) = 1 + 2 + ... + n, например S(4) = 1 + 2 + 3 + 4 = 10 4 | 5 | Необходимо по заданному n найти количество нулей, на которые оканчивается число S(n) 6 | 7 | """ 8 | 9 | import time 10 | 11 | 12 | def get_sum(n): 13 | d = 1 14 | return int(n * (2 + (n - 1) * d) / 2) 15 | 16 | 17 | def get_zeros_number(n): 18 | if n == 0: 19 | return 1 20 | 21 | divider = 10 22 | zeros_number = 0 23 | 24 | while n % divider == 0: 25 | zeros_number += 1 26 | divider *= 10 27 | 28 | return zeros_number 29 | 30 | 31 | @profile 32 | def test(): 33 | n = 2 ** 63 34 | start = time.time() 35 | s = get_sum(n) 36 | zn = get_zeros_number(s) 37 | print(f"n: {n}, Sum: {s}, Zn: {zn}") 38 | print(f"Elapsed time: {time.time() - start} sec") 39 | 40 | 41 | test() 42 | --------------------------------------------------------------------------------