├── .gitignore ├── LICENSE ├── Project-1 ├── README.md ├── f1_drivers.txt ├── lap_times_1.txt ├── lap_times_2.txt └── lap_times_3.txt ├── Project-2 └── README.md └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | 3 | *.pdf 4 | *.doc 5 | *.docx 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /Project-1/README.md: -------------------------------------------------------------------------------- 1 | # Introduction to Programming 2 | 3 | ## Project 1: A Timings Board 4 | 5 | ### The Problem 6 | 7 | At a Formula 1 Grand Prix there is sophisticated timing equipment that automatically records the lap times achieved by the various drivers. Before the actual race there are various practice sessions, when the drivers try to optimise the setup of their cars. The lap times they achieve are obviously of great interest. There is a large screen in front of the main grandstand with a display that informs spectators of how the session is proceeding. 8 | 9 | You will create a program that analyses a file generated by the timing system that displays the performance of the current drivers. 10 | 11 | #### Specification 12 | 13 | *This section is deliberately vague and a little open-ended. You are encouraged to add any additional features that you think might be useful and/or interesting. The only thing you cannot alter is the format of the input files.* 14 | 15 | The lap time data will be provided in a file, in a simple format, as follows: 16 | 17 | * The first line of the file is the location of the Grand Prix. 18 | * Each following line records time of one driver, over one lap. 19 | 20 | The format of a "time line" is: 21 | 22 | * The first three characters are a unique code for the driver. 23 | * The remainder of the line is the lap time, which is presented with three decimal places. 24 | 25 | Obviously there will probably be more than one line in the file for any given driver. 26 | 27 | There can be any number of lines in the file, but the line with the race location is guaranteed to be present (which implies that the file cannot be empty). The other lines are always in the format above. 28 | 29 | Your program should accept the name of the file to be processed as a *command-line argument*. 30 | 31 | #### Requirements 32 | 33 | For a pass, your program should: 34 | 35 | 1. Process the command-line argument, and behave sensibly if it is missing, the file does not exist, etc. 36 | 2. Display the race name using the data from the first line of the file. 37 | 3. Display the three-letter code of the driver with the current fastest time. (In the unlikely event that two drivers have exactly the same time, display the first one found.) 38 | 39 | To improve on this, your program should: 40 | 41 | 1. Display the fastest time for *each* driver. 42 | 2. Display the average time overall (that is, the average time for all drivers). 43 | 3. Display the average time for each driver. 44 | 45 | For top marks you should also: 46 | 47 | 1. Display the listing of fastest times in descending order of times. 48 | 2. Add additional details for each driver (such as their real name and/or team name) into the output. 49 | 3. Add in any other interesting features that you would like. 50 | 51 | #### Files 52 | 53 | This folder contains a list of the three letter codes of the current drivers, along with their team names, car numbers, and real names. This could be useful, but it is not guaranteed that there is a time for every driver in the file provided. 54 | 55 | There are also three sample data files. These use the driver codes in the file described above. 56 | 57 | #### Hints 58 | 59 | Use a very short file as you develop. If you want to check your results from the longer file, as a friend to show you their output! 60 | 61 | Think carefully about how to store the data. If, say, finding the average for each driver turns out to be very complicated, you are probably not storing the data the best way. 62 | 63 | If you attempt the later stages of this project, you need to print a table of results. That can be fiddly. https://pypi.org/project/tabulate/ will help. 64 | 65 | A video of a solution running will be posted to MyBeckett. 66 | -------------------------------------------------------------------------------- /Project-1/f1_drivers.txt: -------------------------------------------------------------------------------- 1 | 1,VER,Max Verstappen,Red Bull Racing 2 | 2,SAR,Logan Sargeant,Williams 3 | 3,RIC,Daniel Ricciardo,RB 4 | 4,NOR,Lando Norris,McLaren 5 | 10,GAS,Pierre Gasly,Alpine 6 | 11,PER,Sergio Perez,Red Bull Racing 7 | 14,ALO,Fernando Alonso,Aston Martin Racing 8 | 16,LEC,Charles Leclerc,Ferrari 9 | 18,STR,Lance Stroll,Aston Martin Racing 10 | 20,MAG,Kevin Magnussen,Haas 11 | 22,TSU,Yuki Tsunoda,RB 12 | 23,ALB,Alex Albon,Williams 13 | 24,ZHO,Zhou Guanyu,Kick Sauber 14 | 27,HUL,Niko Hulkenberg,Haas 15 | 31,OCO,Esteban Ocon,Alpine 16 | 44,HAM,Lewis Hamilton,Mercedes 17 | 55,SAI,Carlos Sainz,Ferrari 18 | 63,RUS,George Russell,Mercedes 19 | 77,BOT,Valtteri Bottas,Kick Sauber 20 | 81,PIA,Oscar Piastri,McLaren 21 | -------------------------------------------------------------------------------- /Project-1/lap_times_1.txt: -------------------------------------------------------------------------------- 1 | Dewsbury 2 | SAI111.875 3 | STR103.844 4 | MAG117.792 5 | NOR100.211 6 | SAI105.628 7 | GAS108.142 8 | ZHO114.630 9 | NOR105.125 10 | PER113.809 11 | NOR111.189 12 | RIC109.777 13 | SAI101.004 14 | VER115.749 15 | TSU104.818 16 | RUS115.078 17 | PIA98.058 18 | OCO100.205 19 | VER104.243 20 | TSU109.077 21 | OCO116.821 22 | RUS99.069 23 | SAI116.519 24 | PER103.508 25 | SAR106.866 26 | OCO113.280 27 | TSU112.596 28 | PIA102.462 29 | ZHO117.404 30 | VER108.670 31 | BOT107.761 32 | GAS115.287 33 | OCO119.455 34 | OCO108.957 35 | PER98.669 36 | MAG111.598 37 | ALB115.890 38 | MAG108.327 39 | HAM99.328 40 | PIA105.744 41 | NOR105.864 42 | RIC117.494 43 | TSU101.829 44 | STR113.309 45 | VER99.534 46 | PIA98.224 47 | MAG102.390 48 | STR108.289 49 | RIC112.538 50 | HAM100.127 51 | ALO113.450 52 | STR110.239 53 | PIA105.948 54 | ZHO115.201 55 | RUS116.786 56 | STR112.145 57 | TSU108.668 58 | OCO109.189 59 | BOT117.335 60 | HUL112.386 61 | PIA104.278 62 | RUS101.463 63 | ALO112.072 64 | ZHO119.123 65 | ZHO110.260 66 | GAS118.304 67 | LEC105.041 68 | RUS103.091 69 | ZHO108.265 70 | RIC118.291 71 | BOT119.822 72 | HAM100.497 73 | OCO116.365 74 | MAG119.792 75 | SAR116.794 76 | OCO103.985 77 | GAS107.979 78 | RIC103.678 79 | VER101.818 80 | VER109.266 81 | TSU111.597 82 | TSU113.648 83 | TSU105.888 84 | NOR104.116 85 | SAR108.841 86 | ALO119.902 87 | NOR111.706 88 | RUS104.901 89 | TSU115.965 90 | BOT108.593 91 | VER105.899 92 | ALO100.030 93 | HAM101.155 94 | MAG108.825 95 | ALO117.800 96 | OCO114.444 97 | MAG107.363 98 | LEC101.139 99 | SAR115.080 100 | TSU111.848 101 | VER103.955 102 | ALO106.509 103 | LEC113.819 104 | NOR100.547 105 | TSU118.488 106 | RIC114.899 107 | STR117.777 108 | ALO100.411 109 | PIA101.555 110 | ALO115.572 111 | SAI114.994 112 | OCO119.274 113 | RUS98.774 114 | RUS117.220 115 | GAS100.928 116 | SAR106.766 117 | VER106.888 118 | PIA103.971 119 | OCO100.135 120 | GAS106.354 121 | VER113.984 122 | OCO117.317 123 | SAI102.802 124 | NOR101.346 125 | NOR110.898 126 | VER113.009 127 | OCO101.650 128 | SAI102.164 129 | PER108.794 130 | SAR104.421 131 | STR113.529 132 | ALO107.414 133 | VER103.711 134 | GAS117.909 135 | RUS104.294 136 | ZHO112.772 137 | SAR108.838 138 | GAS105.152 139 | ALO110.587 140 | SAI100.319 141 | SAI102.616 142 | PIA103.505 143 | ALB111.909 144 | ALB109.252 145 | NOR104.046 146 | GAS114.721 147 | GAS118.499 148 | MAG117.324 149 | ALO117.733 150 | NOR111.689 151 | ALB115.806 152 | BOT109.644 153 | HUL113.440 154 | MAG121.672 155 | MAG108.885 156 | SAR121.688 157 | MAG108.109 158 | RUS112.348 159 | ZHO114.779 160 | SAR117.729 161 | NOR102.550 162 | STR119.854 163 | ALB117.802 164 | PER106.232 165 | LEC113.728 166 | MAG116.337 167 | PER114.053 168 | ZHO109.017 169 | RUS114.789 170 | SAR116.549 171 | RUS104.493 172 | ZHO104.165 173 | GAS107.974 174 | GAS107.712 175 | HUL108.684 176 | MAG102.886 177 | BOT102.453 178 | OCO117.386 179 | PIA103.504 180 | STR107.846 181 | BOT109.293 182 | VER114.243 183 | OCO119.779 184 | SAI115.134 185 | HUL103.917 186 | SAR109.135 187 | GAS104.381 188 | GAS101.516 189 | TSU110.292 190 | RIC106.730 191 | HUL117.416 192 | OCO104.398 193 | SAR114.796 194 | SAR111.160 195 | RIC105.284 196 | MAG113.463 197 | VER108.197 198 | OCO114.679 199 | OCO104.247 200 | MAG102.187 201 | ALO114.707 202 | MAG113.826 203 | OCO102.882 204 | HAM112.537 205 | BOT119.123 206 | BOT115.163 207 | ZHO102.201 208 | OCO100.620 209 | RUS112.324 210 | TSU102.723 211 | HUL114.686 212 | TSU119.917 213 | RUS114.777 214 | GAS105.644 215 | TSU100.001 216 | OCO105.655 217 | LEC110.244 218 | VER102.593 219 | RIC110.662 220 | PER114.275 221 | STR111.962 222 | SAI107.323 223 | ZHO103.531 224 | PIA103.574 225 | OCO108.160 226 | NOR111.035 227 | HAM101.729 228 | STR108.137 229 | OCO104.497 230 | TSU116.361 231 | SAI105.980 232 | SAR117.379 233 | HUL112.548 234 | ALO110.292 235 | GAS111.691 236 | BOT118.843 237 | ZHO118.781 238 | TSU107.894 239 | MAG105.414 240 | TSU104.070 241 | ZHO112.432 242 | OCO103.261 243 | ZHO121.849 244 | OCO110.100 245 | MAG116.654 246 | HAM112.973 247 | HUL116.411 248 | SAR102.908 249 | NOR101.576 250 | MAG102.053 251 | PIA104.477 252 | HUL109.878 253 | ALB112.896 254 | MAG105.648 255 | PIA106.693 256 | HUL121.766 257 | PIA116.208 258 | VER110.534 259 | SAI109.897 260 | RUS102.954 261 | SAI108.911 262 | TSU102.915 263 | HUL111.736 264 | NOR114.725 265 | OCO103.785 266 | RIC109.729 267 | HUL103.542 268 | PIA107.795 269 | ALB110.802 270 | RUS109.006 271 | OCO109.778 272 | GAS109.228 273 | HAM101.516 274 | LEC103.931 275 | OCO114.774 276 | GAS100.278 277 | PER116.766 278 | PER102.814 279 | TSU113.738 280 | STR102.402 281 | NOR101.670 282 | RUS100.076 283 | BOT121.404 284 | OCO107.109 285 | OCO119.411 286 | STR114.792 287 | OCO118.848 288 | HAM108.804 289 | PIA111.095 290 | ZHO106.977 291 | RIC107.080 292 | TSU119.829 293 | PER111.979 294 | ZHO121.205 295 | MAG114.908 296 | LEC117.560 297 | HUL105.847 298 | TSU113.999 299 | GAS115.121 300 | HAM113.059 301 | SAI111.412 302 | BOT121.267 303 | TSU108.693 304 | OCO113.320 305 | PER112.819 306 | TSU112.544 307 | ZHO117.361 308 | STR111.021 309 | RUS110.206 310 | ZHO102.362 311 | ALO117.863 312 | SAI119.017 313 | STR105.143 314 | VER108.683 315 | ZHO102.658 316 | ALO111.868 317 | BOT114.261 318 | NOR115.063 319 | RUS114.453 320 | TSU118.267 321 | ZHO112.269 322 | OCO115.919 323 | MAG109.551 324 | PIA102.975 325 | RIC101.552 326 | VER109.062 327 | NOR98.443 328 | ALB106.780 329 | MAG111.865 330 | GAS101.754 331 | STR108.326 332 | OCO118.580 333 | RUS100.313 334 | MAG115.727 335 | HUL119.258 336 | MAG115.689 337 | TSU105.513 338 | ALB117.735 339 | STR114.389 340 | HAM115.113 341 | PIA104.642 342 | SAI108.479 343 | ALO119.518 344 | STR118.164 345 | PER102.419 346 | BOT117.988 347 | ALO106.996 348 | GAS106.582 349 | GAS100.540 350 | HUL110.803 351 | BOT102.170 352 | STR113.742 353 | PER109.314 354 | ZHO103.589 355 | STR117.285 356 | SAR108.830 357 | ALO103.777 358 | HAM107.122 359 | HUL109.938 360 | TSU116.269 361 | SAI119.891 362 | PER115.155 363 | GAS118.114 364 | RUS110.902 365 | GAS113.104 366 | OCO105.805 367 | TSU110.476 368 | ALB109.458 369 | SAI114.355 370 | HAM115.664 371 | HAM112.967 372 | PIA107.097 373 | VER108.801 374 | SAI118.216 375 | LEC102.956 376 | SAI118.650 377 | STR110.627 378 | HAM105.227 379 | OCO119.475 380 | LEC103.718 381 | RUS100.580 382 | PER98.441 383 | VER114.154 384 | BOT112.625 385 | PER112.395 386 | RIC102.062 387 | VER115.232 388 | NOR115.310 389 | GAS118.299 390 | PIA107.154 391 | MAG110.594 392 | SAI101.499 393 | ZHO121.791 394 | SAI101.683 395 | SAR108.655 396 | ZHO104.604 397 | LEC118.005 398 | GAS119.925 399 | OCO100.794 400 | LEC113.905 401 | HUL114.831 402 | TSU109.347 403 | HAM110.558 404 | ZHO114.195 405 | RUS108.379 406 | GAS110.407 407 | RUS106.189 408 | ALB117.968 409 | RUS114.368 410 | NOR104.907 411 | STR106.659 412 | PIA99.289 413 | SAI119.854 414 | ALB112.823 415 | STR115.809 416 | HUL106.254 417 | ALO112.826 418 | RIC114.768 419 | LEC103.218 420 | RUS104.851 421 | SAR119.506 422 | TSU107.434 423 | RIC104.136 424 | SAI119.415 425 | HAM101.435 426 | PER109.425 427 | ALB108.766 428 | SAR110.724 429 | ALO102.551 430 | ZHO110.259 431 | HAM106.606 432 | HAM109.653 433 | HAM100.691 434 | PER113.974 435 | ALO101.344 436 | RUS100.479 437 | NOR108.847 438 | VER110.785 439 | VER112.532 440 | STR119.616 441 | PIA104.206 442 | ALO107.806 443 | SAR121.711 444 | RIC109.537 445 | ALB111.506 446 | BOT102.079 447 | ALB120.705 448 | OCO103.496 449 | HUL117.568 450 | LEC119.242 451 | MAG114.883 452 | PIA112.615 453 | OCO103.720 454 | STR101.549 455 | ALB105.675 456 | SAI119.881 457 | RUS110.858 458 | PIA108.110 459 | GAS104.435 460 | RIC111.051 461 | HUL103.201 462 | TSU103.153 463 | PIA112.740 464 | RUS116.117 465 | GAS100.810 466 | HUL109.378 467 | SAR111.383 468 | TSU117.285 469 | ALB107.528 470 | ALB109.990 471 | SAR108.395 472 | ALB103.178 473 | TSU102.180 474 | SAR111.200 475 | STR100.954 476 | BOT116.886 477 | PER99.539 478 | PIA114.263 479 | TSU112.497 480 | SAR112.910 481 | STR105.833 482 | PER102.716 483 | VER100.111 484 | HUL115.054 485 | PIA105.790 486 | RIC101.605 487 | VER101.950 488 | ALO113.713 489 | RIC110.866 490 | -------------------------------------------------------------------------------- /Project-1/lap_times_2.txt: -------------------------------------------------------------------------------- 1 | Dewsbury 2 | BOT106.498 3 | RUS101.327 4 | RUS100.873 5 | MAG118.789 6 | HAM98.697 7 | STR114.921 8 | MAG119.935 9 | SAR117.634 10 | ALO119.068 11 | SAR117.408 12 | NOR104.339 13 | PIA103.540 14 | STR112.544 15 | TSU105.921 16 | GAS106.353 17 | STR105.879 18 | PER108.889 19 | HUL104.839 20 | OCO114.390 21 | TSU108.665 22 | MAG109.089 23 | GAS108.091 24 | SAI116.013 25 | HAM98.000 26 | HUL112.799 27 | HUL112.243 28 | ALB115.103 29 | HUL103.136 30 | PIA112.723 31 | PIA106.946 32 | TSU116.662 33 | GAS103.831 34 | BOT104.810 35 | STR107.805 36 | HAM111.873 37 | BOT110.191 38 | MAG116.221 39 | OCO104.293 40 | SAR110.785 41 | GAS100.620 42 | MAG114.625 43 | SAR109.076 44 | ZHO114.759 45 | PIA103.509 46 | TSU102.874 47 | TSU109.406 48 | ALO117.131 49 | RIC116.301 50 | STR103.698 51 | NOR117.858 52 | PER104.190 53 | TSU116.493 54 | SAI114.958 55 | STR110.023 56 | ZHO121.580 57 | SAR116.895 58 | MAG119.716 59 | SAR106.409 60 | MAG108.087 61 | RUS111.846 62 | LEC113.864 63 | PER110.762 64 | ZHO102.757 65 | OCO111.971 66 | SAI109.374 67 | STR103.854 68 | HUL107.489 69 | TSU101.488 70 | STR117.104 71 | VER107.776 72 | TSU115.725 73 | HAM109.697 74 | SAR113.725 75 | ALB120.744 76 | PER112.178 77 | PIA102.941 78 | OCO114.142 79 | HAM115.394 80 | HAM102.912 81 | GAS109.436 82 | PER99.536 83 | HAM105.815 84 | SAR111.045 85 | LEC112.539 86 | VER116.784 87 | ALB107.556 88 | PIA102.000 89 | RIC113.882 90 | VER110.753 91 | BOT114.010 92 | OCO103.267 93 | HUL119.131 94 | MAG121.298 95 | LEC101.772 96 | PIA114.333 97 | NOR115.371 98 | TSU107.840 99 | VER98.585 100 | SAI111.530 101 | RIC106.797 102 | HUL113.299 103 | GAS114.677 104 | BOT114.691 105 | TSU111.640 106 | OCO117.345 107 | NOR117.434 108 | OCO111.892 109 | NOR111.577 110 | RUS104.602 111 | SAI109.110 112 | SAR117.975 113 | ALO108.794 114 | HAM113.627 115 | PIA106.006 116 | MAG106.790 117 | ALO117.142 118 | NOR116.015 119 | TSU112.217 120 | MAG102.997 121 | PIA113.754 122 | RIC119.311 123 | RIC113.896 124 | HAM108.607 125 | VER113.640 126 | MAG106.535 127 | ALO110.213 128 | NOR98.781 129 | OCO118.878 130 | ZHO113.895 131 | RUS112.061 132 | ZHO116.103 133 | OCO116.260 134 | GAS114.034 135 | MAG105.123 136 | GAS103.376 137 | HUL103.322 138 | HAM108.052 139 | BOT110.811 140 | RUS105.524 141 | MAG120.642 142 | PER110.972 143 | STR111.100 144 | STR102.256 145 | ALB113.470 146 | NOR115.864 147 | HUL106.680 148 | VER115.661 149 | MAG117.335 150 | PIA106.207 151 | HUL118.491 152 | PIA110.885 153 | HUL111.922 154 | ZHO121.156 155 | LEC100.740 156 | RIC102.473 157 | SAI103.862 158 | GAS107.715 159 | HUL120.751 160 | ALB109.956 161 | SAR120.673 162 | ZHO114.532 163 | HAM105.478 164 | ALB102.816 165 | OCO107.353 166 | RIC104.807 167 | GAS114.305 168 | LEC113.943 169 | TSU112.100 170 | VER109.627 171 | NOR107.580 172 | NOR110.717 173 | SAI107.631 174 | PIA105.516 175 | HUL120.063 176 | MAG121.638 177 | ALB106.776 178 | RIC109.643 179 | PER114.113 180 | MAG120.896 181 | STR108.528 182 | HAM107.386 183 | RIC103.867 184 | RUS105.833 185 | ZHO113.990 186 | GAS119.685 187 | VER100.173 188 | ALO111.165 189 | MAG117.770 190 | ALB114.382 191 | ZHO109.394 192 | SAI106.814 193 | HAM103.050 194 | TSU114.719 195 | PER104.038 196 | TSU116.505 197 | PER103.020 198 | HAM114.956 199 | NOR114.516 200 | NOR117.614 201 | OCO115.080 202 | OCO115.032 203 | GAS103.139 204 | ALB113.905 205 | SAI118.917 206 | STR111.930 207 | RIC119.565 208 | ZHO102.104 209 | BOT104.484 210 | HUL102.276 211 | SAI119.185 212 | STR103.082 213 | BOT113.855 214 | HUL114.066 215 | RUS99.151 216 | VER98.316 217 | SAI115.269 218 | PER106.072 219 | TSU117.681 220 | PER116.084 221 | PER108.256 222 | PIA98.492 223 | GAS116.847 224 | LEC119.848 225 | ALO118.464 226 | ZHO103.742 227 | ALO103.545 228 | SAR102.612 229 | HAM106.073 230 | RUS112.077 231 | PIA116.851 232 | PIA105.321 233 | GAS116.889 234 | NOR107.225 235 | STR109.629 236 | HAM103.514 237 | STR103.925 238 | SAI102.747 239 | ALB117.682 240 | HAM116.403 241 | ALO103.163 242 | RUS101.328 243 | ALB114.720 244 | PER106.058 245 | PER114.487 246 | VER105.704 247 | ALO108.530 248 | STR118.578 249 | TSU111.964 250 | RIC100.848 251 | ALO114.622 252 | BOT121.612 253 | ALB108.493 254 | MAG106.271 255 | GAS109.009 256 | PER100.428 257 | NOR111.531 258 | GAS111.799 259 | VER113.172 260 | RIC103.276 261 | RUS98.757 262 | STR108.785 263 | ZHO103.849 264 | LEC100.583 265 | TSU106.898 266 | MAG109.443 267 | ALB106.558 268 | GAS118.001 269 | MAG106.355 270 | NOR114.005 271 | MAG114.994 272 | GAS114.314 273 | ALO107.140 274 | MAG119.393 275 | SAI101.232 276 | HUL118.595 277 | ZHO116.554 278 | RUS114.529 279 | NOR99.333 280 | ZHO117.330 281 | BOT120.964 282 | ALB109.795 283 | TSU106.514 284 | ZHO115.533 285 | OCO114.156 286 | VER107.071 287 | ALB108.154 288 | HAM98.190 289 | ZHO121.904 290 | HAM110.528 291 | PER106.568 292 | LEC106.061 293 | MAG111.570 294 | ALB110.935 295 | MAG113.734 296 | SAI101.497 297 | HUL104.294 298 | LEC116.848 299 | ZHO112.978 300 | ALO118.298 301 | PER116.529 302 | NOR105.816 303 | SAR112.396 304 | PIA99.881 305 | SAR117.151 306 | MAG103.234 307 | SAI100.848 308 | ZHO110.795 309 | PIA106.233 310 | ALO110.025 311 | ALB119.016 312 | TSU113.173 313 | PER114.742 314 | TSU116.969 315 | SAR102.145 316 | STR110.722 317 | BOT113.715 318 | LEC105.168 319 | ALB107.134 320 | RUS111.852 321 | PER101.400 322 | NOR98.275 323 | TSU117.620 324 | RIC109.505 325 | ZHO105.149 326 | ZHO116.165 327 | PIA116.611 328 | TSU105.620 329 | RIC101.823 330 | HAM117.071 331 | VER106.230 332 | NOR98.852 333 | PIA99.910 334 | MAG111.843 335 | GAS105.732 336 | PER115.632 337 | BOT119.229 338 | ALO102.081 339 | SAR109.042 340 | ZHO108.897 341 | ZHO106.914 342 | HAM108.909 343 | PIA114.736 344 | STR109.400 345 | MAG103.908 346 | ALB114.165 347 | SAI117.824 348 | BOT108.132 349 | NOR113.447 350 | SAR119.689 351 | TSU117.421 352 | LEC114.825 353 | ALB118.004 354 | RUS111.039 355 | GAS104.076 356 | STR117.239 357 | TSU100.431 358 | PER115.616 359 | NOR115.683 360 | PER100.456 361 | ZHO110.863 362 | PER113.437 363 | SAI116.263 364 | NOR107.691 365 | GAS119.017 366 | ALB114.222 367 | OCO110.570 368 | BOT106.716 369 | ZHO112.636 370 | ALB110.838 371 | RUS116.686 372 | BOT104.172 373 | PIA109.502 374 | NOR116.624 375 | STR101.859 376 | ALB109.691 377 | RIC106.896 378 | TSU116.709 379 | RUS110.271 380 | SAI115.781 381 | OCO118.118 382 | STR101.242 383 | HAM102.646 384 | TSU107.417 385 | RUS110.728 386 | NOR101.749 387 | LEC110.973 388 | STR111.731 389 | ALB113.197 390 | VER99.994 391 | ALB115.377 392 | GAS101.008 393 | ZHO112.368 394 | LEC117.808 395 | NOR109.865 396 | RIC113.113 397 | SAR113.454 398 | ALB121.003 399 | PIA102.246 400 | ALB107.438 401 | RUS99.418 402 | ALO116.043 403 | TSU117.169 404 | LEC118.637 405 | PIA111.234 406 | HAM105.277 407 | RUS105.239 408 | HAM105.007 409 | SAI105.588 410 | HAM116.981 411 | VER115.265 412 | MAG102.815 413 | RIC111.381 414 | LEC106.850 415 | STR111.533 416 | BOT109.908 417 | STR107.277 418 | VER112.121 419 | SAI101.201 420 | BOT115.854 421 | HUL117.992 422 | OCO106.305 423 | SAI105.874 424 | VER114.311 425 | BOT105.231 426 | TSU105.335 427 | ALO119.533 428 | ZHO108.884 429 | PIA106.100 430 | ALO116.238 431 | ALO115.303 432 | RUS99.827 433 | STR110.814 434 | HUL111.238 435 | HAM109.958 436 | ALO114.008 437 | ZHO118.879 438 | VER116.211 439 | VER100.426 440 | RUS114.032 441 | PIA100.973 442 | ZHO109.750 443 | GAS115.812 444 | SAR118.638 445 | HUL116.003 446 | VER109.166 447 | ZHO111.810 448 | ALO119.712 449 | PIA109.674 450 | ALB104.820 451 | HAM113.268 452 | STR105.906 453 | RIC103.257 454 | RUS107.465 455 | STR100.830 456 | HAM112.384 457 | MAG113.693 458 | OCO117.162 459 | SAR113.986 460 | PIA101.311 461 | ALB111.999 462 | SAI117.784 463 | RIC119.873 464 | NOR115.634 465 | STR106.984 466 | VER104.030 467 | LEC115.644 468 | OCO113.812 469 | RIC100.361 470 | HAM111.467 471 | ALB102.830 472 | ZHO102.051 473 | RIC112.960 474 | TSU104.848 475 | PIA104.503 476 | ALB121.828 477 | ZHO120.323 478 | PER114.863 479 | PIA99.337 480 | SAR114.479 481 | HAM100.509 482 | LEC100.758 483 | HUL116.473 484 | STR101.570 485 | SAI101.486 486 | STR117.107 487 | RUS101.686 488 | VER104.957 489 | NOR111.633 490 | NOR105.476 491 | PIA104.291 492 | LEC104.162 493 | LEC103.982 494 | NOR100.341 495 | RUS106.268 496 | PER104.486 497 | NOR98.655 498 | ALB117.413 499 | BOT115.877 500 | SAI108.349 501 | RUS98.297 502 | PER98.130 503 | ZHO104.350 504 | VER110.342 505 | PIA116.191 506 | LEC113.202 507 | ALB110.558 508 | TSU102.541 509 | ZHO102.204 510 | GAS106.357 511 | STR115.843 512 | HUL103.622 513 | SAR118.213 514 | MAG111.917 515 | ALB114.072 516 | STR111.053 517 | ZHO106.180 518 | ALO111.095 519 | GAS100.558 520 | RIC107.441 521 | ALO104.841 522 | PER117.219 523 | ALB114.782 524 | HAM117.631 525 | ZHO104.388 526 | ZHO109.848 527 | ALO106.042 528 | GAS112.680 529 | TSU116.329 530 | ALB110.348 531 | TSU117.549 532 | ALO100.794 533 | ALB118.531 534 | SAI105.818 535 | OCO116.551 536 | BOT108.520 537 | ALO111.079 538 | ZHO103.857 539 | VER108.630 540 | STR106.223 541 | VER98.592 542 | ALO108.381 543 | NOR116.895 544 | ZHO108.787 545 | BOT103.742 546 | TSU115.496 547 | SAI101.497 548 | ALO108.937 549 | BOT115.442 550 | NOR107.411 551 | OCO109.235 552 | RUS105.342 553 | GAS116.088 554 | VER109.523 555 | MAG118.194 556 | TSU103.055 557 | STR101.459 558 | BOT112.476 559 | ALO109.930 560 | MAG107.907 561 | LEC113.534 562 | HAM112.891 563 | SAI114.782 564 | SAI107.808 565 | MAG118.124 566 | GAS105.704 567 | ZHO108.696 568 | ALB111.333 569 | TSU114.708 570 | RUS104.522 571 | RUS98.652 572 | SAR106.174 573 | ZHO117.349 574 | SAR107.831 575 | ALO112.275 576 | LEC111.605 577 | ZHO105.727 578 | OCO103.682 579 | BOT118.248 580 | SAR115.177 581 | RIC101.391 582 | ZHO117.479 583 | ALB119.708 584 | -------------------------------------------------------------------------------- /Project-1/lap_times_3.txt: -------------------------------------------------------------------------------- 1 | York 2 | PER117.803 3 | HUL108.362 4 | RIC116.083 5 | ALB103.523 6 | LEC106.341 7 | HUL117.259 8 | MAG108.750 9 | TSU113.643 10 | TSU115.533 11 | PER107.315 12 | HUL106.540 13 | OCO109.716 14 | NOR104.060 15 | OCO116.934 16 | ALO118.254 17 | NOR116.671 18 | OCO111.293 19 | ALB105.110 20 | ZHO110.638 21 | HUL113.655 22 | PIA109.655 23 | TSU101.389 24 | OCO111.823 25 | ALO103.003 26 | OCO116.995 27 | LEC117.889 28 | HAM101.426 29 | TSU117.445 30 | ZHO106.598 31 | ZHO106.669 32 | VER113.565 33 | HUL108.355 34 | OCO115.361 35 | SAI119.821 36 | NOR114.398 37 | OCO114.609 38 | LEC114.729 39 | PER113.363 40 | MAG111.643 41 | BOT106.982 42 | PER117.894 43 | VER99.952 44 | OCO117.620 45 | HUL116.570 46 | NOR103.064 47 | ALB105.254 48 | ALO112.397 49 | GAS106.775 50 | ZHO103.875 51 | STR111.719 52 | HAM107.359 53 | LEC114.119 54 | NOR112.836 55 | ALO106.080 56 | RUS101.180 57 | SAR117.718 58 | PIA106.233 59 | SAI114.436 60 | BOT120.091 61 | HUL117.570 62 | NOR106.124 63 | NOR112.802 64 | MAG121.678 65 | BOT113.802 66 | ALB109.730 67 | ALO104.645 68 | RUS110.147 69 | SAI111.612 70 | RIC113.505 71 | HUL107.052 72 | VER116.592 73 | GAS118.628 74 | PER116.564 75 | SAR117.047 76 | RIC104.666 77 | VER105.067 78 | VER101.230 79 | ZHO112.458 80 | SAI100.936 81 | HUL109.435 82 | HUL120.410 83 | HAM101.939 84 | SAR120.510 85 | PER114.299 86 | OCO103.189 87 | ALB117.641 88 | MAG120.916 89 | LEC108.591 90 | SAI100.727 91 | ZHO108.714 92 | OCO114.622 93 | VER101.167 94 | SAR118.799 95 | BOT115.129 96 | GAS104.617 97 | PER99.047 98 | RUS101.996 99 | SAR108.796 100 | ALO106.750 101 | RIC109.419 102 | OCO107.443 103 | GAS102.340 104 | ALB102.956 105 | RIC103.844 106 | PIA98.659 107 | GAS103.072 108 | SAR121.987 109 | SAR109.189 110 | SAR108.520 111 | GAS116.410 112 | PIA110.716 113 | ALB108.992 114 | RUS103.208 115 | ALB106.847 116 | ALO106.839 117 | SAI110.352 118 | OCO102.957 119 | STR103.444 120 | SAR106.179 121 | RIC100.980 122 | STR112.983 123 | RUS108.513 124 | SAR117.875 125 | ZHO120.124 126 | BOT114.363 127 | VER109.902 128 | LEC100.279 129 | GAS109.457 130 | NOR102.308 131 | PIA106.027 132 | PIA111.745 133 | GAS110.328 134 | LEC101.472 135 | RUS108.929 136 | MAG120.283 137 | GAS112.109 138 | SAR111.310 139 | VER101.528 140 | ZHO117.329 141 | RIC105.070 142 | TSU101.547 143 | OCO114.090 144 | MAG115.488 145 | STR103.972 146 | STR110.558 147 | ALB104.275 148 | PER112.275 149 | HUL103.080 150 | PIA112.884 151 | HUL121.769 152 | OCO100.701 153 | ALO106.919 154 | MAG105.762 155 | ALB112.805 156 | HAM101.629 157 | ZHO119.731 158 | ALO107.317 159 | MAG107.674 160 | RIC117.127 161 | PIA102.547 162 | RUS104.678 163 | PER111.870 164 | SAR104.316 165 | HUL115.862 166 | TSU100.186 167 | GAS100.943 168 | PER117.846 169 | SAR111.707 170 | NOR102.855 171 | RIC116.164 172 | GAS105.562 173 | MAG121.970 174 | VER109.847 175 | ZHO116.994 176 | ZHO102.958 177 | MAG103.623 178 | BOT104.626 179 | BOT106.439 180 | MAG112.395 181 | STR107.171 182 | RUS103.139 183 | ZHO112.138 184 | NOR100.647 185 | GAS111.802 186 | RIC118.423 187 | ALO116.590 188 | ZHO118.204 189 | RIC112.318 190 | NOR102.021 191 | RUS109.253 192 | SAI107.041 193 | TSU102.947 194 | ALO102.978 195 | RUS102.136 196 | ALB110.915 197 | GAS115.172 198 | LEC111.801 199 | RUS111.793 200 | GAS104.744 201 | ALB115.842 202 | GAS102.692 203 | NOR110.057 204 | RUS107.974 205 | ALB104.837 206 | SAI106.597 207 | NOR103.471 208 | ZHO103.492 209 | NOR116.559 210 | ZHO117.786 211 | LEC109.452 212 | RUS99.385 213 | STR105.303 214 | RIC113.762 215 | PER117.926 216 | PIA99.387 217 | VER111.346 218 | BOT111.277 219 | SAI118.058 220 | LEC111.842 221 | STR119.798 222 | PIA112.638 223 | ZHO107.824 224 | VER113.272 225 | PER109.564 226 | TSU104.332 227 | MAG111.575 228 | HUL105.281 229 | ALB115.611 230 | VER104.315 231 | HUL106.577 232 | NOR98.637 233 | HUL120.072 234 | BOT117.546 235 | TSU108.403 236 | ALO109.244 237 | SAR110.700 238 | ALO104.653 239 | STR117.640 240 | SAR107.800 241 | PIA117.325 242 | MAG113.106 243 | SAI107.430 244 | SAR118.339 245 | BOT104.660 246 | MAG108.497 247 | VER101.426 248 | RUS100.395 249 | PER101.154 250 | BOT106.184 251 | RUS117.147 252 | TSU104.554 253 | GAS104.450 254 | GAS109.754 255 | PIA112.187 256 | PER105.983 257 | HAM101.509 258 | GAS101.554 259 | HAM100.448 260 | PER103.535 261 | PER114.941 262 | RIC104.378 263 | TSU119.245 264 | SAI100.294 265 | MAG102.641 266 | SAR104.692 267 | RUS99.160 268 | SAI101.292 269 | MAG104.590 270 | LEC102.442 271 | VER103.607 272 | HAM98.931 273 | RUS115.663 274 | PER113.095 275 | VER109.551 276 | SAI112.369 277 | ALB105.267 278 | MAG107.962 279 | TSU116.216 280 | VER114.055 281 | STR107.093 282 | MAG115.110 283 | PER104.942 284 | NOR98.642 285 | ALO114.720 286 | BOT117.176 287 | RIC107.952 288 | SAI102.474 289 | LEC108.452 290 | ZHO107.595 291 | ZHO114.962 292 | ALB109.453 293 | NOR112.317 294 | BOT106.643 295 | PIA107.388 296 | MAG112.420 297 | VER115.342 298 | MAG117.705 299 | HUL110.031 300 | RIC114.111 301 | NOR104.411 302 | VER105.298 303 | PIA101.841 304 | HAM105.555 305 | OCO104.753 306 | PER100.406 307 | NOR116.913 308 | NOR101.307 309 | PIA115.990 310 | ALO113.202 311 | PIA104.401 312 | MAG113.338 313 | ALB117.169 314 | LEC106.221 315 | ALO106.987 316 | GAS112.888 317 | HUL102.559 318 | MAG102.071 319 | ALO100.304 320 | HAM99.946 321 | BOT115.961 322 | OCO102.186 323 | NOR101.971 324 | PER108.135 325 | BOT107.181 326 | OCO116.262 327 | TSU119.880 328 | STR101.224 329 | SAR107.668 330 | OCO116.419 331 | STR105.765 332 | RIC105.746 333 | BOT106.244 334 | VER100.606 335 | ALB115.441 336 | RIC103.766 337 | NOR104.503 338 | VER109.951 339 | LEC116.374 340 | NOR102.188 341 | BOT111.468 342 | RUS101.792 343 | HUL112.285 344 | TSU113.784 345 | PER113.265 346 | RIC107.270 347 | SAR102.133 348 | MAG118.255 349 | RIC110.178 350 | RUS117.311 351 | RIC106.349 352 | PIA110.046 353 | PER113.822 354 | HUL121.757 355 | SAR105.944 356 | PIA117.842 357 | HUL111.445 358 | RUS104.689 359 | HUL105.925 360 | HUL106.919 361 | OCO115.042 362 | MAG117.907 363 | GAS114.421 364 | LEC118.124 365 | OCO100.803 366 | ALO112.811 367 | PIA115.736 368 | ALB114.724 369 | ALO113.777 370 | STR114.731 371 | ZHO105.113 372 | RUS105.546 373 | PIA99.818 374 | SAI111.751 375 | RIC115.512 376 | GAS114.193 377 | HUL108.415 378 | MAG108.272 379 | OCO119.195 380 | PER107.701 381 | OCO115.527 382 | ALB118.476 383 | SAI106.620 384 | NOR110.879 385 | PIA106.190 386 | HAM110.558 387 | MAG105.230 388 | VER106.302 389 | OCO112.655 390 | SAR115.417 391 | ALO119.013 392 | MAG116.369 393 | GAS119.604 394 | HUL106.408 395 | MAG106.758 396 | NOR103.569 397 | SAI107.242 398 | GAS116.066 399 | RIC105.813 400 | VER107.382 401 | RUS104.965 402 | SAR111.917 403 | SAR115.581 404 | GAS100.744 405 | PIA109.745 406 | ZHO120.706 407 | STR115.998 408 | NOR111.945 409 | ALB111.252 410 | SAR102.307 411 | ALO110.715 412 | HUL114.634 413 | STR118.601 414 | RUS102.945 415 | ZHO113.886 416 | STR101.583 417 | RUS106.872 418 | STR101.223 419 | RUS109.808 420 | HAM116.648 421 | SAR105.303 422 | GAS119.866 423 | STR116.841 424 | PER108.303 425 | MAG106.405 426 | VER117.090 427 | PER110.952 428 | HAM102.820 429 | ZHO108.800 430 | GAS102.940 431 | HUL104.917 432 | HUL120.680 433 | RIC106.408 434 | ZHO115.720 435 | ZHO119.911 436 | HAM106.403 437 | RUS110.459 438 | SAR107.922 439 | LEC108.436 440 | SAR103.109 441 | VER113.969 442 | NOR99.782 443 | SAI103.064 444 | ALB121.079 445 | MAG113.752 446 | LEC114.760 447 | NOR100.062 448 | ALO117.260 449 | PER106.412 450 | SAI100.287 451 | BOT111.313 452 | GAS118.091 453 | TSU115.024 454 | RUS102.791 455 | NOR111.216 456 | PIA102.855 457 | ALB118.585 458 | RUS99.918 459 | STR110.971 460 | STR107.528 461 | SAR108.027 462 | BOT109.598 463 | PIA98.178 464 | VER113.445 465 | STR102.676 466 | VER103.198 467 | ALO106.663 468 | HAM103.470 469 | ZHO120.376 470 | OCO116.854 471 | TSU113.293 472 | ALB114.295 473 | TSU108.668 474 | ALB120.691 475 | SAR102.001 476 | HAM112.360 477 | NOR111.957 478 | HUL106.301 479 | GAS103.809 480 | MAG108.793 481 | VER112.073 482 | SAI113.569 483 | ZHO117.229 484 | OCO100.017 485 | -------------------------------------------------------------------------------- /Project-2/README.md: -------------------------------------------------------------------------------- 1 | # Introduction to Programming 2 | 3 | ## Project 2: A Chatbot 4 | 5 | ### The Problem 6 | 7 | In order to improve the service it offers to its students, the University of Poppleton is seeking to develop a new system for answering questions from prospective students, based on an interactive online chat. 8 | 9 | The budget is tight, but a project has been started to develop a prototype. You will be working on this development. 10 | 11 | #### Specification 12 | 13 | *The following is deliberately vague, but should give you the general idea. You are encouraged to add your own features, and to develop the project in any way you find interesting.* 14 | 15 | The program should start by prompting the user to enter their name. It should then display the name of the agent, who will then respond to questions. This should carry on until the user indicates that they wish to exit. 16 | 17 | Of course, there are no real agents, so the name should be randomly generated. How the chat terminates is up to you, but having the user enter ``bye`` or similar is probably a good bet. 18 | 19 | During the chat, the "agent" should spot key words in the questions. For example, if the user types a question including the word "coffee", the "agent" might respond with the opening times of the campus coffee bar. If the "agent" finds no interesting words in the question, it should just come up with some random response. 20 | 21 | #### Requirements 22 | 23 | For a pass, your program should: 24 | 25 | 1. Prompt the user to enter their name, and respond with a cheery greeting that includes the name. 26 | 1. Display the agent's name to the user (this will be a randomly generated name, perhaps chosen from a list). 27 | 1. Allow the user to enter questions, with no response. 28 | 1. Exit when the user enters ``bye``. 29 | 30 | To improve on this, your program should: 31 | 32 | 1. Detect at least *four* key words in the user's question, and respond accordingly. 33 | 2. Print a random response if a key word is not found. 34 | 3. Include the user's name in some of the responses. 35 | 4. Exit if the user enters ``quit``, ``exit`` (or any similar string). 36 | 37 | For top marks you could also: 38 | 39 | 1. Refactor the code so that the key words and responses can be configured *without* editing the program itself. 40 | 2. Complete the above using a well known format such as JSON or YAML (which will be easiest anyway). 41 | 3. Use the above to implement at least *ten* responses. 42 | 4. Mirror real-life chat systems by randomly disconnecting. 43 | 5. Create a log file of all the questions and answers in a session. 44 | 6. Add any other features that you find interesting, or even amusing. 45 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Computer Programming Assignments 2 | 3 | These are the two project tasks for the *Programming Portfolio*. 4 | 5 | Your programs should be hosted in your GitHub repo, along with your weekly work. 6 | 7 | For full details of the assessment refer to the specification on MyBeckett. For full marks you need to attempt both projects, but you do not have to complete everything. The specs in each folder set out what is required to pass, and provide suggestions for additional features. 8 | 9 | **The versions here are correct and current.** 10 | --------------------------------------------------------------------------------