From 849ff702c80940fcadc9b719b1df4b335187d9bb Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Thu, 10 Jul 2025 14:46:08 +0100 Subject: [PATCH 01/94] Updated the maths operators lesson. --- lessons/basics/example_notebook.ipynb | 199 +++++- lessons/loops_functions/For_Loop_Lesson.ipynb | 2 +- .../variables/mathematical-operators.ipynb | 624 +++++++++++++++--- notebooks/Intro_to_ASE.ipynb | 6 +- 4 files changed, 745 insertions(+), 86 deletions(-) diff --git a/lessons/basics/example_notebook.ipynb b/lessons/basics/example_notebook.ipynb index ac7c44a..13759b2 100755 --- a/lessons/basics/example_notebook.ipynb +++ b/lessons/basics/example_notebook.ipynb @@ -32,7 +32,204 @@ "outputs": [], "source": [ "# This is a Code cell, so you can write Python code\n", - "print(753+247)" + "print(753+247)\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" ] }, { diff --git a/lessons/loops_functions/For_Loop_Lesson.ipynb b/lessons/loops_functions/For_Loop_Lesson.ipynb index 0306d38..f1fb00d 100644 --- a/lessons/loops_functions/For_Loop_Lesson.ipynb +++ b/lessons/loops_functions/For_Loop_Lesson.ipynb @@ -10,7 +10,7 @@ "\n", "## Learning Outcomes\n", "- TODO\n", - "- \n", + "- TEST\n", "\n", "## Prerequisites:\n", "- Variables\n", diff --git a/lessons/variables/mathematical-operators.ipynb b/lessons/variables/mathematical-operators.ipynb index 2504642..351bd04 100644 --- a/lessons/variables/mathematical-operators.ipynb +++ b/lessons/variables/mathematical-operators.ipynb @@ -18,7 +18,7 @@ "\n", "## Arithmetic\n", "\n", - "Python is extremely relevant to numerical computing. Therefore, it is useful to outline some of the mathematical operations that can be natively performed with Python. " + "Python is extremely relevant to numerical computing. Therefore, it is useful to outline some of the mathematical operations that can be natively performed with Python. Python can only perform maths on variables of the data type ``integer`` or ``float``." ] }, { @@ -36,153 +36,614 @@ "| Exponent | $a ^ b$ | `a ** b` |\n", "| Modulo | $a \\textrm{ mod } b$ | `a % b` |\n", "\n", - "The modulo operation may be new to you, you may know it as the remainder from the division of two numbers. Other, more complicated operations are typically also available through Python libraries such as [NumPy](https://numpy.org/), which is introduced below.\n", + "The modulo operation may be new to you. You may know it as the remainder from the division of two numbers. For example, ``5 % 2`` returns ``1``, and ``10 % 4`` returns ``2``. Other, more complicated operations are typically also available through Python libraries such as [NumPy](https://numpy.org/), which is introduced below.\n", "\n", - "A single line of code may have many mathematical operations. In this event, Python will follow the standard order of operations for mathematical operations: you might know this as [BODMAS](https://en.wikipedia.org/wiki/Order_of_operations#Mnemonics)." + "A single line of code may have many mathematical operations. In this event, Python will follow the standard order of operations for mathematical operations: you might know this as [BODMAS, BIDMAS, or PEMDAS](https://en.wikipedia.org/wiki/Order_of_operations#Mnemonics).\n", + "\n", + "Maths can be done both with numbers and with variables, as long as the variable is of the type integer or float. A common error is accidentally storing a number as a string. Maths performed on strings will result in an unintentional outcome." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Example: The Quadratic Formula\n", + "### Part 1: Addition and subtraction\n", "\n", - "The quadratic formula is an expression to solve quadratic equations with the form, \n", "\n", - "$$\n", - "ax^2 + bx + c = 0,\n", - "$$\n", "\n", - "where, $x$ is an unknown value that we want to find, and $a$, $b$, and $c$ are fixed parameters. \n", - "The quadratic formula states that the value of $x$ is, \n", "\n", - "$$\n", - "x = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}.\n", - "$$\n", + "Storing numbers as variables becomes extremely useful when they are being used often, and when they are needed to a large number of significant figures. For example, instead of writing out pi or Avogadro's number each time it is used, you can store it at the beginning and only call it by the name you have given it.\n", "\n", - "This becomes relevant in chemistry if we consider the following problem: Formic acid is a weak acid with a dissociation constant $K_a$ of 1.8×10-4. \n", - "The dissociation constant relates the concentration of the H+ ions and the amount of acid dissolve, $N$, by the equation: \n", + ">``` Python \n", + "> pi = 3.141592653589\n", + "> avogadros_number = 6.02214e23\n", "\n", - "$$\n", - "K_a = \\frac{[\\textrm{H}^+]^2}{N - [\\textrm{H}^+]}.\n", - "$$\n", + "**Note**: Remember that numbers given in standard form use the letter ``e`` or ``E`` to indicate multiplying to the tenth power.\n", "\n", - "This equation can be reformulated as a quadratic equation, \n", "\n", - "$$\n", - "[\\textrm{H}^+]^2 + K_a[\\textrm{H}^+] - K_aN = 0.\n", - "$$\n", "\n", - "Therefore, we can use the quadratic formula to solve for the concentration of hydrogen ions for a given amount of dissolved acid, where $a = 1$, $b=K_a$ and $c=-K_aN$. \n", + "Below are some simple examples for adding molecular masses. In Python there are many different ways of doing the same thing, so have a look at all three and attempt them all.\n", "\n", - "We can write Python code to compute [H+] for 0.1 moles of dissolved acid. \n", - "Don't worry if some of the code specifics below are a bit new, the table below explains each of the operators. " + "Note: It is always recommended to type out these blocks of code for yourself rather than copy and pasting, as it is much better for learning." ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "K_a = 1.8e-4\n", - "N = 0.1\n", + "\n", + "\n", + "
\n", + "
\n", + " \n", + " \n", + "
You can do maths in a variable, which can be called inside a print statement.\n", + "

\n", "\n", - "a = 1.\n", - "b = K_a\n", - "c = -K_a * N\n", + ">```Python\n", + "> H = 1.008\n", + "> O = 15.999\n", + ">\n", + "> H2O = 2 * H + O\n", + "> \n", + "> print(\"The mass of water is: \" , H2O) \n", "\n", - "H_conc_plus = (-b + (b ** 2 - 4 * a * c) ** (1 / 2)) / (2 * a)\n", - "H_conc_minus = (-b - (b ** 2 - 4 * a * c) ** (1 / 2)) / (2 * a)\n", + "
\n", + " The output of this chunk of code is:
\n", + " The mass of water is: 18.015 \n", + "

☝ Note: Remember to separate objects in a print statement with commas.\n", + "
\n", + " \n", + " \n", + "
You can do maths within the print statement.

\n", "\n", - "print(f'H_conc_plus = {H_conc_plus:.5f} M')\n", - "print(f'H_conc_minus = {H_conc_minus:.5f} M')" + "\n", + ">```Python\n", + "> H = 1.008\n", + ">\n", + "> print(\"The mass of a hydrogen molecule is: \", 2 * H)\n", + "\n", + "The output of this code is:
\n", + " The mass of a hydrogen molecule is: 2.016 \n", + "\n", + "☝ Note: The value 2.016 has been calculated, but is not stored as a variable, as in the previous example. If you wanted to do further maths with the number 2.016, it would be better to store it as a variable.\n", + "\n", + "
\n", + " \n", + " \n", + "
You can do maths inside f strings. Just like previously, we can store the maths inside a variable and then call it from the f string, or do the maths within the f string itself.

\n", + "\n", + "> ```Python\n", + "> C = 12.008\n", + "> H = 1.008\n", + ">\n", + "> methane = C + 4 * H\n", + ">\n", + "> # Calling up a variable that has already been calculated\n", + "> print(f\"The mass of methane is: {methane:.2f}\")\n", + ">\n", + "> # Doing maths inside an f string\n", + "> print(f\"The mass of ethane is: {2 * C + 6 * H:.5f}\")\n", + "\n", + "The output of this is:
\n", + "The mass of methane is: 16.04
\n", + "The mass of ethane is 30.06400
\n", + "\n", + "☝ Note: The syntax :.5f indicates that the calculation should be given to 5 significant figures. The number can be changed to any number of desired significant figures.\n", + "\n", + "
\n", + "
\n", + "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Clearly, the variable `H_conc_minus` should be disregarded as it is not possible to have a negative concentration. \n", - "This means that the concentration of [H+] is 0.00415 (to 5 decimal places). " + "Now practise getting used to using simple Python maths operators in the following exercise." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## More Complex Mathematical Operations\n", + "
Practice 1 \n", "\n", - "The `numpy` module provides access to a range of advanced mathematical functions. \n", - "Information about all of the functions that the `numpy` module has can be found in the [numpy lesson](../common_libs/Introduction_to_NumPy.ipynb). To access a given function, we must `import` it `from` the module. Below, we import the base 10 logarithm function, `log10`. " + "Using variables to store the atomic masses of hydrogen, carbon, oxygen, and nitrogen, calculate the molecular masses of the following species.\n", + "\n", + "
    \n", + "1. Ethanol, doing the calculation inside a print() statement.
    \n", + "2. Cyclahexanone, doing the calculation in a variable which you then print.
    \n", + "3. Nitrobenzene, using an f string.
    \n", + "
\n", + "\n", + "\n", + "\n", + "
\n", + " πŸ’‘ Click to view answer\n", + "\n", + "Your code should look something like this:\n", + "> ```Python\n", + "> H = 1.008\n", + "> C = 12.011\n", + "> O = 15.999\n", + "> N = 14.007\n", + ">\n", + ">print(\"The mass of ethanol is: \" , 2 * C + 6 * H + O )\n", + ">\n", + "> mass_cyclahexanone = 6 * C + 10 * H + O\n", + "> print(\"The mass of cyclahexanone is: \" , mass_cyclahexanone)\n", + "> \n", + "> print(f\"The mass of nitrobenzene is: {6 * C + H * 5 + N + 2 * O} \")\n", + "\n", + "You should have got the output:
\n", + " The mass of ethanol is: 46.069
\n", + "The mass of cyclahexanone is: 98.145
\n", + "The mass of nitrobenzene is: 123.111
\n", + "\n", + "You will notice we only have to define the masses once to \n", + "\n", + "
\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Part 2: Multiplication and Division\n", + "\n", + "The interaction potential between two isolated ions in water, Na+ (ionic radius = 116 pm) and Cl+ (ionic radius = 157 pm) is given by the following equation:\n", + "\n", + "$ V(r) = \\frac{q_{Na^+} \\ q_{Cl^+}}{4 \\ \\pi \\ \\epsilon \\ \\epsilon_{0} \\ r}\\ $\n", + "\n", + "Where $q_{Na^+}$ and $q_{Cl^+}$ are the relative charges on the ions (equal to Β±the charge on an electron, 1.602-19 Coulombs), $r$ is the distance between ioninc nuclei (sum of atomic radii), $\\epsilon$ is the relative permittivity ($\\epsilon = 78.7$ in water), and $\\epsilon_0$ is the permittivity of free space and is equal to 8.85Γ—10-12 Fm-1." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Practice \n", + "\n", + " By copying out and completing this code, calculate the interaction potential of a sodium and chlorine ion in water using the above equation.\n", + "\n", + ">``` Python\n", + ">\n", + "> q_Na = \n", + "> q_Cl = \n", + "> pi = 3.1415\n", + "> e = \n", + "> e_0 = \n", + ">\n", + "> interaction_potential = \n", + ">\n", + "> print(interaction_potential)\n", + "\n", + "☝ Hint: If your maths line is getting too long, you can create a new variable with the same name as the previous one to continue the sum. e.g.
\n", + " sum = 5 + 6
\n", + "sum = sum + 10

\n", + "\n", + "Which would result in the output 21.\n", + "\n", + "\n", + "\n", + "
\n", + " πŸ’‘ Click to view answer\n", + "\n", + "Your code should look something like this:\n", + "> ```Python\n", + "> q_Na = 1.602e-19\n", + ">q_Cl = -1.602e-19\n", + ">pi = 3.1415\n", + ">e = 78.7\n", + ">e_0 = 8.85e-12\n", + ">r = 116e-12 + 167e-12\n", + ">\n", + ">interaction_potential = (q_Na*q_Cl)/(4 * pi * e * e_0 *r)\n", + ">\n", + ">print(interaction_potential)\n", + "\n", + "You should have got the output:\n", + " -1.036e-20 \n", + "\n", + "
You can see that once we have defined each of the constants, it becomes very easy to use them again later in the code.\n", + "\n", + "
\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Part 3: Indices\n", + "\n", + "The equilibrium constant of an equation\n", + "\n", + "aA + bB β‡Œ cC + dD\n", + "\n", + "is given by\n", + "\n", + "$ K_c = \\frac{[C]^c \\ [D]^d}{[A]^a \\ [B]^b} $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Practice \n", + "\n", + " Calculate the equilibrium constant to 2 significant figures for the following equation at equilibrium using Python. Work it out on a calculator and compare your answers.\n", + "\n", + "2SO2(g) + O2(g) β‡Œ 2SO3(g)\n", + "\n", + "[SO3] = 5.0 Γ— 10βˆ’2
\n", + "[O2] = 3.5 Γ— 10βˆ’3
\n", + "[SO2] = 3.0 Γ— 10βˆ’3
\n", + "\n", + "\n", + "\n", + "
\n", + " πŸ’‘ Click to view answer\n", + "\n", + "You should have got the output:\n", + " 7.9e4 \n", + "\n", + "The answer you got from Python should match your calculator.\n", + "\n", + "Think further: Double the value of SO3. What happens to the answer? What if we had lots of different concentrations we wanted to find the equilibrium constant for; how could we store the information to use later, or to plot in a graph? What if we wanted to identify what concentrations of reagents lead to the reverse reaction being favoured (equilibrium constant less than 1)? What if we wanted to do all of this at once, in one program? We will learn how to do this kind of thing using lists, for loops, and if statements in a few lesson's time. \n", + "\n", + "
\n", + "\n", + "
" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "from numpy import log10" + "### Part 4: More Complex Mathematical Operations\n", + "\n", + "Some mathematical functions are not native to Python. We must import them from another library in order to use them. One such library is NumPy. \n", + "\n", + "The `numpy` module provides access to a range of advanced mathematical functions. \n", + "Information about all of the functions that the `numpy` module has can be found in the [numpy lesson](../common_libs/Introduction_to_NumPy.ipynb). To access a given function, we must `import` it `from` the module. Below, we import the base 10 logarithm function, `log10`. We can also import all of NumPy.\n", + "\n", + "> ```Python\n", + "> from numpy import log10\n", + "\n", + "We can then use `log10` throughout the rest of the program, for example when calculating pH from proton concentration.\n", + "\n", + "> ```Python\n", + "> H_conc = 1.0e-7\n", + ">\n", + "> pH = log10(H_conc)\n", + "> pH *= -1\n", + ">\n", + "> print(pH)\n", + "\n", + "The `*=` simply means to take the previous variable also called `pH` and multiply it by -1. Only the new value of pH can be called now, so only use this if you will no longer need to call the previous value of pH. Similarly, you can use `+=`, `-=`, and `/=`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We can then use this with the result from above to compute the pH of the solution. " + "
Practice \n", + "\n", + "Using the relation\n", + "\n", + "$ pH = -log_{10}[H^+]$\n", + "\n", + "Write a program that calculates the pH of a solution in which [H+] = 2.3 Γ—10-5 M.\n", + "\n", + "\n", + "\n", + "
\n", + " πŸ’‘ Click to view answer\n", + "\n", + "You should have got the output:\n", + " 4.64 \n", + "\n", + "Think further: Is this solution acidic or basic? We can work that out quite easily, but what if we had hundreds of values for hundreds of different solutions and wanted to identify only which ones were acidic? How could we write a program that could do that very quickly?\n", + "\n", + "
\n", + "\n", + "
" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "pH = log10(H_conc_plus)\n", - "print(f'pH = {pH:.2f}')" + "You can also use the Python library `math` which gives you additional capabilities like built-in pi, and functions like ex and trigonometry. These are called in the following way:\n", + "\n", + "> ```Python\n", + "> import math\n", + ">\n", + "> # Calculate area of a circle using pi\n", + "> radius = 4\n", + "> circle_area = radius**2 * math.pi\n", + "> \n", + "> # Calculate e^6\n", + "> exp_ans = math.exp(6)\n", + ">\n", + "> # Calculate cosine of 10 in radians\n", + "> trig_ans = math.cos(10)\n", + "\n", + "The `math.` part is very important if you are importing an entire library (not just a specific function). Without it, Python won't know you are trying to call a function from the math module - it will think you have forgotten to define your own function!\n", + "\n", + "The full description of what math can do can be found [here](https://docs.python.org/3/library/math.html). Warning, trigonometric functions by default use radians!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise\n", + "## Further Practice\n", + "\n", + "### Exercise 1\n", + "\n", "Find the velocity, $v$, of a N2 molecule with a mass, $m$ of 4.6×10-26 kg at a temperature, $T$, of 293 K, given the following equation,\n", "\n", "$$\n", "v = \\sqrt{\\frac{3k_bT}{m}}, \n", "$$\n", "\n", - "where, $k_b$ is 1.38×10βˆ’23 J/K." + "where, $k_b$ is 1.38×10βˆ’23 J/K.\n", + "\n", + "\n", + "\n", + "
\n", + " πŸ’‘ Click to view a potential answer
\n", + "\n", + ">```Python\n", + ">k_b = 1.38e-23\n", + ">T = 293\n", + ">m = 4.6e-26\n", + ">\n", + ">v = ((3 * k_b * T) / m) ** (1 / 2)\n", + ">print(f'velocity = {v:.1f} m/s')\n", + "\n", + "You should have got the output:\n", + " velocity = 513.5 m/s \n", + "\n", + "Remember there are many different ways of writing the same piece of code. Don't worry about finding the 'best' solution at this point. As long as it works, you have succeeded!\n", + "\n", + "
\n", + "\n", + "\n", + "\n" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Answer" + "#### Exercise 2\n", + "\n", + "The weak acid formic acid has a dissociation constant $K_a$ that is related to the concentration of H+ ions by the following relation, where $N$ is the amount of acid dissolved.\n", + "\n", + "$$\n", + "K_a = \\frac{[\\textrm{H}^+]^2}{N - [\\textrm{H}^+]}.\n", + "$$\n", + "\n", + "This can be rearranged to the form $ax^2 + bx + c = 0$ and solved using the quadratic formula.\n", + "\n", + "$$\n", + "[\\textrm{H}^+]^2 + K_a[\\textrm{H}^+] - K_aN = 0.\n", + "$$\n", + "\n", + "Calculate the concentration of H+ ions when $K_a$ = 1.8 ×10-4 and $N$ = 0.1 M. What pH is this?\n", + "\n", + " Useful:
\n", + "$\n", + "x = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}.\n", + "$\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + " πŸ’‘ Click to view a potential answer
\n", + "\n", + ">```Python\n", + "> # Import all relevant libraries and functions at the beginning\n", + ">from numpy import log10\n", + ">\n", + "> # Define the variables we know\n", + "> K_a = 1.8e-4\n", + "> N = 0.1\n", + ">\n", + "> # Assign a, b, and c by comparing the two forms\n", + ">a = 1\n", + ">b = K_a\n", + ">c = -K_a * N\n", + ">\n", + "> # Calculate the two potential answers of the quadratic formula\n", + "> # To perform a square root, we are raising to the power of 1/2\n", + ">H_conc_plus = (-b + (b ** 2 - 4 * a * c) ** (1 / 2)) / (2 * a)\n", + ">H_conc_minus = (-b - (b ** 2 - 4 * a * c) ** (1 / 2)) / (2 * a)\n", + ">\n", + "> print(f'H_conc_plus = {H_conc_plus:.5f} M')\n", + "> print(f'H_conc_minus = {H_conc_minus:.5f} M')\n", + "> \n", + "> # Find and print the pH\n", + "> pH = log10(H_conc_plus) * -1\n", + "> print(f'pH = {pH:.2f}')\n", + "\n", + "You should have got the output:
\n", + " H_conc_plus = 0.00415 M
\n", + "H_conc_minus = -0.00433 M
\n", + "pH = 2.38
\n", + "\n", + "The variable `H_conc_minus` can be disregarded, as it is not possible to have a negative concentration. It is important to run your code often as you write it, to identify if there are any errors, or if you are using the right values.\n", + "\n", + "Even though we don't use `log10` until the end, we have imported it at the beginning of our code. This is good practice, as it both looks neater and reduces the likelihood of importing the same library or function multiple times. \n", + "\n", + "When we are doing complicated maths, it is good to leave comments describing what is happening to make it easier for someone else to come along and edit it. Or for yourself when you come back to look at it after a long time!\n", + "\n", + " Think further: Writing out the maths for that formula takes quite a long time, and it is easy to make a mistake. If we wanted to do multiple calculations with it, we would only want to write it out once. We could do this by defining our own function (covered later in the course), which would allow us to perform the calculation using only a shorthand, such as solve_quadratic().\n", + "\n", + "
" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "k_b = 1.38e-23\n", - "T = 293\n", - "m = 4.6e-26\n", + "### Exercise 3\n", + "\n", + "The code below will not work. Identify why and correct it so that it does work. Run it yourself, and keep looking at your error message to figure out what is wrong. You should get an output of `4.86cm`.\n", + "\n", + ">```Python\n", + "># Find the length, x, of one side of a triangle using the cosine rule\n", + ">\n", + "> math\n", + ">\n", + ">side_b = \"7\" #cm\n", + ">side_c = 5 cm\n", + ">angle_A = 44 # degrees\n", + ">\n", + ">x = side_b^2 + side_C**2 - (2 * side_b side_c * cos(angle_A)\n", + ">x *= 1/2\n", + ">\n", + ">print(x \"cm\")\n", + "\n", "\n", - "v = ((3 * k_b * T) / m) ** (1 / 2)\n", - "print(f'velocity = {v:.1f} m/s')" + "\n", + "\n", + "\n", + "
\n", + " πŸ’‘ Click to view the correct answer
\n", + "\n", + "Here is the same code with the mistakes corrected. Did you find them all or did you have to look at the answer?\n", + "\n", + ">```Python\n", + "># Find the length, x, of one side of a triangle using the cosine rule

\n", + ">\n", + ">import math\n", + ">\n", + ">side_b = 7 # cm\n", + ">side_c = 5 # cm\n", + ">angle_A = math.radians(44) # radians\n", + ">\n", + ">x = side_b**2 + side_c**2 - (2 * side_b * side_c * math.cos(angle_A))\n", + ">x **= 1/2\n", + ">\n", + ">print(x , \"cm\")\n", + "\n", + "Here are a list of the errors and their corrections, in the order they appear.\n", + "- You must `import math`, not just write `math`.\n", + "- The variable `side_b` should be an integer, not a string, or maths cannot be done on it. Remove the quotation marks from around the number to make it so.\n", + "- The variable `side_c` should have its units in an inline comment, not just floating on their own.\n", + "- `angle_A` is given in degrees, however the module `math` does trigonometry in radians. You can change degrees into radians using the `math` function `math.radians()`.\n", + "- The maths operator for exponents is `**` not `^`.\n", + "- In the sum, the 'c' in `side_C` is capitalised when it shouldn't be. Variables are case sensitive. Since `side_c` was defined the first time using a lowercase 'c', all following instances should also use a lowercase letter.\n", + "- There is a missing multiplication symbol `*` between `side_b` and `side_c`.\n", + "- 'Cos' is a function from the module 'math'. Therefore, to use it we should do `math.cos(angle_A)`, not just `cos(angle_A)`. The function also only takes angles in radians, whereas the angle is currently in degrees. This \n", + "- The sum is missing a closing bracket. All opened brackets must be closed in Python.\n", + "- When doing the square root of `x`, the maths operator for exponents in this case should be `**=`, not `*=`.\n", + "- There should be a comma between `x` and `\"cm\"` in the print statement.\n", + "\n", + "You can see the importance of correct syntax!\n", + "\n", + "
" ] }, { @@ -194,22 +655,23 @@ "- Develop familiarity with basic mathematical operations in Python, including `+`, `-`, `*`, `/`. \n", "- Understand how to access some additiona, more complex mathematical function using the `numpy` module. \n", "\n", - "## TODO \n", + "## Summary \n", "\n", - "- Add more exercises for other operations" + "- Python's basic maths uses the symbols `+`,`-`,`*`,`/`, `**`.\n", + "- Use `%`, \"modulo\", to find the remainder of a division.\n", + "- Use order of operations (BODMAS/BIDMAS/PEMDAS) to ensure Python does the correct sum.\n", + "- Assign your sum a variable to be able to call that value forward later. \n", + "- Inside an f string, use `:.3f` to print your answer to 3 significant figures. Changing the number changes the number of significant figures produced in the answer.\n", + "- Use `+=`, `-=`, `*=`, etc. to change the value of a variable.\n", + "- For more complex functions, import them from a library such as `numpy` or `math`. If you import the whole library, you must reference the library using `library.function()`, like in the sum `ans = math.sin(1)`. \n", + "- Make sure to place the lines of code importing any functions or libraries at the beginning of the program.\n", + "- Leave sensible comments describing what is happening in the program, to make it easier to come back to later." ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "base", "language": "python", "name": "python3" }, @@ -223,7 +685,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.12.3" } }, "nbformat": 4, diff --git a/notebooks/Intro_to_ASE.ipynb b/notebooks/Intro_to_ASE.ipynb index d373fe7..ae44636 100644 --- a/notebooks/Intro_to_ASE.ipynb +++ b/notebooks/Intro_to_ASE.ipynb @@ -382,9 +382,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "\"Python/Mu (mu_venv-38-20250225-145306)\"", "language": "python", - "name": "python3" + "name": "mu_venv-38-20250225-145306" }, "language_info": { "codemirror_mode": { @@ -396,7 +396,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.1" + "version": "3.8.12" } }, "nbformat": 4, From e5274ed6f584da92ed696d6c3a8ed1d5abcf9f52 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Thu, 10 Jul 2025 14:56:47 +0100 Subject: [PATCH 02/94] updated mathematical-operators lesson --- lessons/variables/mathematical-operators.ipynb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lessons/variables/mathematical-operators.ipynb b/lessons/variables/mathematical-operators.ipynb index 351bd04..f64f339 100644 --- a/lessons/variables/mathematical-operators.ipynb +++ b/lessons/variables/mathematical-operators.ipynb @@ -381,6 +381,8 @@ "\n", "We can then use `log10` throughout the rest of the program, for example when calculating pH from proton concentration.\n", "\n", + "$ pH = -log_{10}[H^+]$\n", + "\n", "> ```Python\n", "> H_conc = 1.0e-7\n", ">\n", @@ -636,7 +638,7 @@ "- The maths operator for exponents is `**` not `^`.\n", "- In the sum, the 'c' in `side_C` is capitalised when it shouldn't be. Variables are case sensitive. Since `side_c` was defined the first time using a lowercase 'c', all following instances should also use a lowercase letter.\n", "- There is a missing multiplication symbol `*` between `side_b` and `side_c`.\n", - "- 'Cos' is a function from the module 'math'. Therefore, to use it we should do `math.cos(angle_A)`, not just `cos(angle_A)`. The function also only takes angles in radians, whereas the angle is currently in degrees. This \n", + "- 'Cos' is a function from the module 'math'. Therefore, to use it we should do `math.cos(angle_A)`, not just `cos(angle_A)`. The function also only takes angles in radians, so make sure your input here is in radians, not degrees!\n", "- The sum is missing a closing bracket. All opened brackets must be closed in Python.\n", "- When doing the square root of `x`, the maths operator for exponents in this case should be `**=`, not `*=`.\n", "- There should be a comma between `x` and `\"cm\"` in the print statement.\n", From 9ebc4f8678467f5a60c7f760d68bae57798b5986 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Thu, 10 Jul 2025 16:03:43 +0100 Subject: [PATCH 03/94] fixed it --- .../variables/mathematical-operators.ipynb | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/lessons/variables/mathematical-operators.ipynb b/lessons/variables/mathematical-operators.ipynb index f64f339..f6d8649 100644 --- a/lessons/variables/mathematical-operators.ipynb +++ b/lessons/variables/mathematical-operators.ipynb @@ -428,6 +428,38 @@ "" ] }, + { + "cell_type": "markdown", + "
Practice \n", + "\n", + "Using the relation\n", + "\n", + "$ pH = -log_{10}[H^+]$\n", + "\n", + "Write a program that calculates the pH of a solution in which [H+] = 2.3 Γ—10-5 M.\n", + "\n", + "\n", + "\n", + "
\n", + " πŸ’‘ Click to view answer\n", + "\n", + "You should have got the output:\n", + " 4.64 \n", + "\n", + "Think further: Is this solution acidic or basic? We can work that out quite easily, but what if we had hundreds of values for hundreds of different solutions and wanted to identify only which ones were acidic? How could we write a program that could do that very quickly?\n", + "\n", + "
\n", + "\n", + "
" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -669,6 +701,16 @@ "- Make sure to place the lines of code importing any functions or libraries at the beginning of the program.\n", "- Leave sensible comments describing what is happening in the program, to make it easier to come back to later." ] + "- Python's basic maths uses the symbols `+`,`-`,`*`,`/`, `**`.\n", + "- Use `%`, \"modulo\", to find the remainder of a division.\n", + "- Use order of operations (BODMAS/BIDMAS/PEMDAS) to ensure Python does the correct sum.\n", + "- Assign your sum a variable to be able to call that value forward later. \n", + "- Inside an f string, use `:.3f` to print your answer to 3 significant figures. Changing the number changes the number of significant figures produced in the answer.\n", + "- Use `+=`, `-=`, `*=`, etc. to change the value of a variable.\n", + "- For more complex functions, import them from a library such as `numpy` or `math`. If you import the whole library, you must reference the library using `library.function()`, like in the sum `ans = math.sin(1)`. \n", + "- Make sure to place the lines of code importing any functions or libraries at the beginning of the program.\n", + "- Leave sensible comments describing what is happening in the program, to make it easier to come back to later." + ] } ], "metadata": { From 752f3b83f94e81adf49ff587b830efc13036ca91 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Thu, 10 Jul 2025 16:05:35 +0100 Subject: [PATCH 04/94] fixed it again --- .../variables/mathematical-operators.ipynb | 42 ------------------- 1 file changed, 42 deletions(-) diff --git a/lessons/variables/mathematical-operators.ipynb b/lessons/variables/mathematical-operators.ipynb index f6d8649..f64f339 100644 --- a/lessons/variables/mathematical-operators.ipynb +++ b/lessons/variables/mathematical-operators.ipynb @@ -428,38 +428,6 @@ "" ] }, - { - "cell_type": "markdown", - "
Practice \n", - "\n", - "Using the relation\n", - "\n", - "$ pH = -log_{10}[H^+]$\n", - "\n", - "Write a program that calculates the pH of a solution in which [H+] = 2.3 Γ—10-5 M.\n", - "\n", - "\n", - "\n", - "
\n", - " πŸ’‘ Click to view answer\n", - "\n", - "You should have got the output:\n", - " 4.64 \n", - "\n", - "Think further: Is this solution acidic or basic? We can work that out quite easily, but what if we had hundreds of values for hundreds of different solutions and wanted to identify only which ones were acidic? How could we write a program that could do that very quickly?\n", - "\n", - "
\n", - "\n", - "
" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -701,16 +669,6 @@ "- Make sure to place the lines of code importing any functions or libraries at the beginning of the program.\n", "- Leave sensible comments describing what is happening in the program, to make it easier to come back to later." ] - "- Python's basic maths uses the symbols `+`,`-`,`*`,`/`, `**`.\n", - "- Use `%`, \"modulo\", to find the remainder of a division.\n", - "- Use order of operations (BODMAS/BIDMAS/PEMDAS) to ensure Python does the correct sum.\n", - "- Assign your sum a variable to be able to call that value forward later. \n", - "- Inside an f string, use `:.3f` to print your answer to 3 significant figures. Changing the number changes the number of significant figures produced in the answer.\n", - "- Use `+=`, `-=`, `*=`, etc. to change the value of a variable.\n", - "- For more complex functions, import them from a library such as `numpy` or `math`. If you import the whole library, you must reference the library using `library.function()`, like in the sum `ans = math.sin(1)`. \n", - "- Make sure to place the lines of code importing any functions or libraries at the beginning of the program.\n", - "- Leave sensible comments describing what is happening in the program, to make it easier to come back to later." - ] } ], "metadata": { From 590f781cd3a5fb00e28ccec1e6617b622224082d Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Fri, 11 Jul 2025 13:12:05 +0100 Subject: [PATCH 05/94] Removed import NumPy, added floored division, and cleaned. --- .../variables/mathematical-operators.ipynb | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/lessons/variables/mathematical-operators.ipynb b/lessons/variables/mathematical-operators.ipynb index f64f339..40bb06c 100644 --- a/lessons/variables/mathematical-operators.ipynb +++ b/lessons/variables/mathematical-operators.ipynb @@ -35,8 +35,11 @@ "| Division | $a \\div b$ | `a / b` |\n", "| Exponent | $a ^ b$ | `a ** b` |\n", "| Modulo | $a \\textrm{ mod } b$ | `a % b` |\n", + "| Floored Division | $a // b$ | `a // b` |\n", "\n", - "The modulo operation may be new to you. You may know it as the remainder from the division of two numbers. For example, ``5 % 2`` returns ``1``, and ``10 % 4`` returns ``2``. Other, more complicated operations are typically also available through Python libraries such as [NumPy](https://numpy.org/), which is introduced below.\n", + "The modulo and floored division operations may be new to you. Modulo computes the remainder from the division of two numbers. For example, ``5 % 2`` returns ``1``, and ``19 % 4`` returns ``3``. Floored division is the partner to modulo, and returns only the integer part of the sum. For example. ``5 // 2`` returns ``2``, and ``19 // 4`` returns ``4``. Try it for yourself.\n", + "\n", + "Other, more complicated operations are typically also available through Python libraries such as [NumPy](https://numpy.org/), which is introduced below.\n", "\n", "A single line of code may have many mathematical operations. In this event, Python will follow the standard order of operations for mathematical operations: you might know this as [BODMAS, BIDMAS, or PEMDAS](https://en.wikipedia.org/wiki/Order_of_operations#Mnemonics).\n", "\n", @@ -371,13 +374,12 @@ "source": [ "### Part 4: More Complex Mathematical Operations\n", "\n", - "Some mathematical functions are not native to Python. We must import them from another library in order to use them. One such library is NumPy. \n", + "Some mathematical functions are not native to Python. We must import them from another library in order to use them. One of the most basic and useful is the built-in Python module called ``math`` (documentation can be found [here](https://docs.python.org/3/library/math.html)).\n", "\n", - "The `numpy` module provides access to a range of advanced mathematical functions. \n", - "Information about all of the functions that the `numpy` module has can be found in the [numpy lesson](../common_libs/Introduction_to_NumPy.ipynb). To access a given function, we must `import` it `from` the module. Below, we import the base 10 logarithm function, `log10`. We can also import all of NumPy.\n", + "To access a given function, we must `import` it `from` the module. Below, we import the base 10 logarithm function, `log10`.\n", "\n", "> ```Python\n", - "> from numpy import log10\n", + "> from math import log10\n", "\n", "We can then use `log10` throughout the rest of the program, for example when calculating pH from proton concentration.\n", "\n", @@ -432,7 +434,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "You can also use the Python library `math` which gives you additional capabilities like built-in pi, and functions like ex and trigonometry. These are called in the following way:\n", + "You can also import the entire module or library, giving you access to all the functions within it. If you import the entire library/module, you can then call their functions in the following way:\n", "\n", "> ```Python\n", "> import math\n", @@ -442,14 +444,16 @@ "> circle_area = radius**2 * math.pi\n", "> \n", "> # Calculate e^6\n", - "> exp_ans = math.exp(6)\n", + "> exp_answer = math.exp(6)\n", ">\n", "> # Calculate cosine of 10 in radians\n", "> trig_ans = math.cos(10)\n", "\n", "The `math.` part is very important if you are importing an entire library (not just a specific function). Without it, Python won't know you are trying to call a function from the math module - it will think you have forgotten to define your own function!\n", "\n", - "The full description of what math can do can be found [here](https://docs.python.org/3/library/math.html). Warning, trigonometric functions by default use radians!" + "Warning, trigonometric functions by default use radians!\n", + "\n", + "There are lots of libraries and modules which you can import, which serve different purposes, such as the module ``NumPy`` (more information can be found in the [numpy lesson](../common_libs/Introduction_to_NumPy.ipynb)), and the graphing library [matplotlib.pyplot](../common_libs/python-in-chem_pyplot_basics_SM.ipynb). " ] }, { @@ -539,7 +543,7 @@ "\n", ">```Python\n", "> # Import all relevant libraries and functions at the beginning\n", - ">from numpy import log10\n", + ">from math import log10\n", ">\n", "> # Define the variables we know\n", "> K_a = 1.8e-4\n", @@ -617,7 +621,7 @@ "Here is the same code with the mistakes corrected. Did you find them all or did you have to look at the answer?\n", "\n", ">```Python\n", - "># Find the length, x, of one side of a triangle using the cosine rule

\n", + "># Find the length, x, of one side of a triangle using the cosine rule\n", ">\n", ">import math\n", ">\n", From 12803d1206e81280c4533add198f5e485dd0e87e Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Fri, 11 Jul 2025 13:35:09 +0100 Subject: [PATCH 06/94] Pointed to info on importing modules Added temp import modules lesson --- _toc.yml | 1 + lessons/loops_functions/tut_import_mod.ipynb | 66 +++++++++++++++++++ .../variables/mathematical-operators.ipynb | 1 + 3 files changed, 68 insertions(+) create mode 100644 lessons/loops_functions/tut_import_mod.ipynb diff --git a/_toc.yml b/_toc.yml index 9376e7d..be74778 100644 --- a/_toc.yml +++ b/_toc.yml @@ -20,6 +20,7 @@ parts: - file: lessons/loops_functions/For_Loop_Lesson.ipynb - file: lessons/loops_functions/PyinC_while_loops_WIP.ipynb - file: lessons/loops_functions/functions_and_scope.ipynb + - file: lessons/loops_functions/tut_import_mod.ipynb - file: lessons/files.md sections: - file: lessons/files/reading_files.ipynb diff --git a/lessons/loops_functions/tut_import_mod.ipynb b/lessons/loops_functions/tut_import_mod.ipynb new file mode 100644 index 0000000..f5f8f5a --- /dev/null +++ b/lessons/loops_functions/tut_import_mod.ipynb @@ -0,0 +1,66 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "1ef7b1b3", + "metadata": {}, + "source": [ + "# Importing Modules\n", + "\n", + "## Learning Outcomes\n", + " How to import external libraries into your code\n", + "\n", + "\n", + "Sometimes, we wish to use prewritten libraries. For example the numpy libraries for data analysis. To do this we use the import command\n", + "\n", + "```python\n", + "#import numpy into the code\n", + "import numpy\n", + "\n", + "#import numpy and give it an alias\n", + "\n", + "import numpy as np\n", + "\n", + "#import the whole math module\n", + "import math\n", + "\n", + "#import just the square root function\n", + "from math import sqrt\n", + "```\n", + "You then call the function from the library you imported by typing the library name (or alias) dot the function name e.g\n", + "\n", + "```python\n", + "import math\n", + "\n", + "\n", + " a = math.sqrt(4)\n", + "\n", + "\n", + "```\n", + "\n", + "in some tutorials it will be suggested you use the \n", + "```python \n", + "from [] import *\n", + "```\n", + "this is bad practise as it imports everything and removes the need to reference the function using the dot notation above. This can lead to name clashes between functions and unexpected behaviour.\n", + "\n", + "we can also import our own modules into our code. This can lead to much simpler code.\n", + "\n", + "If we have a python script file called my_funcs.py\n", + "\n", + "We can import any functions in this script using the following\n", + "\n", + "```python\n", + "import my_funcs as mine\n", + "```" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/lessons/variables/mathematical-operators.ipynb b/lessons/variables/mathematical-operators.ipynb index 40bb06c..772ee17 100644 --- a/lessons/variables/mathematical-operators.ipynb +++ b/lessons/variables/mathematical-operators.ipynb @@ -377,6 +377,7 @@ "Some mathematical functions are not native to Python. We must import them from another library in order to use them. One of the most basic and useful is the built-in Python module called ``math`` (documentation can be found [here](https://docs.python.org/3/library/math.html)).\n", "\n", "To access a given function, we must `import` it `from` the module. Below, we import the base 10 logarithm function, `log10`.\n", + "(more information on importing modules will be found later in the [tutorials](/lessons/loops_functions/tut_import_mod.ipynb))\n", "\n", "> ```Python\n", "> from math import log10\n", From 804903bf334e5aaae1e7c44fbc5b942e6e70ebaa Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Fri, 11 Jul 2025 17:42:11 +0100 Subject: [PATCH 07/94] Split comparisons and conditions and renamed files, updated TOC to reflect. Created 'intro to Python' file in 'Python basics'. --- _toc.yml | 4 +- lessons/basics/python_introduction.ipynb | 25 ++ .../conditional_statements.ipynb | 202 +++++++++ .../{Conditions.ipynb => Comparisons.ipynb} | 421 ++++++++---------- .../variables/mathematical-operators.ipynb | 44 +- 5 files changed, 427 insertions(+), 269 deletions(-) create mode 100644 lessons/basics/python_introduction.ipynb create mode 100644 lessons/loops_functions/conditional_statements.ipynb rename lessons/variables/{Conditions.ipynb => Comparisons.ipynb} (52%) diff --git a/_toc.yml b/_toc.yml index 9376e7d..725d340 100644 --- a/_toc.yml +++ b/_toc.yml @@ -10,13 +10,15 @@ parts: sections: - file: lessons/basics/write_run_python.md - file: lessons/basics/notebook.md + - file: lessons/basics/python_introduction.ipynb - file: lessons/manipulating_variables.md sections: - file: lessons/variables/Variable_data_types.ipynb - file: lessons/variables/mathematical-operators.ipynb - - file: lessons/variables/Conditions.ipynb + - file: lessons/variables/Comparisons.ipynb - file: lessons/organising_code.md sections: + - file: lessons/loops_functions/conditional_statements.ipynb - file: lessons/loops_functions/For_Loop_Lesson.ipynb - file: lessons/loops_functions/PyinC_while_loops_WIP.ipynb - file: lessons/loops_functions/functions_and_scope.ipynb diff --git a/lessons/basics/python_introduction.ipynb b/lessons/basics/python_introduction.ipynb new file mode 100644 index 0000000..eaf1e53 --- /dev/null +++ b/lessons/basics/python_introduction.ipynb @@ -0,0 +1,25 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "23173911", + "metadata": {}, + "source": [ + "# Introduction to Coding with Python\n", + "\n", + "Covering:\n", + "- What Python is (a high-level programming language)\n", + "- Python syntax, highlighting, and comments (incl. Python is case sensitiev)\n", + "- Writing and running programs\n", + "- File management" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/lessons/loops_functions/conditional_statements.ipynb b/lessons/loops_functions/conditional_statements.ipynb new file mode 100644 index 0000000..80b2a6a --- /dev/null +++ b/lessons/loops_functions/conditional_statements.ipynb @@ -0,0 +1,202 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "1a27a6a9", + "metadata": {}, + "source": [ + "## Conditional Statements" + ] + }, + { + "cell_type": "markdown", + "id": "87bc9c8a", + "metadata": {}, + "source": [ + "## Learning Outcomes\n", + "\n", + "- To see how we can build statements and scripts that can do different tasks when we give them different inputs." + ] + }, + { + "cell_type": "markdown", + "id": "3ad88990", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "\n", + "- Variables\n", + "- Mathematical operators\n", + "- Comparisons (Boolean logic)" + ] + }, + { + "cell_type": "markdown", + "id": "f7ea7d89", + "metadata": {}, + "source": [ + "How are these comparisons useful for working with actual chemical data though? Writing a comparison for every data point would get very tiring! This is where conditional statements come in -- we can use the comparisons we have learned about to check **if** certain relationships are true as part of our data sets, and then either do something or not, or even doing a different operation...\n", + "\n", + "We do this, sensibly, through what are called **if statements**. If statements require specific syntax:\n", + "```\n", + "if :\n", + " what to do if statement is true\n", + "```\n", + "\n", + "When the statement after ```if``` is True, then Python will go on to do whatever is **indented**. Indentation is the way for python to know what is part of the ```if``` statement and what is the rest of the code. As a standard, indenting is 4 spaces before the code line -- many programs like jupyter notebook will automatically do this indenting after the if statement is written and you move to a new line with the Return key.\n", + "\n", + "If what comes after the ```if``` is False, then the indented code is ignored, and Python continues onto whatever the next non-indented lines are. As with loops, there must be a colon after the if statement, and there must be an indentation -- not having these can cause errors." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d9b702f4", + "metadata": {}, + "outputs": [], + "source": [ + "x = \"CH4\"\n", + "y = \"CH4\"\n", + "if x == y:\n", + " ### This part of the code is indented, and is run if the if statement is true\n", + " print(\"Yes, these are the same formula\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c69b17b6", + "metadata": {}, + "outputs": [], + "source": [ + "x = \"CH4\"\n", + "y = \"NH3\"\n", + "if x == y:\n", + " print(\"Yes, these are the same formula\")\n", + "\n", + "print(\"The indentation has ended, this code line is always run\")" + ] + }, + { + "cell_type": "markdown", + "id": "5d5db013", + "metadata": {}, + "source": [ + "What if we want to have multiple different categories and multiple different outcomes? We can use ```if... else``` if we want to do one thing if a statement is true, and then something else for for all other possibilities. Alternatively, if we have more than two decisions to make, we can use ```if... elif... else```, with ```elif``` statements acting like other if statements that are checked if they are true. For example:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "343cdbb0", + "metadata": {}, + "outputs": [], + "source": [ + "x = \"CH4\"\n", + "if x == \"CH4\":\n", + " print(\"This compound is methane\")\n", + "elif x != \"NH3\":\n", + " print(\"This compound is not ammonia\")\n", + "else:\n", + " print(\"This compound is ammonia\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4a37476f", + "metadata": {}, + "outputs": [], + "source": [ + "x = \"H2O\"\n", + "if x == \"CH4\":\n", + " print(\"This compound is methane\")\n", + "elif x != \"NH3\":\n", + " print(\"This compound is not ammonia\")\n", + "else:\n", + " print(\"This compound is ammonia\")" + ] + }, + { + "cell_type": "markdown", + "id": "bdb5a7c0", + "metadata": {}, + "source": [ + "Be careful, conditional statements are strictly ordered - if the first ```if``` is True, then that code block will be run, while all further ```elif``` statements are ignored, even if they would also be true!" + ] + }, + { + "cell_type": "markdown", + "id": "3245cb35", + "metadata": {}, + "source": [ + "### Exercise" + ] + }, + { + "cell_type": "markdown", + "id": "2fe602cb", + "metadata": {}, + "source": [ + "The following commented code needs the correct operator to replace the **BLANK** in the code to output True - what replaces the **BLANK**?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e554e279", + "metadata": {}, + "outputs": [], + "source": [ + "atomic_no_of_nitrogen = 7\n", + "atomic_no_of_fluorine = 9" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bd1b8fc0", + "metadata": {}, + "outputs": [], + "source": [ + "atomic_no_of_nitrogen BLANK atomic_no_of_fluorine" + ] + }, + { + "cell_type": "markdown", + "id": "4451c784", + "metadata": {}, + "source": [ + "### Answer" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e49d983f", + "metadata": {}, + "outputs": [], + "source": [ + "### ANSWER: <, <= or != all work\n", + "atomic_no_of_nitrogen < atomic_no_of_fluorine" + ] + }, + { + "cell_type": "markdown", + "id": "da0c5f62", + "metadata": {}, + "source": [ + "## Learning Outcomes\n", + "\n", + "- How to use ```if...elif...else``` statements to do certain tasks only if certain comparisons or statements are the case." + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/lessons/variables/Conditions.ipynb b/lessons/variables/Comparisons.ipynb similarity index 52% rename from lessons/variables/Conditions.ipynb rename to lessons/variables/Comparisons.ipynb index 748ae87..5ebae9d 100644 --- a/lessons/variables/Conditions.ipynb +++ b/lessons/variables/Comparisons.ipynb @@ -5,7 +5,7 @@ "id": "bfa23092-475a-4e40-a6cd-538bb1b16a5a", "metadata": {}, "source": [ - "# Comparisons and Conditional Statements" + "# Comparison Statements (Boolean Logic)" ] }, { @@ -21,9 +21,8 @@ "id": "b56ee7b2-cffc-471e-9fd2-bf2b2c437894", "metadata": {}, "source": [ - "- To understand how in python we can compare objects to each other.\n", - "- To understand how we can use logical statements to perform multiple comparisons or assessments at once.\n", - "- To see how we can build statements and scripts that can do different tasks when we give them different inputs." + "- To understand how in Python we can compare objects to each other.\n", + "- To understand how we can use logical statements to perform multiple comparisons or assessments at once.\n" ] }, { @@ -57,39 +56,48 @@ "id": "423201d6-956c-4bab-973f-981ee93188ef", "metadata": {}, "source": [ - "Python has a number of different ways in which it can compare objects, variables or just numbers. These can be very useful both for simple tasks (\"Does H$_2$O have a higher molecular weight than NH$_3$\") and more complex ones (\"How do we know that this peak in an IR spectrum is above the baseline noise?\")\n", + "Python has a number of different ways in which it can compare objects, variables or just numbers. These can be very useful both for simple tasks (\"Does H2O have a higher molecular weight than NH3\") and more complex ones (\"How do we know that this peak in an IR spectrum is above the baseline noise?\")\n", "\n", - "Let us start by looking at a few of the [mathematical operators](./mathematical-operators.ipynb) (either identical or very similar to how you would write them down on paper) that can be used directly in Python:" + "In computing, the term Boolean means a result that can only have one of two possible values: ``True`` or ``False``. Using comparison operators (listed in the below table) we can compare two values which would then result in a Boolean output (True or False). " ] }, { - "cell_type": "code", - "execution_count": null, - "id": "de0e669c-1c14-47ad-b12d-5b25c0fdaf35", - "metadata": {}, - "outputs": [], - "source": [ - "4 > 2" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e5d946d4-36d2-4114-bb2f-326975ee0ee5", - "metadata": {}, - "outputs": [], - "source": [ - "5.1 < 3.6" + "cell_type": "markdown", + "id": "230060d7", + "metadata": {}, + "source": [ + "| Operator | Definition | Example |\n", + "| --------- | --------- | -------|\n", + "| == | is equal to | ``a == b`` |\n", + "| ! = | is not equal to | ``a != b`` |\n", + "| > | is greater than | ``a > b`` |\n", + "| < | is less than | ``a < b`` |\n", + "| >= | is greater than or equal to | ``a >= b``|\n", + "| <= | is less than or equal to | ``a <= b`` |\n", + "| is | are the same object | ```a is b``` |\n", + "\n", + "Watch out for the 'is equal to' comparison (```a == b```). It must be two equals signs. Using only one equals sign instead sets the value of varible ``a`` to the value of ``b``, it does not check if they are equal." ] }, { - "cell_type": "code", - "execution_count": null, - "id": "dd5f7b7d-b9c7-411c-bef6-af9154332c9f", + "cell_type": "markdown", + "id": "8bceb3d5", "metadata": {}, - "outputs": [], "source": [ - "4 >= 4" + "> ```Python\n", + "> 4 > 2\n", + "\n", + "Returns ``True``\n", + "\n", + "> ```Python\n", + "> 5.1 < 3.6 \n", + "\n", + "Returns ``False``\n", + "\n", + ">```Python\n", + "> 4 >= 4 \n", + "\n", + "Returns ``True``" ] }, { @@ -103,33 +111,24 @@ ] }, { - "cell_type": "code", - "execution_count": null, - "id": "962ed8f3-bb4e-4826-a348-4d42fb38025e", - "metadata": {}, - "outputs": [], - "source": [ - "4 == 4" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "39103a6d-8149-4a1e-9be8-f59f8231d729", - "metadata": {}, - "outputs": [], - "source": [ - "4 != 4" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ff5c56d6-1170-4464-8ce3-23395e43a744", + "cell_type": "markdown", + "id": "97afac99", "metadata": {}, - "outputs": [], "source": [ - "3.1 != 3" + ">```Python\n", + "> 4 == 4\n", + "\n", + "Returns ``True``\n", + "\n", + ">```Python\n", + "> 4 != 4\n", + "\n", + "Returns ``False``\n", + "\n", + ">```Python\n", + "> 3.1 != 3\n", + "\n", + "Returns ``True``" ] }, { @@ -139,86 +138,117 @@ "source": [ "The double equals ```==``` is used to compare if two values are equal, while ```!=``` checks if two values are not equal.\n", "\n", - "What about other data types? Let us try some examples of strings or lists using the ```==``` comparison operator." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2331f446-16b9-4b2a-82ca-c7c90aeaa15c", - "metadata": {}, - "outputs": [], - "source": [ - "\"CH4\" == \"CH4\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3c29dc42-ae21-4a7f-beff-8c115fb3a7c8", - "metadata": {}, - "outputs": [], - "source": [ - "\"NH3\" == \"H3N\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "be03a6a0-eff3-4135-9258-97c46a00221d", - "metadata": {}, - "outputs": [], - "source": [ - "[2, 3, 5] == [2, 3, 4]" + "What about other data types? Let us try some examples of strings or lists using the ```==``` comparison operator.\n", + "\n", + "> ```Python\n", + "> \"CH4\" == \"CH4\"\n", + "\n", + "Returns ``True``\n", + "\n", + ">```Python\n", + "> \"NH3\" == \"H3N\"\n", + "\n", + "Returns ``False``. The numerals are not in the same order.\n", + "\n", + "> ```Python\n", + "> [2, 3, 5] == [2, 3, 4]\n", + "\n", + "Returns ``False``. The final item in the two lists are different.\n", + "\n", + ">```Python\n", + "> [\"helium\" , \"neon\" , \"argon\"] == [\"helium\" , \"argon\" , \"neon\"]\n", + "\n", + "Returns ``False``. The items in the lists are in a different order.\n", + "\n", + ">```Python\n", + "> [\"helium\" , \"neon\" , \"argon\"] == [\"helium\",\"neon\",\"argon\"]\n", + "\n", + "Returns ``True``. The items in the lists are the same, and in the same order." ] }, { - "cell_type": "code", - "execution_count": null, - "id": "a6d6ecf7-38ca-4fc8-998f-9987dbd5a024", + "cell_type": "markdown", + "id": "4239a695-24f5-4120-b42e-f7ca60b27aa2", "metadata": {}, - "outputs": [], "source": [ - "[\"helium\", \"neon\", \"argon\"] == [\"helium\", \"neon\", \"argon\"]" + "Note that all parts of the string (including order of characters) and all parts of a list (including the order of elements) need to be identical for the ```==``` operation to return 'True'. There is an alternative comparison that can be made - what if we wanted to distinguish if those two lists not only contained the same elements in the same order but if they are exactly the same object (i.e. rather than just looking the same, they are actually the same 'behind the scenes')? For this, we can use ```is```:\n", + "\n", + "> ```Python\n", + ">x = [\"N\", \"H\", 3] \n", + ">y = [\"N\", \"H\", 3]\n", + ">x is y\n", + "\n", + "Returns ``False``. Although these two lists contain the same chemical formula in the same order, they have been assigned to two different variables, and are currently two separate instances of variables that happen to look the same. They are not the same object according to Python. \n", + "\n", + "However:\n", + "\n", + ">```Python\n", + ">x = y\n", + ">x is y\n", + "\n", + "Returns ``True``. We have specifically reassigned the variable x to the value of y, and so now the ``is`` comparison is True. " ] }, { "cell_type": "markdown", - "id": "4239a695-24f5-4120-b42e-f7ca60b27aa2", + "id": "bf23f898", "metadata": {}, "source": [ - "Note that all parts of the string (including order of characters) and all parts of a list (including the order of elements) need to be identical for the ```==``` operation to return 'True'. There is an alternative comparison that can be made - what if we wanted to distinguish if those two lists not only contained the same elements in the same order but if they are exactly the same object (i.e. rather than just looking the same, they are actually the same 'behind the scenes')? For this, we can use ```is```:" + "You can also chain together these comparisons, but you need to be careful you don't get confused!\n", + "\n", + ">```Python\n", + "> a = 1\n", + "> b = 2\n", + "> c = 3\n", + ">\n", + "> a != b != c\n", + "\n", + "Returns ``True`` because none of those values are the same. However if you add another variable\n", + "\n", + ">```Python\n", + "> d = 3\n", + ">\n", + "> a != b != c != d\n", + "\n", + "Now returns ``False``, as the variables c and d contain the same value, so ``c!=d`` is ``False``." ] }, { - "cell_type": "code", - "execution_count": null, - "id": "6ebfdf09-34fa-4919-a6f1-ba1b6fc12e1f", + "cell_type": "markdown", + "id": "bebc9cbb", "metadata": {}, - "outputs": [], "source": [ - "x = [\"N\", \"H\", 3] \n", - "y = [\"N\", \"H\", 3]\n", - "x is y" + "On the following piece of code test the following: - TO EDIT\n", + "\n", + "1. Are the two calculated values for the Rydberg constant the same?\n", + "2. Which calculated value for the Rydberg constant is larger?" ] }, { "cell_type": "code", "execution_count": null, - "id": "462ee079-297b-4e00-bd37-6ff3df21a4af", + "id": "ef70fc14", "metadata": {}, "outputs": [], "source": [ - "x = y\n", - "x is y" + "# Two different calculates values for the Rydberg constant \n", + "rydberg_1 = 10973731.56815712 # m^-1\n", + "rydberg_2 = 10973731.58615712 # m^-1" ] }, { "cell_type": "markdown", - "id": "be246bfa-183d-42a7-8388-b0af6bbba21c", + "id": "4fce93a2", "metadata": {}, "source": [ - "In the first example, despite the two variables, ```x``` and ```y```, containing the same chemical formula (in the same order), the two are currently two separate instances of variables according to python, so ```x is y``` is False. In the second block, we specifically reassign the variable x to the value of y, and so now the ```is``` comparison is true." + "Answer:\n", + "\n", + "1. The two values are not the same. You can check this using:\n", + ">```Python\n", + "> rydberg_1 == rydberg_2\n", + "Which will return ``False``.\n", + "\n", + "2. ``rydberg_2`` is larger. You can test this by using either ``<`` or ``>``.\n" ] }, { @@ -234,30 +264,45 @@ "id": "b818dedf-8ad5-4926-89d1-76e721599366", "metadata": {}, "source": [ - "Can we make multiple comparisons at the same time - i.e. to check if a number is within a certain range of bounds? Yes, and for this, we need Boolean operators - these are written as words but still make comparisons between two things: ```and```, ```or``` and ```not```. \n", - "\n", - "What does these mean? Let's start with ```and```:" + "Can we make multiple comparisons at the same time - i.e. to check if a number is within a certain range of bounds? Yes, and for this, we need Boolean operators - these are written as words but still make comparisons between two things: ```and```, ```or``` and ```not```. " ] }, { - "cell_type": "code", - "execution_count": null, - "id": "302f094f-766c-47fb-95ae-a89eed39ffac", + "cell_type": "markdown", + "id": "65de915b", "metadata": {}, - "outputs": [], "source": [ - "z = 2\n", - "z < 3 and z > 0.1 " + "| Operator | Definition | Example |\n", + "| ----- | ---- | ----- |\n", + "| and | Both instances must be True to return True, otherwise will return False | ``a and b`` |\n", + "| or | Either instance can be True in order to return True. If both instances are False, will return False. | `` a or b `` |\n", + "| not | If the Boolean value of the instance is True, the program will return False. Essentially inverts the logic. | ``not b`` |" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "b15d57e0-6260-42a5-94d8-f1e45743a40b", + "cell_type": "markdown", + "id": "d954f269", "metadata": {}, - "outputs": [], "source": [ - "z < 3 and z != 2" + "#### And\n", + "\n", + "When considering ``a and b``, where a and b are individual comparisons, a and b must both be True for the overall result to be True. \n", + "\n", + "> ```Python\n", + "> z = 2\n", + ">\n", + "> z < 3 and z > 1\n", + "\n", + "The first part of the statement ``z < 3`` is True, and the second part ``z > 1`` is also True. Since both parts are True, the overall result will output ``True``.\n", + "\n", + "However, if the test was instead:\n", + "\n", + "> ```Python \n", + ">z < 3 and z != 2\n", + "\n", + "The output would be ``False``, since the second statement ``z != 2`` is now False. A True and a False outputs a False. \n", + "\n", + "If both parts of the statement were False, the output would also be False. " ] }, { @@ -265,9 +310,9 @@ "id": "06f35439-6217-4e18-a68b-e4375fa3025a", "metadata": {}, "source": [ - "When using ```and```, the statement before the ```and``` and after the ```and``` must **both** be 'True' for the overall result to be 'True', hence why the two code blocks give different answers: while z is less than 3 in both statements, z is equal to 2, and so the second statement in the second code block is 'False'. I.e. if Statement A is True AND Statement B is False, ```A and B``` is False.\n", + "#### Or\n", "\n", - "What about ```or```?" + "When considering ``a or b``, where a and b are individual comparisons, only one of the two must be True for the whole statement to be True. If neither are True, the whole statement will be False." ] }, { @@ -326,8 +371,12 @@ "id": "1c2b08e0-672b-46e7-b92e-ee9a35d69907", "metadata": {}, "source": [ + "#### Not\n", + "\n", "Finally, not is slightly different - first it should be used before a statement, i.e. (```not a == 2```). \n", - "It can then be used to 'invert' the True or False behaviour of a statement: if a statement was true, not will make it False, or vice versa:" + "It can then be used to 'invert' the True or False behaviour of a statement: if a statement was true, not will make it False, or vice versa:\n", + "\n", + "Explain a reason to use NOT." ] }, { @@ -351,109 +400,6 @@ "not z > 3 or z != 2" ] }, - { - "cell_type": "markdown", - "id": "79597a1c-5dd4-4426-b21e-eb8135a9bfd0", - "metadata": {}, - "source": [ - "## Conditional Statements" - ] - }, - { - "cell_type": "markdown", - "id": "feabf370-ad13-48b3-aba6-16dc7c74d5c0", - "metadata": {}, - "source": [ - "How are these comparisons useful for working with actual chemical data though? Writing a comparison for every data point would get very tiring! This is where conditional statements come in -- we can use the comparisons we have learned about to check **if** certain relationships are true as part of our data sets, and then either do something or not, or even doing a different operation...\n", - "\n", - "We do this, sensibly, through what are called **if statements**. If statements require specific syntax:\n", - "```\n", - "if :\n", - " what to do if statement is true\n", - "```\n", - "\n", - "When the statement after ```if``` is True, then Python will go on to do whatever is **indented**. Indentation is the way for python to know what is part of the ```if``` statement and what is the rest of the code. As a standard, indenting is 4 spaces before the code line -- many programs like jupyter notebook will automatically do this indenting after the if statement is written and you move to a new line with the Return key.\n", - "\n", - "If what comes after the ```if``` is False, then the indented code is ignored, and Python continues onto whatever the next non-indented lines are. As with loops, there must be a colon after the if statement, and there must be an indentation -- not having these can cause errors." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3761936a-7163-41de-813b-580ce83a8857", - "metadata": {}, - "outputs": [], - "source": [ - "x = \"CH4\"\n", - "y = \"CH4\"\n", - "if x == y:\n", - " ### This part of the code is indented, and is run if the if statement is true\n", - " print(\"Yes, these are the same formula\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "34f11095-cd62-40a6-ad7a-9df4dd7eae14", - "metadata": {}, - "outputs": [], - "source": [ - "x = \"CH4\"\n", - "y = \"NH3\"\n", - "if x == y:\n", - " print(\"Yes, these are the same formula\")\n", - "\n", - "print(\"The indentation has ended, this code line is always run\")" - ] - }, - { - "cell_type": "markdown", - "id": "f5e0ff28-eec5-4508-b5dd-ccea6d24c9e9", - "metadata": {}, - "source": [ - "What if we want to have multiple different categories and multiple different outcomes? We can use ```if... else``` if we want to do one thing if a statement is true, and then something else for for all other possibilities. Alternatively, if we have more than two decisions to make, we can use ```if... elif... else```, with ```elif``` statements acting like other if statements that are checked if they are true. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b66d509c-f888-45a0-ab94-7c8115852979", - "metadata": {}, - "outputs": [], - "source": [ - "x = \"CH4\"\n", - "if x == \"CH4\":\n", - " print(\"This compound is methane\")\n", - "elif x != \"NH3\":\n", - " print(\"This compound is not ammonia\")\n", - "else:\n", - " print(\"This compound is ammonia\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "64bfd426-81a8-44f3-a54e-cd2f9e99687e", - "metadata": {}, - "outputs": [], - "source": [ - "x = \"H2O\"\n", - "if x == \"CH4\":\n", - " print(\"This compound is methane\")\n", - "elif x != \"NH3\":\n", - " print(\"This compound is not ammonia\")\n", - "else:\n", - " print(\"This compound is ammonia\")" - ] - }, - { - "cell_type": "markdown", - "id": "46cb8ac8-5627-4ddb-a169-552794c2099d", - "metadata": {}, - "source": [ - "Be careful, conditional statements are strictly ordered - if the first ```if``` is True, then that code block will be run, while all further ```elif``` statements are ignored, even if they would also be true!" - ] - }, { "cell_type": "markdown", "id": "0a5899ad-5b4a-439b-bd47-df83a6d37136", @@ -525,8 +471,7 @@ "source": [ "In this lesson we have learned:\n", "- How to make comparisons between numbers and variables of different data types, getting Boolean True or False statements\n", - "- How we can use Boolean operators such as ```and``` and ```or``` to compare if multiple statements are True or False in different combinations.\n", - "- How to use ```if...elif...else``` statements to do certain tasks only if certain comparisons or statements are the case." + "- How we can use Boolean operators such as ```and``` and ```or``` to compare if multiple statements are True or False in different combinations." ] }, { @@ -550,28 +495,12 @@ ] }, { - "cell_type": "code", - "execution_count": null, - "id": "105d0079-c0ae-4a11-bccd-4d84b32ad1b5", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "32454202-0869-460c-b3e6-ed6fec5bf114", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "73a9fb7c-8930-4091-89a3-283eda6f41c1", + "cell_type": "markdown", + "id": "f92f1120", "metadata": {}, - "outputs": [], - "source": [] + "source": [ + "## Summary of Learning" + ] } ], "metadata": { diff --git a/lessons/variables/mathematical-operators.ipynb b/lessons/variables/mathematical-operators.ipynb index 40bb06c..b09eda1 100644 --- a/lessons/variables/mathematical-operators.ipynb +++ b/lessons/variables/mathematical-operators.ipynb @@ -37,13 +37,11 @@ "| Modulo | $a \\textrm{ mod } b$ | `a % b` |\n", "| Floored Division | $a // b$ | `a // b` |\n", "\n", - "The modulo and floored division operations may be new to you. Modulo computes the remainder from the division of two numbers. For example, ``5 % 2`` returns ``1``, and ``19 % 4`` returns ``3``. Floored division is the partner to modulo, and returns only the integer part of the sum. For example. ``5 // 2`` returns ``2``, and ``19 // 4`` returns ``4``. Try it for yourself.\n", - "\n", - "Other, more complicated operations are typically also available through Python libraries such as [NumPy](https://numpy.org/), which is introduced below.\n", + "The modulo and floored division operations may be new to you. Modulo computes the remainder from the division of two numbers. For example, ``5 % 2`` returns ``1``, and ``19 % 4`` returns ``3``. Floored division is the partner to modulo, and returns only the integer part of the sum. For example. ``5 // 2`` returns ``2``, and ``19 // 4`` returns ``4``. Other, more complicated operations are typically also available through Python libraries such as [`math`](https://docs.python.org/3/library/math.html) or [NumPy](https://numpy.org/), which is introduced below.\n", "\n", "A single line of code may have many mathematical operations. In this event, Python will follow the standard order of operations for mathematical operations: you might know this as [BODMAS, BIDMAS, or PEMDAS](https://en.wikipedia.org/wiki/Order_of_operations#Mnemonics).\n", "\n", - "Maths can be done both with numbers and with variables, as long as the variable is of the type integer or float. A common error is accidentally storing a number as a string. Maths performed on strings will result in an unintentional outcome." + "Maths can be done both with numbers and with variables, as long as the variable is of the type integer or float. A common error is storing a number as a string instead of an integer or float. Maths performed on strings will result in strange outcomes (more information can be found in the errors and debugging lesson LINK WHEN CREATED )." ] }, { @@ -55,7 +53,7 @@ "\n", "\n", "\n", - "Storing numbers as variables becomes extremely useful when they are being used often, and when they are needed to a large number of significant figures. For example, instead of writing out pi or Avogadro's number each time it is used, you can store it at the beginning and only call it by the name you have given it.\n", + "Storing numbers as variables becomes extremely useful when they are being used often, and when they are needed to a large number of significant figures. For example, instead of writing out π or Avogadro's number each time it is used, you can store it at the beginning and only call it by the name you have given it.\n", "\n", ">``` Python \n", "> pi = 3.141592653589\n", @@ -67,7 +65,7 @@ "\n", "Below are some simple examples for adding molecular masses. In Python there are many different ways of doing the same thing, so have a look at all three and attempt them all.\n", "\n", - "Note: It is always recommended to type out these blocks of code for yourself rather than copy and pasting, as it is much better for learning." + "It is always recommended to type out these blocks of code for yourself rather than copy and pasting, as it is much better for learning." ] }, { @@ -234,7 +232,7 @@ "The mass of cyclahexanone is: 98.145
\n", "The mass of nitrobenzene is: 123.111 \n", "\n", - "You will notice we only have to define the masses once to \n", + "We only have to define the masses once, and they can be reused for all three sums.\n", "\n", "\n", "\n", @@ -251,7 +249,7 @@ "\n", "$ V(r) = \\frac{q_{Na^+} \\ q_{Cl^+}}{4 \\ \\pi \\ \\epsilon \\ \\epsilon_{0} \\ r}\\ $\n", "\n", - "Where $q_{Na^+}$ and $q_{Cl^+}$ are the relative charges on the ions (equal to Β±the charge on an electron, 1.602-19 Coulombs), $r$ is the distance between ioninc nuclei (sum of atomic radii), $\\epsilon$ is the relative permittivity ($\\epsilon = 78.7$ in water), and $\\epsilon_0$ is the permittivity of free space and is equal to 8.85Γ—10-12 Fm-1." + "Where $q_{Na^+}$ and $q_{Cl^+}$ are the relative charges on the ions (equal to Β± the charge on an electron, 1.602-19 Coulombs), $r$ is the distance between ioninc nuclei (sum of atomic radii) in m, $\\epsilon$ is the relative permittivity ($\\epsilon$ = 78.7 Fm-1 in water), and $\\epsilon_0$ is the permittivity of free space and is equal to 8.85Γ—10-12 Fm-1." ] }, { @@ -294,21 +292,21 @@ "\n", "Your code should look something like this:\n", "> ```Python\n", - "> q_Na = 1.602e-19\n", - ">q_Cl = -1.602e-19\n", - ">pi = 3.1415\n", - ">e = 78.7\n", - ">e_0 = 8.85e-12\n", - ">r = 116e-12 + 167e-12\n", + "> q_Na = 1.602e-19 # Coulombs \n", + ">q_Cl = -1.602e-19 # Coulombs\n", + ">pi = 3.1415 \n", + ">e = 78.7 # Fm^-1\n", + ">e_0 = 8.85e-12 # Fm^-1\n", + ">r = 116e-12 + 167e-12 # m\n", ">\n", ">interaction_potential = (q_Na*q_Cl)/(4 * pi * e * e_0 *r)\n", ">\n", - ">print(interaction_potential)\n", + ">print(interaction_potential , \" J\")\n", "\n", "You should have got the output:\n", - " -1.036e-20 \n", + " -1.036e-20 J\n", "\n", - "
You can see that once we have defined each of the constants, it becomes very easy to use them again later in the code.\n", + "
Once we have defined each of the constants, it becomes very easy to use them again later in the code. One thing to always remember is to put units on your outputs!\n", "\n", "\n", "\n", @@ -361,7 +359,9 @@ "\n", "The answer you got from Python should match your calculator.\n", "\n", - "Think further: Double the value of SO3. What happens to the answer? What if we had lots of different concentrations we wanted to find the equilibrium constant for; how could we store the information to use later, or to plot in a graph? What if we wanted to identify what concentrations of reagents lead to the reverse reaction being favoured (equilibrium constant less than 1)? What if we wanted to do all of this at once, in one program? We will learn how to do this kind of thing using lists, for loops, and if statements in a few lesson's time. \n", + "Think further: Double the value of SO3. What happens to the answer? What if we had lots of different concentrations we wanted to find the equilibrium constant for; how could we store the information to use later, or to plot in a graph? What if we wanted to identify what concentrations of reagents lead to the reverse reaction being favoured (equilibrium constant less than 1)? What if we wanted to do all of this at once, in one program? \n", + "\n", + "We will learn how to do more powerful and complex analysis later on, using lists, for loops, and if statements in a few lesson's time. \n", "\n", "\n", "\n", @@ -423,7 +423,7 @@ "You should have got the output:\n", " 4.64 \n", "\n", - "Think further: Is this solution acidic or basic? We can work that out quite easily, but what if we had hundreds of values for hundreds of different solutions and wanted to identify only which ones were acidic? How could we write a program that could do that very quickly?\n", + "Think further: Is this solution acidic or basic? We can work that out quite easily, but what if we had hundreds of values for hundreds of different solutions and wanted to identify only which ones were acidic? Later lessons will give you the tools to be able to do this.\n", "\n", "\n", "\n", @@ -451,7 +451,7 @@ "\n", "The `math.` part is very important if you are importing an entire library (not just a specific function). Without it, Python won't know you are trying to call a function from the math module - it will think you have forgotten to define your own function!\n", "\n", - "Warning, trigonometric functions by default use radians!\n", + "It is always important to look up the documentation of the functions you are importing, as some can only take specific inputs. For example, in ``math`` trigonometric functions will do their calculations using radians, not degrees!\n", "\n", "There are lots of libraries and modules which you can import, which serve different purposes, such as the module ``NumPy`` (more information can be found in the [numpy lesson](../common_libs/Introduction_to_NumPy.ipynb)), and the graphing library [matplotlib.pyplot](../common_libs/python-in-chem_pyplot_basics_SM.ipynb). " ] @@ -577,7 +577,7 @@ "\n", "When we are doing complicated maths, it is good to leave comments describing what is happening to make it easier for someone else to come along and edit it. Or for yourself when you come back to look at it after a long time!\n", "\n", - " Think further: Writing out the maths for that formula takes quite a long time, and it is easy to make a mistake. If we wanted to do multiple calculations with it, we would only want to write it out once. We could do this by defining our own function (covered later in the course), which would allow us to perform the calculation using only a shorthand, such as solve_quadratic().\n", + " Think further: Writing out the maths for the quadratic formula takes quite a long time, and it is easy to make a mistake. If we wanted to do multiple calculations with it, we would only want to write it out once. We could do this by defining our own function (covered later in the course), which would allow us to perform the calculation using only a shorthand, such as solve_quadratic().\n", "\n", "" ] @@ -664,7 +664,7 @@ "## Summary \n", "\n", "- Python's basic maths uses the symbols `+`,`-`,`*`,`/`, `**`.\n", - "- Use `%`, \"modulo\", to find the remainder of a division.\n", + "- Use `%`, \"modulo\", to find the remainder of a division, and ``//``, \"floored division\"\" to return the integer part of a division.\n", "- Use order of operations (BODMAS/BIDMAS/PEMDAS) to ensure Python does the correct sum.\n", "- Assign your sum a variable to be able to call that value forward later. \n", "- Inside an f string, use `:.3f` to print your answer to 3 significant figures. Changing the number changes the number of significant figures produced in the answer.\n", From 2053c04697ebf57cc4d03a44bf421308869b28e8 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Mon, 14 Jul 2025 13:15:22 +0100 Subject: [PATCH 08/94] Split comparisons and conditions and finished editing. Created a new section 'solving problems' for lessons on errors, debugging, flowcharts and PEP8 --- _toc.yml | 6 + .../conditional_statements.ipynb | 244 +++++++++++++++--- .../if-statements-flowchart.jpg | Bin 0 -> 68053 bytes lessons/solving-problems.md | 6 + lessons/solving_problems/debugging.ipynb | 21 ++ lessons/solving_problems/errors.ipynb | 21 ++ lessons/solving_problems/flowcharts.ipynb | 23 ++ .../solving_problems/style-and-comments.ipynb | 23 ++ lessons/variables/Comparisons.ipynb | 227 ++++++++-------- 9 files changed, 432 insertions(+), 139 deletions(-) create mode 100644 lessons/loops_functions/if-statements-flowchart.jpg create mode 100644 lessons/solving-problems.md create mode 100644 lessons/solving_problems/debugging.ipynb create mode 100644 lessons/solving_problems/errors.ipynb create mode 100644 lessons/solving_problems/flowcharts.ipynb create mode 100644 lessons/solving_problems/style-and-comments.ipynb diff --git a/_toc.yml b/_toc.yml index 7c5bf65..bde56d6 100644 --- a/_toc.yml +++ b/_toc.yml @@ -27,6 +27,12 @@ parts: sections: - file: lessons/files/reading_files.ipynb - file: lessons/files/writing_files.ipynb + - file: lessons/solving-problems.md + sections: + - file: lessons/solving_problems/errors.ipynb + - file: lessons/solving_problems/debugging.ipynb + - file: lessons/solving_problems/flowcharts.ipynb + - file: lessons/solving_problems/style-and-comments.ipynb - file: lessons/common_libraries.md sections: - file: lessons/common_libs/python-in-chem_pyplot_basics_SM.ipynb diff --git a/lessons/loops_functions/conditional_statements.ipynb b/lessons/loops_functions/conditional_statements.ipynb index 80b2a6a..8a71bf0 100644 --- a/lessons/loops_functions/conditional_statements.ipynb +++ b/lessons/loops_functions/conditional_statements.ipynb @@ -5,7 +5,7 @@ "id": "1a27a6a9", "metadata": {}, "source": [ - "## Conditional Statements" + "# Conditional Statements" ] }, { @@ -35,17 +35,17 @@ "id": "f7ea7d89", "metadata": {}, "source": [ - "How are these comparisons useful for working with actual chemical data though? Writing a comparison for every data point would get very tiring! This is where conditional statements come in -- we can use the comparisons we have learned about to check **if** certain relationships are true as part of our data sets, and then either do something or not, or even doing a different operation...\n", + "For most real programs we want certain actions to be performed only when specific conditions are met. For example, we want to record a data point only ``if`` it has an uncertainty within acceptable tolerance, or only ``if`` it is above baseline noise. We use [comparisons and logic](..variables/Comparisons.ipynb) to establish those conditions.\n", "\n", - "We do this, sensibly, through what are called **if statements**. If statements require specific syntax:\n", - "```\n", - "if :\n", - " what to do if statement is true\n", - "```\n", + "To ensure an action is only executed under a certain condition, we use ``if statements``. These require a specific syntax.\n", "\n", - "When the statement after ```if``` is True, then Python will go on to do whatever is **indented**. Indentation is the way for python to know what is part of the ```if``` statement and what is the rest of the code. As a standard, indenting is 4 spaces before the code line -- many programs like jupyter notebook will automatically do this indenting after the if statement is written and you move to a new line with the Return key.\n", + ">```\n", + ">if condition:\n", + "> what to do if condition is true\n", "\n", - "If what comes after the ```if``` is False, then the indented code is ignored, and Python continues onto whatever the next non-indented lines are. As with loops, there must be a colon after the if statement, and there must be an indentation -- not having these can cause errors." + "When the condition is True, Python will go on to run the code which is indented. Indentation is how Python knows what is part of the ``if`` statement, and what is the rest of the code. Often, programs that run Python will automatically insert indentation after the ``if condition:`` (not forgetting the colon!), but you can also use the 'tab' key to insert the correct indentation (which as a standard is 4 spaces). If there is no colon and no indentation, errors can occur.\n", + "\n", + "If the condition is False, then the indented code is ignored, and Python continues onto whatever the next non-indented lines are." ] }, { @@ -55,6 +55,8 @@ "metadata": {}, "outputs": [], "source": [ + "# EXAMPLE 1\n", + "\n", "x = \"CH4\"\n", "y = \"CH4\"\n", "if x == y:\n", @@ -69,11 +71,11 @@ "metadata": {}, "outputs": [], "source": [ + "# EXAMPLE 2\n", "x = \"CH4\"\n", "y = \"NH3\"\n", "if x == y:\n", " print(\"Yes, these are the same formula\")\n", - "\n", "print(\"The indentation has ended, this code line is always run\")" ] }, @@ -82,7 +84,27 @@ "id": "5d5db013", "metadata": {}, "source": [ - "What if we want to have multiple different categories and multiple different outcomes? We can use ```if... else``` if we want to do one thing if a statement is true, and then something else for for all other possibilities. Alternatively, if we have more than two decisions to make, we can use ```if... elif... else```, with ```elif``` statements acting like other if statements that are checked if they are true. For example:" + "What if we want to have multiple different categories and multiple different outcomes? We can use ```if... else``` if we want to do one thing if a statement is true, and then something else for for all other possibilities. \n", + "\n", + ">```\n", + ">if condition:\n", + "> what to do if condition is True\n", + ">else:\n", + "> what to do if condition is False\n", + "\n", + "Alternatively, if we have more than two decisions to make, we can use ```if... elif... else```, with ```elif``` statements acting like other if statements that are checked if they are true. `Elif` is short for 'else if', and if only run if the first condition is not met but a second one is. For example:\n", + "\n", + ">```\n", + ">if condition:\n", + "> what to do if condition is True\n", + ">elif other_condition:\n", + "> what to do if previous conditions are False, but this condition is True\n", + ">else final_condition:\n", + "> what to do if all previous conditions are False\n", + "\n", + "\n", + "

Note!
\n", + "You can put in as many conditions as you like, but be careful, conditional statements are strictly ordered. If the first ``if`` block is True, only that code block will run, and further ``elif`` statements are ignored, even if they would be True!" ] }, { @@ -92,6 +114,8 @@ "metadata": {}, "outputs": [], "source": [ + "# EXAMPLE 3\n", + "\n", "x = \"CH4\"\n", "if x == \"CH4\":\n", " print(\"This compound is methane\")\n", @@ -103,82 +127,201 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "4a37476f", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This compound is not ammonia\n" + ] + } + ], "source": [ + "# EXAMPLE 4\n", + "\n", "x = \"H2O\"\n", "if x == \"CH4\":\n", " print(\"This compound is methane\")\n", "elif x != \"NH3\":\n", " print(\"This compound is not ammonia\")\n", + "elif x != \"H2\":\n", + " print(\"This compound is not hydrogen\")\n", "else:\n", " print(\"This compound is ammonia\")" ] }, { - "cell_type": "markdown", - "id": "bdb5a7c0", + "cell_type": "code", + "execution_count": null, + "id": "1a43a1b9", "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This compound is not water\n", + "This molecule is hydrogen\n" + ] + } + ], "source": [ - "Be careful, conditional statements are strictly ordered - if the first ```if``` is True, then that code block will be run, while all further ```elif``` statements are ignored, even if they would also be true!" + "# EXAMPLE 5\n", + "\n", + "x = \"H2\"\n", + "\n", + "if x != \"H2O\":\n", + " print(\"This compound is not water\")\n", + "if x == \"H2\":\n", + " print(\"This molecule is hydrogen\")\n", + "else:\n", + " print(\"This compound is not hydrogen\")" ] }, { "cell_type": "markdown", - "id": "3245cb35", + "id": "b3638bf8", "metadata": {}, "source": [ - "### Exercise" + "Run the above pieces of code and see which `print()` statements are executed. \n", + "\n", + "#### Answers\n", + "In example 1, the first `if` condition is True, so the first ``print()`` statement is executed. Even though the `elif` statement is True, this is not executed because the first condition was met. \n", + "\n", + "In example 2, the first `if` condition is False, so the program moved on the check the `elif` statement. The first `elif` statement is True, so that line of indented code is executed, but the second `elif` statement and the `else` statement are ignored. \n", + "\n", + "In example 3, two `if` statements are being used instead of a following `elif`. This means that both conditions are checked, even if the first one is True. Therefore, both statements are executed." ] }, { "cell_type": "markdown", - "id": "2fe602cb", + "id": "9bd80acc", "metadata": {}, "source": [ - "The following commented code needs the correct operator to replace the **BLANK** in the code to output True - what replaces the **BLANK**?" + "### Visualising ``if`` statements using flowcharts\n", + "\n", + "``if`` statements can be complex, and abstract. They can be visualised using a flowchart. [Further information on flowcharts and how to use them can be found here.](..lessons/solving_problems/flowcharts.ipynb). \n", + "\n", + "If statements can be summarised by the following flowchart:\n", + "\n", + "\"if-statements-flowchart\"\n", + "\n", + "You can see that if the first statement is True, the code completely skips the ``elif`` and ``else`` statements, which are not checked. \n" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "e554e279", + "cell_type": "markdown", + "id": "3245cb35", "metadata": {}, - "outputs": [], "source": [ - "atomic_no_of_nitrogen = 7\n", - "atomic_no_of_fluorine = 9" + "## Exercise\n", + "\n", + "### Exercise 1\n", + "\n", + "``If`` statements can be used to check if your maths is correct. Predict which statement will be printed, then write out and run this code." ] }, { "cell_type": "code", "execution_count": null, - "id": "bd1b8fc0", + "id": "e554e279", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fluorine has more protons\n" + ] + } + ], "source": [ - "atomic_no_of_nitrogen BLANK atomic_no_of_fluorine" + "# EXERCISE 1\n", + "##\n", + "\n", + "atomic_no_of_nitrogen = 7\n", + "atomic_no_of_fluorine = 9\n", + "\n", + "if atomic_no_of_nitrogen < atomic_no_of_fluorine:\n", + " print(\"Fluorine has more protons\")\n", + "else:\n", + " print(\"Nitrogen has more protons than fluorine - error in calculation\")" ] }, { "cell_type": "markdown", - "id": "4451c784", + "id": "a36d82c8", "metadata": {}, "source": [ - "### Answer" + "### Exercise 2\n", + "\n", + "Using your code to calculate the pH of a solution from concentration of H+ ions (example shown below), add a ``if`` statement which will print whether the pH is basic, acidic, or a superacid (pH < 0 ). Test for each of the following values of `H_conc`:\n", + "\n", + "H_conc = 1.0e-10
\n", + "H_conc = 1.0e-7
\n", + "H_conc = 1.0e-3
\n", + "H_conc = 1.0e12
\n", + "\n", + "> ```Python\n", + "> # CALCULATE pH OF A SOLUTION FROM [H+]\n", + "> H_conc = 1.0e12\n", + ">\n", + "> pH = log10(H_conc)\n", + "> pH *= -1\n", + ">\n", + "> print(pH)\n", + "\n", + "\n", + "#### Answer\n", + "\n", + "Find below a possible answer. Note that since this is done from superacid upwards, the first `elif` statement does not need the addition of ``elif pH > 0 and pH < 7:``, since it will only run if `pH <= 0` is False. However, if you were working from base downwards, you would have to specify that pH must be both larger than 0 and smaller than 7 to be marked as acidic.\n", + "\n", + " Think further . This program contains 4 values for the concentration of H+ ions, but can only check one at a time. This is quite slow. A better way would be to use loops iterate through all four values and output the desired phrase for them all at the same time, removing the laborious task of changing the value for the concentration manually. We will learn about loops in the next few lessons." ] }, { "cell_type": "code", - "execution_count": null, - "id": "e49d983f", + "execution_count": 30, + "id": "ba4c5770", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The pH of this solution is: 10.0\n", + "This solution is basic\n" + ] + } + ], "source": [ - "### ANSWER: <, <= or != all work\n", - "atomic_no_of_nitrogen < atomic_no_of_fluorine" + "from math import log10\n", + "\n", + "# Defining the initial concentration\n", + "# Change this value to test your 'if' statements are correct\n", + "H_conc_1 = 1.0e-10\n", + "H_conc_2 = 1.0e-7\n", + "H_conc_3 = 1.0e-3\n", + "H_conc_4 = 1.0e12\n", + "\n", + "pH = log10(H_conc_1)\n", + "pH *= -1\n", + "\n", + "# It is good to print your answer to check it is what you are expecting\n", + "print(f\"The pH of this solution is: {pH}\")\n", + "\n", + "# Checks pH and assigns it 'superacid', 'acidic', 'neutral', or 'basic'\n", + "if pH <= 0:\n", + " print(\"This solution is a superacid\")\n", + "elif pH < 7:\n", + " print(\"This solution is acidic\")\n", + "elif pH == 7:\n", + " print(\"This solution is neutral\")\n", + "elif pH > 7:\n", + " print(\"This solution is basic\")" ] }, { @@ -190,11 +333,38 @@ "\n", "- How to use ```if...elif...else``` statements to do certain tasks only if certain comparisons or statements are the case." ] + }, + { + "cell_type": "markdown", + "id": "f7e18758", + "metadata": {}, + "source": [ + "## Summary of learning\n", + "\n", + "- ``if...elif...else`` is used to create code that only executes if a certain condition is met.\n", + "- Syntax is important. Use a colon after every `if`/`elif`/`else` condition, and indent any following code that should execute if that condition is met.\n", + "- When an `if` statement is True, `elif` and `else` statements directly following it will not execute.\n", + "- Use multiple `if` statements if you want every statement checked. Consider how you can minimise the number of `if` statements to have a more efficient and less cluttered code. " + ] } ], "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, "language_info": { - "name": "python" + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.3" } }, "nbformat": 4, diff --git a/lessons/loops_functions/if-statements-flowchart.jpg b/lessons/loops_functions/if-statements-flowchart.jpg new file mode 100644 index 0000000000000000000000000000000000000000..310aa284f422ff5c94b87474528cd12f79367831 GIT binary patch literal 68053 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 0.1" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e97f2cdf-8e79-4eba-b5dc-2cbca8710b8e", - "metadata": {}, - "outputs": [], - "source": [ - "z < 3 or z !=2" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d14bcff8-6b5f-4055-88bb-e18e3a0cafd0", - "metadata": {}, - "outputs": [], - "source": [ - "z > 3 or z != 2" - ] - }, - { - "cell_type": "markdown", - "id": "448d821c-a069-455f-9992-a6320bbea6fb", - "metadata": {}, - "source": [ - "With ```or``` - only one of the two comparisons must be true for the whole statement to be 'True', though the whole statement will still be False if neither of the two are True. \n", + "When considering ``a or b``, where a and b are individual comparisons, only one of the two must be True for the whole statement to be True. If neither are True, the whole statement will be False.\n", "\n", - "You don't need to just have two comparisons!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "87ab9e7d-dc0d-44d5-9f0e-94b79f728f5f", - "metadata": {}, - "outputs": [], - "source": [ - "w = \"tungsten\"\n", - "w == \"neon\" or w == \"iron\" or w == \"bismuth\" or w == \"tungsten\"" + ">```Python\n", + "> z = 2\n", + "> \n", + "> z < 3 or z > 0.1\n", + "\n", + "Returns ``True`` as both statements are True. \n", + "\n", + "The test:\n", + "\n", + "> ```Python\n", + "> z < 3 or z !=2\n", + "\n", + "Also returns ``True``, even though the second statement is False. Once one of the two statements needs to be True to return True. \n", + "\n", + "In order to get an output ``False``, both statements must be False:\n", + "\n", + ">```Python\n", + ">z > 3 or z != 2" ] }, { @@ -376,28 +344,40 @@ "Finally, not is slightly different - first it should be used before a statement, i.e. (```not a == 2```). \n", "It can then be used to 'invert' the True or False behaviour of a statement: if a statement was true, not will make it False, or vice versa:\n", "\n", - "Explain a reason to use NOT." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f30a769e-184f-4d13-aab3-ccd2a91f6470", - "metadata": {}, - "outputs": [], - "source": [ - "z = 2\n", - "not z <= 2" + "Explain a reason to use NOT.\n", + "\n", + ">```Python\n", + "> not True\n", + "\n", + "Returns ``False``, and vice versa.\n", + "\n", + "> ```Python\n", + ">z = 2\n", + ">not z <= 2\n", + "\n", + "Returns ``False``, as the comparison is True.\n", + "\n", + ">```Python\n", + ">z = 2\n", + ">not z > 3 or z != 2\n", + "\n", + "Returns ``True``, as the output from the ``or`` statement is False. \n", + "\n" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "40c9c586-0376-48c5-97cb-279d31c26067", + "cell_type": "markdown", + "id": "976d57c6", "metadata": {}, - "outputs": [], "source": [ - "not z > 3 or z != 2" + " Watch out! Python evaluates operators according to a strict order: maths and comparison operators first, then logical operators (and, or, not). If you are getting error messages, try bracketing your 'not' and other logical operators to give them precedence. Try the following lines with and without the brackets and try to understand the order of operations.\n", + "\n", + ">```Python\n", + "> False == (not True)\n", + ">\n", + "> (True or False) == False\n", + ">\n", + "> True == (True and False) == False" ] }, { @@ -413,7 +393,7 @@ "id": "116cf3f9-74fa-46fe-a06c-ee5cec0a4b9b", "metadata": {}, "source": [ - "The following commented code needs the correct operator to replace the **BLANK** in the code to output True - what replaces the **BLANK**?" + "Write out and run the following lines of code. Insert the correct operator into the place marked 'BLANK', and/or predict the logical output." ] }, { @@ -423,37 +403,80 @@ "metadata": {}, "outputs": [], "source": [ + "# QUESTION 1\n", + "# Replace BLANK to get a True output\n", + "\n", "atomic_no_of_nitrogen = 7\n", - "atomic_no_of_fluorine = 9" + "atomic_no_of_fluorine = 9\n", + "\n", + "atomic_no_of_nitrogen BLANK atomic_no_of_fluorine" ] }, { "cell_type": "code", "execution_count": null, - "id": "81dd9a93-9296-4da8-be41-3f4fc6989d56", + "id": "b3f749e9-674c-428c-8eeb-df549473ebae", "metadata": {}, "outputs": [], "source": [ - "atomic_no_of_nitrogen BLANK atomic_no_of_fluorine" + "# QUESTION 2\n", + "# What is the logical output of this code?\n", + "\n", + "w = \"tungsten\"\n", + "w == \"neon\" or w == \"iron\" or w == \"bismuth\" or w == \"tungsten\"" ] }, { - "cell_type": "markdown", - "id": "bcdbba50-4cb5-4556-bc5c-39a16db6113f", + "cell_type": "code", + "execution_count": 9, + "id": "5c8f9c11", "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "### Answer" + "# QUESTION 3\n", + "# What is the logical output of this code? How can we change it to get the opposite?\n", + "\n", + "a = 1\n", + "b = 2\n", + "c = 3\n", + "d = a < c\n", + "\n", + "a < b <= c and d == False" ] }, { "cell_type": "code", "execution_count": null, - "id": "b3f749e9-674c-428c-8eeb-df549473ebae", + "id": "5a4edc44", "metadata": {}, "outputs": [], "source": [ - "### ANSWER: <, <= or != all work\n", - "atomic_no_of_nitrogen < atomic_no_of_fluorine" + "# ANSWERS\n", + "\n", + "# Question 1\n", + "## <, <= or != all work\n", + "atomic_no_of_nitrogen < atomic_no_of_fluorine\n", + "\n", + "# Question 2\n", + "## TRUE\n", + "\n", + "# Question 3\n", + "## Output is False\n", + "## First statement is True. Second statement is False. The overall is False.\n", + "### To make True, must change second statement to True. \n", + "### Achieve this by changing 'False' to 'True' in the second statement\n", + "a < b <= c and d == True" ] }, { @@ -474,38 +497,38 @@ "- How we can use Boolean operators such as ```and``` and ```or``` to compare if multiple statements are True or False in different combinations." ] }, - { - "cell_type": "markdown", - "id": "be1e9adf-0c99-47e1-8fe7-01f461d77e08", - "metadata": {}, - "source": [ - "## TODO" - ] - }, - { - "cell_type": "markdown", - "id": "4163f470-0898-4966-aa1e-fa2f9644278b", - "metadata": {}, - "source": [ - "- add comments to code?\n", - "- note different data type behaviour for is (e.g. strings versus lists as given)\n", - "- Think of more imaginative chemistry related examples for the lessons\n", - "- More tasks!\n", - "- Debugging task - maybe using a complex if not statement giving the wrong output?" - ] - }, { "cell_type": "markdown", "id": "f92f1120", "metadata": {}, "source": [ - "## Summary of Learning" + "## Summary of Learning\n", + "\n", + "- Python's comparison operators are ``==``, ``!=``, `>`, `<`, `>=`, and `<=`.\n", + "- Python's logic operators are `and`, `or`, and `not`.\n", + "\n", + "\n", + "| Operator | Definition | Example |\n", + "| --------- | --------- | -------|\n", + "| == | is equal to | ``a == b`` |\n", + "| ! = | is not equal to | ``a != b`` |\n", + "| > | is greater than | ``a > b`` |\n", + "| < | is less than | ``a < b`` |\n", + "| >= | is greater than or equal to | ``a >= b``|\n", + "| <= | is less than or equal to | ``a <= b`` |\n", + "| IS | are the same object | ```a is b``` |\n", + "| AND | Both instances must be True to return True, otherwise will return False | ``a and b`` |\n", + "| OR | Either instance can be True in order to return True. If both instances are False, will return False. | `` a or b `` |\n", + "| NOT | If the Boolean value of the instance is True, the program will return False. Essentially inverts the logic. | ``not b`` |\n", + "\n", + "- You can chain statements together, but be careful to work in order and obey the order Python evaluates operators.\n", + "- Python evaluates operators in the order: maths and comparisons, then logic. You can clarify your intentions by using brackets. " ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "base", "language": "python", "name": "python3" }, @@ -519,7 +542,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.12.3" } }, "nbformat": 4, From f3b3f61f142855caf01e2f2c3e82f5ce4deb8b09 Mon Sep 17 00:00:00 2001 From: m-rivera Date: Tue, 15 Jul 2025 10:51:35 +0100 Subject: [PATCH 09/94] Trim and proofread --- .../variables/mathematical-operators.ipynb | 44 +++++++++---------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/lessons/variables/mathematical-operators.ipynb b/lessons/variables/mathematical-operators.ipynb index bf470a5..b2cd928 100644 --- a/lessons/variables/mathematical-operators.ipynb +++ b/lessons/variables/mathematical-operators.ipynb @@ -9,7 +9,7 @@ "## Learning outcomes\n", "\n", "- Develop familiarity with basic mathematical operations in Python\n", - "- Understand how to access some additional, more complex mathematical operations. \n", + "- Understand how to access some additional, more complex mathematical operations\n", "\n", "## Prerequisites\n", "\n", @@ -18,14 +18,14 @@ "\n", "## Arithmetic\n", "\n", - "Python is extremely relevant to numerical computing. Therefore, it is useful to outline some of the mathematical operations that can be natively performed with Python. Python can only perform maths on variables of the data type ``integer`` or ``float``." + "Python is extremely useful for numerical computing. Therefore, it is we should outline some of the mathematical operations that it can perform. Python can only perform maths on variables of the data type ``integer`` or ``float``." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Python natively supports some mathematical operations. \n", + "These are the principal mathematical operations:\n", "\n", "| Operation | Mathematical Notation | Pythonic Notation |\n", "| -------- | ------- | ------- |\n", @@ -37,11 +37,11 @@ "| Modulo | $a \\textrm{ mod } b$ | `a % b` |\n", "| Floored Division | $a // b$ | `a // b` |\n", "\n", - "The modulo and floored division operations may be new to you. Modulo computes the remainder from the division of two numbers. For example, ``5 % 2`` returns ``1``, and ``19 % 4`` returns ``3``. Floored division is the partner to modulo, and returns only the integer part of the sum. For example. ``5 // 2`` returns ``2``, and ``19 // 4`` returns ``4``. Other, more complicated operations are typically also available through Python libraries such as [`math`](https://docs.python.org/3/library/math.html) or [NumPy](https://numpy.org/), which is introduced below.\n", + "The modulo and floored division operations may be new to you. Modulo computes the remainder from the division of two numbers. For example, ``5 % 2`` returns ``1``, and ``19 % 4`` returns ``3``. Floored division is the partner to modulo, and returns only the integer part of the division. For example. ``5 // 2`` returns ``2``, and ``19 // 4`` returns ``4``. Other, more complicated operations are typically also available through Python libraries such as [`math`](https://docs.python.org/3/library/math.html).\n", "\n", "A single line of code may have many mathematical operations. In this event, Python will follow the standard order of operations for mathematical operations: you might know this as [BODMAS, BIDMAS, or PEMDAS](https://en.wikipedia.org/wiki/Order_of_operations#Mnemonics).\n", "\n", - "Maths can be done both with numbers and with variables, as long as the variable is of the type integer or float. A common error is storing a number as a string instead of an integer or float. Maths performed on strings will result in strange outcomes (more information can be found in the errors and debugging lesson LINK WHEN CREATED )." + "Maths can be done both with numbers and variables, as long as the variable is of the type integer or float. A common error is storing a number as a string instead of an integer or float. Maths performed on strings will result in strange outcomes (more information can be found in the errors and debugging lesson LINK WHEN CREATED )." ] }, { @@ -59,13 +59,7 @@ "> pi = 3.141592653589\n", "> avogadros_number = 6.02214e23\n", "\n", - "**Note**: Remember that numbers given in standard form use the letter ``e`` or ``E`` to indicate multiplying to the tenth power.\n", - "\n", - "\n", - "\n", - "Below are some simple examples for adding molecular masses. In Python there are many different ways of doing the same thing, so have a look at all three and attempt them all.\n", - "\n", - "It is always recommended to type out these blocks of code for yourself rather than copy and pasting, as it is much better for learning." + "Below are some simple examples for adding molecular masses. In Python there are many different ways of doing the same thing, so have a look at all three and attempt them all." ] }, { @@ -191,16 +185,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
Practice 1 \n", + "
Practice \n", "\n", "Using variables to store the atomic masses of hydrogen, carbon, oxygen, and nitrogen, calculate the molecular masses of the following species.\n", "\n", "
    \n", - "1. Ethanol, doing the calculation inside a print() statement.
    \n", - "2. Cyclahexanone, doing the calculation in a variable which you then print.
    \n", - "3. Nitrobenzene, using an f string.
    \n", + "1. Ethanol (C2H6O), doing the calculation inside a print() statement
    \n", + "2. Cyclahexanone (C6H10O), doing the calculation in a variable which you then print
    \n", + "3. Nitrobenzene (C6H5NO2), using an f string
    \n", "
\n", "\n", + "The atomic masses are:\n", + "> ```Python\n", + "> H = 1.008\n", + "> C = 12.011\n", + "> O = 15.999\n", + "> N = 14.007\n", + "\n", "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AtomicNumberSymbolNameAtomicMassCPKHexColorElectronConfigurationElectronegativityAtomicRadiusIonizationEnergyElectronAffinityOxidationStatesStandardStateMeltingPointBoilingPointDensityGroupBlockYearDiscovered
01HHydrogen1.008000FFFFFF1s12.20120.013.5980.754+1, -1Gas13.8120.280.000090Nonmetal1766
12HeHelium4.002600D9FFFF1s2NaN140.024.587NaN0Gas0.954.220.000179Noble gas1868
23LiLithium7.000000CC80FF[He]2s10.98182.05.3920.618+1Solid453.651615.000.534000Alkali metal1817
34BeBeryllium9.012183C2FF00[He]2s21.57153.09.323NaN+2Solid1560.002744.001.850000Alkaline earth metal1798
45BBoron10.810000FFB5B5[He]2s2 2p12.04192.08.2980.277+3Solid2348.004273.002.370000Metalloid1808
......................................................
113114FlFlerovium290.192000NaN[Rn]7s2 7p2 5f14 6d10 (predicted)NaNNaNNaNNaN6, 4,2, 1, 0Expected to be a SolidNaNNaNNaNPost-transition metal1998
114115McMoscovium290.196000NaN[Rn]7s2 7p3 5f14 6d10 (predicted)NaNNaNNaNNaN3, 1Expected to be a SolidNaNNaNNaNPost-transition metal2003
115116LvLivermorium293.205000NaN[Rn]7s2 7p4 5f14 6d10 (predicted)NaNNaNNaNNaN+4, +2, -2Expected to be a SolidNaNNaNNaNPost-transition metal2000
116117TsTennessine294.211000NaN[Rn]7s2 7p5 5f14 6d10 (predicted)NaNNaNNaNNaN+5, +3, +1, -1Expected to be a SolidNaNNaNNaNHalogen2010
117118OgOganesson295.216000NaN[Rn]7s2 7p6 5f14 6d10 (predicted)NaNNaNNaNNaN+6, +4, +2, +1, 0, -1Expected to be a GasNaNNaNNaNNoble gas2006
\n", + "

118 rows Γ— 17 columns

\n", + "
" + ], + "text/plain": [ + " AtomicNumber Symbol Name AtomicMass CPKHexColor \\\n", + "0 1 H Hydrogen 1.008000 FFFFFF \n", + "1 2 He Helium 4.002600 D9FFFF \n", + "2 3 Li Lithium 7.000000 CC80FF \n", + "3 4 Be Beryllium 9.012183 C2FF00 \n", + "4 5 B Boron 10.810000 FFB5B5 \n", + ".. ... ... ... ... ... \n", + "113 114 Fl Flerovium 290.192000 NaN \n", + "114 115 Mc Moscovium 290.196000 NaN \n", + "115 116 Lv Livermorium 293.205000 NaN \n", + "116 117 Ts Tennessine 294.211000 NaN \n", + "117 118 Og Oganesson 295.216000 NaN \n", + "\n", + " ElectronConfiguration Electronegativity AtomicRadius \\\n", + "0 1s1 2.20 120.0 \n", + "1 1s2 NaN 140.0 \n", + "2 [He]2s1 0.98 182.0 \n", + "3 [He]2s2 1.57 153.0 \n", + "4 [He]2s2 2p1 2.04 192.0 \n", + ".. ... ... ... \n", + "113 [Rn]7s2 7p2 5f14 6d10 (predicted) NaN NaN \n", + "114 [Rn]7s2 7p3 5f14 6d10 (predicted) NaN NaN \n", + "115 [Rn]7s2 7p4 5f14 6d10 (predicted) NaN NaN \n", + "116 [Rn]7s2 7p5 5f14 6d10 (predicted) NaN NaN \n", + "117 [Rn]7s2 7p6 5f14 6d10 (predicted) NaN NaN \n", + "\n", + " IonizationEnergy ElectronAffinity OxidationStates \\\n", + "0 13.598 0.754 +1, -1 \n", + "1 24.587 NaN 0 \n", + "2 5.392 0.618 +1 \n", + "3 9.323 NaN +2 \n", + "4 8.298 0.277 +3 \n", + ".. ... ... ... \n", + "113 NaN NaN 6, 4,2, 1, 0 \n", + "114 NaN NaN 3, 1 \n", + "115 NaN NaN +4, +2, -2 \n", + "116 NaN NaN +5, +3, +1, -1 \n", + "117 NaN NaN +6, +4, +2, +1, 0, -1 \n", + "\n", + " StandardState MeltingPoint BoilingPoint Density \\\n", + "0 Gas 13.81 20.28 0.000090 \n", + "1 Gas 0.95 4.22 0.000179 \n", + "2 Solid 453.65 1615.00 0.534000 \n", + "3 Solid 1560.00 2744.00 1.850000 \n", + "4 Solid 2348.00 4273.00 2.370000 \n", + ".. ... ... ... ... \n", + "113 Expected to be a Solid NaN NaN NaN \n", + "114 Expected to be a Solid NaN NaN NaN \n", + "115 Expected to be a Solid NaN NaN NaN \n", + "116 Expected to be a Solid NaN NaN NaN \n", + "117 Expected to be a Gas NaN NaN NaN \n", + "\n", + " GroupBlock YearDiscovered \n", + "0 Nonmetal 1766 \n", + "1 Noble gas 1868 \n", + "2 Alkali metal 1817 \n", + "3 Alkaline earth metal 1798 \n", + "4 Metalloid 1808 \n", + ".. ... ... \n", + "113 Post-transition metal 1998 \n", + "114 Post-transition metal 2003 \n", + "115 Post-transition metal 2000 \n", + "116 Halogen 2010 \n", + "117 Noble gas 2006 \n", + "\n", + "[118 rows x 17 columns]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "data = pd.read_csv(\"periodic_table.csv\")\n", "data" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -110,14 +454,17 @@ ] }, { - "metadata": {}, "cell_type": "markdown", - "source": "### Viewing the data", - "id": "613367f256897f36" + "id": "613367f256897f36", + "metadata": {}, + "source": [ + "### Viewing the data" + ] }, { - "metadata": {}, "cell_type": "markdown", + "id": "c00ce268787d2503", + "metadata": {}, "source": [ "Now that we have imported the data, it is important to view it is fully understand how it is formatted and ensure we imported it correctly. As you\n", "may have noticed, when we try to display the dataframe, only some of the rows display. This is because only the first and last 5 rows will be shown\n", @@ -135,134 +482,747 @@ "it can be changed using `.astype()`.\n", "\n", "To display the datatype of all columns, we can run the function on the whole dataframe:" - ], - "id": "c00ce268787d2503" + ] }, { - "metadata": {}, "cell_type": "code", - "source": "data.dtypes", + "execution_count": 3, "id": "de5e7c4b8c29071a", - "outputs": [], - "execution_count": null + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "AtomicNumber int64\n", + "Symbol object\n", + "Name object\n", + "AtomicMass float64\n", + "CPKHexColor object\n", + "ElectronConfiguration object\n", + "Electronegativity float64\n", + "AtomicRadius float64\n", + "IonizationEnergy float64\n", + "ElectronAffinity float64\n", + "OxidationStates object\n", + "StandardState object\n", + "MeltingPoint float64\n", + "BoilingPoint float64\n", + "Density float64\n", + "GroupBlock object\n", + "YearDiscovered object\n", + "dtype: object" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.dtypes" + ] }, { - "metadata": {}, "cell_type": "markdown", - "source": "Or we can instead run the function on only one column:", - "id": "5d9551818a2553db" + "id": "5d9551818a2553db", + "metadata": {}, + "source": [ + "Or we can instead run the function on only one column:" + ] }, { - "metadata": {}, "cell_type": "code", - "source": "data[\"AtomicNumber\"].dtype", + "execution_count": 4, "id": "e4f7fa55f0ad8042", - "outputs": [], - "execution_count": null + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dtype('int64')" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data[\"AtomicNumber\"].dtype" + ] }, { - "metadata": {}, "cell_type": "markdown", - "source": "To change the data type, we need to reassign that column. E.g. to change the \"Name\" data to a string:", - "id": "b870cf77a1aea35f" + "id": "b870cf77a1aea35f", + "metadata": {}, + "source": [ + "To change the data type, we need to reassign that column. E.g. to change the \"Name\" data to a string:" + ] }, { - "metadata": {}, "cell_type": "code", + "execution_count": 5, + "id": "d976fecb52130b29", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data type before change: object\n", + "Data type after change: string\n" + ] + } + ], "source": [ "print(f'Data type before change: {data[\"Name\"].dtype}')\n", "data[\"Name\"] = data[\"Name\"].astype(\"string\")\n", "print(f'Data type after change: {data[\"Name\"].dtype}')" - ], - "id": "d976fecb52130b29", - "outputs": [], - "execution_count": null + ] }, { - "metadata": {}, "cell_type": "markdown", + "id": "822ab5f3e84a6ff2", + "metadata": {}, "source": [ "## Exercise\n", "\n", "Display the first 8 elements." - ], - "id": "822ab5f3e84a6ff2" + ] }, { - "metadata": {}, "cell_type": "code", - "source": "# Add your answer here", + "execution_count": 6, "id": "bce6df361acf974", + "metadata": {}, "outputs": [], - "execution_count": null + "source": [ + "# Add your answer here" + ] }, { - "metadata": {}, "cell_type": "code", + "execution_count": 7, + "id": "ac14452b9f70836e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AtomicNumberSymbolNameAtomicMassCPKHexColorElectronConfigurationElectronegativityAtomicRadiusIonizationEnergyElectronAffinityOxidationStatesStandardStateMeltingPointBoilingPointDensityGroupBlockYearDiscovered
01HHydrogen1.008000FFFFFF1s12.20120.013.5980.754+1, -1Gas13.8120.280.000090Nonmetal1766
12HeHelium4.002600D9FFFF1s2NaN140.024.587NaN0Gas0.954.220.000179Noble gas1868
23LiLithium7.000000CC80FF[He]2s10.98182.05.3920.618+1Solid453.651615.000.534000Alkali metal1817
34BeBeryllium9.012183C2FF00[He]2s21.57153.09.323NaN+2Solid1560.002744.001.850000Alkaline earth metal1798
45BBoron10.810000FFB5B5[He]2s2 2p12.04192.08.2980.277+3Solid2348.004273.002.370000Metalloid1808
56CCarbon12.011000909090[He]2s2 2p22.55170.011.2601.263+4, +2, -4Solid3823.004098.002.267000NonmetalAncient
67NNitrogen14.0070003050F8[He] 2s2 2p33.04155.014.534NaN+5, +4, +3, +2, +1, -1, -2, -3Gas63.1577.360.001251Nonmetal1772
78OOxygen15.999000FF0D0D[He]2s2 2p43.44152.013.6181.461-2Gas54.3690.200.001429Nonmetal1774
\n", + "
" + ], + "text/plain": [ + " AtomicNumber Symbol Name AtomicMass CPKHexColor \\\n", + "0 1 H Hydrogen 1.008000 FFFFFF \n", + "1 2 He Helium 4.002600 D9FFFF \n", + "2 3 Li Lithium 7.000000 CC80FF \n", + "3 4 Be Beryllium 9.012183 C2FF00 \n", + "4 5 B Boron 10.810000 FFB5B5 \n", + "5 6 C Carbon 12.011000 909090 \n", + "6 7 N Nitrogen 14.007000 3050F8 \n", + "7 8 O Oxygen 15.999000 FF0D0D \n", + "\n", + " ElectronConfiguration Electronegativity AtomicRadius IonizationEnergy \\\n", + "0 1s1 2.20 120.0 13.598 \n", + "1 1s2 NaN 140.0 24.587 \n", + "2 [He]2s1 0.98 182.0 5.392 \n", + "3 [He]2s2 1.57 153.0 9.323 \n", + "4 [He]2s2 2p1 2.04 192.0 8.298 \n", + "5 [He]2s2 2p2 2.55 170.0 11.260 \n", + "6 [He] 2s2 2p3 3.04 155.0 14.534 \n", + "7 [He]2s2 2p4 3.44 152.0 13.618 \n", + "\n", + " ElectronAffinity OxidationStates StandardState \\\n", + "0 0.754 +1, -1 Gas \n", + "1 NaN 0 Gas \n", + "2 0.618 +1 Solid \n", + "3 NaN +2 Solid \n", + "4 0.277 +3 Solid \n", + "5 1.263 +4, +2, -4 Solid \n", + "6 NaN +5, +4, +3, +2, +1, -1, -2, -3 Gas \n", + "7 1.461 -2 Gas \n", + "\n", + " MeltingPoint BoilingPoint Density GroupBlock YearDiscovered \n", + "0 13.81 20.28 0.000090 Nonmetal 1766 \n", + "1 0.95 4.22 0.000179 Noble gas 1868 \n", + "2 453.65 1615.00 0.534000 Alkali metal 1817 \n", + "3 1560.00 2744.00 1.850000 Alkaline earth metal 1798 \n", + "4 2348.00 4273.00 2.370000 Metalloid 1808 \n", + "5 3823.00 4098.00 2.267000 Nonmetal Ancient \n", + "6 63.15 77.36 0.001251 Nonmetal 1772 \n", + "7 54.36 90.20 0.001429 Nonmetal 1774 " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Answer\n", "data.head(8)" - ], - "id": "ac14452b9f70836e", - "outputs": [], - "execution_count": null + ] }, { - "metadata": {}, "cell_type": "markdown", - "source": "What element has atomic number 110? Hint: The table has 118 elements in it.", - "id": "ba7c9cb041afd40d" + "id": "ba7c9cb041afd40d", + "metadata": {}, + "source": [ + "What element has atomic number 110? Hint: The table has 118 elements in it." + ] }, { - "metadata": {}, "cell_type": "code", - "source": "# Add your answer here", + "execution_count": 8, "id": "1c4beea42f5bb2d8", + "metadata": {}, "outputs": [], - "execution_count": null + "source": [ + "# Add your answer here" + ] }, { - "metadata": {}, "cell_type": "code", + "execution_count": 9, + "id": "82f5627d2fea26b7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AtomicNumberSymbolNameAtomicMassCPKHexColorElectronConfigurationElectronegativityAtomicRadiusIonizationEnergyElectronAffinityOxidationStatesStandardStateMeltingPointBoilingPointDensityGroupBlockYearDiscovered
109110DsDarmstadtium282.166NaN[Rn]7s2 5f14 6d8 (predicted)NaNNaNNaNNaN8, 6, 4, 2, 0Expected to be a SolidNaNNaNNaNTransition metal1994
110111RgRoentgenium282.169NaN[Rn]7s2 5f14 6d9 (predicted)NaNNaNNaNNaN5, 3, 1, -1Expected to be a SolidNaNNaNNaNTransition metal1994
111112CnCopernicium286.179NaN[Rn]7s2 5f14 6d10 (predicted)NaNNaNNaNNaN2, 1, 0Expected to be a SolidNaNNaNNaNTransition metal1996
112113NhNihonium286.182NaN[Rn]5f14 6d10 7s2 7p1 (predicted)NaNNaNNaNNaNNaNExpected to be a SolidNaNNaNNaNPost-transition metal2004
113114FlFlerovium290.192NaN[Rn]7s2 7p2 5f14 6d10 (predicted)NaNNaNNaNNaN6, 4,2, 1, 0Expected to be a SolidNaNNaNNaNPost-transition metal1998
114115McMoscovium290.196NaN[Rn]7s2 7p3 5f14 6d10 (predicted)NaNNaNNaNNaN3, 1Expected to be a SolidNaNNaNNaNPost-transition metal2003
115116LvLivermorium293.205NaN[Rn]7s2 7p4 5f14 6d10 (predicted)NaNNaNNaNNaN+4, +2, -2Expected to be a SolidNaNNaNNaNPost-transition metal2000
116117TsTennessine294.211NaN[Rn]7s2 7p5 5f14 6d10 (predicted)NaNNaNNaNNaN+5, +3, +1, -1Expected to be a SolidNaNNaNNaNHalogen2010
117118OgOganesson295.216NaN[Rn]7s2 7p6 5f14 6d10 (predicted)NaNNaNNaNNaN+6, +4, +2, +1, 0, -1Expected to be a GasNaNNaNNaNNoble gas2006
\n", + "
" + ], + "text/plain": [ + " AtomicNumber Symbol Name AtomicMass CPKHexColor \\\n", + "109 110 Ds Darmstadtium 282.166 NaN \n", + "110 111 Rg Roentgenium 282.169 NaN \n", + "111 112 Cn Copernicium 286.179 NaN \n", + "112 113 Nh Nihonium 286.182 NaN \n", + "113 114 Fl Flerovium 290.192 NaN \n", + "114 115 Mc Moscovium 290.196 NaN \n", + "115 116 Lv Livermorium 293.205 NaN \n", + "116 117 Ts Tennessine 294.211 NaN \n", + "117 118 Og Oganesson 295.216 NaN \n", + "\n", + " ElectronConfiguration Electronegativity AtomicRadius \\\n", + "109 [Rn]7s2 5f14 6d8 (predicted) NaN NaN \n", + "110 [Rn]7s2 5f14 6d9 (predicted) NaN NaN \n", + "111 [Rn]7s2 5f14 6d10 (predicted) NaN NaN \n", + "112 [Rn]5f14 6d10 7s2 7p1 (predicted) NaN NaN \n", + "113 [Rn]7s2 7p2 5f14 6d10 (predicted) NaN NaN \n", + "114 [Rn]7s2 7p3 5f14 6d10 (predicted) NaN NaN \n", + "115 [Rn]7s2 7p4 5f14 6d10 (predicted) NaN NaN \n", + "116 [Rn]7s2 7p5 5f14 6d10 (predicted) NaN NaN \n", + "117 [Rn]7s2 7p6 5f14 6d10 (predicted) NaN NaN \n", + "\n", + " IonizationEnergy ElectronAffinity OxidationStates \\\n", + "109 NaN NaN 8, 6, 4, 2, 0 \n", + "110 NaN NaN 5, 3, 1, -1 \n", + "111 NaN NaN 2, 1, 0 \n", + "112 NaN NaN NaN \n", + "113 NaN NaN 6, 4,2, 1, 0 \n", + "114 NaN NaN 3, 1 \n", + "115 NaN NaN +4, +2, -2 \n", + "116 NaN NaN +5, +3, +1, -1 \n", + "117 NaN NaN +6, +4, +2, +1, 0, -1 \n", + "\n", + " StandardState MeltingPoint BoilingPoint Density \\\n", + "109 Expected to be a Solid NaN NaN NaN \n", + "110 Expected to be a Solid NaN NaN NaN \n", + "111 Expected to be a Solid NaN NaN NaN \n", + "112 Expected to be a Solid NaN NaN NaN \n", + "113 Expected to be a Solid NaN NaN NaN \n", + "114 Expected to be a Solid NaN NaN NaN \n", + "115 Expected to be a Solid NaN NaN NaN \n", + "116 Expected to be a Solid NaN NaN NaN \n", + "117 Expected to be a Gas NaN NaN NaN \n", + "\n", + " GroupBlock YearDiscovered \n", + "109 Transition metal 1994 \n", + "110 Transition metal 1994 \n", + "111 Transition metal 1996 \n", + "112 Post-transition metal 2004 \n", + "113 Post-transition metal 1998 \n", + "114 Post-transition metal 2003 \n", + "115 Post-transition metal 2000 \n", + "116 Halogen 2010 \n", + "117 Noble gas 2006 " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Answer\n", "data.tail(9)\n", "\n", "# The element with an atomic number of 110 is Darmstadtium." - ], - "id": "82f5627d2fea26b7", - "outputs": [], - "execution_count": null + ] }, { - "metadata": {}, "cell_type": "markdown", - "source": "Change the \"Symbol\" data to strings. Check the data type of the column after.", - "id": "9885f5ed07d28703" + "id": "9885f5ed07d28703", + "metadata": {}, + "source": [ + "Change the \"Symbol\" data to strings. Check the data type of the column after." + ] }, { - "metadata": {}, "cell_type": "code", - "source": "# Add your answer here", + "execution_count": 10, "id": "7fa9904a9de0f284", + "metadata": {}, "outputs": [], - "execution_count": null + "source": [ + "# Add your answer here" + ] }, { - "metadata": {}, "cell_type": "code", + "execution_count": 11, + "id": "d6403b10cf05d3b9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data type after change: string\n" + ] + } + ], "source": [ "# Answer\n", "data[\"Symbol\"] = data[\"Symbol\"].astype(\"string\")\n", "print(f'Data type after change: {data[\"Symbol\"].dtype}')" - ], - "id": "d6403b10cf05d3b9", - "outputs": [], - "execution_count": null + ] }, { - "metadata": {}, "cell_type": "markdown", + "id": "420135f8853d1421", + "metadata": {}, "source": [ "## Writing files\n", "\n", @@ -271,41 +1231,42 @@ "\n", "As DataFrames have an index column, we have to decide if we want to keep this or not. We can do this using the `index` parameter. To **NOT**\n", "include the index column, use `index=False`." - ], - "id": "420135f8853d1421" + ] }, { - "metadata": {}, "cell_type": "code", - "source": "data.to_csv(\"periodic_table_out.csv\", index=False)", + "execution_count": 12, "id": "484f5eeecf6e9533", + "metadata": {}, "outputs": [], - "execution_count": null + "source": [ + "data.to_csv(\"periodic_table_out.csv\", index=False)" + ] }, { - "metadata": {}, "cell_type": "markdown", + "id": "8cb03b854e801781", + "metadata": {}, "source": [ "> As with reading files, we can specify what separator we want the data to be written using `sep`. There are many other useful parameters for\n", "> specifying what data to save and how to save it. See [the documentation](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_csv.html) for more infromation." - ], - "id": "8cb03b854e801781" + ] }, { - "metadata": {}, "cell_type": "markdown", + "id": "73f5ded338418595", + "metadata": {}, "source": [ "# To Do\n", "- select a subset of a df\n", "- create new columns\n", "- calculate statistics" - ], - "id": "73f5ded338418595" + ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "base", "language": "python", "name": "python3" }, @@ -319,7 +1280,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.6" + "version": "3.12.9" } }, "nbformat": 4, From 689c049627a741d84d44627e3fd8027f9282c30d Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Tue, 15 Jul 2025 11:31:43 +0100 Subject: [PATCH 11/94] Made code answers visible in dark mode, started editing for loops lesson. --- _config.yml | 2 + lessons/advanced_libs/RDKit_drawing.ipynb | 84 +++ lessons/loops_functions/For_Loop_Lesson.ipynb | 512 +++++++++++++----- .../conditional_statements.ipynb | 2 +- .../variables/mathematical-operators.ipynb | 15 +- 5 files changed, 460 insertions(+), 155 deletions(-) diff --git a/_config.yml b/_config.yml index 5eca94e..2dc9cc9 100644 --- a/_config.yml +++ b/_config.yml @@ -3,6 +3,8 @@ title: Python in Chemistry author: The Python in Chemistry Community +copyright: "2025" + # logo: ./logo/logo.png # Force re-execution of notebooks on each build. diff --git a/lessons/advanced_libs/RDKit_drawing.ipynb b/lessons/advanced_libs/RDKit_drawing.ipynb index 4c0062e..616ef57 100644 --- a/lessons/advanced_libs/RDKit_drawing.ipynb +++ b/lessons/advanced_libs/RDKit_drawing.ipynb @@ -215,6 +215,90 @@ "Draw.MolToImage(m)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Task 5: Using loops \n", + "\n", + "When chemists want to store molecular structures in a computer they can store in an encoded way called SMILES strings. You don't need to understand what these mean but just to know that libraries that can handle chemical structure can read them. The code below will import the RDKit package and print the structure of benzoic acid. The code works by passing the SMILES string for benzoic acid to the function display_molecule that then draws it out. Check out the functions lesson if you want to understand more about functions, but for this lesson all you just need to follow the syntax below.\n", + "\n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from rdkit import Chem\n", + "\n", + "def display_molecule (smiles_string):\n", + " mol = Chem.MolFromSmiles(smiles_string)\n", + " img=Chem.Draw.MolToImage(mol)\n", + " display(img)\n", + "\n", + "# display the structure of benzoic acid\n", + "benzoic_acid_miles = \"C1=CC=C(C=C1)C(=O)O\"\n", + "display_molecule(benzoic_acid_miles)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Task 5 continued \n", + "Now you know how to print one molecule lets use your understanding of for loops to print lots of molecules. Here are a list of the smiles strings of some interesting molecules, Dolutegravir a very important anti-hiv drug, Atovaquone which treats malaria and paclitaxol that is an important \n", + "\n", + "\n", + "
\n", + "
    \n", + "
  • C[C@@H]1CCO[C@@H]2N1C(=O)C3=C(C(=O)C(=CN3C2)C(=O)NCC4=C(C=C(C=C4)F)F)O\n", + "
  • C1CC(CCC1C2=CC=C(C=C2)Cl)C3=C(C4=CC=CC=C4C(=O)C3=O)O\n", + "
  • CC1=C2[C@H](C(=O)[C@@]3([C@H](C[C@@H]4[C@]([C@H]3[C@@H]([C@@](C2(C)C)(C[C@@H]1OC(=O)[C@@H]([C@H](C5=CC=CC=C5)NC(=O)C6=CC=CC=C6)O)O)OC(=O)C7=CC=CC=C7)(CO4)OC(=O)C)O)C)OC(=O)C\n", + "
\n", + " \n", + "
\n", + "\n", + "Using the concepts above write a for loop that will draw the structrue of all 3 molecules. You need to:\n", + "- define a list of the smiles strings\n", + "- loop through the list and display each molecule using the display_molecule function\n", + "\n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "molecule_smiles = ['C[C@@H]1CCO[C@@H]2N1C(=O)C3=C(C(=O)C(=CN3C2)C(=O)NCC4=C(C=C(C=C4)F)F)O',\n", + "'C1CC(CCC1C2=CC=C(C=C2)Cl)C3=C(C4=CC=CC=C4C(=O)C3=O)O',\n", + "'CC1=C2[C@H](C(=O)[C@@]3([C@H](C[C@@H]4[C@]([C@H]3[C@@H]([C@@](C2(C)C)(C[C@@H]1OC(=O)[C@@H]([C@H](C5=CC=CC=C5)NC(=O)C6=CC=CC=C6)O)O)OC(=O)C7=CC=CC=C7)(CO4)OC(=O)C)O)C)OC(=O)C']\n", + "\n", + "for smiles in molecule_smiles:\n", + " display_molecule(smiles)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Click here to see a possible solution to Task 5 \n", + "\n", + "\n", + "```Python\n", + "molecule_smiles = ['C[C@@H]1CCO[C@@H]2N1C(=O)C3=C(C(=O)C(=CN3C2)C(=O)NCC4=C(C=C(C=C4)F)F)O',\n", + "'C1CC(CCC1C2=CC=C(C=C2)Cl)C3=C(C4=CC=CC=C4C(=O)C3=O)O',\n", + "'CC1=C2[C@H](C(=O)[C@@]3([C@H](C[C@@H]4[C@]([C@H]3[C@@H]([C@@](C2(C)C)(C[C@@H]1OC(=O)[C@@H]([C@H]>>>(C5=CC=CC=C5)NC(=O)C6=CC=CC=C6)O)O)OC(=O)C7=CC=CC=C7)(CO4)OC(=O)C)O)C)OC(=O)C']\n", + "\n", + "for smiles in molecule_smiles:\n", + " display_molecule(smiles)\n", + "```" + ] + }, { "cell_type": "markdown", "metadata": { diff --git a/lessons/loops_functions/For_Loop_Lesson.ipynb b/lessons/loops_functions/For_Loop_Lesson.ipynb index f1fb00d..dfc2208 100644 --- a/lessons/loops_functions/For_Loop_Lesson.ipynb +++ b/lessons/loops_functions/For_Loop_Lesson.ipynb @@ -9,8 +9,10 @@ "# The `for` loop\n", "\n", "## Learning Outcomes\n", - "- TODO\n", - "- TEST\n", + "- Iterate using a ``for`` loop\n", + "- Use a list and the ``range()`` function to iterate with ``for``\n", + "- Understand ``continue`` and ``break``\n", + "- Use nested loops\n", "\n", "## Prerequisites:\n", "- Variables\n", @@ -24,28 +26,49 @@ "id": "2VRPDborAVn1" }, "source": [ - "

The `for` loop

\n", + "## Iterating with a list\n", "\n", - "

One area where you will see a real benefit of using programming in your work is when you need to repeat a task over and over again. For example maybe you need to process the same type of data file many times with different values. This can take a lot of time one by one but Python can really come to your rescue and save you hours. Plus all your lab colleagues will be beating a path to your door to ask for your help. You will soon become the lab data processing guru!

\n", + "You will often find tasks that you need to do over and over again, such as the same calculation on multiple data points. To save writing out the same equation over and over again, you can instead use loops to do thousands of calculations incredibly quickly. You will become a lab data processing guru!\n", "\n", + "Just like with ``if`` statements, ``for`` loops require specific syntax.\n", "\n", - "

One of the easiest way to perform this task is to use a 'for' loop.

\n", + ">```Python\n", + "> for number in list_of_numbers:\n", + "> do action\n", + "\n", + "- `for` indicates that we will begin a loop.\n", + "- `number` is a new variable we are defining, describing the items within the list of numbers. For each loop, it will redefine to refer to the next item in the list.\n", + "- `in list_of_numbers` indicates that we want to repeat the action in the loop once per element in the list `list_of_numbers`.\n", + "- `:` signals the beginning of the loop.\n", + "- The action within the loop are indented with the ```` key. All lines of code indented just below the ``for`` line gets repeated within the loop. When the code is no longer indented, the loop is over. You can write code of any length within a ``for `` loop as long as you respect its indentation.\n", "\n", - "

Here is an example:

" + "Here is an example:" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { "id": "VSiGQd0PKsxD" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H2\n", + "H2O\n", + "CH4\n" + ] + } + ], "source": [ "molecules = [\"H2\", \"H2O\", \"CH4\"]\n", "\n", "for mol in molecules:\n", - " print(mol)" + " print(mol)\n", + "\n", + "# This is no longer indented, and represents the rest of the program" ] }, { @@ -57,26 +80,26 @@ "The cell above results in three strings printed despite having only used a single `print()` statement. Let's look at this closer.\n", "\n", "We begin by defining a list of strings:\n", - "```python\n", - "molecules = [\"H2\", \"H2O\", \"CH4\"]\n", - "```\n", + ">```python\n", + ">molecules = [\"H2\", \"H2O\", \"CH4\"]\n", + "\n", + "We start a loop with the line:\n", + ">```python\n", + ">for mol in molecules:\n", "\n", - "We then start a loop with the line:\n", - "```python\n", - "for mol in molecules:\n", - "```\n", "- `for` indicates that we will begin a loop.\n", - "- `mol` is a new variable that we are currently defining.\n", + "- `mol` is a new variable we are defining, describing the items within the list of molecules.\n", "- `in molecules` indicates that we want to do repeat the operations in the loop once per element in the list `molecules`.\n", "- `:` signals the beginning of the loop.\n", "\n", - "After this line of code, `print(mol)` prints the contents of the `mol` variable to the screen.\n", + "We print the contents of the `mol` variable to the screen. \n", + ">```Python\n", + ">print(mol) \n", + "While we are within this loop, the variable `mol` will adopt the values of each element of the list `molecules` in sequence, changing at every loop. This is why `print(mol)` is effectively becoming `print(\"H2\")`, `print(\"H2O\")`, and `print(\"CH4\")` one after another.\n", "\n", - "Notice how `print(mol)` has some leading spaces (typed with the `` key). We say that this piece of code is _indented_, meaning that it has one `` space separating it from the left side of the screen.\n", + "When the code is no longer indented, the loop is over. You can write Python code of any length inside a `for` loop as long as you respect its indentation. \n", "\n", - "When we write indented code below a line starting with `for`, all of that code gets repeated within the `for` loop. Conveniently, while we are within this loop, the variable `mol` will adopt the values of each element of `molecules` in sequence, changing at every loop.\n", "\n", - "This is why `print(mol)` is effectively becoming `print(\"H2\")`, `print(\"H2O\")`, and `print(\"CH4\")` one after another.\n", "\n" ] }, @@ -84,108 +107,168 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
Task 1: Understanding a Loop \n", + "### Example loops\n", "\n", - " Take a look at this code block and answer the questions\n", - "\n", - ">``` Python\n", - ">\n", - ">gas_list = ['Nitrogen', 'Oxygen', 'Fluorine']\n", - ">for gas in gas_list:\n", - "> print(gas)\n", - "\n", - "
" + "- Using a list of strings, a list of numbers, and mixed.\n", + "- Doing maths operators and actions withint the indented block\n", + "- Iterating through a string" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "MULTIPLE CHOICE QUESTION\n", + "#### Example 1: Maths on a list of numbers\n", "\n", - "- The loop will print the name of each gas on a separate line (correct)\n", - "- the loop will print one line with all the gas names\n", - "- The variable gas takes on each value of gas list in turn (correct)\n", - "- the variable gas_list changes each time around the loop" + "``for`` loops can iterate through lists containing both strings and numbers. When iterating through lists of floats or integers, you can then perform maths operations on each item. You could then append it to a new list to use later.\n", + "\n", + "```Python\n", + "# Create a list of pressures in mmHg\n", + "pressure_mmHg = [2945.01, 1671.43, 908.56, 625.3]\n", + "\n", + "# Create an empty list which we will populate with pressures in bar\n", + "# This must be created outside the loop\n", + "pressure_bar = []\n", + "\n", + "for value in pressure_mmHg:\n", + " # Calculate pressure in bar and check with a print() statement\n", + " new_pressure = value / 750.06\n", + " print(new_pressure)\n", + "\n", + " # Add the calculated pressure in bar to the empty list\n", + " pressure_bar.append(new_pressure)\n", + "\n", + "# We can now use the list of pressures in bar throughout the rest of the program\n", + "print(pressure_bar)\n", + "```\n", + "\n", + "In this piece of code, we are converting pressure in mmHg to bar. Each value in the list ``pressure_mmHg`` is converted into bar, printed, and appended into a new list which contains all the associated values in bar. This list can then be used throughout the rest of the code.\n", + "\n", + "The empty list ``pressure_bar`` is first defined outside of the loop. If it was defined inside the loop, it would be re-defined on every loop empty again. Try it yourself. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
Task 2: Understanding a Loop \n", + "#### Example 2: Iterating through a string\n", "\n", - "In the lab you are making methyl benzoate according using the scheme below. Five scientists repeat the reaction starting with 3 g of benzoic acid and get of 2.5 g, 2.7 g, 3.1 g, 1.6 g and 4 g of product.\n", + "``for`` loops can also iterate over items in a string.\n", "\n", - "\"The\n", + "```Python\n", + "string = \"hydrogen2oxygen\"\n", "\n", - "Lets use your understanding of for loops to quickly work out the yields for each person.\n", - "
" + "for letter in string:\n", + " print(letter)\n", + "```\n", + "\n", + "This has limited use for Chemistry purposes, but it is good to be aware of." ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "product_mass_list = [2.5,2.7,3.1,1.6,4]\n", - "starting_mass = 3 # grams\n", - "theoretical_yield = (_______/_______)*136\n", - "for product_mass in product_mass_list:\n", - " percent_yield = (_________ / ___________) * 100\n", - " # the print statement uses the f-string syntax to format the output of the calculation\n", - " print(f\"Percent yield: {percent_yield:.0f}%\")\n" + "#### Example 3: Iterating using nested lists\n", + "\n", + "You can also iterate over nested lists, however it is important to keep in mind that the nested list itself is the item you are referring to. You can refer to items within the nested list by using square brackets. \n", + "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
Click here to see a possible solution to Task 2 \n", - "\n", - ">```Python\n", - ">product_mass_list = [2.5,2.7,3.1,1.6,4]\n", - ">starting_mass = 3 # grams\n", - ">theoretical_yield = (starting_mass/122)*136\n", - ">for product_mass in product_mass_list:\n", - "> percent_yield = (product_mass / theoretical_yield) * 100\n", - "> # the print statement uses the f-string syntax to format the output of the calculation\n", - "> print(f\"Percent yield: {percent_yield:.0f}%\")\n", - ">```\n", - "
" + "### Practice Tasks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
Task 3: Understanding a Loop \n", + "
Task 1: Understanding a Loop \n", "\n", - "You have a series of temperature measurements from your reaction in degrees C and you want to print them out in Kelvin. One of your colleagues writes some code but it doesn't seem to be working. Can you identify the problem and fix the code?\n", + " Take a look at this code block and answer the questions\n", "\n", - "
" + ">``` Python\n", + ">\n", + ">gas_list = ['Nitrogen', 'Oxygen', 'Fluorine']\n", + ">for gas in gas_list:\n", + "> print(gas)\n", + "\n", + "MULTIPLE CHOICE QUESTION\n", + "\n", + "- The loop will print the name of each gas on a separate line (correct)\n", + "- the loop will print one line with all the gas names\n", + "- The variable gas takes on each value of gas list in turn (correct)\n", + "- the variable gas_list changes each time around the loop\n", + "\n", + "
\n", + "\n", + "
Click here to view the answers \n", + "\n", + "The answer is...\n", + "\n", + "
\n", + "\n", + "
\n", + "\n" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "# Your colleagues code\n", + "
Task 2: Understanding a Loop \n", + "\n", + "In the lab you are making methyl benzoate according using the scheme below, starting with 3 g of benzoic acid. Five scientists repeat the reaction, and get the following yields of product: \n", + "\n", + "2.5 g, 2.7 g, 3.1 g, 1.6 g and 4 g. \n", + "\n", + "\"The\n", "\n", - "# The code below is not working. Can you fix it?\n", - "temperature_measurements = [27.3, 28.1, 26.9, 27.5, 28.0]\n", - "for temperature_C in temperature_measurements:\n", - " temperature_K = temperature_C + 273.15\n", - "print(f\"Temperature: {temperature_K}Β°C\")" + "Use your understanding of ``for`` loops to quickly work out the percentage yields for each person.\n", + "\n", + "
\n", + "\n", + "
Click here to see a possible solution to Task 2 \n", + "\n", + ">```Python\n", + ">product_mass_list = [2.5,2.7,3.1,1.6,4]\n", + ">starting_mass = 3 # grams\n", + ">\n", + ">theoretical_yield = (starting_mass/122)*136\n", + ">\n", + ">for product_mass in product_mass_list:\n", + "> percent_yield = (product_mass / theoretical_yield) * 100\n", + "> print(f\"Percent yield: {percent_yield:.0f}%\")\n", + ">```\n", + "
\n", + "\n", + "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ + "
Task 3: Understanding a Loop \n", + "\n", + "You have a series of temperature measurements from your reaction in degrees C and you want to print them out in Kelvin. One of your colleagues writes some code but it doesn't seem to be working. Can you identify the problem and fix the code?\n", + "\n", + ">```Python\n", + "># Your colleagues code\n", + ">\n", + "># The code below is not working. Can you fix it?\n", + ">temperature_measurements = [27.3, 28.1, 26.9, 27.5, 28.0]\n", + ">\n", + ">for temperature_C in temperature_measurements:\n", + "> temperature_K = temperature_C + 273.15\n", + ">\n", + ">print(f\"Temperature: {temperature_K}Β°C\")\n", + "\n", + "
\n", + "\n", "
Click here to see a possible solution to Task 3 \n", "\n", "Remember that the items that you want to do each time you go around the for loop need to be indented. In the example the print statement is not indented and so is not executed each time, but only one the loop is finished. You can fix the code just by indenting the print statement with the tab key.\n", @@ -196,26 +279,9 @@ "> print(f\"Temperature: {temperature_K}Β°C\")\n", ">```\n", "\n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When we are talking about for loops more generally we use the following terms:\n", - "- **Discrete variable**: a variable changes its value at every iteration of the loop (e.g. `temperature_C` in task 3).\n", - "- **Iterator**: a variable containing multiple values, which can be used in a `for` loop (e.g. `temperature_measurements` in the last example). Lists are the most common kind of operator in Python.\n", - "\n", - "The general syntax of a `for` loop is:\n", - "```python\n", - "for discrete_variable in iterator:\n", - " # some\n", - " # indented\n", - " # code\n", - "```\n", + "
\n", "\n", - "You can write Python code of any length inside a `for` loop as long as you respect its indentation. " + "
" ] }, { @@ -256,84 +322,235 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
Task 5: Using loops \n", + "## Using ``zip()`` and ``enumerate()``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Example: using zip() \n", + "\n", + "The ``zip()`` function takes two or more lists and associates them element-wise with each other, assigning a temporary variable name to each item as it does so. In this way, we can access two lists and their contents at the same time. It is important that the two lists have the same number of entries, or this will not work.\n", "\n", - "When chemists want to store molecular structures in a computer they can store in an encoded way called SMILES strings. You don't need to understand what these mean but just to know that libraries that can handle chemical structure can read them. The code below will import the RDKit package and print the structure of benzoic acid. The code works by passing the SMILES string for benzoic acid to the function display_molecule that then draws it out. Check out the functions lesson if you want to understand more about functions, but for this lesson all you just need to follow the syntax below.\n", + "Run the code below.\n", + "\n", + ">```Python\n", + ">molecules = [\"H2O\", \"CO2\", \"HCN\"]\n", + ">masses = [[1.008, 1.008, 12.011] , [12.011, 15.999, 15.999], [1.008, 12.011, 14.007]]\n", + ">\n", + "># Assigns the temporary variable name 'molec' to each string in the list 'molecules'\n", + "># Assigns the temporary variable name 'mass' to each list within the list 'masses'\n", + ">for molec, mass in zip(molecules, masses):\n", + "> # Use square brackets to access items in the nested list\n", + "> molecular_mass = mass[0] + mass[1] + mass[2]\n", + "> print(f\"Molecular mass of {molec} is {molecular_mass:.3f}\")\n", + ">\n", + ">print(\"This is the end of the loop.\")\n", + "\n", + "You will see that for each string within the list 'molecules' and for each list within the list 'masses', we can call both items at the same time. For nested lists, we can call entries within the nested lists using square brackets. Remember that due to Python's zero-indexing, the first item in the nested list has to be called with the number '0' and so on. \n", "\n", "
" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Iterating using ``range()``\n", + "\n", + "Instead of using lists we can also iterate using the built-in Python function ``range()``. Instead of iterating through a list, this allows you to iterate a loop a set number of times, from 0 upwards. We often use `i` or `x` as the variable representing the number in the range.\n", + "\n", + "Try running the following piece of code:" + ] + }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "1\n", + "2\n" + ] + } + ], + "source": [ + "for i in range(3):\n", + " print(i)" + ] + }, + { + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "from rdkit import Chem\n", + "You will notice it has printed ``0``,``1``,``2``, but not any further than that. This is because Python uses something called 0-indexing, which might have been alluded to in the variable types lesson. Python will print 3 numbers starting from 0. This means if you want to print up to and including the number 3, you have to put ``range(4)``.\n", "\n", - "def display_molecule (smiles_string):\n", - " mol = Chem.MolFromSmiles(smiles_string)\n", - " img=Chem.Draw.MolToImage(mol)\n", - " display(img)\n", + "The ``range()`` function is also able to count from one specified number to another specified number in integer jumps. When we are providing more than one modifier to the function, we must input them in the following way:\n", "\n", - "# display the structure of benzoic acid\n", - "benzoic_acid_miles = \"C1=CC=C(C=C1)C(=O)O\"\n", - "display_molecule(benzoic_acid_miles)" + ">```Python\n", + ">for i in range(start, end, jump):\n", + "> print(i)\n", + ">```\n", + "\n", + "This will start counting from and including the start number, up to and not including the end number, in intervals specified by the third number. These can be positive or negative, and Python can count up or down. However, beware, as the ``range()`` function cannot take float values, only integer values." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
Task 5 continued \n", - "Now you know how to print one molecule lets use your understanding of for loops to print lots of molecules. Here are a list of the smiles strings of some interesting molecules, Dolutegravir a very important anti-hiv drug, Atovaquone which treats malaria and paclitaxol that is an important \n", + "### Examples\n", "\n", + "Write out and run the following for loops. Make sure to look at what number it starts and ends at.\n", "\n", - "
\n", - "
    \n", - "
  • C[C@@H]1CCO[C@@H]2N1C(=O)C3=C(C(=O)C(=CN3C2)C(=O)NCC4=C(C=C(C=C4)F)F)O\n", - "
  • C1CC(CCC1C2=CC=C(C=C2)Cl)C3=C(C4=CC=CC=C4C(=O)C3=O)O\n", - "
  • CC1=C2[C@H](C(=O)[C@@]3([C@H](C[C@@H]4[C@]([C@H]3[C@@H]([C@@](C2(C)C)(C[C@@H]1OC(=O)[C@@H]([C@H](C5=CC=CC=C5)NC(=O)C6=CC=CC=C6)O)O)OC(=O)C7=CC=CC=C7)(CO4)OC(=O)C)O)C)OC(=O)C\n", - "
\n", - " \n", - "
\n", + "```Python\n", + "for x in range(2, 10):\n", + " print(\"Count: \", x)\n", + "```\n", + "\n", + "```Python\n", + "for x in range (10,-1,-1):\n", + " print(\"Count: \", x)\n", + "```\n", + "\n", + "```Python\n", + "for x in range(3,7,2):\n", + " print(\"Count in twos: \", x)\n", + "```\n", + "\n", + "This loop does stops at the number 5. This is because the end of the range is 6, but because it is counting in twos, it does not make it there. Watch out for these 0-indexing errors. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Try these lines of code \n", + "\n", + "Try the following for loops. They will return an error, try to figure out why.\n", "\n", - "Using the concepts above write a for loop that will draw the structrue of all 3 molecules. You need to:\n", - "- define a list of the smiles strings\n", - "- loop through the list and display each molecule using the display_molecule function\n", + ">```Python\n", + ">for x in range(10,5):\n", + "> print(x)\n", + "\n", + "This one will not return any output, as it does not know it needs to count down. Add the number '-1' separated by a comma to the 'range()' function to correct it.\n", + "\n", + ">```Python\n", + ">for x in range(5.5):\n", + "> print(x)\n", + "\n", + "This will return an error, because the ``range()`` function cannot handle float numbers. It also cannot jump in floats.\n", "\n", "
" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Nested loops\n", + "\n", + "You can also have loops inside of loops, just as you can have lists inside of lists. We would call this nested loops." + ] + }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2 * 5 = 10\n", + "2 * 6 = 12\n", + "2 * 7 = 14\n", + "3 * 5 = 15\n", + "3 * 6 = 18\n", + "3 * 7 = 21\n", + "4 * 5 = 20\n", + "4 * 6 = 24\n", + "4 * 7 = 28\n" + ] + } + ], "source": [ - "molecule_smiles = ['C[C@@H]1CCO[C@@H]2N1C(=O)C3=C(C(=O)C(=CN3C2)C(=O)NCC4=C(C=C(C=C4)F)F)O',\n", - "'C1CC(CCC1C2=CC=C(C=C2)Cl)C3=C(C4=CC=CC=C4C(=O)C3=O)O',\n", - "'CC1=C2[C@H](C(=O)[C@@]3([C@H](C[C@@H]4[C@]([C@H]3[C@@H]([C@@](C2(C)C)(C[C@@H]1OC(=O)[C@@H]([C@H](C5=CC=CC=C5)NC(=O)C6=CC=CC=C6)O)O)OC(=O)C7=CC=CC=C7)(CO4)OC(=O)C)O)C)OC(=O)C']\n", + "numbers = [2, 3, 4]\n", + "multipliers = [5, 6, 7]\n", "\n", - "for smiles in molecule_smiles:\n", - " display_molecule(smiles)" + "for x in numbers:\n", + " for y in multipliers:\n", + " ans = x * y\n", + " print(f\"{x} * {y} = {ans}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
Click here to see a possible solution to Task 5 \n", + "In this example, we can see that the first value from the list 'numbers' is taken, and is used to multiply by each value within 'multipliers'. Then the loop moves on to the second value in 'numbers' and again multiplies by all three values in 'multipliers'. \n", "\n", + "EXAMPLES\n", "\n", - "```Python\n", - "molecule_smiles = ['C[C@@H]1CCO[C@@H]2N1C(=O)C3=C(C(=O)C(=CN3C2)C(=O)NCC4=C(C=C(C=C4)F)F)O',\n", - "'C1CC(CCC1C2=CC=C(C=C2)Cl)C3=C(C4=CC=CC=C4C(=O)C3=O)O',\n", - "'CC1=C2[C@H](C(=O)[C@@]3([C@H](C[C@@H]4[C@]([C@H]3[C@@H]([C@@](C2(C)C)(C[C@@H]1OC(=O)[C@@H]([C@H]>>>(C5=CC=CC=C5)NC(=O)C6=CC=CC=C6)O)O)OC(=O)C7=CC=CC=C7)(CO4)OC(=O)C)O)C)OC(=O)C']\n", + "PRACTICE qs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Continue and Break\n", + "\n", + "One way we can have more control over our loops is by using the Python commands ``continue`` and ``break``.\n", + "\n", + "``continue`` is used to end the current iteration of the loop, and continue on to the next iteration.\n", + "\n", + "``break`` is used to end the current loop.\n", + "\n", + "Run the two sets of code below and compare them.\n", + "\n", + "##### ``continue``\n", + ">```Python\n", + ">molecs = [\"H2O\", \"HCN\", \"CO2\", \"NH3\", \"CH3\"]\n", + ">\n", + ">for formula in molecs:\n", + "> if formula == \"CO2\":\n", + "> continue\n", + "> print(formula)\n", + ">\n", + ">print(\"This represents the rest of the code continuing\")\n", "\n", - "for smiles in molecule_smiles:\n", - " display_molecule(smiles)\n", - "```" + "
\n", + "\n", + "##### ``break``\n", + ">```Python\n", + ">molecs = [\"H2O\", \"HCN\", \"CO2\", \"NH3\", \"CH3\"]\n", + ">\n", + ">for formula in molecs:\n", + "> if formula == \"CO2\":\n", + "> break\n", + "> print(formula)\n", + ">\n", + ">print(\"This represents the rest of the code continuing\")\n", + "\n", + "\n", + "
\n", + "\n", + "In the ``continue`` statement, \"CO2\" is not printed, as the loop has already restarted onto the next iteration, which is to print \"NH3\". \n", + "\n", + "In the ``break`` statement, nothing is printed from \"CO2\" onwards, as the entire loop has ended as soon as the condition became True." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### More practice" ] }, { @@ -343,21 +560,20 @@ }, "source": [ "## TODO\n", - "A second part of the lesson covering the following.\n", - "- Iterating with `range()`\n", - "- Using a loop to generate a list (and maybe list comprehension)\n", - "- Nesting loops\n", - "- Continue statements" + "- examples and tasks" ] }, { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "tpuihpop9duI" - }, - "outputs": [], - "source": [] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "\n", + "When we are talking about for loops more generally we use the following terms:\n", + "- **Discrete variable**: a variable changes its value at every iteration of the loop (e.g. `temperature_C` in task 3).\n", + "- **Iterator**: a variable containing multiple values, which can be used in a `for` loop (e.g. `temperature_measurements` in the last example). Lists are the most common kind of iterator in Python." + ] } ], "metadata": { @@ -365,7 +581,7 @@ "provenance": [] }, "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "base", "language": "python", "name": "python3" }, @@ -379,7 +595,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.12.3" } }, "nbformat": 4, diff --git a/lessons/loops_functions/conditional_statements.ipynb b/lessons/loops_functions/conditional_statements.ipynb index 8a71bf0..0de9787 100644 --- a/lessons/loops_functions/conditional_statements.ipynb +++ b/lessons/loops_functions/conditional_statements.ipynb @@ -45,7 +45,7 @@ "\n", "When the condition is True, Python will go on to run the code which is indented. Indentation is how Python knows what is part of the ``if`` statement, and what is the rest of the code. Often, programs that run Python will automatically insert indentation after the ``if condition:`` (not forgetting the colon!), but you can also use the 'tab' key to insert the correct indentation (which as a standard is 4 spaces). If there is no colon and no indentation, errors can occur.\n", "\n", - "If the condition is False, then the indented code is ignored, and Python continues onto whatever the next non-indented lines are." + "If the condition is False, the indented code is ignored, and Python continues onto whatever the next non-indented lines are." ] }, { diff --git a/lessons/variables/mathematical-operators.ipynb b/lessons/variables/mathematical-operators.ipynb index bf470a5..985c53d 100644 --- a/lessons/variables/mathematical-operators.ipynb +++ b/lessons/variables/mathematical-operators.ipynb @@ -134,8 +134,10 @@ "\n", "
\n", " The output of this chunk of code is:
\n", - " The mass of water is: 18.015 \n", - "

☝ Note: Remember to separate objects in a print statement with commas.\n", + "\n", + "The mass of water is: 18.015\n", + "\n", + "
☝ Note: Remember to separate objects in a print statement with commas.\n", "
\n", " \n", " \n", @@ -148,7 +150,7 @@ "> print(\"The mass of a hydrogen molecule is: \", 2 * H)\n", "\n", "The output of this code is:
\n", - " The mass of a hydrogen molecule is: 2.016 \n", + " The mass of a hydrogen molecule is: 2.016 \n", "\n", "☝ Note: The value 2.016 has been calculated, but is not stored as a variable, as in the previous example. If you wanted to do further maths with the number 2.016, it would be better to store it as a variable.\n", "\n", @@ -169,9 +171,10 @@ "> # Doing maths inside an f string\n", "> print(f\"The mass of ethane is: {2 * C + 6 * H:.5f}\")\n", "\n", - "The output of this is:
\n", - "The mass of methane is: 16.04
\n", - "The mass of ethane is 30.06400
\n", + "The output of this is:
\n", + ">```Python\n", + ">The mass of methane is: 16.04
\n", + ">The mass of ethane is 30.06400\n", "\n", "☝ Note: The syntax :.5f indicates that the calculation should be given to 5 significant figures. The number can be changed to any number of desired significant figures.\n", "\n", From f45288e794908493802b2157c852ec18942057cf Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Wed, 16 Jul 2025 18:32:02 +0100 Subject: [PATCH 12/94] Updated the for loops lesson - added sections on range(), zip, enumerate, nested loops, continue and break, with examples and practice problems for all sections, as well as final practice. Added summary and learning outcomes. --- lessons/variables/mathematical-operators.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lessons/variables/mathematical-operators.ipynb b/lessons/variables/mathematical-operators.ipynb index b3f0501..127bc83 100644 --- a/lessons/variables/mathematical-operators.ipynb +++ b/lessons/variables/mathematical-operators.ipynb @@ -170,7 +170,7 @@ ">The mass of methane is: 16.04
\n", ">The mass of ethane is 30.06400\n", "\n", - "☝ Note: The syntax :.5f indicates that the calculation should be given to 5 significant figures. The number can be changed to any number of desired significant figures.\n", + "☝ Note: The syntax :.5f indicates that the calculation should be given to 5 decimal places. The number can be changed to any number of desired significant figures.\n", "\n", "
\n", " \n", From d322e15aa64c64bda869874462fc7bc8da2262ed Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Thu, 17 Jul 2025 09:23:10 +0100 Subject: [PATCH 13/94] Fixed some typos --- lessons/loops_functions/For_Loop_Lesson.ipynb | 42 ++++++++++++++++--- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/lessons/loops_functions/For_Loop_Lesson.ipynb b/lessons/loops_functions/For_Loop_Lesson.ipynb index dfc2208..0101426 100644 --- a/lessons/loops_functions/For_Loop_Lesson.ipynb +++ b/lessons/loops_functions/For_Loop_Lesson.ipynb @@ -198,16 +198,19 @@ "\n", "MULTIPLE CHOICE QUESTION\n", "\n", - "- The loop will print the name of each gas on a separate line (correct)\n", + "- The loop will print the name of each gas on a separate line\n", "- the loop will print one line with all the gas names\n", - "- The variable gas takes on each value of gas list in turn (correct)\n", + "- The variable gas takes on each value of gas list in turn\n", "- the variable gas_list changes each time around the loop\n", "\n", "
\n", "\n", "
Click here to view the answers \n", "\n", - "The answer is...\n", + "- The loop will print the name of each gas on a separate line \\u2705\n", + "- the loop will print one line with all the gas names\n", + "- The variable gas takes on each value of gas list in turn (correct)\n", + "- the variable gas_list changes each time around the loop\n", "\n", "
\n", "\n", @@ -297,9 +300,36 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Amino acid: Alanine\n", + "Amino acid: Arginine\n", + "Amino acid: Asparagine\n", + "Amino acid: Aspartic acid\n", + "Amino acid: Cysteine\n", + "Amino acid: Glutamic acid\n", + "Amino acid: Glutamine\n", + "Amino acid: Glycine\n", + "Amino acid: Histidine\n", + "Amino acid: Isoleucine\n", + "Amino acid: Leucine\n", + "Amino acid: Lysine\n", + "Amino acid: Methionine\n", + "Amino acid: Phenylalanine\n", + "Amino acid: Proline\n", + "Amino acid: Serine\n", + "Amino acid: Threonine\n", + "Amino acid: Tryptophan\n", + "Amino acid: Tyrosine\n", + "Amino acid: Valine\n" + ] + } + ], "source": [ "natural_amino_acids = [\"Alanine\", \"Arginine\", \"Asparagine\", \"Aspartic acid\", \"Cysteine\", \"Glutamic acid\", \"Glutamine\", \"Glycine\", \"Histidine\", \"Isoleucine\", \"Leucine\", \"Lysine\", \"Methionine\", \"Phenylalanine\", \"Proline\", \"Serine\", \"Threonine\", \"Tryptophan\", \"Tyrosine\", \"Valine\"]\n", "for amino_acid in natural_amino_acids:\n", @@ -595,7 +625,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.3" + "version": "3.12.9" } }, "nbformat": 4, From 1dccd22653fd41c48b86713e3293cbab5f83a0c4 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Thu, 17 Jul 2025 10:43:06 +0100 Subject: [PATCH 14/94] correct commit --- lessons/loops_functions/For_Loop_Lesson.ipynb | 661 ++++++++++++++++-- .../PyinC_while_loops_WIP.ipynb | 8 +- .../loops_functions/functions_and_scope.ipynb | 32 +- lessons/organising_code.md | 6 + lessons/solving-problems.md | 2 +- lessons/solving_problems/flowcharts.ipynb | 99 +++ lessons/variables/Comparisons.ipynb | 29 +- .../variables/mathematical-operators.ipynb | 2 +- 8 files changed, 751 insertions(+), 88 deletions(-) diff --git a/lessons/loops_functions/For_Loop_Lesson.ipynb b/lessons/loops_functions/For_Loop_Lesson.ipynb index dfc2208..aa02b5f 100644 --- a/lessons/loops_functions/For_Loop_Lesson.ipynb +++ b/lessons/loops_functions/For_Loop_Lesson.ipynb @@ -10,14 +10,16 @@ "\n", "## Learning Outcomes\n", "- Iterate using a ``for`` loop\n", - "- Use a list and the ``range()`` function to iterate with ``for``\n", - "- Understand ``continue`` and ``break``\n", + "- Iterate through a list\n", + "- Understand ``zip()`` and ``enumerate`\n", + "- Iterate using the ``range()`` function\n", "- Use nested loops\n", + "- Understand ``continue`` and ``break``\n", "\n", "## Prerequisites:\n", "- Variables\n", "- Comparison\n", - "- `if` statements" + "- `if` statements\n" ] }, { @@ -77,7 +79,7 @@ "id": "hwu0INZoK5FO" }, "source": [ - "The cell above results in three strings printed despite having only used a single `print()` statement. Let's look at this closer.\n", + "The cell above prints three stings despite having only used a single `print()` statement. Let's look at this closer.\n", "\n", "We begin by defining a list of strings:\n", ">```python\n", @@ -107,11 +109,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Example loops\n", - "\n", - "- Using a list of strings, a list of numbers, and mixed.\n", - "- Doing maths operators and actions withint the indented block\n", - "- Iterating through a string" + "### Examples: Basic ``for`` loops" ] }, { @@ -171,43 +169,84 @@ "source": [ "#### Example 3: Iterating using nested lists\n", "\n", - "You can also iterate over nested lists, however it is important to keep in mind that the nested list itself is the item you are referring to. You can refer to items within the nested list by using square brackets. \n", - "\n" + "You can also iterate over nested lists, however it is important to keep in mind that the nested list itself is the item you are referring to. You can refer to items within the nested list by using square brackets. Try out this code:\n", + "\n", + ">```Python\n", + ">bimolecular_atom_masses = [[1.008, 1.008], [12.011, 15.999], [15.999, 15.999]]\n", + ">molecule_mass = []\n", + ">\n", + ">for molecule in bimolecular_atom_masses:\n", + "> total_mass = molecule[0] + molecule[1]\n", + "> print(total_mass)\n", + "> molecule_mass.append(total_mass)\n", + ">\n", + ">print(molecule_mass)\n", + "\n", + "In this program, each nested list in ``bimolecular_atom_masses`` is assigned the temporary variable name ``molecule``. To refer to an item within this nested list, you must refer to it as ``molecule[0]`` or ``molecule[1]``, where the square bracketted number refers to the item's position within the list. Remember that Python is zero-indexed, so the first item in a list is called '0', the second item is called '1' and so on. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Practice Tasks" + "#### Example 4: ``if`` statements within loops\n", + "\n", + "You can test a condition by using an `if` statement within your ``for`` loop. For example, to find outliers in your data.\n", + "\n", + "This is an imaginary data set, with standard deviation and the mean already found. We want to identify any points that are more than 3 standard deviations above the mean.\n", + "\n", + "```Python\n", + "data_points = [5.6, 11.4, 4.1, 3.4, 2.5, 37.2, 2.9, 12.2, 14.9, 9.6]\n", + "standard_deviation = 5.5\n", + "mean = 8.6\n", + "\n", + "for point in data_points:\n", + " if point > mean + 3 * standard_deviation:\n", + " print(point, \" is an outlier\")\n", + "```\n", + "\n", + "The output is:\n", + " 37.2 is an outlier \n", + "\n", + "We could also use loops to calculate the standard deviation!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
Task 1: Understanding a Loop \n", - "\n", - " Take a look at this code block and answer the questions\n", + "### Practice 1: Basic ``for`` Loops" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Task 1: Write a basic loop \n", "\n", - ">``` Python\n", - ">\n", - ">gas_list = ['Nitrogen', 'Oxygen', 'Fluorine']\n", - ">for gas in gas_list:\n", - "> print(gas)\n", + " Write a code that prints out each item in the following list, using a ``for`` loop. Then answer the following True/False questions.\n", "\n", - "MULTIPLE CHOICE QUESTION\n", + " gas_list = ['Nitrogen', 'Oxygen', 'Fluorine'] \n", "\n", - "- The loop will print the name of each gas on a separate line (correct)\n", - "- the loop will print one line with all the gas names\n", - "- The variable gas takes on each value of gas list in turn (correct)\n", - "- the variable gas_list changes each time around the loop\n", + "1. The loop will print the name of each gas on the same line. \n", + "2. The variable ``gas_list`` does not change on each loop.\n", + "3. The ``for`` statement does not need a colon.\n", "\n", "
\n", "\n", "
Click here to view the answers \n", "\n", - "The answer is...\n", + "Here is an example of the code you should have written:\n", + "\n", + ">``` Python\n", + ">gas_list = ['Nitrogen', 'Oxygen', 'Fluorine']\n", + ">for gas in gas_list:\n", + "> print(gas)\n", + "\n", + "1. False. Each gas name will be printed on a separate line.\n", + "2. True. The variable ``gas_list`` is the same throughout the loop.\n", + "3. False. The end of every ``for`` statement requires a colon, otherwise Python will throw an error.\n", + "\n", "\n", "
\n", "\n", @@ -223,11 +262,14 @@ "\n", "In the lab you are making methyl benzoate according using the scheme below, starting with 3 g of benzoic acid. Five scientists repeat the reaction, and get the following yields of product: \n", "\n", - "2.5 g, 2.7 g, 3.1 g, 1.6 g and 4 g. \n", + "2.5 g, 2.7 g, 3.1 g, 1.6 g, 4 g. \n", "\n", "\"The\n", "\n", - "Use your understanding of ``for`` loops to quickly work out the percentage yields for each person.\n", + "Use your understanding of ``for`` loops to work out the percentage yields for each person. Use an `if` statement within the loop to test the following conditions:\n", + "- Percentage yield is smaller than 50 % - print a statement that the yield is poor. \n", + "- Percentage yield is between 50 % and 100 % - print that the yield is good. \n", + "- Percentage yield is over 100% - print a statement that the product is likely impure.\n", "\n", "
\n", "\n", @@ -240,9 +282,15 @@ ">theoretical_yield = (starting_mass/122)*136\n", ">\n", ">for product_mass in product_mass_list:\n", - "> percent_yield = (product_mass / theoretical_yield) * 100\n", - "> print(f\"Percent yield: {percent_yield:.0f}%\")\n", - ">```\n", + "> percent_yield = (product_mass / theoretical_yield) * 100\n", + "> print(f\"Percent yield: {percent_yield:.0f}%\")\n", + "> if percent_yield < 50:\n", + "> print(\"Poor yield\")\n", + "> elif percent_yield >= 50 and percent_yield < 100:\n", + "> print(\"Good yield\")\n", + "> elif percent_yield >= 100:\n", + "> print(\"Likely Impure\")\n", + "\n", "\n", "\n", "
" @@ -254,7 +302,7 @@ "source": [ "
Task 3: Understanding a Loop \n", "\n", - "You have a series of temperature measurements from your reaction in degrees C and you want to print them out in Kelvin. One of your colleagues writes some code but it doesn't seem to be working. Can you identify the problem and fix the code?\n", + "You have a series of temperature measurements from your reaction in degrees C and you want to print all of them out in Kelvin. One of your colleagues writes some code but it doesn't seem to be working. Can you identify the problem and fix the code?\n", "\n", ">```Python\n", "># Your colleagues code\n", @@ -288,48 +336,68 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
Task 4: Understanding a Loop \n", - "\n", - "Run the code below and answer the following questions to check your understanding\n", - "\n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "natural_amino_acids = [\"Alanine\", \"Arginine\", \"Asparagine\", \"Aspartic acid\", \"Cysteine\", \"Glutamic acid\", \"Glutamine\", \"Glycine\", \"Histidine\", \"Isoleucine\", \"Leucine\", \"Lysine\", \"Methionine\", \"Phenylalanine\", \"Proline\", \"Serine\", \"Threonine\", \"Tryptophan\", \"Tyrosine\", \"Valine\"]\n", - "for amino_acid in natural_amino_acids:\n", - " print(f\"Amino acid: {amino_acid}\")" + "## Using ``zip()`` and ``enumerate()``\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "MULTIPLE CHOICE QUESTION\n", + "``zip()`` and ``enumerate()`` are two built-in Python functions which gives lists a bit more functionality, especially within loops. It is very important you understand their purpose and syntax.\n", + "\n", + "#### ``Zip()``\n", + "The first is ``zip()``. This function takes multiple lists and associates them element-wise. Elements from each list can then be called. It is like being able to call multiple lists within one ``for`` loop.\n", + "\n", + ">```Python\n", + ">atom_names = [\"H\", \"He,\", \"Li\", \"Be\"]\n", + ">atom_masses = [1.008, 4.003, 6.94, 9.012]\n", + ">\n", + ">for name, mass in zip(atom_names, atom_masses):\n", + "> print(f\"The mass of {name} is {mass}\")\n", + "\n", + "The result is:
\n", + "The mass of H is 1.008
\n", + "The mass of He, is 4.003
\n", + "The mass of Li is 6.94
\n", + "The mass of Be is 9.012
\n", + "\n", + "``name`` is the temporary variable for items in the list ``atom_names``, and ``mass`` is the temporary variable for items in the list ``atom_masses``. Within the ``for`` loop, both temporary variables can be called. When the next loop begins, both temporary variables move on to the next item in each list. \n", + "\n", + "\n", + "#### ``Enumerate``\n", + "\n", + "The ``enumerate()`` function assigns each element of a list a number, from 0 upwards, which can then be referred to. This is a good way of identifying where in a list a certain item is. The basic syntax of ``enumerate()`` is ``for i, j in list:``, where `i` is a temporary variable referring to the index number that is being assigned, and `j` is the item within the list.\n", + "\n", + "Here is an example:\n", + "\n", + ">```Python\n", + ">atom_names = [\"H\",\"He\", \"Li\",\"Be\"]\n", + ">\n", + ">for index, atom in enumerate(atom_names):\n", + "> print(atom, \"is at position\" , index, \"in the list\")\n", + "\n", + "Resulting in the following output:\n", "\n", - "- The discrete variable is amino acid (correct)\n", - "- The discrete variable is amino acids\n", - "- The iterator is amino_acid\n", - "- The iterator is amino_acids (correct)\n" + " H is at position 0 in the list
\n", + "He is at position 1 in the list
\n", + "Li is at position 2 in the list
\n", + "Be is at position 3 in the list
\n", + "\n", + "Note that H is at position 0, not 1. This goes back to Python's 0-indexing, where ordered items are assigned values starting from 0, not 1. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Using ``zip()`` and ``enumerate()``" + "### Examples using zip and enumerate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
Example: using zip() \n", + "#### Example 1: Using ``zip()``\n", "\n", "The ``zip()`` function takes two or more lists and associates them element-wise with each other, assigning a temporary variable name to each item as it does so. In this way, we can access two lists and their contents at the same time. It is important that the two lists have the same number of entries, or this will not work.\n", "\n", @@ -349,8 +417,101 @@ ">print(\"This is the end of the loop.\")\n", "\n", "You will see that for each string within the list 'molecules' and for each list within the list 'masses', we can call both items at the same time. For nested lists, we can call entries within the nested lists using square brackets. Remember that due to Python's zero-indexing, the first item in the nested list has to be called with the number '0' and so on. \n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Example 2: Zipping more than 2 lists\n", "\n", - "
" + "You can zip more than just two lists together. Copy out and run this code:\n", + "\n", + ">```Python\n", + ">atom_names = [\"H\", \"He,\", \"Li\", \"Be\"]\n", + ">atom_masses = [1.008, 4.003, 6.94, 9.012]\n", + ">atom_proton_number = [1, 2, 3, 4]\n", + ">\n", + ">for name, mass, proton_number in zip(atom_names, atom_masses, atom_proton_number):\n", + "> print(f\"The mass of {name} is {mass}. It has {proton_number} protons.\")\n", + "\n", + "Here, we have associated 3 lists element-wise, and are able to refer to all three temporary variables within the loop.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Example 3: Using ``enumerate``\n", + "\n", + "You have a very long list of amino acids, and you want to find the position of the amino acid \"Proline\".\n", + "\n", + ">```Python\n", + ">natural_amino_acids = [\"Alanine\", \"Arginine\", \"Asparagine\", \"Aspartic acid\", \"Cysteine\", \"Glutamic acid\", \"Glutamine\", \"Glycine\", \"Histidine\", \"Isoleucine\", \"Leucine\", \"Lysine\", \"Methionine\", \"Phenylalanine\", \"Proline\", \"Serine\", \"Threonine\", \"Tryptophan\", \"Tyrosine\", \"Valine\"]\n", + ">\n", + ">for index, amino_acid in enumerate(natural_amino_acids):\n", + "> if amino_acid == \"Proline\":\n", + "> print(f\"Proline is at position {index} in the list.\")\n", + "\n", + "The code will output: \n", + "\n", + " Proline is at position 14 in the list \n", + "\n", + "If you then had another list of corresponding masses, you could then identify which mass belonged to proline and set it as a useful variable. For example, from a the list of masses called ``amino_acid_masses`` you could retrieve and define the variable ``mass_proline = amino_acid_masses[14]``." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Practice: Using zip() and enumerate()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Practice Task: Comparing nearly-identical lists\n", + "\n", + "Two minerals in the same series have very similar formulas. Write a program to compare the two and identify where they differ. Also identify the index at which they differ.\n", + "\n", + "```Python\n", + "# The formulae of the two minerals\n", + "mineral_1 = [\"Pb\", \"Pb\", \"Cu\", \"Cr\", \"O\", \"O\", \"O\", \"O\", \"As\", \"O\", \"O\", \"O\", \"O\", \"O\", \"H\"]\n", + "mineral_2 = [\"Pb\", \"Pb\", \"Cu\", \"Cr\", \"O\", \"O\", \"O\", \"O\", \"P\", \"O\", \"O\", \"O\", \"O\", \"O\", \"H\"]\n", + "```\n", + "\n", + "
Click to view a potential answer \n", + "\n", + "You can do this by first zipping the two lists to compare element-wise, then appending both elements to another list in order to find the discrepancy. It is pretty obvious when using fairly short lists of strings, but imagine if you were using huge arrays of numbers - it would take a lot longer playing spot-the-difference with that!\n", + "\n", + "```Python\n", + "# The formula of the two minerals\n", + "mineral_1 = [\"Pb\", \"Pb\", \"Cu\", \"Cr\", \"O\", \"O\", \"O\", \"O\", \"As\", \"O\", \"O\", \"O\", \"O\", \"O\", \"H\"]\n", + "mineral_2 = [\"Pb\", \"Pb\", \"Cu\", \"Cr\", \"O\", \"O\", \"O\", \"O\", \"P\", \"O\", \"O\", \"O\", \"O\", \"O\", \"H\"]\n", + "\n", + "# An empty list that we will use to find the location of the discrepancy\n", + "comparison = []\n", + "\n", + "# Compare the two lists and create a list of element-wise pairings\n", + "for i, j in zip(mineral_1, mineral_2):\n", + " comparison.append([i, j])\n", + " print(i,j)\n", + " if i != j:\n", + " print(\"This is not the same\")\n", + " continue\n", + "\n", + "# Enumerate to identify the index of the discrepancy\n", + "for index, comp in enumerate(comparison):\n", + " if comp[0] != comp[1]:\n", + " print(comp[0], \"!=\", comp[1], \"at index\", index)\n", + "```\n", + "\n", + "This potential solution uses ``zip()``, ``enumerate``, and nested lists. You can see how you can combine lots of aspects of Python to get a more powerful code.\n", + "\n", + "
" ] }, { @@ -404,7 +565,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Examples\n", + "### Examples: Using ``range()``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Example 1/2/3\n", "\n", "Write out and run the following for loops. Make sure to look at what number it starts and ends at.\n", "\n", @@ -423,14 +591,88 @@ " print(\"Count in twos: \", x)\n", "```\n", "\n", - "This loop does stops at the number 5. This is because the end of the range is 6, but because it is counting in twos, it does not make it there. Watch out for these 0-indexing errors. \n" + "This loop stops at the number 5. This is because the end of the range is 6, but because it is counting in twos, it does not make it there. Watch out for these 0-indexing errors. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Example 4: Creating a list using ``for`` loops\n", + "\n", + "If you want to quickly create a list containing lots of numbers, you could use a ``for`` loop. In the following example, I am creating a list of the values of ml, the magnetic quantum number, for an f orbital. This takes values of -2 to 2.\n", + "\n", + "```Python\n", + "# ml values of a d orbital\n", + "ml_d_orbital = []\n", + "\n", + "for i in range(-2, 3, 1):\n", + " ml_d_orbital.append(i)\n", + "\n", + "print(ml_d_orbital)\n", + "```\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Example 4: Iterating over the length of a list using ``len()``\n", + "\n", + "You can use the built-in Python function ``len()`` to find the length of a list. You could then iterate for the length of the list.\n", + "\n", + "```Python\n", + "atom_list = [\"H\",\"He\",\"Li\",\"Be\"]\n", + "\n", + "for index in range(len(atom_list) + 3):\n", + " print(index)\n", + " print(\"This is a calculation\")\n", + "```\n", + "\n", + "Here, we have a list of strings. I want to do a calculation the same number of times as is in my list, plus three more times. By using ``len()``, I can achieve this. \n", + "\n", + "Note! In this case, the temporary variable ``index`` does not refer to items within ``atom_list``, but is an index created from the ``range()`` function." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Example 5: Creating an empty nested list\n", + "\n", + "In one of my projects I would like to create a list of empty coordinates to use later. I want the coordinate [0,0,0] repeated 1000 times. Instead of writing it out manually, I use a ``for`` loop. Copy out and run this code. Check the correct number of coordinates are being outputted, then change it to create a list of 1000 empty coordinates.\n", + "\n", + "```Python\n", + "coordinates = []\n", + "\n", + "for i in range(10):\n", + " temp_coord = [0]*3\n", + " coordinates.append(temp_coord)\n", + "\n", + "print(coordinates)\n", + "```\n", + "\n", + "The output is:
\n", + " [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] \n", + "\n", + "For the purposes of testing that my program will work, I have used the number '10', however when I want to run it for real, I can make this number as large as I want.\n", + "\n", + "If you have not seen the syntax ``[0]*3``, all it means is to create a list comprised of '0' three times. It is a quicker way of creating large lists of the same number. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Practice Questions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
Try these lines of code \n", + "
Task 1: Correct the error \n", "\n", "Try the following for loops. They will return an error, try to figure out why.\n", "\n", @@ -449,18 +691,80 @@ "
" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Task 2: List certain elements using ``range`` \n", + "\n", + "In the neutral state, elements higher than Lanthanum (atomic number = 57) contain filled or partially-filled f orbitals. Quickly create a list of atomic numbers of all elements (up to and including Nobelium at 102) of elements containing f electrons. \n", + "\n", + "\n", + "
Click to see a potential answer \n", + "\n", + "
\n", + "\n", + ">``` Python\n", + "># Empty list of atomic weights for all elements with f electrons in the neutral state\n", + ">eleme_f_elec = []\n", + ">\n", + ">for i in range(58, 103):\n", + "> eleme_f_elec.append(i)\n", + ">\n", + ">print(eleme_f_elec)\n", + "\n", + "First we create an empty list. The element Cerium, just after Lanthanum, is the first element with f electrons, so it is the start of the range. Nobelium, with atomic number 102, is the last element, however because of Python's 0-indexing, we must set the final value as 103, not 102. The output of this is a list of elemental atomic numbers:\n", + "\n", + " [58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102] \n", + "\n", + "Think further: What if we only wanted certain elements within this, for example only elements with valence f electrons, how could we do this? We could also make this list more helpful by using a dictionary of elemental symbols associated with each atomic number to exchange each number to a elemental symbol, making the list far more intuitive.\n", + "\n", + "
\n", + "\n", + "
" + ] + }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Nested loops\n", "\n", - "You can also have loops inside of loops, just as you can have lists inside of lists. We would call this nested loops." + "You can also have loops inside of loops, just as you can have lists inside of lists. We would call this nested loops.\n", + "\n", + "Try this code to help your understanding:\n", + "\n", + "```Python\n", + "for i in range(4):\n", + " print(\"The start of the outer loop\")\n", + " for j in range(1,4):\n", + " print(j)\n", + "```\n", + "\n", + "The inner code ``for j in range(1,4)`` runs three times, counting from 1 to 3 (remember 0-indexing!). It does this the number of times dictated by the outer loop ``for i in range(4)``. Every time this outer loop starts, it has been signposted by the print() phrase. \n", + "\n", + "If you are struggling to understand nested loops, have a look at the [flowcharts](../solving_problems/flowcharts.ipynb) lesson." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Examples: Nested loops" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Example 1: Multiplying together every combination from two lists\n", + "\n", + "Below is a piece of code with two lists. Every number in the first list is multiplied by every value in the second, exhausting every possibility. This is one of the easiest ways to visualise a nested ``for`` loop." ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -483,21 +787,75 @@ "numbers = [2, 3, 4]\n", "multipliers = [5, 6, 7]\n", "\n", - "for x in numbers:\n", - " for y in multipliers:\n", - " ans = x * y\n", - " print(f\"{x} * {y} = {ans}\")" + "for n in numbers:\n", + " for m in multipliers:\n", + " ans = n * m\n", + " print(f\"{n} * {m} = {ans}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example, we can see that the first value from the list 'numbers' is taken, and is used to multiply by each value within 'multipliers'. Then the loop moves on to the second value in 'numbers' and again multiplies by all three values in 'multipliers'. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "In this example, we can see that the first value from the list 'numbers' is taken, and is used to multiply by each value within 'multipliers'. Then the loop moves on to the second value in 'numbers' and again multiplies by all three values in 'multipliers'. \n", + "#### Example 2: Identifying items repeated in two lists\n", + "\n", + "You have two lists and want to make sure than none are repeated from one list to the other. You could use nested lists to check every combination of th two lists.\n", + "\n", + "```Python\n", + "molecs1 = [\"H2O\", \"HCN\", \"CO2\", \"NH3\"]\n", + "molecs2 = [\"NO2\", \"CO2\", \"CH3\", \"H2\", \"HCN\"]\n", "\n", - "EXAMPLES\n", + "for i in molec1:\n", + " for j in molec2:\n", + " if i == j:\n", + " print(i)\n", + "```\n", "\n", - "PRACTICE qs" + "The output would correctly identify that both ``CO2`` and ``HCN`` are repeated. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Example 3\n", + "\n", + "Create a list of 2-dimensional coordinates for every point in a grid running from x = o to x = 2 and from y = 0 to y = 4.\n", + "\n", + "```Python\n", + "# Define the lists we will use\n", + "x_axis = []\n", + "y_axis = []\n", + "coord_grid = []\n", + "\n", + "# Create x axis values\n", + "for i in range(3):\n", + " x_axis.append(i)\n", + "\n", + "# Create y axis values\n", + "for j in range(5):\n", + " y_axis.append(j)\n", + "\n", + "for x_coord in x_axis:\n", + " for y_coord in y_axis:\n", + " coord_grid.append([x_coord,y_coord])\n", + "\n", + "print(coord_grid)\n", + "```\n", + "\n", + "The output of this is a 2D grid covering all integer points from x = 0 to x = 2, and y = 0 to y = 4:
\n", + " [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4]] \n", + "\n", + "Think further: If we wanted to plot these positions, we could do this using the Python module ``matplotlib.pyplot``, which is discussed later on.\n", + "\n", + "Advanced: If you wanted to skip the first two loops defining the axes, you could use 'list comprehension'. That won't be covered in this lesson, but might be something you want to find out more about at a later date." ] }, { @@ -550,29 +908,178 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### More practice" + "### Examples" ] }, { "cell_type": "markdown", - "metadata": { - "id": "Ejspk6fFPXFK" - }, + "metadata": {}, + "source": [ + "#### Example 1: Only printing molecules containing 'O'\n", + "\n", + "To retrieve only molecules containing oxygen, this code uses a ``continue`` statement. \n", + "\n", + "``` Python\n", + "molecules = [\"HCN\", \"H2O\", \"NH3\", \"CO2\"]\n", + "\n", + "for molec in molecules:\n", + " if \"O\" not in molec:\n", + " continue\n", + " print(molec)\n", + "```\n", + "\n", + "The output will be:\n", + "\n", + "H2O
\n", + "CO2
\n", + "\n", + "Notice that we have used the [logic operator](../variables/Comparisons.ipynb) ``not`` to indicate that we are ending the loop for every molecule that does not contain an oxygen." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Example 2: Only print the first molecule containing 'O'\n", + "\n", + "To retrieve onlyt the first molecule that contains an oxygen atom, this code uses ``break``.\n", + "\n", + "```Python\n", + "molecules = [\"HCN\", \"NH3\", \"H2O\", \"CO2\"]\n", + "\n", + "for molec in molecules:\n", + " if \"O\" in molec:\n", + " print(molec)\n", + " break\n", + "print(\"This represents the rest of the code\")\n", + "```\n", + "\n", + "Notice that in this code, we haven't used ``not``, and instead placed ``print()`` within the ``if`` statement. This allows the program to first print 'H2O' before breaking out of the loop. It is really important to understand which parts of your code are within which statement, and the order in which they occur. If you are struggling to imagine it, try creating or looking at some [flowcharts](../solving_problems/flowcharts.ipynb)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Practice Problems Covering For Loops" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, "source": [ - "## TODO\n", - "- examples and tasks" + "### Practice 1\n", + "\n", + "The workfunction of a metal is the energy required by an incoming photon to remove an electron from its surface. The energy of a photon in J can be calculated using: \n", + "\n", + "$ E = \\frac{hc}{\\lambda} $\n", + "\n", + "Where E is energy in Joules, c is the speed of light in vacuum (3.00×108) and $\\lambda$ is wavelength in metres.\n", + "\n", + "A metal has a workfunction of 6.35 eV, which is equal to 1.017×10-18 J. From the following list of wavelengths in nm, print all values which will result in a photon being released. (Hint: you will need to use an ``if`` statement)\n", + "\n", + "```Python\n", + "wavelengths = [276, 59, 0.5, 1183, 52, 0.002, 127, 474] # nm\n", + "h = 6.626e-34 # m^2kgs^-1\n", + "c = 3.00e8 # ms^-1\n", + "workfunction = 1.017e-18 # J\n", + "```\n", + "\n", + "
Click to view an answer \n", + "\n", + "Remember that there could be multiple ways to appraoch the same question. Below is one solution.\n", + "\n", + "``` Python\n", + "wavelengths = [276, 59, 0.5, 1183, 52, 0.002, 127, 474] # nm\n", + "h = 6.626e-34 # m^2kgs^-1\n", + "c = 3.00e8 # ms^-1\n", + "workfunction = 1.017e-18 # J\n", + "\n", + "for value in wavelengths:\n", + " energy = (h * c) / (value * 1e-9) # J\n", + " if energy >= workfunction:\n", + " print(value, \"nm will release an electron\")\n", + " else:\n", + " print(value, \"nm will NOT release an electron\")\n", + "```\n", + "\n", + "The output of this code is a bit difficult to read. Perhaps you could try instead appending to a list of wavelengths that do release an electron and a list of wavelengths that do not release an electron.\n", + "\n", + "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ + "### Practice 2\n", + "\n", + "Some IR data has been retrieved after a lab. Every peak retrieved by the system has been saved as a list of wavelengths (in cm-1) and a separate list of corresponding transmittance. \n", + "\n", + "Any peaks with a wavenumber below 1500 cm-1 belong to the 'fingerprint zone', and needs to be discarded. A transmittance of 100% means that all light has passed through the compound, and for this particular lab, any transmittance above 95% can be considered background noise, and be discarded. \n", + "\n", + "Using the following data, print the peak values that should be considered in analysis, and append them to separate lists of shifts and transmittance for use later.\n", + "\n", + "```Python\n", + "peak_shift = [3542.63, 3497.12, 3077.12, 3002.03, 2930.46, 2925.47, 2919.60, 2740.36, 1730.00, 1715.89, 1710.20, 1705.23, 1700.458, 1599.30, 1434.42, 1109.34, 808.34, 550.02, 428.43] # cm-1\n", + "peak_transmittance = [66, 73, 41, 57, 95, 96, 97, 70, 38, 35, 97.2, 95.9, 96.1, 50, 59, 97.8, 99.0, 74, 66.0] # %\n", + "```\n", + "\n", + "
Click here to view answer \n", "\n", + "This is the perfect opportunity to use ``zip()``. Do not worry if your code looks a bit different.\n", + "\n", + "```Python\n", + "# Data retrieved from the lab.\n", + "peak_shift = [3542.63, 3497.12, 3077.12, 3002.03, 2930.46, 2925.47, 2919.60, 2740.36, 1730.00, 1715.89, 1710.20, 1705.23, 1700.458, 1599.30, 1434.42, 1109.34, 808.34, 550.02, 428.43] # cm-1\n", + "peak_transmittance = [66, 73, 41, 57, 95, 96, 97, 70, 38, 35, 97.2, 95.9, 96.1, 50, 59, 97.8, 99.0, 74, 66.0] # %\n", + "\n", + "# Empty lists of the data we want to keep from the above lists\n", + "maj_peak_shift = []\n", + "maj_peak_transmittance = []\n", + "\n", + "# Zip the two data lists together to consider both element-wise\n", + "for shift, transmittance in zip(peak_shift, peak_transmittance):\n", + " # We will only keep data if its shift is above 1500 AND its transmittance is below 95\n", + " if shift > 1500 and transmittance < 95:\n", + " print(f\"{shift} cm-1, {transmittance} %\")\n", + " maj_peak_shift.append(shift)\n", + " maj_peak_transmittance.append(transmittance)\n", + " \n", + "print(maj_peak_shift)\n", + "print(maj_peak_transmittance)\n", + "```\n", "\n", + "Try out this code. Does the output of this code match yours? This is another example of using logic operators in our answer.\n", "\n", - "When we are talking about for loops more generally we use the following terms:\n", - "- **Discrete variable**: a variable changes its value at every iteration of the loop (e.g. `temperature_C` in task 3).\n", - "- **Iterator**: a variable containing multiple values, which can be used in a `for` loop (e.g. `temperature_measurements` in the last example). Lists are the most common kind of iterator in Python." + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Learning Objectives\n", + "\n", + "- Use a ``for`` loop\n", + "- Iterate through a loop and using ``range()``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "- The syntax of a ``for`` loop is: ``for i in list:``, and the code within the loop is on the lines immediately following it, indented using ````\n", + "- If retrieving a value in a nested list, you can use ``i[0]`` to retrieve the first item, ``i[1]`` to retrieve the second item, and so on. It is not recommended to use Python lists for anything higher than a 2-dimensional list, as it gets confusing very quickly. Instead, you might want to consider [NumPy](../common_libs/Introduction_to_NumPy.ipynb) arrays (covered in a further lesson).\n", + "- When iterating through two related lists of the same size, you can associate them pairwise using the ``zip()`` function. The syntax is: ``for i, j in zip(list1, list2):``. The two lists MUST be the same dimensions.\n", + "- You can assign each item in a list an index value using the ``enumerate()`` function. The syntax is: ``for index, value in enumerate(list):``.\n", + "- Use the ``range()`` function to iterate a set number of times. The syntax is: ``for i in range(2,8,1))``, where '2' is the start number, '8' is the end number (which, if printed, would be '7' because of Python's zero-indexing), and '1' is the increase step (which can be negative if you are counting down). If you only put a single number into the ``range()`` function, it will count from 0 up to but not including the number you have put in. \n", + "- The built-in function ``len()`` will find the length of a list.\n", + "- Loops inside of loops can compare every combination, iterate multiple actions on each element in a list, and more.\n", + "- ``continue`` will move the program onto the next iteration of the loop.\n", + "- ``break`` will end the loop entirely" ] } ], diff --git a/lessons/loops_functions/PyinC_while_loops_WIP.ipynb b/lessons/loops_functions/PyinC_while_loops_WIP.ipynb index 40512e6..29875ff 100644 --- a/lessons/loops_functions/PyinC_while_loops_WIP.ipynb +++ b/lessons/loops_functions/PyinC_while_loops_WIP.ipynb @@ -23,7 +23,9 @@ "\n", "## The `while` Loop\n", "\n", - "A `while` loop is similar to a [`for` loop](./For_Loop_Lesson.ipynb), with the main difference being it will continuosly loop while a condition is `True`. As as example see the cell below which prints integers from 1 to 5." + "A `while` loop is similar to a [`for` loop](./For_Loop_Lesson.ipynb), with the main difference being it will continuosly loop while a condition is `True`. A ``for`` loop is used when you know how many times you need to iterate, and a ``while`` loop is for when you do not know how many times you need to iterate. In general, if it is possible to do it with a ``for`` loop, try to do it that way, as ``while`` loops have the potential for infinite looping if they are not properly controlled (discussed in more detail in the next section).\n", + "\n", + "As as example see the cell below which prints integers from 1 to 5." ] }, { @@ -112,7 +114,9 @@ " count -= 2\n", "```\n", "\n", - "In this example, `count` is never exactly equal to 0: it counts down from 5, to 3, 1, -1, and continues down. As a result, the condition `count != 0` is never `False`, and the loop will run forever." + "In this example, `count` is never exactly equal to 0: it counts down from 5, to 3, 1, -1, and continues down. As a result, the condition `count != 0` is never `False`, and the loop will run forever.\n", + "\n", + "If this happens, you need to force stop your program. Look for a little square, it usually represents stopping the program while it is still running. If the program runs for too long without stopping, it could crash your computer." ] }, { diff --git a/lessons/loops_functions/functions_and_scope.ipynb b/lessons/loops_functions/functions_and_scope.ipynb index ad79c3f..2a6b009 100644 --- a/lessons/loops_functions/functions_and_scope.ipynb +++ b/lessons/loops_functions/functions_and_scope.ipynb @@ -30,7 +30,19 @@ "id": "1c23b1aa-bffb-4400-867c-042a065273f8", "metadata": {}, "source": [ - "## Functions\n", + "## Functions\n" + ] + }, + { + "cell_type": "markdown", + "id": "9989ffd4", + "metadata": {}, + "source": [ + "We have already seen a number of functions in Python, although you might not have realised that that's what they were. For example the built-in functions, ``print()``, ``range()``, ``type()``, ``len()``, as well as some those from other modules like ``math``, including ``math.cos()`` and ``math.log10()``. Each of these functions do a specific task which would take a long time to write out by hand in your program. Each function takes one or multiple inputs, which you place inside the brackets (like ``print(\"hello\")``, where in this case the string ``\"hello\"`` is the input, and the output would be the word 'hello'). You don't need to write a script explaining to the computer how to translate the input and put it onto your screen, because it is already linked to the word ``print()``, which runs all that code automatically once typed. \n", + "\n", + "Long story short, functions save time.\n", + "\n", + "This is relevant to us writing our program because we will probably use the same \n", "\n", "When running Python scripts, we often use statements to change or read the values of variables. Take the following code, for instance, which looks to add up the values of numbers in a list. Here we can use it to generate the molecular mass of a molecule from a list of atomic masses. The script iterates through the list, and adds each element in it to a running total variable, which at the end of the function contains the total:" ] @@ -42,14 +54,14 @@ "metadata": {}, "outputs": [], "source": [ - "m1 = [12,12,1,1,1,1]\n", + "atom_masses_ethene = [12.011, 12.011, 1.008, 1.008, 1.008, 1.008]\n", "\n", - "m1_total = 0\n", + "total_mass = 0\n", "\n", - "for i in m1:\n", - " m1_total += i\n", + "for atom_mass in atom_masses_ethene:\n", + " total_mass = total_mass + atom_mass\n", "\n", - "print(m1_total)\n" + "print(total_mass)\n" ] }, { @@ -482,6 +494,14 @@ "metadata": {}, "outputs": [], "source": [] + }, + { + "cell_type": "markdown", + "id": "e31e8b18", + "metadata": {}, + "source": [ + "## Summary" + ] } ], "metadata": { diff --git a/lessons/organising_code.md b/lessons/organising_code.md index b461946..f1aeca7 100644 --- a/lessons/organising_code.md +++ b/lessons/organising_code.md @@ -1,3 +1,9 @@ # Organising Code These lessons describe how to write code efficiently by organising it into loops and functions. + + + +When we are talking about for loops more generally we use the following terms: +- **Discrete variable**: a variable changes its value at every iteration of the loop (e.g. `temperature_C` in task 3). +- **Iterator**: a variable containing multiple values, which can be used in a `for` loop (e.g. `temperature_measurements` in the last example). Lists are the most common kind of iterator in Python. diff --git a/lessons/solving-problems.md b/lessons/solving-problems.md index 9641fb9..3e48c76 100644 --- a/lessons/solving-problems.md +++ b/lessons/solving-problems.md @@ -1,4 +1,4 @@ -# Solving Programming Problems +# Approaching Problems How to approach a problem, how to debug, and how to represent your problem/program. diff --git a/lessons/solving_problems/flowcharts.ipynb b/lessons/solving_problems/flowcharts.ipynb index 6c40bdc..d28640e 100644 --- a/lessons/solving_problems/flowcharts.ipynb +++ b/lessons/solving_problems/flowcharts.ipynb @@ -11,6 +11,105 @@ "\n", "If you are stuck on understanding how to iterate through a loop or use an if statement, you can use a flowchart to help you visualise the problem. They are also good to help others understand what your program is achieving." ] + }, + { + "cell_type": "markdown", + "id": "ca99bbcb", + "metadata": {}, + "source": [ + "## Guide to flowcharts and their symbols\n", + "\n", + "All programming flowcharts use a similar system of symbols to make them easier to comprehend.\n", + "- Oval boxes indicate the start or end.\n", + "- Rhombus boxes represent an input or output.\n", + "- Square boxes show a process, e.g. a calculation. \n", + "- Diamond indicates a decision.\n", + "\n", + "All follow the same rules:\n", + "\n", + "- All must have a start and end point.\n", + "- The arrows must be single-headed and show progression. The arrows must start at the start point and end at an end-point. " + ] + }, + { + "cell_type": "markdown", + "id": "46d9dc6e", + "metadata": {}, + "source": [ + "## Flowcharts for visualising conditional ``if`` statements" + ] + }, + { + "cell_type": "markdown", + "id": "9c35144f", + "metadata": {}, + "source": [ + "### Basic `if` statements" + ] + }, + { + "cell_type": "markdown", + "id": "1d4f7f27", + "metadata": {}, + "source": [ + "### Statements using `if`...`elif`...`else`" + ] + }, + { + "cell_type": "markdown", + "id": "d84f2484", + "metadata": {}, + "source": [ + "### Nested ``if`` statements" + ] + }, + { + "cell_type": "markdown", + "id": "f0f7d019", + "metadata": {}, + "source": [ + "## Flowcharts for visualising ``for`` loops" + ] + }, + { + "cell_type": "markdown", + "id": "536a6901", + "metadata": {}, + "source": [ + "### Basic ``for`` loops" + ] + }, + { + "cell_type": "markdown", + "id": "b4e3da37", + "metadata": {}, + "source": [ + "### Nested ``for`` loops\n" + ] + }, + { + "cell_type": "markdown", + "id": "09118b67", + "metadata": {}, + "source": [ + "### Using ``break`` and ``continue``" + ] + }, + { + "cell_type": "markdown", + "id": "006d343d", + "metadata": {}, + "source": [ + "## Flowcharts for visualising ``while`` loops" + ] + }, + { + "cell_type": "markdown", + "id": "d9ed6d12", + "metadata": {}, + "source": [ + "## Creating your own flowcharts" + ] } ], "metadata": { diff --git a/lessons/variables/Comparisons.ipynb b/lessons/variables/Comparisons.ipynb index 0c2e067..474f2ce 100644 --- a/lessons/variables/Comparisons.ipynb +++ b/lessons/variables/Comparisons.ipynb @@ -75,6 +75,7 @@ "| >= | is greater than or equal to | ``a >= b``|\n", "| <= | is less than or equal to | ``a <= b`` |\n", "| is | are the same object | ```a is b``` |\n", + "| in | the object contains another object | ```a in b``` |\n", "\n", "Watch out for the 'is equal to' comparison (```a == b```). It must be two equals signs. Using only one equals sign instead sets the value of varible ``a`` to the value of ``b``, it does not check if they are equal." ] @@ -189,6 +190,25 @@ "Returns ``True``. We have specifically reassigned the variable x to the value of y, and so now the ``is`` comparison is True. " ] }, + { + "cell_type": "markdown", + "id": "bcf9b010", + "metadata": {}, + "source": [ + "``in`` has two uses - you will see it come back in another way when we do [for loops](../loops_functions/For_Loop_Lesson.ipynb). In this context, ``in`` checks if a certain object is contained within another object.\n", + "\n", + ">```Python\n", + "> \"O\" in \"H2O\"\n", + "\n", + "Returns ```True```\n", + "\n", + ">```Python\n", + "> masses = [1.008, 12.011, 15.999]\n", + "> 14.007 in masses\n", + "\n", + "Returns ``False``" + ] + }, { "cell_type": "markdown", "id": "bf23f898", @@ -362,7 +382,14 @@ ">not z > 3 or z != 2\n", "\n", "Returns ``True``, as the output from the ``or`` statement is False. \n", - "\n" + "\n", + ">```Python\n", + "># Checking a perovskite does not contain chromium\n", + ">perovskite = \"CH3NH3PbBr3\"\n", + ">\n", + ">\"Cr\" not in perovskite\n", + "\n", + "Returns ``True``." ] }, { diff --git a/lessons/variables/mathematical-operators.ipynb b/lessons/variables/mathematical-operators.ipynb index 127bc83..80709dc 100644 --- a/lessons/variables/mathematical-operators.ipynb +++ b/lessons/variables/mathematical-operators.ipynb @@ -668,7 +668,7 @@ "- Use `%`, \"modulo\", to find the remainder of a division, and ``//``, \"floored division\"\" to return the integer part of a division.\n", "- Use order of operations (BODMAS/BIDMAS/PEMDAS) to ensure Python does the correct sum.\n", "- Assign your sum a variable to be able to call that value forward later. \n", - "- Inside an f string, use `:.3f` to print your answer to 3 significant figures. Changing the number changes the number of significant figures produced in the answer.\n", + "- Inside an f string, use `:.3f` to print your answer to 3 decimal places. Changing the number changes the number of significant figures produced in the answer.\n", "- Use `+=`, `-=`, `*=`, etc. to change the value of a variable.\n", "- For more complex functions, import them from a library such as `numpy` or `math`. If you import the whole library, you must reference the library using `library.function()`, like in the sum `ans = math.sin(1)`. \n", "- Make sure to place the lines of code importing any functions or libraries at the beginning of the program." From e1191ab967e292072f8138f09117cf191ec300d9 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Thu, 17 Jul 2025 11:28:57 +0100 Subject: [PATCH 15/94] Clean up a few typos and formatting things Had header errors in build Some answers weren't hidden --- lessons/loops_functions/For_Loop_Lesson.ipynb | 108 +++++++++--------- 1 file changed, 51 insertions(+), 57 deletions(-) diff --git a/lessons/loops_functions/For_Loop_Lesson.ipynb b/lessons/loops_functions/For_Loop_Lesson.ipynb index a0b13d8..51d51ba 100644 --- a/lessons/loops_functions/For_Loop_Lesson.ipynb +++ b/lessons/loops_functions/For_Loop_Lesson.ipynb @@ -17,9 +17,9 @@ "- Understand ``continue`` and ``break``\n", "\n", "## Prerequisites:\n", - "- Variables\n", - "- Comparison\n", - "- `if` statements\n" + "- [Variables](/lessons/variables/Variable_data_types.ipynb)\n", + "- [Comparison](/lessons/variables/Comparisons.ipynb)\n", + "- [`if` statements](/lessons/loops_functions/conditional_statements.ipynb)\n" ] }, { @@ -49,21 +49,11 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": { "id": "VSiGQd0PKsxD" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H2\n", - "H2O\n", - "CH4\n" - ] - } - ], + "outputs": [], "source": [ "molecules = [\"H2\", \"H2O\", \"CH4\"]\n", "\n", @@ -208,7 +198,7 @@ "The output is:\n", " 37.2 is an outlier \n", "\n", - "We could also use loops to calculate the standard deviation!" + "We could also use loops to calculate the mean and standard deviation!" ] }, { @@ -260,7 +250,7 @@ "source": [ "
Task 2: Understanding a Loop \n", "\n", - "In the lab you are making methyl benzoate according using the scheme below, starting with 3 g of benzoic acid. Five scientists repeat the reaction, and get the following yields of product: \n", + "In the lab you are making methyl benzoate using the scheme below, starting with 3 g of benzoic acid. Five scientists repeat the reaction, and get the following yields of product: \n", "\n", "2.5 g, 2.7 g, 3.1 g, 1.6 g, 4 g. \n", "\n", @@ -345,7 +335,7 @@ "source": [ "``zip()`` and ``enumerate()`` are two built-in Python functions which gives lists a bit more functionality, especially within loops. It is very important you understand their purpose and syntax.\n", "\n", - "#### ``Zip()``\n", + "### ``Zip()``\n", "The first is ``zip()``. This function takes multiple lists and associates them element-wise. Elements from each list can then be called. It is like being able to call multiple lists within one ``for`` loop.\n", "\n", ">```Python\n", @@ -364,7 +354,7 @@ "``name`` is the temporary variable for items in the list ``atom_names``, and ``mass`` is the temporary variable for items in the list ``atom_masses``. Within the ``for`` loop, both temporary variables can be called. When the next loop begins, both temporary variables move on to the next item in each list. \n", "\n", "\n", - "#### ``Enumerate``\n", + "### ``Enumerate``\n", "\n", "The ``enumerate()`` function assigns each element of a list a number, from 0 upwards, which can then be referred to. This is a good way of identifying where in a list a certain item is. The basic syntax of ``enumerate()`` is ``for i, j in list:``, where `i` is a temporary variable referring to the index number that is being assigned, and `j` is the item within the list.\n", "\n", @@ -416,7 +406,7 @@ ">\n", ">print(\"This is the end of the loop.\")\n", "\n", - "You will see that for each string within the list 'molecules' and for each list within the list 'masses', we can call both items at the same time. For nested lists, we can call entries within the nested lists using square brackets. Remember that due to Python's zero-indexing, the first item in the nested list has to be called with the number '0' and so on. \n", + "You will see that for each string within the list `molecules` and for each list within the list `masses`, we can call both items at the same time. For nested lists, we can call entries within the nested lists using square brackets. Remember that due to Python's zero-indexing, the first item in the nested list has to be called with the number '0' and so on. \n", "\n" ] }, @@ -527,19 +517,9 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n", - "2\n" - ] - } - ], + "outputs": [], "source": [ "for i in range(3):\n", " print(i)" @@ -549,7 +529,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "You will notice it has printed ``0``,``1``,``2``, but not any further than that. This is because Python uses something called 0-indexing, which might have been alluded to in the variable types lesson. Python will print 3 numbers starting from 0. This means if you want to print up to and including the number 3, you have to put ``range(4)``.\n", + "You will notice it has printed ``0``,``1``,``2``, but not any further than that. This is because Python uses something called 0-indexing, which has been mentioned in the variable types lesson. Python will print 3 numbers starting from 0. This means if you want to print up to and including the number 3, you have to put ``range(4)``.\n", "\n", "The ``range()`` function is also able to count from one specified number to another specified number in integer jumps. When we are providing more than one modifier to the function, we must input them in the following way:\n", "\n", @@ -680,14 +660,20 @@ ">for x in range(10,5):\n", "> print(x)\n", "\n", - "This one will not return any output, as it does not know it needs to count down. Add the number '-1' separated by a comma to the 'range()' function to correct it.\n", + "\n", "\n", ">```Python\n", ">for x in range(5.5):\n", "> print(x)\n", "\n", - "This will return an error, because the ``range()`` function cannot handle float numbers. It also cannot jump in floats.\n", + "
Click to see potential answers \n", + "\n", + "The first example will not return any output, as it does not know it needs to count down. Add the number '-1' separated by a comma to the 'range()' function to correct it.\n", + "\n", + "The second example returns an error, because the ``range()`` function cannot handle float numbers. It also cannot jump in floats.\n", "\n", + "\n", + "
\n", "
" ] }, @@ -764,25 +750,9 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2 * 5 = 10\n", - "2 * 6 = 12\n", - "2 * 7 = 14\n", - "3 * 5 = 15\n", - "3 * 6 = 18\n", - "3 * 7 = 21\n", - "4 * 5 = 20\n", - "4 * 6 = 24\n", - "4 * 7 = 28\n" - ] - } - ], + "outputs": [], "source": [ "numbers = [2, 3, 4]\n", "multipliers = [5, 6, 7]\n", @@ -853,9 +823,33 @@ "The output of this is a 2D grid covering all integer points from x = 0 to x = 2, and y = 0 to y = 4:
\n", " [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4]] \n", "\n", - "Think further: If we wanted to plot these positions, we could do this using the Python module ``matplotlib.pyplot``, which is discussed later on.\n", + "Think further: If we wanted to plot these positions, we could do this using the Python module ``matplotlib.pyplot``, which is discussed in a further [tutorial](/lessons/common_libs/Matplotlib_Documentation.ipynb).\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This example highlights a common issue of loops, repeating the same loop several times. In this example we can do away with the first two loops that generate the xaxis by combining them with the nested loop.\n", + "\n", + "It is always a good idea to check your code for extra loops that could be combined into one. It can often improve the efficiency of your code\n", "\n", - "Advanced: If you wanted to skip the first two loops defining the axes, you could use 'list comprehension'. That won't be covered in this lesson, but might be something you want to find out more about at a later date." + "``` python\n", + "# Define the lists we will use\n", + "x_axis = []\n", + "y_axis = []\n", + "coord_grid = []\n", + "\n", + "\n", + "for x_coord in range(3):\n", + " # Create x axis value\n", + " for y_coord in range(5):\n", + " # Create y axis value\n", + " coord_grid.append([x_coord,y_coord])\n", + "\n", + "print(coord_grid)\n", + "```" ] }, { @@ -872,7 +866,7 @@ "\n", "Run the two sets of code below and compare them.\n", "\n", - "##### ``continue``\n", + "### ``continue``\n", ">```Python\n", ">molecs = [\"H2O\", \"HCN\", \"CO2\", \"NH3\", \"CH3\"]\n", ">\n", @@ -885,7 +879,7 @@ "\n", "
\n", "\n", - "##### ``break``\n", + "### ``break``\n", ">```Python\n", ">molecs = [\"H2O\", \"HCN\", \"CO2\", \"NH3\", \"CH3\"]\n", ">\n", From a82453f5c6310f367448c1a3c56788dcb73c64a3 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Mon, 21 Jul 2025 16:23:32 +0100 Subject: [PATCH 16/94] Updated functions lessons - added sections on multiple returns, multiple arguments, docstrings, touches on recursion, added summary, added lots of examples and practice questions --- lessons/loops_functions/For_Loop_Lesson.ipynb | 2 +- .../loops_functions/functions_and_scope.ipynb | 1151 ++++++++++++++--- 2 files changed, 978 insertions(+), 175 deletions(-) diff --git a/lessons/loops_functions/For_Loop_Lesson.ipynb b/lessons/loops_functions/For_Loop_Lesson.ipynb index a0b13d8..aa02b5f 100644 --- a/lessons/loops_functions/For_Loop_Lesson.ipynb +++ b/lessons/loops_functions/For_Loop_Lesson.ipynb @@ -1102,7 +1102,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.9" + "version": "3.12.3" } }, "nbformat": 4, diff --git a/lessons/loops_functions/functions_and_scope.ipynb b/lessons/loops_functions/functions_and_scope.ipynb index 2a6b009..2e92c79 100644 --- a/lessons/loops_functions/functions_and_scope.ipynb +++ b/lessons/loops_functions/functions_and_scope.ipynb @@ -42,353 +42,1029 @@ "\n", "Long story short, functions save time.\n", "\n", - "This is relevant to us writing our program because we will probably use the same \n", + "This is relevant to us because we will probably use the same lines of code over and over again. For example, the code below takes a list of atomic masses and iterates through it, adding each individual atom mass to output the total molecule's mass.\n", "\n", - "When running Python scripts, we often use statements to change or read the values of variables. Take the following code, for instance, which looks to add up the values of numbers in a list. Here we can use it to generate the molecular mass of a molecule from a list of atomic masses. The script iterates through the list, and adds each element in it to a running total variable, which at the end of the function contains the total:" + "```Python\n", + "ethene_atom_masses = [12.011, 12.011, 1.008, 1.008, 1.008, 1.008]\n", + "\n", + "total_mass = 0\n", + "\n", + "for atom_mass in ethene_atom_masses:\n", + " total_mass = total_mass + atom_mass\n", + "\n", + "print(total_mass)\n", + "```\n", + "\n", + "It well to add up the numbers in the list, and if we're just doing this once, will serve perfectly fine. However, if you had another list you needed to add up this way, you would need to write this expression again. If you had 100 lists, you could be spending a lot of time writing just these few lines of code.\n", + "\n", + "This is where functions come in. \n", + "\n", + "In Python, you can define your own function that will run these lines of code for you, so by just typing a short phrase, like ``add_atomic_masses()``, the program will run these lines of code. The next section describes how to go about defining your function. " ] }, { - "cell_type": "code", - "execution_count": null, - "id": "9c60cd53-dab9-4810-9ec2-6bc1914af9a9", + "cell_type": "markdown", + "id": "c4c048a9-fa8c-43d2-ae91-48939a2d02c2", "metadata": {}, - "outputs": [], "source": [ - "atom_masses_ethene = [12.011, 12.011, 1.008, 1.008, 1.008, 1.008]\n", + "## Defining functions\n" + ] + }, + { + "cell_type": "markdown", + "id": "f04a6451", + "metadata": {}, + "source": [ + "Defining functions, like the rest of Python, always takes a specific syntax. This is:\n", "\n", - "total_mass = 0\n", + "```Python\n", + "def function_name(an_input):\n", + " Code block, e.g. doing maths on an_input\n", + " return an_output\n", + "```\n", "\n", - "for atom_mass in atom_masses_ethene:\n", - " total_mass = total_mass + atom_mass\n", + "- ``def`` indicates that we are about to define a new function. \n", + "- ``function_name()`` is what we name it. This is the name that we will use to call our function later on.\n", + "- ``(an_input)`` is the variable that the function will act on, known as the function's argument. It could be a number, string, list, etc., but whatever it is, we need to make sure that we treat it like the correct variable type throughout the main code block. \n", + "- ``:`` indicates the start of the code that will run whenever we call our function.\n", + "- ``Code block`` is a placeholder indicating the main body of the code. This could be maths, reading from a file, or many other things. The main body of the code is indented using the ```` key, just like with 'if', 'for, and 'while'. All the code belonging to this function must be indented and directly below the line ``def function_name():``. You can use 'if', 'for' and 'while' within this code block, but they must respect the first indent.\n", + "- ``return`` indicates the end of the function, and must be one indent away from the margin (unless it is nested within another statement - more on that later). The real meaning of ``return`` is that the variable which comes after it (in this case, ``an_output``) is what the function will spit out at the end. In reality, this means you could have a ``return`` statement halfway down your function.\n", + "- ``an_output`` is what the function will return at the end of its process. You can have multiple outputs (discussed later) separated by commas. \n", + "\n", + "\n", + "### Example\n", + "\n", + "Using this syntax, we will now turn the above code for adding masses into a function. \n", + "\n", + "```Python\n", + "def add_atomic_masses(list_of_atoms):\n", + " total_mass = 0\n", + " for atom_mass in list_of_atoms:\n", + " total_mass = total_mass + atom_mass\n", + " return total_mass\n", + "```\n", "\n", - "print(total_mass)\n" + "The function's argument (what we are putting in) has been named ``list_of_atoms``, instead of the more specific ``ethene_atom_masses``. This is because we want this function to be general, to apply not only to a list of atoms in ethene, but also to other lists containing the masses of atoms in propene, butene, benzenehexacarboxylic acid, and so on. \n", + "\n", + "Another thing you will notice is that the variable ``list_of_atoms`` is treated like a list even though it is never explicitly defined as such. When you call your function (discussed in the next section), you must make sure your input is the correct variable type.\n" ] }, { "cell_type": "markdown", - "id": "6603b780-f776-4993-9f61-b02a303b5e8a", + "id": "41c61d71", "metadata": {}, "source": [ - "This code works well to add up the numbers in the list, and if we're just doing this once, will serve perfectly fine. However, if you had another list you needed to add up this way, you would need to write this expression again. If you had 100 lists, you could be spending a lot of time writing just these few lines of code." + "## Calling functions" ] }, { "cell_type": "markdown", - "id": "c4c048a9-fa8c-43d2-ae91-48939a2d02c2", + "id": "0f0e0996", "metadata": {}, "source": [ - "## Defining functions\n", + "Now that we have created our function ``add_atomic_masses()``, we need to know how to use it in our program. To run the function on a list, we just need to write ``add_atomic_masses(my_list)``. To make the output useable, we then set this to a variable, such as ``formaldehyde_mass = add_atomic_masses(formaldehyde_atom_masses)``, as seen below.\n", + "\n", + ">```Python\n", + ">formaldehyde_atom_masses = [15.999, 12.011, 1.008, 1.008]\n", + ">\n", + ">formaldehyde_mass = add_atomic_masses(formaldehyde_atom_masses)\n", + ">\n", + ">print(formaldehyde_mass)\n", + "\n", + "An important thing to note is that you can only reference variables from within your function definition if they appear on the ``return`` line.\n", + "\n", + "This would work exactly the same with another list of atoms, for example:\n", + "\n", + ">```Python\n", + ">glycine_atom_masses = [1.008, 1.008, 14.007, 12.011, 1.008, 1.008, 12.011, 15.999, 15.999, 1.008]\n", + ">\n", + ">glycine_mass = add_atomic_masses(glycine_atom_masses)\n", + ">\n", + ">print(glycine_mass)\n", + "\n", + "Try putting all three chunks of code into the same program and run it. Be careful though, your function should always be defined at the beginning. \n", "\n", - "Functions offer a way for us to package up frequently-run code into an easily callable package, which we can call repeatedly. Let's now wrap the code used to add up the list elements in a function, called `add_up`" + "Below is another example of calling a function. In this example, we are calling the function within a ``for`` loop. \n", + "\n", + ">```Python\n", + ">many_sets_of_atoms = [\n", + "> [12.011,12.011,1.008,1.008,1.008,1.008],\n", + "> [12.011,1.008,1.008,1.008,12.011,15.999,12.011,1.008,1.008,1.008],\n", + "> [12.011,12.011,12.011,12.011,12.011,12.011]\n", + ">]\n", + ">\n", + ">total_masses = []\n", + ">\n", + ">for atom_mass_list in many_sets_of_atoms:\n", + "> calculated_mass = add_atomic_masses(atom_mass_list)\n", + "> total_masses.append(calculated_mass)\n", + ">\n", + ">print(total_masses)\n", + "\n", + "This code takes each nested list within the list ``many_sets_of_atoms`` and adds up the values within, then appends them to a new list containing only the final masses. In fact, ``.append()`` is another built-in Python function which we have seen before. It is associated with a certain list, signified by ``.`` (in this case, associated with the list ``total_masses``), and the argument is what you want to put into the list (in this case ``calculated_masses``)." ] }, { - "cell_type": "code", - "execution_count": null, - "id": "d03d38ba-1447-4f03-86b0-6c09c09297af", + "cell_type": "markdown", + "id": "49ccc08e", "metadata": {}, - "outputs": [], "source": [ - "def add_up(list_of_atoms):\n", - " total = 0\n", - " for atom in list_of_atoms:\n", - " total += atom\n", - " return total" + "
Practice Question \n", + "\n", + "Write a function that will convert eV to J by multiplying by 1.602×10-19. Do this for:\n", + "\n", + "1. A single value of 4.08 eV. Print the answer, and remember to include units.\n", + "\n", + "2. The following list of workfunctions: ``metal_workfunctions = [4.08, 5.0, 4.07, 2.9, 4.81, 2.1, 5.0, 4.7, 5.1, 4.5] # eV``.\n", + " \n", + " 2.1. Print the new list of workfunctions in J.\n", + "\n", + " 2.2. Print each item in the list on a new line. Include units. \n", + "\n", + "
\n", + "\n", + "
Click here to view answer for Part 1 \n", + "\n", + "In part 1, we are creating a function to take a single variable as an argument and return a single variable. \n", + "\n", + ">```Python\n", + ">eV_value = 4.08 # eV\n", + ">\n", + ">def convert_eV_J(value_eV):\n", + "> value_J = value_eV * 1.602e-19\n", + "> return value_J\n", + ">\n", + ">print(convert_eV_J(eV_value), \"J\")\n", + "\n", + "You should have got the output: 6.53616e-19 J .\n", + "\n", + "Instead of creating another variable to describe the new value in J, this piece of code executes the function within a ``print()`` statement. If we wanted to use this value again later, it would be better to store it in a relevantly named variable.\n", + "\n", + "
\n", + "
\n", + "\n", + "
Click here to view answer for Part 2 \n", + "\n", + "In Part 2, we need to take the program we wrote above, and convert it to take a list as an argument, and also return a list.\n", + "\n", + ">```Python\n", + ">metal_workfunctions = [4.08, 5.0, 4.07, 2.9, 4.81, 2.1, 5.0, 4.7, 5.1, 4.5] # eV\n", + ">\n", + "># Converts a list in eV to a list in J\n", + ">def convert_eV_J(list_value_eV):\n", + "> list_value_J = []\n", + "> for value in list_value_eV:\n", + "> value_J = value * 1.602e-19\n", + "> list_value_J.append(value_J)\n", + "> return list_value_J\n", + "\n", + "Once you have this, you can then either print the whole list in a similar way to Part 1:\n", + "\n", + ">```Python\n", + ">print(convert_eV_J(metal_workfunctions))\n", + "\n", + "Or you can print each value on a new line:\n", + "\n", + ">```Python\n", + ">for num in convert_eV_J(metal_workfunctions):\n", + "> print(num, \"J\")\n", + "\n", + "Try both. Although lists are better to use throughout the rest of a program, it is easier to look at when they have a new value on each line. \n", + "\n", + "
" ] }, { "cell_type": "markdown", - "id": "59c43866-bfd3-4e98-abe9-fa41d97cf5b1", + "id": "7f2b2e67", "metadata": {}, "source": [ - "To turn our adding up into a function, we have added a line before and after. To start with, we have added the statement `def add_up(list_of_atoms):` to the start of our code. This tells Python that we are defining a function, and that it is to treat all indented lines following the colon as part of the function. The `list_of_atoms` contained within the brackets is the function's _argument_. Functions can take many arguments (or none) but this function just takes one: the list which we are asking it to add up. \n", + "## Function Scope" + ] + }, + { + "cell_type": "markdown", + "id": "cffc10a9", + "metadata": {}, + "source": [ + "In Python, the word 'scope' refers to the area in which a variable or function name is valid. For example, if you define a variable at the top of one Python file, you cannot retrieve that variable from another Python file, but you can refer to it from anywhere within the program it belongs to. It is a global variable.\n", + "\n", + "Within a function, there is what is called a 'local scope'. This means that variables created within the function cannot be referred to outside the program unless it has been specified to by ``return``, and assigned a new variable name. They are local variables.\n", + "\n", + "Here is an example, using the above function ``add_atomic_masses``. \n", + "\n", + "```Python\n", + "water_atom_masses = [15.999, 1.008, 1.008]\n", + "\n", + "water_mass = add_atomic_masses(water_atom_masses)\n", + "\n", + "print(total_mass)\n", + "```\n", "\n", - "Following the iterative adding process, the function is asked to `return` the total. Whatever is on the return line of the function is what the function will give back once it has finished running. Occasionally functions will just end in `return`, but generally something should be put on this line so that the function can pass it back. \n", + "``total_mass`` is a name we gave to our output when defining our function, but if we then try to print it outside the function, Python will return a 'name not defined' error. The name ``total_mass`` belongs to the local scope of the function, and therefore the name cannot be referred to in the rest of the program. However, we can refer to it indirectly and reassign it a new variable name (in this case ``water_mass``).\n", "\n", - "Below, we use our new `add_up` function to perform the same operation on `l1` and store the result in variable `x`:" + "Thinking in reverse, a function does however have access to variables which have not been given to them explicitly as arguments. For example, below is a function which converts pressure in bar to pressuer in mmHg. The conversion rate is 1 bar to 750.062 mmHg, which is stored in a variable before the function. The function is still completely valid, and will work just as well as any of the other examples. \n", + "\n", + "```Python\n", + "bar_mmHg_conversion = 750.062\n", + "\n", + "def pressure_conversion(a_pressure):\n", + " pressure_mmHg = a_pressure * bar_mmHg_conversion\n", + " return pressure_mmHg\n", + "```\n", + "\n", + "The only thing to be mindful of when doing this is to keep track of your variables! If you start changing them around, or copy and paste a function from one program into another, your variables might result in errors!" + ] + }, + { + "cell_type": "markdown", + "id": "cfd2f639-6eb3-4378-8c31-8f391d7ddbdf", + "metadata": {}, + "source": [ + "## More complex functions\n", + "\n", + "So far we have covered basic functions, but there are more complex facets to function writing. Some of these complex facets are not often used, especially by beginners, so do not feel you have to memorise all of them. The most important aspects are: empty arguments and return, multiple return conditions, and multiple arguments. \n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "b70a96a7", + "metadata": {}, + "source": [ + "### Functions without arguments and/or return variables" + ] + }, + { + "cell_type": "markdown", + "id": "2b554baf", + "metadata": {}, + "source": [ + "It is possible to create a function that takes no arguments and returns no variables. All you do is write the function name with nothing in the brackets, add your code, and write return. When you call the code, do not put in any arguments. An example is shown below. " ] }, { "cell_type": "code", "execution_count": null, - "id": "4a30ee2e-a69a-4495-b681-cb58d2437655", + "id": "8ea44927", "metadata": {}, "outputs": [], "source": [ - "x = add_up(m1)\n", + "def write_message():\n", + " print(\"This is an important message. It could be an error message, or a long output that you want to call multiple times. An interesting thing about it is that it has no inputs and returns no outputs. Strange, right? Whatever it is, it is very important. Important enough and long enough that I want to give it its own function. A function just for this message. Imagine that. Being so important you get your own function. Well this is what this message is. A very, very important one. It is so important that I don't want to store it as a mere string inside a variable, for fear that it may get accidentally overwritten by some other, less important message. No. It needs - no, **deserves** its own function. A function that takes no inputs and returns no outputs. Just this message. This very, very, important, long, message. Have you made it this far? I should hope so. You shouldn't skip such an important message, especially when you know it is so important. I said that at the beginning, didn't I, that this message was important. Do you remember? Seems so long ago now. Like yesterday, last month, last year, last decade, a time before you were born. The world was a different place, and yet still it still spun, endlessly, through the dark void of space, days still passed and the sun and moon rose and set, the stars endlessly identical, passing over the horizon, infinite worlds stretching out into the cosmos, vast and unknowable. Makes you think, doesn't it, about life, the universe, and everything. Hm? What was that? What is the message, you ask? Oh, can't remember now. Couldn't be that important now, could it?\")\n", + " return\n", "\n", - "print(x)" + "write_message()" ] }, { "cell_type": "markdown", - "id": "d417fb60-282e-4457-a911-c0f94b50afb4", + "id": "98cbe94f", "metadata": {}, "source": [ - "## Scope\n", + "The function ``write_message()`` has been called later on in the code simply by putting ``write.message()``, at which point the message will be printed to the screen. This is the simplest kind of function - no arguments and no returned variables, and it only does one thing. Therefore, these often have limited uses. Keep in mind, however, that some functions can take no arguments but return a variable, and vice versa. It is important to use the correct syntax depending on the function.\n", "\n", - "You may be asking why we need the `return total` statement in our code, as we should be able to reference just the variable `total` which is used as our running total during the function's loop. However, if we try that, we will get an error:" + "Note also, that even though the function takes no argument, you must still supply empty brackets in order to use it. " ] }, { - "cell_type": "code", - "execution_count": null, - "id": "f8a25e4c-cd67-4ae3-a784-a8f7b1078cd2", + "cell_type": "markdown", + "id": "199b97f9", "metadata": {}, - "outputs": [], "source": [ - "x = add_up(m1)\n", + "### Multiple return conditions" + ] + }, + { + "cell_type": "markdown", + "id": "63439068", + "metadata": {}, + "source": [ + "#### Return multiple statements" + ] + }, + { + "cell_type": "markdown", + "id": "198bb5fb", + "metadata": {}, + "source": [ + "So far, our functions have only returned one variable. However, it is possible to return multiple values. \n", + "\n", + "This is a function which returns both the maximum and the mininum of a list of numbers:\n", + "\n", + ">```Python \n", + ">def minmax(number_list):\n", + "> min_value = min(number_list)\n", + "> max_value = max(number_list)\n", + "> return min_value, max_value\n", + ">\n", + ">masses = [1.008, 12.011, 14.007, 6.94]\n", + ">\n", + ">min_mass, max_mass = minmax(masses)\n", + ">\n", + ">print(min_mass)\n", + ">print(max_mass)\n", + "\n", + "This returns:\n", + "```\n", + "1.008\n", + "14.007\n", + "```\n", + "\n", + "Note the following:\n", + "- The two variables we want from the function are both on the ``return`` line, separated by a comma.\n", + "- When we use the function, we need to assign it two variables: ``min_mass`` and ``max_mass``.\n", + " - If we do not do this, we will get the result as a tuple (see [variable lesson](../variables/Variable_data_types.ipynb)). For example:\n", + " ```Python\n", + " mass = minmax(masses)\n", + " print(mass)\n", + " ```\n", + "\n", + " Will return: (1.008, 14.007) , a tuple. This is not a data type you, as a beginner, will often use. \n", + "- If you only want one of the returned variables, you can put a double underscore ``__`` to indicate that you will not retrieve that answer: ``min_mass, __ = minmax(masses)``. \n", + " The function is 'throwing away' the second value. This is useful if you want to test or use only one aspect of the function, or if one of the returned variables takes up a lot of storage space, making your program slow.\n", "\n", - "print(total)" + "But that's not all! Not only can a function return more than one statement, it can also have more than one return statement. " + ] + }, + { + "cell_type": "markdown", + "id": "7300a93d", + "metadata": {}, + "source": [ + "#### Multiple ``return`` statements" ] }, { "cell_type": "markdown", - "id": "fc7bffb4-2db8-4ab2-9570-49a13975ec9b", + "id": "c7ae994f", "metadata": {}, "source": [ - "Here, Python is telling us that the variable named `total` is not defined. This highlights an important feature of functions in Python. Functions only return what is included on the return line, and any other variables which we define in them which are not returned are lost once the function has finished executing. However, this is not true the other way around. Functions *do* have access to variables which have not been given to them explicitly as arguments.\n", + "So far, all our functions have had one ``return`` statement, right at the end, but this is not a requirement. A function can have a return statement anywhere, and it can have more than one. This is usually encountered when functions contain if statements, where depending on whether the conditions are met, different sections of the function may execute. \n", "\n", - "In the code below we can initialise a variable `string` which contains the string `\"benzene\"`. We can then also initialise the function `read_string()` which takes no arguments, but prints the value of the variable `string`. If we call this function, we can see that the string `benzene` is printed to the console." + "The below function checks if a given elemental symbool is a noble gas or not using [Boolean logic](../variables/Comparisons.ipynb). There are three different possible return values in the above function, depending on the input.\n", + "\n", + ">```Python \n", + ">def is_noble_gas(symbol):\n", + "> if type(symbol) is not str or len(symbol) > 2:\n", + "> print(\"Input must be a 1 or 2 character elemental symbol\")\n", + "> return None\n", + "> elif symbol in [\"He\",\"Ne\",\"Ar\",\"Kr\",\"Xe\", \"Rn\", \"Og\"]:\n", + "> return True\n", + "> else:\n", + "> return False\n", + "\n", + "The first conditional statement confirms that a symbol of no more than two characters has been passed to the function as a string. There are more sophisticated ways to handle this sort of error, but these are outside the scope of this lesson. The key thing here is that based on this test, we can have the function return `None` rather than True or False, if an incompatible input is supplied. \n", + "\n", + "The second conditional statement checks if the symbol is a noble gas. If it is, the function will finish and return True. \n", + "\n", + "The last statement is ``else:``. Now that we have eliminated every other option, the inputted symbol cannot be a noble gas. \n", + "\n", + "However, it is important to recognise limitations. This code would not flag the first ``if`` statement for strings with integers ``\"10\"``, empty strings ``\"\"``, or made-up symbols ``\"TM\"``. You could fix this by adjusting the comparative statement to exclude strings of length 0, and add an 'elif' statement checking that the given symbol is within a list containing all the symbols of the periodic table. It is also quite common to store the periodic table in a dictionary, where the key:value pairs are element_name:element_mass. " ] }, { - "cell_type": "code", - "execution_count": null, - "id": "b8cdf670-d3e8-4504-8240-4628fd65ec6a", + "cell_type": "markdown", + "id": "635d7e31", + "metadata": {}, + "source": [ + "#### Practice: Return statements" + ] + }, + { + "cell_type": "markdown", + "id": "1961efb0", "metadata": {}, - "outputs": [], "source": [ - "string = \"benzene\"\n", + "
Practice Question \n", "\n", - "def read_string():\n", - " print(string)\n", - " return\n", + "From a list of wavelengths, return the energy in J and the energy in eV in separate lists.\n", + "\n", + "$ E = \\frac{hc}{\\lambda} $\n", + "\n", + "Remember: To convert from J to eV you must divide by 1.602 $\\times$ 10-19.\n", "\n", - "read_string() # Note here that even though readfoo takes no arguments, we still need to supply some empty brackets after it when calling it.\n" + "
Click here to view an answer \n", + "\n", + ">```Python\n", + ">def energy_calc(wavelengths):\n", + "> h = 6.626e-34 # m^2kgs^-1\n", + "> c = 3.00e8 # ms^-1\n", + "> E_J = []\n", + "> E_eV = []\n", + "> for value in wavelengths:\n", + "> energy_J = (h * c) / (value * 1e-9) # J\n", + "> E_J.append(energy_J)\n", + "> energy_eV = energy_J / 1.602e-19\n", + "> E_eV.append(energy_eV)\n", + "> return E_J, E_eV\n", + ">\n", + ">wavelengths_light = [276, 59, 0.5, 1183, 52, 0.002, 127, 474] # nm\n", + ">\n", + ">energy_light_J, energy_light_eV = energy_calc(wavelengths_light)\n", + ">print(f\"The energies in J are: {energy_light_J}\")\n", + ">print(f\"The energies in eV are: {energy_light_eV}\")\n", + "\n", + "
\n", + "
" ] }, { "cell_type": "markdown", - "id": "ba898076-1abc-45bc-9198-2d22fc0bbdb3", + "id": "4f9071ba", "metadata": {}, "source": [ - "This shows us that even though we did not explicitly pass the variable `string` to our function, it was able to find the value of the variable `string` and output it to the console anyway. This is because `string`, having been declared in our main script, is a *global* variable, in contrast to function variables, which are *local* variables. Remember that if you see an error like this in your code output, it is likely because you have referenced a value which only exists inside the function from outside of it. " + "### Multiple Arguments" ] }, { "cell_type": "markdown", - "id": "10374f42-0a0f-4457-b3b7-b0f8443d3fd9", + "id": "2d2ff6b0", "metadata": {}, "source": [ - "## Calling functions\n", + "Your function can also take multiple arguments. You simply add them into the brackets of your function name, separated by a comma. \n", + "\n", + " answer = my_function(20.10, 2003) \n", + "\n", + "Here is an example of a function to calculate the number of mols from a given mass and molecular mass.\n", + "\n", + ">```Python\n", + ">def no_mols(mass, Mr):\n", + "> n_mols = mass / Mr\n", + "> return n_mols\n", + ">\n", + ">mass_aspirin = 1.48 # g\n", + ">Mr_aspirin = 180.158 # g mol-1\n", + ">\n", + ">mols_aspirin = no_mols(mass_aspirin, Mr_aspirin)\n", + ">print(mols_aspirin , \"mols of aspirin\")\n", + "\n", + "Which will output 0.008215011267887077 mols of aspirin , which you can check on a calculator. \n", "\n", - "Now that we've written our `add_up` function, we can use it to add up lots of lists very quickly. Here, we can define a list of lists, then iterate through that to provide a list of their totals. To call the function, all we need to do is write the name of the function, and enclose the list on which we would like it to operate in the brackets:" + "Your arguments do not have to be the same variable type, you could have a number and a list, as long as you treat them as that variable type in your function. You can add as many arguments as you like, but be aware it might make your function hard to use if you add too many. \n", + "\n", + "Furthermore, you need to make sure you input the right number of arguments when calling your function. If your function expects 2 arguments but only receives one, you will get a missing argument error message, and similarly if you put in too many arguments you will get a function expects 'x' arguments but 'y' were given error." ] }, { - "cell_type": "code", - "execution_count": null, - "id": "6f554c80-ff5a-4db0-b432-ef087b1d5252", + "cell_type": "markdown", + "id": "20fc9784", "metadata": {}, - "outputs": [], "source": [ - "many_sets_of_atoms = [\n", - " [12,12,1,1,1,1],\n", - " [12,1,1,1,12,16,12,1,1,1],\n", - " [12,12,12,12,12,12]\n", - "]\n", + "#### Positional arguments" + ] + }, + { + "cell_type": "markdown", + "id": "33506f36", + "metadata": {}, + "source": [ + "\n", + "But be careful! The arguments you see above are called positional arguments, ``arg``, and the order in which you list them when you call your function matters! \n", "\n", - "totals = []\n", + "Try calling the following using the above function:\n", "\n", - "for atom_set in many_sets_of_atoms:\n", - " set_total = add_up(atom_set)\n", - " totals.append(set_total)\n", + ">```Python\n", + ">mols_aspirin = no_mols(Mr_aspirin , mass_aspirin)\n", + ">print(mols_aspirin, \"mols of aspirin\")\n", "\n", + "It will result in the output 121.72837837837837 mols of aspirin. Not the right answer!\n", "\n", - "print(totals)" + "Positional arguments are passed into the function in the order they are listed when defining the function (in this case, ``mass`` first, then ``Mr``). If you put in 'Mr_aspirin' first, then 'mass_aspirin' when you call the function, then 'Mr_aspirin' will take the place of ``mass`` within the function, and 'mass_aspirin' will take the place of ``Mr`` within the function, resulting in the wrong division. " ] }, { "cell_type": "markdown", - "id": "8e0c9d02-ebf4-4467-83d5-d281a3cb6132", + "id": "11f51897", "metadata": {}, "source": [ - "In the example above, we are actually calling two functions every time our loop executes. The first is the `add_up` function which we have written, but the second is a the function we use to add the number to the list. We call the `list.append()` function, which adds its argument to the end of the list. Note here that the dot `.` between the `totals` and `append` is a signifier that this append function is specifically associated with the list stored in the `totals` variable. This type of function is quite common in Python, but is outside the scope of this lesson. For now, the important thing to note from this is that due to this association, we do not need to pass the `totals` list as an argument to the `append` function. \n", + "#### Keyword arguments" + ] + }, + { + "cell_type": "markdown", + "id": "fb0c93f4", + "metadata": {}, + "source": [ + "A keyword argument, or ``kwarg`` is the alternative to positional arguments, and do not have to be called in a specific order. Instead, they are identifiable by a specific name which can be referenced when you call your function. \n", + "\n", + " answer = my_function(kwarg_2 = 2006, kwarg_1 = 3.01) \n", "\n", - "Python has a huge amount of pre-set functions, many of which you may have already used. The `print()` and `type()` functions are ubiquitious in Python programming, but there are also many other functions which are pre-packaged in Python. In fact, the function that we have been looking at so far, `add_up()` replicates the behaviour of the inbuilt Python `sum()` function. " + "Be aware that nothing has actually changed in the function itself, it is just how the arguments are treated that makes them positional or keyword arguments. Using our example of calculating mols:\n", + "\n", + ">```Python\n", + ">def no_mols(mass, Mr):\n", + "> \"\"\"kwargs: mass, Mr \"\"\"\n", + "> n_mols = mass / Mr\n", + "> return n_mols\n", + ">\n", + "> # Calculate number of mols of aspirin\n", + ">mass_aspirin = 1.48 # g\n", + ">Mr_aspirin = 180.158 # g mol-1\n", + ">\n", + "># Keyword Argument\n", + ">mols_aspirin = no_mols(Mr = Mr_aspirin, mass = mass_aspirin)\n", + ">print(mols_aspirin, \"mols of aspirin\")\n", + "\n", + "Even though we have put ``Mr_aspirin`` and ``mass_aspirin`` in a different order to how it is in the function, the code still outputs the correct answer: 0.008215011267887077 mols of aspirin .\n", + "\n", + "Warning! If you are using both positional an keyword arguments (for example if the function takes many arguments), all the positional arguments must come before the keyword arguments." ] }, { "cell_type": "markdown", - "id": "cfd2f639-6eb3-4378-8c31-8f391d7ddbdf", + "id": "3e5b45aa", "metadata": {}, "source": [ - "## More complex functions\n", + "#### Positional-only arguments, ``, /``, and keyword-only arguments, ``* ,``" + ] + }, + { + "cell_type": "markdown", + "id": "99415ebe", + "metadata": {}, + "source": [ + "In the sections about positional and keyword arguments above, there is nothing in the function line itself that describes whether the arguments are positional or keyword. The way in which you call the function (and the order) is what defines it. In the first example, we treated both as positional, but in the second we treated both as keyword. \n", "\n", - "So far we have covered basic functions, but there are more complex facets to function writing. In this section, we will look at a few of these facets, although there are many more which will not be covered here.\n", + "But there is a way of forcing the function to only take positional or only take keyword arguments. If you then try to treat the input differently, it will raise an error. \n", "\n", - "### Multiple return conditions\n", + "- ``, /`` after the argument makes it positional-only\n", + "- ``* ,`` before the argument makes it keyword-only\n", "\n", - "Functions we have written so far have only had one return statment right at the end. This is not, however, a requirement. A function can have a return statement anywhere, and it can have more than one. This is usually encountered when functions contain if statements, where depending on whether the conditions are met, different sections of the function may execute. Take the below function, for example, which checks if a supplied letter is a vowel or not:\n", - "\n" + "For example in:\n", + "\n", + "def my_function(argument_1, /, *, argument_2):\n", + "\n", + "``argument_1`` is positional only, and ``argument_2`` is keyword-only.\n", + "\n", + "Using our mols example from above\n", + "\n", + ">```Python\n", + ">def no_mols(mass, /, *, Mr):\n", + "> n_mols = mass / Mr\n", + "> return n_mols\n", + ">\n", + ">Mr_aspirin = 180.158 # g mol-1\n", + ">\n", + ">mols_aspirin = no_mols(Mr_aspirin, mass_aspirin = 1.48)\n", + ">print(mols_aspirin, \"mols of aspirin\")\n", + "\n", + "Here, we received an error. We are trying to use ``Mr_aspirin`` as a positional argument and ``mass_aspirin`` as a keyword argument. However, the function takes ``Mr`` as a keyword argument, and ``mass`` as a positinoal argument - the other way around than we have tried to call it. If we try it the correct way around: \n", + "\n", + " mols_aspirin = no_mols(mass_aspirin, Mr = 180.158) \n", + "\n", + "We will get the correct output.\n", + "\n", + "Be aware: you can only use ``, /`` and ``*,`` once each in each function argument line. " ] }, { - "cell_type": "code", - "execution_count": null, - "id": "03ea1aea-92db-4b13-97cd-ef159f206cd3", + "cell_type": "markdown", + "id": "e9f64452", "metadata": {}, - "outputs": [], "source": [ - "def is_vowel(letter):\n", - " if type(letter) is not str or len(letter) != 1:\n", - " print(\"Input must be a single character\")\n", - " return None\n", - " elif letter in [\"a\",\"e\",\"i\",\"o\",\"u\"]:\n", - " return True\n", - " else:\n", - " return False" + "#### Practice using positional and keyword arguments" ] }, { "cell_type": "markdown", - "id": "354eeb4c-e5bf-42ed-b877-9550d7f30730", + "id": "fdb290c9", "metadata": {}, "source": [ - "There are three different possible return values in the above function, depending on the input. The first conditional statement confirms that a single character has been passed to the function as a string. There are more sophisticated ways to handle this sort of error, but these are outside the scope of this lesson. The key thing here is that based on this test, we can have the function return `None` rather than true or false, if an incompatible input is supplied. Following this, the function uses if/else tests to check if the single character is a vowel or not. \n", + "
Practice \n", + "\n", + "The cosine rule allows you to find the length of one side of a triangle, c, when you know the lengths of the other two sides, a and b, and one angle, $\\theta$. \n", + "\n", + "$ c = \\sqrt{a^2 + b^2 - 2ab cos(\\theta)} $\n", + "\n", + "Write a function which will output the length of the final side of a triangle in cm, taking a positional argument of 'side_a', a positional-only argument of 'side_b', and a keyword-only argument of 'angle'. \n", + "\n", + "Test your program works by using side_a = 3 cm, side_b = 4 cm, and the known angle = 15°, which should result in side_c = 1.35 cm.\n", "\n", - "We can also return more than one thing on the return line. If we define a function which uses the inbuilt python `min()` and `max()` functions to return the largest and smallest items in a list, we can return both in one statement:" + " Hint! Remember that you need to import the module ``math`` to use the function ``cos()``. Also consider the units in which the function ``cos()`` works.\n", + "\n", + "
Click to view answer \n", + "\n", + "Here is a potential answer. \n", + "\n", + ">```Python\n", + ">import math\n", + ">\n", + ">def triangle_side(side_a, side_b, /, *, angle):\n", + "> angle = math.radians(angle)\n", + "> answer = side_a**2 + side_b**2 - (2 * side_a * side_b * math.cos(angle))\n", + "> answer **= 1/2\n", + "> return answer\n", + ">\n", + ">print(triangle_side(3, 4, angle = 15), \"cm\")\n", + "\n", + "\n", + "Remember! When writing your code you always start by importing relevant modules/libraries, then define all your functions, then write the rest of your code. \n", + "\n", + "
" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "1fcf6271-7e69-43c3-bd14-de1e1aff0c7f", + "cell_type": "markdown", + "id": "f7bbd81c", "metadata": {}, - "outputs": [], "source": [ - "def minmax(number_list):\n", - " min_value = min(number_list)\n", - " max_value = max(number_list)\n", - " return min_value, max_value" + "#### Default/Optional arguments" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "279c982c-39a6-4414-a5e9-487979d3eb8e", + "cell_type": "markdown", + "id": "71169a49", "metadata": {}, - "outputs": [], "source": [ - "x = minmax([1,2,3])\n", + "Default arguments are keyword arguments whose values are assigned within the function. They are often also referred to as optional arguments. You set it by adding ``= value`` to the end of the argument in your function. This means that even if your function takes two arguments, if one is a default argument, you only need to call one, the other will take the default value, and you won't receive an error.\n", + "\n", + "``def my_function(date, year=2000):``\n", + "\n", + "For example, if you know that throughout your program you will mostly be using ``Mr_aspirin``, you can set that as the default value to save time.\n", + "\n", + ">```Python\n", + ">def no_mols(mass, Mr=180.158):\n", + "> n_mols = mass / Mr\n", + "> return n_mols\n", + ">\n", + ">mass_aspirin = 1.48 # g\n", + ">\n", + ">mols_aspirin = no_mols(mass_aspirin)\n", + ">print(mols_aspirin, \"mols of aspirin\")\n", + "\n", + "When we've called the function, we have only specified one argument (``mass_aspirin``). The other argument is automatically taken as 180.158.\n", + "\n", + "You can also set a default value to ``None``. None is a data type of its own (NoneType), and describes the absence of a value. \n", "\n", - "print(x)\n", + ">```Python\n", + ">def no_mols(mass, Mr=None):\n", + "> if Mr is None:\n", + "> print(\"You must have a molecular mass\")\n", + "> return\n", + "> n_mols = mass / Mr\n", + "> return n_mols\n", + ">\n", + ">mass_aspirin = 1.48 # g\n", + ">no_mols(mass_aspirin)\n", "\n", - "y,z = minmax([1,2,3])\n", + "Here, we are expecting that someone might forget the argument 'Mr', so we have added the optional argument 'None' to ensure we do not get errors down the line. You probably will not have much use of None as a beginner.\n", "\n", - "print(y)\n", - "print(z)" + " Warning! When using positional, keyword, and default arguments, they must be defined in a strict order within your function. This is: positional arguments first, then keyword arguments, and then all your default arguments at the end. When you call your function, you first specify your positional arguments, then your keyword arguments, and then any default arguments you wish to change. " ] }, { "cell_type": "markdown", - "id": "9db49603-743b-43ee-9351-3a3cf09a8008", + "id": "c24c926d", "metadata": {}, "source": [ - "As you can see above, when we store the output of this function in a single variable, it is returned as a tuple containing both values. However, in Python we can also use the multiple assignment variable unpacking feature to assign the minimum and maximum values in a single statement. This sort of behaviour is useful when we want to return and assign multiple variables from a single function." + "
Practice \n", + "\n", + "Write a function which will output an atomic velocity from its mass and temperature. Set the default temperature to be 20°C. Use the relationship: \n", + "\n", + "$v = \\sqrt{\\frac{3k_bT}{m}} $\n", + "\n", + "where v is velocity in ms-1, kb is the Boltzmann constant and is equal to 1.38 $\\times$ 10-23 JK-1, and T is temperature in Kelvin.\n", + "\n", + "Find the velocity for an N2 molecule of mass 4.6 $\\times$ 10-26 g.\n", + "\n", + "
Click here to view the answer \n", + "\n", + ">```Python\n", + ">def molecule_velocity(mass, temperature=20):\n", + "> k_b = 1.38e-23\n", + "> temperature += 273\n", + "> vel = ((3 * k_b * T) / m) ** (1 / 2)\n", + "> return vel\n", + ">\n", + ">mass_N2 = 4.6e-26\n", + ">velocity_answer = molecule_velocity(mass_N2)\n", + ">print(velocity_answer, \"ms-1\")\n", + "\n", + "The correct answer should be ``513.52 ms-1``\n", + "\n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "6157558d", + "metadata": {}, + "source": [ + "#### Arbitrary positional arguments: ``*args``" ] }, { "cell_type": "markdown", - "id": "14e8bd90-4002-4b5e-92eb-8a6fe0eee1a1", + "id": "147d2fcd", "metadata": {}, "source": [ - "# Debugging\n", + "Up until this point, the number of arguments passed into the function has been fixed. Whether positional, keyword, or default, it is a fixed number of arguments. But what if we do not know how many arguments we will need in advance? We can use arbitrary positional arguments ``*args`` and arbitrary keyword arguments ``**kwargs``. Note single asterisk for positional arguments and double asterisk for keyword arguments. This is defined in the function:\n", + "\n", + "``def my_function(*date, year=2000):``\n", + "\n", + "Our above code for calculating the number of mols has been adjusted so that it can take an arbitrary number of masses (each of the type float).\n", + "\n", + ">```Python\n", + ">def no_mols(*masses, Mr = 180.158):\n", + "> for mass in masses:\n", + "> n = mass / Mr\n", + "> print(n, \"mols\")\n", + "> return\n", + ">\n", + ">no_mols(1.48, 1.01, 0.62, 0.21, 0.06)\n", + "\n", + "The output of this is:\n", "\n", - "The following code chunks have errors in them. See what output the chunk is currently providing, and fix the errors to give the expected output" + " 0.008215011267887077 mols
\n", + "0.005606190122004019 mols
\n", + "0.003441423639249992 mols
\n", + "0.001165643490713707 mols
\n", + "0.0003330409973467734 mols
\n", + "\n", + "The arbitrary argument ``*masses`` represents every mass given when we call the function. Since we have multiple of these, we must iterate through the collection of masses using a ``for`` loop and calculate the number of mols for each. \n", + "\n", + "The real meaning of arbitrary positional arguments is that the arbitrary number of arguments you are putting into the function are stored as a tuple, but you don't really need to know this for it to work." ] }, { - "cell_type": "code", - "execution_count": null, - "id": "47374f25-3d38-4b46-9442-acdff2dddd26", + "cell_type": "markdown", + "id": "915a3e6b", "metadata": {}, - "outputs": [], "source": [ - "def say_hello():\n", - " print(\"Hello World\")\n", + "#### Arbitrary keyword arguments: ``**kwargs``" + ] + }, + { + "cell_type": "markdown", + "id": "b42b4be6", + "metadata": {}, + "source": [ + "Arbitrary keyword arguments are a bit more complicated than ``*args``, so feel free to skip this bit if you are a complete beginner. You can always come back later.\n", + "\n", + "Essentially, while ``*args`` stores the input as a tuple, ``**args`` stores it as a dictionary. This means there are a number of things that need to happen. Have a look at our code, where ``**masses`` is now an arbitrary keyword argument (note that ``**kwargs`` comes after ``args``, ``kwargs``, and ``*args`` in the function).\n", + "\n", + ">```Python\n", + ">def no_mols(Mr = 180.158, **masses):\n", + "> for name, mass in masses.items(): \n", + "> n_mols = mass / Mr\n", + "> print(name, \"has\" , n_mols, \"mols\")\n", + "> return\n", + ">\n", + ">no_mols(mass1 = 1.48, mass2 = 1.01, mass3 = 0.62)\n", + "\n", + "Which returns: \n", "\n", + " mass1 has 0.008215011267887077 mols
\n", + "mass2 has 0.005606190122004019 mols
\n", + "mass3 has 0.003441423639249992 mols
\n", "\n", - "say_hello\n", + "Let's talk through what is happening here.\n", + "- Calling the function: Each of the masses we are trying to find the number of mols for has a name and a value. The names are 'mass1', 'mass2', 'mass3', and each has a corresponding value (1.48, 1.01, 0.62). This is exactly how dictionaries store information (revise [data types lesson](../variables/Variable_data_types.ipynb) if you want a reminder).\n", + "- ``**masses``: When we write ``**masses`` into our function, we are saying that we want to take that unknown number of named masses below and store both their names and their value in a dictionary to use in our function. \n", + "- ``name, mass`` in the ``for`` loop: Since ``**kwargs`` has taken both the the name and the value of our input (e.g. both 'mass1' and '1.48'), we need to be able to iterate through each by assigning them a variable name. It is kind of like when we zipped lists together in the ``for`` loop lesson, assigning a variable to items in each list.\n", + "- ``masses.items()``: This takes all the ``**kwargs``, (mass1, mass2, mass3), and puts them in a list of tuples, allowing the ``for`` loop to iterate through. In this case, it becomes: ``[(\"mass1\", 1.48), (\"mass2\", 1.01), (\"mass3\", 0.62)]``. You can now see how ``name, mass`` extracts the information as each tuple is iterated through.\n", + "- Once we have all this information, we can use both the name and the mass to calculate the number of mols and print a statement. \n", "\n", - "#Expected output: Hello World" + "Again, ``**kwargs`` are not commonly used, especially amongst beginners, so if this is a bit too complicated, do not worry. " ] }, { "cell_type": "markdown", - "id": "4b8b293d-cc79-40e9-a83c-b8f75454aec2", + "id": "37d6dee6", "metadata": {}, "source": [ - "# Exercises\n", + "### Practice using multiple arguments \n", "\n", - "1. Write a function that takes one argument, `num`, and returns `True` if it is even and `False` if it is odd. \n", + "TO DO" + ] + }, + { + "cell_type": "markdown", + "id": "37cb2c58", + "metadata": {}, + "source": [ + "### Recursion" + ] + }, + { + "cell_type": "markdown", + "id": "75d1184e", + "metadata": {}, + "source": [ + "We will only touch on recursion briefly, for completeness. Essentially, it means that a function can call itself, looping to get a result. \n", + "\n", + "For example, here is a function that finds the factorial of a number. The factorial of 5 would be 5×4×3×2×1 = 120. \n", + "\n", + "```Python\n", + "def factorial(x):\n", + " if x == 1:\n", + " return 1\n", + " else:\n", + " ans = x * factorial(x-1)\n", + " return ans\n", + "\n", + "print(\"The factorial of\", 3, \"is\", factorial(3))\n", + "```\n", "\n", - "Remember that the modulo operator (%) returns the remainder of the left hand quantity when divided by the right hand quantity." + "The function takes the number 3. As 3 != 1, it multiplies it by a number which is the output of its own factorial function, each time checking if it has reached 1. The output is ``6``. However, you must be careful, as it is easy to accidentally create an infinite loop (just like with ``while`` loops). With this program, if you call the function for a number less than 0, it will loop until error, because the condition ``if x == 1`` will never be fulfilled." ] }, { - "cell_type": "code", - "execution_count": null, - "id": "950d5308-327c-41f4-9560-3d96e72996e2", + "cell_type": "markdown", + "id": "6d37c923", "metadata": {}, - "outputs": [], - "source": [] + "source": [ + "### Functions within functions" + ] }, { "cell_type": "markdown", - "id": "abf7a379-edaf-4d04-857a-ba5ffccd01c4", + "id": "53b18234", "metadata": {}, "source": [ - "2. Using your function above, write a function which takes a list of integers, and returns only the even integers of this list" + "It is possible to define another function within a function, however this is generally not useful, as it means the nested function cannot be called anywhere else in the program. This is because the nested function is then local, not global (see above for discussion on scope).\n", + "\n", + "Try to avoid nesting functions in your program. You can, however, call another function you have defined from within your function. \n", + "\n", + "```Python\n", + "def function_1(arg_1, arg_2):\n", + " total = arg_1 + arg_2\n", + " return total\n", + "\n", + "def function_2(arg_3):\n", + " ans = function_1(arg_3, 6) + 100\n", + " return ans\n", + "\n", + "print(function_2(3))\n", + "```\n", + "\n", + "Here, instead of nesting the functions, we have used the first function within the second function. This means we could call either function to best suit our purpose. " ] }, { - "cell_type": "code", - "execution_count": null, - "id": "cbe33a5b-28c9-433f-a8ab-8bea29570d2b", + "cell_type": "markdown", + "id": "ffebb439", "metadata": {}, - "outputs": [], - "source": [] + "source": [ + "### Practicing with multiple arguments, multiple returns, and keyword arguments" + ] }, { "cell_type": "markdown", - "id": "7a07fe93-0917-4b8b-ac26-cc6c13353b25", + "id": "1d5e1235", "metadata": {}, "source": [ - "3. The function `add_up()` defined earlier in the document accepted a list of atomic masses. However, molecules are more generally referred to using formulae rather than lists of masses. Write a series of functions as directed in the comments in the cell below to allow calculation of molecular masses from molecular formulae for simple organic molecules:" + "#### Practice Question 1" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "991aba54-f8ab-4431-aba2-36fd3843401a", + "cell_type": "markdown", + "id": "bc30edc8", "metadata": {}, - "outputs": [], "source": [ - "# The dictionary below can be used to look up an atom's mass from its symbol. \n", - "# Don't worry about other elements for the time being, you can assume that these are the only elements that matter.\n", - "# (pretend you're an organic chemist)\n", + "## Docstrings" + ] + }, + { + "cell_type": "markdown", + "id": "c07a0673", + "metadata": {}, + "source": [ + "As you can already see, functions can get pretty confusing pretty fast, especially when it takes many arguments, keyword arguments, and returns multiple variables. It gets even more confusing if there are multiple functions in your program that do similar things, and therefore have similar names. Someone else's program, or even your own program after a couple of months, becomes very difficult to understand. \n", "\n", - "atom_masses = {\n", - " \"C\" : 12,\n", - " \"H\" : 1,\n", - " \"O\" : 16,\n", - " \"N\" : 14\n", - "}\n", + "To make it easier to see what is happening in a function, programmers use a convention called a docstring from Python's PEP (a set of guidelines to make Python programs more readable and easy to use). A docstring is a short description of what the function does, its parameters (arguments), and what it returns. \n", "\n", - "# Write a function to take a list of atomic symbols, and return a list of masses.\n", - "\n" + "A single-line docstring for a really obvious function might look like this:\n", + "\n", + ">```Python\n", + "> \"\"\" Explain what this function does \"\"\"\n", + "\n", + "As in the program:\n", + "\n", + "```Python\n", + "def pressure_conversion(pressure_bar):\n", + " \"\"\" Convert pressure in bar to pressure in mmHg. \"\"\"\n", + " pressure_mmHg = pressure_bar * 750.062\n", + " return pressure_mmHg\n", + "```\n", + "\n", + "For more complicated functions, you must use a multi-line docstring. For example:\n", + "\n", + "```Python\n", + "def no_mols(mass, Mr=180.158):\n", + " \"\"\"\n", + " Calculate the number of mols.\n", + "\n", + " Parameters\n", + " ----------\n", + " mass : Float\n", + " The mass of the substance\n", + " Units: g\n", + " Mr : Float\n", + " The molecular weight of the substance\n", + " Units: gmol-1\n", + " Default: aspirin == 180.158\n", + "\n", + " Returns\n", + " -------\n", + " n_mols : Float\n", + " The number of mols of the substance\n", + " Units: mols\n", + " \"\"\"\n", + " n_mols = mass / Mr\n", + " return n_mols\n", + "```\n", + "\n", + "Things to note:\n", + "- The first line of the docstring describes what the function does. This is given as an imperative, and ends in a full-stop.\n", + "- The parameters (arguments) are then listed. It is explained what variable type they are, what units they take, and whether they have any default values. \n", + "- It is last explained what is returned by the function, in the same format as the parameters above. \n", + "- If there is any additional information the user requires to use this function, that is also included in the docstring.\n", + "\n", + "The exact format of the docstring is less important than ensuring it is consistent and clear throughout your program.\n", + "\n", + "Note: Why is it called parameters and not arguments? From the function's perspective, a parameter is the variable listed inside the parentheses in the function definition, whereas an argument is the value that is sent to the function when it is called.\n", + "\n", + "For more information on docstrings and PEP, check out the [Style and Comments lesson](../solving_problems/style-and-comments.ipynb)." + ] + }, + { + "cell_type": "markdown", + "id": "2c708ff5", + "metadata": {}, + "source": [ + "Practice question:\n", + "\n", + "Write a docstring for the following function. TODO" + ] + }, + { + "cell_type": "markdown", + "id": "8526723d", + "metadata": {}, + "source": [ + "Turn this code into a function TO DO" + ] + }, + { + "cell_type": "markdown", + "id": "4b8b293d-cc79-40e9-a83c-b8f75454aec2", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "1. Write a function that takes one argument, `num`, and returns `True` if it is even and `False` if it is odd.
\n", + " Hint: Remember that the modulo operator (%) returns the remainder of the left hand quantity when divided by the right hand quantity.\n", + "\n", + "
\n", + "\n", + "2. Using your function above, write a function which takes a list of integers, and returns only the even integers of this list\n", + "\n", + "
\n", + "\n", + "3. The function `add_atomic_masses()` defined earlier in the document accepted a list of atomic masses. However, molecules are more generally referred to using formulae rather than lists of masses. Write a series of functions as directed in the comments in the cell below to allow calculation of molecular masses from molecular formulae for simple organic molecules:\n", + " ```Python\n", + " # The dictionary below can be used to look up an atom's mass from its symbol. \n", + " # Don't worry about other elements for the time being, you can assume that these are the only elements that matter.\n", + " # (pretend you're an organic chemist)\n", + "\n", + " atom_masses = {\n", + " \"C\" : 12,\n", + " \"H\" : 1,\n", + " \"O\" : 16,\n", + " \"N\" : 14\n", + " }\n", + "\n", + " # Write a function to take a list of atomic symbols, and return a list of masses.\n", + " ```\n", + "\n", + "
\n", + "\n", + "4. The code below has errors. Have a look at the error message and fix the code to get the expected output. \n", + "\n", + " ```Python\n", + " def say_hello():\n", + " print(\"Hello World\")\n", + "\n", + " say_hello\n", + "\n", + " #Expected output: Hello World\n", + " ```\n", + "\n", + "
\n", + "\n", + "5. In the ``for`` loop lesson, you wrote a piece of code taking IR data and only outputting the wavenumbers that were both above the value of 1500 cm-1, and had a transmittance below 95%. Take this code and turn it into a function so that it can be reused for the IR data of the newly-discovered substance pythonium, symbol 'Py'.
\n", + " Py_raw_wavenumbers = [3420.50, 2955.75, 2850.30, 1745.60, 1605.25, 1550.40, 1515.10, 1501.85, 1450.70, 1255.20, 980.55, 750.30]
\n", + " Py_raw_transmittance = [60.3, 47.7, 34.6, 96.2, 48.4, 99.1, 95.8, 51.2, 65.3, 50.0, 97.1, 27.5]
\n", + "\n", + "
\n", + "\n", + "6. Now adapt the code from Exercise 5 so that it parses the data when it is in the format: ``raw_data = [[wavenumber, transmittance], [wavenumber, transmittance], etc.]`` for each point.
\n", + " ``Py_raw_data = [[3420.50, 60.3], [2955.75, 47.7], [2850.30, 34.6], [1745.60, 96.2], [1605.25, 48.4], [1550.40, 99.1], [1515.10, 95.8], [1501.85, 51.2], [1450.70, 65.3], [1255.20, 50.0], [980.55, 97.1], [750.30, 27.5]]``" ] }, { @@ -396,7 +1072,7 @@ "id": "203732e1-509b-436a-a2b3-fcde5b3d8ab6", "metadata": {}, "source": [ - "# Answers" + "## Answers" ] }, { @@ -441,10 +1117,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "22ba62ed-7af1-42f9-90dd-93cf68f828ca", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[12, 1, 1, 1, 12, 1, 16]\n" + ] + } + ], "source": [ "# Exercise 3:\n", "\n", @@ -473,27 +1157,103 @@ ] }, { - "cell_type": "markdown", - "id": "26af8885-0ec8-4421-8947-89f371cf350f", + "cell_type": "code", + "execution_count": null, + "id": "a571c19b-6970-4073-8a24-4cf10d757fb8", + "metadata": {}, + "outputs": [], + "source": [ + "# Ex 4 \n", + "\n", + "# TO DO" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c39ea199", "metadata": {}, + "outputs": [], "source": [ - "## TODO:\n", + "# Exercise 5: IR data parser\n", "\n", - "- More relation to chemistry in some of the later examples?\n", - "- Discussion of use of *args etc to supply multiple arguments to a function\n", - "- More debugging exercises\n", - "- Default arguments\n", + "# Data retrieved from the lab for the substance pythonium.\n", + "Py_raw_wavenumbers = [3420.50, 2955.75, 2850.30, 1745.60, 1605.25, 1550.40, 1515.10, 1501.85, 1450.70, 1255.20, 980.55, 750.30] # cm-1\n", + "Py_raw_transmittance = [60.3, 47.7, 34.6, 96.2, 48.4, 99.1, 95.8, 51.2, 65.3, 50.0, 97.1, 27.5] # %\n", "\n", - "Please email theo.tanner@chem.ox.ac.uk with any questions" + "def parse_IR_data(wavenumbers, transmittances):\n", + " \"\"\"\n", + " Take IR data of wavenumbers and corresponding transmittances. \n", + " Return only wavenumbers which are above 1500cm-1 and below 95% transmittance.\n", + "\n", + " Parameters\n", + " ----------\n", + " wavenumbers : List\n", + " Peak values taken from an IR spectrum\n", + " Units: cm-1\n", + " transmittance : List\n", + " Corresponding transmittance for each peak\n", + " Units : 95%\n", + "\n", + " Returns\n", + " -----------\n", + " maj_peak_wavenumbers : List\n", + " Peak wavenumber \n", + " \"\"\"\n", + " # Empty lists of the data we want to keep\n", + " maj_peak_wavenumbers = []\n", + " maj_peak_transmittance = []\n", + " # Iterates through the lists\n", + " for v, tr in zip(wavenumbers, transmittances):\n", + " # Checks the values obey the conditional statement\n", + " if v > 1500 and tr < 95:\n", + " print(f\"{v} cm-1, {tr} %\")\n", + " maj_peak_wavenumbers.append(v)\n", + " maj_peak_transmittance.append(tr)\n", + " return maj_peak_wavenumbers, maj_peak_transmittance\n", + "\n", + "# Call function\n", + "Py_wavenumbers, Py_transmittance = parse_IR_data(Py_raw_wavenumbers, Py_raw_transmittance)\n", + "print(Py_wavenumbers, Py_transmittance)" ] }, { "cell_type": "code", "execution_count": null, - "id": "a571c19b-6970-4073-8a24-4cf10d757fb8", + "id": "eda5ee2c", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "# Exercise 6\n", + "\n", + "Py_raw_data = [[3420.50, 60.3], [2955.75, 47.7], [2850.30, 34.6], [1745.60, 96.2], [1605.25, 48.4], [1550.40, 99.1], [1515.10, 95.8], [1501.85, 51.2], [1450.70, 65.3], [1255.20, 50.0], [980.55, 97.1], [750.30, 27.5]]\n", + "\n", + "def parse_IR_data(raw_data):\n", + " \"\"\"\n", + " Take IR data and only return points with wavenumber > 1500cm-1 AND transmittance < 95%\n", + "\n", + " Parameters\n", + " -----------\n", + " raw_data : List\n", + " Nested list of raw IR data in the format [[wavenumber, transmittance], [wavenumber, transmittance], etc.]\n", + "\n", + " Returns\n", + " -----------\n", + " parsed_data : List\n", + " Nested list of IR data with wavenumber > 1500cm-1 AND transmittance < 95%\n", + " In the format [[wavenumber, transmittance], [wavenumber, transmittance], etc.]\n", + " \"\"\"\n", + " parsed_data = []\n", + " for point in raw_data:\n", + " if point[0] < 1500 or point[1] > 95:\n", + " continue\n", + " else:\n", + " print(f\"{point[0]} cm-1 {point[1]} %\")\n", + " parsed_data.append(point)\n", + " return parsed_data\n", + "\n", + "parse_IR_data(Py_raw_data)" + ] }, { "cell_type": "markdown", @@ -502,11 +1262,54 @@ "source": [ "## Summary" ] + }, + { + "cell_type": "markdown", + "id": "20b08856", + "metadata": {}, + "source": [ + "- Define a function using the following syntax:\n", + " ```Python\n", + " def function_name(argument_1, argument_2):\n", + " Code\n", + " return a_variable, b_variable\n", + " ```\n", + "- Call a function using:\n", + " - General syntax: ``my_function()``. \n", + " - Assign it a variable using: ``result_1, result_2 = my_function(some_argument, other_argument)``. \n", + " - Avoid getting outputs by replacing with a double underscore ``__``, like so: ``result_1, __ = my_function(some_argument, other_argument)``. \n", + "- A variable declared inside a function has 'local scope', it cannot be accessed from outside the function. However, from within a function you can access variables from outside without them being passed through as an argument. \n", + "- Functions can have as many (or no) arguments or return statements as you like. You can nest return statements in ``if`` statements.\n", + "- There are different kinds of arguments:\n", + " - Positional arguments, ``args``. These must be in a certain order when the function is called. \n", + " - Keyword arguments, ``kwargs``. These can be in any order (although always after positional arguments), and are called by the name in the function. ``result = my_function(argument_1 = \"He\", argument_2 = 4)``\n", + " - Positional-only arguments, ``, /``. Adding a forward slash aftera parameter in the function forces it to only take a positional argument: ``def function_name(argument_1, /)``.\n", + " - Keyword-only arguments, ``*,``. Adding an asterisk beforea parameter in the function forces it to only take a keyword argument: ``def function_name(*, argument_1)``.\n", + " - Default/optional arguments. ``=``. If a value is not specified, the function will take that value for that parameter. ``def function_name(argument_1=21)``.\n", + " - Arbitrary positional arguments, ``*args``. Allows an arbitrary number of arguments to be called. You must iterate through them. ``def function_name(*argument_1)``.\n", + " - Arbitrary keyword arguments, ``**kwargs``. Allows an arbitrary number of keyword arguments to be called. You can convert the dictionary to a list using the function '.items()'. ``def my_function(**argument)``.\n", + "- Functions can call themselves. This is called recursion. \n", + "- Avoid defining functions within functions. Instead, define it separately and call that function from inside the first function. \n", + "- Use docstrings to explain to the user the purpose of the function, the arguments, its returns, limitations, and any other information needed to use it effectively. " + ] + }, + { + "cell_type": "markdown", + "id": "e2dab763", + "metadata": {}, + "source": [ + "# To Do\n", + "\n", + "- Add practice using multiple arguments (under **kwargs)\n", + "- Add practice with multiple arguments, multiple returns, and kwargs (under functions within functions)\n", + "- Add a practice question on making a docstring for a given function\n", + "- Exercise 4 spotting the mistakes - change function to make it chemical." + ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "base", "language": "python", "name": "python3" }, @@ -520,7 +1323,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.12.3" } }, "nbformat": 4, From 9d887f772f572d9144c349e5599c9db226ab7f77 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Mon, 28 Jul 2025 16:51:58 +0100 Subject: [PATCH 17/94] Updated the reading files lesson to include split(), readline(), and a discussion on delimiters and parsing headers. Also collected the files for this lesson to be consistent and useful. --- _toc.yml | 1 + lessons/files/elements.csv | 4 - lessons/files/files_file_types.ipynb | 151 +++ lessons/files/molecule.txt | 1 - .../alkanes_alkenes_alkynes.csv | 14 + .../files/{ => practice_files}/gas_const.txt | 0 .../files/practice_files/hydrogen_atoms.xyz | 4 + .../files/practice_files/measurements_1.csv | 20 + .../files/practice_files/measurements_2.csv | 1001 +++++++++++++++++ lessons/files/practice_files/molecule.txt | 3 + .../files/practice_files/periodic_table.csv | 21 + .../files/{ => practice_files}/spectrum.dat | 2 +- lessons/files/reading_files.ipynb | 949 +++++++++++++++- .../conditional_statements.ipynb | 2 +- .../loops_functions/functions_and_scope.ipynb | 8 +- lessons/loops_functions/tut_import_mod.ipynb | 23 +- lessons/organising_code.md | 3 +- .../variables/mathematical-operators.ipynb | 2 +- 18 files changed, 2153 insertions(+), 56 deletions(-) delete mode 100644 lessons/files/elements.csv create mode 100644 lessons/files/files_file_types.ipynb delete mode 100644 lessons/files/molecule.txt create mode 100644 lessons/files/practice_files/alkanes_alkenes_alkynes.csv rename lessons/files/{ => practice_files}/gas_const.txt (100%) create mode 100644 lessons/files/practice_files/hydrogen_atoms.xyz create mode 100644 lessons/files/practice_files/measurements_1.csv create mode 100644 lessons/files/practice_files/measurements_2.csv create mode 100644 lessons/files/practice_files/molecule.txt create mode 100644 lessons/files/practice_files/periodic_table.csv rename lessons/files/{ => practice_files}/spectrum.dat (88%) diff --git a/_toc.yml b/_toc.yml index bde56d6..2be8644 100644 --- a/_toc.yml +++ b/_toc.yml @@ -25,6 +25,7 @@ parts: - file: lessons/loops_functions/tut_import_mod.ipynb - file: lessons/files.md sections: + - file: lessons/files/files_file_types.ipynb - file: lessons/files/reading_files.ipynb - file: lessons/files/writing_files.ipynb - file: lessons/solving-problems.md diff --git a/lessons/files/elements.csv b/lessons/files/elements.csv deleted file mode 100644 index 7eafedb..0000000 --- a/lessons/files/elements.csv +++ /dev/null @@ -1,4 +0,0 @@ -Name,Symbol,Number -Hydrogen,H,1 -Helium,He,2 -Lithium,Li,3 diff --git a/lessons/files/files_file_types.ipynb b/lessons/files/files_file_types.ipynb new file mode 100644 index 0000000..5bb08e7 --- /dev/null +++ b/lessons/files/files_file_types.ipynb @@ -0,0 +1,151 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "52531b2c", + "metadata": {}, + "source": [ + "# Files and File Types" + ] + }, + { + "cell_type": "markdown", + "id": "e6f7959c", + "metadata": {}, + "source": [ + "### Prerequisites\n", + "- None (?)" + ] + }, + { + "cell_type": "markdown", + "id": "f3748d53", + "metadata": {}, + "source": [ + "### Learning Outcomes\n", + "- File Types\n", + "- Organising your files" + ] + }, + { + "cell_type": "markdown", + "id": "18776e1c", + "metadata": {}, + "source": [ + "## Organising files" + ] + }, + { + "cell_type": "markdown", + "id": "6df4db19", + "metadata": {}, + "source": [ + "Files are organised using directories. These will often appear on your computer as folder symbols. \n", + "\n", + "Directories branch downwards from the root directory, and can contain both files and subdirectories. For example, you may have a directory called 'Lab Documents', which might contain a subdirectory 'Module A Practical B', in which you hold all your results, risk assessments, and writeups for Practical B of Module A. The directory 'Lab Documents', is itself a subdirectory of something else, stemming back until you reach the root directory, often called ``C:\\`` on a Windows operating system, or ``/var/root/`` on a Apple mac. This way, we can cluster together groups of related files to keep ourselves better organised. \n", + "\n", + "When you are programming, it is important to know which directory you are in for a number of reasons. \n", + "- To use libraries like NumPy and MatPlotLib, they need to be accessible to the directory you are working in.\n", + "- If you are running code from the command line (more information in another lesson), you need to be able to change directories forwards and backwards to find your code. \n", + "- If you want to read or write to another file, that file must be in the same directory as your code file. \n", + "\n", + "Directories are separated by a forward slash, /, or a backslash, \\ (both are supported on most operating systems). If I was looking at my lab notes, I might be in the directory: ``C:\\Users\\Bella\\Documents\\University\\Lab Documents\\Module A\\Practical B``. The directory list can get very long very fast, so naming your files and directories accurately and consistently is recommended. Also try not to have too many unnecessary additional mostly-empty directories. " + ] + }, + { + "cell_type": "markdown", + "id": "63b14f0b", + "metadata": {}, + "source": [ + "### Directory branch diagram" + ] + }, + { + "cell_type": "markdown", + "id": "16b44217", + "metadata": {}, + "source": [ + "## File types" + ] + }, + { + "cell_type": "markdown", + "id": "552398b0", + "metadata": {}, + "source": [ + "If you are running a practical in the lab, you might take a measurement once a minute or multiple times a second, for example if you are running cyclic voltammetry. You then need somewhere to store all those data points. Different file types are marked by the extension at the end of the name, for example ``.txt``, ``.dat``, ``.cif``, or ``.xyz``. If you have used Excel for data procesing in the past, you might have noticed that Excel files are often stored as ``.csv``. Each has a purpose, and each has their own formatting depending on that purpose. \n", + "\n", + "| Name | Extension | Uses | Format |\n", + "| -----| ----- | ----- | --- |\n", + "| Text file | ``.txt`` | Can take any values | Plain text, for example IMAGE |\n", + "| Comma-separated values (CSV) | ``.csv`` | Data storage, delimiter is a comma | IMAGE |\n", + "| Data file (DAT) | ``.dat`` | Can contain any file type (plaint text, PDF, audio, etc.). Often not human-readable. | Any |\n", + "| Crystallographic Information File (CIF) | ``.cif`` | Standard format for storing crystallographic structural data | IMAGE |\n", + "| XYZ file | ``.xyz`` | Standard format for storing atomic coordinates | IMAGE | \n", + "| Python file (PY) | ``.py`` | Text file containing Python code, to be opened and used by a Python IDE | |\n", + "| Jupyter Notebook (IPYNB) | ``.ipynb`` | Text-based file used by Jupyter Notebook | IMAGE |\n", + "\n", + "Each file type serves a different purpose. Try opening the files with different editors. For example, open a ``.py`` file in both your Python IDE (e.g. Spyder, IDLE, or VSCode), and then open it in a text editor (e.g. Word or Notepad) and look at the difference. The Python IDE is able to interpret the data in a useful way, and then save any changes you make. Open one of the data files. You will be able to extract data from a file (e.g. a .xyz file) and make it useable by your program.\n", + "\n", + "If you want to use information from a file in your program, the file must be in the same directory as your pam." + ] + }, + { + "cell_type": "markdown", + "id": "eb06d9d4", + "metadata": {}, + "source": [ + "## Delimiters" + ] + }, + { + "cell_type": "markdown", + "id": "93e37644", + "metadata": {}, + "source": [ + "Objects in different kinds of files are separated in different ways. In text files, words are separated by spaces. In .csv files, cells are separated with a comma, or sometimes a semicolon. The delimiter is that character or sequence of characters used to specify the boundary between separate, independent values. \n", + "\n", + "Other kinds of delimiter might be new lines, appearing as \"\\n\", a tab (standardly made up of 4 spaces), or occasionally a series of characters, such as \"&#&#\", used when items may contain the delimiter within them (for example, commas inside Excel cells in a CSV file would cause an error).\n", + "\n", + "You will see these appear in the files below." + ] + }, + { + "cell_type": "markdown", + "id": "1efe054d", + "metadata": {}, + "source": [ + "## Common file types" + ] + }, + { + "cell_type": "markdown", + "id": "3a639dbd", + "metadata": {}, + "source": [ + "### .csv files" + ] + }, + { + "cell_type": "markdown", + "id": "1b7aa359", + "metadata": {}, + "source": [ + ".csv files are some of the more common file types. You will often see Excel documents saved in this format. \n", + "\n", + "IMAGE = excel doc and associated csv format\n", + "\n", + "As you can see, each cell is separated by a comma to its sides, and a new line above and below. The delimiter is a comma.\n", + "\n", + "If you want to take data values from an Excel sheet, you need to make sure it is saved with the .csv format. If it isn't, you can simply click \"save as\" and change the file type to .csv. However, make sure you do not save it as \"CSV UTF-8\", or you will get unexpected formatting when you try to extract information from your file" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/lessons/files/molecule.txt b/lessons/files/molecule.txt deleted file mode 100644 index 0e18691..0000000 --- a/lessons/files/molecule.txt +++ /dev/null @@ -1 +0,0 @@ -C2H6 diff --git a/lessons/files/practice_files/alkanes_alkenes_alkynes.csv b/lessons/files/practice_files/alkanes_alkenes_alkynes.csv new file mode 100644 index 0000000..ea7b39d --- /dev/null +++ b/lessons/files/practice_files/alkanes_alkenes_alkynes.csv @@ -0,0 +1,14 @@ +C2H6,C2H4,C2H2 +C3H8,C3H6,C3H4 +C4H10,C4H8,C4H6 +C5H12,C5H10,C5H8 +C6H14,C6H12,C6H10 +C7H16,C7H14,C7H12 +C8H18,C8H16,C8H14 +C9H20,C9H18,C9H16 +C10H22,C10H20,C10H18 +C11H24,C11H22,C11H20 +C12H26,C12H24,C12H22 +C13H28,C13H26,C13H24 +C14H30,C14H28,C14H26 +C15H32,C15H30,C15H28 \ No newline at end of file diff --git a/lessons/files/gas_const.txt b/lessons/files/practice_files/gas_const.txt similarity index 100% rename from lessons/files/gas_const.txt rename to lessons/files/practice_files/gas_const.txt diff --git a/lessons/files/practice_files/hydrogen_atoms.xyz b/lessons/files/practice_files/hydrogen_atoms.xyz new file mode 100644 index 0000000..05605e1 --- /dev/null +++ b/lessons/files/practice_files/hydrogen_atoms.xyz @@ -0,0 +1,4 @@ +2 +Two hydrogen atoms +H -1.12 2.47 -0.83 +H 1.395 1.016 0.525 \ No newline at end of file diff --git a/lessons/files/practice_files/measurements_1.csv b/lessons/files/practice_files/measurements_1.csv new file mode 100644 index 0000000..7e88e1f --- /dev/null +++ b/lessons/files/practice_files/measurements_1.csv @@ -0,0 +1,20 @@ +1.2547 +1.2575 +1.2657 +1.2768 +1.2569 +1.2493 +1.2602 +1.2416 +1.2748 +1.2642 +1.2618 +1.2754 +1.2483 +1.2494 +1.2556 +1.2629 +1.2588 +1.247 +1.2617 +1.2539 \ No newline at end of file diff --git a/lessons/files/practice_files/measurements_2.csv b/lessons/files/practice_files/measurements_2.csv new file mode 100644 index 0000000..30038a8 --- /dev/null +++ b/lessons/files/practice_files/measurements_2.csv @@ -0,0 +1,1001 @@ +0.8695,1.253634261,1.426628803 +0.8695,1.267764606,1.410960677 +0.863,1.257660008,1.472624833 +0.8677,1.215097469,1.336220824 +0.8636,1.271562768,1.436184874 +0.866,1.203758425,1.480835297 +0.8669,1.208719267,1.33638259 +0.8618,1.250874025,1.491668179 +0.8726,1.224407644,1.387733879 +0.856,1.288518525,1.490402978 +0.8639,1.260639377,1.389518811 +0.8698,1.236208431,1.421495299 +0.8744,1.285081407,1.442561602 +0.8686,1.256867565,1.307695363 +0.8721,1.287925373,1.322207995 +0.8633,1.227412976,1.381757607 +0.8701,1.215220107,1.346396143 +0.8677,1.240359391,1.400708022 +0.8795,1.289658731,1.361722682 +0.8649,1.254444706,1.337083077 +0.8691,1.225024673,1.445366581 +0.8634,1.288905409,1.404181086 +0.8582,1.237881193,1.420239844 +0.8644,1.23100492,1.355430187 +0.8635,1.289134085,1.439560546 +0.8579,1.263288901,1.386059358 +0.875,1.236519063,1.445819098 +0.8585,1.25217944,1.353972568 +0.8654,1.234500259,1.359228175 +0.851,1.218686617,1.344559823 +0.8775,1.222600829,1.376378022 +0.8557,1.284560494,1.341919502 +0.8591,1.227977357,1.421668926 +0.8624,1.249882651,1.411841291 +0.8625,1.214388521,1.454274212 +0.8629,1.23599652,1.447987734 +0.8607,1.219345628,1.396778439 +0.8592,1.284632689,1.314007364 +0.8591,1.252438498,1.305674984 +0.8624,1.294350087,1.458788229 +0.8746,1.217072005,1.372061578 +0.8711,1.242262728,1.498553837 +0.8588,1.252584369,1.478292451 +0.8723,1.228771628,1.444724682 +0.8648,1.20288821,1.313964136 +0.8709,1.204905464,1.389150778 +0.8682,1.202976089,1.343922524 +0.8593,1.20967658,1.338387415 +0.8698,1.220814876,1.495587529 +0.869,1.260058995,1.419920551 +0.8565,1.273693287,1.411326578 +0.871,1.278930768,1.411069112 +0.866,1.202113736,1.385324594 +0.8663,1.272531928,1.401326411 +0.8734,1.279976165,1.304980132 +0.8772,1.20244438,1.362487528 +0.864,1.272311396,1.470630039 +0.8627,1.244206463,1.396728301 +0.8649,1.222665908,1.455882007 +0.8634,1.246965966,1.35386846 +0.8641,1.246402003,1.301879851 +0.8602,1.224532605,1.404585812 +0.8606,1.273220153,1.400653951 +0.8588,1.262177712,1.419428605 +0.8705,1.226756919,1.474343732 +0.8671,1.262250489,1.392859379 +0.8657,1.222537724,1.349912677 +0.87,1.201960503,1.492939354 +0.8706,1.27681334,1.319645217 +0.8709,1.262848566,1.427108556 +0.8568,1.248443535,1.446723213 +0.8659,1.223612737,1.306477854 +0.8585,1.2583345,1.390279185 +0.8641,1.207411282,1.321107051 +0.8676,1.235216962,1.484722345 +0.8606,1.238688043,1.42976721 +0.8636,1.241887853,1.497903833 +0.8665,1.298103777,1.324333936 +0.8738,1.225828704,1.328276585 +0.868,1.214553527,1.362793258 +0.8723,1.252653178,1.490405481 +0.8628,1.217343405,1.308904914 +0.8603,1.212878567,1.366724468 +0.8582,1.241334947,1.341646782 +0.8697,1.205291109,1.48497939 +0.8565,1.277301488,1.454224921 +0.8571,1.254212359,1.408920598 +0.8629,1.275873332,1.395621603 +0.8576,1.253621555,1.425982194 +0.8613,1.289227587,1.451037014 +0.864,1.239816425,1.301355619 +0.8642,1.228348369,1.477911178 +0.8702,1.209249352,1.498664193 +0.8585,1.291732308,1.46965879 +0.8603,1.27256639,1.427288812 +0.8689,1.218256461,1.345895653 +0.8619,1.286060862,1.420250761 +0.8581,1.205338529,1.3268936 +0.876,1.264023042,1.38994728 +0.8675,1.26938558,1.325585091 +0.8656,1.299635475,1.422283598 +0.8633,1.284538104,1.362748424 +0.8631,1.234307967,1.32891881 +0.8645,1.253428129,1.45864826 +0.8727,1.286656541,1.488228582 +0.8587,1.265606184,1.432639345 +0.8754,1.268192146,1.322251711 +0.8572,1.289165295,1.302168501 +0.8564,1.297959602,1.487971454 +0.8688,1.207199152,1.451181084 +0.8649,1.218102497,1.495335665 +0.8669,1.227098934,1.326197542 +0.8673,1.257191205,1.390382795 +0.8618,1.254331512,1.457519863 +0.8654,1.209684975,1.319453741 +0.8603,1.292934938,1.478609322 +0.8742,1.289770498,1.499204679 +0.8594,1.247880619,1.448016273 +0.8652,1.231433616,1.398509457 +0.8755,1.287658073,1.396052998 +0.8723,1.203308225,1.371282863 +0.8645,1.264396391,1.494957016 +0.8675,1.2213845,1.497153717 +0.8643,1.297407619,1.404031282 +0.8679,1.290868422,1.339098407 +0.8617,1.200478051,1.390626696 +0.8634,1.247172873,1.451953964 +0.8639,1.266751293,1.427882576 +0.8636,1.239170004,1.462230019 +0.8711,1.213541191,1.366050478 +0.8635,1.268763297,1.489229973 +0.8607,1.209949866,1.429817063 +0.8625,1.223413012,1.370462176 +0.8579,1.223803803,1.374833313 +0.8656,1.256406311,1.441520253 +0.8735,1.237670335,1.475397575 +0.871,1.215518377,1.380811279 +0.8707,1.207848035,1.3768108 +0.8705,1.295380334,1.33257827 +0.8637,1.278938479,1.390700378 +0.864,1.204597634,1.318317061 +0.8676,1.287939756,1.343716453 +0.8612,1.2920978,1.407333016 +0.8691,1.247046433,1.359865216 +0.8506,1.295303429,1.474528146 +0.8633,1.224143775,1.450870774 +0.8669,1.252017689,1.419185747 +0.8684,1.242409272,1.438191151 +0.858,1.231593939,1.306530674 +0.8616,1.236389684,1.468530112 +0.8639,1.221541751,1.486938037 +0.8618,1.262719324,1.355677254 +0.8687,1.283908886,1.40379285 +0.8706,1.291337522,1.356651465 +0.8606,1.211639091,1.352784943 +0.867,1.204672828,1.407903819 +0.8668,1.24971582,1.428081084 +0.8692,1.258712778,1.330568654 +0.8661,1.278385246,1.371628973 +0.8655,1.294510832,1.342009956 +0.8652,1.234932555,1.36983495 +0.865,1.288769887,1.318894153 +0.869,1.293949642,1.46246963 +0.8581,1.261243671,1.414278019 +0.86,1.248828606,1.333289085 +0.8622,1.25879987,1.399716722 +0.8665,1.217643093,1.495737793 +0.8755,1.222957859,1.360989472 +0.8719,1.204863392,1.434952908 +0.8659,1.207489789,1.337848148 +0.859,1.279762903,1.436544834 +0.8642,1.228267553,1.387127394 +0.8683,1.288958854,1.408817517 +0.8693,1.290285879,1.342369161 +0.8685,1.232065424,1.489901526 +0.8581,1.285399372,1.303794122 +0.8705,1.233799788,1.400936044 +0.8643,1.293329866,1.472218806 +0.8728,1.208560921,1.403454069 +0.8663,1.255648091,1.335412533 +0.8588,1.223031117,1.445626583 +0.8583,1.260315731,1.377576022 +0.8642,1.269725414,1.424006999 +0.869,1.275810735,1.432235234 +0.8599,1.282866291,1.433160672 +0.8739,1.237197466,1.453858715 +0.8752,1.213283761,1.308367411 +0.8663,1.222078408,1.457100081 +0.8597,1.202272288,1.425625282 +0.8612,1.265352003,1.346821449 +0.8648,1.251929088,1.331012681 +0.8647,1.208571818,1.397314842 +0.8601,1.288618093,1.454943683 +0.8655,1.287051358,1.340839286 +0.8725,1.244744018,1.448608683 +0.8582,1.243408877,1.333444358 +0.8705,1.24527935,1.435652489 +0.8642,1.220200968,1.446060144 +0.8714,1.219647148,1.458235218 +0.8659,1.203177656,1.369584628 +0.8635,1.288960972,1.307210383 +0.8745,1.263429085,1.310009057 +0.8701,1.274557881,1.49373303 +0.8647,1.269342326,1.313171219 +0.862,1.201444023,1.362948429 +0.863,1.248571284,1.383412066 +0.8652,1.229559669,1.301896234 +0.8625,1.200504276,1.34208699 +0.8545,1.238118565,1.494021027 +0.8645,1.282865107,1.407638689 +0.8691,1.277347644,1.397226695 +0.8706,1.213480506,1.393701085 +0.8634,1.265573374,1.475476387 +0.8695,1.271112417,1.46100432 +0.8664,1.230021678,1.382604904 +0.8676,1.277850865,1.488981792 +0.8694,1.206580156,1.432224163 +0.8677,1.222208462,1.381499031 +0.8731,1.227231144,1.448161241 +0.8623,1.215837549,1.327527839 +0.8738,1.248648726,1.467379841 +0.8678,1.215332367,1.433699246 +0.8675,1.283529195,1.335636862 +0.8638,1.215375809,1.36160172 +0.8641,1.236290604,1.313606603 +0.8545,1.262924955,1.308314437 +0.8528,1.245749793,1.355288744 +0.8621,1.22111607,1.385039626 +0.8571,1.220402226,1.334571214 +0.8641,1.200604296,1.455463543 +0.8639,1.264089053,1.39464362 +0.8626,1.251017179,1.38160176 +0.8693,1.296940792,1.303586068 +0.8673,1.288923309,1.455844469 +0.8696,1.272396255,1.315343641 +0.867,1.243119414,1.366866119 +0.8589,1.215188021,1.432238647 +0.8565,1.282321252,1.477799241 +0.8627,1.278243235,1.301130029 +0.8627,1.203776699,1.409512295 +0.8604,1.265962775,1.314466854 +0.8646,1.207164934,1.332972199 +0.8677,1.254055951,1.356952428 +0.856,1.270604518,1.429705456 +0.8661,1.243828217,1.379942904 +0.8617,1.242076664,1.312823494 +0.8675,1.230684564,1.497180677 +0.8552,1.279812907,1.457256606 +0.8628,1.271512832,1.444981501 +0.8691,1.288696856,1.455516912 +0.8722,1.202682398,1.304215509 +0.8612,1.258591423,1.460739684 +0.8607,1.287135662,1.379411649 +0.8633,1.255875602,1.359342726 +0.8631,1.29911195,1.333884982 +0.8662,1.297906712,1.363591301 +0.8603,1.267080991,1.341323975 +0.8644,1.208064287,1.48906407 +0.8699,1.280960941,1.424587462 +0.8579,1.252460201,1.457266215 +0.8607,1.238349953,1.453838462 +0.86,1.218399537,1.312583468 +0.8645,1.243831347,1.451822808 +0.8639,1.282064014,1.392978086 +0.8624,1.200527446,1.35795227 +0.8678,1.205905761,1.444256111 +0.8707,1.266557575,1.352659532 +0.8688,1.270734781,1.319728175 +0.8646,1.26644322,1.331439514 +0.8686,1.236631034,1.34902316 +0.8671,1.266525931,1.494007687 +0.8628,1.20596292,1.44762994 +0.8731,1.239036361,1.497938042 +0.8636,1.279325444,1.46783567 +0.8589,1.270466195,1.378507075 +0.8601,1.275230898,1.443996515 +0.8668,1.21568625,1.385254583 +0.8755,1.206844615,1.483024496 +0.8618,1.237219901,1.473724347 +0.8682,1.228217524,1.320545755 +0.8587,1.29872197,1.355844708 +0.866,1.272248913,1.301923231 +0.8748,1.229409626,1.442490875 +0.8631,1.224001714,1.335903862 +0.8605,1.216109836,1.417519039 +0.8648,1.23644426,1.376759406 +0.8624,1.216653981,1.406390944 +0.8656,1.298346855,1.314425549 +0.871,1.286825865,1.467839616 +0.8619,1.288229039,1.40826457 +0.8569,1.266292781,1.373624135 +0.8572,1.219201402,1.324168223 +0.8612,1.242099245,1.479287275 +0.8687,1.262365016,1.392222646 +0.8739,1.225490896,1.436790054 +0.8639,1.206652948,1.312606475 +0.8591,1.263396518,1.369333049 +0.8559,1.294661118,1.407040781 +0.8642,1.264554624,1.356666449 +0.8639,1.260743955,1.428578675 +0.8683,1.220945423,1.430687218 +0.8576,1.290079942,1.33873064 +0.862,1.299404635,1.494036237 +0.8702,1.247340522,1.328085875 +0.8626,1.258939467,1.467426461 +0.8676,1.250134946,1.426128749 +0.8591,1.279017391,1.411229403 +0.8603,1.281242066,1.356366411 +0.855,1.237607155,1.421853601 +0.866,1.258193652,1.329189493 +0.863,1.24598903,1.408682795 +0.8593,1.250147657,1.468684264 +0.8642,1.214078661,1.431087615 +0.861,1.282326575,1.434106788 +0.8646,1.291402374,1.465086638 +0.87,1.288709157,1.465274757 +0.8704,1.295557054,1.393922887 +0.8631,1.224125481,1.400583946 +0.863,1.237708899,1.498191882 +0.8598,1.281866108,1.363430612 +0.8651,1.262502102,1.354381178 +0.8653,1.219178422,1.492845006 +0.8674,1.299795994,1.338399537 +0.8681,1.295982882,1.34680428 +0.8664,1.206370868,1.420506543 +0.8699,1.230589814,1.397549055 +0.8723,1.230102602,1.338326743 +0.8628,1.299811619,1.403300781 +0.8694,1.293633762,1.372372418 +0.8641,1.238400222,1.313588806 +0.8566,1.243087091,1.372723928 +0.858,1.201002305,1.385062887 +0.8612,1.25803646,1.467710175 +0.869,1.29948261,1.449205862 +0.8651,1.214008377,1.315789609 +0.8706,1.270322901,1.324152576 +0.8769,1.248630207,1.409479271 +0.8619,1.280389643,1.483863842 +0.8649,1.231388479,1.449867009 +0.8632,1.290843275,1.303949248 +0.8678,1.257526874,1.373306968 +0.86,1.2836958,1.381928515 +0.8681,1.256912558,1.387348924 +0.8687,1.20939472,1.304100469 +0.8603,1.264710662,1.380490932 +0.861,1.284203151,1.363527543 +0.8586,1.279877135,1.450410585 +0.8631,1.206039418,1.446068918 +0.8674,1.278000569,1.329361622 +0.8679,1.221598397,1.467135523 +0.8638,1.250917998,1.309011228 +0.8631,1.218870004,1.352037638 +0.8674,1.259777758,1.310349061 +0.865,1.269475876,1.303041263 +0.8659,1.275205264,1.453686849 +0.8574,1.298134037,1.389581179 +0.8574,1.216159107,1.381579444 +0.8689,1.259797958,1.35197259 +0.864,1.21485805,1.470063538 +0.8685,1.276784668,1.321331755 +0.86,1.246771868,1.476052632 +0.8712,1.227769826,1.310687499 +0.8666,1.263366142,1.467633504 +0.8653,1.216045512,1.454852808 +0.8524,1.268211483,1.419117288 +0.8597,1.298619074,1.381546874 +0.869,1.230216672,1.328651271 +0.8639,1.25886427,1.4500769 +0.8703,1.282107752,1.343468772 +0.8683,1.277803599,1.455216354 +0.8672,1.208582813,1.317044838 +0.8618,1.284388248,1.3449623 +0.8659,1.282438751,1.333433152 +0.8608,1.204406032,1.472754263 +0.8597,1.277481616,1.461796284 +0.8598,1.210026588,1.475222603 +0.8735,1.239448458,1.468576612 +0.8683,1.276806381,1.453709372 +0.8638,1.271690799,1.4333075 +0.8657,1.294055828,1.380953719 +0.8613,1.289648362,1.453361452 +0.8614,1.283910042,1.426796591 +0.8696,1.260952931,1.348381155 +0.8585,1.269143767,1.465333753 +0.8583,1.215682492,1.499146279 +0.8664,1.210817029,1.412070166 +0.8652,1.222730829,1.361946847 +0.8626,1.263544691,1.446242768 +0.8563,1.236277969,1.490372795 +0.8636,1.245927102,1.350870172 +0.8617,1.208345311,1.410819928 +0.858,1.248796287,1.386807815 +0.8641,1.214423164,1.484858222 +0.8703,1.276428491,1.427571509 +0.8713,1.260553849,1.347959307 +0.8627,1.219745299,1.318448513 +0.8667,1.23257495,1.390933283 +0.8672,1.286919644,1.480360416 +0.8647,1.216689007,1.364347664 +0.8609,1.27026095,1.430571355 +0.8753,1.288437224,1.478097098 +0.8574,1.277834238,1.464191538 +0.8669,1.273182353,1.444038342 +0.8644,1.233502196,1.452639776 +0.8674,1.252798559,1.478755634 +0.8686,1.291583083,1.386122106 +0.8708,1.275874947,1.427246179 +0.8675,1.242808817,1.399266141 +0.8678,1.28018062,1.461271322 +0.8584,1.214616897,1.363421952 +0.8693,1.248970731,1.359516078 +0.8677,1.224668941,1.40127545 +0.8701,1.203190331,1.420235141 +0.868,1.231353442,1.404625023 +0.8541,1.232663759,1.492996738 +0.867,1.242800802,1.305656143 +0.8625,1.263289412,1.444156494 +0.8589,1.279661136,1.430246253 +0.8574,1.290474142,1.324561557 +0.8578,1.261997862,1.309785852 +0.8626,1.291163838,1.470088154 +0.8599,1.267487335,1.39043835 +0.8705,1.241910618,1.469116022 +0.8634,1.217222587,1.376449433 +0.8736,1.279090723,1.348502255 +0.8702,1.290868974,1.387338853 +0.8631,1.23004281,1.377129257 +0.8628,1.209928215,1.437427811 +0.8546,1.221478246,1.486327218 +0.8663,1.232041497,1.423038094 +0.862,1.25992299,1.361874785 +0.865,1.278063873,1.357969929 +0.8663,1.231808416,1.364333229 +0.8621,1.253698184,1.306213927 +0.8574,1.294446172,1.399394578 +0.865,1.233487834,1.317898836 +0.8625,1.221201104,1.473072143 +0.8762,1.221826659,1.351673306 +0.8597,1.286405195,1.321388965 +0.8656,1.282604501,1.387071857 +0.8688,1.249116923,1.312051968 +0.8584,1.284719304,1.487936558 +0.8673,1.241156823,1.334481201 +0.8649,1.258128802,1.386751341 +0.8633,1.215760768,1.491040879 +0.8587,1.245047929,1.359528472 +0.8688,1.215438587,1.361857561 +0.8629,1.280869006,1.412558198 +0.8672,1.248159174,1.387697954 +0.8774,1.224592111,1.444536173 +0.8574,1.200825094,1.469571427 +0.8734,1.280315291,1.418731357 +0.8624,1.241130785,1.411457219 +0.8643,1.206980509,1.35675477 +0.8576,1.299829111,1.362171718 +0.8667,1.259898247,1.303472319 +0.8619,1.204865983,1.398885789 +0.8597,1.203059402,1.389472175 +0.8583,1.291532706,1.447707438 +0.8631,1.254866928,1.472222555 +0.8684,1.248850385,1.344471261 +0.8603,1.24841526,1.455557801 +0.8759,1.251908149,1.411118657 +0.8669,1.277832011,1.432064243 +0.8752,1.221883786,1.431017125 +0.8717,1.281178329,1.448967435 +0.8643,1.259705008,1.435006327 +0.8656,1.227386958,1.307660287 +0.8563,1.20596412,1.49426567 +0.8698,1.272454669,1.453268149 +0.8645,1.254853225,1.318369157 +0.868,1.210289412,1.36057249 +0.8689,1.263488693,1.449016153 +0.8645,1.272678353,1.444110935 +0.8658,1.215528219,1.429967643 +0.8648,1.258972175,1.319674283 +0.8657,1.294296062,1.453485059 +0.8602,1.283140511,1.426031499 +0.8634,1.266168809,1.386366806 +0.8739,1.233726988,1.433947579 +0.8585,1.278709609,1.481955132 +0.8471,1.202433272,1.34672678 +0.8677,1.247480976,1.495444869 +0.8594,1.298836886,1.317978217 +0.8676,1.202916273,1.434822606 +0.8654,1.296775879,1.440964705 +0.8673,1.239471245,1.318627828 +0.8567,1.234597708,1.315685614 +0.8626,1.264146603,1.371148631 +0.8748,1.210399306,1.389607668 +0.8657,1.241064398,1.497949137 +0.8638,1.24965614,1.411916723 +0.8686,1.249142337,1.431471917 +0.8627,1.258829386,1.439485357 +0.8707,1.296500924,1.371936727 +0.8668,1.264332107,1.351822586 +0.8632,1.278415566,1.30233482 +0.8657,1.288426679,1.352537396 +0.8661,1.280727264,1.460431513 +0.854,1.241236154,1.489964657 +0.8634,1.204627039,1.403499099 +0.8614,1.26656322,1.327138941 +0.8625,1.262837473,1.435190244 +0.8596,1.253967322,1.454543068 +0.8674,1.26089763,1.423673691 +0.8626,1.276951284,1.37092923 +0.8686,1.25976248,1.406351035 +0.8658,1.243834016,1.399300799 +0.8587,1.205946122,1.424893412 +0.8565,1.299534678,1.473982482 +0.8669,1.247987489,1.369466617 +0.867,1.27616372,1.372296114 +0.8624,1.271329133,1.408570649 +0.8624,1.233228097,1.38283113 +0.8754,1.22596244,1.454499574 +0.8616,1.268162449,1.31956614 +0.8585,1.244472158,1.300269196 +0.8634,1.236458969,1.47611741 +0.8598,1.232151834,1.336987051 +0.8661,1.27342708,1.380924592 +0.8692,1.270990072,1.413707292 +0.8639,1.222463174,1.45520596 +0.873,1.203109789,1.432747832 +0.8751,1.235281893,1.494294209 +0.8681,1.204767303,1.467576177 +0.864,1.261740035,1.430701297 +0.8602,1.271257977,1.344760965 +0.8711,1.21488732,1.437365799 +0.8669,1.270391535,1.444023303 +0.8743,1.249451535,1.33129286 +0.8611,1.215991949,1.355736904 +0.865,1.25963385,1.384273134 +0.8733,1.228395612,1.386183031 +0.8637,1.298621406,1.336417075 +0.8676,1.254450778,1.32784753 +0.8802,1.256200656,1.350679466 +0.8612,1.240541729,1.45896188 +0.8617,1.275274259,1.497002984 +0.8535,1.246353526,1.457143943 +0.862,1.205564367,1.466321431 +0.8635,1.228717739,1.324276527 +0.8617,1.238486376,1.459996528 +0.8652,1.266346029,1.466964765 +0.865,1.297463298,1.388028603 +0.8662,1.2238547,1.390005125 +0.867,1.294863686,1.357647564 +0.8583,1.284394307,1.301447451 +0.8702,1.270395573,1.447032217 +0.8607,1.268258248,1.4630075 +0.8673,1.201220014,1.457664211 +0.8657,1.248584495,1.450498432 +0.8649,1.214648736,1.410439506 +0.8631,1.260207082,1.416815226 +0.8659,1.204347439,1.334897366 +0.8667,1.213672639,1.351811987 +0.8666,1.252757928,1.472515938 +0.8667,1.222365206,1.497658708 +0.8721,1.228443774,1.38054942 +0.873,1.203985862,1.397018307 +0.8644,1.219219075,1.467635705 +0.8614,1.224682114,1.392993819 +0.8635,1.293339333,1.307982221 +0.8714,1.270270013,1.365021211 +0.8716,1.20191204,1.406485787 +0.8695,1.267037179,1.432124316 +0.8715,1.252005416,1.448847749 +0.8615,1.247465134,1.488092797 +0.8592,1.259768317,1.329144586 +0.8639,1.288392423,1.338052978 +0.8715,1.239235744,1.410072451 +0.8724,1.241136727,1.466306781 +0.8704,1.219899088,1.448647191 +0.8681,1.22417955,1.448564853 +0.8755,1.23999829,1.389169199 +0.8626,1.243179076,1.419290372 +0.863,1.240078528,1.302089567 +0.8607,1.231579562,1.363846702 +0.8717,1.247261925,1.352194208 +0.8671,1.273801217,1.421602639 +0.868,1.205822019,1.486045705 +0.8604,1.24032965,1.330251849 +0.8609,1.206195492,1.492375481 +0.8578,1.203156518,1.44919029 +0.866,1.226923942,1.438003361 +0.8717,1.248589092,1.353653297 +0.8633,1.228031906,1.325187987 +0.8661,1.254705446,1.363667572 +0.8628,1.222980135,1.405131207 +0.8667,1.283299479,1.477627914 +0.8653,1.208321727,1.325380483 +0.8659,1.269007379,1.346225421 +0.8569,1.270656976,1.360970432 +0.857,1.224672105,1.483774014 +0.8734,1.209431265,1.471573994 +0.859,1.288163173,1.354825387 +0.8703,1.284391448,1.488809277 +0.8616,1.212954002,1.375182855 +0.8596,1.23655843,1.492674455 +0.8613,1.256148834,1.365219622 +0.8707,1.20271003,1.384852183 +0.8577,1.253919012,1.388249276 +0.8686,1.214412267,1.449797596 +0.8624,1.218532878,1.397698935 +0.8728,1.278393109,1.330945913 +0.8739,1.215228229,1.430813773 +0.871,1.278878909,1.414828305 +0.8654,1.222344763,1.420659809 +0.8624,1.208023289,1.465505598 +0.8639,1.224609591,1.321451702 +0.861,1.241356963,1.478306387 +0.8703,1.219437757,1.473559172 +0.8589,1.284170046,1.311349201 +0.8719,1.252824117,1.453160484 +0.8652,1.258876817,1.390785713 +0.8649,1.248644944,1.386542985 +0.8731,1.214331343,1.446457694 +0.8612,1.252527383,1.351031152 +0.8521,1.225118625,1.309650915 +0.8715,1.236244583,1.384220837 +0.8568,1.220870741,1.377923084 +0.8701,1.285334163,1.336441847 +0.8708,1.25329505,1.402561279 +0.872,1.229992977,1.465939904 +0.8668,1.208137448,1.32838816 +0.8737,1.263037481,1.302327628 +0.8718,1.263253355,1.433778079 +0.8572,1.278506986,1.335969934 +0.8694,1.231594529,1.351364561 +0.8722,1.296739519,1.431508341 +0.8657,1.233208687,1.397278352 +0.8637,1.263463591,1.428594753 +0.8705,1.206385176,1.47129617 +0.8653,1.233948882,1.416586538 +0.8635,1.20272196,1.457196623 +0.858,1.252095682,1.313194399 +0.8651,1.258662795,1.411587755 +0.8709,1.239754857,1.478513573 +0.8612,1.2481485,1.329498484 +0.8604,1.24358358,1.44328814 +0.8634,1.294758895,1.458426584 +0.8672,1.201693623,1.393743519 +0.8676,1.285167737,1.429911564 +0.869,1.253671714,1.459960801 +0.8791,1.258573618,1.321347728 +0.854,1.296588349,1.413318353 +0.8622,1.211542352,1.444734181 +0.8495,1.24270336,1.4389178 +0.86,1.220337192,1.353741601 +0.8606,1.257001107,1.409692381 +0.8557,1.242695191,1.358669955 +0.8607,1.265945743,1.34495489 +0.8633,1.23652729,1.462143381 +0.858,1.247419785,1.445058015 +0.8617,1.216395842,1.488184965 +0.8636,1.215194104,1.494997924 +0.8644,1.242563679,1.352379061 +0.8622,1.233792963,1.366241144 +0.8631,1.203591945,1.459034011 +0.8654,1.270578447,1.473711247 +0.8717,1.258889415,1.446688484 +0.8554,1.278906026,1.493662609 +0.8685,1.218563957,1.445529728 +0.8592,1.208379859,1.360628517 +0.8665,1.272714264,1.404627807 +0.863,1.262334825,1.436321507 +0.8661,1.292217559,1.331236419 +0.8677,1.206797527,1.447326287 +0.8627,1.296813795,1.303474307 +0.8786,1.271307358,1.475524762 +0.8577,1.277850264,1.387135037 +0.8679,1.290258019,1.444741985 +0.8687,1.287074768,1.45037882 +0.857,1.234703143,1.434604606 +0.8582,1.213956076,1.351427074 +0.8622,1.216217058,1.422654277 +0.8577,1.220020677,1.408857778 +0.8579,1.210704256,1.481863277 +0.8666,1.213878902,1.437668776 +0.8606,1.214217774,1.387525755 +0.8564,1.254741078,1.484308202 +0.869,1.206618227,1.356002341 +0.8596,1.250531607,1.395198603 +0.8655,1.204029729,1.472732165 +0.8605,1.221179653,1.332357951 +0.8716,1.267721875,1.305210982 +0.8596,1.229623794,1.332890248 +0.874,1.27292251,1.391767119 +0.8686,1.289361614,1.437224492 +0.8622,1.251640022,1.387770881 +0.8663,1.259385134,1.330017615 +0.8659,1.298596901,1.462332588 +0.861,1.212522369,1.484901658 +0.8724,1.253314668,1.32810571 +0.8702,1.228466457,1.414414644 +0.8592,1.223174419,1.433382733 +0.8623,1.274638253,1.390323226 +0.8595,1.236404458,1.314182923 +0.8547,1.288870795,1.356136096 +0.8644,1.243072436,1.32062003 +0.8758,1.277490863,1.4752885 +0.8637,1.2718697,1.427022885 +0.8687,1.293200668,1.312185951 +0.8629,1.23384946,1.376607145 +0.864,1.232218478,1.454140198 +0.8589,1.256688543,1.419223268 +0.8638,1.255903212,1.399042289 +0.8709,1.29130783,1.373892505 +0.871,1.280342542,1.421182342 +0.8616,1.205773605,1.355295016 +0.8631,1.207314461,1.491580208 +0.8599,1.202024998,1.387560483 +0.8624,1.27316163,1.424527623 +0.8629,1.23543292,1.407904206 +0.8639,1.260883217,1.343203097 +0.8599,1.299522446,1.425531749 +0.8651,1.282131696,1.386192068 +0.8633,1.273221891,1.347699067 +0.8693,1.296332762,1.426607308 +0.8591,1.269834839,1.381435725 +0.8612,1.228446357,1.48930348 +0.8661,1.259151696,1.492557201 +0.8589,1.223755592,1.445422286 +0.8554,1.201813161,1.339141068 +0.8588,1.275755726,1.327935472 +0.8675,1.271903455,1.497720757 +0.8636,1.216480431,1.495661616 +0.8632,1.298847682,1.499152189 +0.8632,1.224813902,1.320701712 +0.8648,1.242387469,1.392217765 +0.8632,1.243866344,1.359898359 +0.863,1.267427958,1.458987077 +0.8648,1.24109394,1.390868696 +0.8666,1.242787729,1.428868472 +0.8655,1.224510522,1.3513438 +0.8701,1.205183406,1.323101411 +0.8637,1.255935489,1.373184952 +0.8592,1.257493705,1.488506706 +0.8696,1.265119367,1.392328851 +0.8673,1.221809926,1.465431593 +0.8596,1.210097752,1.491394443 +0.8568,1.206832553,1.454526706 +0.8668,1.217143499,1.316009088 +0.8721,1.289216148,1.453902692 +0.8639,1.28752083,1.334636489 +0.8621,1.277603909,1.393367587 +0.8698,1.224345266,1.341750815 +0.8641,1.222757705,1.356525728 +0.8658,1.211620124,1.376952311 +0.8662,1.203258025,1.387369833 +0.8656,1.226335558,1.376042402 +0.8626,1.224903278,1.397881875 +0.8588,1.220928186,1.4604464 +0.8688,1.291309709,1.439451624 +0.8735,1.243556924,1.331382586 +0.8679,1.242105778,1.455593263 +0.8763,1.242584682,1.324132389 +0.8616,1.232910513,1.40598042 +0.8691,1.260197531,1.392978127 +0.8585,1.271991882,1.325163874 +0.861,1.257995997,1.421790393 +0.867,1.249120128,1.350526455 +0.8577,1.266068114,1.48661148 +0.8712,1.242782091,1.422564511 +0.871,1.272180199,1.462975395 +0.8635,1.288490183,1.38837967 +0.8707,1.216550038,1.374781595 +0.8671,1.213975078,1.423566661 +0.8631,1.280052502,1.315484752 +0.8661,1.204595098,1.386912774 +0.871,1.235859776,1.477780204 +0.8634,1.249738839,1.460777458 +0.8598,1.293819977,1.42961603 +0.867,1.25538122,1.481309407 +0.8641,1.267204262,1.454389231 +0.8688,1.241440072,1.470624651 +0.8678,1.216466275,1.475416156 +0.8667,1.283201068,1.34855842 +0.8603,1.257388617,1.348567153 +0.8664,1.228671995,1.431641819 +0.8597,1.203260465,1.458836479 +0.8746,1.22943634,1.409761111 +0.8665,1.216739791,1.442783776 +0.8718,1.295752376,1.401397384 +0.8569,1.285804865,1.41456258 +0.8667,1.295304591,1.449318412 +0.8679,1.224798018,1.404429621 +0.8657,1.226801364,1.452239264 +0.858,1.27023811,1.417367627 +0.851,1.234914552,1.389719595 +0.8747,1.239060341,1.30362908 +0.8754,1.283904384,1.37679081 +0.8685,1.258021249,1.346258675 +0.8541,1.211905005,1.374597377 +0.8628,1.270552782,1.309054018 +0.8681,1.266350751,1.300531105 +0.8683,1.258662636,1.431100667 +0.8742,1.285705705,1.400021405 +0.8652,1.269126124,1.346265909 +0.8637,1.25340919,1.33894309 +0.862,1.229236581,1.394591535 +0.8707,1.271336992,1.369019852 +0.8654,1.285154677,1.421326985 +0.8611,1.26253194,1.385655661 +0.8639,1.22057598,1.466886686 +0.8556,1.244056757,1.39460631 +0.8659,1.202970871,1.3178049 +0.8631,1.290330126,1.475819282 +0.8655,1.292098862,1.3125202 +0.8665,1.259556548,1.476593541 +0.8591,1.260154791,1.423092314 +0.8645,1.214606047,1.398550267 +0.8663,1.291325419,1.419393548 +0.8692,1.223624672,1.354360533 +0.8642,1.250414936,1.48567466 +0.8634,1.287789121,1.472141277 +0.865,1.292583071,1.463705694 +0.8562,1.29485394,1.313240277 +0.8592,1.283477772,1.468354637 +0.8674,1.223752615,1.426249247 +0.8684,1.292785172,1.310985968 +0.8612,1.263643334,1.367430415 +0.8693,1.278625308,1.323157509 +0.8695,1.205877799,1.360393838 +0.8646,1.207950916,1.483362711 +0.8558,1.210044003,1.337104662 +0.8573,1.210801878,1.312755847 +0.8589,1.286104394,1.392662537 +0.8561,1.245029212,1.381009663 +0.8708,1.266589801,1.368694896 +0.8669,1.289792534,1.367558961 +0.8676,1.243779228,1.422361468 +0.8656,1.200809492,1.339804534 +0.8672,1.217507225,1.400716578 +0.8712,1.23909393,1.381591792 +0.861,1.29114839,1.460704486 +0.8637,1.252588369,1.326349772 +0.8683,1.245205562,1.318514596 +0.8676,1.283206843,1.346649895 +0.8702,1.273632388,1.426877949 +0.8702,1.271589823,1.335495485 +0.8596,1.253005244,1.398628582 +0.8646,1.230657676,1.305823378 +0.8624,1.262317415,1.303661686 +0.8649,1.202771513,1.471929586 +0.8552,1.215977734,1.495540379 +0.8675,1.236724639,1.413736405 +0.8561,1.242089892,1.425782806 +0.8606,1.217082759,1.354340952 +0.8619,1.230261526,1.308295582 +0.856,1.225522639,1.3748181 +0.8656,1.294658781,1.435198422 +0.8642,1.262904784,1.344863402 +0.8674,1.289002457,1.344592821 +0.8587,1.217242828,1.321128013 +0.8671,1.250863563,1.373028695 +0.8736,1.275956322,1.360768447 +0.8676,1.289086661,1.473164389 +0.8729,1.261375229,1.309679712 +0.8593,1.205856362,1.443461772 +0.8646,1.21814146,1.374345497 +0.8592,1.298246748,1.377787611 +0.8668,1.242409665,1.394416541 +0.8604,1.261846823,1.429685956 +0.8647,1.258297219,1.313423331 +0.8644,1.210596077,1.36348468 +0.8667,1.255898817,1.465778102 +0.8765,1.216495221,1.304653825 +0.871,1.272701116,1.375419255 +0.8602,1.207783181,1.328075634 +0.8618,1.272685417,1.423415573 +0.8653,1.245132187,1.46518922 +0.8653,1.253520826,1.398073449 +0.8653,1.284331651,1.48166452 +0.867,1.200381095,1.473345088 +0.8614,1.296311356,1.313785188 +0.86,1.257982066,1.482133442 +0.8646,1.200200017,1.35765494 +0.8651,1.240953698,1.343324543 +0.8647,1.281725106,1.476788894 +0.8636,1.239637016,1.358726628 +0.8568,1.27998932,1.336888127 +0.8748,1.251627815,1.387506124 +0.858,1.276513903,1.480062157 +0.8699,1.213452556,1.31801908 +0.8637,1.201573928,1.474537288 +0.8647,1.297130123,1.393574852 +0.8574,1.24107644,1.351347359 +0.8662,1.202714847,1.35949533 +0.8607,1.290573169,1.439189384 +0.8659,1.257202046,1.401791744 +0.8641,1.282919818,1.380737828 +0.8748,1.297997109,1.370356239 +0.8603,1.244402028,1.424275914 +0.8679,1.207184798,1.47919341 +0.8709,1.290922744,1.481386949 +0.8671,1.221528334,1.487361552 +0.8694,1.229502132,1.385374529 +0.8675,1.203089996,1.429764181 +0.8525,1.231280804,1.409243907 +0.8647,1.210415465,1.44714717 +0.8642,1.219072803,1.451745009 +0.877,1.238258226,1.498265299 +0.8568,1.250317019,1.49500148 +0.8611,1.26886525,1.478229736 +0.8569,1.290009638,1.450742183 +0.8728,1.239322394,1.337203292 +0.8601,1.297191622,1.444779154 +0.8687,1.247628063,1.300635868 +0.8622,1.214887105,1.3609031 +0.8636,1.26912696,1.339891172 +0.8667,1.251862986,1.436235513 +0.865,1.270188838,1.337054036 +0.8633,1.298008763,1.341290775 +0.8633,1.201348434,1.423701253 +0.8654,1.250773049,1.300739961 +0.8597,1.273753108,1.348607747 +0.8706,1.288562851,1.355182629 +0.8585,1.289319484,1.444839506 +0.8615,1.241995558,1.428688758 +0.867,1.206662874,1.378461331 +0.8701,1.262161569,1.432841026 +0.8608,1.23848712,1.409880026 +0.8709,1.253326623,1.392836967 +0.8675,1.226516081,1.420877168 +0.8665,1.278955223,1.385649688 +0.8654,1.271593656,1.420579392 +0.866,1.271451789,1.304492807 +0.8607,1.2168967,1.44980316 +0.859,1.217293859,1.333850462 +0.8692,1.22159005,1.487656758 +0.8556,1.269057356,1.379106691 +0.8741,1.200078966,1.300007752 +0.8669,1.267825006,1.473364591 +0.8691,1.280410446,1.422041979 +0.8629,1.255668653,1.309596928 +0.8718,1.286351802,1.320534563 +0.867,1.285742225,1.415213666 +0.8685,1.215724365,1.409534432 +0.869,1.28375243,1.35851154 +0.8621,1.286353005,1.35422945 +0.8603,1.239274105,1.49687945 +0.8662,1.275879884,1.33448902 +0.8661,1.239689736,1.467596986 +0.8673,1.265607054,1.379471647 +0.8611,1.249602048,1.325056278 +0.8673,1.262611638,1.44170915 +0.8714,1.267476,1.371951085 +0.8591,1.261132035,1.344938177 +0.8588,1.20629106,1.345512895 +0.8713,1.273844277,1.347068016 +0.8715,1.215572023,1.497020578 +0.8659,1.238869145,1.404752774 +0.8715,1.250321648,1.367698608 +0.8606,1.224614317,1.31058045 +0.869,1.254673052,1.476426976 +0.8747,1.221549392,1.424805843 +0.8595,1.225363174,1.371155377 +0.8627,1.230087352,1.397602379 +0.863,1.279526053,1.347549853 +0.863,1.201184792,1.412274521 +0.8611,1.268748044,1.436671083 +0.8652,1.24094932,1.425123046 +0.8702,1.212727391,1.387286675 +0.8625,1.251677687,1.322261556 +0.8666,1.247950145,1.365935479 +0.8658,1.268369862,1.383107568 +0.8595,1.222379243,1.374438787 +0.8617,1.252194441,1.346025613 +0.8683,1.256558045,1.355689356 +0.8671,1.248502504,1.392104491 +0.8621,1.213279789,1.44355148 +0.8603,1.282070824,1.326748487 +0.8661,1.207287326,1.325480065 +0.8654,1.286116252,1.337959999 +0.864,1.257101082,1.361795924 +0.8632,1.251009512,1.435455502 +0.8648,1.237432577,1.373870014 +0.8687,1.267330876,1.484908071 +0.8651,1.294944513,1.323366574 +0.8724,1.276410944,1.392966365 +0.8589,1.267908642,1.445387176 +0.8711,1.260240977,1.492443904 +0.8657,1.289240546,1.435137062 +0.8682,1.216173463,1.360489476 +0.8592,1.297405342,1.4820757 +0.864,1.278279399,1.395108996 +0.8664,1.248769668,1.31427444 +0.8702,1.203625288,1.339681176 +0.8668,1.29113244,1.432775736 +0.8624,1.223512576,1.40330765 +0.8731,1.27900518,1.462531369 +0.864,1.245907329,1.394576081 +0.8539,1.291751797,1.404341306 +0.858,1.297940161,1.392394221 +0.8732,1.286186052,1.309144875 +0.8599,1.237678588,1.45942327 +0.861,1.222012847,1.359061949 +0.8659,1.254046554,1.397534832 +0.8682,1.259951053,1.431732545 +0.8647,1.237497813,1.494172898 +0.8655,1.270367916,1.493633935 \ No newline at end of file diff --git a/lessons/files/practice_files/molecule.txt b/lessons/files/practice_files/molecule.txt new file mode 100644 index 0000000..ad26b19 --- /dev/null +++ b/lessons/files/practice_files/molecule.txt @@ -0,0 +1,3 @@ +C10H14O +C5H8 +C40H56 \ No newline at end of file diff --git a/lessons/files/practice_files/periodic_table.csv b/lessons/files/practice_files/periodic_table.csv new file mode 100644 index 0000000..74c868d --- /dev/null +++ b/lessons/files/practice_files/periodic_table.csv @@ -0,0 +1,21 @@ +Name,Symbol,Number,Mass +Hydrogen,H,1,1.008 +Helium,He,2,4.0026 +Lithium,Li,3,6.94 +Beryllium,Be,4,9.0122 +Boron,B,5,10.81 +Carbon,C,6,12.011 +Nitrogen,N,7,14.007 +Oxygen,O,8,15.999 +Fluorine,F,9,18.998 +Neon,Ne,10,20.18 +Sodium,Na,11,22.99 +Magnesium,Mg,12,24.305 +Aluminum,Al,13,26.982 +Silicon,Si,14,28.085 +Phosphorus,P,15,30.974 +Sulfur,S,16,32.06 +Chlorine,Cl,17,35.45 +Argon,Ar,18,39.948 +Potassium,K,19,39.098 +Calcium,Ca,20,40.078 \ No newline at end of file diff --git a/lessons/files/spectrum.dat b/lessons/files/practice_files/spectrum.dat similarity index 88% rename from lessons/files/spectrum.dat rename to lessons/files/practice_files/spectrum.dat index e0c2c25..8c04b0e 100644 --- a/lessons/files/spectrum.dat +++ b/lessons/files/practice_files/spectrum.dat @@ -6,4 +6,4 @@ nm abs 280 0.998 290 0.377 300 0.007 -310 0.002 +310 0.002 \ No newline at end of file diff --git a/lessons/files/reading_files.ipynb b/lessons/files/reading_files.ipynb index 7da41c0..98c7d6b 100644 --- a/lessons/files/reading_files.ipynb +++ b/lessons/files/reading_files.ipynb @@ -9,24 +9,34 @@ "\n", "## Prerequisites:\n", "- Variables\n", - "- Iterables(?)\n", + "- Conditional statements\n", "- Loops\n", + "- Files and file types\n", "\n", "## Learning Outcomes:\n", "- Open files using Python's built-in functions and extract their contents to variables\n", "- Use the CSV module to read data from CSV files" ] }, + { + "cell_type": "markdown", + "id": "29242400", + "metadata": {}, + "source": [ + "## Reading Files" + ] + }, { "cell_type": "markdown", "id": "f4882898", "metadata": {}, "source": [ - "## Reading Files\n", + "One of the common uses of Python in chemistry is to analyse large amounts of data that you might have recorded in a lab and stored in various files (see previous lesson for discussion of file types). Python has numerous built-in capabilities that allow you to read and write these files.\n", "\n", - "One of the common uses of Python in chemistry is to analyse large amounts of data. \n", - "This might be data gathered during an experiment that has been stored in a number of files, and Python has a number of built-in functions to read (and write) files. \n", - "In this section, we will explore how to read different types of files, including text files and CSV files, using Python's built-in capabilities.\n", + "Before you start opening and reading files in Python, make sure:\n", + "- Your file is in the same directory as your code. See previous lesson for explanation on directories.\n", + "- Your file is sensibly named so you can easily find it and not confuse it with another.\n", + "- Your file is in the correct format. E.g. make sure objects in a ``.CSV`` file are separated by commas and not spaces or tabs.\n", "\n", "Let's start with a opening a simple text file and reading its contents:" ] @@ -38,9 +48,9 @@ "metadata": {}, "outputs": [], "source": [ - "file = open('molecule.txt', 'r')\n", - "contents = file.read()\n", - "file.close()\n", + "molec_file = open(\"molecule.txt\", \"r\")\n", + "contents = molec_file.read()\n", + "molec_file.close()\n", "print(contents)" ] }, @@ -49,21 +59,40 @@ "id": "6d821f38", "metadata": {}, "source": [ - "After running the cell above, you should see the contents of the `molecule.txt` file in the cell output. \n", - "If you don't see the output, make sure that the file is in the same directory as this notebook. \n", - "You can also verify the output by checking the file's contents in a text editor.\n", + "After running the cell above, you should see the contents of the `molecule.txt` file in the cell output. You can verify the output by checking the file's contents in a text editor.\n", "\n", - "The first line of the code cell above opens the file `molecule.txt` using the `open()` function and saves it to a special file-reading Python *object* we have called `file`.\n", - "The `open()` function takes at least one argument which is either the file name (if in the same working directory) or the full filepath of the file.\n", - "It can also take a second argument to specify the mode in which the file is opened (e.g., `'r'` for reading, `'w'` for writing, etc.).\n", - "If you don't specify a mode, the file is opened in read mode by default.\n", + "Let's go through step by step.\n", + "- In the first line of code, the file ``\"molecule.txt\"`` is opened using the Python ``open()`` function, which takes two arguments.\n", + " - The first argument is the file name, called as a string, using speech marks ``\"\"`` or ``''``.\n", + " - The second argument specifies the mode in which the file is opened. The default is ``\"t\"``. text mode, which is identical to ``\"r\"``, read mode, where every item is read as a string. Some others are ``\"w\"``, write mode, ``\"a\"``, append, ``\"x\"``, create a new file, ``\"r+\"``, read/write, among others. You can find the full list on the Python documentation website. \n", + "- Also in the first line, the file ``\"molecule.txt\"`` is stored in a special file-reading Python object that we have assigned the variable name ``molec_file``. This is then used later on in the code.\n", + "- In the second line, the file, now called ``molec_file``, is read by the built-in Python function ``.read()``. The full-stop indicates that the function is associated to the file before the dot. The molecular formula inside the file is then assigned the variable name ``contents``.\n", + "- In the third line, the file is closed. This is considered good practice. If it is not closed, various issues can start occurring (e.g. file access errors).\n", + "- The final line prints the string that has been placed inside the variable ``contents``." + ] + }, + { + "cell_type": "markdown", + "id": "cf2aca7e", + "metadata": {}, + "source": [ + "### Files in a diffferent directory" + ] + }, + { + "cell_type": "markdown", + "id": "2c25fe30", + "metadata": {}, + "source": [ + "If the file you are trying to call is unavoidably in a differect directory to the one you are working in, you can still call the file by instead inputing the full filepath for the file. E.g. ``\"C:\\Users\\Tara\\Documents\\PythonInChemistry\\readingfiles\\molecule.txt\"``\n", "\n", - "The second line of the code cell reads the entire contents of the file using the `read()` method of the file object and stores it in a variable called `contents`. \n", + "You could also use a relative filepath using ``./`` and ``../``. \n", + "- ``./`` indicates you want to stay in the same directory. After the forward slash, you can then put in further directory names, ending with your file name.\n", + "- ``../`` indicates you want to go back a directory from the one you are in. After the backslash, you can then put in further directory names, again ending with your file name.\n", "\n", - "The third line closes the file using the `close()` method and is considered good practice.\n", - "Otherwise we might leave it open, which can lead to various issues (e.g., file access errors).\n", + "If this is confusing, have a look at the previous lessons on file types and view the directory branch diagram.\n", "\n", - "Finally, the last line prints the contents of the `contents` variable." + " Remember Forward slash and backward slash are interchangeable for specifying a filepath (at higher computing levels this is not necessarily true, but for our purposes it is)." ] }, { @@ -72,8 +101,7 @@ "metadata": {}, "source": [ "### Reading Files with `with`\n", - "We can also use the `with` statement to open files, which will automatically close the file for us when we are done with it.\n", - "This is a more \"Pythonic\" way to handle files and is generally recommended.\n", + "We can also use the `with` statement to open files. The benefit of this is that it will automatically close the file for us when we are done with it, without using ``.close()``. This is a more \"Pythonic\" way to handle files and is generally recommended.\n", "\n", "Let's take a look at the same example using the `with` statement:" ] @@ -85,8 +113,8 @@ "metadata": {}, "outputs": [], "source": [ - "with open('molecule.txt', 'r') as file:\n", - " contents = file.read()\n", + "with open('molecule.txt', 'r') as molec_file:\n", + " contents = molec_file.read()\n", "\n", "print(contents)" ] @@ -102,12 +130,512 @@ "We now have a way to read files in Python, and use their contents as *variables* in our code." ] }, + { + "cell_type": "markdown", + "id": "fa3fded7", + "metadata": {}, + "source": [ + "### ``read()`` and ``readline()``" + ] + }, + { + "cell_type": "markdown", + "id": "ddaa58fb", + "metadata": {}, + "source": [ + "By default, the ``read()`` method returns the whole text, but you can also specify how many characters you want to return. \n", + "\n", + "`` molec_file.read(4) `` \n", + "\n", + "Only returns the first 4 characters of the text. \n", + "\n", + "Another built-in function is ``readline()``. This will return only the first line of the file. For example:\n", + "\n", + "```Python\n", + "with open('molecule.txt', 'r') as molec_file:\n", + " print(molec_file.readline())\n", + "```\n", + "\n", + "Will return only the first line, which is the molecule ``C10H14O``.\n", + "\n", + "If you then wanted the first and the second line, you could add a second ``readline()``:\n", + "\n", + "```Python\n", + "with open('molecule.txt', 'r') as molec_file:\n", + " print(molec_file.readline())\n", + " print(molec_file.readline())\n", + "```\n", + "\n", + "Which would return the first and second molecules, on separate lines. " + ] + }, + { + "cell_type": "markdown", + "id": "fde219c3", + "metadata": {}, + "source": [ + "### Using ``for`` loops to read a file" + ] + }, + { + "cell_type": "markdown", + "id": "c67c9759", + "metadata": {}, + "source": [ + "An easy way to extract information from a file is to use a ``for`` loop. The most simple case is to iterate line-by-line and print each line. \n", + "\n", + "```Python\n", + "with open(\"molecule.txt\") as molec_file:\n", + " for line in molec_file:\n", + " print(line)\n", + "```\n", + "\n", + "This will print each line of the file (each molecular formula) on a new line. We could also take only certain characters by selecting a certain index on the line using square brackets.\n", + "\n", + "```Python\n", + "with open(\"molecule.txt\") as molec_file:\n", + " for line in molec_file:\n", + " print(line[0])\n", + "```\n", + "\n", + "Will print the first characters of each line of the file. Each will be printed on a new line in the output cell. \n", + "\n", + "But how to make this useful? The most obvious way would be to take these values and add it to a list so we can call it as a variable later in the code. Type out this code and try it:\n", + "\n", + "```Python\n", + "with open(\"molecule.txt\") as molec_file:\n", + " molec_list = []\n", + " for line in molec_file:\n", + " molec_list.append(line)\n", + "\n", + "print(molec_list)\n", + "```\n", + "\n", + "The output we expect is ``[C10H14O, C5H8, C40H56]``, but the output we get is ``['C10H14O\\n', 'C5H8\\n', 'C40H56']``. The ``\"\\n\"`` indicates a new line, and it appears because in a text file a new line is represented by this character.\n", + "\n", + "So how do we split this file in a way that is useful? We need to use delimiters. Revisit the previous lesson for a discussion on these." + ] + }, + { + "cell_type": "markdown", + "id": "f110135e", + "metadata": {}, + "source": [ + "
Exercise: Print a certain number of lines \n", + "\n", + "For the file \"spectrum.dat\", open using a ``with`` statement and print the first four lines.\n", + "\n", + " Hint Use a ``for`` loop with the ``range()`` function to print the line a certain number of times.\n", + "\n", + "
Click to see a potential answer \n", + "\n", + "
\n", + "\n", + ">```Python\n", + ">with open(\"./practice_files/spectrum.dat\") as file:\n", + "> for i in range(4):\n", + "> print(file.readline())\n", + ">```\n", + "\n", + "This code prints the first 4 lines of the file. We have used the ``range()`` function to only print it 4 times. \n", + "\n", + "
\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "8592155a", + "metadata": {}, + "source": [ + "## Delimiters and ``.split()``" + ] + }, + { + "cell_type": "markdown", + "id": "31fa7714", + "metadata": {}, + "source": [ + "As discussed in the previous lesson, delimiters indicate the separation between items in a file. In a text file containing words, the delimiter would be a space. In a CSV file, the values are separated by a comma, so the delimiter is a comma. We can then extract information between delimiters using the built-in Python function ``.split()``.\n", + "\n", + "``.split()`` splits content based on the delimiter for any content placed before the dot. It takes a string as argument, which is the delimiter which it acts on. The default delimiter (no argument) is any whitespace (space or tab). \n", + "\n", + "Using our example of the text file containing molecular formulas, we can split on the new line (using the special character \"\\n\")." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "2648a5f2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['C10H14O', 'C5H8', 'C40H56']\n" + ] + } + ], + "source": [ + "with open(\"./practice_files/molecule.txt\") as molec_file:\n", + " contents = molec_file.read()\n", + " contents = contents.split(\"\\n\")\n", + "print(contents)" + ] + }, + { + "cell_type": "markdown", + "id": "2756b35f", + "metadata": {}, + "source": [ + "The above code does the following:\n", + "- The ``with`` statement opens the file and assigns it the name molec_file. It automatically closes once the ``with`` indents are no longer respected.\n", + "- The contents are read.\n", + "- The contents are split. We have specified to split the content along new lines using ``\"\\n\"``. However, in thise case it would also work if we left the argument blank, as the new lines count as whitespace. However, if we wanted to split along a new line and there was whitespace within the line, we would have to specify ``\"\\n\"``. \n", + "\n", + "The output is: ``['C10H14O', 'C5H8', 'C40H56']``, a list of each item between the delimiter.\n", + "\n", + "In this case, we have extracted and split the entire contents of the file. But what if there were multiple items in each line? Open and have a look at the file 'alkanes_alkenes_alkynes.txt'. This holds the molecular formulae of each homologuous series in a column. We could read it using the code above, but it would result in a very long list of strings:\n", + "\n", + "``['C2H6,C2H4,C2H2', 'C3H8,C3H6,C3H4', 'C4H10,C4H8,C4H6', 'C5H12,C5H10,C5H8', 'C6H14,C6H12,C6H10', ... ,'C14H30,C14H28,C14H26', 'C15H32,C15H30,C15H28']``\n", + "\n", + "Try for yourself.\n", + "\n", + "Instead of splitting all the contents, we can iterate through line by line and split the line we are on using the delimiter \",\". " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "478c2fc3", + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"./practice_files/alkanes_alkenes_alkynes.csv\") as file:\n", + " file = file.read()\n", + " file = file.split(\"\\n\")\n", + " for line in file:\n", + " line = line.split(\",\")\n", + " print(line)" + ] + }, + { + "cell_type": "markdown", + "id": "5750b5d8", + "metadata": {}, + "source": [ + "The above code returns each item in each line as items in a list. However, this isn't particularly useful. It would be more useful to have a list of alkanes, a list of alkenes, and a list of alkynes. We can do this by apppending to empty lists by referencing the position in each line using square brackets.\n", + "\n", + "### Example: Splitting a line" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "c5eaac3a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['C2H6', 'C3H8', 'C4H10', 'C5H12', 'C6H14', 'C7H16', 'C8H18', 'C9H20', 'C10H22', 'C11H24', 'C12H26', 'C13H28', 'C14H30', 'C15H32']\n", + "['C2H4', 'C3H6', 'C4H8', 'C5H10', 'C6H12', 'C7H14', 'C8H16', 'C9H18', 'C10H20', 'C11H22', 'C12H24', 'C13H26', 'C14H28', 'C15H30']\n", + "['C2H2', 'C3H4', 'C4H6', 'C5H8', 'C6H10', 'C7H12', 'C8H14', 'C9H16', 'C10H18', 'C11H20', 'C12H22', 'C13H24', 'C14H26', 'C15H28']\n" + ] + } + ], + "source": [ + "alkanes = []\n", + "alkenes = []\n", + "alkynes = []\n", + "with open(\"./practice_files/alkanes_alkenes_alkynes.csv\") as file:\n", + " file = file.read()\n", + " file = file.split(\"\\n\")\n", + " for line in file:\n", + " line = line.split(\",\")\n", + " alkanes.append(line[0])\n", + " alkenes.append(line[1])\n", + " alkynes.append(line[2])\n", + "print(alkanes)\n", + "print(alkenes)\n", + "print(alkynes)" + ] + }, + { + "cell_type": "markdown", + "id": "2900a19f", + "metadata": {}, + "source": [ + "Be careful - remember that Python is 0-indexed. The first column is index 0, the second column is index 1. In this example, if you call ``line[3]``, you will get the index error 'list index out of range'." + ] + }, + { + "cell_type": "markdown", + "id": "126e1a74", + "metadata": {}, + "source": [ + "### Example: Extracting data and converting to a float\n", + "\n", + "As a default, information from files are imported as a string. Therefore, if you want to use numbers from your file, you need to convert it to numbers. The easiest way is to use the built-in Python ``float()`` function. But be careful! If there are letters or special characters in the string, you will receive an error. " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "aeb84ef9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1.2547, 1.2575, 1.2657, 1.2768, 1.2569, 1.2493, 1.2602, 1.2416, 1.2748, 1.2642, 1.2618, 1.2754, 1.2483, 1.2494, 1.2556, 1.2629, 1.2588, 1.247, 1.2617, 1.2539]\n" + ] + } + ], + "source": [ + "values = []\n", + "with open(\"./practice_files/measurements_1.csv\") as file:\n", + " file = file.read()\n", + " file = file.split(\"\\n\")\n", + " for line in file:\n", + " values.append(float(line))\n", + "\n", + "print(values)" + ] + }, + { + "cell_type": "markdown", + "id": "7c6b67d6", + "metadata": {}, + "source": [ + "Each line in the file only contains one number. Therefore, we can convert each line to a float when we append it to our list of values. If we were working with a file that has multiple cells in each row, we would have to convert each individual value we are appending to a float. \n", + "\n", + "Write out this code yourself and check it is working without error." + ] + }, + { + "cell_type": "markdown", + "id": "828d3808", + "metadata": {}, + "source": [ + "
Exercise: Extract columns of data \n", + "\n", + "The file 'measurements_2.csv' contains three columns of background data, corresponding to three different students. Write a code that extracts the data from each of the three columns and appends it to three lists. Then write a code that finds the average of each set of data.\n", + "\n", + " Hint 1: Once you have split each line, you can call items in a line using square brackets. The first item in a line can be called using ``line[0]``, the second using ``line[1]``, and so on. \n", + "\n", + " Hint 2: Define a function to find the average to avoid writing out the same code over and over.\n", + "\n", + "
Click to see a potential answer \n", + "\n", + "
\n", + "\n", + ">```Python\n", + ">def find_mean(data_list):\n", + "> \"\"\"Find the mean of a list of floats\"\"\"\n", + "> sum = 0\n", + "> for value in data_list:\n", + "> sum = sum + value\n", + "> average = sum/len(data_list)\n", + "> return average\n", + ">\n", + ">student_1 = []\n", + ">student_2 = []\n", + ">student_3 = []\n", + "># Open our file and extract the contents into the lists above\n", + ">with open(\"./practice_files/measurements_2.csv\") as file:\n", + "> contents = file.read()\n", + "> contents = contents.split(\"\\n\")\n", + "> for line in contents:\n", + "> line = line.split(\",\")\n", + "> student_1.append(float(line[0]))\n", + "> student_2.append(float(line[1]))\n", + "> student_3.append(float(line[2]))\n", + "># Check we have the correct lists\n", + ">print(student_1, \"\\n\", student_2, \"\\n\", student_3)\n", + ">\n", + "># Print the mean\n", + ">print(find_mean(student_1))\n", + ">print(find_mean(student_2))\n", + ">print(find_mean(student_3))\n", + "\n", + "We have defined our function at the top, which is good practice. Then, we open our file and extract the contents, ensuring values in each list are floats and not strings. Finally, we print the mean of those strings using our earlier defined function.\n", + "\n", + "
\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "7bff0294", + "metadata": {}, + "source": [ + "
Exercise: Create a function \n", + "\n", + "Above, we have written code to open a single file and extract the data. If we have many files of data that we want to read, we don't want to write that out over and over again. \n", + "\n", + "1. Write a function that can extract columns of data, just like in the previous exercise, and call the file \"measurements_2.csv\" to check it works.\n", + "\n", + "2. Extension: Create a function that can read a certain index and return the data from that index in a list.\n", + "\n", + "3. Advanced extension: Create a function that can take an arbitrary number of list index values for a file and output the data of those two lists. (Hint: use nested loops and nested lists).\n", + " HintL Use arbitrary arguments, ``*args``.\n", + "\n", + "
Click to see a potential answer \n", + "\n", + "
\n", + "\n", + "This is just turning our code from the previous exercise into a function. The function takes one argument (the file name), and will always output the first three columns of data as a three separate lists.\n", + "\n", + ">```Python\n", + ">def read_data(data_file):\n", + "> \"\"\"\n", + "> Read a file and output columns of data\n", + "> \"\"\"\n", + "> list_1 = []\n", + "> list_2 = []\n", + "> list_3 = []\n", + "> # Open our file and extract the contents into the lists above\n", + "> with open(data_file) as file:\n", + "> contents = file.read()\n", + "> contents = contents.split(\"\\n\")\n", + "> for line in contents:\n", + "> line = line.split(\",\")\n", + "> list_1.append(float(line[0]))\n", + "> list_2.append(float(line[1]))\n", + "> list_3.append(float(line[2]))\n", + "> return list_1, list_2, list_3\n", + ">\n", + "># Call our function\n", + ">student_1, student_2, student_3 = read_data(\"./practice_files/measurements_2.csv\")\n", + "># Check we have the correct lists\n", + ">print(student_1, \"\\n\", student_2, \"\\n\", student_3)\n", + "\n", + "This has many limitations. It will not work if our data has less than 3 columns (try with the file \"measurements_1\" and see what happens). It also won't return any columns past the first three, so you can't retrieve the fifth, sixth, or 100th column. The extension question tackles this.\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "
Click to see the extension answer \n", + "\n", + "This code is more flexible than the previous one. Now, we can accept files with any number of columns, and we retrieve the data frp, a certain column, specifed with a second argument.\n", + "\n", + "```Python\n", + "def read_file(data_file, column=0):\n", + " \"\"\"\n", + " Read a file and output the data from a column.\n", + "\n", + " Parameters:\n", + " data_file : STRING\n", + " The pathway of a CSV file with no headings.\n", + " column : INTEGER\n", + " The index of the column we wish to extract. \n", + " An integer that is 0 or greater.\n", + " Default = 0 (the first column)\n", + " \n", + " Returns:\n", + " data : LIST\n", + " The data from a certain column.\n", + " \"\"\"\n", + " # Extract data into this empty list\n", + " data = []\n", + " with open(data_file) as file:\n", + " file = file.read()\n", + " contents = file.split(\"\\n\") \n", + " for line in contents:\n", + " line = line.split(\",\")\n", + " data.append(float(line[column]))\n", + " return data\n", + "\n", + "student_1 = read_file(\"./practice_files/measurements_2.csv\", 1)\n", + "print(student_1)\n", + "```\n", + "\n", + "But this still has issues. If we want to retrieve the data from multiple columns, we have to call our function multiple times, and each time type out the file path. \n", + "\n", + "In the advanced extentsion, we instead use an arbitrary number of arguments to retrieve any number of columns from the data.\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "
Click to see the advanced extension answer \n", + "\n", + "In this code, we have written ``*columns`` as our arbitrary arguments. As our file only has 3 columns of data, we could put in 0, 1, or 2, as our arbitrary arguments. If we had more columns of data, we could call any number of those columns.\n", + "\n", + "```Python\n", + "def read_file(data_file, *columns):\n", + " \"\"\"\n", + " Read a file and output any of the columns.\n", + "\n", + " Parameters:\n", + " data_file : STRING\n", + " The pathway to access a .csv file with no headers\n", + " *columns : INT\n", + " An arbitrary number of integers \n", + " Corresponding to the index of a column within data_file\n", + " \n", + " Returns:\n", + " data : LIST\n", + " The nested list of all our data. Each nested list is a column of data points\n", + " column_index : LIST\n", + " A record of which columns our data is from. Can be used to reference\n", + " \"\"\"\n", + " # A record of which columns we are taking data from\n", + " column_index = []\n", + " # A nested list of the data, where each column is a list within this list\n", + " data = []\n", + " for column in columns:\n", + " column_index.append(column)\n", + " with open(data_file) as file:\n", + " file = file.read()\n", + " contents = file.split(\"\\n\")\n", + " for index in column_index:\n", + " temp_list = [] \n", + " for line in contents:\n", + " line = line.split(\",\")\n", + " temp_list.append(float(line[index]))\n", + " data.append(temp_list)\n", + " return data, column_index\n", + "\n", + "data, index = read_file(\"./practice_files/measurements_2.csv\", 0, 2)\n", + "print(data) # For student 1 and student 3\n", + "print(index) # Student 1's data is in column 0, and student 3's data is in column 2\n", + "print(\"Student 1: \" , data[0]) # This is student 1's data\n", + "print(\"Student_3: \" , data[1]) # This is student 2's data\n", + "```\n", + "\n", + "Once we have retrieved the nested list of data, we can separate it out by calling the index location. Since we only have two items in this list, we must call positions 0 and 1, which correspond to the data from Student 1 and Student 3.\n", + "\n", + "We could call this function with any column index, as long as we do not go over the number of columns. Remember to check you have the right data, as if you are trying to call Student 2's data and put the number '2' as an argument, you will get an index error without realising (as Python will not read this as an error - if you want student 2's data, you need to write '1' as an argument).\n", + "\n", + "Indexing can get confusing, especially with Python's 0-indexing system. Keep your variable names consistent and descriptive, and leave sensible comments to help you and others understand what is going on.\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "4b9514a0", + "metadata": {}, + "source": [ + "## Looping through multiple files\n", + "\n", + "- OS module?" + ] + }, { "cell_type": "markdown", "id": "8ec1d24a", "metadata": {}, "source": [ - "## Reading CSV Files\n", + "## Using the CSV module\n", "CSV (Comma Separated Values) files are a common format for storing tabular data, such as data from experiments or simulations.\n", "Each line in a CSV file represents a row of data, and each value in the row is separated by a comma (you can easily verify this by opening up a CSV file in a text editor).\n", "Python has a built-in module called `csv` that makes it easy to read (and write) CSV files.\n", @@ -148,39 +676,246 @@ }, { "cell_type": "markdown", - "id": "760dcb9a", + "id": "c2c0d870", "metadata": {}, "source": [ - "## Exercises\n", + "## Parsing headers" + ] + }, + { + "cell_type": "markdown", + "id": "7860419e", + "metadata": {}, + "source": [ + "Data will often come with headers indicating what the data in each column is. If you use the methods above to extract information, you will end up with descriptions in your list of data, which cannot then be converted to floats and will result in errors. You must either skip over these lines, or append them into a useful list.\n", "\n", - "### Manipulate data\n", - "Use f-strings to print the contents of the `elements.csv` file in a more readable format.\n", - "Don't forget about the header row!" + "The most general way of doing this is using ``if`` statements. There are a number of strategies you could use. Some (but not all) are listed below. You can get creative with these, there are lots of methods!" + ] + }, + { + "cell_type": "markdown", + "id": "ca424bb0", + "metadata": {}, + "source": [ + "#### Example 1: Identifying a line containing certain values\n", + "\n", + "Here, if the first line is equal to ['nm', 'abs'] (which it is), the program will ``continue``, meaning the current loop ends and the next loop begins. Since the lines in the next loops are numbers, the code will go straight to the ``else`` statement and append to the relevant lists. \n", + "\n", + "You could also test just the first item in the line using ``if line[0] == \"nm\":``. This might be useful if there are multiple lines beginning with the same thing that you want to extract." ] }, { "cell_type": "code", "execution_count": null, - "id": "53a6fb7d", + "id": "5e912e8c", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "wavelength = []\n", + "absorption = []\n", + "with open(\"./practice_files/spectrum.dat\") as file:\n", + " contents = file.read()\n", + " contents = contents.split(\"\\n\")\n", + " for line in contents:\n", + " line = line.split()\n", + " if line == ['nm', 'abs']:\n", + " continue\n", + " else:\n", + " wavelength.append(float(line[0]))\n", + " absorption.append(float(line[1]))\n", + "print(\"Wavelengths: \" , wavelength)\n", + "print(\"Absorptions :\" , absorption)" + ] + }, + { + "cell_type": "markdown", + "id": "9719bd5e", + "metadata": {}, + "source": [ + "#### Example 2: Check if an entry is a number using ``.isdigit()``\n", + "\n", + "In this example, we have added a ``for`` loop that iterates through the line, checking if each string item in the line contains numbers using the built-in Python function ``.isdigit()``. This will return True if all characters in the string are numbers, and False if any of those characters are not numbers. In this way, we can skip over any items which are not floats. \n", + "\n", + "Also, if we have removed any values (outliers, etc.), this will filter them out." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "14f6800b", + "metadata": {}, + "outputs": [], + "source": [ + "wavelength = []\n", + "absorption = []\n", + "with open(\"./practice_files/spectrum.dat\") as file:\n", + " contents = file.read()\n", + " contents = contents.split(\"\\n\")\n", + " for line in contents:\n", + " line = line.split()\n", + " for item in line:\n", + " if item.isdigit() == False:\n", + " continue\n", + " else:\n", + " wavelength.append(float(line[0]))\n", + " absorption.append(float(line[1]))\n", + "print(\"Wavelengths: \" , wavelength)\n", + "print(\"Absorptions :\" , absorption)" + ] + }, + { + "cell_type": "markdown", + "id": "1a5229ca", + "metadata": {}, + "source": [ + "#### Example 3: Use enumerate to skip specific lines\n", + "\n", + "In this example, we enumerate the contents. This way, we can skip over any line we specify. In this case, the first line (index == 0) is skipped. If we also wanted to skip over the second line, we could use an ``or`` statement, e.g. ``if index == 0 or index == 1:``. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1b22f5d9", + "metadata": {}, + "outputs": [], + "source": [ + "wavelength = []\n", + "absorption = []\n", + "with open(\"./practice_files/spectrum.dat\") as file:\n", + " contents = file.read()\n", + " lines = contents.split(\"\\n\")\n", + " for index, line in enumerate(lines):\n", + " if index == 0:\n", + " continue\n", + " else:\n", + " wavelength.append(float(line[0]))\n", + " absorption.append(float(line[1]))\n", + "\n", + "print(\"Wavelengths: \" , wavelength)\n", + "print(\"Absorptions :\" , absorption)" + ] + }, + { + "cell_type": "markdown", + "id": "7d282a05", + "metadata": {}, + "source": [ + "#### Example 4: Using length of a line\n", + "\n", + "In some cases, the headers are a different length to the rest of the file.\n", + "\n", + "In the XYZ file \"hydrogen_atoms.xyz\", the lines containing the data always have 4 elements to them: the atom, its x coordinate, its y coordinate, its z coordinate. All coordinates are given in Angstroms. \n", + "\n", + "If you wanted to, instead of outputting a nested list of coordinates in the format [[x,y,z], [x,y,z]], you could create three lists corresponding the the three axes, each with every x- y- or z- value. You could then use these values for calculating the distance between atoms, or calculating the geometric similarity between two structures (using the RMSD formula for two structures)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ca0186ed", + "metadata": {}, + "outputs": [], + "source": [ + "atoms = []\n", + "H_coords = []\n", + "\n", + "with open(\"./practice_files/hydrogen_atoms.xyz\") as file:\n", + " contents = file.read()\n", + " lines = contents.split(\"\\n\")\n", + " for line in lines:\n", + " line = line.split()\n", + " if len(line) != 4:\n", + " continue\n", + " else:\n", + " atoms.append(line[0])\n", + " coord = [float(line[1]), float(line[2]), float(line[3])]\n", + " H_coords.append(coord)\n", + "\n", + "print(\"H coords: \", H_coords)" + ] }, { "cell_type": "markdown", - "id": "633a2836", + "id": "860ec445", "metadata": {}, "source": [ - "Example answer (skipping the header entirely):\n", - "```python\n", + "
Exercise: Extract data from periodic table \n", + "\n", + "Using the file 'periodic_table.csv', write code to write each element out in the following format:\n", + "\n", + " ``Element`` has the symbol ``symbol``. It has ``number`` protons and a mass of ``mass`` amu. \n", + "\n", + "For example: 'Hydrogen has the symbol He. It has 1 proton and a mass of 1.008 amu.'\n", + "\n", + "Hint: Use f-strings for more control over your variables and better readability.\n", + "\n", + "
\n", + "\n", + "
Click here to reveal an answer \n", + "\n", + "There are many ways to write this. The important thing is that our output does NOT include the headers as a phrase. This answer has done this by skipping the line starting with the string \"Name\". If you have achieved the same output a different way, that's fine! At the moment, it is more important to just solve the problem rather than look for the \"best\" way to solve it. \n", + "\n", + "```Python\n", + "with open(\"./practice_files/periodic_table.csv\") as file:\n", + " file = file.read()\n", + " lines = file.split(\"\\n\")\n", + " for line in lines:\n", + " line = line.split(\",\")\n", + " if line[0] == \"Name\":\n", + " continue\n", + " else:\n", + " print(f\"{line[0]} has the symbol {line[1]}. It has {line[2]} protons and a mass of {line[3]} amu.\")\n", + "```\n", + "\n", + "Think about how you could extract and use each column. If I wanted to just take the data for phosphorus, how would I achieve this? Could I use enumerate to find the right index? \n", + "\n", + "
\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "6a239074", + "metadata": {}, + "source": [ + "
Exercise: Using the CSV module \n", + "\n", + "Using the CSV module and the file 'periodic_table.csv', write code to write each element out in the following format:\n", + "\n", + " Element: ``element``, Symbol: ``symbol``, Atomic Number: ``number``, Atomic Mass: ``mass``. \n", + "\n", + "Hint: Use f-strings for more control over your variables and better readability.\n", + "\n", + "
\n", + "\n", + "\n", + "
Click here to reveal an answer \n", + "\n", + "Using the CSV module results in fewer lines of code.\n", + "\n", + "```Python\n", "import csv\n", "\n", "with open('elements.csv') as csvfile:\n", " csv_reader = csv.reader(csvfile)\n", " next(csv_reader) # Skip the header row\n", " for row in csv_reader:\n", - " print(f\"Name: {row[0]}, Symbol: {row[1]}, Atomic Number: {row[2]}\")\n", - "```" + " print(f\"Name: {row[0]}, Symbol: {row[1]}, Atomic Number: {row[2]}, Atomic Mass: {row[3]}\")\n", + "```\n", + "\n", + "Remember that although the CSV module can simplify things, it is still important to understand how to read and write code without it, as this will give you a better understanding of programming and Python coding.\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "760dcb9a", + "metadata": {}, + "source": [ + "## Practice" ] }, { @@ -188,8 +923,8 @@ "id": "c67c1875", "metadata": {}, "source": [ - "### Using the file path\n", - "Try to open a file that is not in the same directory as this notebook and print its contents." + "### Practice 1: Using the file path\n", + "With the file \"gas_const.txt\" in a different directory to your program, write a code to open and print its contents. Remember you can use ``..`` to go back a directory, and ``.`` to indicate the directory you are currently in." ] }, { @@ -197,15 +932,137 @@ "execution_count": null, "id": "de2abab4", "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The gas constant is: 8.314 J/K.mol\n" + ] + } + ], + "source": [ + "# Answer\n", + "# With the file forward a directory.\n", + "\n", + "with open(\"./practice_files/gas_const.txt\") as file:\n", + " contents = file.read()\n", + " print(contents)" + ] }, { "cell_type": "markdown", - "id": "3430cc73", + "id": "981c5dec", "metadata": {}, "source": [ - "TODO: Example answer" + "### Practice 2: Calculate internuclear distance\n", + "\n", + "Using the coordinates in the file \"hydrogen_atoms.xyz\", write a program to calculate the distance between the two nuclei using Pythagoras' Theorem. \n", + "\n", + "The van der Waals radius is the distance from the centre of a atom within which another atom will experience van der Waals interaction with that atom. For a diatomic, a distance between the two atom centres greater than twice the van der Waals radius will result in no van der Waals interaction. \n", + "\n", + "Given that the van der Waals distance for H is 1.2 Angstroms, add a conditional statement that will check if the two hydrogen atoms in the file will interact or not." + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "id": "fcf7d719", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3.2055211744738172\n", + "These two atoms will not inteact\n" + ] + } + ], + "source": [ + "# Answer\n", + "\n", + "def distance(atom_1, atom_2):\n", + " \"\"\"\n", + " Calculate distance in angstroms between two atoms of coordinates [x,y,z].\n", + " Using Pythagoras' formula for the difference between each coordinate. \n", + " \"\"\"\n", + " distance = (atom_1[0]-atom_2[0])**2 + (atom_1[1]-atom_2[1])**2 + (atom_1[2]-atom_2[2])**2\n", + " distance = distance ** (1/2)\n", + " return distance\n", + "\n", + "with open(\"./practice_files/hydrogen_atoms.xyz\") as file:\n", + " contents = file.read()\n", + " contents = contents.split(\"\\n\")\n", + " atom_coords = []\n", + " for line in contents:\n", + " line = line.split()\n", + " if len(line) < 4:\n", + " continue\n", + " else:\n", + " temp_coord = [float(line[1]), float(line[2]), float(line[3])]\n", + " atom_coords.append(temp_coord)\n", + "H1 = atom_coords[0]\n", + "H2 = atom_coords[1]\n", + "\n", + "print(distance(H1, H2))\n", + "if distance(H1,H2) < 1.2*2:\n", + " print(\"These two atoms will interact\")\n", + "else:\n", + " print(\"These two atoms will not inteact\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "1fdd99c8", + "metadata": {}, + "source": [ + "### Practice 3:\n", + "\n", + "Extract the data from \"spectrum.dat\" and identify which wavelength results in the maximum absorption. \n", + "\n", + " Hint: The built-in Python function ``max()`` can find the largest item of a list of numbers." + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "id": "96db5e87", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wavelengths: [240.0, 250.0, 260.0, 270.0, 280.0, 290.0, 300.0, 310.0]\n", + "Absorptions : [0.123, 0.132, 0.346, 0.563, 0.998, 0.377, 0.007, 0.002]\n", + "Max absorption is: 0.998\n", + "Wavelength of the max absorption is: 280.0 nm\n" + ] + } + ], + "source": [ + "# Answer\n", + "\n", + "wavelength = []\n", + "absorption = []\n", + "with open(\"./practice_files/spectrum.dat\") as file:\n", + " contents = file.read()\n", + " contents = contents.split(\"\\n\")\n", + " for line in contents:\n", + " line = line.split()\n", + " if line[0] == 'nm':\n", + " continue\n", + " else:\n", + " wavelength.append(float(line[0]))\n", + " absorption.append(float(line[1]))\n", + "print(\"Wavelengths: \" , wavelength)\n", + "print(\"Absorptions :\" , absorption)\n", + "\n", + "for i, j in zip(wavelength, absorption):\n", + " if j == max(absorption):\n", + " print(\"Max absorption is: \", j)\n", + " print(\"Wavelength of the max absorption is: \" , i, \"nm\")\n" ] }, { @@ -263,13 +1120,15 @@ "source": [ "## TODO\n", "- Discuss carriage returns and other special characters?\n", - "- Explain the distinction between text and binary files?" + "- Explain the distinction between text and binary files?\n", + "\n", + "- Loop through multiple files" ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "base", "language": "python", "name": "python3" }, @@ -283,7 +1142,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.12.3" } }, "nbformat": 4, diff --git a/lessons/loops_functions/conditional_statements.ipynb b/lessons/loops_functions/conditional_statements.ipynb index 0de9787..f2d807e 100644 --- a/lessons/loops_functions/conditional_statements.ipynb +++ b/lessons/loops_functions/conditional_statements.ipynb @@ -207,7 +207,7 @@ "\n", "If statements can be summarised by the following flowchart:\n", "\n", - "\"if-statements-flowchart\"\n", + "\"if-statements-flowchart\"\n", "\n", "You can see that if the first statement is True, the code completely skips the ``elif`` and ``else`` statements, which are not checked. \n" ] diff --git a/lessons/loops_functions/functions_and_scope.ipynb b/lessons/loops_functions/functions_and_scope.ipynb index 2e92c79..7159e33 100644 --- a/lessons/loops_functions/functions_and_scope.ipynb +++ b/lessons/loops_functions/functions_and_scope.ipynb @@ -1303,7 +1303,13 @@ "- Add practice using multiple arguments (under **kwargs)\n", "- Add practice with multiple arguments, multiple returns, and kwargs (under functions within functions)\n", "- Add a practice question on making a docstring for a given function\n", - "- Exercise 4 spotting the mistakes - change function to make it chemical." + "- Exercise 4 spotting the mistakes - change function to make it chemical.\n", + "- Separate some sections into a more advanced lesson (e.g. recursion, *args, **kwargs, positional/keyword-only)?\n", + "\n", + "More advanced lesson?\n", + "- Unpacking operator (as part of *args and **kwargs?)\n", + "- Returning different data structures (dictionaries, tuples, etc)\n", + "- Object and class functions?" ] } ], diff --git a/lessons/loops_functions/tut_import_mod.ipynb b/lessons/loops_functions/tut_import_mod.ipynb index f5f8f5a..5ec97c4 100644 --- a/lessons/loops_functions/tut_import_mod.ipynb +++ b/lessons/loops_functions/tut_import_mod.ipynb @@ -1,11 +1,32 @@ { "cells": [ + { + "cell_type": "markdown", + "id": "4808672f", + "metadata": {}, + "source": [ + "# Importing Modules" + ] + }, + { + "cell_type": "markdown", + "id": "3361b89a", + "metadata": {}, + "source": [ + "## Sections\n", + "\n", + "- Libraries and modules - putting them where your program can access them in files?\n", + "- Importing a single function from a library\n", + "- Importing a library\n", + "- Warning about using *\n", + "- Importing using an alias" + ] + }, { "cell_type": "markdown", "id": "1ef7b1b3", "metadata": {}, "source": [ - "# Importing Modules\n", "\n", "## Learning Outcomes\n", " How to import external libraries into your code\n", diff --git a/lessons/organising_code.md b/lessons/organising_code.md index f1aeca7..b8356c7 100644 --- a/lessons/organising_code.md +++ b/lessons/organising_code.md @@ -1,9 +1,10 @@ # Organising Code -These lessons describe how to write code efficiently by organising it into loops and functions. +These lessons describe how to write code efficiently by organising it into conditional statements, loops, functions, and importing modules. When we are talking about for loops more generally we use the following terms: - **Discrete variable**: a variable changes its value at every iteration of the loop (e.g. `temperature_C` in task 3). - **Iterator**: a variable containing multiple values, which can be used in a `for` loop (e.g. `temperature_measurements` in the last example). Lists are the most common kind of iterator in Python. + diff --git a/lessons/variables/mathematical-operators.ipynb b/lessons/variables/mathematical-operators.ipynb index 80709dc..fdda4fe 100644 --- a/lessons/variables/mathematical-operators.ipynb +++ b/lessons/variables/mathematical-operators.ipynb @@ -596,7 +596,7 @@ ">\n", "> math\n", ">\n", - ">side_b = \"7\" #cm\n", + ">side_b = \"7\" # cm\n", ">side_c = 5 cm\n", ">angle_A = 44 # degrees\n", ">\n", From fb6d1817fac7d3a3221b816cfb2c6fb06ad79137 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Wed, 30 Jul 2025 12:42:38 +0100 Subject: [PATCH 18/94] Edit the writing files lesson. Include more explanation, examples using for loops, zip(), range(), adding various structures to a file, appending, and added lots of exercises and practice questions --- lessons/files/data_record | 0 .../practice_files/energy_data_small.csv | 14 + lessons/files/writing_files.ipynb | 880 ++++++++++++++++-- 3 files changed, 824 insertions(+), 70 deletions(-) create mode 100644 lessons/files/data_record create mode 100644 lessons/files/practice_files/energy_data_small.csv diff --git a/lessons/files/data_record b/lessons/files/data_record new file mode 100644 index 0000000..e69de29 diff --git a/lessons/files/practice_files/energy_data_small.csv b/lessons/files/practice_files/energy_data_small.csv new file mode 100644 index 0000000..60e8191 --- /dev/null +++ b/lessons/files/practice_files/energy_data_small.csv @@ -0,0 +1,14 @@ +8.64E-19,1.84E-19,1.01E-19,1.82E-19,5.00E-19,,,,, +8.92E-19,2.19E-19,1.43E-19,2.11E-19,5.39E-19,,,,, +9.20E-19,2.54E-19,1.85E-19,2.40E-19,5.77E-19,,,,, +9.47E-19,2.89E-19,2.28E-19,2.69E-19,6.16E-19,,,,, +9.75E-19,3.24E-19,2.70E-19,2.99E-19,6.54E-19,,,,, +1.00E-18,3.58E-19,3.13E-19,3.28E-19,6.92E-19,,,,, +1.03E-18,3.93E-19,3.55E-19,3.57E-19,7.31E-19,,,,, +1.06E-18,4.28E-19,3.98E-19,3.86E-19,7.69E-19,,,,, +1.09E-18,4.63E-19,4.40E-19,4.15E-19,8.07E-19,,,,, +1.11E-18,4.98E-19,4.83E-19,4.44E-19,8.46E-19,,,,, +1.14E-18,5.33E-19,5.25E-19,4.74E-19,,,,,, +1.17E-18,,5.68E-19,5.03E-19,,,,,, +1.20E-18,,,,,,,,, +,,,,,,,,, diff --git a/lessons/files/writing_files.ipynb b/lessons/files/writing_files.ipynb index 1ce922f..106e4a1 100644 --- a/lessons/files/writing_files.ipynb +++ b/lessons/files/writing_files.ipynb @@ -6,7 +6,7 @@ "id": "R-GtgLtZw1hH" }, "source": [ - "# **Writing files**" + "# Writing files" ] }, { @@ -15,7 +15,7 @@ "id": "yjL3LTCFJXwl" }, "source": [ - "## **Learning Outcomes**\n", + "## Learning Outcomes\n", "\n", "The learning outcomes are as follows:\n", "\n", @@ -29,7 +29,7 @@ "id": "hTDYb2QRyNeb" }, "source": [ - "## **Pre-requisites**\n", + "## Prerequisites\n", "\n", "Variables
\n", "FOR loops
\n", @@ -38,17 +38,52 @@ "\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Writing files" + ] + }, { "cell_type": "markdown", "metadata": { "id": "xUUYv_pr1Sbt" }, "source": [ - "## **Writing files**\n", + "We have seen how Python can process chemical data and perform calculations. Once you have run your program, it is likely that you want to save your data to a file to use for later. This is called 'writing'. To write to a file, you change the mode from ``\"r\"`` to one of the following:\n", "\n", - "It is often necesary to be able to save chemical data, images etc. that have been generated as a result of data processing etc., which is known as 'writing'. You can choose either to write your data to:\n", - "(i) a new file, or\n", - "(ii) alternatively add (aka append) to an existing file.\n" + "- ``\"w\"`` is write mode. If the file doesn't already exist, it is created. If the file already exists, any data already in it is removed, and data is added as if it was an empty file.\n", + "- ``\"a\"`` is append mode open for writing. If the file doesn't already exist, it is created. Any data written to the file appears at the bottom of any data already in the file.\n", + "- Adding ``+`` to the end of the letter means the file is also opened for reading.\n", + "\n", + "The function ``.write()`` allows any content within the brackets to be written to the file.\n", + "\n", + "For example:\n", + "\n", + "```Python\n", + "file = open(\"new_file.txt\", \"w\")\n", + "file.write(\"content\" + str(variable_name) + \"content\")\n", + "file.write(f\"content {variable_name} \\n content\")\n", + "file.close()\n", + "```\n", + "\n", + "Things to note:\n", + "- Since the file \"new_file.txt\" does not already exist, the first line creates a file with this name.\n", + " - If the file already existed, this first line would wipe the data of that file ready to write over with the next lines. You need to be careful that you don't do this to files you want to keep!\n", + "- The function ``.write()`` allows content within the brackets to be written to the file.\n", + " - You can write using concatenation (as in line 2). Here, strings are combined into one long string using the '+' symbol. \n", + " - You can write using f-strings, as we have seen in the past. \n", + " - Putting two ``file.write()`` statements does not place your items on a new line. You need to add the special characer ``\"\\n\"`` to write a new line. Other special characters you might use are ``\"\\n\"``, the carriage return (moves the cursor to the beginning of the current line), and ``\"\\t\"``, which inserts a tab.\n", + "- You can iterate using 'for' to print a phrase over and over again.\n", + "- Once you are done, you close the file. Just like with reading, this is good practice." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Writing data to a new file" ] }, { @@ -57,41 +92,225 @@ "id": "BVX99iEZ3Rc2" }, "source": [ - "## **Writing data to a new file**\n", + "If the file you want to write to doesn't exist, Python will create it.\n", + "\n", + "In the below example, we want to write the gas constant to a file called \"gas_const.txt\".\n", + "\n", + "```Python\n", + "file = open('gas_const.txt', 'w')\n", + "\n", + "R = 8.314\n", + "file.write(\"The gas constant is: \" + str(R) + \" J/K.mol\")\n", + "\n", + "file.close()\n", + "```\n", "\n", - "In Python, in order to write data to a new file, you must first create a file, ensuring the the file is writable.\n", + "The text inside the file now reads:\n", "\n", - "In order to create a file, you can use the command 'open'. Following this (in ( ) brackets) you need to supply the name of the file that you want to create, followed by a comma and then indicate that you wish to *write* to the new file (as opposed to e.g. read) by using the tag 'w'.\n", + " The gas constant is: 8.314 J/K.mol \n", "\n", - "A simple example of this is given below:" + "Try it for yourself." ] }, { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "JRvmRpz13Q0o" - }, - "outputs": [], + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Writing data to an existing file" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, "source": [ + "If the file you want to write to already exists, Python will erase the contents of the file (this is called truncation) and write the new contents in that space.\n", + "\n", + "Run the above code to create the file \"gas_const.txt\", then run the code below.\n", + "\n", + "```Python\n", "file = open('gas_const.txt', 'w')\n", "\n", - "R = 8.314\n", - "file.write(\"The gas constant is: \" + str(R) + \" J/K.mol\")\n", + "R = 8.206\n", + "file.write(\"The gas constant is: \" + str(R) + \" m3.atm/K.mol\")\n", "\n", - "file.close()" + "file.close()\n", + "```\n", + "\n", + "You will see that the previous value of R is no longer in the file. This is why we need to be careful with writing files, we don't want to lose any important data!" ] }, { "cell_type": "markdown", - "metadata": { - "id": "KI8esPi893AW" - }, + "metadata": {}, + "source": [ + "### Writing to a file using ``with`` statements" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Just like when we are reading files, we can use a ``with`` statement to write to files. Just like with reading, the file will automatically close once the ``with`` statement is no longer respected. \n", + "\n", + "```Python\n", + "with open(\"gas_const.txt\", \"w\") as file:\n", + " R = 1.987\n", + " file.write(\"The gas constant is: \" + str(R) + \" cal/K.mol\")\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Exercise: Writing files \n", + "\n", + "Using a ``with`` statement and an f-string, create a code to write the following statement to a new text file using the given variables below:\n", + "\n", + ">Lanthanum, with the elemental symbol La, has 57 protons and a mass of 138.91 amu. \n", + ">\n", + ">Lanthanum oxide is used in making some optical glasses.\n", + "\n", + "Use these variables:\n", + "\n", + "```\n", + "element = \"Lanthanum\"\n", + "symbol = \"La\"\n", + "number = 57\n", + "mass = 138.91\n", + "```\n", + "\n", + "
\n", + "\n", + "
Click to reveal answer \n", + "\n", + "```Python\n", + "element = \"Lanthanum\"\n", + "symbol = \"La\"\n", + "number = 57\n", + "mass = 138.91\n", + "\n", + "with open(\"lanth_facts.txt\", \"w\") as file:\n", + " file.write(f\"{element}, with the elemental symbol {symbol}, has {number} protons and a mass of {mass} amu. \\nLanthanum oxide is used in making some optical glasses.\")\n", + "```\n", + "\n", + "Don't forget the ``\\n`` character to create a new line!\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Iteration to write to a file" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Writing one statement at a time is a very slow to write a file. Instead, we could use ``for`` loops to write lots of lines quickly. \n", + "\n", + "In the simplest case we can write out the same thing over and over. The code below prints the same phrase on 100 new lines (using the special character ``\"\\n\"`` - try with and without it and see what happens).\n", + "\n", + "```Python\n", + "with open(\"gas_const.txt\", \"w\") as file:\n", + " R = 8.314\n", + " for i in range(100):\n", + " file.write(f\"The gas constant is: {R} J/K.mol \\n\")\n", + "```\n", + "\n", + "But more crucially, we can iterate through a list and store the values. The code below will create a file \"spectrum.txt\" and write each absorbance value on a new line. \n", + "\n", + "```Python\n", + "absorbance = [0.123, 0.132, 0.346, 0.563, 0.998, 0.377, 0.021]\n", + "\n", + "with open(\"spectrum.txt\", \"w\") as file:\n", + " for value in absorbance:\n", + " file.write(str(value) + \"\\n\")\n", + "```\n", + "\n", + "Note! When we read files, we read everything (including numbers) as a string. When we write files, we need to remember to convert them back to a string, or the concatenation will not work!\n", + "\n", + "This is the simplest example of adding structure to a file, by writing each new value on a new line. But this isn't particularly useful. If we could write multiple columns, or add headers, this would become much more flexible." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Exercise: Write data to a file \n", + "\n", + "For the following list of random background noise, write each item to a text file on a new line. Include a header that describes what the data is.\n", + "\n", + "background = [1.48, 1.23, 1.39, 1.46, 1.31, 1.55, 1.25, 1.36, 1.44, 1.29, 1.58, 1.34, 1.41, 1.53, 1.27, 1.38, 1.52, 1.22, 1.33, 1.49, 1.24, 1.56, 1.26, 1.45, 1.51, 1.28, 1.35, 1.57, 1.43, 1.21]\n", + "\n", + "
\n", + "\n", + "
Click here to view answer\n", + "\n", + "```Python\n", + "background = [1.48, 1.23, 1.39, 1.46, 1.31, 1.55, 1.25, 1.36, 1.44, 1.29, 1.58, 1.34, 1.41, 1.53, 1.27, 1.38, 1.52, 1.22, 1.33, 1.49, 1.24, 1.56, 1.26, 1.45, 1.51, 1.28, 1.35, 1.57, 1.43, 1.21]\n", + "\n", + "with open(\"data_record.txt\", \"w\") as file:\n", + " file.write(\"random background measurements\\n\")\n", + " for i in background:\n", + " file.write(str(i) + \"\\n\")\n", + "```\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, "source": [ - "We have defined and assigned a value to the variable, R, that is to be written to the file. R will be written to the file as a string. We have constructed the string \"The gas constant is: 8.314 J/K.mol\" which is then written to the file using the file.write command. Lastly the file is closed.\n", + "
Exercise: Debugging code \n", + "\n", + "Below is a piece of code with numerous errors. Identify as many as possible. Try running the code and look at the error message to more quickly figure out what is wrong. When you are writing a code project, you will encounter lots of error messages, so it is good to get used to recognising them now.\n", + "\n", + ">```Python\n", + ">data_points = 1.2, 5.6, 3.4, 0.5, 4.1, 3.2\n", + ">\n", + ">file = open(data_record)\n", + ">\n", + ">write(\"record of data points\")\n", + ">for point in data_points\n", + "> file.write(point + \"\\n\")\n", + "\n", + "
\n", + "\n", + "
Click here to view answer\n", "\n", - "Google Colab: This simple file has been saved in a temporary storage location. You can have a look at the file that's just been written by selecting the File icon on the left-hand side of the Colab page. Within the 'Content' file, you should be able to see the file. Click on the three vertical dots on the right-hand side of the file, download and open.\n", - "**NOTICE FOR EDITORS: we appreciate that we've written this for Google Colab - so we will need to re-write this section**" + "```Python\n", + "data_points = [1.2, 5.6, 3.4, 0.5, 4.1, 3.2]\n", + "\n", + "file = open(\"data_record.txt\", \"w\")\n", + "\n", + "file.write(\"record of data points\\n\")\n", + "for point in data_points:\n", + " file.write(str(point) + \"\\n\")\n", + "```\n", + "\n", + "Here were the errors:\n", + "- ``data_points`` should is missing square brackets to make it a list. \n", + "- When we open the file, the file name should be in speech marks ``\"\"``.\n", + "- There should be a file extension on the file name, e.g. ``\"data_record.txt\"``. It is not so important when creating simple files, but you will find your files get confusing if you don't start doing this, especially if you have two files with the same name but different extensions!\n", + "- The function ``open()`` should take a second argument. As we want to write to this file, this will be ``\"w\"``.\n", + "- When writing to the file, the correct syntax is ``file.write()``, not just ``write()``. We need to specify which file we are writing to. This becomes important if you have multiple files open.\n", + "- There should be a ``\"\\n\"`` at the end of the header line, otherwise the first data point will also appear on the header line.\n", + "- There should always be a colon ``:`` at the end of the ``for`` line. \n", + "- When writing an integer or float to a file using concatenation (the ``+`` sign), it must be converted to a string using ``str()``. In this case, it should read ``file.write(str(point) + \"\\n\")``. \n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Adding structure to a file" ] }, { @@ -100,31 +319,171 @@ "id": "JQCkCjKt9UI7" }, "source": [ - "The way in which data is written to a file depends on the type of data itself. So... FINISH" + "The way in which data is written to a file depends on the type of data itself. We could format it with commas separating values (CSV), with tabs separating values, spaces, or anything else we want.\n", + "\n", + "We can also add headers to describe the data. When we do this, we write the headers before the loops." ] }, { "cell_type": "markdown", - "metadata": { - "id": "uYsrtUqF_k_s" - }, + "metadata": {}, "source": [ - "## **Writing a simple structured file**\n", + "### CSV structure" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example, we take two lines of data and write them to a CSV file. We use a ``for`` loop with the ``range()`` function, and then write to the file the value at the index i which we are iterating through using square brackets. \n", "\n", - "XXXX\n", + "When you are doing this, remember ``\\n`` to start a new line!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "energies_1 = [1.01e-19, 1.43e-19, 1.85e-19, 2.28e-19, 2.7e-19, 3.13e-19, 3.55e-19, 3.98e-19, 4.4e-19, 4.83e-19, 5.25e-19, 5.68e-19]\n", + "energies_2 = [1.82e-19, 2.11e-19, 2.4e-19, 2.69e-19, 2.99e-19, 3.28e-19, 3.57e-19, 3.86e-19, 4.15e-19, 4.44e-19, 4.74e-19, 5.03e-19]\n", "\n", - "In the example below, the ... FINISH" + "with open(\"data_record.csv\", \"w\") as file:\n", + " file.write(f\"run1,run2\\n\")\n", + " for i in range(len(energies_1)):\n", + " file.write(f\"{energies_1[i]},{energies_2[i]}\\n\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Using ``zip()``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We don#t have to use the range() function. In the below example, the two lists are being associated item-wise using the function ``zip()``. " ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "id": "VPqkYrd1zla5" - }, + "metadata": {}, + "outputs": [], + "source": [ + "energies_1 = [1.01e-19, 1.43e-19, 1.85e-19, 2.28e-19, 2.7e-19, 3.13e-19, 3.55e-19, 3.98e-19, 4.4e-19, 4.83e-19, 5.25e-19, 5.68e-19]\n", + "energies_2 = [1.82e-19, 2.11e-19, 2.4e-19, 2.69e-19, 2.99e-19, 3.28e-19, 3.57e-19, 3.86e-19, 4.15e-19, 4.44e-19, 4.74e-19, 5.03e-19]\n", + "\n", + "with open(\"data_record.csv\", \"w\") as file:\n", + " file.write(\"run1,run2\\n\")\n", + " for i, j in zip(energies_1,energies_2):\n", + " file.write(f\"{i},{j}\\n\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Using ``zip()`` and the unpacking operator ``*``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we had lots and lots of lists that we want to write to the document, both ``range()`` and ``zip()`` seem to require lots of repetitive naming of lists. However, there are ways around this. \n", + "\n", + "When we first learned about ``zip()``, we might have mentioned that if you use only 1 temporary variable for multiple lists (e.g. ``for i in zip(list1,list2,list3):``), the items in the list are still associated with each other, but as a tuple, in this case witht he variable name ``i``. Tuples are very similar to lists, with the difference that they are immutable, their contents cannot be changed once it has been created. Once you have the tuple, you can iterate through it, writing each item in the tuple to your document. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "energies_1 = [1.01e-19, 1.43e-19, 1.85e-19, 2.28e-19, 2.7e-19, 3.13e-19, 3.55e-19, 3.98e-19, 4.4e-19, 4.83e-19, 5.25e-19, 5.68e-19]\n", + "energies_2 = [1.82e-19, 2.11e-19, 2.4e-19, 2.69e-19, 2.99e-19, 3.28e-19, 3.57e-19, 3.86e-19, 4.15e-19, 4.44e-19, 4.74e-19, 5.03e-19]\n", + "energies_3 = [5.17e-19, 5.45e-19, 5.74e-19, 6.02e-19, 6.30e-19, 6.58e-19, 6.86e-19, 7.14e-19, 7.43e-19, 7.71e-19, 7.99e-19, 8.27e-19]\n", + "\n", + "with open(\"data_record.csv\", \"w\") as file:\n", + " file.write(\"run1,run2\\n\")\n", + " for tuple in zip(energies_1,energies_2,energies_3):\n", + " print(tuple)\n", + " for item in tuple:\n", + " file.write(f\"{item},\")\n", + " file.write(\"\\n\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "At the moment, this isn't particularly quicker than range(), or the first examples using zip(). But what if you had 100 lists of data you want to write to a file? You don't want to write ``zip(energies_1,energies_2,energies_3,...)`` all the way to 100! This is where a powerful tool called the unpacking operator ``*`` comes in handy. \n", + "\n", + "The unpacking operator literally 'unpacks' objects from inside other objects. For example, a list ``list_0 = [1,2,3,4]`` which has been acted on by the unpacking operator ``*list_0``, has its contents unpacked and turned into individual objects, in this case a group of integers ``1,2,3,4``. A nested list ``n_list = [[1,2],[5,6],[8,9]]`` when unpacked will just become three lists: ``[1,2],[5,6],[8,9]``.\n", + "\n", + "In the context of tuples and zip(), this means we could have a list containing our lists of data, e.g. ``all_energies = [energies_1, energies_2, energies_3]``, and inside our zip() function unpack it into separate lists like so: ``for tuple in zip(*all_energies):``\n", + "\n", + "An example is below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, "outputs": [], "source": [ - "file = open('spectrum.dat', 'w')\n", + "energies_1 = [1.01e-19, 1.43e-19, 1.85e-19, 2.28e-19, 2.7e-19, 3.13e-19, 3.55e-19, 3.98e-19, 4.4e-19, 4.83e-19, 5.25e-19, 5.68e-19]\n", + "energies_2 = [1.82e-19, 2.11e-19, 2.4e-19, 2.69e-19, 2.99e-19, 3.28e-19, 3.57e-19, 3.86e-19, 4.15e-19, 4.44e-19, 4.74e-19, 5.03e-19]\n", + "energies_3 = [5.17e-19, 5.45e-19, 5.74e-19, 6.02e-19, 6.30e-19, 6.58e-19, 6.86e-19, 7.14e-19, 7.43e-19, 7.71e-19, 7.99e-19, 8.27e-19]\n", + "main_list = [energies_1,energies_2,energies_3]\n", + "\n", + "with open(\"data_record.csv\", \"w\") as file:\n", + " file.write(\"run1,run2\\n\")\n", + " for energy_tuple in zip(*main_list):\n", + " print(energy_tuple)\n", + " for item in energy_tuple:\n", + " file.write(f\"{item},\")\n", + " file.write(\"\\n\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this case, we have still had to define the list manually, which is annoying. However, if you are reading data from a file, you can choose to store it in any way you want - you can store it straight into a nested list! Go back and look at the reading files lesson for examples where we pull data straight into a nested list!\n", + "\n", + "Another common instance of using the unpacking operator is when you want to feed many items into an arbitrary argument of a function!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Using tab" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Just like with commas as shown above, you can separate items using tab. The special character for this is ``\\t``.\n", + "\n", + "In this example, we opened and closed the file manually. We have also used ``range()``. Run the code and have a look at the file ``spectrum.txt``. Notice that on either side of the tab there is an additional space. This is because there is a space on either side of the special symbol ``\\t``. If you want a specific format, you need to watch out when writing to your file!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "file = open('spectrum.txt', 'w')\n", "\n", "wavelength = [240, 250, 260, 270, 280, 290]\n", "absorbance = [0.123, 0.132, 0.346, 0.563, 0.998, 0.377, 0.021]\n", @@ -137,11 +496,117 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "YBO7aNknGp7b" - }, + "metadata": {}, "source": [ - "In the above example, the 'f' in the file.write commands... FINISH" + "### Using other strings as delimiters" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So far, we have used pretty standard delimiters that make sense to us intuitively, such as commas, spaces, tabs, or semicolons. But this does not have to be the case. You can use anything as a delimiter. You could use a certain word, a combination of letters and numbers, or other symbols. In the example below the string \"&#&#\" has been used as a delimiter. Although it looks strange, you could still read this file just as easily as using a tab, space, or comma, by writing ``.split(\"&#&#\")``." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "file = open('spectrum.txt', 'w')\n", + "\n", + "wavelength = [240, 250, 260, 270, 280, 290]\n", + "absorbance = [0.123, 0.132, 0.346, 0.563, 0.998, 0.377, 0.021]\n", + "file.write(f\"nm &#&# abs \\n\")\n", + "for i in range(len(wavelength)):\n", + " file.write(f\"{wavelength[i]} &#&# {absorbance[i]}\\n\")\n", + "\n", + "file.close()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Exercise: Write multiple lists to a file using tab as a delimiter.\n", + "\n", + "Using a ``with`` statement and f strings, write the lists given below to a text file, using tab as a delimiter. On each line of the text file, write an atom and its associated mass, separated using tab as a delimiter. Include a heading for each column. \n", + "\n", + "\n", + "atoms = ['C', 'O', 'H', 'N', 'Cl', 'Na', 'Fe', 'P', 'S', 'K', 'Mg', 'Ca', 'Zn', 'F']
\n", + "masses = [12.01, 16.00, 1.01, 14.01, 35.45, 22.99, 55.85, 30.97, 32.07, 39.10, 24.31, 40.08, 65.38, 18.99]
\n", + "\n", + "
\n", + "\n", + "
Click here to view answer\n", + "\n", + "```Python\n", + "atoms = ['C', 'O', 'H', 'N', 'Cl', 'Na', 'Fe', 'P', 'S', 'K', 'Mg', 'Ca', 'Zn', 'F']\n", + "masses = [12.01, 16.00, 1.01, 14.01, 35.45, 22.99, 55.85, 30.97, 32.07, 39.10, 24.31, 40.08, 65.38, 18.99]\n", + "\n", + "with open(\"data_record.txt\", \"w\") as file:\n", + " file.write(\"atoms\\tmasses\\n\")\n", + " for index in range(len(atoms)):\n", + " file.write(f\"{atoms[index]}\\t{masses[index]}\\n\")\n", + "```\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Exercise: Read, transform, write\n", + "\n", + "You have 3 columns of random background data in the file \"measurements_2.csv\". After calibrating your instrument, you have realised that every data point needs to be increased by 4.35. Write a piece of code that reads the file, adds 4.35 to every item, and writes the new data into a new CSV file. Use ``zip()`` and the unpacking operator.\n", + "\n", + "Hint: When tackling an open-ended question like this, break the problem into chunks and do not get overwhelmed by the overall problem. Start with reading the file and storing the data, remembering that if we want to use the unpacking operator later on, we want to store the data in a nested list. \n", + "\n", + "Once you have written your code, think about how you might want to adjust this code later to take many more (even hundreds or thousands) of columns of data.\n", + "\n", + "
\n", + "\n", + "
Click here to view answer\n", + "\n", + "This is one way of solving this problem. If you have used another way and it works, that's great!\n", + "\n", + "```Python\n", + "# This will be a nested list of each column\n", + "# data = [[data from column 0], [data from column 1], [data from column 2]]\n", + "data = []\n", + "with open(\"measurements_2.csv\") as file:\n", + " file = file.read()\n", + " contents = file.split()\n", + " # We have 3 columns in the CSV, so we will extract each column using range(3)\n", + " for i in range(3):\n", + " # The temporary list stores a column, and gets reset to empty when moving to the next column\n", + " temp_list = []\n", + " for line in contents:\n", + " line = line.split(\",\")\n", + " temp_list.append(float(line[i]))\n", + " # Once the entire column has been recorded in temp_list, the whole list is appended to the list data\n", + " data.append(temp_list)\n", + "\n", + "# Take each value and add 4\n", + "for i in range(len(data[1])):\n", + " for column in data:\n", + " column[i] = column[i] + 4.35\n", + "\n", + "# Write the new values to a new CSV file\n", + "# Using zip() and the unpacking operator\n", + "with open(\"data_record.csv\", \"w\") as file:\n", + " file.write(\"column0,column1,column2\\n\")\n", + " for temp_tuple in zip(*data):\n", + " for item in temp_tuple:\n", + " file.write(str(item) + \",\")\n", + " file.write(\"\\n\")\n", + "```\n", + "\n", + "If I then wanted to do the same thing, but on a file that has 80 columns of data, all I need to change is the line ``for i in range(3):`` in the first section, and replace ``3`` with ``80``. Check it works for yourself by changing it to ``2``. \n", + "\n", + "
" ] }, { @@ -150,11 +615,18 @@ "id": "RscVg7DyHKVW" }, "source": [ - "## **Appending to an existing file**\n", + "## Appending to an existing file" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In all of the examples above. When we run the code over and over again the data that was there previously is truncated (cut off/deleted), and replaced with the current program. \n", "\n", - "You can also write data to an existsing file. In the example below, we will append some more data to the spectrum data created above.\n", + "Append mode, ``\"a\"``, is a bit different. It can still create a new file if it doesn't already exist, however for exosting files, it will simply append to the bottom of the file. \n", "\n", - "... FINISH" + "Run the code below a few times and see how data appears at the bottom of the file." ] }, { @@ -165,7 +637,7 @@ }, "outputs": [], "source": [ - "file = open('spectrum.dat', 'a')\n", + "file = open('spectrum.txt', 'a')\n", "\n", "wavelength = [300, 310]\n", "absorbance = [0.007, 0.002]\n", @@ -179,35 +651,295 @@ { "cell_type": "markdown", "metadata": { - "id": "Kp8OJXO1_oMr" + "id": "aVs6rJBuJLiw" }, "source": [ - "## **User-defined save paths**\n", - "\n", - "Although a library is required for a file dialogue pop-up, ... FINISH ALSO NEED TO CREATE CODE FOR THIS." + "## Practice" ] }, { "cell_type": "markdown", - "metadata": { - "id": "aVs6rJBuJLiw" - }, + "metadata": {}, "source": [ - "## **Exercises**\n", - "\n", - "**Exercise 1**
\n", - "Take the day of the month in which you were born (e.g. this would be 10 is you were born on the 10th April), and create a file named 'element.txt' and write the name of the element corresponding to the atomic number matching this.

\n", - "\n", - "**Exercise 2**
\n", - "Determine the group that the element identified in Exercise 1 below to and append this information to your file.

\n", - "\n", - "**Exercise 3:**
\n", - "Three moles of an ideal gas are ontained within a frictionless piston at 298.15 K. Use Python to calculate the volume of the gas at the following four different pressures:
\n", + "### Practice 1.1\n", + "Three moles of an ideal gas are contained within a frictionless piston at 298.15 K. Use Python to calculate the volume of the gas at the following four different pressures:
\n", "1.00 kPa
\n", "10.00 kPa
\n", "50.00 kPa
\n", "100.00 kPa
\n", - "and output the results in a file, formatted as two columns of numbers (to two d.p.), with the first column being pressure and the second being volume." + "\n", + "Output the results in a file, formatted as two columns of numbers (to two d.p.), with the first column being pressure and the second being volume. Choose your own delimiter. \n", + "\n", + "Ideal gas equation:\n", + "\n", + "$V = \\frac{nRT}{p}$\n", + "\n", + "
\n", + "\n", + "
Click to view answer\n", + "\n", + "```Python\n", + "pressure_kPa = [1.00, 10.00, 50.00, 100.00] # kPa\n", + "\n", + "# Convert to SI units, Pa\n", + "pressure_Pa = [] # Pa\n", + "for i in pressure_kPa:\n", + " press = i * 1000\n", + " pressure_Pa.append(press)\n", + "print(pressure_Pa)\n", + "\n", + "# Calculate the volumes\n", + "volume = []\n", + "for p in pressure_Pa:\n", + " vol = (3*8.314*298.15)/p\n", + " volume.append(vol)\n", + "print(volume)\n", + "\n", + "# Write to a new file\n", + "with open(\"data_record.txt\", \"w\") as file:\n", + " file.write(\"Pressure / kPa \\t Volume / m^3 \\n\")\n", + " for p, V in zip(pressure_kPa, volume):\n", + " file.write(f\"{p} \\t {V:.2f} \\n\")\n", + "```\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Practice 1.2\n", + "\n", + "Add an additional four values of pressure and the associated volume. Copy and adapt your above script to append the following values of pressure and associated volume to the end of your file.\n", + "\n", + "200.00 kPa
\n", + "500.00 kPa
\n", + "1000.00 kPa
\n", + "5000.00 kPa
\n", + "\n", + "
Click here to view answer\n", + "\n", + "This code is very similar to the one above. The only changes are changing ``\"w\"`` to ``\"a\"`` when opening our file, and removing the line inserting a header.\n", + "\n", + "```Python\n", + "pressure_kPa = [200.00, 500.00, 1000.00, 5000.00] # kPa\n", + "\n", + "# Convert to SI units, Pa\n", + "pressure_Pa = [] # Pa\n", + "for i in pressure_kPa:\n", + " press = i * 1000\n", + " pressure_Pa.append(press)\n", + "print(pressure_Pa)\n", + "\n", + "# Calculate the volumes\n", + "volume = []\n", + "for p in pressure_Pa:\n", + " vol = (3*8.314*298.15)/p\n", + " volume.append(vol)\n", + "print(volume)\n", + "\n", + "# Write to a new file\n", + "with open(\"data_record.txt\", \"a\") as file:\n", + " for p, V in zip(pressure_kPa, volume):\n", + " file.write(f\"{p} \\t {V:.2f} \\n\")\n", + "```\n", + "\n", + "However, if we wanted to use both pieces of chunks of code in the same program and over and over again, there are a few changes we could make.\n", + "- Watch out for repeated variable names. This answer and the answer from above share lots of variable names. If placed in the same program, this could get confusing quickly. Another way to combat this is using functions, remembering our discussion of local and global variables.\n", + "- Use functions\n", + " - To avoid writing the same code twice, we could write a function to calculate the volume from SI units. We could also write a function to convert from kPa to Pa, especially if we know that a lot of our data will be given in kPa. \n", + " - We could write a function that writes a new file, so we can call it whenever we want a new file. \n", + " - We could also write a function that just appends to the named file. \n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Practice 2\n", + "\n", + "We have the coordinates of two hydrogen atoms in an XYZ file called \"hydrogen_atoms.xy\". Translate these coordinates +10 Angstroms in the x direction, -5 Angstroms in the y direction, and +1 Angstrom in the z direction. Then, create a new XYZ file to store the translated coordinates. Make sure it is stored in an XYZ format!\n", + "\n", + "
Click here to view an answer\n", + "\n", + "```Python\n", + "atoms = []\n", + "x_coords = []\n", + "y_coords = []\n", + "z_coords = []\n", + "\n", + "# Open XYZ file and extract the atoms and x, y, and z coordinates\n", + "with open(\"hydrogen_atoms.xyz\") as file:\n", + " file = file.read()\n", + " contents = file.split(\"\\n\")\n", + " for line in contents:\n", + " line = line.split()\n", + " if len(line) < 4:\n", + " continue\n", + " else:\n", + " atoms.append(line[0])\n", + " x_coords.append(float(line[1]))\n", + " y_coords.append(float(line[2]))\n", + " z_coords.append(float(line[3]))\n", + "\n", + "# Translate in space\n", + "for i in range(len(atoms)):\n", + " x_coords[i] += 10\n", + " y_coords[i] -= 5\n", + " z_coords[i] += 1\n", + "\n", + "# Write to an XYZ file\n", + "with open(\"data_record.xyz\", \"w\") as file:\n", + " file.write(\"2\\n\")\n", + " file.write(\"two hydrogen atoms translated in space\\n\")\n", + " for a, x, y, z in zip(atoms, x_coords, y_coords, z_coords):\n", + " file.write(f\"{a}\\t{x:.3f}\\t{y:.3f}\\t{z:.3f}\\n\")\n", + "```\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Extension Practice (classroom exercise? Mini-project? 'Approaching problems' section?)\n", + "\n", + "You have many columns of data from the lab in a CSV file, all in Joules. You want to be able to take this data, convert all values to eV, and write it all back into a CSV file. You want to write this code such that it works for an arbitrary number of columns in our initial CSV file, and can write an arbitrary number of columns (potentially of different lengths) to our CSV file.\n", + "\n", + "Let's break down the steps together:\n", + "1. Extract the data from the file by reading. \n", + " - What do we need to consider in this step?\n", + " - What inputs will we take?\n", + " - What will our output(s) be?\n", + " - What problems might we face?\n", + " - How have we done this in the past?\n", + "2. Convert all the data from J to eV:\n", + " - What format is our data in?\n", + " - What format will we output it as?\n", + " - What problems might we face?\n", + " - How have we done this in the past?\n", + "3. Write all our lists of data into a new CSV file:\n", + " - What do we need to consider?\n", + " - What inputs will we take?\n", + " - What will our output be?\n", + " - What problems might we face?\n", + " - How have we done something similar in the past?\n", + "\n", + "For step 1, we have written code in the past to allow us to extract columns of data. We can repurpose this for this code.\n", + "\n", + "For step 2, we have written code in the past to convert items in a list from J to eV. We can repurpose this to work for many lists.\n", + "\n", + "For step 3, we have written code to append lists to a CSV file before. How can we repurpose this to take lists of different lengths? How can we repurpose this to take an arbitrary number of lists? (Hint: go to the functions lesson and check out arbitrary arguments)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Take data, transform it, write to a CSV file\n", + "\n", + "# Read a certain number of columns and return the data in a nested list\n", + "def read_file(data_file, *columns):\n", + " \"\"\"\n", + " Read a file and output any of the columns\n", + " \"\"\"\n", + " column_index = []\n", + " data = []\n", + " \n", + " for column in columns:\n", + " column_index.append(column)\n", + "\n", + " with open(data_file) as file:\n", + " file = file.read()\n", + " contents = file.split()\n", + " for i in column_index:\n", + " temp_list = []\n", + " for line in contents:\n", + " line = line.split(\",\")\n", + " if line[i] == '':\n", + " break\n", + " else:\n", + " temp_list.append(float(line[i]))\n", + " data.append(temp_list)\n", + " return data\n", + "\n", + "def J_to_eV(*data):\n", + " \"\"\" \n", + " Convert list values in J to eV.\n", + "\n", + " Parameters:\n", + " *data : LIST\n", + " An arbitrary number of lists\n", + " Returns:\n", + " final_list : LIST\n", + " A nested list of all the input lists\n", + " Now converted to eV\n", + " \"\"\"\n", + " final_list = []\n", + " for measurements in data:\n", + " temp_list = []\n", + " for value in measurements:\n", + " eV_val = value / 1.602e-19\n", + " temp_list.append(eV_val)\n", + " final_list.append(temp_list)\n", + " return final_list\n", + "\n", + "def CSV_data_write(file_name, *lists):\n", + " \"\"\"\n", + " Create a CSV file of data with an arbitrary number of columns of arbitrary length.\n", + "\n", + " Parameters:\n", + " file_name : STR\n", + " The name of the file we want to create or append to.\n", + " *lists : LIST\n", + " An arbitrary number of lists of data or arbitrary length. \n", + " Each list of data will become a column in the CSV file\n", + " \"\"\"\n", + " longest = []\n", + " final_lists = []\n", + " # Identifies the longest data list\n", + " for i in lists:\n", + " if len(i) > len(longest):\n", + " longest = i\n", + " else:\n", + " continue\n", + " # For all lists shorter than the longest, appends \"\" to make them all equal length\n", + " # Nests all equal length lists in variable final_lists\n", + " for j in lists:\n", + " for k in range(len(longest)-len(j)):\n", + " j.append(\"\")\n", + " final_lists.append(j)\n", + "\n", + " file = open(file_name, \"a+\")\n", + " # Unpacks and iterates through each of the lists in final_lists\n", + " # Storing each value item-wise in a tuple\n", + " # For each tuple, appends data to file in CSV format\n", + " for tuple in zip(*final_lists):\n", + " for item in tuple:\n", + " file.write(f\"{item},\")\n", + " file.write(\"\\n\")\n", + " file.close()\n", + " return\n", + "\n", + "# List of the 100 columns I want to extract from\n", + "columns = []\n", + "for i in range(100):\n", + " columns.append(i)\n", + "\n", + "# take the data from the CSV file and store as a list\n", + "J_data = read_file(\"energy_data_large.csv\", *columns)\n", + "\n", + "# Convert to eV\n", + "eV_data = J_to_eV(*J_data)\n", + "\n", + "# Store back into a CSV file\n", + "CSV_data_write(\"data_record.csv\", *eV_data)" ] }, { @@ -216,17 +948,25 @@ "id": "tOX5HbrsJR02" }, "source": [ - "## **Learning Outcomes**\n", + "## Learning Outcomes\n", "\n", "FINISH" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], - "source": [] + "source": [ + "## Summary" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## TODO\n", + "- User defined save paths?" + ] } ], "metadata": { @@ -235,7 +975,7 @@ "provenance": [] }, "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "base", "language": "python", "name": "python3" }, @@ -249,7 +989,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.12.3" } }, "nbformat": 4, From 6b15c84c5623bfb95c3a949104705f4e9d8bccb5 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Fri, 1 Aug 2025 11:47:20 +0100 Subject: [PATCH 19/94] formatted the mathematical operators lesson --- lessons/files/data_record.csv | 13 + lessons/files/spectrum.txt | 9 + lessons/files/writing_files.ipynb | 37 +- lessons/variables/Comparisons.ipynb | 80 +- .../variables/mathematical-operators.ipynb | 778 ++++++++++++------ 5 files changed, 641 insertions(+), 276 deletions(-) create mode 100644 lessons/files/data_record.csv create mode 100644 lessons/files/spectrum.txt diff --git a/lessons/files/data_record.csv b/lessons/files/data_record.csv new file mode 100644 index 0000000..d7e1407 --- /dev/null +++ b/lessons/files/data_record.csv @@ -0,0 +1,13 @@ +run1,run2 +1.01e-19,1.82e-19,5.17e-19, +1.43e-19,2.11e-19,5.45e-19, +1.85e-19,2.4e-19,5.74e-19, +2.28e-19,2.69e-19,6.02e-19, +2.7e-19,2.99e-19,6.3e-19, +3.13e-19,3.28e-19,6.58e-19, +3.55e-19,3.57e-19,6.86e-19, +3.98e-19,3.86e-19,7.14e-19, +4.4e-19,4.15e-19,7.43e-19, +4.83e-19,4.44e-19,7.71e-19, +5.25e-19,4.74e-19,7.99e-19, +5.68e-19,5.03e-19,8.27e-19, diff --git a/lessons/files/spectrum.txt b/lessons/files/spectrum.txt new file mode 100644 index 0000000..484a67b --- /dev/null +++ b/lessons/files/spectrum.txt @@ -0,0 +1,9 @@ +nm &#&# abs +240 &#&# 0.123 +250 &#&# 0.132 +260 &#&# 0.346 +270 &#&# 0.563 +280 &#&# 0.998 +290 &#&# 0.377 +300 0.007 +310 0.002 diff --git a/lessons/files/writing_files.ipynb b/lessons/files/writing_files.ipynb index 106e4a1..310791c 100644 --- a/lessons/files/writing_files.ipynb +++ b/lessons/files/writing_files.ipynb @@ -79,6 +79,34 @@ "- Once you are done, you close the file. Just like with reading, this is good practice." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "
\n", + " Example 1 \n", + "\n", + "Contents\n", + "\n", + "
\n", + "\n", + "
\n", + " Example 2 \n", + "\n", + "Contents\n", + "\n", + "
\n", + "\n", + "
\n", + " Example 3 \n", + "\n", + "Contents\n", + "\n", + "
" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -150,13 +178,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Just like when we are reading files, we can use a ``with`` statement to write to files. Just like with reading, the file will automatically close once the ``with`` statement is no longer respected. \n", + "Just like when we are reading files, we can use a ``with`` statement to write to files. \n", "\n", "```Python\n", "with open(\"gas_const.txt\", \"w\") as file:\n", " R = 1.987\n", " file.write(\"The gas constant is: \" + str(R) + \" cal/K.mol\")\n", - "```" + "```\n", + "\n", + "Just like with reading, the file will automatically close once the ``with`` statement is no longer respected. " ] }, { @@ -182,7 +212,8 @@ "\n", "
\n", "\n", - "
Click to reveal answer \n", + "
\n", + " Click to reveal answer \n", "\n", "```Python\n", "element = \"Lanthanum\"\n", diff --git a/lessons/variables/Comparisons.ipynb b/lessons/variables/Comparisons.ipynb index 474f2ce..9715b35 100644 --- a/lessons/variables/Comparisons.ipynb +++ b/lessons/variables/Comparisons.ipynb @@ -21,8 +21,8 @@ "id": "b56ee7b2-cffc-471e-9fd2-bf2b2c437894", "metadata": {}, "source": [ - "- To understand how in Python we can compare objects to each other.\n", - "- To understand how we can use logical statements to perform multiple comparisons or assessments at once.\n" + "- To use Python to compare objects to each other.\n", + "- To use logical statements to perform multiple comparisons or assessments at once.\n" ] }, { @@ -58,7 +58,7 @@ "source": [ "Python has a number of different ways in which it can compare objects, variables or just numbers. These can be very useful both for simple tasks (\"Does H2O have a higher molecular weight than NH3\") and more complex ones (\"How do we know that this peak in an IR spectrum is above the baseline noise?\")\n", "\n", - "In computing, the term Boolean means a result that can only have one of two possible values: ``True`` or ``False``. Using comparison operators (listed in the below table) we can compare two values which would then result in a Boolean output (True or False). " + "In computing, the term Boolean means a result that can only have one of two possible values: ``True`` or ``False``. Using comparison operators (listed in the below table) we can compare two values. The output is a Boolean (either True or False). " ] }, { @@ -151,6 +151,11 @@ "\n", "Returns ``False``. The numerals are not in the same order.\n", "\n", + ">```Python\n", + ">\"5\" == 5\n", + "\n", + "Returns ``False``. They are two different data types. The first is a string, the second is an integer. \n", + "\n", "> ```Python\n", "> [2, 3, 5] == [2, 3, 4]\n", "\n", @@ -235,40 +240,61 @@ }, { "cell_type": "markdown", - "id": "bebc9cbb", + "id": "75f79025", "metadata": {}, "source": [ - "On the following piece of code test the following: - TO EDIT\n", + "
Exercise: Obtain a certain output\n", "\n", - "1. Are the two calculated values for the Rydberg constant the same?\n", - "2. Which calculated value for the Rydberg constant is larger?" + "In the comparisons in the code below, replace each __ with different comparators to get a True output.\n", + "\n", + ">```Python\n", + ">atomic_no_of_nitrogen = 7\n", + ">atomic_no_of_fluorine = 9\n", + ">\n", + ">atomic_no_of_nitrogen -- atomic_no_of_fluorine\n", + ">atomic_no_of_fluorine >= atomic_no_of_nitrogen\n", + ">atomic_no_of_fluorine != atomic_no_of_nitrogen\n", + ">atomic_no_of_fluorine is atomic_no_of_fluorine\n", + ">atomic_no_of_nitrogen == atomic_no_of_nitrogen\n", + "\n", + "
" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "ef70fc14", + "cell_type": "markdown", + "id": "bebc9cbb", "metadata": {}, - "outputs": [], "source": [ - "# Two different calculates values for the Rydberg constant \n", - "rydberg_1 = 10973731.56815712 # m^-1\n", - "rydberg_2 = 10973731.58615712 # m^-1" + "
Exercise: Test similarity \n", + "\n", + "On the following two variables, use Python comparisons to test the following:\n", + "\n", + "1. Are the two calculated values for the Rydberg constant the same?\n", + "2. Which calculated value for the Rydberg constant is larger?\n", + "\n", + ">```Python\n", + "># Two different calculates values for the Rydberg constant \n", + ">rydberg_1 = 10973731.56815712 # m^-1\n", + ">rydberg_2 = 10973731.58615712 # m^-1\n", + "
" ] }, { "cell_type": "markdown", - "id": "4fce93a2", + "id": "a67425ac", "metadata": {}, "source": [ - "Answer:\n", + "
\n", + " πŸ’‘ Click to view answer\n", "\n", "1. The two values are not the same. You can check this using:\n", ">```Python\n", "> rydberg_1 == rydberg_2\n", "Which will return ``False``.\n", "\n", - "2. ``rydberg_2`` is larger. You can test this by using either ``<`` or ``>``.\n" + "2. ``rydberg_2`` is larger. You can test this by using either ``<`` or ``>``.\n", + "\n", + "

" ] }, { @@ -412,7 +438,15 @@ "id": "0a5899ad-5b4a-439b-bd47-df83a6d37136", "metadata": {}, "source": [ - "### Exercise" + "## Practice Questions" + ] + }, + { + "cell_type": "markdown", + "id": "64410c65", + "metadata": {}, + "source": [ + "## Practice 1" ] }, { @@ -429,15 +463,7 @@ "id": "a827cfbe-7726-4a42-bb38-0468a752b998", "metadata": {}, "outputs": [], - "source": [ - "# QUESTION 1\n", - "# Replace BLANK to get a True output\n", - "\n", - "atomic_no_of_nitrogen = 7\n", - "atomic_no_of_fluorine = 9\n", - "\n", - "atomic_no_of_nitrogen BLANK atomic_no_of_fluorine" - ] + "source": [] }, { "cell_type": "code", diff --git a/lessons/variables/mathematical-operators.ipynb b/lessons/variables/mathematical-operators.ipynb index fdda4fe..4595f48 100644 --- a/lessons/variables/mathematical-operators.ipynb +++ b/lessons/variables/mathematical-operators.ipynb @@ -4,27 +4,37 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Mathematical Operators \n", - "\n", - "## Learning outcomes\n", + "# Mathematical Operators " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Learning outcomes\n", "\n", "- Develop familiarity with basic mathematical operations in Python\n", "- Understand how to access some additional, more complex mathematical operations\n", "\n", - "## Prerequisites\n", + "### Prerequisites\n", "\n", "- Variables and their data types\n", - "- Printing f-strings\n", - "\n", - "## Arithmetic\n", - "\n", - "Python is extremely useful for numerical computing. Therefore, it is we should outline some of the mathematical operations that it can perform. Python can only perform maths on variables of the data type ``integer`` or ``float``." + "- Printing f-strings\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Arithmetic" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ + "Python is extremely useful for numerical computing. There are seven principle mathematical operations that Python can do, the notation for which might be slightly different to what you're used to (e.g. × is written as ``*`` in Python). Further mathematical operations (such as logarithms, trigonometry, and calculus) are available through imported modules and libraries (such as [`math`](https://docs.python.org/3/library/math.html)).\n", + "\n", "These are the principal mathematical operations:\n", "\n", "| Operation | Mathematical Notation | Pythonic Notation |\n", @@ -37,86 +47,32 @@ "| Modulo | $a \\textrm{ mod } b$ | `a % b` |\n", "| Floored Division | $a // b$ | `a // b` |\n", "\n", - "The modulo and floored division operations may be new to you. Modulo computes the remainder from the division of two numbers. For example, ``5 % 2`` returns ``1``, and ``19 % 4`` returns ``3``. Floored division is the partner to modulo, and returns only the integer part of the division. For example. ``5 // 2`` returns ``2``, and ``19 // 4`` returns ``4``. Other, more complicated operations are typically also available through Python libraries such as [`math`](https://docs.python.org/3/library/math.html).\n", - "\n", - "A single line of code may have many mathematical operations. In this event, Python will follow the standard order of operations for mathematical operations: you might know this as [BODMAS, BIDMAS, or PEMDAS](https://en.wikipedia.org/wiki/Order_of_operations#Mnemonics).\n", + "The modulo and floored division operations may be new to you. \n", + "- Modulo computes the remainder from the division of two numbers. For example, ``5 % 2`` returns ``1``, and ``19 % 4`` returns ``3``. \n", + "- Floored division is the partner to modulo, and returns only the integer part of the division. For example. ``5 // 2`` returns ``2``, and ``19 // 4`` returns ``4``. \n", + "- Other, more complicated operations are typically also available through Python libraries \n", "\n", - "Maths can be done both with numbers and variables, as long as the variable is of the type integer or float. A common error is storing a number as a string instead of an integer or float. Maths performed on strings will result in strange outcomes (more information can be found in the errors and debugging lesson LINK WHEN CREATED )." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Part 1: Addition and subtraction\n", + "Importantly, Python can only perform maths on variables of the data type ``integer`` or ``float``. Maths performed on strings or lists will result in strange outcomes (see below for some examples).\n", "\n", + "A single line of code may have many mathematical operations. In this event, Python will follow the standard order of operations for mathematical operations: you might know this as [BODMAS](https://en.wikipedia.org/wiki/Order_of_operations#Mnemonics). Use round brackets \"()\" in your sum to avoid ambiguity.\n", "\n", - "\n", - "\n", - "Storing numbers as variables becomes extremely useful when they are being used often, and when they are needed to a large number of significant figures. For example, instead of writing out π or Avogadro's number each time it is used, you can store it at the beginning and only call it by the name you have given it.\n", + "Maths can be done both with types numbers and with variable names, as long as the variable is of the correct type (integer or float). Storing numbers as variables becomes extremely useful when they are being used often, and when they are needed to a large number of significant figures. For example, instead of writing out π or Avogadro's number each time it is used, you can store it at the beginning and only call it by the name you have given it.\n", "\n", ">``` Python \n", "> pi = 3.141592653589\n", "> avogadros_number = 6.02214e23\n", - "\n", - "Below are some simple examples for adding molecular masses. In Python there are many different ways of doing the same thing, so have a look at all three and attempt them all." + ">\n", + "> my_sum = pi * avogadros_number * 4" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - "\n", - "
\n", - "
\n", - " \n", - " \n", - "
You can do maths in a variable, which can be called inside a print statement.\n", - "

\n", + "You can do maths in a variable, which can be called inside a print statement.\n", "\n", ">```Python\n", "> H = 1.008\n", @@ -126,32 +82,46 @@ "> \n", "> print(\"The mass of water is: \" , H2O) \n", "\n", - "
\n", - " The output of this chunk of code is:
\n", "\n", + "The output of this chunk of code is:
\n", "The mass of water is: 18.015\n", "\n", "
☝ Note: Remember to separate objects in a print statement with commas.\n", - "
\n", - " \n", - " \n", - "
You can do maths within the print statement.

\n", "\n", + "

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " Using maths inside a print() statement \n", + "\n", + "You can do maths within the print statement.\n", "\n", ">```Python\n", "> H = 1.008\n", ">\n", "> print(\"The mass of a hydrogen molecule is: \", 2 * H)\n", "\n", - "The output of this code is:
\n", + "The output of this code is:
\n", " The mass of a hydrogen molecule is: 2.016 \n", "\n", "☝ Note: The value 2.016 has been calculated, but is not stored as a variable, as in the previous example. If you wanted to do further maths with the number 2.016, it would be better to store it as a variable.\n", "\n", - "
\n", - " \n", - " \n", - "
You can do maths inside f strings. Just like previously, we can store the maths inside a variable and then call it from the f string, or do the maths within the f string itself.

\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
\n", + " Maths in an f-string \n", + "\n", + "You can do maths inside f strings. Just like previously, we can store the maths inside a variable and then call it from the f string, or do the maths within the f string itself.\n", "\n", "> ```Python\n", "> C = 12.008\n", @@ -165,32 +135,24 @@ "> # Doing maths inside an f string\n", "> print(f\"The mass of ethane is: {2 * C + 6 * H:.5f}\")\n", "\n", - "The output of this is:
\n", - ">```Python\n", - ">The mass of methane is: 16.04
\n", + "The output of this is:
\n", + ">```\n", + ">The mass of methane is: 16.04 \n", ">The mass of ethane is 30.06400\n", "\n", "☝ Note: The syntax :.5f indicates that the calculation should be given to 5 decimal places. The number can be changed to any number of desired significant figures.\n", "\n", - "
\n", - "
\n", - "" + "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Now practise getting used to using simple Python maths operators in the following exercise." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
Practice \n", - "\n", - "Using variables to store the atomic masses of hydrogen, carbon, oxygen, and nitrogen, calculate the molecular masses of the following species.\n", + "
\n", + "
Exercise 1: Addition and Subtraction\n", + "
\n", + "Using variables to store the atomic masses of hydrogen, carbon, oxygen, and nitrogen, write a program to calculate the molecular masses of the following species.\n", "\n", "
    \n", "1. Ethanol (C2H6O), doing the calculation inside a print() statement
    \n", @@ -205,17 +167,17 @@ "> O = 15.999\n", "> N = 14.007\n", "\n", - "\n", + "
\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "\n", - "
\n", - " πŸ’‘ Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "Your code should look something like this:\n", "> ```Python\n", @@ -238,31 +200,23 @@ "\n", "We only have to define the masses once, and they can be reused for all three sums.\n", "\n", - "
\n", - "\n", - "
" + "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Part 2: Multiplication and Division\n", - "\n", + "
\n", + "
Exercise 2: Multiplication and Division \n", + "
\n", "The interaction potential between two isolated ions in water, Na+ (ionic radius = 116 pm) and Cl+ (ionic radius = 157 pm) is given by the following equation:\n", "\n", "$ V(r) = \\frac{q_{Na^+} \\ q_{Cl^+}}{4 \\ \\pi \\ \\epsilon \\ \\epsilon_{0} \\ r}\\ $\n", "\n", - "Where $q_{Na^+}$ and $q_{Cl^+}$ are the relative charges on the ions (equal to Β± the charge on an electron, 1.602-19 Coulombs), $r$ is the distance between ioninc nuclei (sum of atomic radii) in m, $\\epsilon$ is the relative permittivity ($\\epsilon$ = 78.7 Fm-1 in water), and $\\epsilon_0$ is the permittivity of free space and is equal to 8.85Γ—10-12 Fm-1." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
Practice \n", + "Where $q_{Na^+}$ and $q_{Cl^+}$ are the relative charges on the ions (eqivalent to Β± the charge on an electron, 1.602-19 Coulombs), $r$ is the distance between ionic nuclei (sum of ionic radii) in m, $\\epsilon$ is the relative permittivity ($\\epsilon$ = 78.7 Fm-1 in water), and $\\epsilon_0$ is the permittivity of free space ($\\epsilon_0$ = 8.85Γ—10-12 Fm-1).\n", "\n", - " By copying out and completing this code, calculate the interaction potential of a sodium and chlorine ion in water using the above equation.\n", + " By copying out and completing the code below, calculate the interaction potential of a sodium and chlorine ion in water using the above equation.\n", "\n", ">``` Python\n", ">\n", @@ -271,6 +225,7 @@ "> pi = 3.1415\n", "> e = \n", "> e_0 = \n", + "> r = \n", ">\n", "> interaction_potential = \n", ">\n", @@ -278,81 +233,73 @@ "\n", "Which would result in the output 21.\n", "\n", - "\n", - "\n", - "
\n", - " πŸ’‘ Click to view answer\n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", "Your code should look something like this:\n", - "> ```Python\n", - "> q_Na = 1.602e-19 # Coulombs \n", - ">q_Cl = -1.602e-19 # Coulombs\n", - ">pi = 3.1415 \n", - ">e = 78.7 # Fm^-1\n", - ">e_0 = 8.85e-12 # Fm^-1\n", - ">r = 116e-12 + 167e-12 # m\n", - ">\n", - ">interaction_potential = (q_Na*q_Cl)/(4 * pi * e * e_0 *r)\n", - ">\n", - ">print(interaction_potential , \" J\")\n", + "```Python\n", + "q_Na = 1.602e-19 # Coulombs \n", + "q_Cl = -1.602e-19 # Coulombs\n", + "pi = 3.1415 \n", + "e = 78.7 # Fm^-1\n", + "e_0 = 8.85e-12 # Fm^-1\n", + "r = 116e-12 + 167e-12 # m\n", + "\n", + "interaction_potential = (q_Na*q_Cl)/(4 * pi * e * e_0 *r)\n", + "\n", + "print(interaction_potential , \" J\")\n", + "```\n", + "\n", "\n", "You should have got the output:\n", - " -1.036e-20 J\n", + "``` -1.036e-20 J```\n", "\n", "
Once we have defined each of the constants, it becomes very easy to use them again later in the code. One thing to always remember is to put units on your outputs!\n", "\n", - "
\n", - "\n", - "
" + "
\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Part 3: Exponents\n", - "\n", + "
\n", + "
Exercise 3: Exponents\n", + "
\n", "The equilibrium constant of an equation\n", "\n", "aA + bB β‡Œ cC + dD\n", "\n", "is given by\n", "\n", - "$ K_c = \\frac{[C]^c \\ [D]^d}{[A]^a \\ [B]^b} $" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
Practice \n", + "$ K_c = \\frac{[C]^c \\ [D]^d}{[A]^a \\ [B]^b} $\n", "\n", - " Calculate the equilibrium constant to 2 significant figures for the following equation at equilibrium using Python. Work it out on a calculator and compare your answers.\n", + "For the following equation at equilibrium, write a program which calculates the equilibrium constant to 1 decimal place. Work it out on a calculator and compare your answers.\n", "\n", "2SO2(g) + O2(g) β‡Œ 2SO3(g)\n", "\n", + "Concentrations at equilibrium:
\n", "[SO3] = 5.0 Γ— 10βˆ’2
\n", "[O2] = 3.5 Γ— 10βˆ’3
\n", "[SO2] = 3.0 Γ— 10βˆ’3
\n", - "\n", - "\n", - "\n", - "
\n", - " πŸ’‘ Click to view answer\n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", "You should have got the output:\n", " 7.9e4 \n", @@ -363,8 +310,174 @@ "\n", "We will learn how to do more powerful and complex analysis later on, using lists, for loops, and if statements in a few lesson's time. \n", "\n", - "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Mathematical operations on non-numerical data types" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In Python, you need to be careful with variable types. As alluded to in the introduction, using the wrong data type can lead to numerous unintended and suprising consequences. It can be made obvious with an error message when you try to run your code (e.g. TypeError or ValueError messages), or it could just output an incorrect answer without an error message (e.g. with string concatenation).\n", + "\n", + "If you are getting errors in your code, it is often useful to check the data type of your variables using the function ``type()``.\n", + "\n", + "If your variables are the wrong data types, you can convert between data types (as long as they are in the correct format) using the functions ``float()``, ``int()``, and ``str()``. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " Error message: TypeError\n", + "\n", + "Many mathematical operations can only be performed on variables of the ``integer`` or ``float``, and cannot be performed on variables of the type ``string``, even if that string is a number. Often, this will result in an error message popping up when you try to run it.\n", + "\n", + ">```Python\n", + ">\n", + ">print(\"3\" / 2)\n", + ">\n", "\n", + "The code above results in the error: ``TypeError: unsupported operand type(s) for /: 'str' and 'int'``. \n", + "\n", + "This is a TypeError, which is raised when an operation is performed on an unsupported data type. Python is telling us When we put the number 3 in speech marks, we are telling Python that this is just plain text, not a number. To Python, it is as incomprehensible as writing ``answer = sausage / 2``. \n", + "\n", + "If we do accidentally try to use division on a string, the error message straightaway tells us what has gone wrong.\n", + "\n", + "However, it is not always this simple. \n", + "\n", + "

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " String concatenation \n", + "\n", + "Run the two print statements below. \n", + "\n", + ">```Python\n", + ">\n", + ">print(\"3\" + \"1\")\n", + ">print(\"3\" * 5)\n", + ">\n", + "\n", + "Instead of the mathematical answers 4 and 15, you get this:
\n", + "31
\n", + "33333
\n", + "\n", + "Instead of adding the numbers together, Python has added the two strings together, or multiplied the same one multiple times. This is called concatenation, and is an operation that can be performed not just on strings, but also other data types, like lists:\n", + "\n", + ">```Python\n", + ">\n", + ">print([1, 2, 3] + [2, 2, 2])\n", + ">print([1, 2, 3] * 3)\n", + ">\n", + "\n", + "Which results in:
\n", + "[1, 2, 3, 2, 2, 2]
\n", + "[1, 2, 3, 1, 2, 3, 1, 2, 3]
\n", + "\n", + "The most important thing to realise here is that this is an error, but not one that is raised by Python. Python will not shout at you that something has gone wrong, and the printed line on your screen doesn't give any indication that something is wrong. If you aren't careful, you might print an output that looks right, but is in fact a mistake borne from unintentional concatenation.\n", + "However, it is not always this simple. \n", + "\n", + "

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " Checking data types using type() \n", + "\n", + "If you are getting TypeErrors (whether is has been made obvious by Python or not), you might want to check what type your data is. You can do this using the Python function ``type()``, which takes an input inside the braackets, and returns what type it is. \n", + "\n", + "For example:\n", + "\n", + ">```Python\n", + ">\n", + ">num = \"90.0\"\n", + ">print(type(num))\n", + ">\n", + "\n", + "Will return: \n", + "\n", + "Telling you that the variable ``num`` is a string, and not an integer or a float. \n", + "\n", + "You can use ``type()`` on any data type, and it becomes incredibly useful to check and debug your code, especially when you are writing longer programs. Often, simple issues with data type can lead to code that does not work. For example, try writing ``print(type(6/2))``. You would expect the result of 6/2 to be an integer, but the division operator instead always returns a float. Certain functions can only take integer values, not floats, so when you try to use ``6/2`` as an input, you would get a TypeError. \n", + "\n", + "

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " Changing data types (casting) \n", + "\n", + "If the contents of your string are numerical, you are able to change it back into a float or integer. You do this with the ``float()`` or ``int()`` functions. \n", + "\n", + ">```Python\n", + ">\n", + ">num = \"90.0\"\n", + ">\n", + ">num = float(num) # The string 'num' is now a floating point value\n", + ">num = int(num) # The float 'num' is now an integer\n", + ">num = str(num) # The float 'num' is a string again\n", + ">\n", + "\n", + "Write out this code and print the type that 'num' is at each point. Be warned though, if your string is a float whole number (such as 90.0), you cannot change it straight to an integer. You must first convert it into a float. \n", + "\n", + "You can also change a string to and from a list, but be careful! If you case ``list()`` on the cariable ``a = 1,2,3`` you will get the list ``a = ['1', ',', '2', ',', '3']``, where every comma has also been added into the list as a string. Each of the numbers are also added into the list as strings.\n", + "\n", + "

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Exercise: Maths errors \n", + "
\n", + "You are writing a program to calculate the mean of some data. Which of the below programs will result in an error, and why?\n", + "\n", + "a) \n", + ">```Python\n", + ">a = 12.0\n", + ">b = 5.1\n", + ">c = 8.5\n", + ">mean = a + b + c / 3\n", + ">print(mean)\n", + "\n", + "b)\n", + ">```Python\n", + ">a = \"12.0\"\n", + ">b = \"5.1\"\n", + ">c = \"8.5\"\n", + ">mean = (a + b + c)/3\n", + ">print(mean)\n", + "\n", + "c)\n", + ">```Python\n", + ">a = \"12.0\"\n", + ">b = \"5.1\"\n", + ">c = \"8.5\"\n", + ">mean = (int(a) + float(b) + float(c))/3\n", + ">print(mean)\n", + "\n", + "
\n", "
" ] }, @@ -372,21 +485,88 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Part 4: More Complex Mathematical Operations\n", + "
\n", + " Click to view answer \n", + "\n", + "The answer is all three will result in error!\n", "\n", - "Some mathematical functions are not native to Python. We must import them from another library in order to use them. One of the most basic and useful is the built-in Python module called ``math`` (documentation can be found [here](https://docs.python.org/3/library/math.html)).\n", + "a) This will not produce an error message, but that does not mean there is not an error present. Due to maths order of operations, this code will produce the answer ``19.93``, which is clearly not a correct mean. To avoid ambiguity, the top of the fraction should be in round brackets (). It is important to only use round brackets in a sum, because other kinds of brackets are used to define other data types and would result in TypeErrors.\n", "\n", - "To access a given function, we must `import` it `from` the module. Below, we import the base 10 logarithm function, `log10`.\n", - "(more information on importing modules will be found later in the [tutorials](/lessons/loops_functions/tut_import_mod.ipynb))\n", + "b) This will produce an error message. The variables here are defined as strings, and although these strings can be concatenated together using ``+``, they cannot be divided using ``/``. You will get the error message ``TypeError: unsupported operand type(s) for /: 'str' and 'int'``.\n", + "\n", + "c) This one looks correct, and it almost works! The problem in this code is ``int(a)``, which has resulted in the error message: ``ValueError: invalid literal for int() with base 10: '12.0'``. Value errors occur when a function (in this case, the ``int()`` function) receives a value of the wrong type. The ``int()`` function can only take floats, or integer strings, as an input. \n", + "\n", + "Here are two correct versions of this code:\n", + "\n", + "```Python\n", + "a = 12.0\n", + "b = 5.1\n", + "c = 8.5\n", + "mean = (a + b + c) / 3\n", + "print(mean)\n", + "```\n", + "\n", + "```Python\n", + "a = \"12.0\"\n", + "b = \"5.1\"\n", + "c = \"8.5\"\n", + "mean = (float(a) + float(b) + float(c))/3\n", + "print(mean)\n", + "```\n", + "\n", + "Both versions result in the output: ``8.53``\n", + "\n", + "

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## More complex mathematical operations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As mentioned previously, some mathematical functions are not native to Python. We must import them from another module or library in order to use them. One of the most basic and useful is the built-in Python module ``math`` (documentation can be found [here](https://docs.python.org/3/library/math.html)).\n", + "\n", + "Quick note on terminology: a module is a file containing the functions we want to import. A library is a collection of modules. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Importing a specific function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To access a specific function, we must `import` it `from` the module. Below, we import the base 10 logarithm function, `log10()`\n", + "(more information on importing modules will be found in [later lessons](/lessons/loops_functions/tut_import_mod.ipynb)):\n", "\n", "> ```Python\n", - "> from math import log10\n", + "> from module import function\n", "\n", - "We can then use `log10` throughout the rest of the program, for example when calculating pH from proton concentration.\n", + "The function can then be used throughout the rest of the program. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Importing a function from math\n", "\n", - "$ pH = -log_{10}[H^+]$\n", + "In this code, we want to import the function ``log10()`` to use when calculating pH from proton concentration using $ pH = -log_{10}[H^+]$\n", "\n", "> ```Python\n", + "> from math import log10\n", + ">\n", "> H_conc = 1.0e-7\n", ">\n", "> pH = log10(H_conc)\n", @@ -394,48 +574,97 @@ ">\n", "> print(pH)\n", "\n", - "The `*=` simply means to take the previous variable also called `pH` and multiply it by -1. Only the new value of pH can be called now, so only use this if you will no longer need to call the previous value of pH. Similarly, you can use `+=`, `-=`, and `/=`." + "The `*=` simply means to take the previous variable also called `pH` and multiply it by -1. Only the new value of pH can be called now, so only use this if you will no longer need to call the previous value of pH. Similarly, you can use `+=`, `-=`, and `/=`.\n", + "\n", + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
Practice \n", + "
\n", + "Importing pi and other constants\n", + "\n", + "We can also import constants from ``math``, such as ``pi``, ``e``, and even ``inf``, infinity. \n", + "\n", + "We import constants in the same way we import functions. The only difference is in how we use them. Constants are not the same as functions, and therefore do not need brackets.\n", + "\n", + "> ```Python\n", + "> from math import pi\n", + ">\n", + "> circle_area = 4**2 * pi\n", + "> print(circle_area)\n", "\n", + "

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Exercise: Importing a function \n", + "
\n", "Using the relation\n", "\n", "$ pH = -log_{10}[H^+]$\n", "\n", "Write a program that calculates the pH of a solution in which [H+] = 2.3 Γ—10-5 M.\n", "\n", - "\n", - "\n", - "
\n", - " πŸ’‘ Click to view answer\n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", "You should have got the output:\n", " 4.64 \n", "\n", "Think further: Is this solution acidic or basic? We can work that out quite easily, but what if we had hundreds of values for hundreds of different solutions and wanted to identify only which ones were acidic? Later lessons will give you the tools to be able to do this.\n", "\n", - "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Importing an entire module/library" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also import the entire library, giving you access to all the functions within it. You do this by writing simply:\n", "\n", - "
" + "`import module`\n", + "\n", + "If you import the entire library, you can then call their functions in the following way:\n", + "\n", + "`python answer = module.function(input)`\n", + "\n", + "Which tells us that we are referencing a function from that module. \n", + "\n", + "\n", + "\n", + "There are lots of libraries and modules which you can import, which serve different purposes, such as the module ``NumPy`` (more information can be found in the [numpy lesson](../common_libs/Introduction_to_NumPy.ipynb)), and the graphing library [matplotlib.pyplot](../common_libs/python-in-chem_pyplot_basics_SM.ipynb). " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "You can also import the entire library, giving you access to all the functions within it. If you import the entire library, you can then call their functions in the following way:\n", + "
\n", + "Importing the entire 'math' module\n", + "\n", + "For example with the module ``math``:\n", "\n", "> ```Python\n", "> import math\n", @@ -450,19 +679,91 @@ "> # Calculate cosine of 10 in radians\n", "> trig_ans = math.cos(10)\n", "\n", - "The `math.` part is very important if you are importing an entire library (not just a specific function). Without it, Python won't know you are trying to call a function from the math module - it will think you have forgotten to define your own function!\n", + "The `math.` part is very important if you are importing an entire library (not just a specific function). Without it, Python won't know you are trying to call a function from the math module - it will think you have forgotten to define your own function! It gets especially confusing if you are importing many different libraries and modules, some of whom might use the same function name for a slightly different purpose. Python needs to know which one you are referring to!\n", "\n", - "It is always important to look up the documentation of the functions you are importing, as some can only take specific inputs. For example, in ``math`` trigonometric functions will do their calculations using radians, not degrees!\n", + "It is always important to look up the documentation of the functions you are importing, as some can only take specific inputs. For example, in ``math``, the value of pi is called without using brackets (just ``math.pi`` will call the correct value), and trigonometric functions will do their calculations using radians, not degrees!\n", "\n", - "There are lots of libraries and modules which you can import, which serve different purposes, such as the module ``NumPy`` (more information can be found in the [numpy lesson](../common_libs/Introduction_to_NumPy.ipynb)), and the graphing library [matplotlib.pyplot](../common_libs/python-in-chem_pyplot_basics_SM.ipynb). " + "

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Importing other modules\n", + "\n", + "You can also import other modules and libraries, such as NumPy, SciPy, or MatPlotLib.pyplot. \n", + "\n", + "For longer \n", + "\n", + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Further Practice\n", + "
\n", + "
Exercise: Import the module math and use multiple functions\n", + "
\n", + "A right-angled triangle sits inside a circle, with its hypotenuse equal to the diameter of the circle. Write a program to calculate one of the angles, θ, of the triangle in degrees, given that the opposite edge of the triangle has length 2 cm and the circumference of the circle is 10 cm. Import the module ``math``.\n", + "\n", + "Useful information:\n", + "\n", + "$circle \\ diameter = \\frac{\\pi}{circumference}$ \n", + "\n", + "$\\theta = sin^-1(\\frac{length\\ of\\ triangle\\ edge\\ opposite\\ \\theta}{length\\ of\\ triangle\\ hypotenuse})$\n", + "\n", + "The ``math`` function for $sin^-1$ is: ``asin()``.\n", + "\n", + "The ``math`` function ``degrees()`` converts any value inside the brackets to degrees.\n", + "\n", + "The ``math`` function ``radians()`` converts any value inside the brackets to radians.\n", + "\n", + "Hint: The answer you should get is 38.9°.\n", + "\n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", + "\n", + "\n", + "\n", + "```Python\n", + "import math\n", + "\n", + "circumference = 10 # cm\n", + "diameter = 10 / math.pi # cm\n", + "hypotenuse = diameter # cm\n", + "opposite_side = 2 # cm\n", + "\n", + "theta_rads = math.asin(opposite_side/hypotenuse)\n", + "theta_degrees = math.degrees(theta_rads)\n", "\n", + "print(theta_degrees)\n", + "```\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Further Practice" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "### Exercise 1\n", "\n", "Find the velocity, $v$, of a N2 molecule with a mass, $m$ of 4.6×10-26 kg at a temperature, $T$, of 293 K, given the following equation,\n", @@ -473,17 +774,15 @@ "\n", "where, $k_b$ is 1.38×10βˆ’23 J/K.\n", "\n", - "\n", - "\n", - "
\n", - " πŸ’‘ Click to view a potential answer
\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Click to view answer
\n", "\n", ">```Python\n", ">k_b = 1.38e-23\n", @@ -498,10 +797,7 @@ "\n", "Remember there are many different ways of writing the same piece of code. Don't worry about finding the 'best' solution at this point. As long as it works, you have succeeded!\n", "\n", - "
\n", - "\n", - "\n", - "\n" + "
" ] }, { @@ -527,20 +823,16 @@ " Useful:
\n", "$\n", "x = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}.\n", - "$\n", - "\n", - "\n", - "\n", + "$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "\n", - "
\n", - " πŸ’‘ Click to view a potential answer
\n", + "
\n", + " Click to view answer
\n", "\n", ">```Python\n", "> # Import all relevant libraries and functions at the beginning\n", @@ -603,21 +895,15 @@ ">x = side_b^2 + side_C**2 - (2 * side_b side_c * cos(angle_A)\n", ">x *= 1/2\n", ">\n", - ">print(x \"cm\")\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - " πŸ’‘ Click to view the correct answer
\n", + ">print(x \"cm\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer
\n", "\n", "Here is the same code with the mistakes corrected. Did you find them all or did you have to look at the answer?\n", "\n", From c4b4fa87b0cf8bb1b04144ebcc5924d4324c0c85 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Fri, 1 Aug 2025 17:15:43 +0100 Subject: [PATCH 20/94] formatted comparisons and conditional statements lessons --- .../conditional_statements.ipynb | 343 +++++++++------ lessons/variables/Comparisons.ipynb | 405 +++++++++++------- .../variables/mathematical-operators.ipynb | 10 +- 3 files changed, 462 insertions(+), 296 deletions(-) diff --git a/lessons/loops_functions/conditional_statements.ipynb b/lessons/loops_functions/conditional_statements.ipynb index f2d807e..29e665f 100644 --- a/lessons/loops_functions/conditional_statements.ipynb +++ b/lessons/loops_functions/conditional_statements.ipynb @@ -13,7 +13,7 @@ "id": "87bc9c8a", "metadata": {}, "source": [ - "## Learning Outcomes\n", + "### Learning Outcomes\n", "\n", "- To see how we can build statements and scripts that can do different tasks when we give them different inputs." ] @@ -23,11 +23,20 @@ "id": "3ad88990", "metadata": {}, "source": [ - "## Prerequisites\n", + "### Prerequisites\n", "\n", "- Variables\n", + "- Data types\n", "- Mathematical operators\n", - "- Comparisons (Boolean logic)" + "- Comparisons and logic" + ] + }, + { + "cell_type": "markdown", + "id": "9510c118", + "metadata": {}, + "source": [ + "## ``if`` statements" ] }, { @@ -41,7 +50,7 @@ "\n", ">```\n", ">if condition:\n", - "> what to do if condition is true\n", + "> what to do if condition is True\n", "\n", "When the condition is True, Python will go on to run the code which is indented. Indentation is how Python knows what is part of the ``if`` statement, and what is the rest of the code. Often, programs that run Python will automatically insert indentation after the ``if condition:`` (not forgetting the colon!), but you can also use the 'tab' key to insert the correct indentation (which as a standard is 4 spaces). If there is no colon and no indentation, errors can occur.\n", "\n", @@ -49,34 +58,77 @@ ] }, { - "cell_type": "code", - "execution_count": null, - "id": "d9b702f4", + "cell_type": "markdown", + "id": "e0dbebd5", + "metadata": {}, + "source": [ + "
\n", + "Using if \n", + "\n", + "One way we can use `if` statements is in conjuction with comparisons. \n", + "\n", + ">```Python\n", + ">x = \"CH4\"\n", + ">y = \"CH4\"\n", + ">if x == y:\n", + "> ### This part of the code is indented, and is run if the if statement is true\n", + "> print(\"Yes, these are the same formula\")\n", + "\n", + "Running this code, we get the output `Yes, these are the same formula`. If we were to then change one of the variables:\n", + "\n", + ">```Python\n", + ">x = \"CH4\"\n", + ">y = \"NH3\"\n", + ">if x == y:\n", + "> print(\"Yes, these are the same formula\")\n", + ">print(\"The indentation has ended, this code line is always run\")\n", + "\n", + "The code skips straight to the new line and prints only the second statement. This is because x == y is False. \n", + "\n", + "

" + ] + }, + { + "cell_type": "markdown", + "id": "2d12b05b", + "metadata": {}, + "source": [ + "
\n", + "
Exercise: Write a simple 'if' statement \n", + "
\n", + "A nickel surface has workfunction 5.08 eV. If an electron incident on the surface has energy greater or equal to this energy, an electron will be liberated from the surface. Write a conditional ('if') statement to test if a photon of energy 6.17 eV will liberate an electron, and print the energy,\n", + "\n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "76e675f7", "metadata": {}, - "outputs": [], "source": [ - "# EXAMPLE 1\n", + "
\n", + " Click to view answer\n", + "\n", + "```Python\n", + "workfunction_Ni = 5.08 # eV\n", + "photon_energy = 6.17 # eV\n", + "\n", + "if photon_energy >= workfunction_Ni:\n", + " print(f\"The photon has energy {photon_energy} eV, and will release an electron from the nickel surface\")\n", + "```\n", "\n", - "x = \"CH4\"\n", - "y = \"CH4\"\n", - "if x == y:\n", - " ### This part of the code is indented, and is run if the if statement is true\n", - " print(\"Yes, these are the same formula\")" + "Don't forget the colon after the conditional statement, or to indent the `print()` line.\n", + "\n", + "

" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "c69b17b6", + "cell_type": "markdown", + "id": "11268c0c", "metadata": {}, - "outputs": [], "source": [ - "# EXAMPLE 2\n", - "x = \"CH4\"\n", - "y = \"NH3\"\n", - "if x == y:\n", - " print(\"Yes, these are the same formula\")\n", - "print(\"The indentation has ended, this code line is always run\")" + "## If...elif...else" ] }, { @@ -108,92 +160,120 @@ ] }, { - "cell_type": "code", - "execution_count": null, - "id": "343cdbb0", + "cell_type": "markdown", + "id": "ee23bb99", "metadata": {}, - "outputs": [], "source": [ - "# EXAMPLE 3\n", + "
\n", + "Using if...else...\n", "\n", - "x = \"CH4\"\n", - "if x == \"CH4\":\n", - " print(\"This compound is methane\")\n", - "elif x != \"NH3\":\n", - " print(\"This compound is not ammonia\")\n", - "else:\n", - " print(\"This compound is ammonia\")" + "We can use if...else... when we have only two outcomes we want to test. \n", + "\n", + ">```Python\n", + ">x = \"CH4\"\n", + ">if x == \"CH4\":\n", + "> print(\"This compound is methane\")\n", + ">else:\n", + "> print(\"This compound is not methane\")\n", + "\n", + "\n", + "

" ] }, { - "cell_type": "code", - "execution_count": 4, - "id": "4a37476f", + "cell_type": "markdown", + "id": "ecba019b", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "This compound is not ammonia\n" - ] - } - ], "source": [ - "# EXAMPLE 4\n", - "\n", - "x = \"H2O\"\n", - "if x == \"CH4\":\n", - " print(\"This compound is methane\")\n", - "elif x != \"NH3\":\n", - " print(\"This compound is not ammonia\")\n", - "elif x != \"H2\":\n", - " print(\"This compound is not hydrogen\")\n", - "else:\n", - " print(\"This compound is ammonia\")" + "
\n", + "Understanding if...elif...else... logic\n", + "\n", + "When writing 'if...elif...' statements, it is important to remember that once a conditional statement has returned true, no further elif or else statements will be tested. \n", + "\n", + "This is demonstrated in the code below:\n", + "\n", + ">```Python\n", + ">wavelength = 4.82e-8\n", + ">\n", + ">if wavelength < 1e-11:\n", + "> print(\"This is a gamma wave\")\n", + ">elif wavelength < 1e-8:\n", + "> print(\"This is an x-ray\")\n", + ">elif wavelength < 3.8e-7:\n", + "> print(\"This is a UV ray\")\n", + ">elif wavelength < 7.4e-7:\n", + "> print(\"This is in the visible range\")\n", + ">elif wavelength < 1e-3:\n", + "> print(\"This is infrared\")\n", + ">else:\n", + "> print(\"This is a radiowave\")\n", + "\n", + "Even though all comparisons after \"This is a UV ray\" are also True, no other statements are printed. If you wanted to test every single comparison, you would have to use multiple `if` statements. \n", + "\n", + "

" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "1a43a1b9", + "cell_type": "markdown", + "id": "1eac36c7", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "This compound is not water\n", - "This molecule is hydrogen\n" - ] - } - ], "source": [ - "# EXAMPLE 5\n", - "\n", - "x = \"H2\"\n", + "
\n", + "
Exercise: Predict if...elif...else logic \n", + "
\n", + "Look at each of the code snippets below and for each, predict which print() statements will execute. Write them our yourself and check you were correct.\n", + "\n", + "a)\n", + ">```Python\n", + ">x = \"CH4\"\n", + ">if x == \"CH4\":\n", + "> print(\"This compound is methane\")\n", + ">elif x != \"NH3\":\n", + "> print(\"This compound is not ammonia\")\n", + ">else:\n", + "> print(\"This compound is ammonia\")\n", + "\n", + "b)\n", + ">```Python\n", + ">x = \"H2O\"\n", + ">if x == \"CH4\":\n", + "> print(\"This compound is methane\")\n", + ">elif x != \"NH3\":\n", + "> print(\"This compound is not ammonia\")\n", + ">elif x != \"H2\":\n", + "> print(\"This compound is not hydrogen\")\n", + ">else:\n", + "> print(\"This compound is ammonia\")\n", + "\n", + "c)\n", + ">```Python\n", + ">x = \"H2\"\n", + ">if x != \"H2O\":\n", + "> print(\"This compound is not water\")\n", + ">if x == \"H2\":\n", + "> print(\"This molecule is hydrogen\")\n", + ">else:\n", + "> print(\"This compound is not hydrogen\")\n", "\n", - "if x != \"H2O\":\n", - " print(\"This compound is not water\")\n", - "if x == \"H2\":\n", - " print(\"This molecule is hydrogen\")\n", - "else:\n", - " print(\"This compound is not hydrogen\")" + "
\n", + "
" ] }, { "cell_type": "markdown", - "id": "b3638bf8", + "id": "e8acc105", "metadata": {}, "source": [ - "Run the above pieces of code and see which `print()` statements are executed. \n", + "
\n", + " Click to view answer\n", + "\n", + "a) Only the first print() statement is executed. Even though the `elif` statement is also True, this is not executed because the first condition has already been met. \n", "\n", - "#### Answers\n", - "In example 1, the first `if` condition is True, so the first ``print()`` statement is executed. Even though the `elif` statement is True, this is not executed because the first condition was met. \n", + "b) The first `if` condition is False, so the program moved on to check the `elif` statement. The first `elif` statement is True, so that print() statement is executed, but the second `elif` statement and the `else` statement are ignored. \n", "\n", - "In example 2, the first `if` condition is False, so the program moved on the check the `elif` statement. The first `elif` statement is True, so that line of indented code is executed, but the second `elif` statement and the `else` statement are ignored. \n", + "c) Two `if` statements are being used instead of a following `elif`. This means that both conditions are checked, even if the first one is True. Therefore, both statements are executed.\n", "\n", - "In example 3, two `if` statements are being used instead of a following `elif`. This means that both conditions are checked, even if the first one is True. Therefore, both statements are executed." + "

" ] }, { @@ -217,38 +297,42 @@ "id": "3245cb35", "metadata": {}, "source": [ - "## Exercise\n", + "## Further Practice" + ] + }, + { + "cell_type": "markdown", + "id": "33db858c", + "metadata": {}, + "source": [ + "### Question 1\n", "\n", - "### Exercise 1\n", + "When doing IR spectroscopy, a peak with low % absorbance corresponds to a strong spike on the spectrum. When analysing a particular spectrum, any peaks with absorbance greater than 95% are indistinguishable from background noise, and are ignored. \n", "\n", - "``If`` statements can be used to check if your maths is correct. Predict which statement will be printed, then write out and run this code." + "Write a Python conditional statement that will print whether our peak is background noise or not." ] }, { - "cell_type": "code", - "execution_count": null, - "id": "e554e279", + "cell_type": "markdown", + "id": "71574d59", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fluorine has more protons\n" - ] - } - ], "source": [ - "# EXERCISE 1\n", - "##\n", + "
\n", + " Click to view answer\n", "\n", - "atomic_no_of_nitrogen = 7\n", - "atomic_no_of_fluorine = 9\n", + "```Python\n", + "peak_frequency = 3200 # cm-1\n", + "peak_absorbance = 97 # %\n", "\n", - "if atomic_no_of_nitrogen < atomic_no_of_fluorine:\n", - " print(\"Fluorine has more protons\")\n", + "if peak_absorbance >= 95:\n", + " print(f\"The peak at {peak_frequency} cm-1 has an absorbance of {peak_absorbance}% and can be considered background noise.\")\n", + "elif peak_absorbance < 0 or peak_absorbance >100:\n", + " print(\"Peak absorbance cannot be less than zero or greater than 100. There may be an error in your instrument.\")\n", "else:\n", - " print(\"Nitrogen has more protons than fluorine - error in calculation\")" + " print(f\"The peak at {peak_frequency} cm-1 has an absorbance of {peak_absorbance}%\")\n", + "```\n", + "\n", + "

" ] }, { @@ -256,7 +340,7 @@ "id": "a36d82c8", "metadata": {}, "source": [ - "### Exercise 2\n", + "### Question 2\n", "\n", "Using your code to calculate the pH of a solution from concentration of H+ ions (example shown below), add a ``if`` statement which will print whether the pH is basic, acidic, or a superacid (pH < 0 ). Test for each of the following values of `H_conc`:\n", "\n", @@ -266,38 +350,26 @@ "H_conc = 1.0e12
\n", "\n", "> ```Python\n", - "> # CALCULATE pH OF A SOLUTION FROM [H+]\n", + "> # Calculate pH of a solution from [H+]\n", "> H_conc = 1.0e12\n", ">\n", "> pH = log10(H_conc)\n", "> pH *= -1\n", ">\n", - "> print(pH)\n", - "\n", - "\n", - "#### Answer\n", - "\n", - "Find below a possible answer. Note that since this is done from superacid upwards, the first `elif` statement does not need the addition of ``elif pH > 0 and pH < 7:``, since it will only run if `pH <= 0` is False. However, if you were working from base downwards, you would have to specify that pH must be both larger than 0 and smaller than 7 to be marked as acidic.\n", - "\n", - " Think further . This program contains 4 values for the concentration of H+ ions, but can only check one at a time. This is quite slow. A better way would be to use loops iterate through all four values and output the desired phrase for them all at the same time, removing the laborious task of changing the value for the concentration manually. We will learn about loops in the next few lessons." + "> print(pH)" ] }, { - "cell_type": "code", - "execution_count": 30, - "id": "ba4c5770", + "cell_type": "markdown", + "id": "c210ea26", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The pH of this solution is: 10.0\n", - "This solution is basic\n" - ] - } - ], "source": [ + "
\n", + " Click to view answer\n", + "\n", + "Below is a possible answer. Note that since this is done from superacid upwards, the first `elif` statement does not need the addition of ``elif pH > 0 and pH < 7:``, since it will only run if `pH <= 0` is False. However, if you were working from base downwards, you would have to specify that pH must be both larger than 0 and smaller than 7 to be marked as acidic.\n", + "\n", + "```Python\n", "from math import log10\n", "\n", "# Defining the initial concentration\n", @@ -321,7 +393,12 @@ "elif pH == 7:\n", " print(\"This solution is neutral\")\n", "elif pH > 7:\n", - " print(\"This solution is basic\")" + " print(\"This solution is basic\")\n", + "```\n", + "\n", + " Think further . This program contains 4 values for the concentration of H+ ions, but can only check one at a time. This is quite slow. A better way would be to use loops iterate through all four values and output the desired phrase for them all at the same time, removing the laborious task of changing the value for the concentration manually. We will learn about loops in the next few lessons.\n", + "\n", + "

" ] }, { diff --git a/lessons/variables/Comparisons.ipynb b/lessons/variables/Comparisons.ipynb index 9715b35..4c92c32 100644 --- a/lessons/variables/Comparisons.ipynb +++ b/lessons/variables/Comparisons.ipynb @@ -13,7 +13,7 @@ "id": "63b3ed50-5670-4fcb-9cd4-81e0a50b650e", "metadata": {}, "source": [ - "## Learning Objectives" + "### Learning Objectives" ] }, { @@ -21,8 +21,8 @@ "id": "b56ee7b2-cffc-471e-9fd2-bf2b2c437894", "metadata": {}, "source": [ - "- To use Python to compare objects to each other.\n", - "- To use logical statements to perform multiple comparisons or assessments at once.\n" + "- Use Python comparison operators to compare objects. \n", + "- Use logical statements to perform multiple comparisons at once." ] }, { @@ -30,7 +30,7 @@ "id": "27111d44-d8ba-4393-bb63-7a1521a4a956", "metadata": {}, "source": [ - "## Prerequisites" + "### Prerequisites" ] }, { @@ -39,8 +39,8 @@ "metadata": {}, "source": [ "- Variables\n", - "- Mathematical Operations\n", - "- Data types" + "- Data types\n", + "- Mathematical Operations" ] }, { @@ -69,77 +69,93 @@ "| Operator | Definition | Example |\n", "| --------- | --------- | -------|\n", "| == | is equal to | ``a == b`` |\n", - "| ! = | is not equal to | ``a != b`` |\n", + "| ! = | is not equal to, ≠ | ``a != b`` |\n", "| > | is greater than | ``a > b`` |\n", "| < | is less than | ``a < b`` |\n", - "| >= | is greater than or equal to | ``a >= b``|\n", - "| <= | is less than or equal to | ``a <= b`` |\n", + "| >= | is greater than or equal to, ≥ | ``a >= b``|\n", + "| <= | is less than or equal to, ≤ | ``a <= b`` |\n", "| is | are the same object | ```a is b``` |\n", - "| in | the object contains another object | ```a in b``` |\n", - "\n", - "Watch out for the 'is equal to' comparison (```a == b```). It must be two equals signs. Using only one equals sign instead sets the value of varible ``a`` to the value of ``b``, it does not check if they are equal." + "| in | the object contains another object | ```a in b``` |" ] }, { "cell_type": "markdown", - "id": "8bceb3d5", + "id": "57a678ab", "metadata": {}, "source": [ - "> ```Python\n", - "> 4 > 2\n", + "Running a statement, such as:\n", "\n", - "Returns ``True``\n", + "`3 == 5`\n", "\n", - "> ```Python\n", - "> 5.1 < 3.6 \n", + "will return one of two outputs: `True` or `False`. In this case, this statement is False. \n", "\n", - "Returns ``False``\n", + "Although both the greater than (\">\") and less than (\"<\") mathematical operations are identical to those used in standard mathematical notation, the greater than or equal to operation (\"β‰₯\") is written with two characters, ```>=```. This is the same for the is not equal to (\"≠\") symbol, written instead as `!=`, or the is equal to symbol, written as `==`.\n", "\n", - ">```Python\n", - "> 4 >= 4 \n", + "Be especially careful with `==`. We know from our understanding of [variables](Variable_data_types.ipynb) that ```=``` is used in python to assign values to variable names, and so we cannot use it here, hence using double equal signs.\n", "\n", - "Returns ``True``" + "Comparison operators work for both numerical [data types](Variable_data_types.ipynb) in Python - integers and floats. " ] }, { "cell_type": "markdown", - "id": "732d5859-56b9-48d6-beff-8ee521d46879", + "id": "a84760ed", "metadata": {}, "source": [ - "We can see a few things from the above statements: firstly that running a comparison between two numbers in a code block outputs either 'True' if the expression is indeed true, or 'False' if not. Second, both the greater than (\">\") and less than (\"<\") mathematical operations are identical to those used in standard mathematical notation, while the greater than or equal to operation (\"β‰₯\") is written with two characters, ```>=```. Finally, we can see that this works for both numerical [data types](Variable_data_types.ipynb) in Python - integers and floats. \n", + "
\n", + "Comparing numbers: floats and integers\n", + "\n", + "The most basic use for comparisons is numerically, using integers or floats. You can compare integer data types with float data types, but not with strings. \n", + "\n", + "> ```Python\n", + "> 4 < 2\n", + "\n", + "Returns ``False``\n", + "\n", + "> ```Python\n", + "> 5.1 >= 3.6 \n", + "\n", + "Returns ``True``\n", "\n", - "What if we wanted to check if two values were exactly equal? **Be careful!** We know from our understanding of [variables](Variable_data_types.ipynb) that ```=``` is used in python to assign values to variable names, we cannot use it here. Instead:" - ] - }, - { - "cell_type": "markdown", - "id": "97afac99", - "metadata": {}, - "source": [ ">```Python\n", - "> 4 == 4\n", + "> 4 == 4.0\n", "\n", "Returns ``True``\n", "\n", + "This is pretty obvious, but it becomes especially useful with number stored in variables. \n", + "\n", + "If we have a very long piece of code where we are doing lots of maths, we probably won't know the exact value stored inside every variable, especially if its a long float, so instead we can refer to it by its variable name.\n", + "\n", ">```Python\n", - "> 4 != 4\n", + ">num_1 = 53.09127281\n", + ">\n", + ">num_1 > 10\n", "\n", - "Returns ``False``\n", + "Returns ``True``\n", "\n", ">```Python\n", - "> 3.1 != 3\n", + ">num_1 = 53.09127281\n", + ">num_2 = 53.0928382\n", + ">\n", + ">num_1 == num_2\n", + "\n", + "Returns ``True``\n", "\n", - "Returns ``True``" + "

" ] }, { "cell_type": "markdown", - "id": "c42c319f-594f-47a2-bb2f-535840c1ed80", + "id": "cf5fa523", "metadata": {}, "source": [ - "The double equals ```==``` is used to compare if two values are equal, while ```!=``` checks if two values are not equal.\n", + "
\n", + "Comparing other data types: strings and lists\n", + "\n", + "As well as comparing numbers, you can use comparison operators on strings and lists.\n", "\n", - "What about other data types? Let us try some examples of strings or lists using the ```==``` comparison operator.\n", + "Note that all parts of the string (including order of characters) and all parts of a list (including the order of elements and data type) need to be identical for the ```==``` operation to return 'True'. \n", + "\n", + "The operators `>`, `<`, `>=`, and `<=` comment only on the length of the list.\n", "\n", "> ```Python\n", "> \"CH4\" == \"CH4\"\n", @@ -151,15 +167,10 @@ "\n", "Returns ``False``. The numerals are not in the same order.\n", "\n", - ">```Python\n", - ">\"5\" == 5\n", - "\n", - "Returns ``False``. They are two different data types. The first is a string, the second is an integer. \n", - "\n", "> ```Python\n", - "> [2, 3, 5] == [2, 3, 4]\n", + "> [\"2\", 3, 4] == [\"2\", 3, 4.0]\n", "\n", - "Returns ``False``. The final item in the two lists are different.\n", + "Returns ``True``. All items in the two lists are equivalent.\n", "\n", ">```Python\n", "> [\"helium\" , \"neon\" , \"argon\"] == [\"helium\" , \"argon\" , \"neon\"]\n", @@ -169,15 +180,44 @@ ">```Python\n", "> [\"helium\" , \"neon\" , \"argon\"] == [\"helium\",\"neon\",\"argon\"]\n", "\n", - "Returns ``True``. The items in the lists are the same, and in the same order." + "Returns ``True``. The items in the lists are the same, and in the same order.\n", + "\n", + "

" ] }, { "cell_type": "markdown", - "id": "4239a695-24f5-4120-b42e-f7ca60b27aa2", + "id": "c42c319f-594f-47a2-bb2f-535840c1ed80", "metadata": {}, "source": [ - "Note that all parts of the string (including order of characters) and all parts of a list (including the order of elements) need to be identical for the ```==``` operation to return 'True'. There is an alternative comparison that can be made - what if we wanted to distinguish if those two lists not only contained the same elements in the same order but if they are exactly the same object (i.e. rather than just looking the same, they are actually the same 'behind the scenes')? For this, we can use ```is```:\n", + "
\n", + "Comparing different data types\n", + "\n", + "Most different data types, even if they have the same contents, will always yield a ``==`` comparison of False. An exception is floats and integers, which can be compared.\n", + "\n", + ">```Python\n", + ">\"5\" == 5\n", + "\n", + "Returns ``False``. They are two different data types. The first is a string, the second is an integer. \n", + "\n", + ">```Python\n", + ">5 == 5.0\n", + "\n", + "Returns ``True``. Floats and integers can be compared.\n", + "\n", + "

\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "71222469", + "metadata": {}, + "source": [ + "
\n", + "Identifying identical objects using is\n", + "\n", + "The comparitor `==` identifies if two objects have the same contents (in the same order), but what if we wanted to distinguish if they are alsso exactly the same object (i.e. rather than just looking the same, they are actually the same 'behind the scenes')? For this, we can use ```is```:\n", "\n", "> ```Python\n", ">x = [\"N\", \"H\", 3] \n", @@ -192,15 +232,20 @@ ">x = y\n", ">x is y\n", "\n", - "Returns ``True``. We have specifically reassigned the variable x to the value of y, and so now the ``is`` comparison is True. " + "Returns ``True``. We have specifically reassigned the variable x to the value of y, and so now the ``is`` comparison is True. \n", + "\n", + "

" ] }, { "cell_type": "markdown", - "id": "bcf9b010", + "id": "d4dfcd32", "metadata": {}, "source": [ - "``in`` has two uses - you will see it come back in another way when we do [for loops](../loops_functions/For_Loop_Lesson.ipynb). In this context, ``in`` checks if a certain object is contained within another object.\n", + "
\n", + "Finding contents using in\n", + "\n", + "``in`` has two uses - you will see it come back in another way when we do [for loops](../loops_functions/For_Loop_Lesson.ipynb). In this context, ``in`` checks if a certain object is contained within a string or list.\n", "\n", ">```Python\n", "> \"O\" in \"H2O\"\n", @@ -211,14 +256,19 @@ "> masses = [1.008, 12.011, 15.999]\n", "> 14.007 in masses\n", "\n", - "Returns ``False``" + "Returns ``False``\n", + "\n", + "

" ] }, { "cell_type": "markdown", - "id": "bf23f898", + "id": "bcf9b010", "metadata": {}, "source": [ + "
\n", + "Chaining together comparisons\n", + "\n", "You can also chain together these comparisons, but you need to be careful you don't get confused!\n", "\n", ">```Python\n", @@ -228,14 +278,14 @@ ">\n", "> a != b != c\n", "\n", - "Returns ``True`` because none of those values are the same. However if you add another variable\n", + "Returns ``True`` because none of those values are the same. However, it is NOT checking the comparison between a and c. You could run the following:\n", "\n", ">```Python\n", - "> d = 3\n", - ">\n", - "> a != b != c != d\n", + ">3 != 2 != 3\n", + "\n", + "Which would return ``True``, because it is only comparing the adjacent numbers. \n", "\n", - "Now returns ``False``, as the variables c and d contain the same value, so ``c!=d`` is ``False``." + "

" ] }, { @@ -243,21 +293,47 @@ "id": "75f79025", "metadata": {}, "source": [ - "
Exercise: Obtain a certain output\n", - "\n", - "In the comparisons in the code below, replace each __ with different comparators to get a True output.\n", + "
\n", + "
Exercise: Obtain a True output\n", + "
\n", + "In the comparisons in the code below, replace each -- with different comparison operators to get a True output.

\n", "\n", ">```Python\n", - ">atomic_no_of_nitrogen = 7\n", - ">atomic_no_of_fluorine = 9\n", + ">num_nitrogen = 7\n", + ">num_fluorine = 9\n", ">\n", - ">atomic_no_of_nitrogen -- atomic_no_of_fluorine\n", - ">atomic_no_of_fluorine >= atomic_no_of_nitrogen\n", - ">atomic_no_of_fluorine != atomic_no_of_nitrogen\n", - ">atomic_no_of_fluorine is atomic_no_of_fluorine\n", - ">atomic_no_of_nitrogen == atomic_no_of_nitrogen\n", + ">num_nitrogen -- num_fluorine\n", + ">num_fluorine -- num_nitrogen\n", + ">num_fluorine -- num_nitrogen\n", + ">num_fluorine -- num_fluorine\n", + ">num_nitrogen -- num_nitrogen\n", "\n", - "
" + "
\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "id": "146885b4", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", + "\n", + "```Python\n", + "num_nitrogen = 7\n", + "num_fluorine = 9\n", + "\n", + "num_nitrogen <= num_fluorine\n", + "num_fluorine != num_nitrogen\n", + "num_fluorine > num_nitrogen\n", + "num_fluorine is num_fluorine\n", + "num_nitrogen == num_nitrogen\n", + "```\n", + "\n", + "Any operators that return True in these contexts are correct. \n", + "\n", + "

" ] }, { @@ -265,7 +341,8 @@ "id": "bebc9cbb", "metadata": {}, "source": [ - "
Exercise: Test similarity \n", + "
\n", + "
Exercise: Test similarity \n", "\n", "On the following two variables, use Python comparisons to test the following:\n", "\n", @@ -276,6 +353,8 @@ "># Two different calculates values for the Rydberg constant \n", ">rydberg_1 = 10973731.56815712 # m^-1\n", ">rydberg_2 = 10973731.58615712 # m^-1\n", + "\n", + "
\n", "
" ] }, @@ -285,12 +364,12 @@ "metadata": {}, "source": [ "
\n", - " πŸ’‘ Click to view answer\n", + " Click to view answer\n", "\n", "1. The two values are not the same. You can check this using:\n", - ">```Python\n", - "> rydberg_1 == rydberg_2\n", - "Which will return ``False``.\n", + " >```Python\n", + " > rydberg_1 == rydberg_2\n", + " Which will return ``False``.\n", "\n", "2. ``rydberg_2`` is larger. You can test this by using either ``<`` or ``>``.\n", "\n", @@ -318,19 +397,31 @@ "id": "65de915b", "metadata": {}, "source": [ - "| Operator | Definition | Example |\n", + "| Operator | Definition | Example (x and y are comparisons) |\n", "| ----- | ---- | ----- |\n", - "| and | Both instances must be True to return True, otherwise will return False | ``a and b`` |\n", - "| or | Either instance can be True in order to return True. If both instances are False, will return False. | `` a or b `` |\n", - "| not | If the Boolean value of the instance is True, the program will return False. Essentially inverts the logic. | ``not b`` |" + "| and | Both instances must be True to return True, otherwise will return False | ``x and y`` |\n", + "| or | Either instance can be True in order to return True. If both instances are False, will return False. | `` x or y `` |\n", + "| not | If the Boolean value of the instance is True, the program will return False. Essentially inverts the logic. | ``not y`` |" ] }, { "cell_type": "markdown", - "id": "d954f269", + "id": "e9e3c414", "metadata": {}, "source": [ - "#### And\n", + "Remember, logic operators are used to perform multiple comparisons at once! For example:\n", + "\n", + ">```Python\n", + ">a == b and c > d" + ] + }, + { + "cell_type": "markdown", + "id": "c0b13b2c", + "metadata": {}, + "source": [ + "
\n", + "Using and\n", "\n", "When considering ``a and b``, where a and b are individual comparisons, a and b must both be True for the overall result to be True. \n", "\n", @@ -348,15 +439,18 @@ "\n", "The output would be ``False``, since the second statement ``z != 2`` is now False. A True and a False outputs a False. \n", "\n", - "If both parts of the statement were False, the output would also be False. " + "If both parts of the statement were False, the output would also be False. \n", + "\n", + "

" ] }, { "cell_type": "markdown", - "id": "06f35439-6217-4e18-a68b-e4375fa3025a", + "id": "d954f269", "metadata": {}, "source": [ - "#### Or\n", + "
\n", + "Using or\n", "\n", "When considering ``a or b``, where a and b are individual comparisons, only one of the two must be True for the whole statement to be True. If neither are True, the whole statement will be False.\n", "\n", @@ -377,20 +471,21 @@ "In order to get an output ``False``, both statements must be False:\n", "\n", ">```Python\n", - ">z > 3 or z != 2" + ">z > 3 or z != 2\n", + "\n", + "

\n", + "\n" ] }, { "cell_type": "markdown", - "id": "1c2b08e0-672b-46e7-b92e-ee9a35d69907", + "id": "6c93aafa", "metadata": {}, "source": [ - "#### Not\n", - "\n", - "Finally, not is slightly different - first it should be used before a statement, i.e. (```not a == 2```). \n", - "It can then be used to 'invert' the True or False behaviour of a statement: if a statement was true, not will make it False, or vice versa:\n", + "
\n", + "Using not\n", "\n", - "Explain a reason to use NOT.\n", + "Finally, not is slightly different. It should be used before a comparison statement, i.e. (```not a == 2```), and 'inverts' the True or False behaviour. If a statement was True, `not` will make it False, or vice versa.\n", "\n", ">```Python\n", "> not True\n", @@ -415,121 +510,115 @@ ">\n", ">\"Cr\" not in perovskite\n", "\n", - "Returns ``True``." + "Returns ``True``.\n", + "\n", + "

" ] }, { "cell_type": "markdown", - "id": "976d57c6", + "id": "1c2b08e0-672b-46e7-b92e-ee9a35d69907", "metadata": {}, "source": [ - " Watch out! Python evaluates operators according to a strict order: maths and comparison operators first, then logical operators (and, or, not). If you are getting error messages, try bracketing your 'not' and other logical operators to give them precedence. Try the following lines with and without the brackets and try to understand the order of operations.\n", + "
\n", + "Understanding order of comparisons\n", + "\n", + "Watch out! Python evaluates operators according to a strict order: maths and comparison operators first, then logical operators (and, or, not). If you are getting error messages, try bracketing your 'not' and other logical operators to give them precedence. Try the following lines with and without the brackets and try to understand the order of operations.\n", "\n", ">```Python\n", "> False == (not True)\n", ">\n", "> (True or False) == False\n", ">\n", - "> True == (True and False) == False" + "> True == (True and False) == False\n", + "\n", + "

" ] }, { "cell_type": "markdown", - "id": "0a5899ad-5b4a-439b-bd47-df83a6d37136", + "id": "ab2e19ee", "metadata": {}, "source": [ - "## Practice Questions" + "
\n", + "
Exercise: Logical outputs \n", + "
\n", + "What is the logical output of this piece of code?\n", + "

\n", + "\n", + ">```Python\n", + ">w = \"tungsten\"\n", + ">w == \"neon\" or w == \"iron\" or w == \"bismuth\" or w == \"tungsten\"\n", + "\n", + "
\n", + "
" ] }, { "cell_type": "markdown", - "id": "64410c65", + "id": "f8e5a7d6", "metadata": {}, "source": [ - "## Practice 1" + "
\n", + " Click to view answer\n", + "\n", + "The answer is True. Because each comparison is separated by `or`, only one of them has to be True for the overall output to be True. since the last comparison, `w == \"tungsten\"` is True, the overall output is True. \n", + "\n", + "

" ] }, { "cell_type": "markdown", - "id": "116cf3f9-74fa-46fe-a06c-ee5cec0a4b9b", + "id": "0a5899ad-5b4a-439b-bd47-df83a6d37136", "metadata": {}, "source": [ - "Write out and run the following lines of code. Insert the correct operator into the place marked 'BLANK', and/or predict the logical output." + "## Practice Questions" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "a827cfbe-7726-4a42-bb38-0468a752b998", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b3f749e9-674c-428c-8eeb-df549473ebae", + "cell_type": "markdown", + "id": "64410c65", "metadata": {}, - "outputs": [], "source": [ - "# QUESTION 2\n", - "# What is the logical output of this code?\n", - "\n", - "w = \"tungsten\"\n", - "w == \"neon\" or w == \"iron\" or w == \"bismuth\" or w == \"tungsten\"" + "### Practice 1" ] }, { - "cell_type": "code", - "execution_count": 9, - "id": "5c8f9c11", + "cell_type": "markdown", + "id": "116cf3f9-74fa-46fe-a06c-ee5cec0a4b9b", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "# QUESTION 3\n", - "# What is the logical output of this code? How can we change it to get the opposite?\n", + "Predict the logical output of this code, then write it out and run it to see if you are correct. How could we change it to get the opposite answer?\n", "\n", + "```Python\n", "a = 1\n", "b = 2\n", "c = 3\n", "d = a < c\n", "\n", - "a < b <= c and d == False" + "a < b <= c and d == False\n", + "```" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "5a4edc44", + "cell_type": "markdown", + "id": "7673c9de", "metadata": {}, - "outputs": [], "source": [ - "# ANSWERS\n", + "
\n", + " Click to view answer\n", + "\n", + "When working out logic, it is worth going through step by step. \n", "\n", - "# Question 1\n", - "## <, <= or != all work\n", - "atomic_no_of_nitrogen < atomic_no_of_fluorine\n", + "``a < b`` is True. ``b <= c`` is True. Therefore ``a < b <= c`` is True. \n", "\n", - "# Question 2\n", - "## TRUE\n", + "The variable `d` is set as `a < c`. `a < c` is True, therefore `d = True`. Therefore, in the second statement, since d is True, the comparison `d == False ` is False.\n", "\n", - "# Question 3\n", - "## Output is False\n", - "## First statement is True. Second statement is False. The overall is False.\n", - "### To make True, must change second statement to True. \n", - "### Achieve this by changing 'False' to 'True' in the second statement\n", - "a < b <= c and d == True" + "When using an `and` statement, both statements must be True to return True. Since the first statement is True and the second is False, the overall output is `False`.\n", + "\n", + "If you want to get the opposite answer, you need to make both statements True. You can do this by changing the second statement to ``d == True``.\n", + "\n", + "

" ] }, { @@ -555,7 +644,7 @@ "id": "f92f1120", "metadata": {}, "source": [ - "## Summary of Learning\n", + "## Summary\n", "\n", "- Python's comparison operators are ``==``, ``!=``, `>`, `<`, `>=`, and `<=`.\n", "- Python's logic operators are `and`, `or`, and `not`.\n", @@ -569,10 +658,10 @@ "| < | is less than | ``a < b`` |\n", "| >= | is greater than or equal to | ``a >= b``|\n", "| <= | is less than or equal to | ``a <= b`` |\n", - "| IS | are the same object | ```a is b``` |\n", - "| AND | Both instances must be True to return True, otherwise will return False | ``a and b`` |\n", - "| OR | Either instance can be True in order to return True. If both instances are False, will return False. | `` a or b `` |\n", - "| NOT | If the Boolean value of the instance is True, the program will return False. Essentially inverts the logic. | ``not b`` |\n", + "| is | are the same object | ```a is b``` |\n", + "| and | Both instances must be True to return True, otherwise will return False | ``x and y`` |\n", + "| or | Either instance can be True in order to return True. If both instances are False, will return False. | `` x or y `` |\n", + "| not | If the Boolean value of the instance is True, the program will return False. Essentially inverts the logic. | ``not y`` |\n", "\n", "- You can chain statements together, but be careful to work in order and obey the order Python evaluates operators.\n", "- Python evaluates operators in the order: maths and comparisons, then logic. You can clarify your intentions by using brackets. " diff --git a/lessons/variables/mathematical-operators.ipynb b/lessons/variables/mathematical-operators.ipynb index 4595f48..c60b72a 100644 --- a/lessons/variables/mathematical-operators.ipynb +++ b/lessons/variables/mathematical-operators.ipynb @@ -705,13 +705,13 @@ "metadata": {}, "source": [ "
\n", - "
Exercise: Import the module math and use multiple functions\n", + "
Exercise: Import the module math and use multiple functions\n", "
\n", "A right-angled triangle sits inside a circle, with its hypotenuse equal to the diameter of the circle. Write a program to calculate one of the angles, θ, of the triangle in degrees, given that the opposite edge of the triangle has length 2 cm and the circumference of the circle is 10 cm. Import the module ``math``.\n", "\n", "Useful information:\n", "\n", - "$circle \\ diameter = \\frac{\\pi}{circumference}$ \n", + "$circle \\ diameter = \\frac{circumference}{\\pi}$ \n", "\n", "$\\theta = sin^-1(\\frac{length\\ of\\ triangle\\ edge\\ opposite\\ \\theta}{length\\ of\\ triangle\\ hypotenuse})$\n", "\n", @@ -764,7 +764,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 1\n", + "### Question 1\n", "\n", "Find the velocity, $v$, of a N2 molecule with a mass, $m$ of 4.6×10-26 kg at a temperature, $T$, of 293 K, given the following equation,\n", "\n", @@ -804,7 +804,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Exercise 2\n", + "### Question 2\n", "\n", "The weak acid formic acid has a dissociation constant $K_a$ that is related to the concentration of H+ ions by the following relation, where $N$ is the amount of acid dissolved.\n", "\n", @@ -879,7 +879,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 3\n", + "### Question 3\n", "\n", "The code below will not work. Identify why and correct it so that it does work. Run it yourself, and keep looking at your error message to figure out what is wrong. You should get an output of `4.86cm`.\n", "\n", From a94edf4cde05b5411fe761192066440ac9f983f4 Mon Sep 17 00:00:00 2001 From: m-rivera Date: Mon, 4 Aug 2025 09:03:09 +0100 Subject: [PATCH 21/94] rename variables and close dropdowns --- .../variables/mathematical-operators.ipynb | 91 ++++--------------- 1 file changed, 20 insertions(+), 71 deletions(-) diff --git a/lessons/variables/mathematical-operators.ipynb b/lessons/variables/mathematical-operators.ipynb index c60b72a..d168653 100644 --- a/lessons/variables/mathematical-operators.ipynb +++ b/lessons/variables/mathematical-operators.ipynb @@ -60,9 +60,9 @@ "\n", ">``` Python \n", "> pi = 3.141592653589\n", - "> avogadros_number = 6.02214e23\n", + "> avogadro = 6.02214e23\n", ">\n", - "> my_sum = pi * avogadros_number * 4" + "> product = pi * avogadro * 4" ] }, { @@ -75,12 +75,12 @@ "You can do maths in a variable, which can be called inside a print statement.\n", "\n", ">```Python\n", - "> H = 1.008\n", - "> O = 15.999\n", + "> mass_H = 1.008\n", + "> mass_O = 15.999\n", ">\n", - "> H2O = 2 * H + O\n", + "> mass_H2O = 2 * H + O\n", "> \n", - "> print(\"The mass of water is: \" , H2O) \n", + "> print(\"The mass of water is: \" , mass_H2O) \n", "\n", "\n", "The output of this chunk of code is:
\n", @@ -101,9 +101,9 @@ "You can do maths within the print statement.\n", "\n", ">```Python\n", - "> H = 1.008\n", + "> mass_H = 1.008\n", ">\n", - "> print(\"The mass of a hydrogen molecule is: \", 2 * H)\n", + "> print(\"The mass of a hydrogen molecule is: \", 2 * mass_H)\n", "\n", "The output of this code is:
\n", " The mass of a hydrogen molecule is: 2.016 \n", @@ -124,16 +124,16 @@ "You can do maths inside f strings. Just like previously, we can store the maths inside a variable and then call it from the f string, or do the maths within the f string itself.\n", "\n", "> ```Python\n", - "> C = 12.008\n", - "> H = 1.008\n", + "> mass_C = 12.008\n", + "> mass_H = 1.008\n", ">\n", - "> methane = C + 4 * H\n", + "> mass_methane = mass_C + 4 * mass_H\n", ">\n", "> # Calling up a variable that has already been calculated\n", - "> print(f\"The mass of methane is: {methane:.2f}\")\n", + "> print(f\"The mass of methane is: {mass_methane:.2f}\")\n", ">\n", "> # Doing maths inside an f string\n", - "> print(f\"The mass of ethane is: {2 * C + 6 * H:.5f}\")\n", + "> print(f\"The mass of ethane is: {2 * mass_C + 6 * mass_H:.5f}\")\n", "\n", "The output of this is:
\n", ">```\n", @@ -150,7 +150,7 @@ "metadata": {}, "source": [ "
\n", - "
Exercise 1: Addition and Subtraction\n", + "
Exercise 1: Addition and Subtraction\n", "
\n", "Using variables to store the atomic masses of hydrogen, carbon, oxygen, and nitrogen, write a program to calculate the molecular masses of the following species.\n", "\n", @@ -208,7 +208,7 @@ "metadata": {}, "source": [ "
\n", - "
Exercise 2: Multiplication and Division \n", + "
Exercise 2: Multiplication and Division \n", "
\n", "The interaction potential between two isolated ions in water, Na+ (ionic radius = 116 pm) and Cl+ (ionic radius = 157 pm) is given by the following equation:\n", "\n", @@ -272,7 +272,7 @@ "metadata": {}, "source": [ "
\n", - "
Exercise 3: Exponents\n", + "
Exercise 3: Exponents\n", "
\n", "The equilibrium constant of an equation\n", "\n", @@ -393,63 +393,12 @@ "

" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - " Checking data types using type() \n", - "\n", - "If you are getting TypeErrors (whether is has been made obvious by Python or not), you might want to check what type your data is. You can do this using the Python function ``type()``, which takes an input inside the braackets, and returns what type it is. \n", - "\n", - "For example:\n", - "\n", - ">```Python\n", - ">\n", - ">num = \"90.0\"\n", - ">print(type(num))\n", - ">\n", - "\n", - "Will return: \n", - "\n", - "Telling you that the variable ``num`` is a string, and not an integer or a float. \n", - "\n", - "You can use ``type()`` on any data type, and it becomes incredibly useful to check and debug your code, especially when you are writing longer programs. Often, simple issues with data type can lead to code that does not work. For example, try writing ``print(type(6/2))``. You would expect the result of 6/2 to be an integer, but the division operator instead always returns a float. Certain functions can only take integer values, not floats, so when you try to use ``6/2`` as an input, you would get a TypeError. \n", - "\n", - "

" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - " Changing data types (casting) \n", - "\n", - "If the contents of your string are numerical, you are able to change it back into a float or integer. You do this with the ``float()`` or ``int()`` functions. \n", - "\n", - ">```Python\n", - ">\n", - ">num = \"90.0\"\n", - ">\n", - ">num = float(num) # The string 'num' is now a floating point value\n", - ">num = int(num) # The float 'num' is now an integer\n", - ">num = str(num) # The float 'num' is a string again\n", - ">\n", - "\n", - "Write out this code and print the type that 'num' is at each point. Be warned though, if your string is a float whole number (such as 90.0), you cannot change it straight to an integer. You must first convert it into a float. \n", - "\n", - "You can also change a string to and from a list, but be careful! If you case ``list()`` on the cariable ``a = 1,2,3`` you will get the list ``a = ['1', ',', '2', ',', '3']``, where every comma has also been added into the list as a string. Each of the numbers are also added into the list as strings.\n", - "\n", - "

" - ] - }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", - "
Exercise: Maths errors \n", + "
Exercise: Maths errors \n", "
\n", "You are writing a program to calculate the mean of some data. Which of the below programs will result in an error, and why?\n", "\n", @@ -567,9 +516,9 @@ "> ```Python\n", "> from math import log10\n", ">\n", - "> H_conc = 1.0e-7\n", + "> conc_H = 1.0e-7\n", ">\n", - "> pH = log10(H_conc)\n", + "> pH = log10(conc_H)\n", "> pH *= -1\n", ">\n", "> print(pH)\n", @@ -604,7 +553,7 @@ "metadata": {}, "source": [ "
\n", - "
Exercise: Importing a function \n", + "
Exercise: Importing a function \n", "
\n", "Using the relation\n", "\n", From 809774b5507db7db8f8cf1220aa88ba373330e80 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 4 Aug 2025 09:27:43 +0100 Subject: [PATCH 22/94] Added links and fixed Header error (H1-H3) --- lessons/loops_functions/For_Loop_Lesson.ipynb | 2 +- lessons/variables/Comparisons.ipynb | 6 +++--- lessons/variables/Variable_data_types.ipynb | 13 +++++++++++-- lessons/variables/mathematical-operators.ipynb | 8 ++++---- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/lessons/loops_functions/For_Loop_Lesson.ipynb b/lessons/loops_functions/For_Loop_Lesson.ipynb index 67756b1..51d51ba 100644 --- a/lessons/loops_functions/For_Loop_Lesson.ipynb +++ b/lessons/loops_functions/For_Loop_Lesson.ipynb @@ -1096,7 +1096,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.3" + "version": "3.12.9" } }, "nbformat": 4, diff --git a/lessons/variables/Comparisons.ipynb b/lessons/variables/Comparisons.ipynb index 4c92c32..c26bf2d 100644 --- a/lessons/variables/Comparisons.ipynb +++ b/lessons/variables/Comparisons.ipynb @@ -38,9 +38,9 @@ "id": "98242630-1ee1-4fe6-bd25-d3bd5805c7ee", "metadata": {}, "source": [ - "- Variables\n", - "- Data types\n", - "- Mathematical Operations" + "- [Variables](/lessons/variables/Variable_data_types.ipynb)\n", + "- [Data types](/lessons/variables/Variable_data_types.ipynb#types_of_variables)\n", + "- [Mathematical Operations](/lessons/variables/mathematical-operators.ipynb)" ] }, { diff --git a/lessons/variables/Variable_data_types.ipynb b/lessons/variables/Variable_data_types.ipynb index 1c14824..0865bd6 100644 --- a/lessons/variables/Variable_data_types.ipynb +++ b/lessons/variables/Variable_data_types.ipynb @@ -419,6 +419,15 @@ "Add in some more worked examples\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## f-strings\n", + "\n", + "Place holder to allow links" + ] + }, { "cell_type": "code", "execution_count": null, @@ -432,7 +441,7 @@ "provenance": [] }, "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "base", "language": "python", "name": "python3" }, @@ -446,7 +455,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.12.9" } }, "nbformat": 4, diff --git a/lessons/variables/mathematical-operators.ipynb b/lessons/variables/mathematical-operators.ipynb index d168653..4cb84e1 100644 --- a/lessons/variables/mathematical-operators.ipynb +++ b/lessons/variables/mathematical-operators.ipynb @@ -11,15 +11,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Learning outcomes\n", + "## Learning outcomes\n", "\n", "- Develop familiarity with basic mathematical operations in Python\n", "- Understand how to access some additional, more complex mathematical operations\n", "\n", - "### Prerequisites\n", + "## Prerequisites\n", "\n", - "- Variables and their data types\n", - "- Printing f-strings\n" + "- [Variables and their data types](/lessons/variables/Variable_data_types.ipynb)\n", + "- [Printing f-strings](/lessons/variables/Variable_data_types.ipynb#f-strings)\n" ] }, { From a56f6a41d5426c8a262f7714c5e64b0100ac030e Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 4 Aug 2025 09:32:48 +0100 Subject: [PATCH 23/94] Fixed anchor link --- lessons/variables/Comparisons.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lessons/variables/Comparisons.ipynb b/lessons/variables/Comparisons.ipynb index c26bf2d..15f9707 100644 --- a/lessons/variables/Comparisons.ipynb +++ b/lessons/variables/Comparisons.ipynb @@ -39,7 +39,7 @@ "metadata": {}, "source": [ "- [Variables](/lessons/variables/Variable_data_types.ipynb)\n", - "- [Data types](/lessons/variables/Variable_data_types.ipynb#types_of_variables)\n", + "- [Data types](/lessons/variables/Variable_data_types.ipynb#types-of-variables)\n", "- [Mathematical Operations](/lessons/variables/mathematical-operators.ipynb)" ] }, From 0a91506e3e3b72fba143e78696e1f0b0c43450c4 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Mon, 4 Aug 2025 09:36:03 +0100 Subject: [PATCH 24/94] applied formatting to for loop lesson --- lessons/loops_functions/For_Loop_Lesson.ipynb | 311 ++++++++++-------- 1 file changed, 178 insertions(+), 133 deletions(-) diff --git a/lessons/loops_functions/For_Loop_Lesson.ipynb b/lessons/loops_functions/For_Loop_Lesson.ipynb index 67756b1..c16cd7b 100644 --- a/lessons/loops_functions/For_Loop_Lesson.ipynb +++ b/lessons/loops_functions/For_Loop_Lesson.ipynb @@ -99,14 +99,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Examples: Basic ``for`` loops" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Example 1: Maths on a list of numbers\n", + "
\n", + "Iterating to perform many maths operations\n", "\n", "``for`` loops can iterate through lists containing both strings and numbers. When iterating through lists of floats or integers, you can then perform maths operations on each item. You could then append it to a new list to use later.\n", "\n", @@ -132,14 +126,17 @@ "\n", "In this piece of code, we are converting pressure in mmHg to bar. Each value in the list ``pressure_mmHg`` is converted into bar, printed, and appended into a new list which contains all the associated values in bar. This list can then be used throughout the rest of the code.\n", "\n", - "The empty list ``pressure_bar`` is first defined outside of the loop. If it was defined inside the loop, it would be re-defined on every loop empty again. Try it yourself. " + "The empty list ``pressure_bar`` is first defined outside of the loop. If it was defined inside the loop, it would be re-defined on every loop empty again. Try it yourself. \n", + "\n", + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Example 2: Iterating through a string\n", + "
\n", + "Iterating through a string\n", "\n", "``for`` loops can also iterate over items in a string.\n", "\n", @@ -150,14 +147,17 @@ " print(letter)\n", "```\n", "\n", - "This has limited use for Chemistry purposes, but it is good to be aware of." + "This has limited use for Chemistry purposes, but it is good to be aware of.\n", + "\n", + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Example 3: Iterating using nested lists\n", + "
\n", + "Iterating using nested lists\n", "\n", "You can also iterate over nested lists, however it is important to keep in mind that the nested list itself is the item you are referring to. You can refer to items within the nested list by using square brackets. Try out this code:\n", "\n", @@ -172,14 +172,17 @@ ">\n", ">print(molecule_mass)\n", "\n", - "In this program, each nested list in ``bimolecular_atom_masses`` is assigned the temporary variable name ``molecule``. To refer to an item within this nested list, you must refer to it as ``molecule[0]`` or ``molecule[1]``, where the square bracketted number refers to the item's position within the list. Remember that Python is zero-indexed, so the first item in a list is called '0', the second item is called '1' and so on. " + "In this program, each nested list in ``bimolecular_atom_masses`` is assigned the temporary variable name ``molecule``. To refer to an item within this nested list, you must refer to it as ``molecule[0]`` or ``molecule[1]``, where the square bracketted number refers to the item's position within the list. Remember that Python is zero-indexed, so the first item in a list is called '0', the second item is called '1' and so on. \n", + "\n", + "

\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Example 4: ``if`` statements within loops\n", + "
\n", + "Combining loops and conditional statements\n", "\n", "You can test a condition by using an `if` statement within your ``for`` loop. For example, to find outliers in your data.\n", "\n", @@ -198,21 +201,18 @@ "The output is:\n", " 37.2 is an outlier \n", "\n", - "We could also use loops to calculate the mean and standard deviation!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Practice 1: Basic ``for`` Loops" + "We could also use loops to calculate the mean and standard deviation!\n", + "\n", + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
Task 1: Write a basic loop \n", + "
\n", + "
Task 1: Write a basic loop \n", + "
\n", "\n", " Write a code that prints out each item in the following list, using a ``for`` loop. Then answer the following True/False questions.\n", "\n", @@ -222,9 +222,15 @@ "2. The variable ``gas_list`` does not change on each loop.\n", "3. The ``for`` statement does not need a colon.\n", "\n", - "
\n", - "\n", - "
Click here to view the answers \n", + "

\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", "Here is an example of the code you should have written:\n", "\n", @@ -237,19 +243,16 @@ "2. True. The variable ``gas_list`` is the same throughout the loop.\n", "3. False. The end of every ``for`` statement requires a colon, otherwise Python will throw an error.\n", "\n", - "\n", - "
\n", - "\n", - "
\n", - "\n" + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
Task 2: Understanding a Loop \n", - "\n", + "
\n", + "
Task 2: Understanding a Loop \n", + "
\n", "In the lab you are making methyl benzoate using the scheme below, starting with 3 g of benzoic acid. Five scientists repeat the reaction, and get the following yields of product: \n", "\n", "2.5 g, 2.7 g, 3.1 g, 1.6 g, 4 g. \n", @@ -261,9 +264,15 @@ "- Percentage yield is between 50 % and 100 % - print that the yield is good. \n", "- Percentage yield is over 100% - print a statement that the product is likely impure.\n", "\n", - "
\n", - "\n", - "
Click here to see a possible solution to Task 2 \n", + "

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", ">```Python\n", ">product_mass_list = [2.5,2.7,3.1,1.6,4]\n", @@ -281,17 +290,16 @@ "> elif percent_yield >= 100:\n", "> print(\"Likely Impure\")\n", "\n", - "
\n", - "\n", - "
" + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
Task 3: Understanding a Loop \n", - "\n", + "
\n", + "
Task 3: Understanding a Loop \n", + "
\n", "You have a series of temperature measurements from your reaction in degrees C and you want to print all of them out in Kelvin. One of your colleagues writes some code but it doesn't seem to be working. Can you identify the problem and fix the code?\n", "\n", ">```Python\n", @@ -307,7 +315,15 @@ "\n", "
\n", "\n", - "
Click here to see a possible solution to Task 3 \n", + "

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", "Remember that the items that you want to do each time you go around the for loop need to be indented. In the example the print statement is not indented and so is not executed each time, but only one the loop is finished. You can fix the code just by indenting the print statement with the tab key.\n", ">```Python\n", @@ -315,11 +331,8 @@ ">for temperature_C in temperature_measurements:\n", "> temperature_K = temperature_C + 273.15\n", "> print(f\"Temperature: {temperature_K}Β°C\")\n", - ">```\n", - "\n", - "
\n", "\n", - "
" + "

" ] }, { @@ -387,7 +400,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Example 1: Using ``zip()``\n", + "
\n", + "Zipping a list and a nested list\n", "\n", "The ``zip()`` function takes two or more lists and associates them element-wise with each other, assigning a temporary variable name to each item as it does so. In this way, we can access two lists and their contents at the same time. It is important that the two lists have the same number of entries, or this will not work.\n", "\n", @@ -407,14 +421,16 @@ ">print(\"This is the end of the loop.\")\n", "\n", "You will see that for each string within the list `molecules` and for each list within the list `masses`, we can call both items at the same time. For nested lists, we can call entries within the nested lists using square brackets. Remember that due to Python's zero-indexing, the first item in the nested list has to be called with the number '0' and so on. \n", - "\n" + "\n", + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Example 2: Zipping more than 2 lists\n", + "
\n", + "Zipping more than 2 lists\n", "\n", "You can zip more than just two lists together. Copy out and run this code:\n", "\n", @@ -427,14 +443,16 @@ "> print(f\"The mass of {name} is {mass}. It has {proton_number} protons.\")\n", "\n", "Here, we have associated 3 lists element-wise, and are able to refer to all three temporary variables within the loop.\n", - "\n" + "\n", + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Example 3: Using ``enumerate``\n", + "
\n", + "Using enumerate to find a list index\n", "\n", "You have a very long list of amino acids, and you want to find the position of the amino acid \"Proline\".\n", "\n", @@ -449,22 +467,18 @@ "\n", " Proline is at position 14 in the list \n", "\n", - "If you then had another list of corresponding masses, you could then identify which mass belonged to proline and set it as a useful variable. For example, from a the list of masses called ``amino_acid_masses`` you could retrieve and define the variable ``mass_proline = amino_acid_masses[14]``." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Practice: Using zip() and enumerate()" + "If you then had another list of corresponding masses, you could then identify which mass belonged to proline and set it as a useful variable. For example, from a the list of masses called ``amino_acid_masses`` you could retrieve and define the variable ``mass_proline = amino_acid_masses[14]``.\n", + "\n", + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Practice Task: Comparing nearly-identical lists\n", - "\n", + "
\n", + "
Exercise: Compare near-identical lists \n", + "
\n", "Two minerals in the same series have very similar formulas. Write a program to compare the two and identify where they differ. Also identify the index at which they differ.\n", "\n", "```Python\n", @@ -473,7 +487,16 @@ "mineral_2 = [\"Pb\", \"Pb\", \"Cu\", \"Cr\", \"O\", \"O\", \"O\", \"O\", \"P\", \"O\", \"O\", \"O\", \"O\", \"O\", \"H\"]\n", "```\n", "\n", - "
Click to view a potential answer \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", "You can do this by first zipping the two lists to compare element-wise, then appending both elements to another list in order to find the discrepancy. It is pretty obvious when using fairly short lists of strings, but imagine if you were using huge arrays of numbers - it would take a lot longer playing spot-the-difference with that!\n", "\n", @@ -501,7 +524,7 @@ "\n", "This potential solution uses ``zip()``, ``enumerate``, and nested lists. You can see how you can combine lots of aspects of Python to get a more powerful code.\n", "\n", - "
" + "

" ] }, { @@ -545,14 +568,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Examples: Using ``range()``" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Example 1/2/3\n", + "
\n", + "Predicting range() output\n", "\n", "Write out and run the following for loops. Make sure to look at what number it starts and ends at.\n", "\n", @@ -561,24 +578,39 @@ " print(\"Count: \", x)\n", "```\n", "\n", + "The code above will first print `Count: 2`, and then print every integer number up to and including `Count: 9`. It will not print the number 10. This is because of Python's zero-indexing. It does print 8 numbers overall. \n", + "\n", "```Python\n", "for x in range (10,-1,-1):\n", " print(\"Count: \", x)\n", "```\n", "\n", + "The code above will first pring `Code: 10`, and then count backwards in integer numbers down to `Count: 0`. It will not print the number -1. \n", + "\n", "```Python\n", - "for x in range(3,7,2):\n", + "for x in range(3,9,2):\n", " print(\"Count in twos: \", x)\n", "```\n", "\n", - "This loop stops at the number 5. This is because the end of the range is 6, but because it is counting in twos, it does not make it there. Watch out for these 0-indexing errors. " + "This code will print the following:\n", + "\n", + "```\n", + "Count in twos: 3\n", + "Count in twos: 5\n", + "Count in twos: 7\n", + "```\n", + "\n", + "It starts ar the number 3 and counts upwards in twos. The final number we have given in in the code is the number 9, however because of Python's zero-indexing, this really corresponds to the number 8, and so the loop stops after only 3 iterations and does not print 'CountL 9'.\n", + "\n", + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Example 4: Creating a list using ``for`` loops\n", + "
\n", + "Creating a list using loops\n", "\n", "If you want to quickly create a list containing lots of numbers, you could use a ``for`` loop. In the following example, I am creating a list of the values of ml, the magnetic quantum number, for an f orbital. This takes values of -2 to 2.\n", "\n", @@ -591,14 +623,16 @@ "\n", "print(ml_d_orbital)\n", "```\n", - "\n" + "\n", + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Example 4: Iterating over the length of a list using ``len()``\n", + "
\n", + "Iterating the length of a list using len()\n", "\n", "You can use the built-in Python function ``len()`` to find the length of a list. You could then iterate for the length of the list.\n", "\n", @@ -612,14 +646,17 @@ "\n", "Here, we have a list of strings. I want to do a calculation the same number of times as is in my list, plus three more times. By using ``len()``, I can achieve this. \n", "\n", - "Note! In this case, the temporary variable ``index`` does not refer to items within ``atom_list``, but is an index created from the ``range()`` function." + "Note! In this case, the temporary variable ``index`` does not refer to items within ``atom_list``, but is an index created from the ``range()`` function.\n", + "\n", + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Example 5: Creating an empty nested list\n", + "
\n", + "Creating an empty nested list\n", "\n", "In one of my projects I would like to create a list of empty coordinates to use later. I want the coordinate [0,0,0] repeated 1000 times. Instead of writing it out manually, I use a ``for`` loop. Copy out and run this code. Check the correct number of coordinates are being outputted, then change it to create a list of 1000 empty coordinates.\n", "\n", @@ -638,22 +675,18 @@ "\n", "For the purposes of testing that my program will work, I have used the number '10', however when I want to run it for real, I can make this number as large as I want.\n", "\n", - "If you have not seen the syntax ``[0]*3``, all it means is to create a list comprised of '0' three times. It is a quicker way of creating large lists of the same number. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Practice Questions" + "If you have not seen the syntax ``[0]*3``, all it means is to create a list comprised of '0' three times. It is a quicker way of creating large lists of the same number. \n", + "\n", + "

\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
Task 1: Correct the error \n", - "\n", + "
\n", + "
Exercise: Task 1: Correct the error \n", + "
\n", "Try the following for loops. They will return an error, try to figure out why.\n", "\n", ">```Python\n", @@ -666,38 +699,53 @@ ">for x in range(5.5):\n", "> print(x)\n", "\n", - "
Click to see potential answers \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", "The first example will not return any output, as it does not know it needs to count down. Add the number '-1' separated by a comma to the 'range()' function to correct it.\n", "\n", "The second example returns an error, because the ``range()`` function cannot handle float numbers. It also cannot jump in floats.\n", "\n", - "\n", - "
\n", - "
" + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
Task 2: List certain elements using ``range`` \n", - "\n", + "
\n", + "
Exercise: List certain elements using ``range`` \n", + "
\n", "In the neutral state, elements higher than Lanthanum (atomic number = 57) contain filled or partially-filled f orbitals. Quickly create a list of atomic numbers of all elements (up to and including Nobelium at 102) of elements containing f electrons. \n", "\n", "\n", - "
Click to see a potential answer \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", "
\n", "\n", ">``` Python\n", "># Empty list of atomic weights for all elements with f electrons in the neutral state\n", - ">eleme_f_elec = []\n", + ">f_electrons = []\n", ">\n", ">for i in range(58, 103):\n", - "> eleme_f_elec.append(i)\n", + "> f_electrons.append(i)\n", ">\n", - ">print(eleme_f_elec)\n", + ">print(f_electrons)\n", "\n", "First we create an empty list. The element Cerium, just after Lanthanum, is the first element with f electrons, so it is the start of the range. Nobelium, with atomic number 102, is the last element, however because of Python's 0-indexing, we must set the final value as 103, not 102. The output of this is a list of elemental atomic numbers:\n", "\n", @@ -705,9 +753,7 @@ "\n", "Think further: What if we only wanted certain elements within this, for example only elements with valence f electrons, how could we do this? We could also make this list more helpful by using a dictionary of elemental symbols associated with each atomic number to exchange each number to a elemental symbol, making the list far more intuitive.\n", "\n", - "
\n", - "\n", - "
" + "

" ] }, { @@ -743,38 +789,33 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Example 1: Multiplying together every combination from two lists\n", + "
\n", + "Exhaustive multiplication - combining every item with every other item\n", "\n", - "Below is a piece of code with two lists. Every number in the first list is multiplied by every value in the second, exhausting every possibility. This is one of the easiest ways to visualise a nested ``for`` loop." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "Below is a piece of code with two lists. Every number in the first list is multiplied by every value in the second, exhausting every possibility. This is one of the easiest ways to visualise a nested ``for`` loop.\n", + "\n", + "```Python\n", "numbers = [2, 3, 4]\n", "multipliers = [5, 6, 7]\n", "\n", "for n in numbers:\n", " for m in multipliers:\n", " ans = n * m\n", - " print(f\"{n} * {m} = {ans}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this example, we can see that the first value from the list 'numbers' is taken, and is used to multiply by each value within 'multipliers'. Then the loop moves on to the second value in 'numbers' and again multiplies by all three values in 'multipliers'. \n" + " print(f\"{n} * {m} = {ans}\")\n", + "```\n", + "\n", + "In this example, we can see that the first value from the list 'numbers' is taken, and is used to multiply by each value within 'multipliers'. Then the loop moves on to the second value in 'numbers' and again multiplies by all three values in 'multipliers'. \n", + "\n", + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Example 2: Identifying items repeated in two lists\n", + "\n", + "
\n", + "Identifying items repeated in two lists\n", "\n", "You have two lists and want to make sure than none are repeated from one list to the other. You could use nested lists to check every combination of th two lists.\n", "\n", @@ -788,14 +829,17 @@ " print(i)\n", "```\n", "\n", - "The output would correctly identify that both ``CO2`` and ``HCN`` are repeated. " + "The output would correctly identify that both ``CO2`` and ``HCN`` are repeated. \n", + "\n", + "

\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Example 3\n", + "
\n", + "Creating a list of coordinates\n", "\n", "Create a list of 2-dimensional coordinates for every point in a grid running from x = o to x = 2 and from y = 0 to y = 4.\n", "\n", @@ -824,13 +868,7 @@ " [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4]] \n", "\n", "Think further: If we wanted to plot these positions, we could do this using the Python module ``matplotlib.pyplot``, which is discussed in a further [tutorial](/lessons/common_libs/Matplotlib_Documentation.ipynb).\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ + "\n", "This example highlights a common issue of loops, repeating the same loop several times. In this example we can do away with the first two loops that generate the xaxis by combining them with the nested loop.\n", "\n", "It is always a good idea to check your code for extra loops that could be combined into one. It can often improve the efficiency of your code\n", @@ -849,7 +887,9 @@ " coord_grid.append([x_coord,y_coord])\n", "\n", "print(coord_grid)\n", - "```" + "```\n", + "\n", + "

\n" ] }, { @@ -930,6 +970,11 @@ "Notice that we have used the [logic operator](../variables/Comparisons.ipynb) ``not`` to indicate that we are ending the loop for every molecule that does not contain an oxygen." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, { "cell_type": "markdown", "metadata": {}, @@ -955,14 +1000,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Practice Problems Covering For Loops" + "## Further Practice" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Practice 1\n", + "### Question 1\n", "\n", "The workfunction of a metal is the energy required by an incoming photon to remove an electron from its surface. The energy of a photon in J can be calculated using: \n", "\n", @@ -1006,7 +1051,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Practice 2\n", + "### Qeustion 2\n", "\n", "Some IR data has been retrieved after a lab. Every peak retrieved by the system has been saved as a list of wavelengths (in cm-1) and a separate list of corresponding transmittance. \n", "\n", From c610f040a24e63bfcd0841d388ee222b59d81182 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Mon, 4 Aug 2025 09:37:38 +0100 Subject: [PATCH 25/94] format for loop lesson --- lessons/loops_functions/For_Loop_Lesson.ipynb | 33 ++++++------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/lessons/loops_functions/For_Loop_Lesson.ipynb b/lessons/loops_functions/For_Loop_Lesson.ipynb index c16cd7b..ad576be 100644 --- a/lessons/loops_functions/For_Loop_Lesson.ipynb +++ b/lessons/loops_functions/For_Loop_Lesson.ipynb @@ -778,13 +778,6 @@ "If you are struggling to understand nested loops, have a look at the [flowcharts](../solving_problems/flowcharts.ipynb) lesson." ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Examples: Nested loops" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -942,14 +935,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Examples" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Example 1: Only printing molecules containing 'O'\n", + "
\n", + "Using continue\n", "\n", "To retrieve only molecules containing oxygen, this code uses a ``continue`` statement. \n", "\n", @@ -967,19 +954,17 @@ "H2O
\n", "CO2
\n", "\n", - "Notice that we have used the [logic operator](../variables/Comparisons.ipynb) ``not`` to indicate that we are ending the loop for every molecule that does not contain an oxygen." + "Notice that we have used the [logic operator](../variables/Comparisons.ipynb) ``not`` to indicate that we are ending the loop for every molecule that does not contain an oxygen.\n", + "\n", + "

" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Example 2: Only print the first molecule containing 'O'\n", + "
\n", + "Using break\n", "\n", "To retrieve onlyt the first molecule that contains an oxygen atom, this code uses ``break``.\n", "\n", @@ -993,7 +978,9 @@ "print(\"This represents the rest of the code\")\n", "```\n", "\n", - "Notice that in this code, we haven't used ``not``, and instead placed ``print()`` within the ``if`` statement. This allows the program to first print 'H2O' before breaking out of the loop. It is really important to understand which parts of your code are within which statement, and the order in which they occur. If you are struggling to imagine it, try creating or looking at some [flowcharts](../solving_problems/flowcharts.ipynb)." + "Notice that in this code, we haven't used ``not``, and instead placed ``print()`` within the ``if`` statement. This allows the program to first print 'H2O' before breaking out of the loop. It is really important to understand which parts of your code are within which statement, and the order in which they occur. If you are struggling to imagine it, try creating or looking at some [flowcharts](../solving_problems/flowcharts.ipynb).\n", + "\n", + "

" ] }, { From b12e137ab478bbc7db16d15ab900d4da19de65c2 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 4 Aug 2025 09:53:31 +0100 Subject: [PATCH 26/94] Moved basics.md to more logical place --- lessons/basics.md | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 lessons/basics.md diff --git a/lessons/basics.md b/lessons/basics.md deleted file mode 100644 index ed1d235..0000000 --- a/lessons/basics.md +++ /dev/null @@ -1,3 +0,0 @@ -# Getting Started with Python - -Here, you will find how to start running Python. From b33445f966ee67f6a366adb0d8ff382536c7eb93 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 4 Aug 2025 09:53:57 +0100 Subject: [PATCH 27/94] Added some more text on basics --- lessons/basics/basics.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 lessons/basics/basics.md diff --git a/lessons/basics/basics.md b/lessons/basics/basics.md new file mode 100644 index 0000000..337056a --- /dev/null +++ b/lessons/basics/basics.md @@ -0,0 +1,9 @@ +# Getting Started with Python + +Here, you will find how to start running Python. + +## What is Python + +[Python](https://en.wikipedia.org/wiki/Python_(programming_language)) is an interepted language that is widely used. + +Due to this popularity there are many ways to install and to use it. In the following sections we will guide you on how to install and use Python \ No newline at end of file From 3469a7e9e4ebe2e1b55b6676a70b720206fab77c Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 4 Aug 2025 10:20:32 +0100 Subject: [PATCH 28/94] Updated installation of python Instructions for: miniforge anaconda basic python --- lessons/basics/write_run_python.md | 66 ++++++++++++++++++++++++++++-- 1 file changed, 62 insertions(+), 4 deletions(-) diff --git a/lessons/basics/write_run_python.md b/lessons/basics/write_run_python.md index ac3fe47..a1e25ba 100755 --- a/lessons/basics/write_run_python.md +++ b/lessons/basics/write_run_python.md @@ -1,18 +1,76 @@ # Writing and Running a Python Program + ## Prerequisites + None. + ## What is a Python Program? -Python programs are sets of instructions that a computer can follow, written in a programming language called _Python_. -The Python programming language can be written on many platforms. The most common one is called a _Python program file_. This is a single plain text file ending with `.py`. You may also see them referred to as _scripts_ or _source code_. Once a Python program file is written, the user can ask the computer to follow the instructions within. This is called _running_ or _executing_ the program. +Python programs are sets of instructions that a computer can follow, written in a programming language called *Python*. + +The Python programming language can be written on many platforms. The most common one is called a *Python program file*. This is a single plain text file ending with `.py`. You may also see them referred to as *scripts* or *source code*. Once a Python program file is written, the user can ask the computer to follow the instructions within. This is called *running* or *executing* the program. + +You can write such a file in any plain text editor (e.g. Notepad or TextEdit), but it is helpful to use an editor that can write and run your code in one same place. These are called *code editors*, or if they have more features, they are called an *Integrated Development Environment* (IDE). For this lesson, we will use an IDE called *Spyder*. -You can write such a file in any plain text editor (e.g. Notepad or TextEdit), but it is helpful to use an editor that can write and run your code in one same place. These are called _code editors_, or if they have more features, they are called an _Integrated Development Environment_ (IDE). For this lesson, we will use an IDE called _Spyder_. # Instructions + +The first step is to install Python, there are various ways to do this listed below. We advise to use conda *via* the miniforge or Anaconda installations + +
+ Miniforge Installation + +## Install Miniforge + +Miniforge is a minimal install of the *conda* and *mamba* Python package managers. It currently has no license restrictions on its use. + +Go to the Miniforge [repository](https://github.com/conda-forge/miniforge#install) and follow the instructions on how to install. + +Once installed run the following command in a terminal to make sure Python is installed + +```bash + conda install python +``` +**Note** on Windows PCs it is necessary to open either *Miniforge Prompt* to run this command + +

+ +
+ Anaconda Installation + ## Install Anaconda -Anaconda is a bundle of programs which can run and edit Python code. Check whether your computer has the program _Anaconda Navigator_. If not, **download Anaconda [here](https://www.anaconda.com/download/success).** If you are not sure which installer to download, choose the one from your operating system (Windows, Mac, or Linux), and select "Graphical Installer" if possible. + +Anaconda is a bundle of the *conda* package manager with a collection of programs and Python libraries. Together they can run and edit Python code. + +**Note** Anaconda has a license that may restrict use of the free version, depending on what you use + +Go to the Anaconda [downloads](https://www.anaconda.com/download/success). If you are not sure which installer to download, choose the one from your operating system (Windows, Mac, or Linux), and select "Graphical Installer" if possible. Once it is downloaded, **open the installer and follow the instructions**. +

+ + +
+ Basic Python Installation + +## Install Python + +The simplest way to install Python is by itself + +Go to the Python [downloads](https://www.python.org/downloads/) and download the latest version. + +Once it is downloaded, **open the installer and follow the instructions**. + +Python is notorious for what are called **dependency issues**. To reduce the risk of these if not using a package/environment manager such as conda you should make use of *virtual environments*. These are simple to use, for an explanation see [here](https://docs.python.org/3/library/venv.html) + +To create one use the following command in a terminal +```bash + python -m venv /path/to/new/virtual/environment +``` + +

+ + ## Open Spyder **Search for the program _Anaconda Navigator_ and open it**. After a few seconds, you should see a window like this appear: From 83db84cea8514e5ace79ba4cab569528d012999d Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 4 Aug 2025 11:00:45 +0100 Subject: [PATCH 29/94] Neatened up file structure, expanded getting started to have more options --- lessons/basics/{ => images}/hello_world.png | Bin .../navigator_spyder.pmg} | Bin lessons/basics/{ => images}/output.png | Bin lessons/basics/{ => images}/run.png | Bin lessons/basics/{ => images}/save.png | Bin lessons/basics/{ => images}/spyder_clean.png | Bin 6 files changed, 0 insertions(+), 0 deletions(-) rename lessons/basics/{ => images}/hello_world.png (100%) rename lessons/basics/{navigator_spyder.png => images/navigator_spyder.pmg} (100%) rename lessons/basics/{ => images}/output.png (100%) rename lessons/basics/{ => images}/run.png (100%) rename lessons/basics/{ => images}/save.png (100%) rename lessons/basics/{ => images}/spyder_clean.png (100%) diff --git a/lessons/basics/hello_world.png b/lessons/basics/images/hello_world.png similarity index 100% rename from lessons/basics/hello_world.png rename to lessons/basics/images/hello_world.png diff --git a/lessons/basics/navigator_spyder.png b/lessons/basics/images/navigator_spyder.pmg similarity index 100% rename from lessons/basics/navigator_spyder.png rename to lessons/basics/images/navigator_spyder.pmg diff --git a/lessons/basics/output.png b/lessons/basics/images/output.png similarity index 100% rename from lessons/basics/output.png rename to lessons/basics/images/output.png diff --git a/lessons/basics/run.png b/lessons/basics/images/run.png similarity index 100% rename from lessons/basics/run.png rename to lessons/basics/images/run.png diff --git a/lessons/basics/save.png b/lessons/basics/images/save.png similarity index 100% rename from lessons/basics/save.png rename to lessons/basics/images/save.png diff --git a/lessons/basics/spyder_clean.png b/lessons/basics/images/spyder_clean.png similarity index 100% rename from lessons/basics/spyder_clean.png rename to lessons/basics/images/spyder_clean.png From 140200870e3ba97573c899fa9c545da91065d36a Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 4 Aug 2025 11:00:59 +0100 Subject: [PATCH 30/94] More options on how to work with python --- _toc.yml | 2 +- ...igator_spyder.pmg => navigator_spyder.png} | Bin lessons/basics/write_run_python.md | 92 +++++++++++++++--- 3 files changed, 78 insertions(+), 16 deletions(-) rename lessons/basics/images/{navigator_spyder.pmg => navigator_spyder.png} (100%) mode change 100755 => 100644 diff --git a/_toc.yml b/_toc.yml index 2be8644..b4435d2 100644 --- a/_toc.yml +++ b/_toc.yml @@ -6,7 +6,7 @@ root: intro parts: - caption: Python Lessons chapters: - - file: lessons/basics.md + - file: lessons/basics/basics.md sections: - file: lessons/basics/write_run_python.md - file: lessons/basics/notebook.md diff --git a/lessons/basics/images/navigator_spyder.pmg b/lessons/basics/images/navigator_spyder.png old mode 100755 new mode 100644 similarity index 100% rename from lessons/basics/images/navigator_spyder.pmg rename to lessons/basics/images/navigator_spyder.png diff --git a/lessons/basics/write_run_python.md b/lessons/basics/write_run_python.md index a1e25ba..0360576 100755 --- a/lessons/basics/write_run_python.md +++ b/lessons/basics/write_run_python.md @@ -16,10 +16,12 @@ You can write such a file in any plain text editor (e.g. Notepad or TextEdit), b The first step is to install Python, there are various ways to do this listed below. We advise to use conda *via* the miniforge or Anaconda installations +## Installation +
Miniforge Installation -## Install Miniforge +### Install Miniforge Miniforge is a minimal install of the *conda* and *mamba* Python package managers. It currently has no license restrictions on its use. @@ -37,7 +39,7 @@ Once installed run the following command in a terminal to make sure Python is in
Anaconda Installation -## Install Anaconda +### Install Anaconda Anaconda is a bundle of the *conda* package manager with a collection of programs and Python libraries. Together they can run and edit Python code. @@ -53,7 +55,7 @@ Once it is downloaded, **open the installer and follow the instructions**.
Basic Python Installation -## Install Python +### Install Python The simplest way to install Python is by itself @@ -70,39 +72,99 @@ To create one use the following command in a terminal

+# Writing and running your Programme + +As with installing Python there are many ways to write your program, from using a text editor to using an IDE. Below we give guidance on a couple of these methods. + +This is not an exhaustive list + +

+ +
+ Text Editor and Command line + +## Text Editor and Command line + +Perhaps the simplest method is to write your Python code in a text editor and then run on the command line, though this lacks the power of an IDE environment to make your life easier. + +Open the text editor of your choice and **write the following in a new file:** -## Open Spyder -**Search for the program _Anaconda Navigator_ and open it**. After a few seconds, you should see a window like this appear: +```print("Hello, world!")``` + +make sure it is saved, for example as *hello_world.py*. + +Open the command line window and type the following: + +```bash + python hello_world.py +``` + +This will run your programme and print -![Window showing six logos for different programs. A red arrow points to the "Launch" button below the Spyder logo.](navigator_spyder.png) +Hello World -Scroll until you find the right button and **press the "Launch" under Spyder.** This will open window that should look this: +to your screen -![Window titled "Spyder" separated into three panes and with a top ribbon with many options. There are three labels: A, B, and C, which respectively point to the large pane on the left, the play button on the top ribbon, and the bottom-right pane.](spyder_clean.png) +

+ +
+ Spyder IDE + +## Using the Spyder IDE + +Spyder is a Python IDE that is provided with the Anaconda install, or can be installed [separately](https://www.spyder-ide.org/) + + +### Open Spyder + +If using Anaconda **Search for the program _Anaconda Navigator_ and open it**. After a few seconds, you should see a window like this appear: + +![Window showing six logos for different programs. A red arrow points to the "Launch" button below the Spyder logo.](images/navigator_spyder.png) + +Scroll until you find the right button and **press the "Launch" under Spyder.** +Otherwise find the Spyder launch button on your desktop or program list and **click it.** + +This will open window that should look this: + +![Window titled "Spyder" separated into three panes and with a top ribbon with many options. There are three labels: A, B, and C, which respectively point to the large pane on the left, the play button on the top ribbon, and the bottom-right pane.](images/spyder_clean.png) You may first see a pop-up suggesting to update Spyder. If so, click OK. -## Write a Python program +### Write a Python program The left-hand pane is where you can write your program. **On line 8, paste the following text**: ```print("Hello, world!")``` It should look like this: -![Block of code with the line print("Hello, world!") written at the bottom.](hello_world.png) +![Block of code with the line print("Hello, world!") written at the bottom.](images/hello_world.png) This one-line program tells the computer to repeat the words "Hello, world!" to us in writing. Next, **save the program by pressing the "Save" button in the top ribbon** (Shortcut: Ctrl + S): -![Top ribbon with the save button circled in red.](save.png) -## Run a Python program +![Top ribbon with the save button circled in red.](images/save.png) +### Run a Python program To run the program, **press the "Play" button in the top ribbon** (Shortcut: F5): -![Top ribbon with the play button circled in red.](run.png) +![Top ribbon with the play button circled in red.](images/run.png) + +Anything that the computer writes as a result of the program is called an *output*. Read your output in the bottom-right pane: -Anything that the computer writes as a result of the program is called an _output_. Read your output in the bottom-right pane: +![Pane of text showing the words "Hello, world!" circled in red.](images/output.png) -![Pane of text showing the words "Hello, world!" circled in red.](output.png) +

+ +
+ VScode IDE + +## Using the VScode IDE + +Vscode is a general IDE that works with a range of programming languages it is provided with the Anaconda install, or can be installed [separately](https://code.visualstudio.com/) + + +### Open VScode + +

# Advice You should now be in a position to write Python programs, or open pre-existing ones using File-> Open (Shortcut: Ctrl+O) on Spyder. There are many other Python code editors that work very similarly, such as _Visual Studio Code_ or _PyCharm_. From f5687264b1c881c82096ee95aee22e0904bb155d Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 4 Aug 2025 11:26:29 +0100 Subject: [PATCH 31/94] Added code examples Dropdown boxes don't work after first --- lessons/basics/images/code_blank.png | Bin 0 -> 60811 bytes lessons/basics/images/code_choose_int.png | Bin 0 -> 3550 bytes lessons/basics/images/code_clean.png | Bin 0 -> 79639 bytes lessons/basics/images/code_filename.png | Bin 0 -> 7933 bytes lessons/basics/images/hello_world_code.png | Bin 0 -> 7838 bytes lessons/basics/images/navigator_code.png | Bin 0 -> 108707 bytes lessons/basics/write_run_python.md | 38 ++++++++++++++++++++- 7 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 lessons/basics/images/code_blank.png create mode 100644 lessons/basics/images/code_choose_int.png create mode 100644 lessons/basics/images/code_clean.png create mode 100644 lessons/basics/images/code_filename.png create mode 100644 lessons/basics/images/hello_world_code.png create mode 100644 lessons/basics/images/navigator_code.png diff --git a/lessons/basics/images/code_blank.png b/lessons/basics/images/code_blank.png new file mode 100644 index 0000000000000000000000000000000000000000..db337ee046fe2bacb6b6d144bb60aab6b147ad1b GIT binary patch literal 60811 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

>D2fGZEY@LIBgg$o5IYnXnw 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 literal 0 HcmV?d00001 diff --git a/lessons/basics/images/code_choose_int.png b/lessons/basics/images/code_choose_int.png new file mode 100644 index 0000000000000000000000000000000000000000..6bcf667889cc39bc9d63bb5f6ceb8dd0e307ea14 GIT binary patch literal 3550 zcmY*cc{~){*GI)<2_=PWL#AxQFeYPW?2N1-Ldh^=of+F`Y?*}YH1X7=Jct;(7P3pW zjJ2#;laR(zWGl-%p7;6u-uL&%x%ZrNzh}AMKknz;cqxK52NV2QXf`&4cCa7D%?C%4a>aRg5s{$Px+aj67ZwS! zhnlOH`|0C6z0jcnIGa!lTenajH%%-^8^yGgyVBO)?21frPSQZlKNh0~d!C*3(tV~u@_6_g=t7>X$f>j`32tmEL6!AqlQ&dRmEbIFjzHJ zC9Ikn76w(l1aVh&1^!!};^(`h_xY&@S$40LUSotMYMuBYRs zI)3u=9^qBtg=D|i6+}G0K#SFRJ|dSN!hPz7IZaBfuhiyFjl8_)u-t_WK>h|T4v|`n zarZ2Z@4F?{eVvTRJFnmxeYYj#j>u8c0j*iwxIc#rRQzWz^e5NW?HlWLkI&pJWA0Bz z4V5~*AxaAXBrf?39N~!k+$``;PT*RcfJWq7z37VLM}>jW=28^`(s+)@7y#xJK+yp3 zM8`#1Z}cb!kKjMht0pG#Km3&<-*S|Y;F$tdw{~%hxwb_Vb)=%euHril>;DRGU8;Z% zjaW?wr;Q)%4SzJay~h_#i9H4AcC#DxMp4psC{wLDtLonzdAXR4ZmVP3FO&=Ji%y!S ziEu=|O&7r^%#32RgpQXB?9+MUlV>Uv;})iAQM=zpgodE~cnFi|eWH}sIrtM39TOuc zyvdKvFZ;XYUVXS?y)-zjFVl4OO64Mvx%?hWGkiob;W`)i21DaOYvh8P5` zzw7)pcwnlY@Kpi7t3wel{A7QncP0K+)MEAKF@<$B`g(G4arZCVg*f=zqV$9Io}S5H z-M$$j7@NS#>SN3*VK7yRK4kmmHEpMBI`Mr^*v>XuxyE6j`Zb1YXAY{Kal&WADz@ty zZ$kRnr#yEZw(5m&t)|z#>;i0LVdA4E&#uU3x&17WSdK>Pf8b&-u|r?Umo!2U!8Xsg z070W+t-d`NS9^Zh{DlY;x2f~W$XJuf+5^Z4)V(gJ(W77xCWF6|3R=<7h%-x_O({qP zJQ*G;lR+4%d~CYQSaWxjSdo3)%nyony?hJy!Iq~Yt=sl|<<-;qN0h)@rkA_KsVGcT z(357NYm5d-Z|3FqU1syyv+MQnAhxm-)zUis*KucseY4;@=ZppEA3a`;!=r0kvaZHaTCAf)O`CAv3oPtMXz=G(AKbC?41cJN=-G>v9SM5-HQ&n74|_VA3KU!wvhmu?ldgsI3oxNXBkH-- z^-dG4M7#KYQYZYDUU)&S%iS%5sF&0;@O~DD2*M`wL(&DA-HFvR2rNNuZ4c-_0$5 z-K%yo=+0Gr`QU|(xpe+1orzy7^kT^wsxxtPeAp%(`CtpG5TXh^2QF;&yAhe!;PjsU zyg&rm&mSh%e`BJxJ^2Y8a9NHRO3omryd7^yUws&n=%lC3P##xPp`Y12>C`gXV{0q# zP=Ql)P3A|28>WAaUfYkf$}ceo_S>h7iZa%t&~?A$!3gAOu!sKMtZp8msr9{fA%O2k z(+zFS5Vg5T-;-LCY4gLs8J*ahe*}|%_Te`fn^I55Ozmb}Bz^*Pb1G)Lx4cQU!a9ai z_ARuv?!fxW+wA(WN>YSX-C?sII__LTxEJM%$EtARu6WWCul^^)Ie0varu01>1e-Qa_;_g9QyYOWR} z9m;)?5vK!TX#B8P^6nM7k>fJ0W7lCQcC3^y!E2k5P!oXH1li7!7SALnXY!(3JM{IN zYe6A|@rW|#gQqe)f9^jBe_Z5Pv8p9poGV>IAsz>Hg{rAAB(xr*JoiMW7dCdLSS8OX z@qKyz-1NTK%Ieaels0)-^oFYGC5N#mk=$WRt7PVa%H4gtx=+>BTw#qDT5q>Hw(cmP zr#1x7H zkOwzcQX#+?;G&|trQe6tHh%tFYwcgytY7IpeyJhxsStEcQpQk(s#oL7nU-4a<}}Z) zzZa2*ALLr5)&lhR+Md38+}`bPv{4@Y`N}7GnGzPZ zWL9uw+vr(%JO3GD!Ic)HnVZfgLF>>2N@&ufg_wTB{H!@t2xm^wz;5=?2f#L}ShoHR zPYRHHFZEZ!vzHn3^SzTz^93o`wpWmVa(>*W4DK+ zOu^^pa!7LkxrNr1=k7y04F}khDJ9QhXY=>&9_%|E-#M80|Bt*V<<1Lyj~JKyRJI(MwXq;!2RZ?1j;+R{I`zkM=u_H zWxlD(DJ@}_S}69Vr}4{-wzJ1$oaYOM1_#CFH5Dp^CqV>0(6;=BxTw6(rHDMU%JH@;3i&%NVgQ=R0Rs>U@f(Gg0Da<4K;tPnD2IWV%N zQPgCbSTz>ho4F!hW!GkZ1qOTbA+H~1nXzht(Ml4PtuaYjl^ftTbsSwzIH@z9%34v^opu?<*I#iMxC|`(hgv{ z4~V<1_R)1u3Zji1;!##Lfi-@mJji{Qj@N9k!ReCR!WoI;FZ#y%ANF-iLVABl7@{4r zuA_&R@9bTVp+Dr6%Gqd0{UHlwLZBP@v+6?2lHneE$&b3re2qr2q@XwXrS7syu$2#p zMOwCtrN!TW#A*(>UGG0ZZih*4iCHZ&!*#5Nc8P=XnlkzEGj{0jp>Y{E^ zxNdIAm+dxC^I0=PjOW>R@1L(z&sHU;8EfCOX){TI!6rg(4lhFJ!xOC_+2b!-pBi&U z1RKW-cCihg9PG&ao+zRY%aF^x4=;t?zL}9&TAbLa=~hQCA~dt$PF#WCr+bnrHe4sV zotCC69;aFkWfN|+dE3@Eg>#+Gjh&slFtajj!i9u$_bu&>A~r6qSlnxm>F_g(N4e}Q z6`1Vi3F)Vd3BA7Xmu5z$B2AN8QK90#yyY?X)MbKioWbP-Ey|Eq9Ji)ZswzD>%(Hqw z>r7t#u9h|btyAomDYDOJ85z~ZyP(!W+h})d%bVQ&b%J< zxPw8a0HIDT*Z5B#Yzzy_^Nuqtf|e96GmmVyJWOnD-=S^|%k@H0y~R#^tAU$du88ol zki08^i0PN!brC+_?9{1~nudfDySh>FrnHj_XB>VKU+f2w7a%oHKo7<@C{h|zS>@AH ztu^gd51+po*48&8OXlT+Kc$3`Ws=p0M*Lcg5~50>c6RqteHMu`pQYLv3ML2?$~|V?&Iw} z!12cETm#|!o49r>r5&+{16KP!-buR}w1(teubVwZ>cdeax#KI zAZGQOH}pZEL%|@>!Lx^d13o!qd<_ZwqI1(%yACSp;+h5C9JIZreGLREi)Pxo!vMTL z;(F7}4Fo#&VfPh{kkDs0g_xsNaH?rk^cs|EuwaCq?U_&Yuj6OEE>O{|M6g|x&z%-=Q3%NG!VIo%`={*8JQF} zSo(Z{5OMK)?0D&2VcmKxRmSbp-UJuU-}l`JXXTsgl3T32dhhdbxJB)&pvB|YeLXr* zlZ8b^Yadt?y#pz`G^>-HZdxVb(O6#E(xGka&ZgC5SAjF)Z<_jmCAf^3CE4a1d?o=3|<;XI7k|JgML}c+JVK-ZM$^!#@sm(gk2w*DCtS z%Uf;Joyl?O=?Lv)$xtRMv5OA&_63$cQ|zhoK0OsIe>_=@pC74xP5%a9OtPrWG<6Y$ z2-?O5MG6R7`OaP>p!fm_3m!!4mM^otd2tB|c>z>%sBPYoIR*oE%4wt?#QHa_@ z;6TE5{D~gig&YvhbE%Rhem_8ZXLD6xw0i5I;RyADoDO&+o1NrlW@fgIC%#%)Sy_@v zq++*QgSNufbSR$H0(`epbWwrZuY7NHQL^P){VjiE=FI-|Nfj--LWtZDTTb8ENQcyW z!fl}qqOCJyD3s^I(3F{%puVo|?EqY-$UUORlb5(uw?kF-=I{;PtBZAAH%VpCA&*rJ z{q$(yggvKa{MSn_X}x*7O{MtJxUG56iDGII93q&(3R?y0$?G>=4(|%zOYghS+gf@2 zIyM^z5h)U5k7YIc$??U+fUS5WQpenW5gdN1!f9c$8s~C4JT*r%0kSv+Fm6Y1i-U#O zM0FEDgJ$7R<+!cHXv-c=SN5D+H~{3^=5*P9scsJ3HMU2FO+@N zaPrL_{Wbtig~u?KG2&dBHa;ai>U?q76Tx&Jxw3;t&7>=%lBWaRujip_tJUw48{mNl za_zBgVh*l|^G{xSKG~Bo`3%slhBrlokyfoWj(%B5RLPYkE)R# z3+f{bOKzGhvpasxA=5T z%WG_v#PVh=Fvo4!Em+5E|G0Vxq88eD&UF2L*TG#oNv4AA&RJMk~h=s zic}wkX^S-PiST^Fokf?bvN1uw;V3OH?ZdNywf^^p;etU60~eRRX>tpP@B;)-jbQ<= zH*a!ZHm0+%vT}(8kwt<#XU1YSzkjq(B@I>^{K}ixRgAYQUig9ds-nkyQ8piwD=Wph zW!*nljMSDOo$8cRLS1ZQQI`OYT+&VuCL}T(T1&r3eZN6+BdpD@GS~HRZMRQYf$P}V zDP=>fUMHrsim#)g`H8PCoK`6cxPt0IE6nu?8!R|2&<|Yka!G#i2FqJC<7s&Y?T-l5!8_~ zT&vklzLbW}qi)uWA)-EQ*LtSErXpplt0PS7Z;D5EHgO1BEXnKmO$rAukSfwY2+J&_ zr>ejQDN?8n?LL&C)`mT!Ikha{ikA;8YU;|fPV0I{N&NU0>FyVR*3{p*wdEN~H}VpN zhXWKkz(o3i22X0^!?bFu&yhbAL`E~Wkgv0ULP9})ektvG(MG^nW7kKv^V1@9pCG8s zww;2YSyEEds^C47?}Q*)yW$}fsJ*=UNE9c{WruC^%$$#=$3!K6`eU1ivw~)ui#tNf z2;=m=#HZs`I|`L>iN;mpZMuf}e#hf9MGy<_$xbq7Tt&x1hn7m7#%WOp;PnzRh#?x*`Q4htt-(K34tLKwj>UcqVK)lTIq0!6KHE}ZLLY#3>svrEazp{})1eI7LN zkSb2A%=xDjqhqNX3o!#^zge&vYFqXs1wRyEfk#$WM|*6~qkXUD!8}hjPY)%R_b&RU zgyxMkIVpH1R1>WS)6aX=I(6|&NmchU-uA03k<0yzM1;9rK#Z-qMu9xz+q6z--*i!L z^t@u_Ji2(H$#C|w&I14QXnXTav>Q?Z&3Y8DZ`opZn{Fq{`;;4(Sj^V4EXABxGc+~L zhnrV_;`+m}doO~xDnGeJdBg8bbr{0uHZ$Wir3rB& zABNvNtVI)IT8%pnkMAsx#hn=H@+Gz=sH7zvzkYIeF~FE!r%Uk`9mf1{5L_UFUi`u5 z!|OrLwB^FIM05C9lttl~e4Wxxb-w-%zD42NYLIn$RLYCkM_$4;fKDwBvD%)PwX{ue zo3{1Jzzb`P7;sigm1#(!rn+pPdZ1y^R-_f8Ld%`Q9}v{W$Z#_vWoTY{>;Qh!bTQe? zcESWSOc+6T;|6R}p%__&S3^1n6`7o_y+PQrE!LOsmPYs1j+ot`LX+>MKPFW;fW^8f zp8~d1hUE}B;iQI9bT3X?6H>qAjB?vpEQmfVmptw!$cDBZ8pAr0>Xf{vYtSo!j z!BVRHU1+o^gKP05>vdntr0Ad$i6Tk6#ac2)iMrYR~tGl*z;cnof7^+us zef)8fxcw_h7hLh4O`Wp)`0NB6$2-6c6JPp#`v{kCXeugUkfF@&Ua3MkCB;wHo-(OB zVxUyd%Xq@L87;15oumn{p}!cc|I<0_4bLxeP+>BQ_~TAH49{cK;)j}4ZL zO(9D4*J*fJH(KVj6F74R+Q27}Og>!N2!7bOb?y$qI1+RrL2`tnhbps@E?sH zoq~^*b+{!jq-4EZaH|8>+#VqYEG*1#Zv$q;u;BP+KQ9RqGdrR-5>iP#aI!UC#>1G- zG0MKFw3K(awHgsA6K0Bcy3eB7`a!jrF0-uhg!zjzC*!Gm@T9w_#6UE8J+7*Z(TZa2)&*eewAGicg^m?-AC}t{+UD2~!oi)}08_-M$s}S|kl^#< zue_b@k8lYDRrguWxNgAq?CE{24cHe;Qhf}6&?sTD-C;_xRzGiHHUU1Hs5WD5FagQ( zCsp=IJd%>OA+<(PX|#wHe>Kpd#hv8sLNwdgU7zd1(;r^qtP_K)A6dQfFHiBA)Gpvp zjb4PaH^SjCoeAM!^Y$;Pt*eVF^&d8ZJ~{U~En2;J?w3x^R@g;)$&?_24^U8*6mc?X z0Dn8d{eB`pTjymx6#altis^Y6YoyE}l-t#^c6q;4H(xv3m|6KCO6}mq(#9^~wE2Mf zOf2-U99j_P$69Y?u6EbT)=MwxGrmRm%mVCAl}A(jy_SIOQT&4CVxTrRfMrz)GKzw^ zmn+BA@V3JNLiL#-Nzs;E5@e9lye8;m&E7<81)Q8kQ!?Av>CFMkv_!fMDapkM&>T;k z;6Q-FJpI5HwU0&#QE)<1WdIwi*r`@+zqTSQ9P-+Nmb7d0Ua^xFUjZ>Rq2I)+zwI@j z0)bV1)et@F3m+OmV_j0+3h_bRistPP*ws=xZ)&!iBI zX@1by{Bprk<8UNfUEz#YbnQ8 zVK>CA^;k}(PdeV?*X!?|;K|+CW5eJ&`Hg$X$cx{83ULI${R?KIlr?TS&*CUEnxf>LPK<(UHsSewek1h%nkaNIZG;rA7<&`lg+271hV@Hz6w7r~&?hA5$ z9XFv94RaYijjjU1WoPKF)+-3fdCr&8)IM+L0P*^TlVTGTAT`hza^TRq=EWy3tpd7I zWU}Vw92jo{;r-~jX+I4y1N3fyjn41FtV~3RKv2W=(Hw%%4SC+c^$gm2tD}5N`&rf^hB_(m@2JCHngMBYl`$zuBSA8#%*<0m5Ke7}4w};Z&3k>pZ{9`d-m-sxj zXpp4HxYXlzb&*J)pwUH{z0LmevS)i|Ihw>ekI@oyEbGi z4mbF~SlcA+4T^QMNJKr1@9irAI~Ego4i$87A@Sp8cx2qG{AWQxWt?{XX5+ z+H%BZ??9w6ZK)%VvvNX18tvFHgX4k*|BL1q6s=}D4{1~qXY8TRy*8{gD~Zqid?;Ec znZ_YP{<3cy-k*%q7KwNoT@ z*0kC;_03zdVTNR-erm_x41Tp$slWOOLL*!WE;8giY`6N#H{GMeDHm-Jewu&e-AU;f z`kJ}q-?qnk5NpeLzEzS4>PdnNE=V=V-x+F%GxJlT`1{KUl+9ncrFZ+=Y`%?gjNIyZ z6`@gZTYX2430rfXV)s&U@O|E;Q;nU6?hC$@ut=};Ji+xZ@xQs!tI>T1Cc{wbmx`9; zlXR~+cqu+5%bRAFr6_OC)79m2rg&j5aUr_FR-emu zOZ~`97Hf=6?uZ9Ri*sWp=om*MU8mg8NlVN__cUY&;`gY~{{gAtY>j2{2B3PZiVJJn zC13qOJJ}hTA^c#~!UcWMj_VqqLgS42Hok}ozo#>dP-H9aaZ$U{y_jxV0)8zyr`6lP zMD`M@<%%2dbkP5DLB(Nsd{VuIKdExm(i6hV>>&?cj-mgStg1#{V{6W}h(bcWecZdb zxMH?qE)5dklZkE*!BNj-jZe1Q+8!B6Tfx5lmteN(2&%XgPXR{TqkGsi$Hh>?XzIuI z&M4B{wX-<-=M*)`p(H#W1M7H!?ptxY2eF$J;e|fea4dO$2?=l+s8#(g_pNS!h}xVwL2%j@{`#}(#d`S)6|yYtfS-? zD;_V-k`->TnGAAGj9{P>p91IIuGreA9{jg5Qgh-mr7$ZvC$VGYLN=_q8_}gGy5$8Xpx%FZvQgjXy`d&F072}<3+BgCkX5M34-tCy(EK-} z&K&PDa*Rdm#R@Au;*rkX45eP#0NWRM>E?xAzkX*%8yYg8H`oo?e`Uza?|HjNf5>>7 z0xs({Vp!q`<6Nz8RqQTAM-y_bH(KSQ31fT#>~Ymto}L9>ix(Q^k0>~gQDtn>Z$lD= z7|66$gKS>#u_!h&?!Z9f$RbZOEfhg1^C-R$xy~%N9sacSvhU-TCD(wHcvk)Yuhm^) z7@}-OkjM~s*N&KHva{dLUBjV!#B>6`XXkbRG^g~A6XA`g%%|;;tlS9C$SYCvih3&qD9Bfh;b_3Ubt zsRR8>WM^M+LBXmNT-s>`yNWn@L*tx9w3J^|FSjz?d?_AC{yU9uY)*=$7wn8&5)_F` z?~`ghGn$;qwC861O6}vXOfLsR=g<~CsjO1@jwG3YAmS@OiMr$eTJn$ZQ2O6TPyH7@ zzZlN21nz8Oxr`{iVbj|_aZCM98vTY_C7LAf6h>d;mGv)RxKMVX4Ahhh1N5wu%ZtmClBIPq6!NB;DHM?DTH=@UPdSArp|-YhBQRzdisd z9c1|PKW{**C)t|+e)m;#-$;>bbVvXGW8;56_$wJjx@#F+mEn>dB6@eOHLcLoF=(lN zhplE`g|Dx~CXEjB{myv%Z{j_h$)>MSr^d4hDq>@se7^8nWtPv{ylb$`estp9RcRNk zM1fm1lt{&2xpBPv2!reE!rUoy2A6l{?1lC7mM%TT23EpG4+51!8mT&!7+SXAgql&G72haT?l3QmhIKRnym;p3wjP_m0j1(wz>;${Yz^87nk??FTLH z6Eeyew7nnc1wE4i+O1Rncm+SpKGlpQF|mCX>VA4qjf8399YJKa)t4am3Cj(@-SQO@ zI(qp}59O__parg!yhln(Hgf(LB;OxsE!k5amZ`*c3bpFU&noQao=EV{oU_$-b zeRAC0M8EEkiebYGzBJFzsm|Y$*greqF=!Vi#Uqr?TICEU0R=-KIR8ZgG66i5kXT61 zE4T4Tn}Pz???2K3dS+)rHv-)+2EVTT-x&D6jPp0bn8v4vBm{&y49*_cJu6}r+AC-{ zHa}V-wx8VGg29CN!at?nHs_yx4_k0YY7Q{4t821y4Bv2AjCU#ZLt^Pf;2jbYe$~`b0by;+vV38=r;t+ zO!Dr#p~u>h5WN(Hl5-3uNe<8_OJn zPTU$+K$HFO3rvr7cRLK%W^lGztDm?q38ZQM7W5lHKSYx!Tq7qWSXHEeVrHwu4$WlN z?rtZXiZni}TPTnoFahMtetE!Moz5TbnZ`&@$1YqDaRr9UlhHZEb{Udk@UOYuwSl4P zM!g-4k4WOa4vAlK6AJBOYpq-};xV<=|FmN&45jL?=P+>vXQghlzuTD9MCMiv+Sae{ zXARU8WM$A>r9ahL25s1{@83C^69|SC&IQw2QU(fY`mzN|yKwqR#AwurLR(^2 zknkHruB3^<#~3ZfJ;43+c_sIY{uINC_@pL<+y*o@{k{1c?r(R!U=K|r zJHX)0|$N-Y<=SL>t09MU0j&8yv(JxCTaYmiSg{|AT`DjN<~Nb%)1=w$a9Er%%Wi znreDUc~>pk?PoM;7mf&mhLV@iNvC9Y)|d-j$V4n|AGdGhaWuaZw;y|TcMAU-+vhXz za`asP{NSbK{i8V8n={1w>}Df2-gP$v+Sof@p-sPE{z`;`;o?QKimQ=byWSCE;-Z8@ z%^dDh)4rKL3SACXwl6VhF=xQojW>we6z02-oqP8ma00Wt+`MJsgdQCOy$|QMb7Yc# zRXF=TQr&c>+p>>YIe8_xGxjU8y(5s0fia;FR{{3iM}>0*45e{TpVp`?OJYs(9ktRV znB8d+nn*-M(}z@~vQcpDd%RjaoLnn&Pq|Z%C(y@wHzyfb!ds$z__D*tiKrQ zjm^7l0a@%{BEJ(yPBq`Z=Mt)+T?@-~;Ze|`c1h;{krI$3C0i+sx^d>#L5ls50-v<3 zw3JngrbFM?5IxjCEZ77?Y2v4i-pt!=!y3=y(-~c?P}#a0BEm+IiLyg@?|(R#l|`Tu ztGl^D!rf2vyHTE!`5(0oG-iVv0t}QNCj~_HcJE{TjYkZwaT*`8{56fH%y<_i+xAecGx$rE04{F7$KY$!*6KxewgA$&n|@$f>0 zaNB;C0uE?rA=L2ql!;o`G_r&&MuOPe@P2$1%^(Kr`#vaDyMOpWrtzB_=Ih3ZjBbDg zu;tpu#2rlMF3)qA5=`-zuXh1aU$EkW4--#X3Iyv8Z+M`zmA-__^Xt^P58g% z!MAdSR#|wWwvhuyS)iykGnu&7*d5;TMO)KIL*u#rB^PYu8Ps!=RPlb1TtOiT6@GqY zWGSuAxkkzk2M;>BkX892#MiUs1QgY_w&35N^eVALoRr8@t~9pua1y(0d-{g~u4dac z#S5;!-KDyN_rHAMuInzjx=?xQP*1EwR7{T*VlgsSxgU|s-w&pJRgv9*T~?OM0XgeU zR+}T&`{@<@cR)5~*r8kTn=G8!VQIc*5t6*Uarfj$h5C%?{C#J$G^!CUn>U%VfTMug(D%f8Ut zL5uQ<&-vfV8G@u1y<3cUlDeCG1g<0&79iee^}LQALC~4OIhuv=$6$oalk8h?Lm;Q% z#plG{tYE`96A$!JZN2@R4qu{rrTgqy9%~FTkZ@k#-fR#4?5Fh?iXHR_pc}D3Bz*~x z_2{>S0=+B0fkreU1yyh4hVWPwq@NV%J7(WCW}tl0L@6T5;OIp-2wbhIW24IWF-$|i zeKpLq^{T-QMEB~W!J!8q6rNKnPq9>J8tpu)k+ZJ=5$TdpNx5p}TvLk*Ix}!|)Z9bC zUb*B~feWj7t0NPve*wEv0!MQv5@PzhE)X8!)^iF8w}B4NqoA4`PHg^J`5fmAfgo3o zXYhOvtsVIl>r|b5d1B5hLlAEoRjK9;ue49Sa5YJqtrwEb`YI$uDQ4QxIRBigaf9VsrMHGgQ7c|J+9lXdu2arlVqjEajGB-D7r{OxJ0-`cI@xP^f3OJI?aemG}(;_bwGD)Z?5gimEe?gs0J zHKxa|NEf_;&a9mZplsZYlix0-^(eZJ8NQ|+So>I$;G^!+iWk%t>q#G|w z$zOH5+aEcQ6^97Sn^WnP2wdOp#=q*fVqtG6j;2_KHzHz+>80iArBy=Hp^*U#{xX_l z7_rq4tWnk`MbZl50n0B#WxFx2iIhFMiS8S^bb~~?{Z127bN(IaN2a(LVa&nSOq)Wa zM#VM*@*7Ni>-#**b!31n{#7EU8mZvqF3+%3tDWSJfPz~;15h=Kt7T;zSLQute2Xh* zw)xdU-Mkm*JU@f$szR{AZ@2o$?M|`IdUa-W{*8Lcm&QgnH?mp!I|33atuKAD%$Gi&Mqi_{CYX*@FoUOCW1cY-QbjSMKfpKmtuTKuQ$n8~ zAU!5_P9}AoKa-es4ESd_K4XG^@uS`vOV&hM?G9ncCi3KJw=n=4@HQ`%FJmED02e&s zhV;u+%mpOpvdY^8yzPSZ>+?a97i*B(#z9k&LJ{Bueip%Dy;y~^l?KY%@9IF86OzBF zUC;8EzcCZVf~??zI2BM0gUyU6c7H!KKl#02zCyzY(*C$$gP4@{jPQhh-M8@+o)RAW zVs=}?ef~;7gN(aV0=j!$?ct-K#IudMq3GKdbQU|^S>N2mW)+Kd#T3IE$U4(e z*wQ7o>38(L-?|C3MSHF}4*7|iQ)2{QKbG%BX8j_gS*zkyQbG>3!*1vyb;<^6c0AQtHrq$7 zj98xT_Vr5tW~ysB<84x1bl}^OrM{7ON4bo0pHFu6R0)NT9FX1swnndZLe4RlEV-c& z6mbiY`nH}s)JY9^1U$+ue2yeeD$=B-!wH?Te-1wgJYdy}^Tbtq!5%#AQBFrBRPlLj z+8W#sTNLuwi802s{th2`s0!o5af72{^#r%o&RHR_TWVtOgLs}cRhT4f(N2bW$lES+ z0nMa1Q5DL-`L~_<-y(2M9XFTIT&;e0H)OUa+oCx4q_f+tb`&%t+!QEw z6;66Bh^EG8=N1odK2m_X2Q@Zf^JdDB5RjBZ=WFt_=J3L;+PL?FI>5yyCs^N#KNWeX zawZ!M)45CMC{t~Oke^TeBuzWFe(F@SNwvdu;~DR5zQPH87>%gA9aIf1QdXeoWeRtUQWr$nv8Pmz1}R)+u{7wtV8qmZ`A_l6`5B7uy%>o;1<^$ ztHQXqKtU|nR$JfebXT~O*iR!Jqb7Ye+Ju9d#q>Q?$|No#Dh^5-&?$=h#6{8ihTKN# z=xZLdOnzH4E*tvvO-n|4fvh_?h@pin8p1s+YD=UZ; zpBjNkq0M!E-hRgC)GMOL(WED+I+ztls$4bX!q3U4S=rZHKfkI>Xm#Gq=ya3U^~}3k ztk3zS=O9`Z#KgFZ&oDv5>6K{_yi`ROxJ)pz1s>vWShjKx>%h=(P%z zQ=_~C5)_q2?>jEWOE4|2P1qjEq#p?2qQK^2=?5@9`J)k+W>6GCYWtWV|h50$YJb`HkFX?g6YBrkbOqR&uqwjlosZEvsp`(a0PVls${M)nC&< zm6%DR>9xQBC#WjEw=hjk)yqaYVmu_t)ML;OTwM$TA3xnmUGkIdnIowhq6T8<2h6_T zGHgMvr}auNVYo9U)~_{siFeau%|K&$iHBZ!u#6u_y3bL|g36Pnd>($2(()iiQZDZv zju)6`yg^ncgouC`T(t&xUwO~_JFPW5*G}-SOxTu3DM(m%83+qoZmQq0Oc|~OzmhiI zjeSPHgtu_s=XgW3e~WPLS+CT+L$Ji>!RZI2tBqXbUvcw?D9@(L>G5JMbUUuSOVtCJ zx6FAf$Tv&8msE8&qjRixS8`i%dmkF0vB?VY7=oU}719rQ6nm>CdDeiy@QbxE*g7HN zdqdf6z3;RStkst+$Bj{J{MVSUJ8!b}DR=BUPF^>&yI(@?Um&{o&7ucwxt zYCebuaIV|7fdFfpZIpYo2~lYqfcf>IUGK)IBD%TeuRS5D*F~OD?N8OUw*rM zcaguhDIF@uhXgtICDHpi5Uwb!LgwxBM_ZR0a!Z7RBN4f?o>ZWF7Lf(`!14^0*>$y> z$pMzLp+hN40Z+E28OQHw(~Sa!x|pi%lowd$A3NC16}+^-$HSgLFCT+uzs?o%5IzI= z{6m*5gcdFbe-JhzM24NG916Uf1N&H3VJB4RSOKDKb`Ia=XhyoND$ST~TT#pVtv%Z5 z*EcaY2j}>GhRs0cl!eH~obH;<0%OK;-%egmU)*Z=5Uyv4G{i*(@)z-iRu%1^uO<1M z#hsJd#Jx*qy&QF(6L~i_fOnj2l+q=Y=B7Dv8i3hovwRN||2?f0!!$mQMq^*T__~(N zhQDcp2dB{wypZgA5sOzl$*b`5JnOr`%h>_|0@Ukuxw6f|oM+yze9j+#->KLl|0lwUy6rD4i>9&t@1oM-Fh^p?Wa#tOhc#wF0_n~|WvD>(WZOWr3;1J~g$&Q9iTLi0|$eeiZTns0y!myP47#kPdFEV2=Z z`)pa?8;DYZ)|jyF1EMMB8LbP}QIMS9C`{o7?NR)7=M`3Qc}M#`!V~1N7xcnxcZ4j; z@j`NWHNWWxt>qFALtAM%ep#A00uV5B3xrWoxgsf9kFBM*h-2q^&8ck7k?COgi?4(x z7tA%Z-%pXMJhZFC>i6R^zpZ$Nonp9d1KYf@ur3odn;t32I36EA)5-(CMRHWFlGT`d zT-N?&y0ERT6C9;O=crmfgg2{M=0p2D?GHLGlYUDmxM=Mi%-nr0Z=JkN{4nAg;*{14 z^;Oj_@;^uRxO#3lH{bQc#YI9zKRTMNOca>?%aLy@S8YD;!qny4_{$??j^;WDd}3I+ z_fp=`NNZXAeIt~&mtCK0koJf#GIGJZw|FjL-a1iH@W7hBiXiq+p6RurEEg(=J*h>K zahR|crT3wPx&wh!dSohS$f_vg`+X1@1|J{_sZLfpJM^Z^g0U_-Mya$X#%T`~`F_as zOX=O5&8vku<4E+;xF)oGk*&dFMM{v9$=1}ZB8DYan9fzm}nFw)w<3GXmY=A zu{d(*T<9I*m4*6w1>N>;me}OP!dUlu)74YWLp!S3XL&Z8qBhwPcuD*B(3tnV;3z!g zLIJ2M_imT(O;(QiuVuW}T$8>L#}L0~)xXbKRcdT%HTUN6CXkmrd_6q~q4x~!zE8AHn3(0z(VO5DTV>MjuwkB0?cIzHk#4=Ee+3Jzr~kuxQKvgV3eBq3%m}p`p#| zN&4I>@e*;1mM$Bt2Ec_4g-6vvN}(=7Jx`wt4c#rLosW~>Ncil=;t!<;l6^4K+A*(& z1gJdv-{zx@?78u*ojjD%@=j486v~_pSy~3dr?naW%+3uhi_&)wQUC}%!8N+R3F~fM zW;1QO68r(Hpkh|dqK_L$kXVZ=F#a?(il7?=?gzz|sx{)R{Ux-khw-ssU38Zv;!CG_ z<%4hcv@NH7t%`dv%OkS~)^4<&a~g0gX;BSWbqJxoy2H4Z0g-mm_x@hyLg&b3RjgLQ z)!Oc>8(IObN*imyrgv~7?i_fu_^r8Z7+E-wcDH_;p;Y1|MWXel1&M>>DZ9foUt9)7 ze6^uk1}sNuD0WIXx$an;$Elyp)`(s0NjNX*8;ug*T zWS;Y|Z@Jvv3WzXGol$9#kgYib-?MxxzU8V{455POO9+a-SFXY<25H}}cW%|3+e%Cq z1DjMQQeUpy?-nK}s?u^rH96d3p$O_(uFm zOuhs|cb5Lbn+Z&X)i!73gGkRPjZLLS3lDXvDvmHU^e3Q%;OFjIqDr=(^3L57f*_uz zyQu1zi~_gC?0{hQ(~Pj#<}iLEGmTnnBm1yFuW$Z1X^V9givb&e+sr2nKxeRLkZX}@ zeXV*!n|zuqO|{xU=<)tW?0s%;$}%Q80j#S+=nM!elDJqA3Csz8d(k>Gf@0d{>zzxs zu(y_l{h-ZOA&{qO@?4808v#k0BLxL6WFEz+UBg%hCrJ2y5Y>42b>5}X<_-)Z6x=D^ zJ67PU7tY9YI-6z|^>BuKjnh(ElNb9jjYsxNjxvPg8N$w#+i z45b&{8)8Z(6-;$=jm9jGr7Hv3gO{3N$m!7|oDX)a#G6HJJa+teDpe(2T&x|YkJaNc zH_-_*ypx@NGu{iAfUw$C*YzHySjTgAAP(kqDpQEB2>BhEC%#Ujd)K`{#(!&)XYYdK z43QL(K1cZo-Xc+b&;#dGTzBes6E-D1Qre!~XKd*l?SZ5$Ou}pHrh==Q=l8WFtV7pw zXK10cH@Ha=`-AT5MzA2d5$65Hl)tipyF>m9&8rUgSXiiFak-kWT{cYxZ(EQ zx}K-PJ#A;89vQb_%cbr)>@L_fVZU2Hjs?1TY}fn@!CLR-OC*ZhQx|@@i=yyfUh4qS)wi)q?Q;|^$ zQ5H=gZa>1mOgmMJQC1u&Q3(;>J?7p^;pFal7TAH-Z%D)edkqPO`!y$+Pu1kUd0_?` zHs6c_MFG)+N+I;5+LwVDeJR6ORra!Oe6It3)=kST%D%w!2p9j|QM^S;{PciGWopq9 zQsb_hHaCOI>f!O*1q2zi>$1N>&B&sB=YtL(S&iF^jM zm5!aNNV|$v7?N7u`tTmjamDpK;e%RLRYjg>6=LuRTE>;-_K$Oc6!t`Aq5nP|R}yW| zV4Sl$6I2xep)4O=6jiw1Qe^wFBDF2XK0Qm7QI5zof5kC1%RhDKO7JL!>M_P4z3Lz1 zx8sZMo#&7zUjGlj8h3+T(B7m)%}C5@1HJV0;oH2^Lr*jY4ZwIz#);-Gr;@R+w<^Ge z#gP*9(wyf3>h8T(Rd>%{X~M;@G^_GKKBwfO`_4E}xo!j~hi9!Px$CTraQZ=}7a(k| zx6oV=f`AV|WQhvsGps!*-Wc~qL zv!@ws)Jw`D>1ljUcBL7JDnz(R$K?TzI#JO@vPY6CRmr{)6Lb8pk)->p9*4oziJm@p zfh&c`F3!^_bC%O4ps@JlNtWdjrug~-&N(oeBLXSrKmS!Bq>}{o5@zB~_$$$_#ByV= z9u%tD=}Qz%ew7(MoYH$ijS(}x89wyDTFt^hNo^5E79+^&gU-Oyb&^x_(2ccTyzyjDVqJoe~3sddJLFBZ*CUlf7ouv)ArJzVpj@ ze30po5;rPe6z}@^Ofb*IZ}c^RZFWGtU%(#;6wqJ4G+~P4IGpdEOsU;VZ-Bxdj_qI< z(^~#|B&{%&VaZNNVH%1p;W97m{*Pz_1HRtb_wIkaVR~efe%&!tL+!6x%I@MyY93B> zBmNpxPs9Aot8bF(rpH%`)(RD;Dgyq|l3T(bjF8Ot^~~69DL9z<+C(>#9hq@X`rZD@ zIG&@~giz`3pGF@dADPy4jXIay=NND0tUFreBf!J1dsfQIW;m&VT6N+-N&sx**$mJ| zOx~v7ZFPe?E)`ewSQLeZ<{kvf@jx3fe199UEZ|fX>Z&^{`7HK%W1;oA(?g*GDV5jP zTH_tufnKEzWSSFXe}k60Go6K5q0(C=(y`xorTVc&ZI&k0hM_*85WCTx>T9q|3~awQ z>H=T=Q@Ou))y|7f-bLpzXV)iEzVO|JYiv=1^`Gf8wjgDgj zAjMniF!wLQ!EWt_3#632b$xJ+fD(S-(cEvUUZ2~|^ugz8)6R2&~ zrTZ@bq?7bFY2%6wTlh5lLAE!Qs?30{0oMqAP5}Hm-d#dJkUFjEb)?~%Wdx64`>>IcjLa%*kF_*udJ;7KYp9oA;P|x9VW!92ciw#7BPCo6gpN zI@J;_2M+{f6l_0?rPB1E+qF=RgS%Uh-?fV~&*FQBWW5?xM~1EV`T1j3gP`@!OBZ=S zpc(M7TPRJlS;}l`BX+f&nF1-W@3fn`muuhGn%DPmlMo zr1*byPF&#qVMTztQINWkgKrSSr>0`Fc0uHWZ^KEOU!<8)S%z}XBZf<`24#qt^ApDS z)Sk}lAOtpl&Wmw%sgk=cX6x|*P%!QuUh_+v2KFUOQv_T29ibt4QMJTbevQ)=#t8~j z4z2;l7^a~W<%kj3wnsLoq_-|SYZbVWh^_t6HLqm8XZrIHV-4B`r|Et4C*^WCD#BtG`WyQG<#0z8U8>!A+R$5SJjMdL2ZMm`oz4q=;|QOkFJtznpdc zH184iY9ZT7r%x4}SO4T&r{45cRFIxl4(MNvaDL(y0i*@LF*W)J#rGTn!*z}!?ONLd zVx4j`qc*v1Z`$#y(fJ3W;xeA zpKXZW##`e!`3yPg8#hfo%z=%~Rt!_2cP*k^>{9+p7%YPxtPip(LG%pkY^enF>ca^e z6j73q+c$hZY5iMrzpszscmE1!KP`l#dUos~Kns>&N_$4WUj$S7!Z7C^v&mqWLESW| z(cF5$*r~wV{Jg$_ME;Dmkuxq+h+Sfns8%5<{(L=+&xov^Q)TGb&4&Ox287F&-U|z4 ztgd-Szn;OD)~C#BOfZ}Yhs?n$krS-iO^QYZ=i9Hh;xd)-{HH~K_OwfN>Qm_H%Osjt<<5`@rthnj)m}M@M zbjrz};xn2YQ_|P$&s|T}v_k>uU*2PL+pQIGF{C%syo|yy*-CArxEDc~&AG2t=Sgd; zpA$FdEZh@)w!z{mU=|~lo-;IdZ2~wrp&l6nhI#MXl%m12HAUJ6Kx&iNJ zV^#8)#2wtw_?nrxiZXQ+jv7fU>@#$sllR^_$l%Odj6LO2US&n|RWdtmuW_1G&^3r9 zH4ksXZsq<4rn0~XO*4ep+t<2gP_XY?)-QN=%W21Vdyj*U*~!#dphwSehAd;RcdiIM zveu>xfWW4m-6P3Pn56FeeM>itXpYfWjuF#`c03kV{A*j;z5;oX6Sj{S7Qb!)`hQAC zxcAw-7JIx^mFlP8)TmLBTC4#c6_=*&%~oL@-sdcH@S^gz6EfA>cv7}Y%f)zlQgma6 zfxFn6jqwU;SsfjJB<;ZcG-f1ogKyOvh&Y0IC03Bc(XhDJqDlyVA0r`*{m?KtH+l}* zs#yE~@b%{LP`2M6_)uDS@Kof<`jk`%$-WGgP}c0(E7{lVj2TL$2$e0%*!Nxbv8Tws z3^VpM27?jCU@X6DRG;tm`~B|z>4p2g?)$pVb*^*X=bZOZ<954Aj7e2NdQCF!kS$q< zg>;Uoc)rYv4Qqfn^|2I<6)Z2O>?Vu*MwZtfKIA4_^9p=3hFGUF_MI#@;21qj4!#eM zLM9f4YwkTol3AR$bTnFyJ68FrH%Ky!_Rn}zv^a!vpk7u8(J;_3XsWZan`g2-iftsA z)3@*i>?6%0^U8EZ)Hg#HsH?L3vwj>!P2Qe9U#n@evp99iKt#Y@V?M$N!6!O1I7X1* zS5UNyvq5VcWjLbDva47VrH5mzYXH9Q++)-H<92&HYp&F!$=mwL;*3yg?=|+pgQww} z^irGkoZW4@THe99p;1ho%tNVIpWSS^hlMD^SI!tFy@P+QHvu-RBL9?}W1l@>ZJzrJ zZY34pK2b|s?48(m5%48Px3?|DL)Ez08O}F*aQ&s9)cHKFxa2nW(>f(<>=r*ok>88P z3+y_rJl+4MMh9KvSX8w5y`tsX>Rt)R~@BQ%%0p<<=esN+?c0#~{JIWrHUbS`f|LcMXt4-QhVJm%bLR zz>EUbeCnZPLUni%U}-7Kwk7aI$&tK>>Jkmga`SQ0tl(Q9M=M(&UBJqvx4p~KIH=Pf zDg7vwPiU01OTW9?+*Ge~i{i@%Jl*lL3;XN@)05%9%FmCdsw*WK4TyF&*`@^99uzYB z^2z8l$0X3Qlvqcv!J_Ek`}$4fy-(yQ#HjtqN`2C5n|7|vZm*^DvhiR`%`)2{s)I-Rj>&8j=&zAl6_IrcxeaZ_{B_2Yu8h!}+M(9BB z-^r{A5joElqokd~9V*}rYTRVYC845~{=w)ez0>Dg0yo2-(DMRE2~W9eXzM%?d9 zIel+$$d5aW2V3lHTDv=YqO^}~=#dqEh#7Ok$(FnVc!ICx&nu1-wOSz|LAmDB5247! z!pGCp5AAk7>oPvIzDDeB-E8@&o;$=Yy_)>icY5(J%QCm)Ye3tloJ>L}gh-s|@tCc# z@G#dvov5obkbfO)N7)89ewnJ#=LU`T>?q)}D(`#;I`TS^YcJjG;AunQ-poi9BDCdD zz&OXM=HS(c%R#1-nezaq{|xJU$1Qa&jCs;PKGMM5VY>KuW`MXtn7!zJA61iuHGO~n zK7!N-;4l}v{`MCRmYEp~JL?@OU&M{Z$ATh}A94{zgH^OMT<$Jycj@c6$9Fp%c=ul~ zykZX8Y_4D_cp_OsJ=7VXU1X_A|G>&9nv=XX`n{qRYfCZaDiddY3Zw>8@t}+}G;^F_ z-(M^^$gzWB;#P};3ajBluR$ypAQp5nzf?hrqrsh}dhv^j|M9rj_ITC2$0 zT+fyXY*i;@HOLFA$7__?;0CrPk8P{X=|Xp~qfybUvRH(de5OIPe_o6E_BbP$ty_N( z#sIu`K2d0~_m*ANi;yv0$MK2a+8r#K{FHGK{r zF6J{Z=?>G#)z;CD{P-~g!5G?K#%!LqI6~iU4ju(T79OKKxTphH$s8iyTB3vDP_FR zVg_=i9Tf6%%nkEzJt~Xlw4d{S_CG5W0XVjDrlvzvDjI9Q_$h$;xul3y&Jstfd-(rB z5L~F(@riZnLAiQbhGz_N8O0R2B-}NpL17uR2W#{{X7^GPb(IF4@=2yo`g5g)7CCX} zA3WN;Gq{r<^1pzU;$OvSeX2`vjK_7NsuKU-*Yu)#P!InI66M1J-hiqGyQp%D+<9+p za(%233WVzLPyT0h9VoqFE3?wR^*jrggDEZK&Ka!DI!3Ezly;&AHAH!uJKI%;r8b-d zZ+UX)yPSctefgzKnE#)3`uHz!MB?HqqWFXWCW8VuZDrb8yafzCEDW1^KKq zUvp{qoz?{%ho0SI^V-El&A9ISY+l(Xq~OJzSa^U}e02T0a~9ZcruN!{WquSq%*-s$ zs%Q6ZfBwkaw|2(kk@5v9>WRbxNmq<>`%!CjSy7tdEHms*IA519SWa17l+p)^zufJ-{#yc(VJt;`g{@Ajvp8 z;8dz(3lsZaW7SWyKR5{C*BxC3ym+>SgTX8ct={lJ4O8N9X6R8YFXS%m6q|(e!o8jI zDvyB1Qyoa!zwM7KGi`u9MP@~=>PDM(-`hwtD{(!DDHt8o@r}GWk zn(&d0K!*tWDLoEeim%9~ zhlbT^o2>rBJa!B@k@Z|b96uf*;i01}YW3Z!&UznII-$}U)a~G#gpGK%a(g^>SLfd? z@s-m$a)4B2G3PN8c)zPE8dMG$hD7{c)=Le*@wobH#;a%_arL3^w5HuAgd1l~o?jh& zhLxLVKXJu9|M+qthQRsu;1X%rRKm1Jk>Y84k^Ge$)+0-&)u1V;q%Qx~qTIbu`rX;T zlN?9R{Q5Zb(aYO@d2}OL}6Va~lrJX{<#BRvid1diAj}54oIwV+Z7K?qBDC}tcv1Ob@vzP1lO9H>g8SA*GKa=+b#ktz z9VUn@YBj>JkGS_l=T1CtQv9c**An{mT8jzPLn@_9^6^N zCHk}n1OuFxtkla9xNB}{bW_~E-H|1pw;gCr?2TIwFmi*el1`-)^iXl`k4d8*I*Ess z>HzEQCC_4Q%b@D+1D+7bl>W2xjin6x`Q|fwj2q>E53gaaMdH%7>948pILe^2l`es- z?)_TcuXK-edZUeLY{zOIrqYc~G4(g)BqM2xNq(IhG;~7+)9}s`&!sx%cm?!>lU&Yq zi*6c;Fi4QnCU8IPbBQn=$so-}rZ3D|+|g8!TUfXAjn#Rq9vAHfoUhBLe4j z8r62d=1;GrX!Bk)W#IS6C%%*mfIL4WH@v}%rBUmZV|H1&GDCb{ZPu1uGC2uz?QxQb ziu>_m-T-Kid7<^nnI`ac(Jq=);~-{ezS9xe0|;Y$-6%o>Jt`u;?}Dd&bU!60nZKFa zXB>UI=9SVh!blFzuG78eL+jQ7=L&CtHG7{2X^Zk8SC&SQ+q$1-Q47e}TS@-!!B5yX@*b zY13peX1GvGa#kF$2)|4B2#yyJoSEtA2&|fqEkzK7?WE?eloHk0-pa*& z<9F1OygG6coP(K_iTzVDZjo_usgaRP#5%llT-DN>ID}%xdNd1}PsSp@y+>^6W6!R) zTj4rA&FlJPO*^558D_%n{JcP1zmV~T*>;buFFZ-aZc#h*T{p8HyWyX7sDH`}m7K@M zm1DWjFO6=nc+9znp4a#%S7sMrk35RJhHzr%M+Iqr;VqcA6ZWS11)n0P4mJ8!G$~A+ zWGi57wp5hxuEYp7?-x{f@#4#E$`STw^+3KQ7EznO5wkq7)TZ1{y!(wu>}8DUpcqMm z^8jQHrAnGW*jC9~2i&d*%#INnDpNV0)Bcdg{R<7C0sXo6Dg_3ptByfjI<}b`Lzas0 zF%J*-p>EoT(KQpLn%bFuat1j${$1L>O6K&O@&+C9rdh-}u0>?(RpQ>Bkywk)@x-Cj z{tqOZ0oX~8i-{{x^2BI8oI|RFNIxgP_HtsJE6?3grj0KkT#&U;4*uF^YhuF=H6vLG zZ)ydlAzgN3+b?!4v+%>=4cJ#9VIDOTz2j1`nDq@7yUmtk@W|MG1NEIp<(NX#qQQ+T zwlgoB-Ba2QQ5ZqrJC)WM{Bwn8_~PnJK;sb1N#`(~zMvA4Er@-*eBVte4^Pgb$j`s0 z^Y0L2`9kAMb!MSb*@20N1`Y%YUIkgf2?Q|Obi882m^a$V`DnOVISvMREtOT&^LX1-%)Bqpfr@G&$G*r>*T|n^d~m{0{d`x=;8mPq!A za)v;?Gz2KzunkF&Pjb8}Byocd1K&=JyP z+GY%i;kVwE;6s)w97>D&=HhCsFm_8a#+yYc7oZ<+&XpqfMTn&3zvjB-$2@m-$FD?% z)hfXIwF`1y1=W2voRl!dM72L53a8!c+HBH4Vc#w16+4#g9If8_UZy`#M~$=}KQV?d zQ;**#K}mxu%;Be?F|lF3-}6TNYVXGs-3^{FkoPuaBy~I(*>;U$vE-L&mQxDW=1fdG zW~K7OP0Z*9;?3%J6&*WY^L=7$_~u}B2+9G8mKwbNDY=2DYG9`lz3OB2Vd6qkMyGoN zwRe&gG%~HzI%e_fs}Rgho%;EwvS)ccDxQ33yRppbB6c= zSaR)rLHb#Q6LRv6REbj&XARhfrdCwc@#_e=F?&2=~4M)_7aSM&#|8Fb}j z_S(NgPW?>mYv0`{w9Vj62o3oG(1M_`>cGU)K#N~r8fB_+4^|VG@6bW z{&Tq9^?c(bJkxgP*q{(}yZUsbL%$b`AWwnIm6v;{Uz(kw4y%p|TyJ4F_ycC|gRSJ5 zUgGz{^)u&yjAQ5lv{LaK$&weo5I?flCCu?q*orQf8fsKri7G|E*9kdC;$>YyBOr*e* zGWb3Gs##fuUeQj8X8g4iJJM=jX*5 zz{K+$?uOk&E7?p}3M<_(IGF_#G;z~s5tPdGH#-x19_8tia)Kyqxz53=^;zX)&sWxA zm@ZuqNe{zaTHcV-<{z(GZnW)fZb|Q_4dA*vG@J#;RD{T!o4bbJdYS7@5U1A?@V;&wYa8~Vj74zi`xn`{r*gTB^(B=uDa@L< zYa)M}_-7Q@CICX959pY{S82S$UGk$N*aRK3u$x?`!c(rGnf-%W?>GvSn3hh z53qQ%G4|m?pb#P>pjvY{J2C&KT$XY-)CX}ZeV;@5l6nmc>$w9~sJ9Sx)oHiYCj|%A z8fsH3Gsg-$-_A*UO&6aJTTYWv$#pOM`PsVNnl!t{)C))n9#M@}ttmtmW>(Udp4}dyQ-(K83=r^yUjJiPXDmsUMc&_p>Js zQ5QE+nl^)_`;kzG=(Jik;a5nLm&#De zb9We!7!|i`Mum(1EQ(d(V!!UqpSh`}kFsF3!0C2?W6laS$B0A=_$L=F_vOfu#W^R^ z4I@AlGnqUfFEbd27)r!Q0UAgG5ic0f%>8N{m!O@!?#4#!4{)%2CxoqT`406kt~*&= z%}5Avpt15VK=Eki^`sM}wdC%@2?@Em1Oq$2Nf|MZ4yil`PZq#tT~C4(CZr;UFO&eX zA*+?^b;eSa4cY2hUbZa?aQD`b_|)#n*cMcj?{py;;$gOPm-~Qc%3TMO*-Xv(XZd(8C;r6Q12lz0FCGDyQV%*Oa(wv&P1Gum!$>9q%ga$0hQzLfq z-M*^Hq>0^t1pn2C=;M=Q46cbhjv_%D?w{MWwrv#QTG$vNxbJmJ?1Jd#aoVY=Q&TmY zGpJ^1BZ4H3(6jU<%6ZewY3-AFP)FZ6qg^128Q&=Az{}DNYx}K*>!GGTcUbC;bF9ff zmd0s>@L_U7FEfL-&V$KX5eNuG%S{%tO#0}Ntj7yu*@uEOP`j) z{nOfaB1FC1(gfqE*KLZwt~jfV3gC6MyxO#`#NT`t9n6Bw-m00E{+y;3ZfU(BR|D}R z81Fyl>=F-WSLp0|&hCxb2u4=?7l?~+C0#Qj6tDdv$5ov!3z za(B{XhArc!);w|x8c=C}yAR&pUZtbM7l^BJ?rvU+h{|o^;U`vm&?jNxUdM}4K;;u) z@sRr0_*jy+!dy-G33&;w^Y*LOIAejr(-$uvB|iT*oe3KBGy!ADqdT&vWPO~Wi=Fhw zspqtMWx}9=e@9ZbmjoC3TSwD|WF_o*3uC?MVor|A{Wk5%TPbooBb;J>8Zzy#a~rA& z4w!pzm)?2N6+@huha>zYY^2%a0#jPjPH77^s)kVSk0wV z)H70WZ7AiQ?uksE2-iqvds>@_b5>uSqx-p#Sqdp1n#oqjLw;Dx%canzeE1BqsS`#w z$EYxMQKheY&{&+jy*1TXK3s$gMACG}bx>&3q{|OhA#`c;YF|KSFKmcZ#QL+{ZcwZ$ z%ir@yztoDExMKL^puysNoiKKxFhI<1_r*@f$t*AX>6a-e5&kY|tI3mzeai){gHI2? zy;QxrIn359cH^oyeNwDm22aH9L$nR0gTt6#`2(T9s&y`4VDB^P6UoZQ zu!~U8IRX-p_!|HWFh5-bv1+#l6tI^MC=R6WAG8<2qej*FYoI6p<+g!=_EZK25+DD% z9C}yZu&f(5wh&;J&e|xRN869xB7Q_aSnGD?%a{v+V@ zm+*3UDqssuFgvQA;AG$B+wT^9u5g(2P|O0kYBHRRDv#PV4FKR0#2rdv8KDrQ+RFTA zRszDdf4-cEdssNhAc%F|yNPHB16;%Z4IS&9`+xaN>14Z>6Z@WfW*k+%%_W<;xmJ$7 z&Rj+Pp9w`lbQAZe95}~&Kj<+7-`MrWXMlIyvUc@PQ3uG~pA{Z4g&cxTWvs$aUQ$25 zb;oDs?Nwa^1Duo@jB<=r4PH5pvE3|;*P>aK2$4q<*3&x7LFQ}&+@VgJPW;tpGk;d2 zLK*#`41gHk!cm?*(*u0mYc<&>I94Ga46%jX^u`?@0++4=n%U7OC&@J!v$XuG8@@6x zMb4x!elRxbas5nM?tCmOUIlx0^o?JiUmYB#i-F=t-s!by=u< z@6wMo*3z0bWZ?(xt{B3PcXxE4V@0fGM~@gZ8w;$|XA{gbY-_r6r(2W8^G2DV0`Alr zguzDT1QOdszL%y4yvdHaZgoR)QJN7v7lNV(Vp%B~6#@Pgepv?=Car)>?X7Pcj5#Gp z8bKPDb1Vg%fVL#R$bq$k3=b>?FouY($PfE@8QC>c4|Aa5q4bMi! z#yS;LwlDMq4_=ko^ma^7sOXs6nDon@mWoxO3pdixYHxOPpW0J2EvdlgEx(&uZz^S6 zsI7S?S9`13Ex7E!$Z$A-H$SYf>96m;YLRk%ye_m$(%*UVHh93b;ce zL!xs(vwg#*E+q21x&5rc<@b#IxjbW zq2?cP+=zs0XiK3~+6GG?VKHQ%3k@r6;g#WUmTovkV5|(QuDGTwg(2U3Sh|&<69HSA z5D?1s=W4Z&uhzsd2%b9Mn56N53uZdaihRaYZEU_;Bo`Y7XRYJOG=&uLE}fg$+R@Yu z>K+!1D{bbUM&k1q6BWp^vTjM;;${`mb9HQcQr@dVwzrZxd#mM(#In>cp!9_37t+-1 zhnwSwgN9-#^HLFykWFv@R;hfsj1zcvwUqcQFN2=GG`QOfJe~Yt&WTpBPrmWHBSrSa zthinYO23{#2|o=HF9Npq%zo6lgN>b9x$-SHr*c-+dF&IpF-|?`8j%*>t5yPFkh~k z@QO1?<;TxCyBpu~3}d1SnQ*hqr}?~?+VrW|^%k78o=qwfC+au!KfozaQc1|ze45ew zn6y+6oC(f0n)K|tMEHiNbAwdNdG*Ek0#F&cm3{tog;@BgU_hzpSFL|)iWVagU_aH- z+uh87%`p)>;F{(VqK4Q@wcSjQQf>~h^Mh_~t;BcWMPD_O`MknRPe>>`a$SEGWV4mn zTLQ%~-`Axwky6~}f@_isHbh#N36k?6MlNf9Yu=evU9rjK*4_AzdJx>T=E!fjm9swS zdY49dewNSxr9Wh{B7;ruSan(&g>pa0TYW^-4bIZ7sY z{6YT8XS66r(6eAxHdktT_PBYtUaymn*0Ei+-Z(VQV@MiNZT-VVm&zfk!HWE7+Sg(F zlAbssZ-<*~KQn?(Ia|5HZoK{RJiEgwWV0%&fbeqR=2lAV2&_UYMj`y_OWGL=Ixd65 z`*YKGBp;p_RV>_)3bXy-q2XDw>BEQzD=UcykB`r<~oPjGL=WfMp|V5V!sPhSgK;Z1G+ z<`g)=RjJ`scq*#A`?I7UXOqXgHSUxJ{@J^}uD2|WAlCH8B5q-PaJLR#1kQ%uMPPkQ ze*Q%5y{?3GUcXRaol#CLx$RciqubL*<6`rYAcwnVp~ESk>0=&mxk}uceH4oap%*Y} z{RhiF%VI-k+Q)gt9!P855B5sOjd@lTIi7_bXE4v>U6Sz$EYAlWAKzWy;(BZ!elrXt ze5y>|A92}w!65X{v=IxG#yyXwnD--xVnKPs@O+7nbZ>7u_h~ge=-|KziZ!)%hQD94 z(mBQA{N^1sLu+JxMA=0Xh@P@!t3bH$ln&LI1%7&$)G z>nqtDrbI!I)EC(lUY7^g|H(SsVhD*(x>`g!U)SWgrKEKF zDicn$8k}gtaR{>K%Sy zRLp1mJ~9L)H~;CF=ri?ASDkgEQSsQt#31~5_L-(I-ee#Pn-zLImG;|XMeg%o&e!<` z8G4O8OW>>XJINgYd-BVu38H%hqqPw^J0#oP)inq@7!lj9COzavNH~uC7{-S226f4S zR<4O2za?Pkm31oA3K)_XN)lVaBv22Dt+-Zg(nmLGp%vpjQf8$)rn2|_5(i+6Q&Vpy z9@4lBxQ6h)jOAp71QgC3+#yG2C~yaK%}!l=Br;bTYc(wRq7J;LaB4UjgxNnogkN=b zk1WrGgsG*lbyuw~+`)d;+a1X$%$h2%2nFLgj^k(e0#+6yn=j-K!`R$y>Pd)()69+E z*i2}g-K)nYs3rMjGrX=b_AoGarF^KL_ORgK4giVi>P@VC@1U<9$J4mDwBzpMSE#GP zXW8%Yn#^7(!5cu7W4>i>mS@?E3!^1ZCW%P;N}BRA_Rz94eW2ccb3T+k#Rs;Z>BSIM z)ukb!qYP6ua8AuK4NDA@Lj4d+Lv&T2q_SW8gm-3;TvM}1*hO`d! zTA>!Um_Uozs+Bpb0m63@>12p;&pu*SC?GA&t@UX^I3J8R0A}}VL9_v34_6bV1v2YT z*nB7Gz4eRNLI70;aq>9slC4GrvFDr0fc1Q0_`{vj)yxVM2+~beXhW{vq#iQVka-5w|4Vb#xzV#rhjAJNP`Sn&*NmL*tsP++})|hFuFZk104m9vw}XxTvY6)kQyaG6>&B(+jSDKzGyTpCWFZ3 zqaC(bJ`^{1z`pWsi_yf=sYf`bKCp^~XBs`YY$JzbsH<9kg_A(dg}9De+43I?exqKu?DHdSBg?4q);d@1Qn z10v@-X07d0*c z#4uHjd!PY;-z6rHv?s7D8U}+Xw;Jv$u{3UNAWzFB;W!)LGBu{acIMx0j2+v4VB?by z1FHcFu{m)6b)QieGyrz{kMvD3^Xos9_um?}o+fs~_I9D-N2kSkQ_#y3EvUTOXD>Wg z=w`UU+2}Py+A9y9U0*Bf!3aNjcX_pwdOMR?dichi1b-7KFR`%y6TdlD7@vp(?)F_F%*HW>hrrcT)PA^-nu!^5A6= zFuJMGh(WAc8$MwR%TB75TGbNx?v`NO{;2EO*f~k*Cf>BG`5w$|`daZBWxXY>uR9(^ zJXo~n@GrJ1LgtN)Z7V@e7LkD2(fuZYRJDFj7;i#ab0|PY5=h#ETd0jSMqy>(n{c9@6*R}oeKFb>%HS_Pf&1oI2HLame`7Ksz_qtC_ zJ!l$jt*wY9yRS~Y(5HJuPHY?wBgvSoONU)xuahw-eQgy~5jr6#+f^#1G`-;~=k`L3 zdb`-I+QP^NOn)Fb{;Xu#xI$?eX}Qwq@3;dg?@lpkM_MDDO@^ebB2yC67JIW?5Fon1 zm33Q9;tc$APs8^!1HvW*Gj3?Jo}^n~&lp8(7}L00Ef8gka9pPs#vcOg^5%{w5tOj2 z5K2@GaQM&NSU%VaUPK4hZBlIJKd>J8pc*e}E}|m2hte;=yhOa!pyH^NeyluMa? zR}$9D)C(0pLJ=|npLMi=@fXq|Qr;giAP%a%R$EUpat_Rf%NIJ1R``T*X;P$SToE+? zJ}<&t)>G%z9CRA+r+9s{+7~Y~P5+DGX3vUjOKFO0l@916?dnyI0CFx=P3C0ZziQo~>bn;hSfWfF(H$O3?fX@BMTX;g3KW08 zlHwF5XDzw_G80G=6o%Oyj;vl?kp?kIkks^rPc|v1ze-9*Oz!z#@DZj`kVZB-BS9ky zkn2Gpg6dADvZRgusHYvO+@go}4KVV@?ruy@xcvd5b>H_s%T-C%?Gi)t#j>7zmi=|V zGEt;~sdJ`r{$~&u!UoC-`YN_}bQIJc9*{8$k6>IPgBzfYxTr(y5 z+)v6Z|2IGg%pQgMO+cu2?M~GX_+my(Dkds2@?l3;S+8o0AaQy0PrBWkBr=^NrHNA+ zrC$X=C8nt*6VEhW0o~avDQQyo(=KT+Qe+Yh@S(!vT_t3JZH zx)nVlZIu0g%}p7g6>@O+D}2dO04#z5u$ry96LJ>OSujle^@qi`DEkIs~DfuH_0vT;?bVfE7!>;wYWjhycHTK~~DO+6ghylT<-L)62=gB6IT z7)_avLuNRqm|dh8vJ5tQB!pnFTYHGTpUOQkM=0T2j*Ur;UsIexo`7v;-=e*2&QE1J{;U;E zI=KKl)jUOWLpqQb9=mk`22TFRypFf>a0$+9O zWVz{#*dEnYidYOXrBc-L9&YdBV) zv4{Ttl7ElHO8S~MWU{xMKgQ$WqX5S6HTfsU~3}?|HZ+ zfv47xkhrw_Ws{P|*$w9u4lzA?xuYk#|9+kc#DC+}0e9|S^m9M?1jq-z%Qw-H)z4Rq z;9}ihN;8cbU|;pNLAboH#%amQl#pgmH2#U-zp6IdmGZQEM-bJ{z~yX`JY25goF_s;ivz8yl_R7dIx$k>}JW zH-5iVz^^Vq(%<>i$|NwlxhlOz`wKq7I4&S6nGDMX(X-l9W6~QxJVGF2P69mgd zCCF-zKaVn(yi5i z$0UaOH;5}kf`WB`jegyY2?V~PICw?zPIh@U5OGC&e$XcHcyU^~$MsML5R#_QK`=MU zk@OH4rZ&pvIJ%}Nea~*4q@kN4#<2q`fr^%W-(KNCSHH8h|HtO`WNzg6hiW-NaD=H* zb}bnx6jkJ+@+;xtMY-Bp2~pMr{^1?Tl}*ZWBj`fOBH(5WqHZX%etk@pADWl zMAoc^8-nn8oqVAdd)B~pvIA#Y*!`JSp#W3dP%#WrvnsrN$l2IZQE&OVEeqmVV_uA{ zdtt1@^jqWDT&5@-Z?$e}@4P!Fv!Hh?mUdQomykcxF;;%cIs%kSr6Ve{9qC2c&@#VVZKVSUU z5*!uUwCb58m+c#l9286W>M;*aoP^!k6QKIdg9kYU+RQ>A$GIs|_#hk{JNWso_}tvw zOCS{VhI!U2?WfH80k;5_2GWRrP65UrQ7A1SOD=>7Xs|gYz?Jw<1Aktgf4*f6u#cYo zW@6}l^Wfkt_$__NPnn4O;3WR{cV$KLha1sloAp&k$2-cxX`go4UM6M#mW|};PX|2UB{>DvsE$FX`_AzP zkXA;sIHA5aou7n#$t#sz4df85zsynYZPtfi?Saw-7d;NHb!5yCDaOp-Hi-|Z_L@#| zeTryknPlXWTLylG_0Ia799jNPKQtRj0^QM(mqY256mVu@ei+!=*-*PDsr~ zJg0>*VV{fV_q>ZHkZ6Djk|U(tZH7%Y3?gbLt@u``1}E;ES@$b)ToNNDZ?V^~4gsLL5gs#?N4addH-Z!6W zWFpYe!L00kVf02|Am4RCk`&7w#1ZiTbr&~tBe27a%4|Nore~YiSrxymM73P6w)yq# zxu~Qh!iF^QcZos3>y7$kQ**w&TwQ&i=IaPAvxD1Q*7|waB|GAzw*gv&U^h9( z+K_>5)R&-n>h$v6zf=y}GW|`3GXsj4qIVPMF3MX|cEa=d542O^@&`j%1MpAYER9OQ z=2`sTLm9kloA?~ehvcu%C?BpA^Bv`=`#EP?ZsuxG5Ura>Otq`~oNY9&KRyVP$t~X< zbF>_Gj#Dfqm7KcxJYN25)(%sdydrI(4kRLrGQ(gEdui6{;bcGB@t{zk&IAd3Cs9R7$mq%=W zVOLjQWwejcw|6iq|F|`-?emK84F8VXz_xT!E2hfk)$7;SE?>S|;%J6`sV>DQ;O|O; zK;sjVvAceSgk{UzwT->m)|4?v^x)y(JS`o)M}2shNO@(|rm}CHvYO}T84HIc@x#bq z6|UJ00r{*S)6UlrtGAh>^ta{A^)klNy}ym1Y@13hMag~bdAYyF%CiMi?BZ5nW<8tw zekfXHn@{zdW%#rD@DFbML5p4W8}3u6+15idD>ePnPxm%(tr7&gjq)c^K7@_G+f-MJ zGPTA*{a^|^{T}cG&dpFVPJzI=Q`NdJYA4NXJudazaqU9NUD*~B6%yjX3I?F?XuPzN(v(`xoiL8fRN(|N3NP;BR9xuJ)Fz(+#vE3E^;%64=6 z-O6#WfT-^eX?GJ}J67ja${pTD%GaiN$rXG|>m&^!EG9D;rH7d~&*TYO)c5W>YnO{z zM$LzDrF+FBMWkJPWq$j0CdoeQc}P$8*YdiZA%3TDsYv01KnKSw*UB4HTnQGk&zbTy zAG{MV5jfd1fGX1IBnjL1TC4E$ikTC>#++Wl_y$*;hj!zWdY2xL54x)4E{7@C$}dIm z1%!x*t_<3g$5tuQ@U&DX^u|q(Gm{Xx%k$W9eMpk=PKD9X7v}yeX0t5$*k}QB`*j~;Z(ZO{<)B9JWvOIjORHL$Y-s42uo$ zyT-4GL%Ds*^(=>KpdMJ04yd@*Sj0hLOHx(VGOclA9wF6 z=Z?NWm(vtCv?6{yRSVP84T_b1(E7D#$M5U4j3KTpNcV#$4w09XvIZja8If1@Amqym zZ`D(og?&S4xj^8l;ug}vA(*XB%V+CzE1xu1dAqadjb51!orI%56??u-!`b0p;8)m6Kb%PNo;+5w+(9O>6`S z%R(^Hs#wf>PLOBNQ?GP_p7qCuFC&G%YRdL!b7GzEDzaJHbi?@zOuFJpP$GFD!RaUA zF7SsVftp=O6mHEM^xTJf40~!eZ%v|ML902qXqd01W%-C;5hmVT&wio8j(&H&0;S%N zvBj;r*^;hO&f#ua6e_3})Pxmt$yEr`p0ptU_<{3<^4+P6w#J(G&u7{CHbe)Xrqg>P zpbyQ;z`NSM;`36!ndM|3^L-`t)qM-53yZ{|w`W&AF>xDjU(1L)S9Kwd$wFuQQ`87~ z@!#@bTAl0yY`I8U2|rD|^HFNXnc+3ce5v?5NWm?Et0LAFTDo@= zl;ChJhVYC$x2S=uN*^9OsqV1S6wapJl)I2xDDZ{Z>N?!97SXR2^{L32xsF>N-Tt!T z^DD2x7iB^N{Oy@HDtVqOJC)?6*Q(ISSlQf)f4Cu8VFe{V-pv?s`>u(8x2+$1L#}2> zFs@>mn^>l}D-ghuGt0y_cw3}Fz%@FMhD}UVTxD7;!>RBixwTy!vn^d$u?DRhyB-DY zc63YW76j!UNlwODKauggm#*Kf*m^ti(R_wv)^~v*q2;doLYy_CVnY6ySPB07$X%lI zxjdH*w-CMXuj=id%q=V*2Zh8{#^;@|D3X~$=_x#%@ZI3PPvOT|3+B0>bwm01Z;H|- z7yI`9>at*+B;?q(3q8{q^<`>d(a$xHxaL82sKL~eUdJiFj%`hfvtpmzm0eLTb2SN% zOG0WWe2fCDZj8rFGFAsNxN=lQ;=d?4W6Ec4$`eY%s3rY_&sBlW^Ne^x3b4SQc&=k*h8mTWl-uL?lCoPhe+358RH1*UW*L!3yYh;KM zRnZ|Wvz&m7He)!?1H0$dOAmK+uz(&a&+hQNLhS|Gn_G<17I<+4QGb%npd4SvcD6v8|E0j(*Rj=>@dO2pZP+HqH;ImhWB2vl(TJ zGoIWmf+|Fej51BYqx*a27dKxE+i_heJZKx{4n3ApdXlPAt>x5?7o2Mk9u#!7Yat%L<>MC-^&c?F;OIhsOMvgn%Bg&K zY+APFU82GdLUidFN(e{hkU557x(XWywa70)MOykA^|Y#ddR6>dMM{d<_)Sq{n@j=y ztju>Sd{&fou%3Q&&V?c+{!32ptui^$JDtScqBZKMDao=vkQ$hTf#kF9| z40=piHYN^{O8Is9A8%H^HHUpzrs>9AdR@@xgC9#c*Z7#$HX@ma9LBqmSF-dsbIKJ0 zK|iJEET&pzm5tvROCxQlyF}hGlCtJ3jXKdamQLtK_IJ||a_a<4o}J6j$Od1~iMcKH z1sTcXw2!bGLPRy;j)@nl2Ae^H-}tWa_bnqv#a6znkLT8>HQS>%wOvyL%~7fHEierL zNkn8FRjg7hzv2?LQmnd1zxVaUzTo9)zxw`3*B%6C z$C?48pZ~GP*Qd-YeaE8wCaPEpNgsPA%xj_p7(}w3Ba8g+&`Gym`yA5nvGO8~%j-} zp{Qkj?bW0{4dD+8%E-o>Qjc8o3FV#X(fq!e zy=DwyYi(FX_!(%$|4fPdR`%e@2r;f_@B6X=6B~45On&sbM?CK{>y-_UZ#9r^V@tnr zGm$Ok+;po;-k~SNLiNev4THpw$lYSgcb9@3d%s<(?6J0jeH(eblvjJna!?PFRGoQq z_7kFe@ixtxDzxWX*Fhaa{(ZD+jS0<~B}V}&%Z_x|?ADQ@xoc?~F1A>+bteadFy;vo zK2uwHC&o0Q37BfUzdb!*MZ3byoIgic8$pdleb}Y zQGNz1a(lN|vi6cI43HD`xt_?Z_b(UG>+saj(wfnj{G-rw^2 zRI*p}6boNqjWhr&XlcX%cBG-o%E!)v7iXi0DLG!I+`iJjR~DYi9cQ=hgmZ0|1AFiP zA?>~6*PL6P<#c@H9{ z;(T~S^M$k64OA(}dpIHjFYtX_T-D0>CvL{qBbGWIO0bJNqwh6@RqPxj6#II&gWWRH z7?*A4!fMPZw!s(ocxg9UPT?9;D5gEHuG@xpQ{VI6kIA&NpG{vFw=K>=@zh(2;8Oxr zF3o*5$rujxg^pbN{4{-AAqbXtXE#7!)2Ej zIO`wVF4waDE%HqfDNln;dMh3cYQ4sX&E!ja4uZ!^Lz;A`=L@C1onDSQ0r-cu*lwxc zL`6g2MmWf|gNs-n#E+_$IAToKq07~avt0@Yu{0}(t-uAOt{1e^vb{NV5Z$kaA31AF z)5rwxoDT8393HEimE`KtSgGVQCYcZQs~;B}db77SW(dXiecL|plKw`jJhe*3Ha{qCxP#_lTPr1 zi8%LS7KJ!anxQrL{!H}2E|1b#J{fGl)uhmfAJQe+tfZ(B% zzGA@5*i<@LBlMFg)y!xu%2)PI%3CBWeO@``d9$PM=-6W7Odz>*q49e4R2@|t4}Aob zbYB0fr2CqwIhtD^afG+R*O*Q!mfzjinI$|8GU~1P*lY#7@WT0T4Qk%bbZ}Q>`>peh zTfl*%ZPY^eGMG%-Q4{h6e9C&_r2GpkJ>-$LkR6XzU&#In2Ed_SoDi-VXIvYBAl7I1 zA%b`I9oU*gtH+`HsJY(m-}UR5ZGYoN5JYg{9$pW|NChchn7Ot&1%7r$t`7SkM~u=rd<2Hd`K zalUU3Vi-yn$WKlxX}WAOh0>L3nl_iasf~V3M)$ly%MD(UtpTXETLl|k$CaN~6@N+6 z?0)5Mn}cc^x<=E1^_KmHp6tUdAyTRjX9!}Q3BKOW9nkIjycNq^Z7(s>(pRi&NrFoL z8!q{t8}^;r$IC1_iAD7_mijJ1md5uS0Wk#uqF^KHc{oOKQD!0V(D!}ETEvyX#`lCJ zyw%(y<*RI06;ho|Z@nxQuxqag{ZJYc^G8G;-);R~?+CZ?LRI%HU$Y;lM9E6};$<3z zlYRVImLwJf6Hlz&NKjZ>r_ z7FAWdPKu2W`x7VJg2UclNmUO&Zz*1z1#|J}9mxY0FSYO}Cr$^&$VA98D7 zgzFf)F17ly%HruQ7?ib>4?1t=^dF2bC+CcRgG=tJ^2$4&VQkl4UHua= zP98RHJO)|z7bBS#f$KOOe-lZGXZNkjBu?eI&HiAURh&aw>)KyB5B``H;XbOf@(}selv=Np;kaGMV;AiDoDH#fjLJQ2{xg)gTBA$9f@S3qie29t3 zhwDN|Ms;5kz7=oabJAI2Yrs)^NeVzfYHX~HTT$g0hH)yDMsQ?^m2~?Id^S~i68%&% zu;ZXmhGU^`Mj8q>svb8mlJDePJ*c|JG2fr6Uvk~JUgx8eatID`&`D}8uX29q(pVF{ zVtIpks@lf2ENtIs;yJh@<$O1Zrec>C_?6_)cF!*ZI1Bhv{B!c>^M+%0fYV06tx_k2 zMe>&d6|v++^Ct}%L3=#YM~hIv={qi@2IoT#AdS>Ettu4@&gdr;#Zxxx)M!EU`9c=} z7UIXV)UgxtQ${|(H}a)n07luF-io| zGOBXLi5XL?IkLCHZeX$J>z?uqZH=~#pg22wp#UQeNky@F&O9pZx12$b_iHL&wwOck@LM__5l2Kp!xx^-b3FYw& z!{()bhq-z;n2(U!J|ht;MYJ@;LG+3aPqyF;%gVN}z6W>2-7vSBYO0wYRV zGSO{B?ogzn;-|~AM5dL0g#C=tySFK21l$*~(*jF1fQPxh=lF9;kG)#l6;~}Y$jHBL ztoH=~U#~Dcn5QC*@V}D>Du6D?1XkGEk9PPGWqmJ)tR8p<5x(?JR?aR^w;{w?TBg+6 zIe$k-LGmuS=%t?fR;G`X(apav+%<0;MFwp4|J;C%2IRj0)(Xh4wL%;ZS`+>cArVzb zd?au?+0}hL>S${?c>S5g-3VR`o#CS9plCt0$%AU3Z6GX}sikcc#lgEGEIpOoJV9&# z=n(&Leg|!jTD2y!QzMD4fCscU!Q*plnSM$+4kd`w(hyjEK^#PPIhzxTPGg?Tf-GH@ z_cx%RNI|0{wwe}!^<6eYgUN?h|t-%&a z)zD4@`oZ8hlZ3^#K6c-yrF)C^t?n{FVc^)SoLbUjLF=|;%7a9s0P9?%0(j2 z_ul7pV@^R>iJ1Z0serO?ANbZ+q}#PjG#9|;=`yncnC>oBmpdAs!+&$T$e-2x-y>Q_ zYC{vDAs0-tA3?r(Kzshk2-Fi^45gEEaodlq+W+ z5#jY91<3i4>t-@ryXS0khu361si9-9^$oTv1Y6oj%B(|cs1Jy&gDN|V&`tHa_|e-! zWo^D=7oL|t9NHQQJwOlR3>|BUgpRV;C!U}~!d<`6!Y3qSGdk~*73)-*CopmI>RLel zY~)^G`R24r26T3oCLuQp0v9)~#imXSwY+aYG3K0UqqcdIlZMr@YZLNsEGxW98tb0> zUd)BdCbBop<;JFJ^Au0Vp982W+u0~l?Qcgb6gW7>l5;YHpuCdArF(WMvfUj^Umcof zcz7u67n$~bZYt1c;&7OfqJ+^Xi!{@M6&J%SDDr;~L0b-qvv`JsP7ce;={qDgoR5OX z+?rBzeM|L`a?jnb++o6%ajKIT&=xcw8Gx(C>3bHmTB#Pli;O|ZWXoRVR&-DZ^`7zN zw8Vzg_gFLSdeEBfNs;ywP8nI$H{QG$i$B8_wB_}KsM{_)prubhe?iOZop7|DH*WAf zWTQR$r_MtSJ-#b$LwE24uIxmcy&|nXnBsj{%B)ZaY{i;u_}jfLM{Damz@4;tlrUij zuwKOGM6Ttp#frlAKRKYROElHUUD3~2iFgr>0;y~-I@B~8ngQ2NQ>zB}eNR?>!4vp^ z=AH%UaqR$rnFp!VAxyhaqoJuEZJvtxrPKpCE+(hpLap9LS|W~=TN?QVYfk6Uz_$`dEH4ENseQ`|=3CHsOZ|catxc=}h3N$E(reAx0+vQH}-$0SS1HFoCCA38T zTEGGMy|y#=pJwq!`U81Xn*$oRq!{EU({?Ad{?f(dCuuG7nNf~(Vp;Rb5DoN?w3zS| zZx#M-ik>DQ^91w(L(R%8P~?kK@qZUQ(PqfHWLfW7uxmPrnMO_yhm4Il7iLhBOYXD< zR3Hu#=Iz@xqwon+p<54lD->v><;`KBFyWSN#&Lxp!ldJ9$b#$9PiPWwn#?F5g9_fS z>NBz0Q1lO_ytSCeoppE3o0*{M@8PWas_|`;H`U&SnMPO6vJ(Li-$}}imHz^62qhQ8 zsy`#VsL1Giv!YGPo&$iY=Sz3o{(XdU@GV+W;nCj+2g-k0aH^Kv^V( z!u#cSLwcVEB!>MNmfD9kx`|6BD0gaWkPA1|wT!OfyeOe2{$D5~#G)r`>YxQkLp&%l zg;f^KeT3S{0ME{L9Nx8hjw_(AbM?qPy9q;PSAFfDW`9!p-&x`}9})S4q+% zrMFX}B2PBR0|8Mj#3-rTT;~1GolRlTpGDk18GOXs#XUGY2Ab)214i%cQ!Qo9PNN-^ zH$St?f=-+;<^eQq1rcxOc|lw0i{m(bK5kOlfZ$Y+GXjBSVJtu(9v*=B0GS!SS34k% zA8a^vpB@meb<0IAKQ8N2KNN&ZN!(u0p}pz@T(5C))9<7na(f5yI6)+y{L*-v2gGxN z`}_a4y?nqx`cM1g2+&#o)BfC5K>YjPzix78-+$ZH7yp%U{})$8@}G9?e;rl>eC^@h z|34qNVOyQH5V=qjdsG>M)V$Fh!Z3KG^I`Fs_k5QoS58N@{E`To&?lWPBn(RZS zcBa(L%~KxzneI66_LJG9#gX26>kIJCfOq3DT{f<*e@gvCkO zGV0g_Eri(K&umTJhqnbD=ig289=m?*U28W_m!N!9Y-}vnz5jgtaRnXC(A6G5f%}zb zc)fo;bhzSy4$OenY#vm%@M$I4}%f?5anA!70uyLEeR&0f4a)R==6{paXEYn9Jf=gS!7r zTzg=lS(ZxO++btwz%bU%&6)7}WFb8X&fT;QR4`I0$^GtasFh;I+u=)}Tu&D)zhLHo02E z;Lvf4?#7Hz@0LjCu_Y_u{Ois0QRS9H)w0SlkkVDAR1{pm1_`Vv-$pyiL2C_vyBG_Q z{WY3LOHpEtpf$NyaN>K~HK4QH1XK&`yedPm5V+A|3BOQUitzJnu$&^gSrnF|1||iV zwRp_2J0F?sp6$?~AzOLY&4CrscI%&#R?ZU6NBPo^Pt%bs@(=b7`S+WEZpYSTkHp`n zwJo^Q!mi%s;lqb0188nb#14mr^&vM$qkhWC$qlNK!>#<|9{jd%)6;4|KLiI?4n1N{8fmVY$p;R=wwoVqpU;Wjo{Bd>RcyYyD5P$EjnA0p z96kJ1F)YZ8DP{AURNJ`mCkse5uEUsiA;I&HN*mTalJ2383A4veq1A=fHM`d)0lk zU-u}{a>H8F+amJ1YqK{$#`?@=MfTexH^PlLt>PMUJ2#kvVk z>-^p>6$Ke>BrKZOeQ`{rXellp@VsJ=3#eh&V#Bk7Qd)o#M&^+e_XT=#F*vK>Y@K4O z>f|x@vl&7rI&lO&G+f}14c-c!&cfyNw^s{&tHEtge!I!h-uY&U6za1>j{fxGIN_Ez zQ@a(JeV>{35mn~SZRaYprUX}%rdbhn?4uUqV#`8TpLa9n>5V7_?47CL7sm^0=UvNp_8W+uj4HU6{ZO?ea5wbT&358e(x0^k|pN(S)?TqeRQ7-A@`zh zFaLo97B_D`yF1!cz?bG{ZNL3E<#lsPah}5Xz?t*b*{4tQSGIc0&U>n54lHL`2bx%V zT0hp~3KGT`4RK#8V`83>I?5(T9^x&>z{670CXIo>D+NN9`FIk zA|cN7&o9q*X~$zyL0^!8^i zM1ey?K3w#=;*hhV-l3N`95nX`fQE3XSuCsrcRXk+!sF$xRH29#|p{lDH3paS*$w2rGBW1y7bU%ldhw}XM; zT(n$``EhGOJKVkxv?%c`U~#r>-q?)!ea!$&N-&ro_N$%rbaG}#_~4g}(=*wuzeUx< zjR^uiIma-}zLf(GOiSFJ&C$=9z?-?g8hfy9?~-e1!HyyR@+FhpAV;vfZiIx}1C=Jh z^3R_y+6R{{&JBdV&dAg1eK}wIE@5&oG;+OB#xFRzDlk_% z(^jz755M4{=!yle!f68+m8?Gw9V^QFI=uFHhH#?%b2i-Ce6sNPS5uqtIFs?2EX&@r z$69!)(J1GD)Qz`?-YhcX=~Q!&6-e;NKkM!VC`d#tWF@a5ez|a&36vb*>MVjbca8$u z`Z5=qab9Vvp6~I;+c!0u_jVP|5cgnV_iJObijdSx4#ZVRHbu~K&|BA(<2?U`$PBf994bddBS*KCOz5P( zhJlLzserPKlN)Q;s(1@Lqz|RW7l+?Hc1!!v7*TMR)Nv)X01e-1+TV3z1T1&v<5!7X zFVUwSg9_1%dUOseH-EDpE~xuB-m)VFm=0F75-P2$A#Y{cN*p@xKY8+0vNqQ@{Rkir zfsrH6890$WbC%30@UpG&GS8O?;4uR z7oXhh$=uHqMu>?khv*cDuY3?N<*VA%{!OAjmHZTbh4X;-{mjO!=>YsNHMAx!iZ7;@mhW6U1|1aN z^zK(2?X+IJQdCk^#q`T6?`C{y$Q@C+`KO9_6>0I2_y!WGH=)w6XDFarFbaxVO{ z5!2=(o#@p!zB(2@8lt*s0DH*XeXPn ziFjN~(?(kXhba2)*m1%N4K_)n0_xjLBj)IXG$AdvBi^baA*nK^7N6a~G}#$ZR4T@s z{1|tY;&^77`W(+)d--ENE4})vGpn0%_{JAO<34Z0135SkaZz;7Qp&t4 zO(a83Ht1ODK^$qDl+LDSVqP-(0{ zn0M@*(rV+g_uqcFB4A`~XUE!G5n-F7uBX4NOzPGwKOhJNTU%>OWL>m$&j*8|>jvI! zxU2hLf%s463Y|EH`RU)r&{wL4#GTPF>tE|{=$OdLds*FYy`X%UBguQebzDQescoZ4 zp_R=UEZw}G#Tc=0EEiyxJ%{FgEtl-|r1RabzS`Z_iLVOFt#;OMLZX_ zRav^dVwbkPDvr!0Y}b*cy;xeDPXC=^?Tt}nKUq_}IODBr@>{E-2nu?(&ga}b8Mn$KpDlg!c?}g(@!9T7T7G>Nd#e#R?8e96 zq`QK;IpZ4>FIt)emylK!4@zm?=USiq9t;KY&LXMyJR@ocJTqg#D^J-{E?s<6!;<(P zHXzFRR+*t=HX7jYua^^i8b+5S-uWkwY1`Cl83ivj0>KBibqS-IgFs1ch%RyRU<00A}+F6v`qb+D2Qh2wdcc+mO9PvCRUK`F2BTBrp z{n=O$T>hM_HF^c0)NTfv>~&aK%Xh#2Uevk4WUFeg(rImcakCBg0kH62?UV@T1nh?_PdVA~JADlUPXb)_Qfx$|6)ol}C_#$8}AoT2P z7LrTov+jnP!FmxFIKGXB6gtPaxDJ=jJWKk?@JOXgp$KPu8jGhZi zQa^2Pakh-TWuJJ+cqCU>GuJsS$+CLP_oKk~r$?*xE-B}F#hnoxn)R!!4h~2sV`|Dr zYdk){t8@b*cmNI4k@$xsqASU{*&{#BXt@FNoROvl!RGBXXCB3U(<+Jx2u9wGB zD02i*b8Z=aku?+1#1lNyn@Lve z6bdticeX_29PkE&2sP`SsU403Cy~HWgeiaLI+I>0K2Iu7on!gr zx$CTelTj=WW<&-G5PgJ3OX_}#x15)V_BZSg?|!p4!RDSV>wnXINIVu%c~8x#d9G0P ztxaZ78VHxu&fb8;k+RB?&Neg#=ieCZIbvn^ucbP^(@$cQLk5WBm0Go_sw2{7Q=z_1-6sB zO(O5uBN;xuo9(cmA$g>>4k6}Eu`mj4vo5l)X5(sc2fjd#GvoMb^Eiuy#TQrzkl>vu z<@U-xZyIkrkr@CujSB%zX9qocWW6*|g|VsK9;6l4s&3OFh3p~L`2oAcPOdcWi9=pWv$)$y1sXBrPNcxEK*JBmVKY(lWaVVjY+m3 zSGQ}E(xO^vg+^*@r9v}cO;srasZ3VhW0a3v8g7cFCrg7TaPrl^OV`BQp*F1GY}BlO z)nP_gMXU&Q8KbsB6Xw&(l)V+edT_;CmT#P7_Xp|XZxJ7*A7$iY7!^TDw!!*p-hzOf z@bOm7Kl^#;@aMB?1JD;1#TKpIMohKpba#*3(S1LJgayvF@?Ol)jK z0=efO#J%S}ccUpKS!`XJ*uP4ok^6TlnM1Iq0n;7o+dnwp&Q!gqZku%V~tkXc&d<6ya* z>p~u~40!Ay{I~ON7NMCP(&@aVoSU!O0(?_)PoGw4T|1tSD0H;?7)WF1;ZS;yr9Tas zb#~V;3VBZd^pIF}D|IM`#GLG(it7~)_*QmSQzMuI#*8EnH z3GK)+5BmHvAT_wn=XSQeZ1Qqo)!MM=OhjZ?`=KuL(b+$q1VZ0gwGKu2a)bcZu6r)q z<>gRFru0xkv|LntlCay(LqJiXu6JkV$TyYNW--jNK#+Y_d6rW;xyS;eD|JQbMkT$l zxaZ~KSR4Hkk%Tzsp5B<2mB^svw9hJc??}Fz-~sZ14|?Vnv~e=y8S|M%Cd#ZAXcGwU z{fuQO&!!aMTRg38@*nu^EReR0^gcLttl5g zjW@XMG{ORqteKw`ECq3uf5?|#6G+^L`w=dgk)vKQ+v<6-+bo9Msy1>1w)q;lj@>>! zY6A<$+Q|@1ZKD&$naG{3Eao9#W{TWEPOg?B#fpS8Ik%8o=<1;#KB!Ir<|1sF0_)Uv^!BRHwgHk8yJNPql(>T?Y`_RT z+FNtgo6}iOW>t6S)Xi~nVlQ&X?|IJkK4l++>=?t7f#OhL`fXwu6hw{#rbp`od8+`} zyw+F%Fq>w(Ih%l)6X03nilI|l1R%UpG4-*^cDQAK^Y%a1^nX_{~`sgwE));0r zR=c(@i!)ibDUM`dHg`Dmol zyZzDz7=pKP7yHQOqL6BSYmM8uorLH#p2(QH#yg80vgQp~YxUDV+qpC#;I-@JSuf-Y zhPe&!tX><{(0f3YlpEwi3Zu`4He-?DddO|zop*%wYGe<2XO8>9YrqF*)se(^Jc>}; zQPXS3t~M^z57jl0Cs znb0kF#9v$XIgm_K^;%^UybC|?D4J)$-jurISss*mnZ{SJ>==GBhs*Wc{5c;JsivH|{9%6l-xjcQ2PEo`1fKt7>cY_=<+xqS@ykzn&|fch$;x3zqpQeL zFIA7&F>!vPdr#C+h8DmsZW-_RU}rXIBRMRWl&95uYut%V)~#MO`?~NiSmBu^lo_Zw zmY^Cydu$&xih&GjvshPb>49d071vqd2y#d_pyBBv{KMw{;ke6G)|R4xoQhudR*TY; zwK_xcMJawrpanbCXRvzc+>#=v|ET(Xco&1XU#qPDz_xsBY|XuZl1x#AV`@{N)NqYe zxymukjU&tvKJ5Gq#FFB6qweSdjc_uJ8B=r5xP;_%K+u!7VjukjiA{a_H_Mlu$OrI% ztrxcLXd3TvtfpzwU4ci*ZChj9$td{LptB+S%(&g++St6smX@|>YQdsRFUuu6P@i|- z!P54na$tRR-;6M$kR2|5e#Jqv-g6ZAzX!C&8(MT8$b2#f_&(V(fnAoDb&26AQ#Qv> z=2rw+i~&*72*qX$VIGB+M~~T>kVCnOFs<<3?Z5t+enD67bGhyB3h5j_{VvVO_)DvI z1k`fZ15AEzFKZeBPTJ*Nnk-d2IW)LlU3+5{pbl8)RRk!U5$B`TZBDu41<{G8di){f z6h|155h32~L^@V8L-J>p<|{m32wnQThtqMnb_46LQ(v$UC?8Y)d{S2=y>+AKBP;m_ z0P3|@im5iMXq_dwE=c3!+wHxY-s$FAG1E6rc0U|o9$93s8+V>;SM7kai1`I>hzty2 zIxYT8c;PWplPOv+!2e?Q!kCin*|_PZQaZe@^slY}Wcg9-@NHY>;1p1R_C#t@LKmwA z8mWxX1G2IBf=6AX`)ngvF_{Od(U74mW?zQofCT7$Vi%jT9!Vrv$sASavaZlVV>1lB~&6BCKE4@dJb zVL*>1(*yD*^4~#tmm(zlU*XPvq;|cz0=4)@3um#cM7v8`#389YVjrs7G;Hs1K zxrT;Ct2XSYwyQ~N;{+f{%^8sO_gBg(_=MIJW*iqAJ<+b6J@+Hd)o)px>G7A@~gx6AbI&f(QthV zZd(ko+6-;78RuORa?++U?ng8e#QYsMhQeE)P`KJBO*y15az~7XKY1e#`;V}_A>et`Q zTjAP3MTH~qK~5v}BVbFMoDl6NuthU6z_o_WxxKDjsP%~52)Qf*E~-ljlB$Lc!I(>b&PV2x58fv&idHc-7DMo4;&7NJC5!4)H~xp)%m~E z8A^dyV?Mm%_Yl*l^-IeXseqlRo0r_3r3n=ODG11@D&^q>Sn&&0?Z84O>UXUs*hj_q z=}b5wkVa2MAiqQWt;RYGONTX^$l+)gseAO|@!w5A6t~{lqlx*s;|&EU$m^zNz;D2J zFZYj~+q^8Q>IT2dXHo3p*9;D3mP=s55iBz zPeA^Z_O84EgI0U6pyuV+84_1-vB=sUpIgSlhVWtW2F@hSfCFff*t`Wl$u|*J`X>_x z5+Q1^m<~KRq0Y9xej)-vNcEv~AdL%;A^_oEGcw|_L`CIpNK{=ZbP<$frFyN414SKR?AXZOptP4@r$bXxvEE0a`cJ3+D z!TSuYkKRZ^sE$`72?G6R1zPvrtw!ogN^4wOyGINr79E6M*TZ51XXcFWJc;QnKMEaO zgtRLM`k}U~aic4rI#;YCN$husWf(}KFjUjX*8eUk;)GirpR+$|$Z_#ogah#|DYe=- zVrXjO16l%wXCaO?py%8Y8KJlLEZ8UkY84}q{_%_ z{it0njcf#H1xxn^Mhq=dXz3s=KK z0T+AbH*p&vs(OQiFZE|2@>yi*&QGTMwR=U zne`eaO#v2Zs$xUKPr?Sg@1u0~(Jix{u$8^0)M$hNBkf@N!)Tp7+%@ml=UkoQQs^L_ zgS_`Y{!`6^K=FtEDPMPg=Kqr*%elO^+ z+yCwro{iyx5+_rEpDDi3M(>!P_n^aafgAWYIPB!%j@@vYI|`Amm-qnl)Qx{PK}XtN zrA!Fd?P?o?;;21IT!qr^(O5thiED*04~rt@UQp1)Y<>EENBqQla+&fL((OiRtF1lv|KYr5ni-5?Vxd zUXBj0c!I?m{H5P1wW5*^ezMme?s*CwQCs@0*;0ta|MkOVTo)bT_06?J)_>hw|K{1Q7iO23 z)Wu@0R*%2(DFctHgj3l~syZhfxPNrFNCuuw)b4eLNgEmlxEnWB*>k#$e{2es1PnlC zZBkM@GpqEzVYV#n$6mp^# z@V3WV+qbK1-(3);P z!-PO<{laRBb`UCG_HKP2YJhAHsdcyu(WX~{Tn!IHeEFb9JqKdBj496Gl8f6 zHh}igFPq1j4nf{%DXV3bJ?Qe{uf|$!)i{qdsev6-FZP$c#491fDo;&=J0Ra|6%_Og z92R7Q1THD%?#P6O^|}kCsuM0~o9tPTM&Lq|s=A#XOPvePt93*OeFTVCaTzZ03i#ZY zt9yC|Y(e60#{plkui>q?#R9f5$*+%M&TCukX*%-{-4xm=hAVPXmByZq#6g#=nm38M zqB7D$Uja?P1VzpDyl6vlby)u@yDmJdR0cu2zQ-7d3IzSN^zWpy+qv>Dd*S^wo=C}b zOZ%7KtJ}<|avR@^)AYhnbUxs+% z6Bo`g;}fjwcniUfHpM0I6R3V|)5<&9-4bch7;xZo-$k(Wu)_7(hkL>;Vbrs>0TCh3_?tL zHSW$GiGLPj$=bL8zL(S&?OFmc7BHCr7af_xPt$t}KQ?rE{qVZSX`r~AzClOsE5!XU&4Xy10Z48!sV?32_DyoY1ZM@cCZYzBJpVxvG6*fHLg^QPF0pl&q-E&{s8C2XriqUp=XLgdW$W96{(b$qXs%GNds9lDxUJ31?IJB;!nDi{XFOFk($jhUWn8st>1`z z-~GREfGizDAL769A7=;OAIq-iOG7mL)NuWw5n7EFVaaJN%0B+6GnpLFy}sYf?ON(B zM0%y!6Nya0uZfnRR5Bij%Sb1R2sV&m_!8|^O^m4SU}FVQ+BKdgZKyOF#uFU&mfzI% z?KHYwiQcCpFOA7%xS>WAE_Yd}DjgLzG$KLX)?d+c?K` zS2n4>plbVR-C9Vks!OM?bpS6d&4fUQUHROc>@Q2}Tvvq_%Y}8a+(Si(Qcj7i-tRo? zRWWe}c8vN4!+GJ{&ss*w(<7MMxkv7L&NnY5`TGsi5SIXrRlq07I-bkdpI2JM+!vb3 zwYn!S#gdJRXE81tU4`AWX==duTav(_3ymhHH7whU4Xhux72fK{LEG;y_QSqVViEVC zuC1%L+$Jcb`hA${)vn&g$0L_62jy2rgmqoMEqBQ4)CFYxL_)k}82q`L>z-4Xd)46x zWQO-jfXTf?y7eW zH0wlPJjb#cb+1-xcw#c80<-m9Gi1V#6taS#td0F*`JiUM^G5Ox{S7k%K6cMt%B3tS zmt9SMP#gBH#-OAoMxMg}57&BF*NqAZBod`^Y^*l~2&qYlI-mE8(EP6=*j8E0bTGNqjNS*;m5^R6GKVjUp;Wckp+B{DrZ5BvPxl zRehu(l*RhNNe6;THr!E%#S8y%;+q}5xOu;{GJW}?Nld(DJ@Kdivqsq>IXEB&(Y98o zT|+exnOgh-cSi%gjNax)TD;^B1Jw1`8%8Pcz8BqqhQ2sQCtjlT`ammyP&DpaLf-(A z0*c-qS=$aTO^`FEyt#S60SAi>Z7u3IrfLyprsSC02}k4MN6N(nGB7WfEr3v+gn<+t z*7M2z5-RaFpJwG6p_WhpN41z~to6-wkimKimh{xSk9Zji;xgKQ6ZoEf4|pf}-dR~o z_4|CGRoE^I+$oIIYt?Nvo&P#@fC5NC3E2>nq1zh^gFC1ggCQzcS+fXO)Bg(pp`D>azi# zjilSno^Jxu(87zS1UeG@+ir<9=4D}jR_kxDUzMC!A;k-{TZ88)nH6I0xA$zlYTR+xvC>=QCGv^Fau!WN& z^ewXBV13FPEy5?qz=i@)Z7t&H0%>bqQdjTbU_mFPMpjGjaJ(qHjnd=w;F7?2YE|v|2U%D5EDSF;5tn*e_XViXU!k*1tJV?Rtv`^p=~ut#Da7EU#V z+z&5I)VLvarW-gX(+7Juogvopn)>EUclx)skVt_(#9DBp)|^QGv%j5QktC!1YeF|K zjQGl$3Cm{;K2<1pu0Fwg|9RDGwsc#4-Ex_=C=pj=R2U>RhX?3#%lW#pTDsvtsl{P_ zFF}lZr>cx|C&_;8S`$z*NY$WuE|cs)swTHee#2Q}89EJBw#Rwzhs8T?VQW2oK zZ#&tNBSY5LZBJR44k?t2k+0Q0Gsp0K|N9$M9Fxo@&JCc|PWH%J-f7c}j6EgBvJC_> znoN$0IvcBAaO=`_-Q(bo{Qm6EC!fxH)WIiJk-1NmV=aUAN!)Wo6MW5PJ_iGexl2Zy z`vB5cGfE)P)TVv*kJk8!oTf=XhATJ3B{|{iV&0q2^{6lq5_h*u{f4gOB4=D$Rv|Jl zj^R}@dpu2N^E}njqF7q~xRG{{CA;>{$=V;UVmiagI3RHJnF6n4^)Fq3qzC4xb@9qX z#9OdcHh8}SF`10zFZv+TfwP!&T(b038e_-WR4#actjDmujdcE776AK? zEMVaO>_K6lBp)z{MJutVOF~(|3e1Lh?YT0k3+@gzNUnxiPUE~=F_rNO8yXlwN!%AQ zKbgI-X$ATqINRgpfE6 zN|4-PKdA;)By8Q%^g0aKLrvN5aFaP@PKZ+_PuPy_RWge1WsTVVwr~EQ_TB@ksjU4M z4x%tttf(L`Gl*Cj!z#kX}Pjn$kiKHK7P01PCEO zAR);;;EXf>`@Y{@-&%LA``vrL_biudv67s#&)&~|_S1g9htlX?x~TjBXfE84n2d~J zc4+}6!Uj@5-|U`!)>37Pd1^&pd-y0w4-U}2A(?)``BwLnZn#sdg9|OK9&lWkuUudM z)#J-}&M4Dbtbaqp9EQj+`okUwq>7DSFLpn~bJWPa`j&?Z$=gPHTq$;tG7ozkGqc_> zesZj>Y`D~D`p|h)tGHG1vdmI%G^_YDzo+DN4-t|su4ha`(s2lesF0x7@}&2p^KT4x=buVns~QV6RIdw<2ZvLtMq}{an54)N5-An!?kkJ)7H*4RB?a6l~{4%*EUQq>Nt)a~lHmeE` z#TFE%Illb8&iCt5z_TMG6mOFzL!)RSK0Wz>c!}G#9}u|tmw-|rssJ$#wkL(6@vbC+ske14#%c07<2E^-NA-2isf;=tNi8&_W9WB9Rwg zenScEzMGnO5oqO?uwtOemMEAISWLg4#f9c|;{8~hyD~s~v>w;8)Xg^l`7mtXmM(SHYFYCj{`a59|~04 z0v>*M^QMf{^FcW9n*srOHo_*^dbxK+`N>diasYZN*UPnc$xghMgev#1|E*d>px>(7 zeYmPBcTp7#zcXR~xs+gXG^{+Cy1kkk?6-P(%xpo!Csf~I^N7j9dsv-C;2nq96~u!R zZ4`IcF~X^32|tgJYp0rToLLNznf-l5B493qT+0E9XlgtC3lLrH|L_a*Fz5%Ld9NjY)?)$pF>-3*8in%I+HW>hJ+R)}8zt&G=y~)~*$42I5J7 zcW~L-ZDe0HRv{Me(%6$sAlw~B9&rlgE$Qt&mhvGuvDU6FGnCnc2AE=gQ28I_-nE?o z!uqz7A?fU=leKn58t1b!x}(0}Vp9~EutnNoWn(6?$7#N6?S zkADF1xJu*NuuD($0RgnI%nz3AOlXhr9P-q67c6`rXJ8oz)EWOOp+90XZDj1+P0s(& zn@itH8h?64_ZlatH~(Dcb(8(Of|MZ}ro@L9P6jZ?`>*WAfdmuGKp~Q;7aRvt;VULN z+Cix~&jfCsQE^Req_Mc~Z+QA`JAordL_JE9<5956st1ukBBMc|*h49_dX#CObi?hf zXVsx8Y27y@)Enxn^R9xtg$K`j(nNE=6>9@ZC_)<$$foQype(8CCijB?fRRT3CR!{o zwWfGhuzn@E#*nsx$3ANL(EIr*vG|-r)K?}ceGRc9?@(zeL$;ZjPu2rU z$!k5*JsvwU9Lul1X;t92eEfTJX9gtw0^qpbUh|YPb_lh$i>T!?ep7dCQOpA)WvUGZ z!h0G;YMZm4k0>bFL##YKf=F1PqB=9B471$Wv^xmkiip_NeofiI*EkS1-13$B`8RA} zhFP2x2eoWkbX(3S!^97c8TW&Ttako+#8pvNhr`m*8B zlo24%p_$?Wzq*5Q+%-ev@Q1~2R>Y0N@;;x7QW~*lQyTYyo}Ik?q*ETcnBKx?c*_#* zZ({)caQfS>0xTCT{d#b;veEcGT#)k@>##edQ?o;o;XV zhu!!_0T;yMQfjH)uP;-8PP7O4F(htm;E=NAeYCu|=doFL_AwPiJ@&=}X!_xTNjYm2qJ-c8@>oF2r9Cw95}P=(c!$SvmOj z++2bN`PFfYe?3<13i1(yBWLg~V=2OPU##**a%Hn*xJ|5G-h8%s5%Hy&tE_L1#;;?= z{cDHdK)F|pgw{5{inn$Xz?>o*Ikn!LDE3GveJ?7##}NQ5|6Wu&pw-Ac^QXg&Ln-Qn z07Z7)bD7U~i+o6K9r%$|V2}jI7b0T8pRe3LW{tqMg%^;3Dp`3t(071mgy>)q zEjIO-BKuZfXxePM4J#W0!I|>h5ES4WzMPQSH>tbZna!#-$loZe6vJ zuhLj;E_<-^K7WPfG$(K2z{tfjV={|cw~?Nvw#H^o$rzu5KYfJnbs7Nhww*HKqeDU-LKQ<%`i`O2!V1R#Ok*ldQOt89xbhrIs~g8O)_*P{5&YSAluO3ErRmur z60KGx#_s3#gfn$+LfQ4t$ct65=bomcuviCYq|;vX-Q%CRrFlVdBdccsIm}P7OS>RC zgYPW>u=1pF#{{4|n`Xft4|~h6IU~BJD}?Rm^AjDJ!6>qtfTX0^GdQ8B@XDK!i+4_B zo0wYm|32plKu&g{X|s%3J@h+Y$ z2j#}bRjxx_AL;JeukLgfGgUQyV{_&HMmutJVQUjCKmdB#9CHfYD$E+wyW8RPA}B4z zPt^!vOq~!c1$k;3>neGgyLO1f22lk+H(QI#HcM;Q(l&9*nF`JI5-ZHX6f9%((A1`I z<^3lVLEu3ReT!okZ`=b|tUdiQ?sNzicX{4@oC%U1DYoKNU09acL34*6SbZ<76cFf@ zV!yH+yj0P@geNtn$fE{3t3x-0!0Yqvh+(#jTHu0D(UhhmGV%Uzch}n3ezGQ1Hdud7IzqE!sg8!456oIZCG0 z1{>ICu1Qe+36Vyu&4I~I*hceEL17^x@0J*5aQ&E3rfN}w8Guj$GKp7$o;90eh)fx@nkv%+xJnUbVZ<^2s z{>COZPbP2La0LU6taf43Yt*w%b_CMXNslXIjW+SBZK6L*8`YO+jAAB*Ki&m7SQfDK zvxhuzK4<7bJg1v3j{I$o1FyU1YS;yl;?rFWG114TV4jf6269dldjUR2cZ0 z&Wf_4onA^pvWmf{dHH^}DbJvL6PyyvO~t{!(eBfpy7WN%`~eZCp2z(O0Bq@!_zfR$ z<8W)1ZyaH94E=RPOFz=90KkqDeA_2AOzAnsW~RfuC?RQvWqJ&;Pgd;Cd7+&AA4+CV zCl>T)?7`amd2@RKAm<&+ob1gjMWGeDPO!b(No4Qw)G-mn;DoH=?dJ@M2!Pi)wJ-8Q zoz?-7o)Agr9)R!kC9*PSWu+i8X7OHF`ddqzi+O0Tok`{d?}DjO%B5tWP1|NDfF8|m z?xsdLKyS6?G`42o_tgMBeShXZ;QdhvJb1CN_9Uc6pHnC)v#L)@e!J+|;&~^NB+|ys z8}h#YPi*|gR3XmO@52k9BBjoFh6;6IydG`Zi&th~dcWps6{I01+d^I*v;evioHSRP zQr`l6W9;az7p(HI4R?dEJs$UPu0}92s;trL=IekKO9RHL9_r+&f-s4mg8ac0UPZyE zn8DtSL{r-bX;eMbB=Xg#ZupR3N|msKNZXasutQUi*D>-HspAa(vTGsIbu92pfP7q1 z>yK>3g}eRdP@`Q*rmYgKo&iXoOh&Eg|7#F?$bZjv2*Vo4! zWXx{2FiZWc!NXR0IJ^0XBXFUB*y%gGd%Hftdao%0eh18b80}vT1H{a z3$Mw$tZs1+`NO|ew-+ymql-*)APC15^8yWGwH=#S8eTA;6qobRabADYe+9AgiCFZ2Ay1RkS3PUkv>kzs1YBB!kwdP4c_8kdU9Im2#RJ^_%nrdxQR{5g1I_*f zW1-0}WTa|Pdcb9Z!sM3~pj6}}9P5pFRa+t@uzvqs`N$jEwF*xZWpJJW}eFu1?Pzz^B0!TQ;6!;2ojK2*Ny zJHjNx8FLq54J#jd2oC+pG2kvNj{p!6)~*GRsABKOomG6htu78;zp z97w+ue>T5ac|}g!ilJcvANjR1rA+&F?4dK?`nROxYzp>>?ze^4@4PqS0yaYNCneW6 z#>n#+t7qO1U(UprnF5*SQ&gO(f4h~+UDLw!2Sk#Z!5==J)L_xEtJTr&gjzG}Q%%!~ z8)+$7+3o!sI-wOmH_reJ<@o*O792~Wy{sT0=sajeAA>v$1vnoK_2MU|(^k8o=vP^) z-GeOBvpVysG~U>ARaykUH2|~bqQCn-`j6i(spfW-v=!boeVWpM9#1<71UXHC$RSGc z-mAb1-Ti$>O@`DJZ`_--6{+|yU|d`BwCx`X#H9^Epj@!%$|WHF|5Pi?&kg{bS&wR( z8x@~? z>6F0qj&Jy1e*piRE^h4d)|taysXE5L5iLvz@Sio^czCklgJ;{evgx#V1lVSAxqv@l zb>V~uyCv!CF$)65FzHmyw}hnRFiSX@-T_6uyyQAsmzSG!p^q}C6D)Vh_+GQ(f}>Hg z^72kt-nrX>sYs7JU;p4)C{=EydIzzTlVHwqA?xjvc{c{})EziDH15+77TWmX?tvF) z^DW{Rvr+~Y)wgH;ieMcM)r z=yho9{tuL`90@vjC$Pi?H!$X@e}vrw>!%fErOcj-ld1Q%5orUGknvpq8VIdl8}5>? z4DyP%jRvf^skdB4LwLnBd}dK5e0brx_G=9#24S2 zepn#jauLeY8Exdnk)~W;X~B_}sUxfStp3uG_VyKYY8<$|NIMrVQa#o^0sTfb9 zuX^ChD>HSkjvIOou4_o0xu<6nn1T>cIEC6+hVK?hL@q6+Ep`KEV{S@A{jbNWzc>N# z;_g=y^C@ZergCRem5XAsvM-6Yh8c7+T1Crd^#nu%6aF}s6CIP#P2T^(Eo;-Pd(7f} zKlRJvcyP*t%T;&3K0Q6ETb3{(qa~HMBHP(|qe%hzhr335m|4r9l2p`iMdH5EsuZ`%hk?A)L{bI(79i04hqAo=0Is|#-3V9=hVC)5`?M&5L zJ3u5Y069!wN%P7UTGJj1;hEZN8Zl~LzL}WcC7x~IK92MdD?jZe_tsnyz%5{mN2Kg{ z)oeMIBALAxHeN;E1#s+UrqpolbyB1yNr07UgJcK7>K$UF zF#v#cHHrDaDDqsqv7D^i*GDvv;+>%fMvJ9WZ=^#NZpo58%&vEYM8*JlT4}Grq>-zz z-=`%v`D{V;cupulhkfg|TFqa!@*>Wp&K1IoRv1sSeb*x^wb2N4M-VpB&kAuPx?nGQ z0x=kddcWiiV4331r9X_Y799XTV&ld(X6ix=CgOYFTUs6Mm1r`^HXs7PK-dx`!Ai*`=Es@ys`b0 zq~>%Jv<26&0dqcJAU#bffNm z4tDyl+BQntX%?M9p)N;|WFmmxlOFQQ3O2Q8-7t)`xf=_ z4;KOb>MuRb=927vd`~fE!t&kgoftm80o|zAx%p0ASKWdZgi1kyXzmY&hbkW2Ma<-S z_T?J&MGDp$B^EQzXol{klCc_w`Jl$CoAKj7%ba_azA@xhPw>8);*-^B7O@ywchUpt z-V{iR=;CC|m|AhA<4mIUDRfXz0q&8m|Iexzs&i$&al+_|?lsMa`)X3>g%lz~i$H>9 z)@P#-H_AfM4^TjPRin2^Z(2D_Pwpw*YP!Y0->nu@eMzUP?e=tog<~4lcw^>e^O=gHAUMGsFFCb#?30 zqe@YvuqH_keZk!@@@w_I+R z1H^!t;gvT|uqJMf&e!=V8sG_rcg=2>VkpekMz<^~tImT?Y(A5kP&Vf#m3p$IYWm(G zg~L<6bC>uJct{*gL7BBv_Xz8)Wv34>d%scc)TeIe^3{EP7w9oraCmM`@PN}wB3R*m zhhs55t*}@O;N!nzaa-$YVU*iJ7c#Rvu>j)#KIIZ(urJMBz{X>evj#w9-zW6;1Z@m@V|_FYDV40;f%Z2)uk*^fBKud7Hp-$z1U2n| zcll3Im0r$3b?HQIB1t@=SZpdqBsCzr>WCtF+NPi(gyy6H>lF91!!W(^wb9gK{tmQN zPRx8*k1uwjarOC{*Hxf(6tdk;_eO{mXF59k1*>=5iq7)J1S3|TcVJ}yy$_Mm(Q#)~ zx5Gc@!>!vQx9P00)04Gpfy;yB9F97(nj6)Tip00DC!S}J1Nw{yW(f|aX4_{b^F>X~ za>)0mo;Yfvt_!tSn^AvtE0`O3yQu76)uUAU5JH$^Z`&5zXSk z%K$vy+2r=qXP<#Iv9m4hP?hm+oCe~GT)S8D?}*?a&&-k}bJNOU(db!aKP?rUKq z^L^Y*)~C~af<5JR&LCVpUL9~&DH$?ie3qL*O{KT#@GFuh^wAc zfv1D+V7ji>_V{kBWYM69e;5_!(6@}h0)6t_n7rTmv{?|nGA<+mOfqxS-ZWE0tiH1mTr;S@dq#JTotpvJ4m|<{6tmhm1 z-tJGu^q=bE#5=_z_yalw%HUsmcTOyyaUtb>9k3th`+DLe^nmxLKWW|z_V5wqg1XO_*^8@(ri7hKB>bnoL%DN>8WC&0VPUV>{}KUS=FTZA zvsH=;B)-r+RV)IxS=>yXuY)0D+o5RR$m46X?LZRyTNMBAB(}PC$z9g# ze^Vgz-{+NqaM=F{n6k%`P5;-a*aO6TBm4d*)IFXYIyU$E-0y2EhbBgJ>Bmi?unzY`nV&s&F$=#nLvu&P<=P&23&l9D4pb4s6`fN z9|}IDkfp{hsOrzWhJO7`^+r-RplDMfJDG{l9!* zgjS|y=VkXHFD-$AXX7+~Ji}$qb=}5h$kijWv1Aj*yL-3e=l)ux(}0`ao;>1yO-tK185PVIu4eV9L%YwPYTr#E1J||e z-+>!B$%Kb?hp+_nRsdPLr9U+@p}INgMSKxBeq zmLZE#QNuoQVR>iU1xmoRF1xpCiu-jnrB~ch9odu)EjkPuvypyFh(_+EC}utaPvFATJ6+R!t1WZ8xi% z)!&({@9D>)K*)5is&l$(ahk}qaau*Y1II*jt*O69zXD$2#NIn?>HH@2L`KcUOm+`-&ld#ea>q6Uyaa>RwX04U2ygV!GT{(QyA;PdQ5A~Wwj~6rWF8d z%1F1Ka-PA$#>dcSgDwD^+Q3ime}4cJNbkzl|CWkVH??V^13l;ynlM(nDm(>ZPk=_5 z&$IEw){KHm-D{XHisXZO-{xFX;Lj!9y%*?zLrV6&aRLAR@43Ogjqd+u74n}q{Li-d zQ^V|u!hiPRo{90FZSg<9EvDFb98*)r48JXi*CeobZk_N4TeTKPbrzdS&BYw~<%!Ch z{WqfXkGvG!f4lF>$4F1}0~a~@zaU?ue%;q~{D~ItlZD&2eBLx!Ufs8kb2jlSjO14r zQkPfHoy+YX&l9ITRDQqCFq~s8s?oP+x31&IQ(V7&Tek?kbKfdGK%gu4{wihr{FLL* zrTxzr|1&*%WV9gAe}v*cd*;tN#{X!F|LDj6la3GDK8~%WQf6s3gJ>BO%OrQM3BxyW+Nh6$A%veAgv~oqQ2I5E=2F#bw(nvCZ(|t(|;Wm8PN;Nz%SPpW!`A1$Tk| zZ1QziVTEJs>&j4HavQ!qWcL1~pED1wEf-!AeVaPp+VIS-luk&^sxD#S(3i7m6#0FS zw#CWI{J3z*^M4)kg>6b8p%CS|2bH(mg;lj;(FDVmSjRyr{NWlu`z{g!$AC;@Xu~nB zm%;7A0)2`_680LyU;U*2_&ztT7dThHjFgH`Hbb1;i|UuCAH&lv_`=9A#ZAGY3`)r6 z2oAc5>pwo>{e^(3YVGjnnKlamubsQ{7q^mWr3Of7{G^?SN9l)pudlP(imjjgbIDoy zJ^;xFHeK^VDsPV5qqA+f!oqM8$^M*&hh1q-Yk9=crf)I_GLzzIN+{i&GfYv}kjV%u zq9`<@HvGGEojJUa{BfE=wcGijua5lv?PE=sXXbKp%0n5886=ow`eeOIFu%QtjTgee z`Jm>o4Gro*T$;*}X@B(`8=dj}MGIRwwtiDnEs+`%#1E`aWV8=}8m?5OBf|CdFINNa z6*rZ)si*`{nyG4b6aTRi0Fj=A;-lmR%Ve8*`kKxXhnXq?t>~Idv41 zApH}pK<=gXgTL&p{5nU@)!r{SOPGyKMF29|L!0EFbo!x#;{BY)lA zJIMM%gf@D=|Kgq~tWd^Ff63U|z+K(>^6Dz(%k;vsy})7BevvFy@W#r#^AGj=<-bi_ z)0~SBNaOstdByE009#4wk02^R=b1mK9;)X&!4SnVF3v0LjUixqDRnQB2H# znGL9DENbM;?sCjo?uuU9+qv|dQi!>Bmrb2Y26XLJ){rjYb~^%CdmnOnDZ9K58@A@_ zpA*7~h9ah^(r^Es+BpvB!pK`kL^^Hf<06>Alh`w*AE!CQ-`=AbG&u?`rETBt`-5wy z*6@~B_YbypY_E8u?UR2Cv9(ad3j-}O_?v)A^Hhbv#nZQUw@du2cA%p(QRAaP+>)r> z%67RxDZQ#{0g9;3>D0{oTPSAFMGQQwmom@QRgoDx{ep4Fd4C*}h59D-!-_H)u)NTD z@9w0DJAdy~%F(8qH+_5|+j_Xzj-+vDS3ZjB-o+p0;f%n+$|y;)_rEVF9}SeIveRGY zxZl&whF1puFf?q?py5JiBsONbtS{T?`xomF99IKohVsDowCke%oc)=h+80<2l%#15 z%?l`uOjM8m_CoA4N=pworoH0#?-RIK#yypFDg-pIiR8^NF{OwsTiK#7S*(GK3=c z)aGw>6X3)><)!>x!6p3l`2Qbx1(cX0O)?FuH!3PCV?@=>!zbqcv0Ilowsy9uK0vRz zX*f4GH+ZPfOcrRmRzvMkjp{EM026CFe25Cf$_+C1AL0WjdKufASvYD=-9qy=6CP=lzP`)ozR%$e?*; zzB@HaSCzf`LNgkIhbavstmM>|a{H+Xv(*4={!CaCF?#9=HxDnnA??I>m2+1C$*~0x zCR4J7n4)9j<6trl)e26~Rn3!w4a|BqP}){05nF8KZt+pQh?4Zr!YFs3Yu~|9DVlrm4<1`}Ctc{WluY-V!yMKRzb9HL!x1A+t zO$q5~+mKp9>02$lJWFHyYkccDTlS9S-XUZWFV70wntm}$hvcu5y543~? z{Ro~Fj4&Z;Gy;6#&OSi|e`UfLp?|cIC^>DqoQy7zpOCh#`2h6@j-%5A+;&yNl&kMl z(<7f4bVC0RX+46hP6w7Tdl(qawM*7~5t{5BDwNWCcD9kRBC$dkA09S;!!-p=JY=iJ zu0AjZs=-uIHxFXP8)}GgO^p!-LUL&aa3gl@Hx+@r6iy$2&wP4z_$b@czkti&$PqTZ zTL~|}yQtUNfCt10X$op?edLMk+XT8F!~w0!TEchQ!%x%xDBRJ0NyCS0&iADA1KiC~ ziT1$-qQKJv7kV?NX?KKIt31Z{WF|wGoQzY2X)y`0dm6eXCE5+7v2&v$oYpe}{pxC528Z$lm+( zH0wNOqczciJp}3+Sq>8Qe271;{k$=fG6AD+Bq-f#uM?JCAA;Hgz3;p?_U^co{?G*^ z2$c)dAk@oJ9q_T`Plm7+@}RS`8^g^|i&GuY}l~*NbRuo54sod@;LW_XGV$zi5 z0QT#inYC{AHk_?IbFvo@g;o(bNrodmR@3+E=hcuL-D~8LQsIoywJ(+*e!Je4qR_c} z411pd3r29`qt4EUDzUIn&`~Tug0>oV4b-qh)7QpzfF{b9>S|U}`bR(7slLbxUT~vK zeI?DLtR**}db|Dxcll`PGXHG0Orvznqj2a4wJV7)M%Srpld|hh-Og3(Dg6X{o6wbL zOWMb?lz?EPW{_>j#8b-#KhemgV4smLppJ;F)!555ruP9PtNgTmB zmu)8%J%>jtUV6)>B>=!@szZyAIqokitu^3bC^sx} znlP|c?>+tL1SXHBM^4wsX8CFFt)8uZn<5B!Pj1iH0$sj#ys0jycLQ(dWrwqJory4{ z*^#DGXgM`HuO?>VIII;kCX}jjsTC0bYn~;#@#x2HZV(Bxr3Kjlr>oe}awaz9NHIIwe8C^LSS z+so|EM#7^wppG^{rqb$46jeFLNyZS|S(6Q{E&?%kuNsP!H+IkrY5x4E=B}WN+w)1s zXuB#2X;ZG{GvO~~q8w=L^C_4GvcVI7ukD(Smp13U7+`AJBE+zH!6QELwpaWKl^A5a zb8#Gxg!96RSU7fuAP+K(bVIXuUcwXKzL=oXYQuuOTwWFrd2_9jD7_t;EoWPOh#~eu z<#3twX`6=j01wK}^rEF*IF~nldxmp0z^D6l$HKT!s+R%PMH658b-c z6F})9eyq7mBkPchz2e9{VbVCyHQT~Uj;mrZg~TJ+4rX|iHn1_()jous3D3eo$@3&+YkawgRWO%F4&O z^5_?s)n$QgD4(a$gk3Zufgth3jR~@0_%Z!*GOIV2CL$N_sx=t0g8aJ92O!c<2@q+_ zp^P@{P?(mJx1gZiK(ESWMZp5i!!>K$m2ru2%pcXwH8^YLx3Lxz$CtaMzob1M8P%8G znD_-0_eKk^%ug@mTwTjJA?!=yTrFETzw`5R{5{M~O58HPoX z61G_mKa=>$~;XW2f^P4L{c?( zoVtP*hPJXc;gyNONQJl9(}~Ze9X6|TXV!XzEV!q@Xvw&I{T^3OXv2dV4csC~tu&Z8 zYfQY-H7ED@g~Is=QrirjR;OV1w(eX6iF>Y&18N+v86^OGnu^NZ>^p;P=TtvC(^l2t-E)hZ?Xsm8N>y+M<3ohMa5-TIIgBorgBX{>A3XbF6%QxcBXDk#_?Sud4$z{;Qld{<)szc-`VlfCzEcY?af+W0kg} zjW8gjx?jzFh=VQ38RXy&LY|ZTI()QgLzrCc%eDHXev%sqqSv_Y9;RVC(47TsP4TvI zpn!unE{FZYA6nC@D>d2BofswDISmavK^418Dw8A#X}H*j6-v}FB~r${(CT4Z%|dN` z+1mUX1mkZzMyFXlf=%k%$}8xcg=h!1^{3`(VK-SJXFIqwJvm_-wE#AonjVU4Jdj~gjIQN%>{oO z8yll#r_5bjbqBi0VvuE4n5nE}`*NSzwrQi9gk2A>Y3ThukO6RCq&hNHUfGk``nmIZ zoVf(2x62?(8hO6)skenJi&t*$HuqFN#wEJAL2**EX0r=7vmuAIz?_tp#;3K-wJ~t! zr%RFpUSZ#~Pm)a=sl}u_?bu^YN87t!1_-@*F;<6_!C491wc(5C#FOb`y2dg@7hf&U z?IRO}w=FHN=D;u7r#h(dGh=Ha@6XD(L?x3XoO$yo{=Rw*xxPUJyHbDS?zuE}gR*C; zS}C1IV+JVD_6rus3tGe$oqu9;E<)RWILK#7#XJzPe#_wzzp}621H7-+QPi%%ZbT0VmQ=T3)ODW!e$VxVzOB_}o_2+OdEr7N z5-BQ9lXaCv#}+|<+)0&VaX?#~Qu(C?U}RT<7^Z7pQSMWca<{k_)fK8RKIcWmpstNp(!M$Z0S%T(v}#XtY`1AXLI zHCY(18Lv!wd5Fm0pA;e%%d+C0|v)MZIP) z*!9B~a9u;skz3*HYiR}HJN!hwBS)gCWc%;Gq${ext{7yf2oYrDgI2E8mvMSyGe`V_ zMT1#6U;GmDSy7b}uQ*HR3hJ|&x%{(j1tv3XI?H{N*snDw(qFNd>ZP#p%@Hc@+6DU1 zW6KY$yYaJw!OmG;<0(lDjEQ4Mg^R3I0?YG3N#wFns2}HYvInI7sT(|NU)P zs;b-VM@!#>t@V-v{U+3wb8Cnp)Y-g}3$ccpnt1OeXg%P-1no>xz0h8vo=1klOJ$X= z9#@akkK@nliBUjn9A`TB&%T&RwyDd?V~x~dJshs6^Qu*_aOiWtFhDrh8g4;CfN@;c|Cjk})sjELt0%gLOC5m4qLtVX>=Q)kc`t2m30^ zDHI742Sj~<7J~7PMWHAjSJ%ze##W_hj?=kL27<%bM@n^;A`0R$!VZ&8t-H(+ZBW}to!^IL_cA<;|JFX@!kC52KZ({P4L$Hrs> z7Kb)tCdUGoAG9>(6o)RL%MABUWscBC)+||fbLzo#{pHfl?nmdK<*LJK!vYMhJMEiZ zu5m7{$49=x#04h#AbI6aJ4zYnX+5??#xa|xq%(R!`IPumvRkjRjYWNp_?shZo1B1xUJ8PYfcd|zMBN#t=C50 z0$!hj@M=@4n`4{$_^ck2GIyj2?1mRMDa3EIY%Zjz2xllmFFogCfJy2DS`d7#Y@8b1$}NEE`ap1@sfpY4}V|=Y>ZkwB=0~!0ZVyNaV>-5gtZa1bO}# zESPfg6f*r}Q84#Rugrs%iU+iCfu%U9sIx7T)I4phms`&rDXl3nS&tq$pZt}u%1Q;H zh=B-8ROsqUIUP5d>vjykZLB)6YhWfIhV%X$Qygx=ClZoX#PWOI54P(oFE5%_$PTME z?WUZ1i*P%4z1?BUd$Is?H z3e!@PQyWXHGv-`<1UD$bVS-xV%xmsU%6ims<0mDq>Q z7G3&@+y-dDg;#TIHKkzRG1Rh+_-N{%~trMBY zl_?%GWeL8J;jm)`vB#2dwK+u8a~qcA_pRh|L10u(Q?T)KQ%E4TS(d%6ltmsWKZ>aw z15E9iBU71BKexFfQ=LVus2FqEeTGt#)sQWU|9OH~K%z3Tz>69E2Q5H9Q6%GvdWP}{ zbm^gj0M|g1wcPwMp7QM2hO;3^pJ;?Uk^}mNJiNuIDFc!tZbgoFg1ptKV<`{A^Yela z&eMilC$=YZWCI89RZ$p&Y?j+NHQoi#fAbGU^NzJGL=5E*bBa*HYP*!YJS z4Xd88A(JA{;x+i-F@e5|lwu!p)(Vs{`{*1Z9N7w_$Q-6AN@jp)6`tR8)t-8Uas$q< zO-ou7(ujL1vl`nL-8xhbasBd3B@uotKQtZ*!EBhg*jF1A*s%lt*_OpWfbra4`8 zrET@WxYxpf7epw8t1dz$q&e*5_#FClujSFfx`g-78O+#+zd0akD=Dvg6SP8Ubh3?2 zu%|)LUF6^|pgi`IYmf>oD>;tvkI_^7XA)}I+(nMf^NEh*Rm-I)7k==l)M4-}K+1SB zt`yM6&qLVu$$%`~3}|-Y^U1?s74vLx(qB&#-yEO4JL$6Ii~}-!_*CA`aMcc2T9hmMf)>Nm*^x1G zP`21FNHTn(zdK#=r@Am3zg%x!_}_L)Om)1^*Em!uH9>xzbx9B&qC3H$c2mft#8xRy z=tV`gtDDRIm7vS9=^Fe5etW!iF;7$6W~;6RbVnaJ*Pr*_4PK6sbsDR%{7@ht{Z?y= zA8gGB5QdzN4=c-~1U%s^ErB>}Txqcyf*xEzC-=h{xyU4+*%%)%oly`?h9F-p3(504 zw)Yi0S|F2!z??q0t$hyPw{l&7`UG{L225wivV#URTbbxE84YDv=5$hL!3M_`e<3SM zK^}UEs{@R?wrrKtEIc)Ib(MLPr>QaroqfvU;d;V%{msJhtMNN?%d|YBx0hTC*W~<= zvJUyDSw=Vi=U>K`&PV(`O=9s!n!XR}^&1^F036u6?tlC%P5Ar4?}?jB-}7F{zwCxT icdz@O{?Gs77Tfui0^)GOvz6U9(z$JL3wh(W$NvpGAk4!6 literal 0 HcmV?d00001 diff --git a/lessons/basics/images/code_filename.png b/lessons/basics/images/code_filename.png new file mode 100644 index 0000000000000000000000000000000000000000..72966eec1a13effd4da6bce57d46face0a801f92 GIT binary patch literal 7933 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%0A|%su29(;RB!Xc^D#Wp*K@FjAr^m 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

fST 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ℜXliy~6 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 LhR`h4u!;OXF$rVV literal 0 HcmV?d00001 diff --git a/lessons/basics/write_run_python.md b/lessons/basics/write_run_python.md index 0360576..c913898 100755 --- a/lessons/basics/write_run_python.md +++ b/lessons/basics/write_run_python.md @@ -164,10 +164,46 @@ Vscode is a general IDE that works with a range of programming languages it is p ### Open VScode +If using Anaconda **Search for the program _Anaconda Navigator_ and open it**. After a few seconds, you should see a window like this appear: + +![Window showing six logos for different programs. A red arrow points to the "Launch" button below the VS Code logo.](images/navigator_code.png) + +Scroll until you find the right button and **press the "Launch" under VS code.** +Otherwise find the VScode launch button on your desktop or program list and **click it.** + +This will open window that should look this: + +![Window separated into two panes and with a side ribbon with many options.](images/code_clean.png) + +### Write a Python program + +Click on ```New File...``` to create a new file. Type the file name ```hello_world.py``` into the input box that appears. + +![Window with input box for text.](images/code_filename.png) + +VS code will then ask you where to save this file, select an appropriate directory. This will be your *work folder* + + VS code might ask to install a Python extension, if it does **agree to this**. Once the extension is installed it will ask you to choose the Python intepreter, **choose the one you wish to use** +![Window with text Select Python Interpreter](images/code_choose_int.png) + +Enter the code in the text window +![Window with large input box for text.](images/code_blank.png) + +```print("Hello, world!")``` + +![Block of code with the line print("Hello, world!") written at the bottom.](images/hello_world_code.png) + +Save this file, either by pressing ```ctrl-s``` or ```File->Save``` + +To run click the play button in the top right + +Anything that the computer writes as a result of the program is called an *output*. Read your output in the bottom pane + +


# Advice -You should now be in a position to write Python programs, or open pre-existing ones using File-> Open (Shortcut: Ctrl+O) on Spyder. There are many other Python code editors that work very similarly, such as _Visual Studio Code_ or _PyCharm_. +You should now be in a position to write Python programs, or open pre-existing ones using File-> Open (Shortcut: Ctrl+O) on Spyder. There are many other Python code editors that work very similarly, such as *PyCharm*. Some Python code does not come in Python program files. The most popular alternative is the Jupyter Notebook, which Spyder is unable to open. From fe26fe5f4580bd92aee0b0cd285c55202e3f7970 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Mon, 4 Aug 2025 11:33:00 +0100 Subject: [PATCH 32/94] some work on errors and debugging --- _toc.yml | 1 + lessons/files/reading_files.ipynb | 101 +++++++----------- .../PyinC_while_loops_WIP.ipynb | 65 ++++++----- .../solving_problems/writing_a_program.ipynb | 0 4 files changed, 67 insertions(+), 100 deletions(-) create mode 100644 lessons/solving_problems/writing_a_program.ipynb diff --git a/_toc.yml b/_toc.yml index 2be8644..61fa773 100644 --- a/_toc.yml +++ b/_toc.yml @@ -32,6 +32,7 @@ parts: sections: - file: lessons/solving_problems/errors.ipynb - file: lessons/solving_problems/debugging.ipynb + - file: lessons/solving_problems/writing_a_program.ipynb - file: lessons/solving_problems/flowcharts.ipynb - file: lessons/solving_problems/style-and-comments.ipynb - file: lessons/common_libraries.md diff --git a/lessons/files/reading_files.ipynb b/lessons/files/reading_files.ipynb index 98c7d6b..d6d4bfd 100644 --- a/lessons/files/reading_files.ipynb +++ b/lessons/files/reading_files.ipynb @@ -171,17 +171,12 @@ }, { "cell_type": "markdown", - "id": "fde219c3", - "metadata": {}, - "source": [ - "### Using ``for`` loops to read a file" - ] - }, - { - "cell_type": "markdown", - "id": "c67c9759", + "id": "9cf0db2a", "metadata": {}, "source": [ + "
\n", + "Using for loops to read a file\n", + "\n", "An easy way to extract information from a file is to use a ``for`` loop. The most simple case is to iterate line-by-line and print each line. \n", "\n", "```Python\n", @@ -213,7 +208,9 @@ "\n", "The output we expect is ``[C10H14O, C5H8, C40H56]``, but the output we get is ``['C10H14O\\n', 'C5H8\\n', 'C40H56']``. The ``\"\\n\"`` indicates a new line, and it appears because in a text file a new line is represented by this character.\n", "\n", - "So how do we split this file in a way that is useful? We need to use delimiters. Revisit the previous lesson for a discussion on these." + "So how do we split this file in a way that is useful? We need to use delimiters. Revisit the previous lesson for a discussion on these.\n", + "\n", + "

" ] }, { @@ -326,28 +323,20 @@ "id": "5750b5d8", "metadata": {}, "source": [ - "The above code returns each item in each line as items in a list. However, this isn't particularly useful. It would be more useful to have a list of alkanes, a list of alkenes, and a list of alkynes. We can do this by apppending to empty lists by referencing the position in each line using square brackets.\n", - "\n", - "### Example: Splitting a line" + "The above code returns each item in each line as items in a list. However, this isn't particularly useful. It would be more useful to have a list of alkanes, a list of alkenes, and a list of alkynes. We can do this by apppending to empty lists by referencing the position in each line using square brackets." ] }, { - "cell_type": "code", - "execution_count": 4, - "id": "c5eaac3a", + "cell_type": "markdown", + "id": "1ba91256", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['C2H6', 'C3H8', 'C4H10', 'C5H12', 'C6H14', 'C7H16', 'C8H18', 'C9H20', 'C10H22', 'C11H24', 'C12H26', 'C13H28', 'C14H30', 'C15H32']\n", - "['C2H4', 'C3H6', 'C4H8', 'C5H10', 'C6H12', 'C7H14', 'C8H16', 'C9H18', 'C10H20', 'C11H22', 'C12H24', 'C13H26', 'C14H28', 'C15H30']\n", - "['C2H2', 'C3H4', 'C4H6', 'C5H8', 'C6H10', 'C7H12', 'C8H14', 'C9H16', 'C10H18', 'C11H20', 'C12H22', 'C13H24', 'C14H26', 'C15H28']\n" - ] - } - ], "source": [ + "
\n", + "Splitting a line\n", + "\n", + "MORE DESCRIPTION\n", + "\n", + "```Python\n", "alkanes = []\n", "alkenes = []\n", "alkynes = []\n", @@ -361,42 +350,27 @@ " alkynes.append(line[2])\n", "print(alkanes)\n", "print(alkenes)\n", - "print(alkynes)" - ] - }, - { - "cell_type": "markdown", - "id": "2900a19f", - "metadata": {}, - "source": [ - "Be careful - remember that Python is 0-indexed. The first column is index 0, the second column is index 1. In this example, if you call ``line[3]``, you will get the index error 'list index out of range'." + "print(alkynes)\n", + "```\n", + "\n", + "MORE DESCRIPTION\n", + "\n", + "Be careful - remember that Python is 0-indexed. The first column is index 0, the second column is index 1. In this example, if you call ``line[3]``, you will get the index error 'list index out of range'.\n", + "\n", + "

" ] }, { "cell_type": "markdown", - "id": "126e1a74", + "id": "76859efa", "metadata": {}, "source": [ - "### Example: Extracting data and converting to a float\n", + "
\n", + "Extracting and converting numerical data\n", "\n", - "As a default, information from files are imported as a string. Therefore, if you want to use numbers from your file, you need to convert it to numbers. The easiest way is to use the built-in Python ``float()`` function. But be careful! If there are letters or special characters in the string, you will receive an error. " - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "aeb84ef9", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1.2547, 1.2575, 1.2657, 1.2768, 1.2569, 1.2493, 1.2602, 1.2416, 1.2748, 1.2642, 1.2618, 1.2754, 1.2483, 1.2494, 1.2556, 1.2629, 1.2588, 1.247, 1.2617, 1.2539]\n" - ] - } - ], - "source": [ + "As a default, information from files are imported as a string. Therefore, if you want to use numbers from your file, you need to convert it to numbers. The easiest way is to use the built-in Python ``float()`` function. But be careful! If there are letters or special characters in the string, you will receive an error. \n", + "\n", + "```Python\n", "values = []\n", "with open(\"./practice_files/measurements_1.csv\") as file:\n", " file = file.read()\n", @@ -404,17 +378,14 @@ " for line in file:\n", " values.append(float(line))\n", "\n", - "print(values)" - ] - }, - { - "cell_type": "markdown", - "id": "7c6b67d6", - "metadata": {}, - "source": [ + "print(values)\n", + "```\n", + "\n", "Each line in the file only contains one number. Therefore, we can convert each line to a float when we append it to our list of values. If we were working with a file that has multiple cells in each row, we would have to convert each individual value we are appending to a float. \n", "\n", - "Write out this code yourself and check it is working without error." + "Write out this code yourself and check it is working without error.\n", + "\n", + "

" ] }, { diff --git a/lessons/loops_functions/PyinC_while_loops_WIP.ipynb b/lessons/loops_functions/PyinC_while_loops_WIP.ipynb index 29875ff..f1529c6 100644 --- a/lessons/loops_functions/PyinC_while_loops_WIP.ipynb +++ b/lessons/loops_functions/PyinC_while_loops_WIP.ipynb @@ -25,6 +25,13 @@ "\n", "A `while` loop is similar to a [`for` loop](./For_Loop_Lesson.ipynb), with the main difference being it will continuosly loop while a condition is `True`. A ``for`` loop is used when you know how many times you need to iterate, and a ``while`` loop is for when you do not know how many times you need to iterate. In general, if it is possible to do it with a ``for`` loop, try to do it that way, as ``while`` loops have the potential for infinite looping if they are not properly controlled (discussed in more detail in the next section).\n", "\n", + "In general `while` loops take the structure:\n", + "\n", + "```python\n", + "while condition:\n", + " code block\n", + "```\n", + "\n", "As as example see the cell below which prints integers from 1 to 5." ] }, @@ -34,9 +41,9 @@ "metadata": {}, "outputs": [], "source": [ - "count=0\n", - "while count<5:\n", - " count+=1\n", + "count = 0\n", + "while count < 5:\n", + " count += 1\n", " print(count)" ] }, @@ -46,57 +53,45 @@ "source": [ "The first line defines our starting value and the second initiates our loop.\n", "```python\n", - "while(count<5):\n", + "while count < 5:\n", "```\n", "Looking closer at this line we have:\n", "\n", "- `while` which signals we want to start a loop\n", - "- `count<5` is our conditional statement\n", + "- `count < 5` is our conditional statement\n", "- `:` signals the start of the loop\n", "\n", - "If our conditional statement is `True` the code prints out the current value of `count` and increases it by one for each iteration using the `+=` operator.\n", - "\n", - "In general `while` loops take the structure:\n", - "\n", - "```python\n", - "while condition:\n", - " code \n", - " block\n", - "```" + "If our conditional statement is `True` the code prints out the current value of `count` and increases it by one for each iteration using the `+=` operator.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise\n", - "Create a `while` loop to print even integers from zero to 10." + "
\n", + "
Exercise: Use a 'while' loop to print integers \n", + "
\n", + "Create a `while` loop to print even integers from zero to 10.\n", + "\n", + "
\n", + "
" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Answer" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "
\n", + " Click to view answer\n", + "\n", + "```Python\n", "count = 0\n", "while count < 11:\n", " print(count)\n", - " count += 1" + " count += 1\n", + "```\n", + "\n", + "

" ] }, { @@ -242,7 +237,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "base", "language": "python", "name": "python3" }, @@ -256,7 +251,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.12.3" } }, "nbformat": 4, diff --git a/lessons/solving_problems/writing_a_program.ipynb b/lessons/solving_problems/writing_a_program.ipynb new file mode 100644 index 0000000..e69de29 From f621695729da3e8a5daa49296e52ea2cb1400736 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Tue, 5 Aug 2025 17:04:14 +0100 Subject: [PATCH 33/94] edited the functions lesson, added formatting, corrected errors --- lessons/files/data_record.csv | 213 +++++- .../practice_files/energy_data_large.csv | 100 +++ lessons/files/reading_files.ipynb | 336 +++++---- lessons/files/spectrum.txt | 2 + lessons/files/writing_files.ipynb | 367 ++++----- lessons/loops_functions/For_Loop_Lesson.ipynb | 17 +- .../loops_functions/functions_and_scope.ipynb | 711 +++++++++++------- lessons/solving_problems/debugging.ipynb | 24 + lessons/solving_problems/errors.ipynb | 166 +++- .../solving_problems/style-and-comments.ipynb | 179 ++++- .../solving_problems/writing_a_program.ipynb | 146 ++++ 11 files changed, 1585 insertions(+), 676 deletions(-) create mode 100644 lessons/files/practice_files/energy_data_large.csv diff --git a/lessons/files/data_record.csv b/lessons/files/data_record.csv index d7e1407..b1e81b8 100644 --- a/lessons/files/data_record.csv +++ b/lessons/files/data_record.csv @@ -1,13 +1,200 @@ -run1,run2 -1.01e-19,1.82e-19,5.17e-19, -1.43e-19,2.11e-19,5.45e-19, -1.85e-19,2.4e-19,5.74e-19, -2.28e-19,2.69e-19,6.02e-19, -2.7e-19,2.99e-19,6.3e-19, -3.13e-19,3.28e-19,6.58e-19, -3.55e-19,3.57e-19,6.86e-19, -3.98e-19,3.86e-19,7.14e-19, -4.4e-19,4.15e-19,7.43e-19, -4.83e-19,4.44e-19,7.71e-19, -5.25e-19,4.74e-19,7.99e-19, -5.68e-19,5.03e-19,8.27e-19, +3.651685393258427,5.074906367041199,2.1161048689138577,5.305867665418227,3.589263420724095,3.7265917602996255,0.6554307116104868,3.3021223470661676,0.9051186017478152,2.908863920099875,3.6641697877652937,1.223470661672909,0.35268414481897625,0.24968789013732834,1.647940074906367,5.855181023720349,4.4818976279650435,2.7590511860174782,1.9600499375780276,1.6541822721598003,3.8951310861423223,5.224719101123595,2.9712858926342074,5.474406991260924,4.800249687890138,0.9488139825218477,0.6173533083645443,0.6616729088639202,1.7602996254681649,4.057428214731585,0.24781523096129837,0.8926342072409489,5.099875156054932,4.001248439450687,1.317103620474407,2.5842696629213484,0.717852684144819,6.179775280898876,4.313358302122348,0.7116104868913858,0.6928838951310862,4.956304619225968,3.8077403245942576,1.2359550561797754,0.7365792759051186,1.079900124843945,5.724094881398252,2.702871410736579,1.0923845193508115,4.444444444444445,2.9837702871410734,3.183520599250936,4.132334581772784,5.81772784019975,1.797752808988764,3.6267166042446943,3.9076154806491883,4.875156054931336,6.029962546816479,3.2397003745318353,2.4032459425717856,3.3645443196004994,2.9837702871410734,1.8102372034956304,5.6491885143570535,3.5830212234706615,2.446941323345818,5.855181023720349,1.8164794007490637,3.3957553058676653,3.6766541822721597,3.957553058676654,5.705368289637952,3.595505617977528,5.593008739076155,6.104868913857677,4.138576779026217,2.303370786516854,0.9550561797752809,1.2796504369538078,5.730337078651686,3.3645443196004994,2.5343320848938826,0.9800249687890138,5.930087390761548,4.1260923845193505,5.1248439450686645,1.4544319600499376,3.576779026217228,2.958801498127341,5.436953807740325,0.466916354556804,1.9101123595505618,1.8352059925093633,2.1972534332084894,5.031210986267166,0.6928838951310862,4.856429463171036,4.425717852684145,4.157303370786517, +3.682896379525593,5.1123595505617985,2.153558052434457,5.33083645443196,3.6142322097378274,3.745318352059925,0.6803995006242198,3.3270911360799,0.9363295880149812,2.933832709113608,3.682896379525593,1.2546816479400749,0.3757802746566792,0.27965043695380776,1.6729088639200997,5.880149812734083,4.51310861423221,2.790262172284644,1.9850187265917605,1.6791510611735332,3.920099875156055,5.262172284644195,2.9962546816479403,5.50561797752809,4.831460674157303,0.9737827715355806,0.6491885143570537,0.686641697877653,1.7915106117353308,4.082397003745319,0.2727840199750312,0.9300873907615481,5.1248439450686645,4.019975031210986,1.34207240948814,2.6092384519350813,0.7490636704119851,6.210986267166042,4.33832709113608,0.7303370786516854,0.717852684144819,4.975031210986267,3.8389513108614235,1.2671660424469413,0.7677902621722846,1.104868913857678,5.7553058676654185,2.7340823970037453,1.1235955056179776,4.475655430711611,3.0087390761548067,3.214731585518102,4.157303370786517,5.855181023720349,1.8164794007490637,3.651685393258427,3.9325842696629216,4.912609238451935,6.054931335830212,3.2709113607990012,2.4219725343320846,3.383270911360799,3.0149812734082393,1.8289637952559301,5.68039950062422,3.607990012484395,2.4656679151061174,5.880149812734083,1.8414481897627966,3.420724094881398,3.7078651685393256,3.9887640449438204,5.730337078651686,3.6267166042446943,5.6242197253433215,6.129837702871411,4.16354556803995,2.340823970037453,0.9800249687890138,1.3108614232209737,5.767790262172285,3.3895131086142323,2.571785268414482,0.9987515605493134,5.961298377028713,4.151061173533084,5.149812734082397,1.4856429463171037,3.6017478152309614,2.990012484394507,5.468164794007491,0.49063670411985016,1.941323345817728,1.8601747815230962,2.2347066167290888,5.068664169787765,0.7303370786516854,4.887640449438202,4.450686641697877,4.18227215980025, +3.714107365792759,5.143570536828964,2.184769038701623,5.3620474406991265,3.639200998751561,3.7702871410736583,0.7053682896379525,3.3583021223470664,0.9675405742821472,2.958801498127341,3.7078651685393256,1.2796504369538078,0.39825218476903873,0.3096129837702871,1.6978776529338326,5.9113607990012484,4.544319600499376,2.82147315855181,2.009987515605493,1.6978776529338326,3.951310861423221,5.293383270911361,3.0149812734082393,5.536828963795256,4.856429463171036,1.0049937578027466,0.6803995006242198,0.7116104868913858,1.8227215980024971,4.107365792759051,0.29712858926342073,0.9612983770287141,5.143570536828964,4.044943820224719,1.3670411985018727,2.634207240948814,0.7865168539325842,6.242197253433209,4.3632958801498125,0.7553058676654182,0.7428214731585518,5.0,3.8639200998751564,1.2983770287141074,0.7927590511860175,1.1298377028714106,5.786516853932584,2.7715355805243447,1.161048689138577,4.506866416978776,3.0399500624219726,3.245942571785269,4.188514357053683,5.892634207240949,1.8414481897627966,3.6704119850187267,3.9637952559300875,4.950062421972534,6.086142322097379,3.295880149812734,2.446941323345818,3.4019975031210987,3.046192259675406,1.8539325842696628,5.711610486891385,3.6329588014981273,2.4906367041198503,5.8988764044943816,1.8664169787765295,3.4456928838951315,3.7390761548064915,4.019975031210986,5.7553058676654185,3.651685393258427,5.655430711610487,6.1485642946317105,4.18227215980025,2.3720349563046192,1.0049937578027466,1.348314606741573,5.805243445692884,3.420724094881398,2.602996254681648,1.0237203495630463,5.992509363295881,4.176029962546816,5.174781523096129,1.5168539325842696,3.6267166042446943,3.0212234706616727,5.499375780274657,0.5149812734082396,1.9725343320848938,1.8851435705368291,2.2659176029962547,5.106117353308365,0.7615480649188515,4.918851435705368,4.475655430711611,4.207240948813983, +3.745318352059925,5.174781523096129,2.215980024968789,5.3870162297128585,3.6641697877652937,3.7952559300873907,0.7240948813982522,3.383270911360799,0.9987515605493134,2.977528089887641,3.7265917602996255,1.3108614232209737,0.4213483146067416,0.33957553058676654,1.7228464419475658,5.942571785268415,4.575530586766542,2.8464419475655434,2.034956304619226,1.7228464419475658,3.982521847690387,5.324594257178527,3.0399500624219726,5.568039950062421,4.887640449438202,1.0362047440699127,0.7053682896379525,0.7365792759051186,1.8539325842696628,4.132334581772784,0.32209737827715357,0.9987515605493134,5.168539325842697,4.069912609238452,1.3857677902621723,2.6591760299625467,0.8177278401997503,6.30461922596754,4.388264669163545,0.7740324594257179,0.7677902621722846,5.0187265917602994,3.888888888888889,1.3358302122347065,0.8239700374531835,1.161048689138577,5.81772784019975,2.8027465667915106,1.1922596754057428,4.538077403245943,3.0649188514357055,3.2833957553058677,4.213483146067416,5.930087390761548,1.8664169787765295,3.6953807740324596,3.9887640449438204,4.987515605493134,6.111111111111111,3.320848938826467,2.4656679151061174,3.4269662921348316,3.0836454431960054,1.8726591760299625,5.736579275905119,3.651685393258427,2.5093632958801497,5.9238451935081144,1.8913857677902621,3.470661672908864,3.7702871410736583,4.057428214731585,5.774032459425719,3.6766541822721597,5.686641697877653,6.167290886392011,4.200998751560549,2.4032459425717856,1.0299625468164793,1.3795255930087391,5.848938826466916,3.451935081148564,2.634207240948814,1.042446941323346,6.023720349563047,4.200998751560549,5.199750312109863,1.5480649188514357,3.651685393258427,3.0524344569288386,5.524344569288389,0.5387016229712859,2.00374531835206,1.9101123595505618,2.2971285892634206,5.149812734082397,0.7990012484394506,4.950062421972534,4.500624219725343,4.225967540574282, +3.776529338327091,5.212234706616729,2.253433208489388,5.418227215980025,3.689138576779026,3.81398252184769,0.7490636704119851,3.408239700374532,1.0237203495630463,3.0024968789013733,3.745318352059925,1.34207240948814,0.44382022471910115,0.36953807740324596,1.7415730337078652,5.97378277153558,4.606741573033708,2.8776529338327093,2.0599250936329585,1.7415730337078652,4.00749063670412,5.355805243445693,3.0649188514357055,5.599250936329588,4.918851435705368,1.0611735330836456,0.7365792759051186,0.7615480649188515,1.8851435705368291,4.157303370786517,0.3464419475655431,1.0299625468164793,5.187265917602996,4.0886392009987516,1.410736579275905,2.6779026217228465,0.8551810237203495,6.30461922596754,4.413233458177278,0.7927590511860175,0.7927590511860175,5.043695380774032,3.920099875156055,1.3670411985018727,0.8551810237203495,1.1860174781523096,5.848938826466916,2.8339575530586765,1.229712858926342,4.563046192259676,3.0961298377028714,3.3146067415730336,4.238451935081149,5.961298377028713,1.8913857677902621,3.714107365792759,4.019975031210986,5.024968789013733,6.1360799001248445,3.352059925093633,2.4843945068664173,3.4456928838951315,3.114856429463171,1.8976279650436954,5.767790262172285,3.6766541822721597,2.5343320848938826,5.942571785268415,1.916354556803995,3.495630461922597,3.801498127340824,4.0886392009987516,5.799001248439451,3.7078651685393256,5.717852684144819,6.192259675405743,4.225967540574282,2.4406991260923845,1.0549313358302121,1.4169787765293382,5.8863920099875156,3.4831460674157304,2.671660424469413,1.0674157303370786,6.054931335830212,4.225967540574282,5.224719101123595,1.5792759051186018,3.6766541822721597,3.089887640449438,5.555555555555556,0.5630461922596754,2.034956304619226,1.941323345817728,2.328339575530587,5.187265917602996,0.8302122347066168,4.975031210986267,4.531835205992509,4.250936329588015, +3.801498127340824,5.243445692883895,2.2846441947565546,5.443196004993759,3.714107365792759,3.8389513108614235,0.7740324594257179,3.4332084893882646,1.0549313358302121,3.027465667915106,3.7702871410736583,1.373283395755306,0.466916354556804,0.3995006242197253,1.766541822721598,5.998751560549313,4.637952559300874,2.908863920099875,2.084893882646692,1.766541822721598,4.038701622971286,5.3870162297128585,3.089887640449438,5.630461922596755,4.943820224719102,1.0923845193508115,0.7677902621722846,0.7865168539325842,1.916354556803995,4.18227215980025,0.3714107365792759,1.0611735330836456,5.212234706616729,4.1136079900124844,1.4294631710362047,2.702871410736579,0.8863920099875156,6.30461922596754,4.438202247191011,0.8114856429463172,0.8177278401997503,5.062421972534332,3.9450686641697876,1.3982521847690388,0.8801498127340824,1.2109862671660423,5.880149812734083,2.871410736579276,1.260923845193508,4.594257178526841,3.1210986267166043,3.352059925093633,4.263420724094882,5.998751560549313,1.916354556803995,3.732833957553059,4.051186017478152,5.062421972534332,6.161048689138577,3.3770287141073654,2.5031210986267167,3.464419475655431,3.1460674157303368,1.916354556803995,5.799001248439451,3.6953807740324596,2.5530586766541825,5.967540574282147,1.941323345817728,3.5205992509363297,3.83270911360799,4.119850187265917,5.823970037453184,3.732833957553059,5.749063670411985,6.210986267166042,4.244694132334582,2.471910112359551,1.079900124843945,1.4544319600499376,5.9238451935081144,3.5143570536828963,2.702871410736579,1.0861423220973783,6.086142322097379,4.244694132334582,5.249687890137328,1.6104868913857677,3.701622971285893,3.1210986267166043,5.586766541822722,0.5867665418227216,2.066167290886392,1.9662921348314608,2.3657927590511862,5.224719101123595,0.867665418227216,5.0062421972534334,4.556803995006242,4.275905118601748, +3.83270911360799,5.274656679151062,2.3158551810237205,5.474406991260924,3.7390761548064915,3.857677902621723,0.7927590511860175,3.4581772784019975,1.0861423220973783,3.046192259675406,3.7890137328339577,1.3982521847690388,0.4893882646691636,0.42946317103620474,1.7915106117353308,6.029962546816479,4.66916354556804,2.9400749063670415,2.1098626716604243,1.7852684144818978,4.069912609238452,5.418227215980025,3.114856429463171,5.66167290886392,4.975031210986267,1.1235955056179776,0.7990012484394506,0.8114856429463172,1.9475655430711611,4.207240948813983,0.39637952559300876,1.0986267166042447,5.230961298377029,4.132334581772784,1.4544319600499376,2.727840199750312,0.9238451935081149,6.367041198501872,4.456928838951311,0.8364544319600499,0.8426966292134832,5.087390761548065,3.970037453183521,1.4294631710362047,0.9113607990012486,1.2421972534332086,5.9113607990012484,2.902621722846442,1.2921348314606742,4.6254681647940075,3.15230961298377,3.383270911360799,4.288389513108614,6.036204744069912,1.9350811485642945,3.7578027465667914,4.0761548064918856,5.099875156054932,6.186017478152309,3.4019975031210987,2.521847690387016,3.4893882646691634,3.1772784019975036,1.941323345817728,5.830212234706617,3.7203495630461925,2.578027465667915,5.986267166042447,1.9662921348314608,3.545568039950062,3.8639200998751564,4.151061173533084,5.848938826466916,3.7578027465667914,5.7802746566791505,6.229712858926342,4.263420724094882,2.5093632958801497,1.104868913857678,1.4856429463171037,5.961298377028713,3.545568039950062,2.7340823970037453,1.1111111111111112,6.117353308364544,4.269662921348314,5.274656679151062,1.6416978776529338,3.7265917602996255,3.15230961298377,5.611735330836455,0.6104868913857677,2.097378277153558,1.9912609238451935,2.397003745318352,5.262172284644195,0.898876404494382,5.0374531835206,4.581772784019975,4.294631710362047, +3.8639200998751564,5.312109862671661,2.35330836454432,5.499375780274657,3.764044943820225,3.882646691635456,0.8177278401997503,3.4893882646691634,1.1173533083645444,3.0711610486891385,3.81398252184769,1.4294631710362047,0.5124843945068664,0.45942571785268416,1.8164794007490637,6.061173533083646,4.700374531835206,2.9712858926342074,2.128589263420724,1.8102372034956304,4.094881398252185,5.449438202247191,3.139825218476904,5.692883895131087,5.0062421972534334,1.1485642946317103,0.8302122347066168,0.8364544319600499,1.978776529338327,4.2322097378277155,0.4207240948813982,1.1298377028714106,5.2559300873907615,4.157303370786517,1.4794007490636705,2.746566791510612,0.9550561797752809,6.367041198501872,4.4818976279650435,0.8551810237203495,0.8614232209737829,5.106117353308365,3.9950062421972534,1.466916354556804,0.9425717852684146,1.2671660424469413,5.942571785268415,2.9400749063670415,1.3295880149812733,4.656679151061174,3.183520599250936,3.4144818976279647,4.31960049937578,6.067415730337078,1.9600499375780276,3.776529338327091,4.107365792759051,5.1373283395755305,6.210986267166042,3.4332084893882646,2.5405742821473156,3.508114856429463,3.2084893882646695,1.9662921348314608,5.861423220973783,3.745318352059925,2.596754057428215,6.01123595505618,1.9912609238451935,3.5705368289637955,3.8951310861423223,4.188514357053683,5.867665418227216,3.7890137328339577,5.811485642946318,6.242197253433209,4.288389513108614,2.5405742821473156,1.1298377028714106,1.523096129837703,6.004993757802747,3.576779026217228,2.7715355805243447,1.1298377028714106,6.1485642946317105,4.294631710362047,5.299625468164794,1.6729088639200997,3.7515605493133584,3.183520599250936,5.64294631710362,0.6367041198501873,2.128589263420724,2.0224719101123596,2.428214731585518,5.305867665418227,0.9363295880149812,5.068664169787765,4.606741573033708,4.31960049937578, +3.8951310861423223,5.343320848938826,2.3845193508114857,5.5305867665418225,3.7890137328339577,3.9076154806491883,0.8426966292134832,3.5143570536828963,1.1423220973782773,3.0961298377028714,3.83270911360799,1.4606741573033708,0.534956304619226,0.4893882646691636,1.8414481897627966,6.086142322097379,4.7315855181023725,3.0024968789013733,2.153558052434457,1.8289637952559301,4.1260923845193505,5.480649188514358,3.1647940074906367,5.724094881398252,5.0374531835206,1.1797752808988764,0.8614232209737829,0.8614232209737829,2.016229712858926,4.257178526841448,0.44569288389513106,1.161048689138577,5.274656679151062,4.176029962546816,1.4981273408239701,2.7715355805243447,0.9925093632958802,6.429463171036204,4.506866416978776,0.8739076154806492,0.8863920099875156,5.131086142322098,4.02621722846442,1.4981273408239701,0.9737827715355806,1.2921348314606742,5.97378277153558,2.9712858926342074,1.3607990012484397,4.681647940074906,3.2084893882646695,3.451935081148564,4.344569288389513,6.104868913857677,1.9850187265917605,3.7952559300873907,4.132334581772784,5.174781523096129,6.235955056179775,3.4581772784019975,2.5593008739076155,3.5268414481897628,3.2397003745318353,1.9850187265917605,5.892634207240949,3.764044943820225,2.6217228464419473,6.029962546816479,2.016229712858926,3.595505617977528,3.926342072409488,4.219725343320849,5.892634207240949,3.81398252184769,5.842696629213483,6.242197253433209,4.307116104868914,2.578027465667915,1.1548064918851435,1.554307116104869,6.0424469413233455,3.607990012484395,2.8027465667915106,1.1548064918851435,6.179775280898876,4.31960049937578,5.324594257178527,1.704119850187266,3.776529338327091,3.214731585518102,5.674157303370786,0.6616729088639202,2.15980024968789,2.0474406991260925,2.4656679151061174,5.343320848938826,0.9675405742821472,5.099875156054932,4.631710362047441,4.344569288389513, +3.926342072409488,5.3745318352059925,2.4157303370786516,5.555555555555556,3.81398252184769,3.926342072409488,0.8614232209737829,3.5393258426966296,1.1735330836454432,3.114856429463171,3.857677902621723,1.4918851435705367,0.5580524344569288,0.519350811485643,1.8664169787765295,6.117353308364544,4.762796504369538,3.033707865168539,2.1785268414481895,1.8476903870162298,4.157303370786517,5.511860174781523,3.1897627965043696,5.7553058676654185,5.062421972534332,1.2109862671660423,0.8863920099875156,0.8863920099875156,2.0474406991260925,4.282147315855181,0.4700374531835206,1.198501872659176,5.299625468164794,4.200998751560549,1.523096129837703,2.7965043695380776,1.0237203495630463,6.429463171036204,4.531835205992509,0.898876404494382,0.9113607990012486,5.149812734082397,4.051186017478152,1.529338327091136,0.9987515605493134,1.3233458177278403,6.004993757802747,3.0024968789013733,1.3982521847690388,4.712858926342073,3.2397003745318353,3.4831460674157304,4.369538077403246,6.142322097378277,2.009987515605493,3.8202247191011236,4.16354556803995,5.212234706616729,6.242197253433209,3.4831460674157304,2.578027465667915,3.5518102372034956,3.2709113607990012,2.009987515605493,5.9238451935081144,3.7890137328339577,2.640449438202247,6.054931335830212,2.0411985018726595,3.620474406991261,3.957553058676654,4.250936329588015,5.917602996254682,3.8451935081148565,5.8739076154806495,6.30461922596754,4.325842696629214,2.6092384519350813,1.1797752808988764,1.591760299625468,6.079900124843945,3.639200998751561,2.8339575530586765,1.1735330836454432,6.210986267166042,4.344569288389513,5.34956304619226,1.735330836454432,3.801498127340824,3.245942571785269,5.705368289637952,0.6803995006242198,2.1910112359550564,2.0724094881398254,2.4968789013732833,5.380774032459426,0.9987515605493134,5.131086142322098,4.656679151061174,4.369538077403246, +3.957553058676654,5.411985018726591,2.453183520599251,5.586766541822722,3.8389513108614235,3.951310861423221,0.8863920099875156,3.564294631710362,1.2047440699126093,3.139825218476904,3.8764044943820224,1.5168539325842696,0.5811485642946317,0.548689138576779,1.8913857677902621,6.1485642946317105,4.794007490636704,3.0649188514357055,2.203495630461923,1.8726591760299625,4.18227215980025,5.543071161048689,3.214731585518102,5.786516853932584,5.093632958801498,1.2359550561797754,0.9176029962546817,0.9113607990012486,2.0786516853932584,4.307116104868914,0.4950062421972534,1.229712858926342,5.318352059925093,4.225967540574282,1.5418227215980027,2.82147315855181,1.0611735330836456,6.491885143570538,4.556803995006242,0.9176029962546817,0.9363295880149812,5.174781523096129,4.0761548064918856,1.5605493133583022,1.0299625468164793,1.348314606741573,6.036204744069912,3.0399500624219726,1.4294631710362047,4.7440699126092385,3.2646691635455682,3.5205992509363297,4.394506866416979,6.173533083645444,2.034956304619226,3.8389513108614235,4.188514357053683,5.249687890137328,6.30461922596754,3.5143570536828963,2.596754057428215,3.5705368289637955,3.3021223470661676,2.0287141073657926,5.955056179775282,3.8077403245942576,2.66541822721598,6.073657927590512,2.0599250936329585,3.6454431960049942,3.982521847690387,4.282147315855181,5.942571785268415,3.870162297128589,5.905118601747815,6.30461922596754,4.3508114856429465,2.6466916354556806,1.2047440699126093,1.6229712858926344,6.117353308364544,3.6704119850187267,2.871410736579276,1.198501872659176,6.242197253433209,4.369538077403246,5.3745318352059925,1.766541822721598,3.826466916354557,3.2833957553058677,5.730337078651686,0.7053682896379525,2.2222222222222223,2.097378277153558,2.5280898876404496,5.424469413233458,1.0362047440699127,5.15605493133583,4.681647940074906,4.388264669163545, +3.9887640449438204,5.443196004993759,2.4843945068664173,5.611735330836455,3.8639200998751564,3.9762796504369535,0.9113607990012486,3.589263420724095,1.2359550561797754,3.1647940074906367,3.8951310861423223,1.5480649188514357,0.6036204744069913,0.5786516853932584,1.916354556803995,6.179775280898876,4.825218476903871,3.0961298377028714,2.2284644194756553,1.8913857677902621,4.213483146067416,5.574282147315855,3.233458177278402,5.81772784019975,5.1248439450686645,1.2671660424469413,0.9488139825218477,0.9363295880149812,2.1098626716604243,4.332084893882647,0.5199750312109862,1.2671660424469413,5.337078651685393,4.244694132334582,1.5667915106117354,2.84019975031211,1.0923845193508115,6.491885143570538,4.581772784019975,0.9363295880149812,0.9612983770287141,5.199750312109863,4.1011235955056184,1.5980024968789013,1.0611735330836456,1.373283395755306,6.067415730337078,3.0711610486891385,1.4606741573033708,4.775280898876405,3.295880149812734,3.5518102372034956,4.419475655430712,6.210986267166042,2.0599250936329585,3.857677902621723,4.219725343320849,5.287141073657928,6.30461922596754,3.5393258426966296,2.6217228464419473,3.589263420724095,3.3333333333333335,2.0536828963795255,5.986267166042447,3.83270911360799,2.68414481897628,6.098626716604246,2.084893882646692,3.6704119850187267,4.013732833957553,4.31960049937578,5.961298377028713,3.8951310861423223,5.936329588014981,6.30461922596754,4.369538077403246,2.6779026217228465,1.229712858926342,1.6604244694132335,6.154806491885144,3.701622971285893,2.902621722846442,1.2172284644194757,6.30461922596754,4.394506866416979,5.399500624219725,1.797752808988764,3.8514357053682895,3.3146067415730336,5.761548064918852,0.7303370786516854,2.253433208489388,2.128589263420724,2.565543071161049,5.461922596754057,1.0674157303370786,5.187265917602996,4.70661672908864,4.413233458177278, +4.019975031210986,5.474406991260924,2.521847690387016,5.64294631710362,3.888888888888889,3.9950062421972534,0.9300873907615481,3.620474406991261,1.260923845193508,3.183520599250936,3.920099875156055,1.5792759051186018,0.6242197253433208,0.6086142322097379,1.941323345817728,6.20474406991261,4.856429463171036,3.1273408239700373,2.253433208489388,1.916354556803995,4.244694132334582,5.605493133583021,3.258426966292135,5.848938826466916,5.149812734082397,1.2983770287141074,0.9800249687890138,0.9612983770287141,2.1410736579275906,4.357053682896379,0.5443196004993758,1.2983770287141074,5.3620474406991265,4.269662921348314,1.591760299625468,2.865168539325843,1.1298377028714106,6.554307116104869,4.606741573033708,0.9550561797752809,0.9862671660424469,5.218476903870163,4.132334581772784,1.6292134831460674,1.0861423220973783,1.404494382022472,6.098626716604246,3.102372034956305,1.4981273408239701,4.800249687890138,3.3270911360799,3.589263420724095,4.450686641697877,6.242197253433209,2.0786516853932584,3.882646691635456,4.244694132334582,5.324594257178527,6.367041198501872,3.564294631710362,2.640449438202247,3.6142322097378274,3.3645443196004994,2.0786516853932584,6.0174781523096135,3.857677902621723,2.7091136079900124,6.117353308364544,2.1098626716604243,3.6953807740324596,4.044943820224719,4.3508114856429465,5.986267166042447,3.926342072409488,5.967540574282147,6.367041198501872,4.388264669163545,2.715355805243446,1.2484394506866416,1.6978776529338326,6.198501872659176,3.732833957553059,2.933832709113608,1.2359550561797754,6.30461922596754,4.413233458177278,5.424469413233458,1.8227215980024971,3.8764044943820224,3.3458177278401995,5.792759051186017,0.7553058676654182,2.2846441947565546,2.153558052434457,2.596754057428215,5.499375780274657,1.104868913857678,5.218476903870163,4.737827715355805,4.438202247191011, +4.044943820224719,5.511860174781523,2.5530586766541825,5.667915106117353,3.9138576779026217,4.019975031210986,0.9550561797752809,3.6454431960049942,1.2921348314606742,3.2084893882646695,3.938826466916354,1.6042446941323347,0.6491885143570537,0.6367041198501873,1.9662921348314608,6.235955056179775,4.887640449438202,3.1585518102372037,2.278401997503121,1.9350811485642945,4.269662921348314,5.64294631710362,3.2833957553058677,5.880149812734083,5.181023720349563,1.3233458177278403,1.0112359550561798,0.9862671660424469,2.1722846441947565,4.382022471910113,0.5692883895131086,1.3295880149812733,5.380774032459426,4.288389513108614,1.6104868913857677,2.8901373283395753,1.16729088639201,6.554307116104869,4.6254681647940075,0.9800249687890138,1.0112359550561798,5.243445692883895,4.157303370786517,1.6604244694132335,1.1173533083645444,1.4294631710362047,6.129837702871411,3.139825218476904,1.529338327091136,4.831460674157303,3.352059925093633,3.620474406991261,4.475655430711611,6.30461922596754,2.1036204744069913,3.9013732833957557,4.275905118601748,5.3620474406991265,6.367041198501872,3.595505617977528,2.6591760299625467,3.6329588014981273,3.3957553058676653,2.097378277153558,6.048689138576779,3.8764044943820224,2.727840199750312,6.1360799001248445,2.134831460674157,3.7203495630461925,4.0761548064918856,4.382022471910113,6.01123595505618,3.951310861423221,5.998751560549313,6.367041198501872,4.413233458177278,2.746566791510612,1.2734082397003745,1.7290886392009988,6.235955056179775,3.764044943820225,2.9712858926342074,1.260923845193508,6.367041198501872,4.438202247191011,5.449438202247191,1.8539325842696628,3.9013732833957557,3.3770287141073654,5.81772784019975,0.7802746566791511,2.3158551810237205,2.1785268414481895,2.6279650436953808,5.536828963795256,1.136079900124844,5.249687890137328,4.762796504369538,4.463171036204744, +4.0761548064918856,5.543071161048689,2.5842696629213484,5.69912609238452,3.938826466916354,4.044943820224719,0.9800249687890138,3.6704119850187267,1.3233458177278403,3.233458177278402,3.9637952559300875,1.6354556803995006,0.6741573033707865,0.6679151061173533,1.9912609238451935,6.242197253433209,4.918851435705368,3.1897627965043696,2.303370786516854,1.9600499375780276,4.300873907615481,5.674157303370786,3.3083645443196006,5.9113607990012484,5.212234706616729,1.3545568039950062,1.0362047440699127,1.0112359550561798,2.203495630461923,4.406991260923846,0.5942571785268415,1.3670411985018727,5.405742821473158,4.313358302122348,1.6354556803995006,2.9151061173533086,1.198501872659176,6.616729088639201,4.65043695380774,0.9987515605493134,1.0299625468164793,5.262172284644195,4.18227215980025,1.6978776529338326,1.1485642946317103,1.4544319600499376,6.161048689138577,3.17103620474407,1.5605493133583022,4.8626716604244695,3.383270911360799,3.651685393258427,4.500624219725343,6.30461922596754,2.128589263420724,3.920099875156055,4.300873907615481,5.399500624219725,6.367041198501872,3.620474406991261,2.6779026217228465,3.651685393258427,3.4332084893882646,2.122347066167291,6.079900124843945,3.9013732833957557,2.752808988764045,6.161048689138577,2.15980024968789,3.745318352059925,4.107365792759051,4.413233458177278,6.036204744069912,3.9762796504369535,6.029962546816479,6.367041198501872,4.431960049937578,2.7840199750312107,1.2983770287141074,1.766541822721598,6.30461922596754,3.7952559300873907,3.0024968789013733,1.2796504369538078,6.367041198501872,4.463171036204744,5.480649188514358,1.8851435705368291,3.926342072409488,3.408239700374532,5.848938826466916,0.8052434456928839,2.3470661672908864,2.203495630461923,2.66541822721598,5.580524344569288,1.1735330836454432,5.280898876404494,4.787765293383271,4.4818976279650435, +4.107365792759051,5.574282147315855,2.6217228464419473,5.724094881398252,3.9637952559300875,4.063670411985019,0.9987515605493134,3.6953807740324596,1.3545568039950062,3.2521847690387014,3.982521847690387,1.6666666666666667,0.6928838951310862,0.6991260923845194,2.016229712858926,6.30461922596754,4.950062421972534,3.2209737827715355,2.328339575530587,1.978776529338327,4.332084893882647,5.705368289637952,3.3333333333333335,5.942571785268415,5.237203495630462,1.3857677902621723,1.0674157303370786,1.0362047440699127,2.2347066167290888,4.431960049937578,0.618601747815231,1.3982521847690388,5.424469413233458,4.332084893882647,1.6541822721598003,2.933832709113608,1.2359550561797754,6.616729088639201,4.675405742821473,1.017478152309613,1.0549313358302121,5.287141073657928,4.213483146067416,1.7290886392009988,1.1797752808988764,1.4856429463171037,6.192259675405743,3.202247191011236,1.5980024968789013,4.893882646691636,3.408239700374532,3.689138576779026,4.525593008739076,6.367041198501872,2.153558052434457,3.9450686641697876,4.332084893882647,5.436953807740325,6.429463171036204,3.6454431960049942,2.696629213483146,3.6766541822721597,3.464419475655431,2.1410736579275906,6.111111111111111,3.920099875156055,2.7715355805243447,6.179775280898876,2.184769038701623,3.7702871410736583,4.138576779026217,4.444444444444445,6.054931335830212,4.00749063670412,6.061173533083646,6.429463171036204,4.450686641697877,2.8152309612983775,1.3233458177278403,1.797752808988764,6.30461922596754,3.826466916354557,3.0399500624219726,1.3046192259675407,6.429463171036204,4.488139825218477,5.50561797752809,1.916354556803995,3.951310861423221,3.4456928838951315,5.880149812734083,0.8239700374531835,2.3782771535580522,2.2347066167290888,2.696629213483146,5.617977528089888,1.2047440699126093,5.312109862671661,4.812734082397004,4.506866416978776, +4.138576779026217,5.611735330836455,2.6529338327091136,5.7553058676654185,3.9887640449438204,4.0886392009987516,1.0237203495630463,3.7265917602996255,1.3795255930087391,3.2771535580524347,4.00749063670412,1.6978776529338326,0.717852684144819,0.7303370786516854,2.0411985018726595,6.30461922596754,4.9812734082397006,3.2521847690387014,2.35330836454432,2.00374531835206,4.357053682896379,5.736579275905119,3.3583021223470664,5.967540574282147,5.268414481897628,1.410736579275905,1.0986267166042447,1.0611735330836456,2.2659176029962547,4.456928838951311,0.6429463171036205,1.4294631710362047,5.449438202247191,4.357053682896379,1.6791510611735332,2.958801498127341,1.2671660424469413,6.679151061173534,4.700374531835206,1.042446941323346,1.079900124843945,5.305867665418227,4.238451935081149,1.7602996254681649,1.2047440699126093,1.5106117353308364,6.223470661672909,3.2397003745318353,1.6292134831460674,4.918851435705368,3.439450686641698,3.7203495630461925,4.55056179775281,6.367041198501872,2.1785268414481895,3.9637952559300875,4.3632958801498125,5.474406991260924,6.429463171036204,3.6766541822721597,2.715355805243446,3.6953807740324596,3.495630461922597,2.1660424469413235,6.1360799001248445,3.9450686641697876,2.7965043695380776,6.20474406991261,2.209737827715356,3.7952559300873907,4.169787765293384,4.4818976279650435,6.079900124843945,4.032459425717852,6.092384519350812,6.429463171036204,4.475655430711611,2.8464419475655434,1.348314606741573,1.8352059925093633,6.367041198501872,3.857677902621723,3.0711610486891385,1.3233458177278403,6.429463171036204,4.51310861423221,5.5305867665418225,1.9475655430711611,3.9762796504369535,3.4769038701622974,5.905118601747815,0.8489388264669163,2.4094881398252186,2.259675405742821,2.727840199750312,5.655430711610487,1.2359550561797754,5.337078651685393,4.837702871410737,4.531835205992509, +4.169787765293384,5.64294631710362,2.68414481897628,5.7802746566791505,4.013732833957553,4.1136079900124844,1.048689138576779,3.7515605493133584,1.410736579275905,3.3021223470661676,4.02621722846442,1.7228464419475658,0.7428214731585518,0.7553058676654182,2.066167290886392,6.367041198501872,5.012484394506866,3.2833957553058677,2.3782771535580522,2.0224719101123596,4.388264669163545,5.767790262172285,3.383270911360799,5.998751560549313,5.299625468164794,1.4419475655430714,1.1298377028714106,1.0861423220973783,2.2971285892634206,4.4818976279650435,0.6679151061173533,1.466916354556804,5.468164794007491,4.382022471910113,1.704119850187266,2.9837702871410734,1.3046192259675407,6.679151061173534,4.725343320848939,1.0611735330836456,1.104868913857678,5.33083645443196,4.263420724094882,1.7915106117353308,1.2359550561797754,1.5355805243445693,6.242197253433209,3.2709113607990012,1.6666666666666667,4.950062421972534,3.464419475655431,3.7578027465667914,4.581772784019975,6.429463171036204,2.1972534332084894,3.9887640449438204,4.388264669163545,5.511860174781523,6.491885143570538,3.701622971285893,2.7340823970037453,3.714107365792759,3.5268414481897628,2.184769038701623,6.167290886392011,3.9637952559300875,2.8152309612983775,6.223470661672909,2.2347066167290888,3.8202247191011236,4.200998751560549,4.51310861423221,6.104868913857677,4.057428214731585,6.123595505617978,6.429463171036204,4.49438202247191,2.8838951310861427,1.373283395755306,1.8726591760299625,6.367041198501872,3.888888888888889,3.102372034956305,1.348314606741573,6.491885143570538,4.538077403245943,5.555555555555556,1.978776529338327,4.001248439450687,3.508114856429463,5.936329588014981,0.8739076154806492,2.4406991260923845,2.2846441947565546,2.7590511860174782,5.69912609238452,1.2734082397003745,5.36828963795256,4.8626716604244695,4.556803995006242, +4.200998751560549,5.674157303370786,2.7215980024968793,5.811485642946318,4.038701622971286,4.132334581772784,1.0674157303370786,3.776529338327091,1.4419475655430714,3.320848938826467,4.044943820224719,1.7540574282147314,0.7615480649188515,0.7865168539325842,2.091136079900125,6.367041198501872,5.043695380774032,3.3146067415730336,2.4032459425717856,2.0474406991260925,4.419475655430712,5.799001248439451,3.408239700374532,6.029962546816479,5.324594257178527,1.4731585518102372,1.161048689138577,1.1111111111111112,2.328339575530587,4.506866416978776,0.6928838951310862,1.4981273408239701,5.493133583021224,4.400749063670412,1.7228464419475658,3.0087390761548067,1.3358302122347065,6.741573033707866,4.750312109862672,1.079900124843945,1.1298377028714106,5.34956304619226,4.288389513108614,1.8289637952559301,1.2671660424469413,1.5605493133583022,6.30461922596754,3.3083645443196006,1.6978776529338326,4.9812734082397006,3.495630461922597,3.7890137328339577,4.606741573033708,6.429463171036204,2.2222222222222223,4.00749063670412,4.419475655430712,5.549313358302123,6.491885143570538,3.7265917602996255,2.752808988764045,3.7390761548064915,3.5580524344569286,2.209737827715356,6.198501872659176,3.9887640449438204,2.84019975031211,6.242197253433209,2.259675405742821,3.8451935081148565,4.2322097378277155,4.544319600499376,6.123595505617978,4.0886392009987516,6.1485642946317105,6.491885143570538,4.519350811485642,2.9151061173533086,1.3982521847690388,1.9038701622971288,6.429463171036204,3.920099875156055,3.139825218476904,1.3670411985018727,6.491885143570538,4.563046192259676,5.580524344569288,2.009987515605493,4.02621722846442,3.5393258426966296,5.967540574282147,0.898876404494382,2.4656679151061174,2.3158551810237205,2.7965043695380776,5.736579275905119,1.3046192259675407,5.399500624219725,4.887640449438202,4.575530586766542, +4.2322097378277155,5.711610486891385,2.752808988764045,5.836454431960051,4.063670411985019,4.157303370786517,1.0923845193508115,3.801498127340824,1.4731585518102372,3.3458177278401995,4.069912609238452,1.7852684144818978,0.7865168539325842,0.8177278401997503,2.1161048689138577,6.429463171036204,5.074906367041199,3.3458177278401995,2.428214731585518,2.066167290886392,4.444444444444445,5.830212234706617,3.4332084893882646,6.061173533083646,5.355805243445693,1.4981273408239701,1.1922596754057428,1.136079900124844,2.3657927590511862,4.525593008739076,0.717852684144819,1.5355805243445693,5.511860174781523,4.425717852684145,1.7478152309612984,3.027465667915106,1.373283395755306,6.741573033707866,4.769038701622971,1.104868913857678,1.1548064918851435,5.3745318352059925,4.31960049937578,1.8601747815230962,1.2921348314606742,1.591760299625468,6.30461922596754,3.339575530586767,1.7290886392009988,5.012484394506866,3.5268414481897628,3.826466916354557,4.631710362047441,6.491885143570538,2.247191011235955,4.02621722846442,4.444444444444445,5.586766541822722,6.491885143570538,3.7578027465667914,2.7715355805243447,3.7578027465667914,3.589263420724095,2.2347066167290888,6.229712858926342,4.013732833957553,2.8589263420724094,6.242197253433209,2.2846441947565546,3.870162297128589,4.263420724094882,4.575530586766542,6.1485642946317105,4.1136079900124844,6.179775280898876,6.491885143570538,4.538077403245943,2.9525593008739075,1.4232209737827717,1.941323345817728,6.491885143570538,3.9450686641697876,3.17103620474407,1.3920099875156053,6.554307116104869,4.581772784019975,5.605493133583021,2.0411985018726595,4.057428214731585,3.5705368289637955,5.992509363295881,0.9238451935081149,2.4968789013732833,2.340823970037453,2.8277153558052435,5.774032459425719,1.34207240948814,5.430711610486892,4.912609238451935,4.600499375780275, +4.263420724094882,5.742821473158552,2.7840199750312107,5.867665418227216,4.0886392009987516,4.18227215980025,1.1173533083645444,3.826466916354557,1.4981273408239701,3.370786516853933,4.0886392009987516,1.8164794007490637,0.8114856429463172,0.8489388264669163,2.1410736579275906,6.429463171036204,5.106117353308365,3.3770287141073654,2.453183520599251,2.091136079900125,4.475655430711611,5.861423220973783,3.4581772784019975,6.092384519350812,5.3870162297128585,1.529338327091136,1.2172284644194757,1.161048689138577,2.397003745318352,4.55056179775281,0.7428214731585518,1.5667915106117354,5.5305867665418225,4.444444444444445,1.766541822721598,3.0524344569288386,1.404494382022472,6.803995006242197,4.794007490636704,1.1235955056179776,1.1735330836454432,5.393258426966292,4.344569288389513,1.8913857677902621,1.3233458177278403,1.616729088639201,6.367041198501872,3.370786516853933,1.766541822721598,5.0374531835206,3.5518102372034956,3.857677902621723,4.656679151061174,6.554307116104869,2.272159800249688,4.051186017478152,4.475655430711611,5.6242197253433215,6.554307116104869,3.7827715355805243,2.7965043695380776,3.776529338327091,3.620474406991261,2.253433208489388,6.242197253433209,4.032459425717852,2.8838951310861427,6.30461922596754,2.303370786516854,3.8951310861423223,4.294631710362047,4.612983770287141,6.173533083645444,4.138576779026217,6.210986267166042,6.491885143570538,4.556803995006242,2.9837702871410734,1.4481897627965044,1.9725343320848938,6.491885143570538,3.9762796504369535,3.202247191011236,1.410736579275905,6.554307116104869,4.606741573033708,5.630461922596755,2.0724094881398254,4.082397003745319,3.6017478152309614,6.023720349563047,0.9488139825218477,2.5280898876404496,2.3657927590511862,2.8589263420724094,5.811485642946318,1.373283395755306,5.461922596754057,4.943820224719102,4.6254681647940075, +4.288389513108614,5.774032459425719,2.82147315855181,5.892634207240949,4.1136079900124844,4.200998751560549,1.136079900124844,3.857677902621723,1.529338327091136,3.3895131086142323,4.1136079900124844,1.8414481897627966,0.8302122347066168,0.8801498127340824,2.1660424469413235,6.491885143570538,5.1373283395755305,3.408239700374532,2.471910112359551,2.1098626716604243,4.500624219725343,5.892634207240949,3.4769038701622974,6.123595505617978,5.418227215980025,1.5605493133583022,1.2484394506866416,1.1860174781523096,2.428214731585518,4.575530586766542,0.7677902621722846,1.5980024968789013,5.555555555555556,4.4694132334581775,1.7915106117353308,3.077403245942572,1.4419475655430714,6.803995006242197,4.818976279650437,1.1423220973782773,1.198501872659176,5.418227215980025,4.369538077403246,1.9225967540574282,1.3545568039950062,1.6416978776529338,6.367041198501872,3.408239700374532,1.797752808988764,5.068664169787765,3.5830212234706615,3.888888888888889,4.681647940074906,6.554307116104869,2.2971285892634206,4.069912609238452,4.500624219725343,5.66167290886392,6.554307116104869,3.8077403245942576,2.8152309612983775,3.801498127340824,3.651685393258427,2.278401997503121,6.30461922596754,4.057428214731585,2.902621722846442,6.30461922596754,2.328339575530587,3.920099875156055,4.325842696629214,4.644194756554308,6.198501872659176,4.169787765293384,6.242197253433209,6.554307116104869,4.581772784019975,3.0212234706616727,1.4731585518102372,2.009987515605493,6.554307116104869,4.00749063670412,3.2397003745318353,1.435705368289638,6.616729088639201,4.631710362047441,5.655430711610487,2.1036204744069913,4.107365792759051,3.639200998751561,6.054931335830212,0.9737827715355806,2.5593008739076155,2.3907615480649187,2.8963795255930087,5.855181023720349,1.410736579275905,5.493133583021224,4.9687890137328345,4.644194756554308, +4.31960049937578,5.805243445692884,2.852684144818976,5.9238451935081144,4.144818976279651,4.225967540574282,1.161048689138577,3.882646691635456,1.5605493133583022,3.4144818976279647,4.132334581772784,1.8726591760299625,0.8551810237203495,0.9051186017478152,2.1910112359550564,6.491885143570538,5.162297128589263,3.439450686641698,2.4968789013732833,2.128589263420724,4.531835205992509,5.9238451935081144,3.5018726591760303,6.154806491885144,5.443196004993759,1.585518102372035,1.2796504369538078,1.2109862671660423,2.459425717852684,4.600499375780275,0.7927590511860175,1.6354556803995006,5.574282147315855,4.488139825218477,1.8164794007490637,3.0961298377028714,1.4731585518102372,6.866416978776529,4.843945068664169,1.161048689138577,1.223470661672909,5.443196004993759,4.400749063670412,1.9600499375780276,1.3857677902621723,1.6729088639200997,6.429463171036204,3.439450686641698,1.8352059925093633,5.099875156054932,3.607990012484395,3.926342072409488,4.712858926342073,6.616729088639201,2.322097378277154,4.0886392009987516,4.531835205992509,5.69912609238452,6.616729088639201,3.8389513108614235,2.8339575530586765,3.8202247191011236,3.682896379525593,2.2971285892634206,6.30461922596754,4.0761548064918856,2.9275905118601746,6.30461922596754,2.35330836454432,3.9450686641697876,4.357053682896379,4.675405742821473,6.217228464419476,4.194756554307116,6.30461922596754,6.554307116104869,4.600499375780275,3.0524344569288386,1.4981273408239701,2.0411985018726595,6.554307116104869,4.038701622971286,3.2709113607990012,1.4544319600499376,6.616729088639201,4.656679151061174,5.68039950062422,2.134831460674157,4.132334581772784,3.6704119850187267,6.079900124843945,0.9925093632958802,2.5905118601747814,2.4219725343320846,2.9275905118601746,5.892634207240949,1.4419475655430714,5.5181023720349565,4.9937578027465666,4.66916354556804, +4.3508114856429465,5.842696629213483,2.8901373283395753,5.948813982521848,4.169787765293384,4.244694132334582,1.1860174781523096,3.9076154806491883,1.585518102372035,3.439450686641698,4.151061173533084,1.9038701622971288,0.8801498127340824,0.9363295880149812,2.209737827715356,6.554307116104869,5.19350811485643,3.470661672908864,2.521847690387016,2.153558052434457,4.563046192259676,5.955056179775282,3.5268414481897628,6.186017478152309,5.474406991260924,1.616729088639201,1.3108614232209737,1.2359550561797754,2.4906367041198503,4.6254681647940075,0.8177278401997503,1.6666666666666667,5.599250936329588,4.51310861423221,1.8352059925093633,3.1210986267166043,1.5106117353308364,6.866416978776529,4.868913857677903,1.1860174781523096,1.2484394506866416,5.461922596754057,4.425717852684145,1.9912609238451935,1.410736579275905,1.6978776529338326,6.429463171036204,3.470661672908864,1.8664169787765295,5.131086142322098,3.639200998751561,3.957553058676654,4.737827715355805,6.616729088639201,2.340823970037453,4.1136079900124844,4.556803995006242,5.736579275905119,6.616729088639201,3.8639200998751564,2.852684144818976,3.8389513108614235,3.714107365792759,2.322097378277154,6.367041198501872,4.1011235955056184,2.9463171036204745,6.367041198501872,2.3782771535580522,3.970037453183521,4.382022471910113,4.70661672908864,6.242197253433209,4.225967540574282,6.30461922596754,6.554307116104869,4.619225967540574,3.089887640449438,1.523096129837703,2.0786516853932584,6.616729088639201,4.069912609238452,3.3021223470661676,1.4794007490636705,6.679151061173534,4.681647940074906,5.705368289637952,2.1660424469413235,4.157303370786517,3.701622971285893,6.111111111111111,1.017478152309613,2.6217228464419473,2.446941323345818,2.958801498127341,5.930087390761548,1.4794007490636705,5.549313358302123,5.0187265917602994,4.694132334581773, +4.382022471910113,5.8739076154806495,2.9213483146067416,5.980024968789014,4.194756554307116,4.269662921348314,1.2047440699126093,3.9325842696629216,1.616729088639201,3.4581772784019975,4.176029962546816,1.9350811485642945,0.898876404494382,0.9675405742821472,2.2347066167290888,6.554307116104869,5.224719101123595,3.5018726591760303,2.546816479400749,2.1722846441947565,4.588014981273409,5.992509363295881,3.5518102372034956,6.217228464419476,5.50561797752809,1.647940074906367,1.34207240948814,1.260923845193508,2.521847690387016,4.65043695380774,0.8426966292134832,1.6978776529338326,5.617977528089888,4.538077403245943,1.8601747815230962,3.1460674157303368,1.5418227215980027,6.928838951310862,4.893882646691636,1.2047440699126093,1.2734082397003745,5.48689138576779,4.450686641697877,2.0224719101123596,1.4419475655430714,1.7228464419475658,6.491885143570538,3.508114856429463,1.8976279650436954,5.15605493133583,3.6641697877652937,3.9950062421972534,4.762796504369538,6.679151061173534,2.3657927590511862,4.132334581772784,4.588014981273409,5.774032459425719,6.616729088639201,3.888888888888889,2.871410736579276,3.8639200998751564,3.745318352059925,2.3470661672908864,6.367041198501872,4.1260923845193505,2.9712858926342074,6.367041198501872,2.4032459425717856,3.9950062421972534,4.413233458177278,4.7440699126092385,6.242197253433209,4.250936329588015,6.367041198501872,6.616729088639201,4.644194756554308,3.1210986267166043,1.5480649188514357,2.1161048689138577,6.679151061173534,4.1011235955056184,3.339575530586767,1.4981273408239701,6.679151061173534,4.70661672908864,5.730337078651686,2.1972534332084894,4.18227215980025,3.732833957553059,6.142322097378277,1.042446941323346,2.6529338327091136,2.471910112359551,2.9962546816479403,5.97378277153558,1.5106117353308364,5.580524344569288,5.043695380774032,4.719101123595506, +4.413233458177278,5.905118601747815,2.9525593008739075,6.004993757802747,4.219725343320849,4.294631710362047,1.229712858926342,3.957553058676654,1.647940074906367,3.4831460674157304,4.194756554307116,1.9600499375780276,0.9238451935081149,0.9987515605493134,2.259675405742821,6.616729088639201,5.2559300873907615,3.5268414481897628,2.571785268414482,2.1972534332084894,4.619225967540574,6.023720349563047,3.576779026217228,6.242197253433209,5.5305867665418225,1.6729088639200997,1.373283395755306,1.285892634207241,2.5530586766541825,4.675405742821473,0.867665418227216,1.735330836454432,5.64294631710362,4.556803995006242,1.8789013732833957,3.17103620474407,1.5792759051186018,6.928838951310862,4.918851435705368,1.223470661672909,1.2983770287141074,5.50561797752809,4.475655430711611,2.0536828963795255,1.4731585518102372,1.7540574282147314,6.491885143570538,3.5393258426966296,1.9350811485642945,5.187265917602996,3.6953807740324596,4.02621722846442,4.787765293383271,6.679151061173534,2.3907615480649187,4.151061173533084,4.612983770287141,5.811485642946318,6.679151061173534,3.920099875156055,2.8901373283395753,3.882646691635456,3.7827715355805243,2.3657927590511862,6.429463171036204,4.144818976279651,2.990012484394507,6.429463171036204,2.428214731585518,4.019975031210986,4.444444444444445,4.775280898876405,6.30461922596754,4.275905118601748,6.367041198501872,6.616729088639201,4.662921348314606,3.1585518102372037,1.5730337078651684,2.1473158551810236,6.679151061173534,4.132334581772784,3.370786516853933,1.523096129837703,6.741573033707866,4.7315855181023725,5.7553058676654185,2.2284644194756553,4.207240948813983,3.764044943820225,6.167290886392011,1.0674157303370786,2.68414481897628,2.4968789013732833,3.027465667915106,6.01123595505618,1.5418227215980027,5.611735330836455,5.068664169787765,4.737827715355805, +4.444444444444445,5.942571785268415,2.990012484394507,6.036204744069912,4.244694132334582,4.313358302122348,1.2546816479400749,3.9887640449438204,1.6791510611735332,3.508114856429463,4.219725343320849,1.9912609238451935,0.9488139825218477,1.0299625468164793,2.2846441947565546,6.616729088639201,5.287141073657928,3.5580524344569286,2.596754057428215,2.215980024968789,4.65043695380774,6.054931335830212,3.6017478152309614,6.30461922596754,5.561797752808988,1.704119850187266,1.3982521847690388,1.3108614232209737,2.5842696629213484,4.700374531835206,0.8926342072409489,1.766541822721598,5.66167290886392,4.581772784019975,1.9038701622971288,3.1897627965043696,1.6104868913857677,6.991260923845194,4.937578027465668,1.2484394506866416,1.3233458177278403,5.5305867665418225,4.506866416978776,2.091136079900125,1.4981273408239701,1.7790262172284643,6.554307116104869,3.5705368289637955,1.9662921348314608,5.218476903870163,3.7265917602996255,4.057428214731585,4.812734082397004,6.741573033707866,2.4157303370786516,4.176029962546816,4.644194756554308,5.848938826466916,6.679151061173534,3.9450686641697876,2.908863920099875,3.9013732833957557,3.81398252184769,2.3907615480649187,6.429463171036204,4.169787765293384,3.0149812734082393,6.429463171036204,2.453183520599251,4.044943820224719,4.475655430711611,4.806491885143571,6.30461922596754,4.307116104868914,6.429463171036204,6.616729088639201,4.681647940074906,3.1897627965043696,1.5980024968789013,2.184769038701623,6.741573033707866,4.16354556803995,3.4019975031210987,1.5418227215980027,6.741573033707866,4.750312109862672,5.7802746566791505,2.259675405742821,4.2322097378277155,3.801498127340824,6.198501872659176,1.0923845193508115,2.715355805243446,2.5280898876404496,3.058676654182272,6.048689138576779,1.5792759051186018,5.64294631710362,5.093632958801498,4.762796504369538, +4.475655430711611,5.97378277153558,3.0212234706616727,6.061173533083646,4.269662921348314,4.33832709113608,1.2734082397003745,4.013732833957553,1.704119850187266,3.5268414481897628,4.238451935081149,2.0224719101123596,0.9675405742821472,1.0549313358302121,2.309612983770287,6.616729088639201,5.318352059925093,3.589263420724095,2.6217228464419473,2.2409488139825218,4.675405742821473,6.086142322097379,3.6267166042446943,6.30461922596754,5.593008739076155,1.735330836454432,1.4294631710362047,1.3358302122347065,2.6154806491885143,4.725343320848939,0.9176029962546817,1.8039950062421974,5.686641697877653,4.600499375780275,1.9288389513108615,3.214731585518102,1.647940074906367,6.991260923845194,4.962546816479401,1.2671660424469413,1.34207240948814,5.549313358302123,4.531835205992509,2.122347066167291,1.529338327091136,1.8039950062421974,6.554307116104869,3.607990012484395,1.9975031210986267,5.249687890137328,3.7515605493133584,4.094881398252185,4.843945068664169,6.803995006242197,2.4406991260923845,4.194756554307116,4.675405742821473,5.8863920099875156,6.741573033707866,3.970037453183521,2.9275905118601746,3.926342072409488,3.8451935081148565,2.4094881398252186,6.491885143570538,4.188514357053683,3.033707865168539,6.429463171036204,2.478152309612984,4.069912609238452,4.506866416978776,4.837702871410737,6.367041198501872,4.332084893882647,6.429463171036204,6.679151061173534,4.70661672908864,3.227215980024969,1.6229712858926344,2.215980024968789,6.803995006242197,4.194756554307116,3.439450686641698,1.5667915106117354,6.803995006242197,4.775280898876405,5.805243445692884,2.2908863920099876,4.257178526841448,3.83270911360799,6.229712858926342,1.1173533083645444,2.746566791510612,2.5530586766541825,3.089887640449438,6.086142322097379,1.6104868913857677,5.674157303370786,5.118601747815231,4.787765293383271, +4.506866416978776,6.004993757802747,3.0524344569288386,6.092384519350812,4.294631710362047,4.3632958801498125,1.2983770287141074,4.038701622971286,1.735330836454432,3.5518102372034956,4.263420724094882,2.0474406991260925,0.9925093632958802,1.0861423220973783,2.33458177278402,6.679151061173534,5.34956304619226,3.620474406991261,2.6466916354556806,2.259675405742821,4.70661672908864,6.117353308364544,3.651685393258427,6.367041198501872,5.617977528089888,1.7602996254681649,1.4606741573033708,1.3607990012484397,2.6466916354556806,4.750312109862672,0.9425717852684146,1.8352059925093633,5.705368289637952,4.6254681647940075,1.9475655430711611,3.2397003745318353,1.6791510611735332,7.0536828963795255,4.987515605493134,1.285892634207241,1.3670411985018727,5.574282147315855,4.556803995006242,2.153558052434457,1.5605493133583022,1.8352059925093633,6.616729088639201,3.639200998751561,2.034956304619226,5.274656679151062,3.7827715355805243,4.1260923845193505,4.868913857677903,6.803995006242197,2.4656679151061174,4.213483146067416,4.700374531835206,5.9238451935081144,6.741573033707866,3.9950062421972534,2.9463171036204745,3.9450686641697876,3.8764044943820224,2.4344569288389515,6.491885143570538,4.213483146067416,3.058676654182272,6.491885143570538,2.5031210986267167,4.094881398252185,4.538077403245943,4.868913857677903,6.367041198501872,4.357053682896379,6.491885143570538,6.679151061173534,4.725343320848939,3.258426966292135,1.647940074906367,2.253433208489388,6.803995006242197,4.225967540574282,3.470661672908864,1.585518102372035,6.803995006242197,4.800249687890138,5.830212234706617,2.322097378277154,4.282147315855181,3.8639200998751564,6.242197253433209,1.136079900124844,2.777777777777778,2.578027465667915,3.1273408239700373,6.129837702871411,1.647940074906367,5.69912609238452,5.149812734082397,4.812734082397004, +4.538077403245943,6.0424469413233455,3.089887640449438,6.117353308364544,4.31960049937578,4.382022471910113,1.3233458177278403,4.063670411985019,1.766541822721598,3.576779026217228,4.282147315855181,2.0786516853932584,1.017478152309613,1.1173533083645444,2.359550561797753,6.679151061173534,5.380774032459426,3.651685393258427,2.671660424469413,2.2846441947565546,4.737827715355805,6.1485642946317105,3.6766541822721597,6.367041198501872,5.6491885143570535,1.7915106117353308,1.4918851435705367,1.3857677902621723,2.68414481897628,4.775280898876405,0.9675405742821472,1.8664169787765295,5.724094881398252,4.65043695380774,1.9725343320848938,3.2646691635455682,1.7166042446941323,7.0536828963795255,5.012484394506866,1.3046192259675407,1.3920099875156053,5.593008739076155,4.588014981273409,2.184769038701623,1.591760299625468,1.8601747815230962,6.616729088639201,3.6766541822721597,2.066167290886392,5.305867665418227,3.8077403245942576,4.16354556803995,4.893882646691636,6.866416978776529,2.4843945068664173,4.238451935081149,4.7315855181023725,5.961298377028713,6.741573033707866,4.02621722846442,2.9712858926342074,3.9637952559300875,3.9076154806491883,2.453183520599251,6.554307116104869,4.238451935081149,3.077403245942572,6.491885143570538,2.5280898876404496,4.1136079900124844,4.569288389513109,4.906367041198502,6.367041198501872,4.388264669163545,6.491885143570538,6.679151061173534,4.7440699126092385,3.2896379525593007,1.6729088639200997,2.2846441947565546,6.866416978776529,4.257178526841448,3.5018726591760303,1.6042446941323347,6.866416978776529,4.825218476903871,5.855181023720349,2.35330836454432,4.307116104868914,3.8951310861423223,6.30461922596754,1.161048689138577,2.808988764044944,2.6092384519350813,3.1585518102372037,6.167290886392011,1.6791510611735332,5.730337078651686,5.174781523096129,4.831460674157303, +4.563046192259676,6.073657927590512,3.1210986267166043,6.1485642946317105,4.344569288389513,4.406991260923846,1.348314606741573,4.0886392009987516,1.797752808988764,3.595505617977528,4.300873907615481,2.1098626716604243,1.0362047440699127,1.1485642946317103,2.3845193508114857,6.741573033707866,5.411985018726591,3.682896379525593,2.696629213483146,2.303370786516854,4.762796504369538,6.179775280898876,3.6953807740324596,6.429463171036204,5.68039950062422,1.8227215980024971,1.523096129837703,1.410736579275905,2.715355805243446,4.800249687890138,0.9925093632958802,1.9038701622971288,5.749063670411985,4.66916354556804,1.9975031210986267,3.2833957553058677,1.7478152309612984,7.116104868913857,5.0374531835206,1.3295880149812733,1.4169787765293382,5.617977528089888,4.612983770287141,2.2222222222222223,1.616729088639201,1.8851435705368291,6.679151061173534,3.7078651685393256,2.1036204744069913,5.337078651685393,3.8389513108614235,4.194756554307116,4.918851435705368,6.866416978776529,2.5093632958801497,4.257178526841448,4.7565543071161045,5.998751560549313,6.803995006242197,4.051186017478152,2.990012484394507,3.9887640449438204,3.938826466916354,2.478152309612984,6.554307116104869,4.257178526841448,3.102372034956305,6.491885143570538,2.546816479400749,4.138576779026217,4.600499375780275,4.937578027465668,6.429463171036204,4.413233458177278,6.554307116104869,6.741573033707866,4.769038701622971,3.3270911360799,1.6978776529338326,2.322097378277154,6.866416978776529,4.288389513108614,3.5393258426966296,1.6292134831460674,6.866416978776529,4.850187265917603,5.880149812734083,2.3845193508114857,4.332084893882647,3.926342072409488,6.30461922596754,1.1860174781523096,2.84019975031211,2.634207240948814,3.1897627965043696,6.20474406991261,1.7166042446941323,5.761548064918852,5.199750312109863,4.856429463171036, +4.594257178526841,6.104868913857677,3.15230961298377,6.173533083645444,4.369538077403246,4.431960049937578,1.3670411985018727,4.119850187265917,1.8227215980024971,3.620474406991261,4.325842696629214,2.1410736579275906,1.0611735330836456,1.1797752808988764,2.4094881398252186,6.741573033707866,5.443196004993759,3.714107365792759,2.7215980024968793,2.328339575530587,4.794007490636704,6.210986267166042,3.7203495630461925,6.429463171036204,5.705368289637952,1.8476903870162298,1.554307116104869,1.435705368289638,2.746566791510612,4.825218476903871,1.0112359550561798,1.9350811485642945,5.767790262172285,4.694132334581773,2.016229712858926,3.3083645443196006,1.7852684144818978,7.116104868913857,5.062421972534332,1.348314606741573,1.4419475655430714,5.636704119850187,4.637952559300874,2.253433208489388,1.647940074906367,1.916354556803995,6.679151061173534,3.7390761548064915,2.134831460674157,5.36828963795256,3.8639200998751564,4.2322097378277155,4.943820224719102,6.928838951310862,2.5343320848938826,4.282147315855181,4.787765293383271,6.036204744069912,6.803995006242197,4.0761548064918856,3.0087390761548067,4.00749063670412,3.970037453183521,2.5031210986267167,6.616729088639201,4.282147315855181,3.1210986267166043,6.554307116104869,2.571785268414482,4.16354556803995,4.631710362047441,4.9687890137328345,6.429463171036204,4.438202247191011,6.554307116104869,6.741573033707866,4.787765293383271,3.3583021223470664,1.7228464419475658,2.359550561797753,6.928838951310862,4.31960049937578,3.5705368289637955,1.647940074906367,6.928838951310862,4.875156054931336,5.905118601747815,2.4157303370786516,4.357053682896379,3.9637952559300875,6.367041198501872,1.2109862671660423,2.871410736579276,2.6591760299625467,3.227215980024969,6.242197253433209,1.7478152309612984,5.792759051186017,5.224719101123595,4.881398252184769, +4.6254681647940075,6.142322097378277,3.1897627965043696,6.20474406991261,4.394506866416979,4.450686641697877,1.3920099875156053,4.144818976279651,1.8539325842696628,3.6454431960049942,4.344569288389513,2.1660424469413235,1.079900124843945,1.2047440699126093,2.4344569288389515,6.803995006242197,5.474406991260924,3.745318352059925,2.746566791510612,2.3470661672908864,4.825218476903871,6.242197253433209,3.745318352059925,6.491885143570538,5.736579275905119,1.8789013732833957,1.5792759051186018,1.4606741573033708,2.777777777777778,4.850187265917603,1.0362047440699127,1.9662921348314608,5.792759051186017,4.712858926342073,2.0411985018726595,3.3333333333333335,1.8164794007490637,7.17852684144819,5.081148564294631,1.3670411985018727,1.466916354556804,5.66167290886392,4.662921348314606,2.2846441947565546,1.6791510611735332,1.941323345817728,6.741573033707866,3.776529338327091,2.1660424469413235,5.393258426966292,3.8951310861423223,4.263420724094882,4.9687890137328345,6.928838951310862,2.5593008739076155,4.300873907615481,4.812734082397004,6.073657927590512,6.866416978776529,4.107365792759051,3.027465667915106,4.02621722846442,4.001248439450687,2.521847690387016,6.616729088639201,4.300873907615481,3.1460674157303368,6.554307116104869,2.596754057428215,4.188514357053683,4.662921348314606,5.0,6.429463171036204,4.4694132334581775,6.616729088639201,6.741573033707866,4.812734082397004,3.3957553058676653,1.7478152309612984,2.3907615480649187,6.991260923845194,4.3508114856429465,3.6017478152309614,1.6729088639200997,6.928838951310862,4.893882646691636,5.930087390761548,2.446941323345818,4.382022471910113,3.9950062421972534,6.367041198501872,1.2359550561797754,2.902621722846442,2.68414481897628,3.258426966292135,6.30461922596754,1.7852684144818978,5.823970037453184,5.249687890137328,4.906367041198502, +4.656679151061174,6.173533083645444,3.2209737827715355,6.229712858926342,4.419475655430712,4.475655430711611,1.4169787765293382,4.169787765293384,1.8851435705368291,3.6641697877652937,4.369538077403246,2.1972534332084894,1.104868913857678,1.2359550561797754,2.459425717852684,6.803995006242197,5.50561797752809,3.776529338327091,2.7715355805243447,2.3720349563046192,4.850187265917603,6.30461922596754,3.7702871410736583,6.491885143570538,5.767790262172285,1.9101123595505618,1.6104868913857677,1.4856429463171037,2.808988764044944,4.875156054931336,1.0611735330836456,2.00374531835206,5.811485642946318,4.737827715355805,2.0599250936329585,3.3583021223470664,1.8539325842696628,7.17852684144819,5.106117353308365,1.3920099875156053,1.4856429463171037,5.686641697877653,4.694132334581773,2.3158551810237205,1.704119850187266,1.9662921348314608,6.741573033707866,3.8077403245942576,2.203495630461923,5.424469413233458,3.926342072409488,4.294631710362047,5.0,6.991260923845194,2.5842696629213484,4.31960049937578,4.843945068664169,6.111111111111111,6.866416978776529,4.132334581772784,3.046192259675406,4.051186017478152,4.032459425717852,2.546816479400749,6.679151061173534,4.325842696629214,3.1647940074906367,6.554307116104869,2.6217228464419473,4.213483146067416,4.694132334581773,5.0374531835206,6.491885143570538,4.49438202247191,6.616729088639201,6.803995006242197,4.831460674157303,3.4269662921348316,1.772784019975031,2.428214731585518,6.991260923845194,4.382022471910113,3.639200998751561,1.6916354556803994,6.991260923845194,4.918851435705368,5.955056179775282,2.478152309612984,4.406991260923846,4.02621722846442,6.429463171036204,1.260923845193508,2.933832709113608,2.715355805243446,3.2896379525593007,6.30461922596754,1.8164794007490637,5.855181023720349,5.274656679151062,4.925093632958801, +4.687890137328339,6.20474406991261,3.258426966292135,6.242197253433209,4.444444444444445,4.500624219725343,1.435705368289638,4.194756554307116,1.916354556803995,3.689138576779026,4.388264669163545,2.2284644194756553,1.1298377028714106,1.2671660424469413,2.4843945068664173,6.866416978776529,5.536828963795256,3.8077403245942576,2.7965043695380776,2.3907615480649187,4.881398252184769,6.30461922596754,3.7952559300873907,6.554307116104869,5.799001248439451,1.9350811485642945,1.6416978776529338,1.5106117353308364,2.84019975031211,4.900124843945068,1.0861423220973783,2.034956304619226,5.836454431960051,4.7565543071161045,2.084893882646692,3.3770287141073654,1.8851435705368291,7.240948813982522,5.131086142322098,1.410736579275905,1.5106117353308364,5.705368289637952,4.719101123595506,2.35330836454432,1.735330836454432,1.9975031210986267,6.803995006242197,3.8389513108614235,2.2347066167290888,5.455680399500624,3.951310861423221,4.332084893882647,5.024968789013733,7.0536828963795255,2.602996254681648,4.344569288389513,4.868913857677903,6.1485642946317105,6.866416978776529,4.157303370786517,3.0649188514357055,4.069912609238452,4.063670411985019,2.565543071161049,6.679151061173534,4.3508114856429465,3.1897627965043696,6.616729088639201,2.6466916354556806,4.238451935081149,4.725343320848939,5.068664169787765,6.491885143570538,4.519350811485642,6.679151061173534,6.803995006242197,4.850187265917603,3.464419475655431,1.797752808988764,2.459425717852684,7.0536828963795255,4.413233458177278,3.6704119850187267,1.7166042446941323,6.991260923845194,4.943820224719102,5.980024968789014,2.5093632958801497,4.431960049937578,4.057428214731585,6.429463171036204,1.285892634207241,2.965043695380774,2.740324594257179,3.3270911360799,6.367041198501872,1.8476903870162298,5.880149812734083,5.299625468164794,4.950062421972534, +4.719101123595506,6.242197253433209,3.2896379525593007,6.30461922596754,4.4694132334581775,4.519350811485642,1.4606741573033708,4.219725343320849,1.941323345817728,3.714107365792759,4.413233458177278,2.259675405742821,1.1485642946317103,1.2983770287141074,2.5093632958801497,6.866416978776529,5.568039950062421,3.8389513108614235,2.82147315855181,2.4157303370786516,4.912609238451935,6.367041198501872,3.8202247191011236,6.554307116104869,5.823970037453184,1.9662921348314608,1.6729088639200997,1.5355805243445693,2.871410736579276,4.925093632958801,1.1111111111111112,2.0724094881398254,5.855181023720349,4.781523096129837,2.1098626716604243,3.4019975031210987,1.9225967540574282,7.240948813982522,5.15605493133583,1.4294631710362047,1.5355805243445693,5.730337078651686,4.7440699126092385,2.3845193508114857,1.766541822721598,2.0224719101123596,6.803995006242197,3.8764044943820224,2.272159800249688,5.48689138576779,3.982521847690387,4.3632958801498125,5.049937578027466,7.0536828963795255,2.6279650436953808,4.3632958801498125,4.900124843945068,6.186017478152309,6.928838951310862,4.188514357053683,3.0836454431960054,4.0886392009987516,4.094881398252185,2.5905118601747814,6.741573033707866,4.369538077403246,3.2084893882646695,6.616729088639201,2.671660424469413,4.263420724094882,4.750312109862672,5.099875156054932,6.491885143570538,4.55056179775281,6.679151061173534,6.803995006242197,4.875156054931336,3.495630461922597,1.8227215980024971,2.4968789013732833,7.116104868913857,4.444444444444445,3.7078651685393256,1.735330836454432,7.0536828963795255,4.9687890137328345,6.01123595505618,2.5405742821473156,4.456928838951311,4.0886392009987516,6.491885143570538,1.3046192259675407,2.9962546816479403,2.7652933832709112,3.3583021223470664,6.429463171036204,1.8851435705368291,5.9113607990012484,5.324594257178527,4.975031210986267, +4.750312109862672,6.30461922596754,3.320848938826467,6.30461922596754,4.49438202247191,4.544319600499376,1.4856429463171037,4.250936329588015,1.9725343320848938,3.732833957553059,4.431960049937578,2.2846441947565546,1.1735330836454432,1.3295880149812733,2.5343320848938826,6.928838951310862,5.599250936329588,3.870162297128589,2.84019975031211,2.4344569288389515,4.937578027465668,6.367041198501872,3.8451935081148565,6.616729088639201,5.855181023720349,1.9975031210986267,1.704119850187266,1.5605493133583022,2.902621722846442,4.950062421972534,1.136079900124844,2.1036204744069913,5.880149812734083,4.806491885143571,2.128589263420724,3.4269662921348316,1.9600499375780276,7.303370786516854,5.181023720349563,1.4544319600499376,1.5605493133583022,5.749063670411985,4.775280898876405,2.4157303370786516,1.797752808988764,2.0474406991260925,6.866416978776529,3.9076154806491883,2.303370786516854,5.511860174781523,4.00749063670412,4.400749063670412,5.074906367041199,7.116104868913857,2.6529338327091136,4.382022471910113,4.931335830212235,6.223470661672909,6.928838951310862,4.213483146067416,3.102372034956305,4.1136079900124844,4.132334581772784,2.6092384519350813,6.741573033707866,4.394506866416979,3.227215980024969,6.616729088639201,2.696629213483146,4.288389513108614,4.781523096129837,5.131086142322098,6.554307116104869,4.575530586766542,6.741573033707866,6.866416978776529,4.893882646691636,3.533083645443196,1.8476903870162298,2.5343320848938826,7.116104868913857,4.475655430711611,3.7390761548064915,1.7602996254681649,7.0536828963795255,4.9937578027465666,6.036204744069912,2.571785268414482,4.4818976279650435,4.119850187265917,6.491885143570538,1.3295880149812733,3.027465667915106,2.790262172284644,3.3895131086142323,6.429463171036204,1.916354556803995,5.942571785268415,5.355805243445693,4.9937578027465666, +4.781523096129837,6.30461922596754,3.3583021223470664,6.367041198501872,4.519350811485642,4.563046192259676,1.5043695380774034,4.275905118601748,2.00374531835206,3.7578027465667914,4.450686641697877,2.3158551810237205,1.198501872659176,1.3545568039950062,2.5593008739076155,6.928838951310862,5.630461922596755,3.9013732833957557,2.865168539325843,2.453183520599251,4.9687890137328345,6.429463171036204,3.870162297128589,6.616729088639201,5.8863920099875156,2.0287141073657926,1.7290886392009988,1.585518102372035,2.933832709113608,4.975031210986267,1.161048689138577,2.134831460674157,5.8988764044943816,4.825218476903871,2.153558052434457,3.4456928838951315,1.9912609238451935,7.303370786516854,5.205992509363296,1.4731585518102372,1.585518102372035,5.774032459425719,4.800249687890138,2.446941323345818,1.8227215980024971,2.0786516853932584,6.866416978776529,3.938826466916354,2.33458177278402,5.543071161048689,4.038701622971286,4.431960049937578,5.099875156054932,7.116104868913857,2.6779026217228465,4.406991260923846,4.956304619225968,6.242197253433209,6.991260923845194,4.238451935081149,3.1273408239700373,4.132334581772784,4.16354556803995,2.634207240948814,6.803995006242197,4.413233458177278,3.2521847690387014,6.679151061173534,2.7215980024968793,4.313358302122348,4.812734082397004,5.168539325842697,6.554307116104869,4.606741573033708,6.741573033707866,6.866416978776529,4.912609238451935,3.564294631710362,1.8726591760299625,2.565543071161049,7.17852684144819,4.500624219725343,3.7702871410736583,1.7790262172284643,7.116104868913857,5.0187265917602994,6.061173533083646,2.602996254681648,4.506866416978776,4.157303370786517,6.491885143570538,1.3545568039950062,3.058676654182272,2.82147315855181,3.420724094881398,6.491885143570538,1.9538077403245941,5.97378277153558,5.380774032459426,5.0187265917602994, +4.806491885143571,6.367041198501872,3.3895131086142323,6.367041198501872,4.544319600499376,4.588014981273409,1.529338327091136,4.300873907615481,2.034956304619226,3.7827715355805243,4.475655430711611,2.3470661672908864,1.2172284644194757,1.3857677902621723,2.5842696629213484,6.991260923845194,5.66167290886392,3.9325842696629216,2.8901373283395753,2.478152309612984,5.0,6.429463171036204,3.8951310861423223,6.679151061173534,5.9113607990012484,2.0536828963795255,1.7602996254681649,1.6104868913857677,2.965043695380774,5.0,1.1860174781523096,2.1722846441947565,5.917602996254682,4.850187265917603,2.1722846441947565,3.470661672908864,2.0287141073657926,7.365792759051186,5.230961298377029,1.4918851435705367,1.6104868913857677,5.792759051186017,4.825218476903871,2.4843945068664173,1.8539325842696628,2.1036204744069913,6.928838951310862,3.9762796504369535,2.3720349563046192,5.574282147315855,4.063670411985019,4.4694132334581775,5.131086142322098,7.17852684144819,2.702871410736579,4.425717852684145,4.987515605493134,6.30461922596754,6.991260923845194,4.269662921348314,3.1460674157303368,4.151061173533084,4.194756554307116,2.6591760299625467,6.803995006242197,4.438202247191011,3.2709113607990012,6.679151061173534,2.746566791510612,4.33832709113608,4.843945068664169,5.199750312109863,6.616729088639201,4.631710362047441,6.803995006242197,6.866416978776529,4.937578027465668,3.6017478152309614,1.8976279650436954,2.602996254681648,7.17852684144819,4.531835205992509,3.8077403245942576,1.8039950062421974,7.116104868913857,5.043695380774032,6.086142322097379,2.634207240948814,4.531835205992509,4.188514357053683,6.554307116104869,1.3795255930087391,3.0836454431960054,2.8464419475655434,3.4581772784019975,6.491885143570538,1.9850187265917605,6.004993757802747,5.405742821473158,5.043695380774032, +4.837702871410737,6.367041198501872,3.420724094881398,6.367041198501872,4.569288389513109,4.612983770287141,1.554307116104869,4.325842696629214,2.0599250936329585,3.801498127340824,4.49438202247191,2.3720349563046192,1.2421972534332086,1.4169787765293382,2.6092384519350813,6.991260923845194,5.692883895131087,3.9637952559300875,2.9151061173533086,2.4968789013732833,5.024968789013733,6.491885143570538,3.9138576779026217,6.679151061173534,5.942571785268415,2.084893882646692,1.7915106117353308,1.6354556803995006,2.9962546816479403,5.024968789013733,1.2109862671660423,2.203495630461923,5.942571785268415,4.868913857677903,2.1972534332084894,3.495630461922597,2.0599250936329585,7.365792759051186,5.249687890137328,1.5106117353308364,1.6354556803995006,5.81772784019975,4.850187265917603,2.515605493133583,1.8851435705368291,2.128589263420724,6.928838951310862,4.00749063670412,2.4032459425717856,5.605493133583021,4.094881398252185,4.500624219725343,5.15605493133583,7.17852684144819,2.727840199750312,4.444444444444445,5.012484394506866,6.30461922596754,6.991260923845194,4.294631710362047,3.1647940074906367,4.176029962546816,4.225967540574282,2.6779026217228465,6.866416978776529,4.463171036204744,3.295880149812734,6.679151061173534,2.7715355805243447,4.3632958801498125,4.875156054931336,5.230961298377029,6.616729088639201,4.656679151061174,6.803995006242197,6.928838951310862,4.956304619225968,3.6329588014981273,1.9225967540574282,2.634207240948814,7.240948813982522,4.563046192259676,3.8389513108614235,1.8227215980024971,7.17852684144819,5.062421972534332,6.111111111111111,2.66541822721598,4.556803995006242,4.219725343320849,6.554307116104869,1.404494382022472,3.114856429463171,2.871410736579276,3.4893882646691634,6.554307116104869,2.0224719101123596,6.036204744069912,5.430711610486892,5.068664169787765, +4.868913857677903,6.429463171036204,3.4581772784019975,6.429463171036204,4.594257178526841,4.631710362047441,1.5730337078651684,4.357053682896379,2.091136079900125,3.826466916354557,4.519350811485642,2.4032459425717856,1.2671660424469413,1.4481897627965044,2.634207240948814,7.0536828963795255,5.724094881398252,3.9950062421972534,2.9400749063670415,2.521847690387016,5.056179775280899,6.491885143570538,3.938826466916354,6.741573033707866,5.97378277153558,2.1161048689138577,1.8227215980024971,1.6604244694132335,3.033707865168539,5.049937578027466,1.2359550561797754,2.2347066167290888,5.961298377028713,4.893882646691636,2.2222222222222223,3.5205992509363297,2.097378277153558,7.428214731585518,5.274656679151062,1.5355805243445693,1.6541822721598003,5.836454431960051,4.881398252184769,2.546816479400749,1.9101123595505618,2.15980024968789,6.991260923845194,4.044943820224719,2.4344569288389515,5.630461922596755,4.1260923845193505,4.531835205992509,5.181023720349563,7.240948813982522,2.746566791510612,4.4694132334581775,5.043695380774032,6.367041198501872,7.0536828963795255,4.31960049937578,3.183520599250936,4.194756554307116,4.257178526841448,2.702871410736579,6.866416978776529,4.4818976279650435,3.3146067415730336,6.741573033707866,2.790262172284644,4.388264669163545,4.906367041198502,5.262172284644195,6.616729088639201,4.687890137328339,6.803995006242197,6.928838951310862,4.975031210986267,3.6704119850187267,1.941323345817728,2.671660424469413,7.303370786516854,4.594257178526841,3.870162297128589,1.8476903870162298,7.17852684144819,5.087390761548065,6.1360799001248445,2.696629213483146,4.588014981273409,4.250936329588015,6.616729088639201,1.4294631710362047,3.1460674157303368,2.8963795255930087,3.5205992509363297,6.616729088639201,2.0536828963795255,6.061173533083646,5.455680399500624,5.087390761548065, +4.900124843945068,6.429463171036204,3.4893882646691634,6.429463171036204,4.619225967540574,4.656679151061174,1.5980024968789013,4.382022471910113,2.122347066167291,3.8451935081148565,4.538077403245943,2.4344569288389515,1.285892634207241,1.4731585518102372,2.6529338327091136,7.0536828963795255,5.7553058676654185,4.02621722846442,2.965043695380774,2.5405742821473156,5.087390761548065,6.554307116104869,3.9637952559300875,6.741573033707866,5.998751560549313,2.1410736579275906,1.8539325842696628,1.6853932584269664,3.0649188514357055,5.074906367041199,1.260923845193508,2.272159800249688,5.986267166042447,4.912609238451935,2.2409488139825218,3.5393258426966296,2.128589263420724,7.428214731585518,5.299625468164794,1.554307116104869,1.6791510611735332,5.861423220973783,4.906367041198502,2.578027465667915,1.941323345817728,2.184769038701623,6.991260923845194,4.0761548064918856,2.471910112359551,5.66167290886392,4.151061173533084,4.569288389513109,5.205992509363296,7.303370786516854,2.7715355805243447,4.488139825218477,5.068664169787765,6.429463171036204,7.0536828963795255,4.3508114856429465,3.202247191011236,4.213483146067416,4.288389513108614,2.7215980024968793,6.928838951310862,4.506866416978776,3.339575530586767,6.741573033707866,2.8152309612983775,4.413233458177278,4.937578027465668,5.299625468164794,6.679151061173534,4.712858926342073,6.866416978776529,6.928838951310862,5.0,3.701622971285893,1.9662921348314608,2.702871410736579,7.303370786516854,4.6254681647940075,3.9076154806491883,1.8664169787765295,7.240948813982522,5.1123595505617985,6.161048689138577,2.727840199750312,4.612983770287141,4.282147315855181,6.616729088639201,1.4481897627965044,3.1772784019975036,2.9275905118601746,3.5580524344569286,6.616729088639201,2.091136079900125,6.092384519350812,5.480649188514358,5.1123595505617985, +4.931335830212235,6.491885143570538,3.5205992509363297,6.491885143570538,4.644194756554308,4.681647940074906,1.6229712858926344,4.406991260923846,2.153558052434457,3.870162297128589,4.563046192259676,2.4656679151061174,1.3108614232209737,1.5043695380774034,2.6779026217228465,7.116104868913857,5.786516853932584,4.057428214731585,2.990012484394507,2.565543071161049,5.1123595505617985,6.554307116104869,3.9887640449438204,6.803995006242197,6.029962546816479,2.1722846441947565,1.8851435705368291,1.710362047440699,3.0961298377028714,5.099875156054932,1.285892634207241,2.303370786516854,6.004993757802747,4.937578027465668,2.2659176029962547,3.564294631710362,2.1660424469413235,7.49063670411985,5.324594257178527,1.5730337078651684,1.704119850187266,5.8863920099875156,4.931335830212235,2.6154806491885143,1.9725343320848938,2.209737827715356,7.0536828963795255,4.107365792759051,2.5031210986267167,5.692883895131087,4.18227215980025,4.600499375780275,5.230961298377029,7.303370786516854,2.7965043695380776,4.506866416978776,5.099875156054932,6.429463171036204,7.116104868913857,4.375780274656679,3.2209737827715355,4.238451935081149,4.31960049937578,2.746566791510612,6.928838951310862,4.525593008739076,3.3583021223470664,6.741573033707866,2.84019975031211,4.438202247191011,4.9687890137328345,5.33083645443196,6.679151061173534,4.737827715355805,6.866416978776529,6.991260923845194,5.0187265917602994,3.732833957553059,1.9912609238451935,2.740324594257179,7.365792759051186,4.656679151061174,3.938826466916354,1.8913857677902621,7.240948813982522,5.1373283395755305,6.186017478152309,2.7590511860174782,4.637952559300874,4.31960049937578,6.679151061173534,1.4731585518102372,3.2084893882646695,2.9525593008739075,3.589263420724095,6.679151061173534,2.122347066167291,6.123595505617978,5.50561797752809,5.1373283395755305, +4.962546816479401,6.491885143570538,3.5580524344569286,6.491885143570538,4.66916354556804,4.700374531835206,1.6416978776529338,4.431960049937578,2.1785268414481895,3.8951310861423223,4.581772784019975,2.4906367041198503,1.3358302122347065,1.5355805243445693,2.702871410736579,7.116104868913857,5.81772784019975,4.0886392009987516,3.0149812734082393,2.5842696629213484,5.143570536828964,6.616729088639201,4.013732833957553,6.803995006242197,6.061173533083646,2.203495630461923,1.9101123595505618,1.735330836454432,3.1273408239700373,5.118601747815231,1.3108614232209737,2.340823970037453,6.029962546816479,4.962546816479401,2.2846441947565546,3.589263420724095,2.1972534332084894,7.49063670411985,5.34956304619226,1.5980024968789013,1.7290886392009988,5.905118601747815,4.962546816479401,2.6466916354556806,2.00374531835206,2.2409488139825218,7.0536828963795255,4.144818976279651,2.5405742821473156,5.724094881398252,4.207240948813983,4.637952559300874,5.262172284644195,7.365792759051186,2.82147315855181,4.531835205992509,5.1248439450686645,6.491885143570538,7.116104868913857,4.400749063670412,3.2397003745318353,4.257178526841448,4.3508114856429465,2.7715355805243447,6.991260923845194,4.55056179775281,3.383270911360799,6.803995006242197,2.865168539325843,4.463171036204744,5.0,5.3620474406991265,6.679151061173534,4.769038701622971,6.928838951310862,6.991260923845194,5.0374531835206,3.7702871410736583,2.016229712858926,2.777777777777778,7.428214731585518,4.687890137328339,3.970037453183521,1.9101123595505618,7.303370786516854,5.162297128589263,6.210986267166042,2.790262172284644,4.662921348314606,4.3508114856429465,6.679151061173534,1.4981273408239701,3.2397003745318353,2.977528089887641,3.620474406991261,6.741573033707866,2.153558052434457,6.154806491885144,5.5305867665418225,5.162297128589263, +4.9937578027465666,6.554307116104869,3.589263420724095,6.554307116104869,4.694132334581773,4.725343320848939,1.6666666666666667,4.456928838951311,2.209737827715356,3.9138576779026217,4.600499375780275,2.521847690387016,1.3545568039950062,1.5667915106117354,2.727840199750312,7.17852684144819,5.848938826466916,4.119850187265917,3.0399500624219726,2.6092384519350813,5.174781523096129,6.616729088639201,4.038701622971286,6.866416978776529,6.086142322097379,2.2284644194756553,1.941323345817728,1.7602996254681649,3.1585518102372037,5.143570536828964,1.3358302122347065,2.3720349563046192,6.048689138576779,4.9812734082397006,2.309612983770287,3.6142322097378274,2.2347066167290888,7.553058676654182,5.3745318352059925,1.616729088639201,1.7540574282147314,5.930087390761548,4.987515605493134,2.6779026217228465,2.0287141073657926,2.2659176029962547,7.116104868913857,4.176029962546816,2.571785268414482,5.749063670411985,4.238451935081149,4.66916354556804,5.287141073657928,7.365792759051186,2.8464419475655434,4.55056179775281,5.15605493133583,6.491885143570538,7.116104868913857,4.431960049937578,3.258426966292135,4.275905118601748,4.382022471910113,2.790262172284644,6.991260923845194,4.575530586766542,3.4019975031210987,6.803995006242197,2.8901373283395753,4.488139825218477,5.031210986267166,5.393258426966292,6.741573033707866,4.794007490636704,6.928838951310862,6.991260923845194,5.062421972534332,3.801498127340824,2.0411985018726595,2.808988764044944,7.428214731585518,4.719101123595506,4.00749063670412,1.9350811485642945,7.303370786516854,5.187265917602996,6.235955056179775,2.82147315855181,4.687890137328339,4.382022471910113,6.741573033707866,1.523096129837703,3.2709113607990012,3.0087390761548067,3.6579275905118602,6.741573033707866,2.1910112359550564,6.186017478152309,5.561797752808988,5.181023720349563, +5.024968789013733,6.554307116104869,3.6267166042446943,6.554307116104869,4.719101123595506,4.750312109862672,1.6916354556803994,4.488139825218477,2.2409488139825218,3.938826466916354,4.6254681647940075,2.5530586766541825,1.3795255930087391,1.5980024968789013,2.752808988764045,7.17852684144819,5.880149812734083,4.151061173533084,3.0649188514357055,2.6279650436953808,5.199750312109863,6.679151061173534,4.063670411985019,6.866416978776529,6.117353308364544,2.259675405742821,1.9725343320848938,1.7852684144818978,3.1897627965043696,5.168539325842697,1.3607990012484397,2.4032459425717856,6.073657927590512,5.0062421972534334,2.33458177278402,3.6329588014981273,2.2659176029962547,7.553058676654182,5.393258426966292,1.6354556803995006,1.7790262172284643,5.948813982521848,5.012484394506866,2.715355805243446,2.0599250936329585,2.2908863920099876,7.116104868913857,4.207240948813983,2.602996254681648,5.7802746566791505,4.269662921348314,4.700374531835206,5.312109862671661,7.428214731585518,2.865168539325843,4.575530586766542,5.181023720349563,6.554307116104869,7.17852684144819,4.456928838951311,3.2771535580524347,4.300873907615481,4.413233458177278,2.8152309612983775,7.0536828963795255,4.594257178526841,3.4269662921348316,6.803995006242197,2.9151061173533086,4.51310861423221,5.062421972534332,5.424469413233458,6.741573033707866,4.818976279650437,6.991260923845194,7.0536828963795255,5.081148564294631,3.8389513108614235,2.066167290886392,2.8464419475655434,7.49063670411985,4.750312109862672,4.038701622971286,1.9538077403245941,7.365792759051186,5.212234706616729,6.242197253433209,2.852684144818976,4.712858926342073,4.413233458177278,6.741573033707866,1.5480649188514357,3.3021223470661676,3.033707865168539,3.689138576779026,6.803995006242197,2.2222222222222223,6.217228464419476,5.586766541822722,5.205992509363296, +5.056179775280899,6.616729088639201,3.6579275905118602,6.616729088639201,4.7440699126092385,4.769038701622971,1.710362047440699,4.51310861423221,2.272159800249688,3.9637952559300875,4.644194756554308,2.5842696629213484,1.404494382022472,1.6229712858926344,2.777777777777778,7.17852684144819,5.9113607990012484,4.18227215980025,3.089887640449438,2.6529338327091136,5.230961298377029,6.679151061173534,4.0886392009987516,6.928838951310862,6.1485642946317105,2.2908863920099876,2.00374531835206,1.8102372034956304,3.2209737827715355,5.19350811485643,1.3857677902621723,2.4406991260923845,6.092384519350812,5.024968789013733,2.35330836454432,3.6579275905118602,2.303370786516854,7.615480649188515,5.418227215980025,1.6541822721598003,1.8039950062421974,5.97378277153558,5.0374531835206,2.746566791510612,2.091136079900125,2.322097378277154,7.17852684144819,4.244694132334582,2.640449438202247,5.811485642946318,4.294631710362047,4.737827715355805,5.337078651685393,7.428214731585518,2.8901373283395753,4.594257178526841,5.212234706616729,6.616729088639201,7.17852684144819,4.4818976279650435,3.3021223470661676,4.31960049937578,4.444444444444445,2.8339575530586765,7.0536828963795255,4.619225967540574,3.4456928838951315,6.866416978776529,2.9400749063670415,4.538077403245943,5.093632958801498,5.461922596754057,6.803995006242197,4.850187265917603,6.991260923845194,7.0536828963795255,5.099875156054932,3.870162297128589,2.091136079900125,2.8776529338327093,7.49063670411985,4.781523096129837,4.069912609238452,1.9725343320848938,7.365792759051186,5.230961298377029,6.30461922596754,2.8838951310861427,4.737827715355805,4.444444444444445,6.803995006242197,1.5730337078651684,3.3333333333333335,3.058676654182272,3.7203495630461925,6.803995006242197,2.259675405742821,6.242197253433209,5.611735330836455,5.230961298377029, +5.081148564294631,6.616729088639201,3.689138576779026,6.616729088639201,4.775280898876405,4.794007490636704,1.735330836454432,4.538077403245943,2.2971285892634206,3.982521847690387,4.66916354556804,2.6092384519350813,1.4232209737827717,1.6541822721598003,2.8027465667915106,7.240948813982522,5.942571785268415,4.213483146067416,3.114856429463171,2.671660424469413,5.262172284644195,6.741573033707866,4.1136079900124844,6.928838951310862,6.179775280898876,2.3158551810237205,2.034956304619226,1.8352059925093633,3.2521847690387014,5.218476903870163,1.410736579275905,2.471910112359551,6.111111111111111,5.049937578027466,2.3782771535580522,3.682896379525593,2.33458177278402,7.615480649188515,5.443196004993759,1.6791510611735332,1.8227215980024971,5.992509363295881,5.068664169787765,2.777777777777778,2.1161048689138577,2.3470661672908864,7.17852684144819,4.275905118601748,2.671660424469413,5.842696629213483,4.325842696629214,4.769038701622971,5.3620474406991265,7.49063670411985,2.9151061173533086,4.612983770287141,5.243445692883895,6.616729088639201,7.240948813982522,4.51310861423221,3.320848938826467,4.33832709113608,4.4818976279650435,2.8589263420724094,7.116104868913857,4.637952559300874,3.470661672908864,6.866416978776529,2.965043695380774,4.563046192259676,5.118601747815231,5.493133583021224,6.803995006242197,4.875156054931336,7.0536828963795255,7.0536828963795255,5.1248439450686645,3.9076154806491883,2.1161048689138577,2.9151061173533086,7.553058676654182,4.812734082397004,4.107365792759051,1.9975031210986267,7.428214731585518,5.2559300873907615,6.30461922596754,2.9151061173533086,4.762796504369538,4.475655430711611,6.803995006242197,1.5980024968789013,3.3645443196004994,3.0836454431960054,3.7515605493133584,6.866416978776529,2.2908863920099876,6.30461922596754,5.636704119850187,5.2559300873907615, +5.1123595505617985,6.679151061173534,3.7265917602996255,6.679151061173534,4.800249687890138,4.818976279650437,1.7602996254681649,4.563046192259676,2.328339575530587,4.00749063670412,4.687890137328339,2.640449438202247,1.4481897627965044,1.6853932584269664,2.8277153558052435,7.240948813982522,5.97378277153558,4.238451935081149,3.139825218476904,2.696629213483146,5.287141073657928,6.741573033707866,4.132334581772784,6.991260923845194,6.20474406991261,2.3470661672908864,2.066167290886392,1.8601747815230962,3.2833957553058677,5.243445692883895,1.435705368289638,2.5031210986267167,6.1360799001248445,5.068664169787765,2.397003745318352,3.7078651685393256,2.3720349563046192,7.677902621722847,5.468164794007491,1.6978776529338326,1.8476903870162298,6.0174781523096135,5.093632958801498,2.808988764044944,2.1473158551810236,2.3720349563046192,7.240948813982522,4.307116104868914,2.7091136079900124,5.867665418227216,4.3508114856429465,4.806491885143571,5.393258426966292,7.553058676654182,2.9400749063670415,4.637952559300874,5.268414481897628,6.679151061173534,7.240948813982522,4.538077403245943,3.339575530586767,4.3632958801498125,4.51310861423221,2.8776529338327093,7.116104868913857,4.662921348314606,3.4893882646691634,6.866416978776529,2.990012484394507,4.588014981273409,5.149812734082397,5.524344569288389,6.803995006242197,4.900124843945068,7.0536828963795255,7.116104868913857,5.143570536828964,3.938826466916354,2.1410736579275906,2.9463171036204745,7.615480649188515,4.843945068664169,4.138576779026217,2.016229712858926,7.428214731585518,5.280898876404494,6.367041198501872,2.9463171036204745,4.787765293383271,4.51310861423221,6.866416978776529,1.616729088639201,3.3957553058676653,3.114856429463171,3.7890137328339577,6.928838951310862,2.328339575530587,6.30461922596754,5.66167290886392,5.274656679151062, +5.143570536828964,6.679151061173534,3.7578027465667914,6.679151061173534,4.825218476903871,4.837702871410737,1.7790262172284643,4.588014981273409,2.359550561797753,4.032459425717852,4.712858926342073,2.671660424469413,1.4731585518102372,1.7166042446941323,2.852684144818976,7.303370786516854,6.004993757802747,4.269662921348314,3.1647940074906367,2.715355805243446,5.318352059925093,6.803995006242197,4.157303370786517,6.991260923845194,6.235955056179775,2.3782771535580522,2.091136079900125,1.8851435705368291,3.3146067415730336,5.268414481897628,1.4606741573033708,2.5405742821473156,6.154806491885144,5.093632958801498,2.4219725343320846,3.7265917602996255,2.4032459425717856,7.677902621722847,5.493133583021224,1.7166042446941323,1.8726591760299625,6.036204744069912,5.118601747815231,2.8464419475655434,2.1785268414481895,2.4032459425717856,7.240948813982522,4.344569288389513,2.740324594257179,5.8988764044943816,4.382022471910113,4.837702871410737,5.418227215980025,7.553058676654182,2.965043695380774,4.656679151061174,5.299625468164794,6.679151061173534,7.303370786516854,4.563046192259676,3.3583021223470664,4.382022471910113,4.544319600499376,2.902621722846442,7.17852684144819,4.687890137328339,3.5143570536828963,6.928838951310862,3.0149812734082393,4.612983770287141,5.181023720349563,5.555555555555556,6.866416978776529,4.931335830212235,7.116104868913857,7.116104868913857,5.168539325842697,3.9762796504369535,2.1660424469413235,2.9837702871410734,7.615480649188515,4.875156054931336,4.169787765293384,2.0411985018726595,7.49063670411985,5.305867665418227,6.367041198501872,2.977528089887641,4.812734082397004,4.544319600499376,6.866416978776529,1.6416978776529338,3.4269662921348316,3.139825218476904,3.8202247191011236,6.928838951310862,2.359550561797753,6.367041198501872,5.686641697877653,5.299625468164794, +5.174781523096129,6.741573033707866,3.7890137328339577,6.679151061173534,4.850187265917603,4.8626716604244695,1.8039950062421974,4.619225967540574,2.3845193508114857,4.051186017478152,4.7315855181023725,2.702871410736579,1.4918851435705367,1.7478152309612984,2.8776529338327093,7.303370786516854,6.036204744069912,4.300873907615481,3.183520599250936,2.740324594257179,5.34956304619226,6.803995006242197,4.18227215980025,7.0536828963795255,6.242197253433209,2.4032459425717856,2.122347066167291,1.9101123595505618,3.3458177278401995,5.293383270911361,1.4856429463171037,2.571785268414482,6.179775280898876,5.118601747815231,2.446941323345818,3.7515605493133584,2.4406991260923845,7.740324594257178,5.5181023720349565,1.7415730337078652,1.8976279650436954,6.061173533083646,5.149812734082397,2.8776529338327093,2.209737827715356,2.428214731585518,7.303370786516854,4.375780274656679,2.7715355805243447,5.930087390761548,4.406991260923846,4.875156054931336,5.443196004993759,7.615480649188515,2.990012484394507,4.675405742821473,5.324594257178527,6.741573033707866,7.303370786516854,4.594257178526841,3.3770287141073654,4.400749063670412,4.575530586766542,2.9275905118601746,7.17852684144819,4.70661672908864,3.533083645443196,6.928838951310862,3.033707865168539,4.637952559300874,5.212234706616729,5.593008739076155,6.866416978776529,4.956304619225968,7.116104868913857,7.116104868913857,5.187265917602996,4.00749063670412,2.1910112359550564,3.0212234706616727,7.677902621722847,4.906367041198502,4.207240948813983,2.0599250936329585,7.49063670411985,5.33083645443196,6.367041198501872,3.0024968789013733,4.837702871410737,4.575530586766542,6.928838951310862,1.6666666666666667,3.4581772784019975,3.1647940074906367,3.8514357053682895,6.991260923845194,2.397003745318352,6.367041198501872,5.711610486891385,5.324594257178527, +5.205992509363296,6.803995006242197,3.826466916354557,6.741573033707866,4.875156054931336,4.887640449438202,1.8289637952559301,4.644194756554308,2.4157303370786516,4.0761548064918856,4.750312109862672,2.727840199750312,1.5168539325842696,1.772784019975031,2.902621722846442,7.365792759051186,6.067415730337078,4.332084893882647,3.2084893882646695,2.7590511860174782,5.3745318352059925,6.866416978776529,4.207240948813983,7.0536828963795255,6.30461922596754,2.4344569288389515,2.153558052434457,1.9350811485642945,3.383270911360799,5.318352059925093,1.5106117353308364,2.6092384519350813,6.198501872659176,5.1373283395755305,2.4656679151061174,3.776529338327091,2.471910112359551,7.740324594257178,5.543071161048689,1.7602996254681649,1.9225967540574282,6.079900124843945,5.174781523096129,2.908863920099875,2.2347066167290888,2.453183520599251,7.303370786516854,4.413233458177278,2.808988764044944,5.961298377028713,4.438202247191011,4.906367041198502,5.468164794007491,7.615480649188515,3.0087390761548067,4.700374531835206,5.355805243445693,6.803995006242197,7.303370786516854,4.619225967540574,3.3957553058676653,4.425717852684145,4.606741573033708,2.9463171036204745,7.240948813982522,4.7315855181023725,3.5580524344569286,6.991260923845194,3.058676654182272,4.662921348314606,5.243445692883895,5.6242197253433215,6.866416978776529,4.987515605493134,7.17852684144819,7.17852684144819,5.205992509363296,4.044943820224719,2.215980024968789,3.0524344569288386,7.740324594257178,4.937578027465668,4.238451935081149,2.084893882646692,7.553058676654182,5.355805243445693,6.429463171036204,3.033707865168539,4.8626716604244695,4.606741573033708,6.928838951310862,1.6916354556803994,3.4893882646691634,3.1897627965043696,3.888888888888889,7.0536828963795255,2.428214731585518,6.367041198501872,5.736579275905119,5.34956304619226, +5.237203495630462,6.803995006242197,3.857677902621723,6.741573033707866,4.900124843945068,4.906367041198502,1.8476903870162298,4.66916354556804,2.446941323345818,4.1011235955056184,4.775280898876405,2.7590511860174782,1.5418227215980027,1.8039950062421974,2.9275905118601746,7.365792759051186,6.092384519350812,4.3632958801498125,3.233458177278402,2.777777777777778,5.405742821473158,6.866416978776529,4.2322097378277155,7.116104868913857,6.30461922596754,2.4656679151061174,2.184769038701623,1.9600499375780276,3.4144818976279647,5.343320848938826,1.5355805243445693,2.640449438202247,6.223470661672909,5.162297128589263,2.4906367041198503,3.7952559300873907,2.5093632958801497,7.740324594257178,5.561797752808988,1.7790262172284643,1.9475655430711611,6.104868913857677,5.199750312109863,2.9400749063670415,2.2659176029962547,2.478152309612984,7.365792759051186,4.444444444444445,2.84019975031211,5.986267166042447,4.4694132334581775,4.937578027465668,5.493133583021224,7.677902621722847,3.033707865168539,4.719101123595506,5.380774032459426,6.803995006242197,7.365792759051186,4.644194756554308,3.4144818976279647,4.444444444444445,4.637952559300874,2.9712858926342074,7.240948813982522,4.750312109862672,3.576779026217228,6.991260923845194,3.0836454431960054,4.687890137328339,5.274656679151062,5.655430711610487,6.928838951310862,5.012484394506866,7.17852684144819,7.17852684144819,5.230961298377029,4.0761548064918856,2.2409488139825218,3.089887640449438,7.740324594257178,4.9687890137328345,4.269662921348314,2.1036204744069913,7.553058676654182,5.3745318352059925,6.429463171036204,3.0649188514357055,4.887640449438202,4.637952559300874,6.928838951310862,1.7166042446941323,3.5205992509363297,3.2209737827715355,3.920099875156055,7.0536828963795255,2.459425717852684,6.429463171036204,5.761548064918852,5.36828963795256, +5.268414481897628,6.866416978776529,3.888888888888889,6.803995006242197,4.925093632958801,4.931335830212235,1.8726591760299625,4.694132334581773,2.478152309612984,4.119850187265917,4.794007490636704,2.790262172284644,1.5605493133583022,1.8352059925093633,2.9525593008739075,7.428214731585518,6.123595505617978,4.394506866416979,3.258426966292135,2.8027465667915106,5.436953807740325,6.928838951310862,4.257178526841448,7.116104868913857,6.367041198501872,2.4906367041198503,2.215980024968789,1.9850187265917605,3.4456928838951315,5.36828963795256,1.5605493133583022,2.671660424469413,6.242197253433209,5.181023720349563,2.5093632958801497,3.8202247191011236,2.5405742821473156,7.8027465667915115,5.586766541822722,1.797752808988764,1.9662921348314608,6.129837702871411,5.224719101123595,2.977528089887641,2.2971285892634206,2.5093632958801497,7.365792759051186,4.475655430711611,2.871410736579276,6.0174781523096135,4.49438202247191,4.975031210986267,5.524344569288389,7.677902621722847,3.058676654182272,4.737827715355805,5.411985018726591,6.866416978776529,7.365792759051186,4.675405742821473,3.4332084893882646,4.463171036204744,4.66916354556804,2.990012484394507,7.303370786516854,4.775280898876405,3.6017478152309614,6.991260923845194,3.108614232209738,4.712858926342073,5.305867665418227,5.686641697877653,6.928838951310862,5.0374531835206,7.240948813982522,7.17852684144819,5.249687890137328,4.107365792759051,2.2659176029962547,3.1210986267166043,7.8027465667915115,5.0,4.307116104868914,2.128589263420724,7.615480649188515,5.399500624219725,6.491885143570538,3.0961298377028714,4.912609238451935,4.675405742821473,6.991260923845194,1.7415730337078652,3.5518102372034956,3.245942571785269,3.951310861423221,7.116104868913857,2.4968789013732833,6.429463171036204,5.792759051186017,5.393258426966292, +5.299625468164794,6.866416978776529,3.926342072409488,6.803995006242197,4.950062421972534,4.950062421972534,1.8976279650436954,4.719101123595506,2.5031210986267167,4.144818976279651,4.818976279650437,2.8152309612983775,1.585518102372035,1.8664169787765295,2.977528089887641,7.428214731585518,6.154806491885144,4.425717852684145,3.2833957553058677,2.82147315855181,5.461922596754057,6.928838951310862,4.282147315855181,7.17852684144819,6.367041198501872,2.521847690387016,2.2409488139825218,2.009987515605493,3.4769038701622974,5.393258426966292,1.585518102372035,2.7091136079900124,6.242197253433209,5.205992509363296,2.5343320848938826,3.8451935081148565,2.578027465667915,7.8027465667915115,5.611735330836455,1.8227215980024971,1.9912609238451935,6.1485642946317105,5.2559300873907615,3.0087390761548067,2.322097378277154,2.5343320848938826,7.428214731585518,4.51310861423221,2.908863920099875,6.048689138576779,4.525593008739076,5.0062421972534334,5.549313358302123,7.740324594257178,3.0836454431960054,4.762796504369538,5.436953807740325,6.866416978776529,7.428214731585518,4.700374531835206,3.451935081148564,4.488139825218477,4.700374531835206,3.0149812734082393,7.303370786516854,4.794007490636704,3.620474406991261,7.0536828963795255,3.1335830212234708,4.737827715355805,5.337078651685393,5.724094881398252,6.991260923845194,5.068664169787765,7.240948813982522,7.240948813982522,5.268414481897628,4.144818976279651,2.2908863920099876,3.1585518102372037,7.8027465667915115,5.031210986267166,4.33832709113608,2.1473158551810236,7.615480649188515,5.424469413233458,6.491885143570538,3.1273408239700373,4.937578027465668,4.70661672908864,6.991260923845194,1.7602996254681649,3.5830212234706615,3.2709113607990012,3.9887640449438204,7.17852684144819,2.5280898876404496,6.491885143570538,5.81772784019975,5.418227215980025, +5.324594257178527,6.928838951310862,3.957553058676654,6.866416978776529,4.975031210986267,4.975031210986267,1.916354556803995,4.750312109862672,2.5343320848938826,4.169787765293384,4.837702871410737,2.8464419475655434,1.6104868913857677,1.8976279650436954,3.0024968789013733,7.49063670411985,6.186017478152309,4.456928838951311,3.3083645443196006,2.8464419475655434,5.493133583021224,6.991260923845194,4.307116104868914,7.17852684144819,6.429463171036204,2.5530586766541825,2.272159800249688,2.034956304619226,3.508114856429463,5.418227215980025,1.6104868913857677,2.740324594257179,6.30461922596754,5.224719101123595,2.5593008739076155,3.870162297128589,2.6092384519350813,7.865168539325843,5.636704119850187,1.8414481897627966,2.016229712858926,6.173533083645444,5.280898876404494,3.0399500624219726,2.35330836454432,2.5593008739076155,7.428214731585518,4.544319600499376,2.9400749063670415,6.079900124843945,4.55056179775281,5.043695380774032,5.574282147315855,7.8027465667915115,3.108614232209738,4.781523096129837,5.468164794007491,6.928838951310862,7.428214731585518,4.725343320848939,3.4769038701622974,4.506866416978776,4.7315855181023725,3.033707865168539,7.365792759051186,4.818976279650437,3.6454431960049942,7.0536828963795255,3.1585518102372037,4.762796504369538,5.36828963795256,5.7553058676654185,6.991260923845194,5.093632958801498,7.303370786516854,7.240948813982522,5.293383270911361,4.176029962546816,2.3158551810237205,3.1960049937578026,7.865168539325843,5.062421972534332,4.375780274656679,2.1722846441947565,7.677902621722847,5.449438202247191,6.491885143570538,3.1585518102372037,4.962546816479401,4.737827715355805,7.0536828963795255,1.7852684144818978,3.6142322097378274,3.3021223470661676,4.019975031210986,7.17852684144819,2.565543071161049,6.491885143570538,5.842696629213483,5.436953807740325, +5.355805243445693,6.928838951310862,3.9887640449438204,6.866416978776529,5.0,5.0,1.941323345817728,4.775280898876405,2.565543071161049,4.188514357053683,4.856429463171036,2.8776529338327093,1.6292134831460674,1.9225967540574282,3.027465667915106,7.49063670411985,6.217228464419476,4.488139825218477,3.3333333333333335,2.865168539325843,5.524344569288389,6.991260923845194,4.332084893882647,7.240948813982522,6.429463171036204,2.578027465667915,2.303370786516854,2.0599250936329585,3.5393258426966296,5.443196004993759,1.6354556803995006,2.7715355805243447,6.30461922596754,5.249687890137328,2.578027465667915,3.888888888888889,2.6466916354556806,7.865168539325843,5.66167290886392,1.8601747815230962,2.0411985018726595,6.192259675405743,5.305867665418227,3.0711610486891385,2.3845193508114857,2.5905118601747814,7.49063670411985,4.575530586766542,2.977528089887641,6.104868913857677,4.581772784019975,5.074906367041199,5.599250936329588,7.8027465667915115,3.1335830212234708,4.800249687890138,5.493133583021224,6.991260923845194,7.428214731585518,4.750312109862672,3.495630461922597,4.525593008739076,4.762796504369538,3.058676654182272,7.365792759051186,4.843945068664169,3.6641697877652937,7.0536828963795255,3.183520599250936,4.787765293383271,5.399500624219725,5.786516853932584,6.991260923845194,5.118601747815231,7.303370786516854,7.240948813982522,5.312109862671661,4.213483146067416,2.340823970037453,3.227215980024969,7.927590511860175,5.087390761548065,4.406991260923846,2.1910112359550564,7.677902621722847,5.474406991260924,6.554307116104869,3.1897627965043696,4.987515605493134,4.769038701622971,7.0536828963795255,1.8102372034956304,3.6454431960049942,3.3270911360799,4.051186017478152,7.240948813982522,2.596754057428215,6.554307116104869,5.867665418227216,5.461922596754057, +5.3870162297128585,6.991260923845194,4.02621722846442,6.928838951310862,5.024968789013733,5.0187265917602994,1.9662921348314608,4.800249687890138,2.596754057428215,4.213483146067416,4.881398252184769,2.908863920099875,1.6541822721598003,1.9538077403245941,3.0524344569288386,7.553058676654182,6.242197253433209,4.519350811485642,3.3583021223470664,2.8901373283395753,5.549313358302123,7.0536828963795255,4.3508114856429465,7.240948813982522,6.491885143570538,2.6092384519350813,2.33458177278402,2.084893882646692,3.5705368289637955,5.468164794007491,1.6541822721598003,2.808988764044944,6.30461922596754,5.274656679151062,2.602996254681648,3.9138576779026217,2.6779026217228465,7.927590511860175,5.686641697877653,1.8851435705368291,2.066167290886392,6.217228464419476,5.337078651685393,3.108614232209738,2.4157303370786516,2.6154806491885143,7.49063670411985,4.612983770287141,3.0087390761548067,6.1360799001248445,4.606741573033708,5.1123595505617985,5.6242197253433215,7.865168539325843,3.15230961298377,4.825218476903871,5.524344569288389,6.991260923845194,7.49063670411985,4.781523096129837,3.5143570536828963,4.55056179775281,4.794007490636704,3.0836454431960054,7.428214731585518,4.8626716604244695,3.689138576779026,7.116104868913857,3.2084893882646695,4.812734082397004,5.430711610486892,5.81772784019975,7.0536828963795255,5.149812734082397,7.365792759051186,7.303370786516854,5.33083645443196,4.244694132334582,2.3657927590511862,3.2646691635455682,7.927590511860175,5.118601747815231,4.438202247191011,2.215980024968789,7.740324594257178,5.499375780274657,6.554307116104869,3.2209737827715355,5.012484394506866,4.800249687890138,7.116104868913857,1.8352059925093633,3.6766541822721597,3.352059925093633,4.082397003745319,7.240948813982522,2.634207240948814,6.554307116104869,5.892634207240949,5.48689138576779, +5.418227215980025,6.991260923845194,4.057428214731585,6.928838951310862,5.049937578027466,5.043695380774032,1.9850187265917605,4.825218476903871,2.6217228464419473,4.238451935081149,4.900124843945068,2.933832709113608,1.6791510611735332,1.9850187265917605,3.077403245942572,7.553058676654182,6.30461922596754,4.55056179775281,3.383270911360799,2.908863920099875,5.580524344569288,7.0536828963795255,4.375780274656679,7.303370786516854,6.491885143570538,2.640449438202247,2.3657927590511862,2.1098626716604243,3.6017478152309614,5.493133583021224,1.6791510611735332,2.84019975031211,6.367041198501872,5.293383270911361,2.6217228464419473,3.938826466916354,2.715355805243446,7.927590511860175,5.711610486891385,1.9038701622971288,2.091136079900125,6.235955056179775,5.3620474406991265,3.139825218476904,2.4406991260923845,2.640449438202247,7.553058676654182,4.644194756554308,3.0399500624219726,6.167290886392011,4.637952559300874,5.143570536828964,5.655430711610487,7.865168539325843,3.1772784019975036,4.843945068664169,5.555555555555556,7.0536828963795255,7.49063670411985,4.806491885143571,3.533083645443196,4.569288389513109,4.831460674157303,3.102372034956305,7.428214731585518,4.887640449438202,3.7078651685393256,7.116104868913857,3.233458177278402,4.837702871410737,5.461922596754057,5.855181023720349,7.0536828963795255,5.174781523096129,7.365792759051186,7.303370786516854,5.355805243445693,4.282147315855181,2.3907615480649187,3.295880149812734,7.990012484394507,5.149812734082397,4.475655430711611,2.2347066167290888,7.740324594257178,5.524344569288389,6.616729088639201,3.2521847690387014,5.0374531835206,4.831460674157303,7.116104868913857,1.8601747815230962,3.701622971285893,3.3770287141073654,4.119850187265917,7.303370786516854,2.66541822721598,6.616729088639201,5.917602996254682,5.511860174781523, +5.449438202247191,7.0536828963795255,4.094881398252185,6.928838951310862,5.074906367041199,5.068664169787765,2.009987515605493,4.850187265917603,2.6529338327091136,4.257178526841448,4.925093632958801,2.965043695380774,1.6978776529338326,2.016229712858926,3.102372034956305,7.615480649188515,6.30461922596754,4.581772784019975,3.408239700374532,2.933832709113608,5.611735330836455,7.116104868913857,4.400749063670412,7.303370786516854,6.554307116104869,2.66541822721598,2.397003745318352,2.134831460674157,3.6329588014981273,5.5181023720349565,1.704119850187266,2.8776529338327093,6.367041198501872,5.318352059925093,2.6466916354556806,3.9637952559300875,2.752808988764045,7.990012484394507,5.730337078651686,1.9225967540574282,2.1161048689138577,6.242197253433209,5.3870162297128585,3.17103620474407,2.471910112359551,2.671660424469413,7.553058676654182,4.675405742821473,3.077403245942572,6.198501872659176,4.66916354556804,5.174781523096129,5.68039950062422,7.927590511860175,3.202247191011236,4.868913857677903,5.580524344569288,7.0536828963795255,7.553058676654182,4.831460674157303,3.5518102372034956,4.588014981273409,4.8626716604244695,3.1273408239700373,7.428214731585518,4.906367041198502,3.732833957553059,7.116104868913857,3.258426966292135,4.8626716604244695,5.493133583021224,5.8863920099875156,7.0536828963795255,5.199750312109863,7.428214731585518,7.303370786516854,5.3745318352059925,4.313358302122348,2.4157303370786516,3.3333333333333335,7.990012484394507,5.181023720349563,4.506866416978776,2.259675405742821,7.8027465667915115,5.543071161048689,6.616729088639201,3.2833957553058677,5.062421972534332,4.868913857677903,7.17852684144819,1.8851435705368291,3.732833957553059,3.408239700374532,4.151061173533084,7.365792759051186,2.696629213483146,6.616729088639201,5.942571785268415,5.5305867665418225, +5.480649188514358,7.0536828963795255,4.1260923845193505,6.991260923845194,5.099875156054932,5.087390761548065,2.034956304619226,4.881398252184769,2.68414481897628,4.282147315855181,4.943820224719102,2.9962546816479403,1.7228464419475658,2.0474406991260925,3.1210986267166043,7.615480649188515,6.367041198501872,4.612983770287141,3.4332084893882646,2.9525593008739075,5.636704119850187,7.116104868913857,4.425717852684145,7.365792759051186,6.554307116104869,2.696629213483146,2.4219725343320846,2.15980024968789,3.6641697877652937,5.543071161048689,1.7290886392009988,2.908863920099875,6.367041198501872,5.337078651685393,2.671660424469413,3.982521847690387,2.7840199750312107,7.990012484394507,5.7553058676654185,1.9475655430711611,2.134831460674157,6.30461922596754,5.411985018726591,3.202247191011236,2.5031210986267167,2.696629213483146,7.615480649188515,4.712858926342073,3.108614232209738,6.223470661672909,4.694132334581773,5.212234706616729,5.705368289637952,7.927590511860175,3.227215980024969,4.887640449438202,5.611735330836455,7.116104868913857,7.553058676654182,4.8626716604244695,3.5705368289637955,4.612983770287141,4.893882646691636,3.1460674157303368,7.49063670411985,4.931335830212235,3.7515605493133584,7.17852684144819,3.2771535580524347,4.887640449438202,5.5181023720349565,5.917602996254682,7.116104868913857,5.230961298377029,7.428214731585518,7.365792759051186,5.393258426966292,4.3508114856429465,2.4406991260923845,3.3645443196004994,8.05243445692884,5.212234706616729,4.538077403245943,2.278401997503121,7.8027465667915115,5.568039950062421,6.616729088639201,3.3146067415730336,5.087390761548065,4.900124843945068,7.17852684144819,1.9101123595505618,3.764044943820225,3.4332084893882646,4.18227215980025,7.365792759051186,2.7340823970037453,6.679151061173534,5.967540574282147,5.555555555555556, +5.511860174781523,7.116104868913857,4.157303370786517,6.991260923845194,5.1248439450686645,5.1123595505617985,2.0536828963795255,4.906367041198502,2.715355805243446,4.307116104868914,4.9687890137328345,3.027465667915106,1.7478152309612984,2.0724094881398254,3.1460674157303368,7.677902621722847,6.367041198501872,4.644194756554308,3.4581772784019975,2.977528089887641,5.667915106117353,7.17852684144819,4.450686641697877,7.365792759051186,6.616729088639201,2.727840199750312,2.453183520599251,2.184769038701623,3.6953807740324596,5.568039950062421,1.7540574282147314,2.9400749063670415,6.429463171036204,5.3620474406991265,2.690387016229713,4.00749063670412,2.82147315855181,8.05243445692884,5.7802746566791505,1.9662921348314608,2.15980024968789,6.30461922596754,5.443196004993759,3.2397003745318353,2.5280898876404496,2.7215980024968793,7.615480649188515,4.7440699126092385,3.1460674157303368,6.242197253433209,4.725343320848939,5.243445692883895,5.730337078651686,7.990012484394507,3.2521847690387014,4.906367041198502,5.636704119850187,7.17852684144819,7.553058676654182,4.887640449438202,3.589263420724095,4.631710362047441,4.925093632958801,3.17103620474407,7.49063670411985,4.956304619225968,3.776529338327091,7.17852684144819,3.3021223470661676,4.912609238451935,5.549313358302123,5.948813982521848,7.116104868913857,5.2559300873907615,7.49063670411985,7.365792759051186,5.418227215980025,4.382022471910113,2.4656679151061174,3.4019975031210987,8.11485642946317,5.243445692883895,4.575530586766542,2.303370786516854,7.865168539325843,5.593008739076155,6.679151061173534,3.3458177278401995,5.118601747815231,4.931335830212235,7.240948813982522,1.9288389513108615,3.7952559300873907,3.4581772784019975,4.219725343320849,7.428214731585518,2.7652933832709112,6.679151061173534,5.998751560549313,5.580524344569288, +5.543071161048689,7.116104868913857,4.194756554307116,7.0536828963795255,5.149812734082397,5.1373283395755305,2.0786516853932584,4.931335830212235,2.740324594257179,4.325842696629214,4.987515605493134,3.0524344569288386,1.766541822721598,2.1036204744069913,3.17103620474407,7.677902621722847,6.429463171036204,4.675405742821473,3.4831460674157304,2.9962546816479403,5.69912609238452,7.17852684144819,4.475655430711611,7.428214731585518,6.616729088639201,2.752808988764045,2.4843945068664173,2.209737827715356,3.732833957553059,5.593008739076155,1.7790262172284643,2.977528089887641,6.429463171036204,5.380774032459426,2.715355805243446,4.032459425717852,2.852684144818976,8.05243445692884,5.805243445692884,1.9850187265917605,2.184769038701623,6.30461922596754,5.468164794007491,3.2709113607990012,2.5593008739076155,2.752808988764045,7.677902621722847,4.781523096129837,3.1772784019975036,6.30461922596754,4.750312109862672,5.280898876404494,5.7553058676654185,8.05243445692884,3.2709113607990012,4.931335830212235,5.667915106117353,7.17852684144819,7.615480649188515,4.912609238451935,3.607990012484395,4.65043695380774,4.956304619225968,3.1960049937578026,7.553058676654182,4.975031210986267,3.7952559300873907,7.17852684144819,3.3270911360799,4.937578027465668,5.580524344569288,5.980024968789014,7.17852684144819,5.280898876404494,7.49063670411985,7.365792759051186,5.436953807740325,4.419475655430712,2.4906367041198503,3.439450686641698,8.11485642946317,5.274656679151062,4.606741573033708,2.322097378277154,7.865168539325843,5.617977528089888,6.679151061173534,3.3770287141073654,5.143570536828964,4.962546816479401,7.240948813982522,1.9538077403245941,3.826466916354557,3.4831460674157304,4.250936329588015,7.49063670411985,2.8027465667915106,6.741573033707866,6.023720349563047,5.605493133583021, +5.574282147315855,7.17852684144819,4.225967540574282,7.0536828963795255,5.174781523096129,5.15605493133583,2.1036204744069913,4.956304619225968,2.7715355805243447,4.3508114856429465,5.0062421972534334,3.0836454431960054,1.7915106117353308,2.134831460674157,3.1960049937578026,7.677902621722847,6.429463171036204,4.70661672908864,3.508114856429463,3.0212234706616727,5.724094881398252,7.240948813982522,4.500624219725343,7.428214731585518,6.616729088639201,2.7840199750312107,2.515605493133583,2.2347066167290888,3.764044943820225,5.617977528089888,1.8039950062421974,3.0087390761548067,6.429463171036204,5.405742821473158,2.7340823970037453,4.051186017478152,2.8901373283395753,8.11485642946317,5.830212234706617,2.00374531835206,2.209737827715356,6.367041198501872,5.493133583021224,3.3021223470661676,2.5905118601747814,2.777777777777778,7.677902621722847,4.812734082397004,3.2084893882646695,6.30461922596754,4.781523096129837,5.312109862671661,5.786516853932584,8.05243445692884,3.295880149812734,4.950062421972534,5.692883895131087,7.240948813982522,7.615480649188515,4.943820224719102,3.6267166042446943,4.675405742821473,4.987515605493134,3.214731585518102,7.553058676654182,5.0,3.8202247191011236,7.240948813982522,3.352059925093633,4.962546816479401,5.611735330836455,6.0174781523096135,7.17852684144819,5.312109862671661,7.553058676654182,7.428214731585518,5.455680399500624,4.450686641697877,2.515605493133583,3.470661672908864,8.177278401997503,5.305867665418227,4.637952559300874,2.340823970037453,7.927590511860175,5.64294631710362,6.741573033707866,3.408239700374532,5.168539325842697,4.9937578027465666,7.303370786516854,1.978776529338327,3.857677902621723,3.5143570536828963,4.282147315855181,7.49063670411985,2.8339575530586765,6.741573033707866,6.048689138576779,5.6242197253433215, +5.599250936329588,7.17852684144819,4.257178526841448,7.116104868913857,5.199750312109863,5.181023720349563,2.122347066167291,4.987515605493134,2.8027465667915106,4.375780274656679,5.031210986267166,3.114856429463171,1.8102372034956304,2.1660424469413235,3.2209737827715355,7.740324594257178,6.491885143570538,4.737827715355805,3.5268414481897628,3.0399500624219726,5.7553058676654185,7.240948813982522,4.525593008739076,7.49063670411985,6.679151061173534,2.8152309612983775,2.546816479400749,2.259675405742821,3.7952559300873907,5.64294631710362,1.8289637952559301,3.0399500624219726,6.491885143570538,5.430711610486892,2.7590511860174782,4.0761548064918856,2.9213483146067416,8.11485642946317,5.855181023720349,2.0287141073657926,2.2347066167290888,6.367041198501872,5.524344569288389,3.3333333333333335,2.6217228464419473,2.8027465667915106,7.740324594257178,4.843945068664169,3.245942571785269,6.367041198501872,4.806491885143571,5.343320848938826,5.811485642946318,8.11485642946317,3.320848938826467,4.9687890137328345,5.724094881398252,7.240948813982522,7.677902621722847,4.9687890137328345,3.651685393258427,4.694132334581773,5.0187265917602994,3.2397003745318353,7.615480649188515,5.0187265917602994,3.8389513108614235,7.240948813982522,3.3770287141073654,4.987515605493134,5.64294631710362,6.048689138576779,7.17852684144819,5.337078651685393,7.553058676654182,7.428214731585518,5.480649188514358,4.488139825218477,2.5405742821473156,3.508114856429463,8.239700374531834,5.337078651685393,4.675405742821473,2.3657927590511862,7.927590511860175,5.667915106117353,6.741573033707866,3.439450686641698,5.19350811485643,5.031210986267166,7.303370786516854,2.00374531835206,3.888888888888889,3.5393258426966296,4.31960049937578,7.553058676654182,2.871410736579276,6.803995006242197,6.073657927590512,5.6491885143570535, +5.630461922596755,7.240948813982522,4.294631710362047,7.116104868913857,5.224719101123595,5.205992509363296,2.1473158551810236,5.012484394506866,2.8339575530586765,4.394506866416979,5.049937578027466,3.139825218476904,1.8352059925093633,2.1910112359550564,3.245942571785269,7.740324594257178,6.491885143570538,4.769038701622971,3.5518102372034956,3.0649188514357055,5.786516853932584,7.303370786516854,4.55056179775281,7.49063670411985,6.679151061173534,2.84019975031211,2.578027465667915,2.2846441947565546,3.826466916354557,5.667915106117353,1.8539325842696628,3.077403245942572,6.491885143570538,5.449438202247191,2.7840199750312107,4.1011235955056184,2.958801498127341,8.177278401997503,5.8739076154806495,2.0474406991260925,2.259675405742821,6.367041198501872,5.549313358302123,3.370786516853933,2.6466916354556806,2.8339575530586765,7.740324594257178,4.881398252184769,3.2771535580524347,6.367041198501872,4.837702871410737,5.380774032459426,5.836454431960051,8.11485642946317,3.3458177278401995,4.9937578027465666,5.749063670411985,7.303370786516854,7.677902621722847,4.9937578027465666,3.6704119850187267,4.712858926342073,5.049937578027466,3.258426966292135,7.615480649188515,5.043695380774032,3.8639200998751564,7.240948813982522,3.4019975031210987,5.012484394506866,5.674157303370786,6.079900124843945,7.240948813982522,5.3620474406991265,7.615480649188515,7.428214731585518,5.499375780274657,4.519350811485642,2.565543071161049,3.5393258426966296,8.239700374531834,5.36828963795256,4.70661672908864,2.3845193508114857,7.990012484394507,5.692883895131087,6.741573033707866,3.470661672908864,5.218476903870163,5.062421972534332,7.365792759051186,2.0287141073657926,3.920099875156055,3.564294631710362,4.3508114856429465,7.553058676654182,2.902621722846442,6.803995006242197,6.098626716604246,5.674157303370786, +5.66167290886392,7.303370786516854,4.325842696629214,7.17852684144819,5.249687890137328,5.224719101123595,2.1722846441947565,5.0374531835206,2.8589263420724094,4.419475655430712,5.074906367041199,3.17103620474407,1.8601747815230962,2.2222222222222223,3.2709113607990012,7.8027465667915115,6.554307116104869,4.800249687890138,3.576779026217228,3.0836454431960054,5.811485642946318,7.303370786516854,4.569288389513109,7.553058676654182,6.741573033707866,2.871410736579276,2.602996254681648,2.309612983770287,3.857677902621723,5.692883895131087,1.8789013732833957,3.108614232209738,6.491885143570538,5.474406991260924,2.8027465667915106,4.1260923845193505,2.990012484394507,8.177278401997503,5.8988764044943816,2.066167290886392,2.278401997503121,6.429463171036204,5.574282147315855,3.4019975031210987,2.6779026217228465,2.8589263420724094,7.8027465667915115,4.912609238451935,3.3146067415730336,6.429463171036204,4.868913857677903,5.411985018726591,5.861423220973783,8.177278401997503,3.370786516853933,5.012484394506866,5.7802746566791505,7.365792759051186,7.677902621722847,5.024968789013733,3.689138576779026,4.737827715355805,5.081148564294631,3.2833957553058677,7.677902621722847,5.068664169787765,3.882646691635456,7.303370786516854,3.4269662921348316,5.0374531835206,5.705368289637952,6.111111111111111,7.240948813982522,5.393258426966292,7.615480649188515,7.49063670411985,5.524344569288389,4.55056179775281,2.5905118601747814,3.576779026217228,8.302122347066168,5.399500624219725,4.737827715355805,2.4094881398252186,7.990012484394507,5.711610486891385,6.803995006242197,3.5018726591760303,5.243445692883895,5.093632958801498,7.365792759051186,2.0536828963795255,3.951310861423221,3.595505617977528,4.382022471910113,7.615480649188515,2.9400749063670415,6.866416978776529,6.123595505617978,5.69912609238452, +5.692883895131087,7.303370786516854,4.357053682896379,7.17852684144819,5.274656679151062,5.249687890137328,2.1910112359550564,5.062421972534332,2.8901373283395753,4.444444444444445,5.093632958801498,3.202247191011236,1.8789013732833957,2.253433208489388,3.295880149812734,7.8027465667915115,6.554307116104869,4.831460674157303,3.6017478152309614,3.102372034956305,5.842696629213483,7.365792759051186,4.594257178526841,7.553058676654182,6.741573033707866,2.902621722846442,2.634207240948814,2.33458177278402,3.888888888888889,5.711610486891385,1.9038701622971288,3.1460674157303368,6.554307116104869,5.493133583021224,2.8277153558052435,4.144818976279651,3.027465667915106,8.239700374531834,5.9238451935081144,2.091136079900125,2.303370786516854,6.429463171036204,5.599250936329588,3.4332084893882646,2.7091136079900124,2.8838951310861427,7.8027465667915115,4.943820224719102,3.3458177278401995,6.429463171036204,4.893882646691636,5.449438202247191,5.8863920099875156,8.177278401997503,3.3957553058676653,5.031210986267166,5.805243445692884,7.365792759051186,7.740324594257178,5.049937578027466,3.7078651685393256,4.7565543071161045,5.1123595505617985,3.3021223470661676,7.677902621722847,5.087390761548065,3.9076154806491883,7.303370786516854,3.451935081148564,5.062421972534332,5.736579275905119,6.1485642946317105,7.240948813982522,5.418227215980025,7.677902621722847,7.49063670411985,5.543071161048689,4.588014981273409,2.6154806491885143,3.6142322097378274,8.302122347066168,5.430711610486892,4.775280898876405,2.428214731585518,8.05243445692884,5.736579275905119,6.803995006242197,3.533083645443196,5.268414481897628,5.1248439450686645,7.365792759051186,2.0724094881398254,3.982521847690387,3.620474406991261,4.413233458177278,7.677902621722847,2.9712858926342074,6.866416978776529,6.1485642946317105,5.717852684144819, +5.724094881398252,7.365792759051186,4.394506866416979,7.240948813982522,5.299625468164794,5.274656679151062,2.215980024968789,5.087390761548065,2.9213483146067416,4.463171036204744,5.118601747815231,3.233458177278402,1.9038701622971288,2.2846441947565546,3.320848938826467,7.865168539325843,6.616729088639201,4.8626716604244695,3.6267166042446943,3.1273408239700373,5.8739076154806495,7.365792759051186,4.619225967540574,7.615480649188515,6.803995006242197,2.9275905118601746,2.66541822721598,2.359550561797753,3.920099875156055,5.736579275905119,1.9288389513108615,3.1772784019975036,6.554307116104869,5.5181023720349565,2.8464419475655434,4.169787765293384,3.058676654182272,8.239700374531834,5.948813982521848,2.1098626716604243,2.328339575530587,6.429463171036204,5.630461922596755,3.464419475655431,2.7340823970037453,2.9151061173533086,7.865168539325843,4.9812734082397006,3.3770287141073654,6.491885143570538,4.925093632958801,5.480649188514358,5.917602996254682,8.239700374531834,3.4144818976279647,5.056179775280899,5.836454431960051,7.428214731585518,7.740324594257178,5.074906367041199,3.7265917602996255,4.775280898876405,5.143570536828964,3.3270911360799,7.740324594257178,5.1123595505617985,3.926342072409488,7.303370786516854,3.4769038701622974,5.081148564294631,5.767790262172285,6.179775280898876,7.303370786516854,5.449438202247191,7.677902621722847,7.49063670411985,5.561797752808988,4.619225967540574,2.640449438202247,3.6454431960049942,8.3645443196005,5.461922596754057,4.806491885143571,2.453183520599251,8.05243445692884,5.761548064918852,6.866416978776529,3.564294631710362,5.293383270911361,5.15605493133583,7.428214731585518,2.097378277153558,4.013732833957553,3.6454431960049942,4.450686641697877,7.677902621722847,3.0024968789013733,6.928838951310862,6.173533083645444,5.742821473158552, +5.7553058676654185,7.365792759051186,4.425717852684145,7.240948813982522,5.324594257178527,5.293383270911361,2.2409488139825218,5.118601747815231,2.9525593008739075,4.488139825218477,5.1373283395755305,3.258426966292135,1.9288389513108615,2.3158551810237205,3.3458177278401995,7.865168539325843,6.616729088639201,4.893882646691636,3.651685393258427,3.1460674157303368,5.8988764044943816,7.428214731585518,4.644194756554308,7.615480649188515,6.803995006242197,2.958801498127341,2.696629213483146,2.3845193508114857,3.951310861423221,5.761548064918852,1.9538077403245941,3.2084893882646695,6.616729088639201,5.536828963795256,2.871410736579276,4.194756554307116,3.0961298377028714,8.302122347066168,5.97378277153558,2.128589263420724,2.35330836454432,6.491885143570538,5.655430711610487,3.5018726591760303,2.7652933832709112,2.9400749063670415,7.865168539325843,5.012484394506866,3.4144818976279647,6.491885143570538,4.950062421972534,5.5181023720349565,5.942571785268415,8.302122347066168,3.439450686641698,5.074906367041199,5.867665418227216,7.428214731585518,7.8027465667915115,5.106117353308365,3.745318352059925,4.800249687890138,5.181023720349563,3.352059925093633,7.740324594257178,5.131086142322098,3.951310861423221,7.365792759051186,3.5018726591760303,5.106117353308365,5.799001248439451,6.210986267166042,7.303370786516854,5.474406991260924,7.740324594257178,7.553058676654182,5.586766541822722,4.656679151061174,2.6591760299625467,3.682896379525593,8.426966292134832,5.493133583021224,4.837702871410737,2.471910112359551,8.11485642946317,5.786516853932584,6.866416978776529,3.595505617977528,5.318352059925093,5.19350811485643,7.428214731585518,2.122347066167291,4.044943820224719,3.6704119850187267,4.4818976279650435,7.740324594257178,3.0399500624219726,6.928838951310862,6.20474406991261,5.767790262172285, +5.786516853932584,7.428214731585518,4.463171036204744,7.240948813982522,5.34956304619226,5.318352059925093,2.259675405742821,5.143570536828964,2.977528089887641,4.51310861423221,5.15605493133583,3.2896379525593007,1.9475655430711611,2.340823970037453,3.370786516853933,7.927590511860175,6.679151061173534,4.925093632958801,3.6766541822721597,3.17103620474407,5.930087390761548,7.428214731585518,4.66916354556804,7.677902621722847,6.866416978776529,2.990012484394507,2.727840199750312,2.4094881398252186,3.982521847690387,5.786516853932584,1.978776529338327,3.245942571785269,6.616729088639201,5.561797752808988,2.8963795255930087,4.219725343320849,3.1273408239700373,8.302122347066168,5.998751560549313,2.1473158551810236,2.3782771535580522,6.491885143570538,5.68039950062422,3.533083645443196,2.7965043695380776,2.965043695380774,7.927590511860175,5.049937578027466,3.4456928838951315,6.491885143570538,4.9812734082397006,5.549313358302123,5.967540574282147,8.302122347066168,3.464419475655431,5.093632958801498,5.892634207240949,7.49063670411985,7.8027465667915115,5.131086142322098,3.764044943820225,4.818976279650437,5.212234706616729,3.370786516853933,7.8027465667915115,5.15605493133583,3.970037453183521,7.365792759051186,3.5205992509363297,5.131086142322098,5.830212234706617,6.242197253433209,7.365792759051186,5.499375780274657,7.740324594257178,7.553058676654182,5.605493133583021,4.687890137328339,2.68414481897628,3.714107365792759,8.426966292134832,5.524344569288389,4.875156054931336,2.4968789013732833,8.11485642946317,5.811485642946318,6.866416978776529,3.6267166042446943,5.343320848938826,5.224719101123595,7.49063670411985,2.1473158551810236,4.0761548064918856,3.701622971285893,4.51310861423221,7.8027465667915115,3.0711610486891385,6.991260923845194,6.229712858926342,5.786516853932584, +5.81772784019975,7.428214731585518,4.49438202247191,7.303370786516854,5.3745318352059925,5.337078651685393,2.2846441947565546,5.168539325842697,3.0087390761548067,4.531835205992509,5.181023720349563,3.320848938826467,1.9725343320848938,2.3720349563046192,3.3957553058676653,7.927590511860175,6.679151061173534,4.950062421972534,3.701622971285893,3.1897627965043696,5.961298377028713,7.49063670411985,4.694132334581773,7.677902621722847,6.866416978776529,3.0149812734082393,2.7590511860174782,2.4344569288389515,4.013732833957553,5.811485642946318,2.00374531835206,3.2771535580524347,6.616729088639201,5.586766541822722,2.9151061173533086,4.238451935081149,3.1647940074906367,8.3645443196005,6.023720349563047,2.1722846441947565,2.4032459425717856,6.554307116104869,5.711610486891385,3.564294631710362,2.8277153558052435,2.9962546816479403,7.927590511860175,5.081148564294631,3.4769038701622974,6.554307116104869,5.0062421972534334,5.580524344569288,5.992509363295881,8.3645443196005,3.4893882646691634,5.118601747815231,5.9238451935081144,7.553058676654182,7.8027465667915115,5.15605493133583,3.7827715355805243,4.837702871410737,5.243445692883895,3.3957553058676653,7.8027465667915115,5.181023720349563,3.9950062421972534,7.365792759051186,3.545568039950062,5.15605493133583,5.861423220973783,6.30461922596754,7.365792759051186,5.5305867665418225,7.8027465667915115,7.553058676654182,5.6242197253433215,4.725343320848939,2.7091136079900124,3.7515605493133584,8.489388264669165,5.555555555555556,4.906367041198502,2.515605493133583,8.177278401997503,5.836454431960051,6.928838951310862,3.6579275905118602,5.36828963795256,5.2559300873907615,7.49063670411985,2.1722846441947565,4.107365792759051,3.7265917602996255,4.55056179775281,7.8027465667915115,3.108614232209738,6.991260923845194,6.242197253433209,5.811485642946318, +5.842696629213483,7.49063670411985,4.525593008739076,7.303370786516854,5.405742821473158,5.3620474406991265,2.309612983770287,5.19350811485643,3.0399500624219726,4.556803995006242,5.199750312109863,3.352059925093633,1.9975031210986267,2.4032459425717856,3.420724094881398,7.990012484394507,6.741573033707866,4.9812734082397006,3.7265917602996255,3.214731585518102,5.986267166042447,7.49063670411985,4.719101123595506,7.740324594257178,6.928838951310862,3.046192259675406,2.7840199750312107,2.459425717852684,4.044943820224719,5.836454431960051,2.0287141073657926,3.3083645443196006,6.679151061173534,5.605493133583021,2.9400749063670415,4.263420724094882,3.1960049937578026,8.3645443196005,6.0424469413233455,2.1910112359550564,2.428214731585518,6.554307116104869,5.736579275905119,3.595505617977528,2.852684144818976,3.0212234706616727,7.990012484394507,5.1123595505617985,3.5143570536828963,6.554307116104869,5.0374531835206,5.617977528089888,6.0174781523096135,8.3645443196005,3.5143570536828963,5.1373283395755305,5.948813982521848,7.553058676654182,7.865168539325843,5.187265917602996,3.801498127340824,4.8626716604244695,5.274656679151062,3.4144818976279647,7.865168539325843,5.199750312109863,4.013732833957553,7.428214731585518,3.5705368289637955,5.181023720349563,5.8863920099875156,6.30461922596754,7.365792759051186,5.555555555555556,7.8027465667915115,7.615480649188515,5.6491885143570535,4.7565543071161045,2.7340823970037453,3.7827715355805243,8.551810237203496,5.586766541822722,4.937578027465668,2.5405742821473156,8.177278401997503,5.855181023720349,6.928838951310862,3.689138576779026,5.393258426966292,5.287141073657928,7.553058676654182,2.1972534332084894,4.138576779026217,3.7515605493133584,4.581772784019975,7.865168539325843,3.139825218476904,7.0536828963795255,6.30461922596754,5.836454431960051, +5.8739076154806495,7.49063670411985,4.563046192259676,7.365792759051186,5.430711610486892,5.3870162297128585,2.328339575530587,5.218476903870163,3.0711610486891385,4.581772784019975,5.224719101123595,3.3770287141073654,2.016229712858926,2.4344569288389515,3.4456928838951315,7.990012484394507,6.741573033707866,5.012484394506866,3.7515605493133584,3.233458177278402,6.0174781523096135,7.553058676654182,4.7440699126092385,7.740324594257178,6.928838951310862,3.077403245942572,2.8152309612983775,2.4843945068664173,4.082397003745319,5.861423220973783,2.0536828963795255,3.3458177278401995,6.679151061173534,5.630461922596755,2.958801498127341,4.288389513108614,3.233458177278402,8.426966292134832,6.067415730337078,2.209737827715356,2.446941323345818,6.554307116104869,5.761548064918852,3.6329588014981273,2.8838951310861427,3.046192259675406,7.990012484394507,5.149812734082397,3.545568039950062,6.616729088639201,5.068664169787765,5.6491885143570535,6.048689138576779,8.426966292134832,3.533083645443196,5.162297128589263,5.980024968789014,7.615480649188515,7.865168539325843,5.212234706616729,3.826466916354557,4.881398252184769,5.305867665418227,3.439450686641698,7.865168539325843,5.224719101123595,4.038701622971286,7.428214731585518,3.595505617977528,5.205992509363296,5.917602996254682,6.367041198501872,7.428214731585518,5.580524344569288,7.865168539325843,7.615480649188515,5.667915106117353,4.794007490636704,2.7590511860174782,3.8202247191011236,8.551810237203496,5.617977528089888,4.975031210986267,2.5593008739076155,8.239700374531834,5.880149812734083,6.991260923845194,3.7203495630461925,5.418227215980025,5.318352059925093,7.553058676654182,2.2222222222222223,4.169787765293384,3.776529338327091,4.612983770287141,7.865168539325843,3.1772784019975036,7.0536828963795255,6.30461922596754,5.861423220973783, +5.905118601747815,7.553058676654182,4.594257178526841,7.365792759051186,5.455680399500624,5.405742821473158,2.35330836454432,5.249687890137328,3.0961298377028714,4.600499375780275,5.243445692883895,3.408239700374532,2.0411985018726595,2.4656679151061174,3.470661672908864,8.05243445692884,6.803995006242197,5.043695380774032,3.776529338327091,3.258426966292135,6.048689138576779,7.553058676654182,4.769038701622971,7.8027465667915115,6.991260923845194,3.102372034956305,2.8464419475655434,2.5093632958801497,4.1136079900124844,5.8863920099875156,2.0786516853932584,3.3770287141073654,6.679151061173534,5.6491885143570535,2.9837702871410734,4.313358302122348,3.2646691635455682,8.426966292134832,6.092384519350812,2.2347066167290888,2.471910112359551,6.616729088639201,5.786516853932584,3.6641697877652937,2.9151061173533086,3.077403245942572,8.05243445692884,5.181023720349563,3.5830212234706615,6.616729088639201,5.093632958801498,5.686641697877653,6.073657927590512,8.426966292134832,3.5580524344569286,5.181023720349563,6.004993757802747,7.615480649188515,7.927590511860175,5.237203495630462,3.8451935081148565,4.900124843945068,5.337078651685393,3.464419475655431,7.927590511860175,5.243445692883895,4.057428214731585,7.428214731585518,3.620474406991261,5.230961298377029,5.948813982521848,6.367041198501872,7.428214731585518,5.611735330836455,7.865168539325843,7.615480649188515,5.686641697877653,4.825218476903871,2.7840199750312107,3.857677902621723,8.614232209737828,5.64294631710362,5.0062421972534334,2.5842696629213484,8.239700374531834,5.905118601747815,6.991260923845194,3.7515605493133584,5.443196004993759,5.34956304619226,7.615480649188515,2.2409488139825218,4.200998751560549,3.8077403245942576,4.65043695380774,7.927590511860175,3.2084893882646695,7.116104868913857,6.30461922596754,5.880149812734083, +5.936329588014981,7.553058676654182,4.6254681647940075,7.428214731585518,5.480649188514358,5.430711610486892,2.3782771535580522,5.274656679151062,3.1273408239700373,4.6254681647940075,5.268414481897628,3.439450686641698,2.066167290886392,2.4906367041198503,3.495630461922597,8.05243445692884,6.803995006242197,5.074906367041199,3.801498127340824,3.2771535580524347,6.073657927590512,7.615480649188515,4.787765293383271,7.8027465667915115,6.991260923845194,3.1335830212234708,2.8776529338327093,2.5343320848938826,4.144818976279651,5.9113607990012484,2.1036204744069913,3.4144818976279647,6.741573033707866,5.674157303370786,3.0087390761548067,4.332084893882647,3.3021223470661676,8.489388264669165,6.117353308364544,2.253433208489388,2.4968789013732833,6.616729088639201,5.81772784019975,3.6953807740324596,2.9400749063670415,3.102372034956305,8.05243445692884,5.212234706616729,3.6142322097378274,6.679151061173534,5.1248439450686645,5.717852684144819,6.098626716604246,8.489388264669165,3.5830212234706615,5.199750312109863,6.036204744069912,7.677902621722847,7.927590511860175,5.268414481897628,3.8639200998751564,4.925093632958801,5.36828963795256,3.4831460674157304,7.927590511860175,5.268414481897628,4.082397003745319,7.49063670411985,3.6454431960049942,5.2559300873907615,5.980024968789014,6.429463171036204,7.428214731585518,5.636704119850187,7.927590511860175,7.677902621722847,5.711610486891385,4.8626716604244695,2.808988764044944,3.888888888888889,8.614232209737828,5.674157303370786,5.043695380774032,2.602996254681648,8.302122347066168,5.930087390761548,6.991260923845194,3.7827715355805243,5.468164794007491,5.3870162297128585,7.615480649188515,2.2659176029962547,4.2322097378277155,3.83270911360799,4.681647940074906,7.990012484394507,3.245942571785269,7.116104868913857,6.367041198501872,5.905118601747815, +5.967540574282147,7.615480649188515,4.662921348314606,7.428214731585518,5.50561797752809,5.455680399500624,2.397003745318352,5.299625468164794,3.1585518102372037,4.65043695380774,5.287141073657928,3.464419475655431,2.084893882646692,2.521847690387016,3.5205992509363297,8.11485642946317,6.866416978776529,5.106117353308365,3.826466916354557,3.3021223470661676,6.104868913857677,7.615480649188515,4.812734082397004,7.8027465667915115,7.0536828963795255,3.1647940074906367,2.908863920099875,2.5593008739076155,4.176029962546816,5.936329588014981,2.128589263420724,3.4456928838951315,6.741573033707866,5.692883895131087,3.027465667915106,4.357053682896379,3.3333333333333335,8.489388264669165,6.142322097378277,2.272159800249688,2.521847690387016,6.616729088639201,5.842696629213483,3.732833957553059,2.9712858926342074,3.1273408239700373,8.11485642946317,5.249687890137328,3.6454431960049942,6.679151061173534,5.149812734082397,5.7553058676654185,6.123595505617978,8.551810237203496,3.607990012484395,5.224719101123595,6.061173533083646,7.740324594257178,7.927590511860175,5.293383270911361,3.882646691635456,4.943820224719102,5.399500624219725,3.508114856429463,7.990012484394507,5.293383270911361,4.1011235955056184,7.49063670411985,3.6704119850187267,5.280898876404494,6.01123595505618,6.429463171036204,7.49063670411985,5.66167290886392,7.927590511860175,7.677902621722847,5.730337078651686,4.893882646691636,2.8339575530586765,3.926342072409488,8.67665418227216,5.705368289637952,5.074906367041199,2.6279650436953808,8.302122347066168,5.955056179775282,7.0536828963795255,3.81398252184769,5.493133583021224,5.418227215980025,7.677902621722847,2.2908863920099876,4.263420724094882,3.857677902621723,4.712858926342073,7.990012484394507,3.2771535580524347,7.17852684144819,6.367041198501872,5.930087390761548, +5.998751560549313,7.615480649188515,4.694132334581773,7.49063670411985,5.5305867665418225,5.474406991260924,2.4219725343320846,5.324594257178527,3.183520599250936,4.66916354556804,5.305867665418227,3.495630461922597,2.1098626716604243,2.5530586766541825,3.545568039950062,8.11485642946317,6.866416978776529,5.1373283395755305,3.8514357053682895,3.320848938826467,6.1360799001248445,7.677902621722847,4.837702871410737,7.865168539325843,7.0536828963795255,3.1897627965043696,2.933832709113608,2.5842696629213484,4.207240948813983,5.961298377028713,2.153558052434457,3.4769038701622974,6.741573033707866,5.717852684144819,3.0524344569288386,4.382022471910113,3.370786516853933,8.551810237203496,6.167290886392011,2.2908863920099876,2.546816479400749,6.679151061173534,5.867665418227216,3.764044943820225,3.0024968789013733,3.1585518102372037,8.11485642946317,5.280898876404494,3.682896379525593,6.741573033707866,5.181023720349563,5.786516853932584,6.1485642946317105,8.551810237203496,3.6329588014981273,5.243445692883895,6.092384519350812,7.740324594257178,7.990012484394507,5.318352059925093,3.9013732833957557,4.962546816479401,5.430711610486892,3.5268414481897628,7.990012484394507,5.312109862671661,4.1260923845193505,7.553058676654182,3.6953807740324596,5.305867665418227,6.0424469413233455,6.491885143570538,7.49063670411985,5.692883895131087,7.990012484394507,7.677902621722847,5.749063670411985,4.931335830212235,2.8589263420724094,3.957553058676654,8.739076154806492,5.736579275905119,5.106117353308365,2.6466916354556806,8.3645443196005,5.980024968789014,7.0536828963795255,3.8451935081148565,5.5181023720349565,5.449438202247191,7.677902621722847,2.3158551810237205,4.294631710362047,3.888888888888889,4.7440699126092385,8.05243445692884,3.3083645443196006,7.17852684144819,6.429463171036204,5.955056179775282, +6.029962546816479,7.677902621722847,4.725343320848939,7.49063670411985,5.555555555555556,5.499375780274657,2.446941323345818,5.34956304619226,3.214731585518102,4.694132334581773,5.33083645443196,3.5268414481897628,2.134831460674157,2.5842696629213484,3.5705368289637955,8.177278401997503,6.928838951310862,5.168539325842697,3.870162297128589,3.3458177278401995,6.161048689138577,7.677902621722847,4.8626716604244695,7.865168539325843,7.0536828963795255,3.2209737827715355,2.965043695380774,2.6092384519350813,4.238451935081149,5.986267166042447,2.1785268414481895,3.5143570536828963,6.803995006242197,5.742821473158552,3.0711610486891385,4.400749063670412,3.4019975031210987,8.551810237203496,6.186017478152309,2.3158551810237205,2.571785268414482,6.679151061173534,5.8988764044943816,3.7952559300873907,3.033707865168539,3.183520599250936,8.177278401997503,5.312109862671661,3.714107365792759,6.741573033707866,5.212234706616729,5.81772784019975,6.179775280898876,8.614232209737828,3.6579275905118602,5.262172284644195,6.117353308364544,7.8027465667915115,7.990012484394507,5.34956304619226,3.920099875156055,4.987515605493134,5.461922596754057,3.5518102372034956,8.05243445692884,5.337078651685393,4.144818976279651,7.553058676654182,3.7203495630461925,5.33083645443196,6.073657927590512,6.491885143570538,7.553058676654182,5.717852684144819,7.990012484394507,7.740324594257178,5.774032459425719,4.962546816479401,2.8838951310861427,3.9950062421972534,8.739076154806492,5.767790262172285,5.143570536828964,2.671660424469413,8.3645443196005,6.004993757802747,7.116104868913857,3.8764044943820224,5.543071161048689,5.480649188514358,7.740324594257178,2.340823970037453,4.31960049937578,3.9138576779026217,4.781523096129837,8.11485642946317,3.3458177278401995,7.240948813982522,6.429463171036204,5.97378277153558, +6.061173533083646,7.677902621722847,4.762796504369538,7.49063670411985,5.580524344569288,5.524344569288389,2.4656679151061174,5.380774032459426,3.245942571785269,4.719101123595506,5.34956304619226,3.5580524344569286,2.153558052434457,2.6154806491885143,3.589263420724095,8.177278401997503,6.928838951310862,5.199750312109863,3.8951310861423223,3.3645443196004994,6.192259675405743,7.740324594257178,4.887640449438202,7.927590511860175,7.116104868913857,3.2521847690387014,2.9962546816479403,2.634207240948814,4.269662921348314,6.01123595505618,2.203495630461923,3.545568039950062,6.803995006242197,5.761548064918852,3.0961298377028714,4.425717852684145,3.439450686641698,8.614232209737828,6.210986267166042,2.33458177278402,2.596754057428215,6.679151061173534,5.9238451935081144,3.826466916354557,3.058676654182272,3.2084893882646695,8.177278401997503,5.34956304619226,3.7515605493133584,6.803995006242197,5.237203495630462,5.855181023720349,6.20474406991261,8.614232209737828,3.6766541822721597,5.287141073657928,6.1485642946317105,7.8027465667915115,8.05243445692884,5.3745318352059925,3.938826466916354,5.0062421972534334,5.493133583021224,3.5705368289637955,8.05243445692884,5.355805243445693,4.169787765293384,7.553058676654182,3.745318352059925,5.355805243445693,6.104868913857677,6.554307116104869,7.553058676654182,5.742821473158552,8.05243445692884,7.740324594257178,5.792759051186017,4.9937578027465666,2.908863920099875,4.02621722846442,8.801498127340825,5.799001248439451,5.174781523096129,2.690387016229713,8.426966292134832,6.023720349563047,7.116104868913857,3.9076154806491883,5.568039950062421,5.511860174781523,7.740324594257178,2.3657927590511862,4.3508114856429465,3.938826466916354,4.812734082397004,8.11485642946317,3.3770287141073654,7.240948813982522,6.429463171036204,5.998751560549313, +6.086142322097379,7.740324594257178,4.794007490636704,7.553058676654182,5.605493133583021,5.543071161048689,2.4906367041198503,5.405742821473158,3.2771535580524347,4.737827715355805,5.3745318352059925,3.5830212234706615,2.1785268414481895,2.640449438202247,3.6142322097378274,8.177278401997503,,,3.920099875156055,3.3895131086142323,6.223470661672909,7.740324594257178,4.912609238451935,7.927590511860175,7.116104868913857,3.2771535580524347,3.027465667915106,2.6591760299625467,4.300873907615481,6.036204744069912,2.2284644194756553,3.576779026217228,6.803995006242197,5.786516853932584,3.1210986267166043,4.450686641697877,3.470661672908864,8.614232209737828,6.235955056179775,2.35330836454432,2.6154806491885143,6.741573033707866,5.948813982521848,3.8639200998751564,3.089887640449438,3.2397003745318353,8.239700374531834,,3.7827715355805243,6.803995006242197,5.268414481897628,5.8863920099875156,,8.67665418227216,3.701622971285893,5.305867665418227,6.179775280898876,,8.05243445692884,5.399500624219725,3.957553058676654,5.024968789013733,5.5305867665418225,3.595505617977528,8.11485642946317,5.380774032459426,4.188514357053683,7.615480649188515,3.764044943820225,5.380774032459426,6.1360799001248445,6.554307116104869,7.553058676654182,5.774032459425719,8.05243445692884,7.740324594257178,5.811485642946318,5.031210986267166,2.933832709113608,4.063670411985019,,5.830212234706617,5.205992509363296,2.7091136079900124,,6.048689138576779,7.116104868913857,3.938826466916354,5.593008739076155,5.549313358302123,,2.3907615480649187,4.382022471910113,3.9637952559300875,4.843945068664169,,3.4144818976279647,7.240948813982522,6.491885143570538,6.023720349563047, +6.117353308364544,7.8027465667915115,4.831460674157303,7.553058676654182,5.630461922596755,5.568039950062421,2.515605493133583,5.430711610486892,3.3021223470661676,4.762796504369538,5.393258426966292,3.6142322097378274,2.203495630461923,2.671660424469413,3.639200998751561,8.239700374531834,,,3.9450686641697876,3.408239700374532,6.242197253433209,7.8027465667915115,4.937578027465668,7.990012484394507,7.17852684144819,3.3083645443196006,3.058676654182272,2.68414481897628,4.332084893882647,6.061173533083646,2.253433208489388,3.6142322097378274,6.866416978776529,5.805243445692884,3.139825218476904,4.475655430711611,3.508114856429463,8.67665418227216,6.242197253433209,2.3782771535580522,2.640449438202247,6.741573033707866,5.97378277153558,3.8951310861423223,3.1210986267166043,3.2646691635455682,8.239700374531834,,3.81398252184769,6.866416978776529,5.293383270911361,5.9238451935081144,,8.67665418227216,,5.324594257178527,6.20474406991261,,8.05243445692884,5.430711610486892,3.9762796504369535,5.049937578027466,5.561797752808988,3.620474406991261,8.11485642946317,5.405742821473158,4.213483146067416,7.615480649188515,3.7890137328339577,5.405742821473158,6.167290886392011,6.616729088639201,7.615480649188515,5.799001248439451,8.11485642946317,7.8027465667915115,5.836454431960051,5.062421972534332,,4.1011235955056184,,5.861423220973783,5.243445692883895,2.7340823970037453,,6.073657927590512,7.17852684144819,3.970037453183521,5.617977528089888,5.580524344569288,,2.4094881398252186,4.413233458177278,3.9950062421972534,4.881398252184769,,3.4456928838951315,7.303370786516854,6.491885143570538,6.048689138576779, +6.1485642946317105,7.8027465667915115,4.8626716604244695,7.615480649188515,5.655430711610487,5.593008739076155,2.5343320848938826,5.455680399500624,3.3333333333333335,4.787765293383271,5.418227215980025,3.6454431960049942,2.2222222222222223,2.702871410736579,3.6641697877652937,8.239700374531834,,,3.970037453183521,3.4269662921348316,6.30461922596754,7.8027465667915115,4.962546816479401,7.990012484394507,7.17852684144819,3.339575530586767,3.089887640449438,2.7091136079900124,4.3632958801498125,6.086142322097379,2.272159800249688,3.6454431960049942,6.866416978776529,5.830212234706617,3.1647940074906367,4.49438202247191,3.545568039950062,8.67665418227216,6.30461922596754,2.397003745318352,2.66541822721598,6.741573033707866,6.004993757802747,3.926342072409488,3.1460674157303368,3.2896379525593007,8.302122347066168,,,6.866416978776529,5.324594257178527,5.955056179775282,,8.739076154806492,,5.34956304619226,6.235955056179775,,8.11485642946317,5.455680399500624,4.001248439450687,5.068664169787765,5.593008739076155,3.639200998751561,8.177278401997503,5.424469413233458,4.2322097378277155,7.615480649188515,3.81398252184769,5.430711610486892,6.198501872659176,6.616729088639201,7.615480649188515,5.830212234706617,8.11485642946317,7.8027465667915115,5.855181023720349,5.099875156054932,,4.132334581772784,,5.892634207240949,5.274656679151062,2.752808988764045,,6.098626716604246,7.17852684144819,4.001248439450687,5.6491885143570535,5.611735330836455,,2.4344569288389515,4.444444444444445,4.019975031210986,4.912609238451935,,3.4831460674157304,7.303370786516854,6.554307116104869,6.067415730337078, +,7.865168539325843,4.893882646691636,,5.68039950062422,5.611735330836455,2.5593008739076155,,3.3645443196004994,4.806491885143571,5.436953807740325,3.6766541822721597,2.247191011235955,2.7340823970037453,3.689138576779026,8.302122347066168,,,3.9950062421972534,3.451935081148564,6.30461922596754,7.865168539325843,4.987515605493134,8.05243445692884,7.240948813982522,3.3645443196004994,3.114856429463171,2.7340823970037453,4.400749063670412,6.111111111111111,2.2971285892634206,3.682896379525593,6.866416978776529,5.848938826466916,3.183520599250936,4.519350811485642,3.576779026217228,8.739076154806492,6.30461922596754,2.4157303370786516,2.690387016229713,6.803995006242197,6.029962546816479,3.957553058676654,3.1772784019975036,3.3146067415730336,8.302122347066168,,,6.928838951310862,5.34956304619226,5.986267166042447,,8.801498127340825,,5.36828963795256,6.242197253433209,,8.11485642946317,5.480649188514358,4.019975031210986,5.087390761548065,5.6242197253433215,3.6641697877652937,8.177278401997503,5.449438202247191,4.257178526841448,7.677902621722847,3.8389513108614235,5.455680399500624,6.229712858926342,6.679151061173534,7.615480649188515,5.855181023720349,8.177278401997503,7.8027465667915115,5.880149812734083,5.131086142322098,,4.169787765293384,,5.9238451935081144,5.305867665418227,2.777777777777778,,6.123595505617978,7.240948813982522,4.032459425717852,5.674157303370786,5.64294631710362,,2.459425717852684,4.475655430711611,4.044943820224719,4.943820224719102,,3.5143570536828963,7.365792759051186,6.554307116104869,6.092384519350812, +,7.865168539325843,4.931335830212235,,5.705368289637952,5.636704119850187,2.5842696629213484,,3.3957553058676653,4.831460674157303,5.455680399500624,3.701622971285893,2.272159800249688,2.7652933832709112,3.714107365792759,,,,4.019975031210986,3.470661672908864,6.367041198501872,7.865168539325843,5.0062421972534334,,7.240948813982522,3.3957553058676653,3.1460674157303368,2.7590511860174782,4.431960049937578,6.1360799001248445,,3.714107365792759,6.928838951310862,5.8739076154806495,3.2084893882646695,4.544319600499376,3.6142322097378274,8.739076154806492,6.30461922596754,2.4406991260923845,2.715355805243446,6.803995006242197,6.054931335830212,3.9950062421972534,3.2084893882646695,3.3458177278401995,8.3645443196005,,,6.928838951310862,5.380774032459426,6.023720349563047,,8.801498127340825,,5.3870162297128585,6.30461922596754,,8.177278401997503,5.50561797752809,4.038701622971286,5.1123595505617985,5.655430711610487,3.682896379525593,8.239700374531834,5.468164794007491,4.275905118601748,7.677902621722847,3.8639200998751564,5.480649188514358,6.242197253433209,6.679151061173534,7.677902621722847,5.880149812734083,8.177278401997503,7.865168539325843,5.8988764044943816,5.168539325842697,,,,5.955056179775282,5.343320848938826,2.7965043695380776,,6.1485642946317105,7.240948813982522,4.063670411985019,5.69912609238452,5.674157303370786,,2.4843945068664173,4.506866416978776,4.069912609238452,4.9812734082397006,,3.5518102372034956,7.365792759051186,6.616729088639201,6.117353308364544, +,7.927590511860175,4.962546816479401,,5.730337078651686,5.655430711610487,2.602996254681648,,3.420724094881398,4.850187265917603,5.480649188514358,3.732833957553059,2.2908863920099876,2.790262172284644,3.7390761548064915,,,,4.044943820224719,3.495630461922597,6.367041198501872,7.927590511860175,5.031210986267166,,7.303370786516854,3.4269662921348316,3.1772784019975036,2.7840199750312107,4.463171036204744,,,3.745318352059925,6.928838951310862,5.8988764044943816,3.233458177278402,4.569288389513109,3.6454431960049942,8.801498127340825,6.367041198501872,2.459425717852684,2.740324594257179,6.866416978776529,6.086142322097379,4.02621722846442,3.2397003745318353,3.370786516853933,8.3645443196005,,,6.991260923845194,5.411985018726591,6.054931335830212,,8.863920099875156,,5.411985018726591,6.30461922596754,,8.177278401997503,5.536828963795256,4.057428214731585,5.131086142322098,5.686641697877653,3.7078651685393256,8.239700374531834,5.493133583021224,4.294631710362047,7.677902621722847,3.888888888888889,5.50561797752809,6.30461922596754,6.741573033707866,7.677902621722847,5.9113607990012484,8.239700374531834,7.865168539325843,5.917602996254682,5.199750312109863,,,,5.986267166042447,5.3745318352059925,2.82147315855181,,6.173533083645444,7.240948813982522,4.094881398252185,5.724094881398252,5.705368289637952,,2.5093632958801497,4.538077403245943,4.1011235955056184,5.012484394506866,,3.5830212234706615,7.428214731585518,,6.1360799001248445, +,7.927590511860175,4.9937578027465666,,5.7553058676654185,5.68039950062422,2.6279650436953808,,3.451935081148564,4.875156054931336,5.499375780274657,3.764044943820225,2.3158551810237205,2.82147315855181,3.764044943820225,,,,4.069912609238452,3.5143570536828963,6.367041198501872,7.990012484394507,5.056179775280899,,7.303370786516854,3.4581772784019975,3.2084893882646695,2.808988764044944,4.49438202247191,,,3.7827715355805243,6.928838951310862,5.917602996254682,3.2521847690387014,,3.682896379525593,8.801498127340825,6.367041198501872,2.478152309612984,2.7590511860174782,6.866416978776529,6.111111111111111,4.057428214731585,3.2646691635455682,3.3957553058676653,8.426966292134832,,,6.991260923845194,5.436953807740325,6.092384519350812,,8.863920099875156,,5.430711610486892,6.367041198501872,,8.239700374531834,5.561797752808988,4.0761548064918856,5.149812734082397,5.717852684144819,3.7265917602996255,8.302122347066168,5.5181023720349565,4.31960049937578,7.740324594257178,3.9138576779026217,5.5305867665418225,6.30461922596754,6.741573033707866,7.740324594257178,5.936329588014981,8.239700374531834,7.865168539325843,5.942571785268415,5.237203495630462,,,,6.0174781523096135,5.405742821473158,2.84019975031211,,6.192259675405743,7.303370786516854,4.1260923845193505,5.749063670411985,5.742821473158552,,2.5343320848938826,4.569288389513109,4.1260923845193505,5.043695380774032,,3.6142322097378274,7.428214731585518,,6.161048689138577, +,7.990012484394507,5.031210986267166,,5.7802746566791505,5.705368289637952,,,3.4831460674157304,4.900124843945068,5.524344569288389,3.7952559300873907,2.340823970037453,2.852684144818976,3.7890137328339577,,,,4.094881398252185,3.5393258426966296,6.429463171036204,7.990012484394507,5.081148564294631,,7.365792759051186,3.4831460674157304,3.2397003745318353,2.8339575530586765,4.525593008739076,,,3.81398252184769,6.991260923845194,,3.2771535580524347,,3.714107365792759,8.863920099875156,6.429463171036204,2.4968789013732833,2.7840199750312107,6.866416978776529,6.1360799001248445,4.0886392009987516,3.295880149812734,,8.426966292134832,,,7.0536828963795255,5.468164794007491,6.123595505617978,,8.926342072409488,,5.455680399500624,6.367041198501872,,8.239700374531834,,4.094881398252185,5.174781523096129,5.749063670411985,3.7515605493133584,8.302122347066168,5.536828963795256,4.33832709113608,7.740324594257178,3.938826466916354,5.555555555555556,,6.803995006242197,7.740324594257178,5.961298377028713,8.302122347066168,7.927590511860175,5.961298377028713,5.268414481897628,,,,6.048689138576779,5.443196004993759,2.865168539325843,,6.217228464419476,7.303370786516854,4.157303370786517,5.774032459425719,5.774032459425719,,2.5530586766541825,4.600499375780275,4.151061173533084,5.081148564294631,,3.651685393258427,,,6.186017478152309, +,,5.062421972534332,,5.805243445692884,,,,3.5143570536828963,4.918851435705368,5.543071161048689,3.8202247191011236,2.359550561797753,2.8838951310861427,3.81398252184769,,,,4.119850187265917,3.5580524344569286,6.429463171036204,8.05243445692884,5.106117353308365,,7.365792759051186,3.5143570536828963,3.2709113607990012,2.8589263420724094,4.556803995006242,,,3.8451935081148565,6.991260923845194,,3.295880149812734,,3.7515605493133584,8.863920099875156,6.429463171036204,2.521847690387016,2.808988764044944,6.928838951310862,6.161048689138577,4.1260923845193505,3.3270911360799,,8.489388264669165,,,7.0536828963795255,5.493133583021224,6.161048689138577,,,,5.474406991260924,6.429463171036204,,8.239700374531834,,4.1136079900124844,5.19350811485643,5.7802746566791505,3.776529338327091,8.3645443196005,5.561797752808988,4.3632958801498125,7.740324594257178,3.9637952559300875,5.580524344569288,,6.803995006242197,,5.992509363295881,8.302122347066168,7.927590511860175,5.980024968789014,5.305867665418227,,,,6.079900124843945,5.474406991260924,2.8838951310861427,,6.242197253433209,7.365792759051186,4.18227215980025,5.799001248439451,5.805243445692884,,2.578027465667915,4.631710362047441,4.18227215980025,5.1123595505617985,,3.682896379525593,,,6.210986267166042, +,,5.093632958801498,,5.830212234706617,,,,3.5393258426966296,4.943820224719102,5.568039950062421,3.8514357053682895,2.3845193508114857,2.908863920099875,3.8389513108614235,,,,4.144818976279651,3.5830212234706615,6.491885143570538,,5.131086142322098,,7.428214731585518,3.545568039950062,3.295880149812734,2.8838951310861427,4.588014981273409,,,3.882646691635456,6.991260923845194,,3.320848938826467,,,8.926342072409488,6.429463171036204,2.5405742821473156,2.8339575530586765,6.928838951310862,,,3.352059925093633,,8.489388264669165,,,7.116104868913857,5.524344569288389,6.192259675405743,,,,5.493133583021224,6.429463171036204,,8.302122347066168,,4.132334581772784,5.212234706616729,5.811485642946318,3.7952559300873907,8.3645443196005,5.580524344569288,4.382022471910113,7.8027465667915115,3.9887640449438204,5.605493133583021,,6.866416978776529,,6.0174781523096135,8.3645443196005,7.927590511860175,6.004993757802747,5.337078651685393,,,,6.111111111111111,5.50561797752809,2.908863920099875,,6.242197253433209,7.365792759051186,4.213483146067416,5.823970037453184,5.836454431960051,,2.602996254681648,4.662921348314606,4.207240948813983,5.143570536828964,,3.7203495630461925,,,6.229712858926342, +,,5.131086142322098,,5.855181023720349,,,,3.5705368289637955,4.9687890137328345,5.586766541822722,3.882646691635456,2.4094881398252186,2.9400749063670415,3.8639200998751564,,,,4.169787765293384,3.6017478152309614,6.491885143570538,,5.15605493133583,,7.428214731585518,3.5705368289637955,3.3270911360799,2.908863920099875,4.619225967540574,,,3.9138576779026217,7.0536828963795255,,3.3458177278401995,,,8.926342072409488,6.491885143570538,2.5593008739076155,2.8589263420724094,6.928838951310862,,,3.383270911360799,,8.551810237203496,,,7.116104868913857,,,,,,5.5181023720349565,6.491885143570538,,8.302122347066168,,4.151061173533084,5.237203495630462,5.842696629213483,3.8202247191011236,8.426966292134832,5.605493133583021,4.406991260923846,7.8027465667915115,4.00749063670412,5.630461922596755,,,,6.0424469413233455,8.3645443196005,7.990012484394507,6.023720349563047,5.3745318352059925,,,,,5.543071161048689,2.9275905118601746,,6.30461922596754,7.428214731585518,4.244694132334582,5.848938826466916,5.867665418227216,,2.6279650436953808,4.694132334581773,4.2322097378277155,5.174781523096129,,3.7515605493133584,,,6.242197253433209, +,,5.162297128589263,,,,,,3.6017478152309614,4.987515605493134,5.605493133583021,3.9076154806491883,2.428214731585518,2.9712858926342074,,,,,4.194756554307116,3.6267166042446943,6.554307116104869,,5.181023720349563,,7.49063670411985,3.6017478152309614,3.3583021223470664,2.933832709113608,4.65043695380774,,,,7.0536828963795255,,3.3645443196004994,,,8.98876404494382,,2.5842696629213484,2.8838951310861427,6.991260923845194,,,3.4144818976279647,,8.551810237203496,,,7.116104868913857,,,,,,5.536828963795256,6.491885143570538,,8.3645443196005,,4.176029962546816,5.2559300873907615,5.880149812734083,3.8389513108614235,8.426966292134832,5.6242197253433215,4.425717852684145,7.8027465667915115,4.032459425717852,,,,,6.073657927590512,8.426966292134832,7.990012484394507,6.0424469413233455,5.405742821473158,,,,,,2.9525593008739075,,,7.428214731585518,,5.8739076154806495,5.905118601747815,,,,4.257178526841448,5.212234706616729,,,,,6.30461922596754, +,,,,,,,,3.6329588014981273,5.012484394506866,5.630461922596755,3.938826466916354,2.453183520599251,3.0024968789013733,,,,,4.213483146067416,3.6454431960049942,6.554307116104869,,5.205992509363296,,7.49063670411985,3.6329588014981273,,2.958801498127341,4.681647940074906,,,,7.0536828963795255,,3.3895131086142323,,,8.98876404494382,,2.602996254681648,2.908863920099875,6.991260923845194,,,,,,,,7.17852684144819,,,,,,5.555555555555556,6.491885143570538,,8.3645443196005,,4.194756554307116,5.274656679151062,5.9113607990012484,3.8639200998751564,8.489388264669165,5.6491885143570535,4.450686641697877,,4.057428214731585,,,,,6.098626716604246,8.426966292134832,7.990012484394507,6.067415730337078,,,,,,,2.9712858926342074,,,7.428214731585518,,5.8988764044943816,5.936329588014981,,,,4.288389513108614,5.243445692883895,,,,,6.30461922596754, +,,,,,,,,3.6579275905118602,5.0374531835206,5.6491885143570535,,2.471910112359551,3.033707865168539,,,,,,3.6704119850187267,6.616729088639201,,5.224719101123595,,7.553058676654182,,,2.9837702871410734,4.712858926342073,,,,7.116104868913857,,3.408239700374532,,,9.051186017478152,,,2.9275905118601746,6.991260923845194,,,,,,,,7.17852684144819,,,,,,5.580524344569288,6.554307116104869,,,,4.213483146067416,5.299625468164794,5.942571785268415,3.888888888888889,8.489388264669165,,4.4694132334581775,,4.082397003745319,,,,,6.123595505617978,8.489388264669165,8.05243445692884,6.086142322097379,,,,,,,2.9962546816479403,,,7.49063670411985,,5.9238451935081144,5.967540574282147,,,,,5.274656679151062,,,,,6.30461922596754, +,,,,,,,,3.689138576779026,5.056179775280899,,,2.4968789013732833,3.058676654182272,,,,,,3.689138576779026,6.616729088639201,,5.249687890137328,,7.553058676654182,,,3.0087390761548067,,,,,7.116104868913857,,3.4332084893882646,,,9.051186017478152,,,2.9525593008739075,7.0536828963795255,,,,,,,,7.240948813982522,,,,,,,,,,,4.2322097378277155,5.318352059925093,5.97378277153558,3.9076154806491883,8.551810237203496,,4.49438202247191,,4.107365792759051,,,,,6.154806491885144,8.489388264669165,8.05243445692884,6.104868913857677,,,,,,,3.0149812734082393,,,7.49063670411985,,5.948813982521848,5.998751560549313,,,,,,,,,,6.367041198501872, +,,,,,,,,3.7203495630461925,,,,,3.089887640449438,,,,,,3.714107365792759,6.679151061173534,,5.274656679151062,,7.553058676654182,,,3.033707865168539,,,,,,,3.4581772784019975,,,9.113607990012484,,,2.977528089887641,,,,,,,,,7.240948813982522,,,,,,,,,,,4.250936329588015,5.337078651685393,6.004993757802747,3.9325842696629216,8.551810237203496,,,,4.132334581772784,,,,,6.179775280898876,8.551810237203496,8.05243445692884,6.129837702871411,,,,,,,3.0399500624219726,,,7.553058676654182,,5.97378277153558,6.029962546816479,,,,,,,,,,6.367041198501872, +,,,,,,,,,,,,,3.1210986267166043,,,,,,3.732833957553059,6.679151061173534,,5.299625468164794,,,,,3.058676654182272,,,,,,,,,,9.113607990012484,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.269662921348314,5.3620474406991265,6.036204744069912,3.951310861423221,8.614232209737828,,,,,,,,,6.210986267166042,8.551810237203496,8.11485642946317,6.1485642946317105,,,,,,,3.058676654182272,,,7.553058676654182,,,,,,,,,,,,,6.367041198501872, +,,,,,,,,,,,,,3.15230961298377,,,,,,3.7515605493133584,6.741573033707866,,5.324594257178527,,,,,3.0836454431960054,,,,,,,,,,9.176029962546817,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.288389513108614,5.380774032459426,6.067415730337078,3.9762796504369535,8.614232209737828,,,,,,,,,6.235955056179775,,8.11485642946317,6.167290886392011,,,,,,,3.077403245942572,,,7.553058676654182,,,,,,,,,,,,,6.429463171036204, +,,,,,,,,,,,,,,,,,,,,6.741573033707866,,,,,,,,,,,,,,,,,9.176029962546817,,,,,,,,,,,,,,,,,,,,,,,,5.399500624219725,6.098626716604246,,8.67665418227216,,,,,,,,,6.242197253433209,,8.11485642946317,6.192259675405743,,,,,,,3.102372034956305,,,7.615480649188515,,,,,,,,,,,,,6.429463171036204, +,,,,,,,,,,,,,,,,,,,,6.803995006242197,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5.424469413233458,,,,,,,,,,,,6.30461922596754,,,6.210986267166042,,,,,,,3.1210986267166043,,,7.615480649188515,,,,,,,,,,,,,, +3.651685393258427,5.074906367041199,2.1161048689138577,5.305867665418227,3.589263420724095,3.7265917602996255,0.6554307116104868,3.3021223470661676,0.9051186017478152,2.908863920099875,3.6641697877652937,1.223470661672909,0.35268414481897625,0.24968789013732834,1.647940074906367,5.855181023720349,4.4818976279650435,2.7590511860174782,1.9600499375780276,1.6541822721598003,3.8951310861423223,5.224719101123595,2.9712858926342074,5.474406991260924,4.800249687890138,0.9488139825218477,0.6173533083645443,0.6616729088639202,1.7602996254681649,4.057428214731585,0.24781523096129837,0.8926342072409489,5.099875156054932,4.001248439450687,1.317103620474407,2.5842696629213484,0.717852684144819,6.179775280898876,4.313358302122348,0.7116104868913858,0.6928838951310862,4.956304619225968,3.8077403245942576,1.2359550561797754,0.7365792759051186,1.079900124843945,5.724094881398252,2.702871410736579,1.0923845193508115,4.444444444444445,2.9837702871410734,3.183520599250936,4.132334581772784,5.81772784019975,1.797752808988764,3.6267166042446943,3.9076154806491883,4.875156054931336,6.029962546816479,3.2397003745318353,2.4032459425717856,3.3645443196004994,2.9837702871410734,1.8102372034956304,5.6491885143570535,3.5830212234706615,2.446941323345818,5.855181023720349,1.8164794007490637,3.3957553058676653,3.6766541822721597,3.957553058676654,5.705368289637952,3.595505617977528,5.593008739076155,6.104868913857677,4.138576779026217,2.303370786516854,0.9550561797752809,1.2796504369538078,5.730337078651686,3.3645443196004994,2.5343320848938826,0.9800249687890138,5.930087390761548,4.1260923845193505,5.1248439450686645,1.4544319600499376,3.576779026217228,2.958801498127341,5.436953807740325,0.466916354556804,1.9101123595505618,1.8352059925093633,2.1972534332084894,5.031210986267166,0.6928838951310862,4.856429463171036,4.425717852684145,4.157303370786517, +3.682896379525593,5.1123595505617985,2.153558052434457,5.33083645443196,3.6142322097378274,3.745318352059925,0.6803995006242198,3.3270911360799,0.9363295880149812,2.933832709113608,3.682896379525593,1.2546816479400749,0.3757802746566792,0.27965043695380776,1.6729088639200997,5.880149812734083,4.51310861423221,2.790262172284644,1.9850187265917605,1.6791510611735332,3.920099875156055,5.262172284644195,2.9962546816479403,5.50561797752809,4.831460674157303,0.9737827715355806,0.6491885143570537,0.686641697877653,1.7915106117353308,4.082397003745319,0.2727840199750312,0.9300873907615481,5.1248439450686645,4.019975031210986,1.34207240948814,2.6092384519350813,0.7490636704119851,6.210986267166042,4.33832709113608,0.7303370786516854,0.717852684144819,4.975031210986267,3.8389513108614235,1.2671660424469413,0.7677902621722846,1.104868913857678,5.7553058676654185,2.7340823970037453,1.1235955056179776,4.475655430711611,3.0087390761548067,3.214731585518102,4.157303370786517,5.855181023720349,1.8164794007490637,3.651685393258427,3.9325842696629216,4.912609238451935,6.054931335830212,3.2709113607990012,2.4219725343320846,3.383270911360799,3.0149812734082393,1.8289637952559301,5.68039950062422,3.607990012484395,2.4656679151061174,5.880149812734083,1.8414481897627966,3.420724094881398,3.7078651685393256,3.9887640449438204,5.730337078651686,3.6267166042446943,5.6242197253433215,6.129837702871411,4.16354556803995,2.340823970037453,0.9800249687890138,1.3108614232209737,5.767790262172285,3.3895131086142323,2.571785268414482,0.9987515605493134,5.961298377028713,4.151061173533084,5.149812734082397,1.4856429463171037,3.6017478152309614,2.990012484394507,5.468164794007491,0.49063670411985016,1.941323345817728,1.8601747815230962,2.2347066167290888,5.068664169787765,0.7303370786516854,4.887640449438202,4.450686641697877,4.18227215980025, +3.714107365792759,5.143570536828964,2.184769038701623,5.3620474406991265,3.639200998751561,3.7702871410736583,0.7053682896379525,3.3583021223470664,0.9675405742821472,2.958801498127341,3.7078651685393256,1.2796504369538078,0.39825218476903873,0.3096129837702871,1.6978776529338326,5.9113607990012484,4.544319600499376,2.82147315855181,2.009987515605493,1.6978776529338326,3.951310861423221,5.293383270911361,3.0149812734082393,5.536828963795256,4.856429463171036,1.0049937578027466,0.6803995006242198,0.7116104868913858,1.8227215980024971,4.107365792759051,0.29712858926342073,0.9612983770287141,5.143570536828964,4.044943820224719,1.3670411985018727,2.634207240948814,0.7865168539325842,6.242197253433209,4.3632958801498125,0.7553058676654182,0.7428214731585518,5.0,3.8639200998751564,1.2983770287141074,0.7927590511860175,1.1298377028714106,5.786516853932584,2.7715355805243447,1.161048689138577,4.506866416978776,3.0399500624219726,3.245942571785269,4.188514357053683,5.892634207240949,1.8414481897627966,3.6704119850187267,3.9637952559300875,4.950062421972534,6.086142322097379,3.295880149812734,2.446941323345818,3.4019975031210987,3.046192259675406,1.8539325842696628,5.711610486891385,3.6329588014981273,2.4906367041198503,5.8988764044943816,1.8664169787765295,3.4456928838951315,3.7390761548064915,4.019975031210986,5.7553058676654185,3.651685393258427,5.655430711610487,6.1485642946317105,4.18227215980025,2.3720349563046192,1.0049937578027466,1.348314606741573,5.805243445692884,3.420724094881398,2.602996254681648,1.0237203495630463,5.992509363295881,4.176029962546816,5.174781523096129,1.5168539325842696,3.6267166042446943,3.0212234706616727,5.499375780274657,0.5149812734082396,1.9725343320848938,1.8851435705368291,2.2659176029962547,5.106117353308365,0.7615480649188515,4.918851435705368,4.475655430711611,4.207240948813983, +3.745318352059925,5.174781523096129,2.215980024968789,5.3870162297128585,3.6641697877652937,3.7952559300873907,0.7240948813982522,3.383270911360799,0.9987515605493134,2.977528089887641,3.7265917602996255,1.3108614232209737,0.4213483146067416,0.33957553058676654,1.7228464419475658,5.942571785268415,4.575530586766542,2.8464419475655434,2.034956304619226,1.7228464419475658,3.982521847690387,5.324594257178527,3.0399500624219726,5.568039950062421,4.887640449438202,1.0362047440699127,0.7053682896379525,0.7365792759051186,1.8539325842696628,4.132334581772784,0.32209737827715357,0.9987515605493134,5.168539325842697,4.069912609238452,1.3857677902621723,2.6591760299625467,0.8177278401997503,6.30461922596754,4.388264669163545,0.7740324594257179,0.7677902621722846,5.0187265917602994,3.888888888888889,1.3358302122347065,0.8239700374531835,1.161048689138577,5.81772784019975,2.8027465667915106,1.1922596754057428,4.538077403245943,3.0649188514357055,3.2833957553058677,4.213483146067416,5.930087390761548,1.8664169787765295,3.6953807740324596,3.9887640449438204,4.987515605493134,6.111111111111111,3.320848938826467,2.4656679151061174,3.4269662921348316,3.0836454431960054,1.8726591760299625,5.736579275905119,3.651685393258427,2.5093632958801497,5.9238451935081144,1.8913857677902621,3.470661672908864,3.7702871410736583,4.057428214731585,5.774032459425719,3.6766541822721597,5.686641697877653,6.167290886392011,4.200998751560549,2.4032459425717856,1.0299625468164793,1.3795255930087391,5.848938826466916,3.451935081148564,2.634207240948814,1.042446941323346,6.023720349563047,4.200998751560549,5.199750312109863,1.5480649188514357,3.651685393258427,3.0524344569288386,5.524344569288389,0.5387016229712859,2.00374531835206,1.9101123595505618,2.2971285892634206,5.149812734082397,0.7990012484394506,4.950062421972534,4.500624219725343,4.225967540574282, +3.776529338327091,5.212234706616729,2.253433208489388,5.418227215980025,3.689138576779026,3.81398252184769,0.7490636704119851,3.408239700374532,1.0237203495630463,3.0024968789013733,3.745318352059925,1.34207240948814,0.44382022471910115,0.36953807740324596,1.7415730337078652,5.97378277153558,4.606741573033708,2.8776529338327093,2.0599250936329585,1.7415730337078652,4.00749063670412,5.355805243445693,3.0649188514357055,5.599250936329588,4.918851435705368,1.0611735330836456,0.7365792759051186,0.7615480649188515,1.8851435705368291,4.157303370786517,0.3464419475655431,1.0299625468164793,5.187265917602996,4.0886392009987516,1.410736579275905,2.6779026217228465,0.8551810237203495,6.30461922596754,4.413233458177278,0.7927590511860175,0.7927590511860175,5.043695380774032,3.920099875156055,1.3670411985018727,0.8551810237203495,1.1860174781523096,5.848938826466916,2.8339575530586765,1.229712858926342,4.563046192259676,3.0961298377028714,3.3146067415730336,4.238451935081149,5.961298377028713,1.8913857677902621,3.714107365792759,4.019975031210986,5.024968789013733,6.1360799001248445,3.352059925093633,2.4843945068664173,3.4456928838951315,3.114856429463171,1.8976279650436954,5.767790262172285,3.6766541822721597,2.5343320848938826,5.942571785268415,1.916354556803995,3.495630461922597,3.801498127340824,4.0886392009987516,5.799001248439451,3.7078651685393256,5.717852684144819,6.192259675405743,4.225967540574282,2.4406991260923845,1.0549313358302121,1.4169787765293382,5.8863920099875156,3.4831460674157304,2.671660424469413,1.0674157303370786,6.054931335830212,4.225967540574282,5.224719101123595,1.5792759051186018,3.6766541822721597,3.089887640449438,5.555555555555556,0.5630461922596754,2.034956304619226,1.941323345817728,2.328339575530587,5.187265917602996,0.8302122347066168,4.975031210986267,4.531835205992509,4.250936329588015, +3.801498127340824,5.243445692883895,2.2846441947565546,5.443196004993759,3.714107365792759,3.8389513108614235,0.7740324594257179,3.4332084893882646,1.0549313358302121,3.027465667915106,3.7702871410736583,1.373283395755306,0.466916354556804,0.3995006242197253,1.766541822721598,5.998751560549313,4.637952559300874,2.908863920099875,2.084893882646692,1.766541822721598,4.038701622971286,5.3870162297128585,3.089887640449438,5.630461922596755,4.943820224719102,1.0923845193508115,0.7677902621722846,0.7865168539325842,1.916354556803995,4.18227215980025,0.3714107365792759,1.0611735330836456,5.212234706616729,4.1136079900124844,1.4294631710362047,2.702871410736579,0.8863920099875156,6.30461922596754,4.438202247191011,0.8114856429463172,0.8177278401997503,5.062421972534332,3.9450686641697876,1.3982521847690388,0.8801498127340824,1.2109862671660423,5.880149812734083,2.871410736579276,1.260923845193508,4.594257178526841,3.1210986267166043,3.352059925093633,4.263420724094882,5.998751560549313,1.916354556803995,3.732833957553059,4.051186017478152,5.062421972534332,6.161048689138577,3.3770287141073654,2.5031210986267167,3.464419475655431,3.1460674157303368,1.916354556803995,5.799001248439451,3.6953807740324596,2.5530586766541825,5.967540574282147,1.941323345817728,3.5205992509363297,3.83270911360799,4.119850187265917,5.823970037453184,3.732833957553059,5.749063670411985,6.210986267166042,4.244694132334582,2.471910112359551,1.079900124843945,1.4544319600499376,5.9238451935081144,3.5143570536828963,2.702871410736579,1.0861423220973783,6.086142322097379,4.244694132334582,5.249687890137328,1.6104868913857677,3.701622971285893,3.1210986267166043,5.586766541822722,0.5867665418227216,2.066167290886392,1.9662921348314608,2.3657927590511862,5.224719101123595,0.867665418227216,5.0062421972534334,4.556803995006242,4.275905118601748, +3.83270911360799,5.274656679151062,2.3158551810237205,5.474406991260924,3.7390761548064915,3.857677902621723,0.7927590511860175,3.4581772784019975,1.0861423220973783,3.046192259675406,3.7890137328339577,1.3982521847690388,0.4893882646691636,0.42946317103620474,1.7915106117353308,6.029962546816479,4.66916354556804,2.9400749063670415,2.1098626716604243,1.7852684144818978,4.069912609238452,5.418227215980025,3.114856429463171,5.66167290886392,4.975031210986267,1.1235955056179776,0.7990012484394506,0.8114856429463172,1.9475655430711611,4.207240948813983,0.39637952559300876,1.0986267166042447,5.230961298377029,4.132334581772784,1.4544319600499376,2.727840199750312,0.9238451935081149,6.367041198501872,4.456928838951311,0.8364544319600499,0.8426966292134832,5.087390761548065,3.970037453183521,1.4294631710362047,0.9113607990012486,1.2421972534332086,5.9113607990012484,2.902621722846442,1.2921348314606742,4.6254681647940075,3.15230961298377,3.383270911360799,4.288389513108614,6.036204744069912,1.9350811485642945,3.7578027465667914,4.0761548064918856,5.099875156054932,6.186017478152309,3.4019975031210987,2.521847690387016,3.4893882646691634,3.1772784019975036,1.941323345817728,5.830212234706617,3.7203495630461925,2.578027465667915,5.986267166042447,1.9662921348314608,3.545568039950062,3.8639200998751564,4.151061173533084,5.848938826466916,3.7578027465667914,5.7802746566791505,6.229712858926342,4.263420724094882,2.5093632958801497,1.104868913857678,1.4856429463171037,5.961298377028713,3.545568039950062,2.7340823970037453,1.1111111111111112,6.117353308364544,4.269662921348314,5.274656679151062,1.6416978776529338,3.7265917602996255,3.15230961298377,5.611735330836455,0.6104868913857677,2.097378277153558,1.9912609238451935,2.397003745318352,5.262172284644195,0.898876404494382,5.0374531835206,4.581772784019975,4.294631710362047, +3.8639200998751564,5.312109862671661,2.35330836454432,5.499375780274657,3.764044943820225,3.882646691635456,0.8177278401997503,3.4893882646691634,1.1173533083645444,3.0711610486891385,3.81398252184769,1.4294631710362047,0.5124843945068664,0.45942571785268416,1.8164794007490637,6.061173533083646,4.700374531835206,2.9712858926342074,2.128589263420724,1.8102372034956304,4.094881398252185,5.449438202247191,3.139825218476904,5.692883895131087,5.0062421972534334,1.1485642946317103,0.8302122347066168,0.8364544319600499,1.978776529338327,4.2322097378277155,0.4207240948813982,1.1298377028714106,5.2559300873907615,4.157303370786517,1.4794007490636705,2.746566791510612,0.9550561797752809,6.367041198501872,4.4818976279650435,0.8551810237203495,0.8614232209737829,5.106117353308365,3.9950062421972534,1.466916354556804,0.9425717852684146,1.2671660424469413,5.942571785268415,2.9400749063670415,1.3295880149812733,4.656679151061174,3.183520599250936,3.4144818976279647,4.31960049937578,6.067415730337078,1.9600499375780276,3.776529338327091,4.107365792759051,5.1373283395755305,6.210986267166042,3.4332084893882646,2.5405742821473156,3.508114856429463,3.2084893882646695,1.9662921348314608,5.861423220973783,3.745318352059925,2.596754057428215,6.01123595505618,1.9912609238451935,3.5705368289637955,3.8951310861423223,4.188514357053683,5.867665418227216,3.7890137328339577,5.811485642946318,6.242197253433209,4.288389513108614,2.5405742821473156,1.1298377028714106,1.523096129837703,6.004993757802747,3.576779026217228,2.7715355805243447,1.1298377028714106,6.1485642946317105,4.294631710362047,5.299625468164794,1.6729088639200997,3.7515605493133584,3.183520599250936,5.64294631710362,0.6367041198501873,2.128589263420724,2.0224719101123596,2.428214731585518,5.305867665418227,0.9363295880149812,5.068664169787765,4.606741573033708,4.31960049937578, +3.8951310861423223,5.343320848938826,2.3845193508114857,5.5305867665418225,3.7890137328339577,3.9076154806491883,0.8426966292134832,3.5143570536828963,1.1423220973782773,3.0961298377028714,3.83270911360799,1.4606741573033708,0.534956304619226,0.4893882646691636,1.8414481897627966,6.086142322097379,4.7315855181023725,3.0024968789013733,2.153558052434457,1.8289637952559301,4.1260923845193505,5.480649188514358,3.1647940074906367,5.724094881398252,5.0374531835206,1.1797752808988764,0.8614232209737829,0.8614232209737829,2.016229712858926,4.257178526841448,0.44569288389513106,1.161048689138577,5.274656679151062,4.176029962546816,1.4981273408239701,2.7715355805243447,0.9925093632958802,6.429463171036204,4.506866416978776,0.8739076154806492,0.8863920099875156,5.131086142322098,4.02621722846442,1.4981273408239701,0.9737827715355806,1.2921348314606742,5.97378277153558,2.9712858926342074,1.3607990012484397,4.681647940074906,3.2084893882646695,3.451935081148564,4.344569288389513,6.104868913857677,1.9850187265917605,3.7952559300873907,4.132334581772784,5.174781523096129,6.235955056179775,3.4581772784019975,2.5593008739076155,3.5268414481897628,3.2397003745318353,1.9850187265917605,5.892634207240949,3.764044943820225,2.6217228464419473,6.029962546816479,2.016229712858926,3.595505617977528,3.926342072409488,4.219725343320849,5.892634207240949,3.81398252184769,5.842696629213483,6.242197253433209,4.307116104868914,2.578027465667915,1.1548064918851435,1.554307116104869,6.0424469413233455,3.607990012484395,2.8027465667915106,1.1548064918851435,6.179775280898876,4.31960049937578,5.324594257178527,1.704119850187266,3.776529338327091,3.214731585518102,5.674157303370786,0.6616729088639202,2.15980024968789,2.0474406991260925,2.4656679151061174,5.343320848938826,0.9675405742821472,5.099875156054932,4.631710362047441,4.344569288389513, +3.926342072409488,5.3745318352059925,2.4157303370786516,5.555555555555556,3.81398252184769,3.926342072409488,0.8614232209737829,3.5393258426966296,1.1735330836454432,3.114856429463171,3.857677902621723,1.4918851435705367,0.5580524344569288,0.519350811485643,1.8664169787765295,6.117353308364544,4.762796504369538,3.033707865168539,2.1785268414481895,1.8476903870162298,4.157303370786517,5.511860174781523,3.1897627965043696,5.7553058676654185,5.062421972534332,1.2109862671660423,0.8863920099875156,0.8863920099875156,2.0474406991260925,4.282147315855181,0.4700374531835206,1.198501872659176,5.299625468164794,4.200998751560549,1.523096129837703,2.7965043695380776,1.0237203495630463,6.429463171036204,4.531835205992509,0.898876404494382,0.9113607990012486,5.149812734082397,4.051186017478152,1.529338327091136,0.9987515605493134,1.3233458177278403,6.004993757802747,3.0024968789013733,1.3982521847690388,4.712858926342073,3.2397003745318353,3.4831460674157304,4.369538077403246,6.142322097378277,2.009987515605493,3.8202247191011236,4.16354556803995,5.212234706616729,6.242197253433209,3.4831460674157304,2.578027465667915,3.5518102372034956,3.2709113607990012,2.009987515605493,5.9238451935081144,3.7890137328339577,2.640449438202247,6.054931335830212,2.0411985018726595,3.620474406991261,3.957553058676654,4.250936329588015,5.917602996254682,3.8451935081148565,5.8739076154806495,6.30461922596754,4.325842696629214,2.6092384519350813,1.1797752808988764,1.591760299625468,6.079900124843945,3.639200998751561,2.8339575530586765,1.1735330836454432,6.210986267166042,4.344569288389513,5.34956304619226,1.735330836454432,3.801498127340824,3.245942571785269,5.705368289637952,0.6803995006242198,2.1910112359550564,2.0724094881398254,2.4968789013732833,5.380774032459426,0.9987515605493134,5.131086142322098,4.656679151061174,4.369538077403246, +3.957553058676654,5.411985018726591,2.453183520599251,5.586766541822722,3.8389513108614235,3.951310861423221,0.8863920099875156,3.564294631710362,1.2047440699126093,3.139825218476904,3.8764044943820224,1.5168539325842696,0.5811485642946317,0.548689138576779,1.8913857677902621,6.1485642946317105,4.794007490636704,3.0649188514357055,2.203495630461923,1.8726591760299625,4.18227215980025,5.543071161048689,3.214731585518102,5.786516853932584,5.093632958801498,1.2359550561797754,0.9176029962546817,0.9113607990012486,2.0786516853932584,4.307116104868914,0.4950062421972534,1.229712858926342,5.318352059925093,4.225967540574282,1.5418227215980027,2.82147315855181,1.0611735330836456,6.491885143570538,4.556803995006242,0.9176029962546817,0.9363295880149812,5.174781523096129,4.0761548064918856,1.5605493133583022,1.0299625468164793,1.348314606741573,6.036204744069912,3.0399500624219726,1.4294631710362047,4.7440699126092385,3.2646691635455682,3.5205992509363297,4.394506866416979,6.173533083645444,2.034956304619226,3.8389513108614235,4.188514357053683,5.249687890137328,6.30461922596754,3.5143570536828963,2.596754057428215,3.5705368289637955,3.3021223470661676,2.0287141073657926,5.955056179775282,3.8077403245942576,2.66541822721598,6.073657927590512,2.0599250936329585,3.6454431960049942,3.982521847690387,4.282147315855181,5.942571785268415,3.870162297128589,5.905118601747815,6.30461922596754,4.3508114856429465,2.6466916354556806,1.2047440699126093,1.6229712858926344,6.117353308364544,3.6704119850187267,2.871410736579276,1.198501872659176,6.242197253433209,4.369538077403246,5.3745318352059925,1.766541822721598,3.826466916354557,3.2833957553058677,5.730337078651686,0.7053682896379525,2.2222222222222223,2.097378277153558,2.5280898876404496,5.424469413233458,1.0362047440699127,5.15605493133583,4.681647940074906,4.388264669163545, +3.9887640449438204,5.443196004993759,2.4843945068664173,5.611735330836455,3.8639200998751564,3.9762796504369535,0.9113607990012486,3.589263420724095,1.2359550561797754,3.1647940074906367,3.8951310861423223,1.5480649188514357,0.6036204744069913,0.5786516853932584,1.916354556803995,6.179775280898876,4.825218476903871,3.0961298377028714,2.2284644194756553,1.8913857677902621,4.213483146067416,5.574282147315855,3.233458177278402,5.81772784019975,5.1248439450686645,1.2671660424469413,0.9488139825218477,0.9363295880149812,2.1098626716604243,4.332084893882647,0.5199750312109862,1.2671660424469413,5.337078651685393,4.244694132334582,1.5667915106117354,2.84019975031211,1.0923845193508115,6.491885143570538,4.581772784019975,0.9363295880149812,0.9612983770287141,5.199750312109863,4.1011235955056184,1.5980024968789013,1.0611735330836456,1.373283395755306,6.067415730337078,3.0711610486891385,1.4606741573033708,4.775280898876405,3.295880149812734,3.5518102372034956,4.419475655430712,6.210986267166042,2.0599250936329585,3.857677902621723,4.219725343320849,5.287141073657928,6.30461922596754,3.5393258426966296,2.6217228464419473,3.589263420724095,3.3333333333333335,2.0536828963795255,5.986267166042447,3.83270911360799,2.68414481897628,6.098626716604246,2.084893882646692,3.6704119850187267,4.013732833957553,4.31960049937578,5.961298377028713,3.8951310861423223,5.936329588014981,6.30461922596754,4.369538077403246,2.6779026217228465,1.229712858926342,1.6604244694132335,6.154806491885144,3.701622971285893,2.902621722846442,1.2172284644194757,6.30461922596754,4.394506866416979,5.399500624219725,1.797752808988764,3.8514357053682895,3.3146067415730336,5.761548064918852,0.7303370786516854,2.253433208489388,2.128589263420724,2.565543071161049,5.461922596754057,1.0674157303370786,5.187265917602996,4.70661672908864,4.413233458177278, +4.019975031210986,5.474406991260924,2.521847690387016,5.64294631710362,3.888888888888889,3.9950062421972534,0.9300873907615481,3.620474406991261,1.260923845193508,3.183520599250936,3.920099875156055,1.5792759051186018,0.6242197253433208,0.6086142322097379,1.941323345817728,6.20474406991261,4.856429463171036,3.1273408239700373,2.253433208489388,1.916354556803995,4.244694132334582,5.605493133583021,3.258426966292135,5.848938826466916,5.149812734082397,1.2983770287141074,0.9800249687890138,0.9612983770287141,2.1410736579275906,4.357053682896379,0.5443196004993758,1.2983770287141074,5.3620474406991265,4.269662921348314,1.591760299625468,2.865168539325843,1.1298377028714106,6.554307116104869,4.606741573033708,0.9550561797752809,0.9862671660424469,5.218476903870163,4.132334581772784,1.6292134831460674,1.0861423220973783,1.404494382022472,6.098626716604246,3.102372034956305,1.4981273408239701,4.800249687890138,3.3270911360799,3.589263420724095,4.450686641697877,6.242197253433209,2.0786516853932584,3.882646691635456,4.244694132334582,5.324594257178527,6.367041198501872,3.564294631710362,2.640449438202247,3.6142322097378274,3.3645443196004994,2.0786516853932584,6.0174781523096135,3.857677902621723,2.7091136079900124,6.117353308364544,2.1098626716604243,3.6953807740324596,4.044943820224719,4.3508114856429465,5.986267166042447,3.926342072409488,5.967540574282147,6.367041198501872,4.388264669163545,2.715355805243446,1.2484394506866416,1.6978776529338326,6.198501872659176,3.732833957553059,2.933832709113608,1.2359550561797754,6.30461922596754,4.413233458177278,5.424469413233458,1.8227215980024971,3.8764044943820224,3.3458177278401995,5.792759051186017,0.7553058676654182,2.2846441947565546,2.153558052434457,2.596754057428215,5.499375780274657,1.104868913857678,5.218476903870163,4.737827715355805,4.438202247191011, +4.044943820224719,5.511860174781523,2.5530586766541825,5.667915106117353,3.9138576779026217,4.019975031210986,0.9550561797752809,3.6454431960049942,1.2921348314606742,3.2084893882646695,3.938826466916354,1.6042446941323347,0.6491885143570537,0.6367041198501873,1.9662921348314608,6.235955056179775,4.887640449438202,3.1585518102372037,2.278401997503121,1.9350811485642945,4.269662921348314,5.64294631710362,3.2833957553058677,5.880149812734083,5.181023720349563,1.3233458177278403,1.0112359550561798,0.9862671660424469,2.1722846441947565,4.382022471910113,0.5692883895131086,1.3295880149812733,5.380774032459426,4.288389513108614,1.6104868913857677,2.8901373283395753,1.16729088639201,6.554307116104869,4.6254681647940075,0.9800249687890138,1.0112359550561798,5.243445692883895,4.157303370786517,1.6604244694132335,1.1173533083645444,1.4294631710362047,6.129837702871411,3.139825218476904,1.529338327091136,4.831460674157303,3.352059925093633,3.620474406991261,4.475655430711611,6.30461922596754,2.1036204744069913,3.9013732833957557,4.275905118601748,5.3620474406991265,6.367041198501872,3.595505617977528,2.6591760299625467,3.6329588014981273,3.3957553058676653,2.097378277153558,6.048689138576779,3.8764044943820224,2.727840199750312,6.1360799001248445,2.134831460674157,3.7203495630461925,4.0761548064918856,4.382022471910113,6.01123595505618,3.951310861423221,5.998751560549313,6.367041198501872,4.413233458177278,2.746566791510612,1.2734082397003745,1.7290886392009988,6.235955056179775,3.764044943820225,2.9712858926342074,1.260923845193508,6.367041198501872,4.438202247191011,5.449438202247191,1.8539325842696628,3.9013732833957557,3.3770287141073654,5.81772784019975,0.7802746566791511,2.3158551810237205,2.1785268414481895,2.6279650436953808,5.536828963795256,1.136079900124844,5.249687890137328,4.762796504369538,4.463171036204744, +4.0761548064918856,5.543071161048689,2.5842696629213484,5.69912609238452,3.938826466916354,4.044943820224719,0.9800249687890138,3.6704119850187267,1.3233458177278403,3.233458177278402,3.9637952559300875,1.6354556803995006,0.6741573033707865,0.6679151061173533,1.9912609238451935,6.242197253433209,4.918851435705368,3.1897627965043696,2.303370786516854,1.9600499375780276,4.300873907615481,5.674157303370786,3.3083645443196006,5.9113607990012484,5.212234706616729,1.3545568039950062,1.0362047440699127,1.0112359550561798,2.203495630461923,4.406991260923846,0.5942571785268415,1.3670411985018727,5.405742821473158,4.313358302122348,1.6354556803995006,2.9151061173533086,1.198501872659176,6.616729088639201,4.65043695380774,0.9987515605493134,1.0299625468164793,5.262172284644195,4.18227215980025,1.6978776529338326,1.1485642946317103,1.4544319600499376,6.161048689138577,3.17103620474407,1.5605493133583022,4.8626716604244695,3.383270911360799,3.651685393258427,4.500624219725343,6.30461922596754,2.128589263420724,3.920099875156055,4.300873907615481,5.399500624219725,6.367041198501872,3.620474406991261,2.6779026217228465,3.651685393258427,3.4332084893882646,2.122347066167291,6.079900124843945,3.9013732833957557,2.752808988764045,6.161048689138577,2.15980024968789,3.745318352059925,4.107365792759051,4.413233458177278,6.036204744069912,3.9762796504369535,6.029962546816479,6.367041198501872,4.431960049937578,2.7840199750312107,1.2983770287141074,1.766541822721598,6.30461922596754,3.7952559300873907,3.0024968789013733,1.2796504369538078,6.367041198501872,4.463171036204744,5.480649188514358,1.8851435705368291,3.926342072409488,3.408239700374532,5.848938826466916,0.8052434456928839,2.3470661672908864,2.203495630461923,2.66541822721598,5.580524344569288,1.1735330836454432,5.280898876404494,4.787765293383271,4.4818976279650435, +4.107365792759051,5.574282147315855,2.6217228464419473,5.724094881398252,3.9637952559300875,4.063670411985019,0.9987515605493134,3.6953807740324596,1.3545568039950062,3.2521847690387014,3.982521847690387,1.6666666666666667,0.6928838951310862,0.6991260923845194,2.016229712858926,6.30461922596754,4.950062421972534,3.2209737827715355,2.328339575530587,1.978776529338327,4.332084893882647,5.705368289637952,3.3333333333333335,5.942571785268415,5.237203495630462,1.3857677902621723,1.0674157303370786,1.0362047440699127,2.2347066167290888,4.431960049937578,0.618601747815231,1.3982521847690388,5.424469413233458,4.332084893882647,1.6541822721598003,2.933832709113608,1.2359550561797754,6.616729088639201,4.675405742821473,1.017478152309613,1.0549313358302121,5.287141073657928,4.213483146067416,1.7290886392009988,1.1797752808988764,1.4856429463171037,6.192259675405743,3.202247191011236,1.5980024968789013,4.893882646691636,3.408239700374532,3.689138576779026,4.525593008739076,6.367041198501872,2.153558052434457,3.9450686641697876,4.332084893882647,5.436953807740325,6.429463171036204,3.6454431960049942,2.696629213483146,3.6766541822721597,3.464419475655431,2.1410736579275906,6.111111111111111,3.920099875156055,2.7715355805243447,6.179775280898876,2.184769038701623,3.7702871410736583,4.138576779026217,4.444444444444445,6.054931335830212,4.00749063670412,6.061173533083646,6.429463171036204,4.450686641697877,2.8152309612983775,1.3233458177278403,1.797752808988764,6.30461922596754,3.826466916354557,3.0399500624219726,1.3046192259675407,6.429463171036204,4.488139825218477,5.50561797752809,1.916354556803995,3.951310861423221,3.4456928838951315,5.880149812734083,0.8239700374531835,2.3782771535580522,2.2347066167290888,2.696629213483146,5.617977528089888,1.2047440699126093,5.312109862671661,4.812734082397004,4.506866416978776, +4.138576779026217,5.611735330836455,2.6529338327091136,5.7553058676654185,3.9887640449438204,4.0886392009987516,1.0237203495630463,3.7265917602996255,1.3795255930087391,3.2771535580524347,4.00749063670412,1.6978776529338326,0.717852684144819,0.7303370786516854,2.0411985018726595,6.30461922596754,4.9812734082397006,3.2521847690387014,2.35330836454432,2.00374531835206,4.357053682896379,5.736579275905119,3.3583021223470664,5.967540574282147,5.268414481897628,1.410736579275905,1.0986267166042447,1.0611735330836456,2.2659176029962547,4.456928838951311,0.6429463171036205,1.4294631710362047,5.449438202247191,4.357053682896379,1.6791510611735332,2.958801498127341,1.2671660424469413,6.679151061173534,4.700374531835206,1.042446941323346,1.079900124843945,5.305867665418227,4.238451935081149,1.7602996254681649,1.2047440699126093,1.5106117353308364,6.223470661672909,3.2397003745318353,1.6292134831460674,4.918851435705368,3.439450686641698,3.7203495630461925,4.55056179775281,6.367041198501872,2.1785268414481895,3.9637952559300875,4.3632958801498125,5.474406991260924,6.429463171036204,3.6766541822721597,2.715355805243446,3.6953807740324596,3.495630461922597,2.1660424469413235,6.1360799001248445,3.9450686641697876,2.7965043695380776,6.20474406991261,2.209737827715356,3.7952559300873907,4.169787765293384,4.4818976279650435,6.079900124843945,4.032459425717852,6.092384519350812,6.429463171036204,4.475655430711611,2.8464419475655434,1.348314606741573,1.8352059925093633,6.367041198501872,3.857677902621723,3.0711610486891385,1.3233458177278403,6.429463171036204,4.51310861423221,5.5305867665418225,1.9475655430711611,3.9762796504369535,3.4769038701622974,5.905118601747815,0.8489388264669163,2.4094881398252186,2.259675405742821,2.727840199750312,5.655430711610487,1.2359550561797754,5.337078651685393,4.837702871410737,4.531835205992509, +4.169787765293384,5.64294631710362,2.68414481897628,5.7802746566791505,4.013732833957553,4.1136079900124844,1.048689138576779,3.7515605493133584,1.410736579275905,3.3021223470661676,4.02621722846442,1.7228464419475658,0.7428214731585518,0.7553058676654182,2.066167290886392,6.367041198501872,5.012484394506866,3.2833957553058677,2.3782771535580522,2.0224719101123596,4.388264669163545,5.767790262172285,3.383270911360799,5.998751560549313,5.299625468164794,1.4419475655430714,1.1298377028714106,1.0861423220973783,2.2971285892634206,4.4818976279650435,0.6679151061173533,1.466916354556804,5.468164794007491,4.382022471910113,1.704119850187266,2.9837702871410734,1.3046192259675407,6.679151061173534,4.725343320848939,1.0611735330836456,1.104868913857678,5.33083645443196,4.263420724094882,1.7915106117353308,1.2359550561797754,1.5355805243445693,6.242197253433209,3.2709113607990012,1.6666666666666667,4.950062421972534,3.464419475655431,3.7578027465667914,4.581772784019975,6.429463171036204,2.1972534332084894,3.9887640449438204,4.388264669163545,5.511860174781523,6.491885143570538,3.701622971285893,2.7340823970037453,3.714107365792759,3.5268414481897628,2.184769038701623,6.167290886392011,3.9637952559300875,2.8152309612983775,6.223470661672909,2.2347066167290888,3.8202247191011236,4.200998751560549,4.51310861423221,6.104868913857677,4.057428214731585,6.123595505617978,6.429463171036204,4.49438202247191,2.8838951310861427,1.373283395755306,1.8726591760299625,6.367041198501872,3.888888888888889,3.102372034956305,1.348314606741573,6.491885143570538,4.538077403245943,5.555555555555556,1.978776529338327,4.001248439450687,3.508114856429463,5.936329588014981,0.8739076154806492,2.4406991260923845,2.2846441947565546,2.7590511860174782,5.69912609238452,1.2734082397003745,5.36828963795256,4.8626716604244695,4.556803995006242, +4.200998751560549,5.674157303370786,2.7215980024968793,5.811485642946318,4.038701622971286,4.132334581772784,1.0674157303370786,3.776529338327091,1.4419475655430714,3.320848938826467,4.044943820224719,1.7540574282147314,0.7615480649188515,0.7865168539325842,2.091136079900125,6.367041198501872,5.043695380774032,3.3146067415730336,2.4032459425717856,2.0474406991260925,4.419475655430712,5.799001248439451,3.408239700374532,6.029962546816479,5.324594257178527,1.4731585518102372,1.161048689138577,1.1111111111111112,2.328339575530587,4.506866416978776,0.6928838951310862,1.4981273408239701,5.493133583021224,4.400749063670412,1.7228464419475658,3.0087390761548067,1.3358302122347065,6.741573033707866,4.750312109862672,1.079900124843945,1.1298377028714106,5.34956304619226,4.288389513108614,1.8289637952559301,1.2671660424469413,1.5605493133583022,6.30461922596754,3.3083645443196006,1.6978776529338326,4.9812734082397006,3.495630461922597,3.7890137328339577,4.606741573033708,6.429463171036204,2.2222222222222223,4.00749063670412,4.419475655430712,5.549313358302123,6.491885143570538,3.7265917602996255,2.752808988764045,3.7390761548064915,3.5580524344569286,2.209737827715356,6.198501872659176,3.9887640449438204,2.84019975031211,6.242197253433209,2.259675405742821,3.8451935081148565,4.2322097378277155,4.544319600499376,6.123595505617978,4.0886392009987516,6.1485642946317105,6.491885143570538,4.519350811485642,2.9151061173533086,1.3982521847690388,1.9038701622971288,6.429463171036204,3.920099875156055,3.139825218476904,1.3670411985018727,6.491885143570538,4.563046192259676,5.580524344569288,2.009987515605493,4.02621722846442,3.5393258426966296,5.967540574282147,0.898876404494382,2.4656679151061174,2.3158551810237205,2.7965043695380776,5.736579275905119,1.3046192259675407,5.399500624219725,4.887640449438202,4.575530586766542, +4.2322097378277155,5.711610486891385,2.752808988764045,5.836454431960051,4.063670411985019,4.157303370786517,1.0923845193508115,3.801498127340824,1.4731585518102372,3.3458177278401995,4.069912609238452,1.7852684144818978,0.7865168539325842,0.8177278401997503,2.1161048689138577,6.429463171036204,5.074906367041199,3.3458177278401995,2.428214731585518,2.066167290886392,4.444444444444445,5.830212234706617,3.4332084893882646,6.061173533083646,5.355805243445693,1.4981273408239701,1.1922596754057428,1.136079900124844,2.3657927590511862,4.525593008739076,0.717852684144819,1.5355805243445693,5.511860174781523,4.425717852684145,1.7478152309612984,3.027465667915106,1.373283395755306,6.741573033707866,4.769038701622971,1.104868913857678,1.1548064918851435,5.3745318352059925,4.31960049937578,1.8601747815230962,1.2921348314606742,1.591760299625468,6.30461922596754,3.339575530586767,1.7290886392009988,5.012484394506866,3.5268414481897628,3.826466916354557,4.631710362047441,6.491885143570538,2.247191011235955,4.02621722846442,4.444444444444445,5.586766541822722,6.491885143570538,3.7578027465667914,2.7715355805243447,3.7578027465667914,3.589263420724095,2.2347066167290888,6.229712858926342,4.013732833957553,2.8589263420724094,6.242197253433209,2.2846441947565546,3.870162297128589,4.263420724094882,4.575530586766542,6.1485642946317105,4.1136079900124844,6.179775280898876,6.491885143570538,4.538077403245943,2.9525593008739075,1.4232209737827717,1.941323345817728,6.491885143570538,3.9450686641697876,3.17103620474407,1.3920099875156053,6.554307116104869,4.581772784019975,5.605493133583021,2.0411985018726595,4.057428214731585,3.5705368289637955,5.992509363295881,0.9238451935081149,2.4968789013732833,2.340823970037453,2.8277153558052435,5.774032459425719,1.34207240948814,5.430711610486892,4.912609238451935,4.600499375780275, +4.263420724094882,5.742821473158552,2.7840199750312107,5.867665418227216,4.0886392009987516,4.18227215980025,1.1173533083645444,3.826466916354557,1.4981273408239701,3.370786516853933,4.0886392009987516,1.8164794007490637,0.8114856429463172,0.8489388264669163,2.1410736579275906,6.429463171036204,5.106117353308365,3.3770287141073654,2.453183520599251,2.091136079900125,4.475655430711611,5.861423220973783,3.4581772784019975,6.092384519350812,5.3870162297128585,1.529338327091136,1.2172284644194757,1.161048689138577,2.397003745318352,4.55056179775281,0.7428214731585518,1.5667915106117354,5.5305867665418225,4.444444444444445,1.766541822721598,3.0524344569288386,1.404494382022472,6.803995006242197,4.794007490636704,1.1235955056179776,1.1735330836454432,5.393258426966292,4.344569288389513,1.8913857677902621,1.3233458177278403,1.616729088639201,6.367041198501872,3.370786516853933,1.766541822721598,5.0374531835206,3.5518102372034956,3.857677902621723,4.656679151061174,6.554307116104869,2.272159800249688,4.051186017478152,4.475655430711611,5.6242197253433215,6.554307116104869,3.7827715355805243,2.7965043695380776,3.776529338327091,3.620474406991261,2.253433208489388,6.242197253433209,4.032459425717852,2.8838951310861427,6.30461922596754,2.303370786516854,3.8951310861423223,4.294631710362047,4.612983770287141,6.173533083645444,4.138576779026217,6.210986267166042,6.491885143570538,4.556803995006242,2.9837702871410734,1.4481897627965044,1.9725343320848938,6.491885143570538,3.9762796504369535,3.202247191011236,1.410736579275905,6.554307116104869,4.606741573033708,5.630461922596755,2.0724094881398254,4.082397003745319,3.6017478152309614,6.023720349563047,0.9488139825218477,2.5280898876404496,2.3657927590511862,2.8589263420724094,5.811485642946318,1.373283395755306,5.461922596754057,4.943820224719102,4.6254681647940075, +4.288389513108614,5.774032459425719,2.82147315855181,5.892634207240949,4.1136079900124844,4.200998751560549,1.136079900124844,3.857677902621723,1.529338327091136,3.3895131086142323,4.1136079900124844,1.8414481897627966,0.8302122347066168,0.8801498127340824,2.1660424469413235,6.491885143570538,5.1373283395755305,3.408239700374532,2.471910112359551,2.1098626716604243,4.500624219725343,5.892634207240949,3.4769038701622974,6.123595505617978,5.418227215980025,1.5605493133583022,1.2484394506866416,1.1860174781523096,2.428214731585518,4.575530586766542,0.7677902621722846,1.5980024968789013,5.555555555555556,4.4694132334581775,1.7915106117353308,3.077403245942572,1.4419475655430714,6.803995006242197,4.818976279650437,1.1423220973782773,1.198501872659176,5.418227215980025,4.369538077403246,1.9225967540574282,1.3545568039950062,1.6416978776529338,6.367041198501872,3.408239700374532,1.797752808988764,5.068664169787765,3.5830212234706615,3.888888888888889,4.681647940074906,6.554307116104869,2.2971285892634206,4.069912609238452,4.500624219725343,5.66167290886392,6.554307116104869,3.8077403245942576,2.8152309612983775,3.801498127340824,3.651685393258427,2.278401997503121,6.30461922596754,4.057428214731585,2.902621722846442,6.30461922596754,2.328339575530587,3.920099875156055,4.325842696629214,4.644194756554308,6.198501872659176,4.169787765293384,6.242197253433209,6.554307116104869,4.581772784019975,3.0212234706616727,1.4731585518102372,2.009987515605493,6.554307116104869,4.00749063670412,3.2397003745318353,1.435705368289638,6.616729088639201,4.631710362047441,5.655430711610487,2.1036204744069913,4.107365792759051,3.639200998751561,6.054931335830212,0.9737827715355806,2.5593008739076155,2.3907615480649187,2.8963795255930087,5.855181023720349,1.410736579275905,5.493133583021224,4.9687890137328345,4.644194756554308, +4.31960049937578,5.805243445692884,2.852684144818976,5.9238451935081144,4.144818976279651,4.225967540574282,1.161048689138577,3.882646691635456,1.5605493133583022,3.4144818976279647,4.132334581772784,1.8726591760299625,0.8551810237203495,0.9051186017478152,2.1910112359550564,6.491885143570538,5.162297128589263,3.439450686641698,2.4968789013732833,2.128589263420724,4.531835205992509,5.9238451935081144,3.5018726591760303,6.154806491885144,5.443196004993759,1.585518102372035,1.2796504369538078,1.2109862671660423,2.459425717852684,4.600499375780275,0.7927590511860175,1.6354556803995006,5.574282147315855,4.488139825218477,1.8164794007490637,3.0961298377028714,1.4731585518102372,6.866416978776529,4.843945068664169,1.161048689138577,1.223470661672909,5.443196004993759,4.400749063670412,1.9600499375780276,1.3857677902621723,1.6729088639200997,6.429463171036204,3.439450686641698,1.8352059925093633,5.099875156054932,3.607990012484395,3.926342072409488,4.712858926342073,6.616729088639201,2.322097378277154,4.0886392009987516,4.531835205992509,5.69912609238452,6.616729088639201,3.8389513108614235,2.8339575530586765,3.8202247191011236,3.682896379525593,2.2971285892634206,6.30461922596754,4.0761548064918856,2.9275905118601746,6.30461922596754,2.35330836454432,3.9450686641697876,4.357053682896379,4.675405742821473,6.217228464419476,4.194756554307116,6.30461922596754,6.554307116104869,4.600499375780275,3.0524344569288386,1.4981273408239701,2.0411985018726595,6.554307116104869,4.038701622971286,3.2709113607990012,1.4544319600499376,6.616729088639201,4.656679151061174,5.68039950062422,2.134831460674157,4.132334581772784,3.6704119850187267,6.079900124843945,0.9925093632958802,2.5905118601747814,2.4219725343320846,2.9275905118601746,5.892634207240949,1.4419475655430714,5.5181023720349565,4.9937578027465666,4.66916354556804, +4.3508114856429465,5.842696629213483,2.8901373283395753,5.948813982521848,4.169787765293384,4.244694132334582,1.1860174781523096,3.9076154806491883,1.585518102372035,3.439450686641698,4.151061173533084,1.9038701622971288,0.8801498127340824,0.9363295880149812,2.209737827715356,6.554307116104869,5.19350811485643,3.470661672908864,2.521847690387016,2.153558052434457,4.563046192259676,5.955056179775282,3.5268414481897628,6.186017478152309,5.474406991260924,1.616729088639201,1.3108614232209737,1.2359550561797754,2.4906367041198503,4.6254681647940075,0.8177278401997503,1.6666666666666667,5.599250936329588,4.51310861423221,1.8352059925093633,3.1210986267166043,1.5106117353308364,6.866416978776529,4.868913857677903,1.1860174781523096,1.2484394506866416,5.461922596754057,4.425717852684145,1.9912609238451935,1.410736579275905,1.6978776529338326,6.429463171036204,3.470661672908864,1.8664169787765295,5.131086142322098,3.639200998751561,3.957553058676654,4.737827715355805,6.616729088639201,2.340823970037453,4.1136079900124844,4.556803995006242,5.736579275905119,6.616729088639201,3.8639200998751564,2.852684144818976,3.8389513108614235,3.714107365792759,2.322097378277154,6.367041198501872,4.1011235955056184,2.9463171036204745,6.367041198501872,2.3782771535580522,3.970037453183521,4.382022471910113,4.70661672908864,6.242197253433209,4.225967540574282,6.30461922596754,6.554307116104869,4.619225967540574,3.089887640449438,1.523096129837703,2.0786516853932584,6.616729088639201,4.069912609238452,3.3021223470661676,1.4794007490636705,6.679151061173534,4.681647940074906,5.705368289637952,2.1660424469413235,4.157303370786517,3.701622971285893,6.111111111111111,1.017478152309613,2.6217228464419473,2.446941323345818,2.958801498127341,5.930087390761548,1.4794007490636705,5.549313358302123,5.0187265917602994,4.694132334581773, +4.382022471910113,5.8739076154806495,2.9213483146067416,5.980024968789014,4.194756554307116,4.269662921348314,1.2047440699126093,3.9325842696629216,1.616729088639201,3.4581772784019975,4.176029962546816,1.9350811485642945,0.898876404494382,0.9675405742821472,2.2347066167290888,6.554307116104869,5.224719101123595,3.5018726591760303,2.546816479400749,2.1722846441947565,4.588014981273409,5.992509363295881,3.5518102372034956,6.217228464419476,5.50561797752809,1.647940074906367,1.34207240948814,1.260923845193508,2.521847690387016,4.65043695380774,0.8426966292134832,1.6978776529338326,5.617977528089888,4.538077403245943,1.8601747815230962,3.1460674157303368,1.5418227215980027,6.928838951310862,4.893882646691636,1.2047440699126093,1.2734082397003745,5.48689138576779,4.450686641697877,2.0224719101123596,1.4419475655430714,1.7228464419475658,6.491885143570538,3.508114856429463,1.8976279650436954,5.15605493133583,3.6641697877652937,3.9950062421972534,4.762796504369538,6.679151061173534,2.3657927590511862,4.132334581772784,4.588014981273409,5.774032459425719,6.616729088639201,3.888888888888889,2.871410736579276,3.8639200998751564,3.745318352059925,2.3470661672908864,6.367041198501872,4.1260923845193505,2.9712858926342074,6.367041198501872,2.4032459425717856,3.9950062421972534,4.413233458177278,4.7440699126092385,6.242197253433209,4.250936329588015,6.367041198501872,6.616729088639201,4.644194756554308,3.1210986267166043,1.5480649188514357,2.1161048689138577,6.679151061173534,4.1011235955056184,3.339575530586767,1.4981273408239701,6.679151061173534,4.70661672908864,5.730337078651686,2.1972534332084894,4.18227215980025,3.732833957553059,6.142322097378277,1.042446941323346,2.6529338327091136,2.471910112359551,2.9962546816479403,5.97378277153558,1.5106117353308364,5.580524344569288,5.043695380774032,4.719101123595506, +4.413233458177278,5.905118601747815,2.9525593008739075,6.004993757802747,4.219725343320849,4.294631710362047,1.229712858926342,3.957553058676654,1.647940074906367,3.4831460674157304,4.194756554307116,1.9600499375780276,0.9238451935081149,0.9987515605493134,2.259675405742821,6.616729088639201,5.2559300873907615,3.5268414481897628,2.571785268414482,2.1972534332084894,4.619225967540574,6.023720349563047,3.576779026217228,6.242197253433209,5.5305867665418225,1.6729088639200997,1.373283395755306,1.285892634207241,2.5530586766541825,4.675405742821473,0.867665418227216,1.735330836454432,5.64294631710362,4.556803995006242,1.8789013732833957,3.17103620474407,1.5792759051186018,6.928838951310862,4.918851435705368,1.223470661672909,1.2983770287141074,5.50561797752809,4.475655430711611,2.0536828963795255,1.4731585518102372,1.7540574282147314,6.491885143570538,3.5393258426966296,1.9350811485642945,5.187265917602996,3.6953807740324596,4.02621722846442,4.787765293383271,6.679151061173534,2.3907615480649187,4.151061173533084,4.612983770287141,5.811485642946318,6.679151061173534,3.920099875156055,2.8901373283395753,3.882646691635456,3.7827715355805243,2.3657927590511862,6.429463171036204,4.144818976279651,2.990012484394507,6.429463171036204,2.428214731585518,4.019975031210986,4.444444444444445,4.775280898876405,6.30461922596754,4.275905118601748,6.367041198501872,6.616729088639201,4.662921348314606,3.1585518102372037,1.5730337078651684,2.1473158551810236,6.679151061173534,4.132334581772784,3.370786516853933,1.523096129837703,6.741573033707866,4.7315855181023725,5.7553058676654185,2.2284644194756553,4.207240948813983,3.764044943820225,6.167290886392011,1.0674157303370786,2.68414481897628,2.4968789013732833,3.027465667915106,6.01123595505618,1.5418227215980027,5.611735330836455,5.068664169787765,4.737827715355805, +4.444444444444445,5.942571785268415,2.990012484394507,6.036204744069912,4.244694132334582,4.313358302122348,1.2546816479400749,3.9887640449438204,1.6791510611735332,3.508114856429463,4.219725343320849,1.9912609238451935,0.9488139825218477,1.0299625468164793,2.2846441947565546,6.616729088639201,5.287141073657928,3.5580524344569286,2.596754057428215,2.215980024968789,4.65043695380774,6.054931335830212,3.6017478152309614,6.30461922596754,5.561797752808988,1.704119850187266,1.3982521847690388,1.3108614232209737,2.5842696629213484,4.700374531835206,0.8926342072409489,1.766541822721598,5.66167290886392,4.581772784019975,1.9038701622971288,3.1897627965043696,1.6104868913857677,6.991260923845194,4.937578027465668,1.2484394506866416,1.3233458177278403,5.5305867665418225,4.506866416978776,2.091136079900125,1.4981273408239701,1.7790262172284643,6.554307116104869,3.5705368289637955,1.9662921348314608,5.218476903870163,3.7265917602996255,4.057428214731585,4.812734082397004,6.741573033707866,2.4157303370786516,4.176029962546816,4.644194756554308,5.848938826466916,6.679151061173534,3.9450686641697876,2.908863920099875,3.9013732833957557,3.81398252184769,2.3907615480649187,6.429463171036204,4.169787765293384,3.0149812734082393,6.429463171036204,2.453183520599251,4.044943820224719,4.475655430711611,4.806491885143571,6.30461922596754,4.307116104868914,6.429463171036204,6.616729088639201,4.681647940074906,3.1897627965043696,1.5980024968789013,2.184769038701623,6.741573033707866,4.16354556803995,3.4019975031210987,1.5418227215980027,6.741573033707866,4.750312109862672,5.7802746566791505,2.259675405742821,4.2322097378277155,3.801498127340824,6.198501872659176,1.0923845193508115,2.715355805243446,2.5280898876404496,3.058676654182272,6.048689138576779,1.5792759051186018,5.64294631710362,5.093632958801498,4.762796504369538, +4.475655430711611,5.97378277153558,3.0212234706616727,6.061173533083646,4.269662921348314,4.33832709113608,1.2734082397003745,4.013732833957553,1.704119850187266,3.5268414481897628,4.238451935081149,2.0224719101123596,0.9675405742821472,1.0549313358302121,2.309612983770287,6.616729088639201,5.318352059925093,3.589263420724095,2.6217228464419473,2.2409488139825218,4.675405742821473,6.086142322097379,3.6267166042446943,6.30461922596754,5.593008739076155,1.735330836454432,1.4294631710362047,1.3358302122347065,2.6154806491885143,4.725343320848939,0.9176029962546817,1.8039950062421974,5.686641697877653,4.600499375780275,1.9288389513108615,3.214731585518102,1.647940074906367,6.991260923845194,4.962546816479401,1.2671660424469413,1.34207240948814,5.549313358302123,4.531835205992509,2.122347066167291,1.529338327091136,1.8039950062421974,6.554307116104869,3.607990012484395,1.9975031210986267,5.249687890137328,3.7515605493133584,4.094881398252185,4.843945068664169,6.803995006242197,2.4406991260923845,4.194756554307116,4.675405742821473,5.8863920099875156,6.741573033707866,3.970037453183521,2.9275905118601746,3.926342072409488,3.8451935081148565,2.4094881398252186,6.491885143570538,4.188514357053683,3.033707865168539,6.429463171036204,2.478152309612984,4.069912609238452,4.506866416978776,4.837702871410737,6.367041198501872,4.332084893882647,6.429463171036204,6.679151061173534,4.70661672908864,3.227215980024969,1.6229712858926344,2.215980024968789,6.803995006242197,4.194756554307116,3.439450686641698,1.5667915106117354,6.803995006242197,4.775280898876405,5.805243445692884,2.2908863920099876,4.257178526841448,3.83270911360799,6.229712858926342,1.1173533083645444,2.746566791510612,2.5530586766541825,3.089887640449438,6.086142322097379,1.6104868913857677,5.674157303370786,5.118601747815231,4.787765293383271, +4.506866416978776,6.004993757802747,3.0524344569288386,6.092384519350812,4.294631710362047,4.3632958801498125,1.2983770287141074,4.038701622971286,1.735330836454432,3.5518102372034956,4.263420724094882,2.0474406991260925,0.9925093632958802,1.0861423220973783,2.33458177278402,6.679151061173534,5.34956304619226,3.620474406991261,2.6466916354556806,2.259675405742821,4.70661672908864,6.117353308364544,3.651685393258427,6.367041198501872,5.617977528089888,1.7602996254681649,1.4606741573033708,1.3607990012484397,2.6466916354556806,4.750312109862672,0.9425717852684146,1.8352059925093633,5.705368289637952,4.6254681647940075,1.9475655430711611,3.2397003745318353,1.6791510611735332,7.0536828963795255,4.987515605493134,1.285892634207241,1.3670411985018727,5.574282147315855,4.556803995006242,2.153558052434457,1.5605493133583022,1.8352059925093633,6.616729088639201,3.639200998751561,2.034956304619226,5.274656679151062,3.7827715355805243,4.1260923845193505,4.868913857677903,6.803995006242197,2.4656679151061174,4.213483146067416,4.700374531835206,5.9238451935081144,6.741573033707866,3.9950062421972534,2.9463171036204745,3.9450686641697876,3.8764044943820224,2.4344569288389515,6.491885143570538,4.213483146067416,3.058676654182272,6.491885143570538,2.5031210986267167,4.094881398252185,4.538077403245943,4.868913857677903,6.367041198501872,4.357053682896379,6.491885143570538,6.679151061173534,4.725343320848939,3.258426966292135,1.647940074906367,2.253433208489388,6.803995006242197,4.225967540574282,3.470661672908864,1.585518102372035,6.803995006242197,4.800249687890138,5.830212234706617,2.322097378277154,4.282147315855181,3.8639200998751564,6.242197253433209,1.136079900124844,2.777777777777778,2.578027465667915,3.1273408239700373,6.129837702871411,1.647940074906367,5.69912609238452,5.149812734082397,4.812734082397004, +4.538077403245943,6.0424469413233455,3.089887640449438,6.117353308364544,4.31960049937578,4.382022471910113,1.3233458177278403,4.063670411985019,1.766541822721598,3.576779026217228,4.282147315855181,2.0786516853932584,1.017478152309613,1.1173533083645444,2.359550561797753,6.679151061173534,5.380774032459426,3.651685393258427,2.671660424469413,2.2846441947565546,4.737827715355805,6.1485642946317105,3.6766541822721597,6.367041198501872,5.6491885143570535,1.7915106117353308,1.4918851435705367,1.3857677902621723,2.68414481897628,4.775280898876405,0.9675405742821472,1.8664169787765295,5.724094881398252,4.65043695380774,1.9725343320848938,3.2646691635455682,1.7166042446941323,7.0536828963795255,5.012484394506866,1.3046192259675407,1.3920099875156053,5.593008739076155,4.588014981273409,2.184769038701623,1.591760299625468,1.8601747815230962,6.616729088639201,3.6766541822721597,2.066167290886392,5.305867665418227,3.8077403245942576,4.16354556803995,4.893882646691636,6.866416978776529,2.4843945068664173,4.238451935081149,4.7315855181023725,5.961298377028713,6.741573033707866,4.02621722846442,2.9712858926342074,3.9637952559300875,3.9076154806491883,2.453183520599251,6.554307116104869,4.238451935081149,3.077403245942572,6.491885143570538,2.5280898876404496,4.1136079900124844,4.569288389513109,4.906367041198502,6.367041198501872,4.388264669163545,6.491885143570538,6.679151061173534,4.7440699126092385,3.2896379525593007,1.6729088639200997,2.2846441947565546,6.866416978776529,4.257178526841448,3.5018726591760303,1.6042446941323347,6.866416978776529,4.825218476903871,5.855181023720349,2.35330836454432,4.307116104868914,3.8951310861423223,6.30461922596754,1.161048689138577,2.808988764044944,2.6092384519350813,3.1585518102372037,6.167290886392011,1.6791510611735332,5.730337078651686,5.174781523096129,4.831460674157303, +4.563046192259676,6.073657927590512,3.1210986267166043,6.1485642946317105,4.344569288389513,4.406991260923846,1.348314606741573,4.0886392009987516,1.797752808988764,3.595505617977528,4.300873907615481,2.1098626716604243,1.0362047440699127,1.1485642946317103,2.3845193508114857,6.741573033707866,5.411985018726591,3.682896379525593,2.696629213483146,2.303370786516854,4.762796504369538,6.179775280898876,3.6953807740324596,6.429463171036204,5.68039950062422,1.8227215980024971,1.523096129837703,1.410736579275905,2.715355805243446,4.800249687890138,0.9925093632958802,1.9038701622971288,5.749063670411985,4.66916354556804,1.9975031210986267,3.2833957553058677,1.7478152309612984,7.116104868913857,5.0374531835206,1.3295880149812733,1.4169787765293382,5.617977528089888,4.612983770287141,2.2222222222222223,1.616729088639201,1.8851435705368291,6.679151061173534,3.7078651685393256,2.1036204744069913,5.337078651685393,3.8389513108614235,4.194756554307116,4.918851435705368,6.866416978776529,2.5093632958801497,4.257178526841448,4.7565543071161045,5.998751560549313,6.803995006242197,4.051186017478152,2.990012484394507,3.9887640449438204,3.938826466916354,2.478152309612984,6.554307116104869,4.257178526841448,3.102372034956305,6.491885143570538,2.546816479400749,4.138576779026217,4.600499375780275,4.937578027465668,6.429463171036204,4.413233458177278,6.554307116104869,6.741573033707866,4.769038701622971,3.3270911360799,1.6978776529338326,2.322097378277154,6.866416978776529,4.288389513108614,3.5393258426966296,1.6292134831460674,6.866416978776529,4.850187265917603,5.880149812734083,2.3845193508114857,4.332084893882647,3.926342072409488,6.30461922596754,1.1860174781523096,2.84019975031211,2.634207240948814,3.1897627965043696,6.20474406991261,1.7166042446941323,5.761548064918852,5.199750312109863,4.856429463171036, +4.594257178526841,6.104868913857677,3.15230961298377,6.173533083645444,4.369538077403246,4.431960049937578,1.3670411985018727,4.119850187265917,1.8227215980024971,3.620474406991261,4.325842696629214,2.1410736579275906,1.0611735330836456,1.1797752808988764,2.4094881398252186,6.741573033707866,5.443196004993759,3.714107365792759,2.7215980024968793,2.328339575530587,4.794007490636704,6.210986267166042,3.7203495630461925,6.429463171036204,5.705368289637952,1.8476903870162298,1.554307116104869,1.435705368289638,2.746566791510612,4.825218476903871,1.0112359550561798,1.9350811485642945,5.767790262172285,4.694132334581773,2.016229712858926,3.3083645443196006,1.7852684144818978,7.116104868913857,5.062421972534332,1.348314606741573,1.4419475655430714,5.636704119850187,4.637952559300874,2.253433208489388,1.647940074906367,1.916354556803995,6.679151061173534,3.7390761548064915,2.134831460674157,5.36828963795256,3.8639200998751564,4.2322097378277155,4.943820224719102,6.928838951310862,2.5343320848938826,4.282147315855181,4.787765293383271,6.036204744069912,6.803995006242197,4.0761548064918856,3.0087390761548067,4.00749063670412,3.970037453183521,2.5031210986267167,6.616729088639201,4.282147315855181,3.1210986267166043,6.554307116104869,2.571785268414482,4.16354556803995,4.631710362047441,4.9687890137328345,6.429463171036204,4.438202247191011,6.554307116104869,6.741573033707866,4.787765293383271,3.3583021223470664,1.7228464419475658,2.359550561797753,6.928838951310862,4.31960049937578,3.5705368289637955,1.647940074906367,6.928838951310862,4.875156054931336,5.905118601747815,2.4157303370786516,4.357053682896379,3.9637952559300875,6.367041198501872,1.2109862671660423,2.871410736579276,2.6591760299625467,3.227215980024969,6.242197253433209,1.7478152309612984,5.792759051186017,5.224719101123595,4.881398252184769, +4.6254681647940075,6.142322097378277,3.1897627965043696,6.20474406991261,4.394506866416979,4.450686641697877,1.3920099875156053,4.144818976279651,1.8539325842696628,3.6454431960049942,4.344569288389513,2.1660424469413235,1.079900124843945,1.2047440699126093,2.4344569288389515,6.803995006242197,5.474406991260924,3.745318352059925,2.746566791510612,2.3470661672908864,4.825218476903871,6.242197253433209,3.745318352059925,6.491885143570538,5.736579275905119,1.8789013732833957,1.5792759051186018,1.4606741573033708,2.777777777777778,4.850187265917603,1.0362047440699127,1.9662921348314608,5.792759051186017,4.712858926342073,2.0411985018726595,3.3333333333333335,1.8164794007490637,7.17852684144819,5.081148564294631,1.3670411985018727,1.466916354556804,5.66167290886392,4.662921348314606,2.2846441947565546,1.6791510611735332,1.941323345817728,6.741573033707866,3.776529338327091,2.1660424469413235,5.393258426966292,3.8951310861423223,4.263420724094882,4.9687890137328345,6.928838951310862,2.5593008739076155,4.300873907615481,4.812734082397004,6.073657927590512,6.866416978776529,4.107365792759051,3.027465667915106,4.02621722846442,4.001248439450687,2.521847690387016,6.616729088639201,4.300873907615481,3.1460674157303368,6.554307116104869,2.596754057428215,4.188514357053683,4.662921348314606,5.0,6.429463171036204,4.4694132334581775,6.616729088639201,6.741573033707866,4.812734082397004,3.3957553058676653,1.7478152309612984,2.3907615480649187,6.991260923845194,4.3508114856429465,3.6017478152309614,1.6729088639200997,6.928838951310862,4.893882646691636,5.930087390761548,2.446941323345818,4.382022471910113,3.9950062421972534,6.367041198501872,1.2359550561797754,2.902621722846442,2.68414481897628,3.258426966292135,6.30461922596754,1.7852684144818978,5.823970037453184,5.249687890137328,4.906367041198502, +4.656679151061174,6.173533083645444,3.2209737827715355,6.229712858926342,4.419475655430712,4.475655430711611,1.4169787765293382,4.169787765293384,1.8851435705368291,3.6641697877652937,4.369538077403246,2.1972534332084894,1.104868913857678,1.2359550561797754,2.459425717852684,6.803995006242197,5.50561797752809,3.776529338327091,2.7715355805243447,2.3720349563046192,4.850187265917603,6.30461922596754,3.7702871410736583,6.491885143570538,5.767790262172285,1.9101123595505618,1.6104868913857677,1.4856429463171037,2.808988764044944,4.875156054931336,1.0611735330836456,2.00374531835206,5.811485642946318,4.737827715355805,2.0599250936329585,3.3583021223470664,1.8539325842696628,7.17852684144819,5.106117353308365,1.3920099875156053,1.4856429463171037,5.686641697877653,4.694132334581773,2.3158551810237205,1.704119850187266,1.9662921348314608,6.741573033707866,3.8077403245942576,2.203495630461923,5.424469413233458,3.926342072409488,4.294631710362047,5.0,6.991260923845194,2.5842696629213484,4.31960049937578,4.843945068664169,6.111111111111111,6.866416978776529,4.132334581772784,3.046192259675406,4.051186017478152,4.032459425717852,2.546816479400749,6.679151061173534,4.325842696629214,3.1647940074906367,6.554307116104869,2.6217228464419473,4.213483146067416,4.694132334581773,5.0374531835206,6.491885143570538,4.49438202247191,6.616729088639201,6.803995006242197,4.831460674157303,3.4269662921348316,1.772784019975031,2.428214731585518,6.991260923845194,4.382022471910113,3.639200998751561,1.6916354556803994,6.991260923845194,4.918851435705368,5.955056179775282,2.478152309612984,4.406991260923846,4.02621722846442,6.429463171036204,1.260923845193508,2.933832709113608,2.715355805243446,3.2896379525593007,6.30461922596754,1.8164794007490637,5.855181023720349,5.274656679151062,4.925093632958801, +4.687890137328339,6.20474406991261,3.258426966292135,6.242197253433209,4.444444444444445,4.500624219725343,1.435705368289638,4.194756554307116,1.916354556803995,3.689138576779026,4.388264669163545,2.2284644194756553,1.1298377028714106,1.2671660424469413,2.4843945068664173,6.866416978776529,5.536828963795256,3.8077403245942576,2.7965043695380776,2.3907615480649187,4.881398252184769,6.30461922596754,3.7952559300873907,6.554307116104869,5.799001248439451,1.9350811485642945,1.6416978776529338,1.5106117353308364,2.84019975031211,4.900124843945068,1.0861423220973783,2.034956304619226,5.836454431960051,4.7565543071161045,2.084893882646692,3.3770287141073654,1.8851435705368291,7.240948813982522,5.131086142322098,1.410736579275905,1.5106117353308364,5.705368289637952,4.719101123595506,2.35330836454432,1.735330836454432,1.9975031210986267,6.803995006242197,3.8389513108614235,2.2347066167290888,5.455680399500624,3.951310861423221,4.332084893882647,5.024968789013733,7.0536828963795255,2.602996254681648,4.344569288389513,4.868913857677903,6.1485642946317105,6.866416978776529,4.157303370786517,3.0649188514357055,4.069912609238452,4.063670411985019,2.565543071161049,6.679151061173534,4.3508114856429465,3.1897627965043696,6.616729088639201,2.6466916354556806,4.238451935081149,4.725343320848939,5.068664169787765,6.491885143570538,4.519350811485642,6.679151061173534,6.803995006242197,4.850187265917603,3.464419475655431,1.797752808988764,2.459425717852684,7.0536828963795255,4.413233458177278,3.6704119850187267,1.7166042446941323,6.991260923845194,4.943820224719102,5.980024968789014,2.5093632958801497,4.431960049937578,4.057428214731585,6.429463171036204,1.285892634207241,2.965043695380774,2.740324594257179,3.3270911360799,6.367041198501872,1.8476903870162298,5.880149812734083,5.299625468164794,4.950062421972534, +4.719101123595506,6.242197253433209,3.2896379525593007,6.30461922596754,4.4694132334581775,4.519350811485642,1.4606741573033708,4.219725343320849,1.941323345817728,3.714107365792759,4.413233458177278,2.259675405742821,1.1485642946317103,1.2983770287141074,2.5093632958801497,6.866416978776529,5.568039950062421,3.8389513108614235,2.82147315855181,2.4157303370786516,4.912609238451935,6.367041198501872,3.8202247191011236,6.554307116104869,5.823970037453184,1.9662921348314608,1.6729088639200997,1.5355805243445693,2.871410736579276,4.925093632958801,1.1111111111111112,2.0724094881398254,5.855181023720349,4.781523096129837,2.1098626716604243,3.4019975031210987,1.9225967540574282,7.240948813982522,5.15605493133583,1.4294631710362047,1.5355805243445693,5.730337078651686,4.7440699126092385,2.3845193508114857,1.766541822721598,2.0224719101123596,6.803995006242197,3.8764044943820224,2.272159800249688,5.48689138576779,3.982521847690387,4.3632958801498125,5.049937578027466,7.0536828963795255,2.6279650436953808,4.3632958801498125,4.900124843945068,6.186017478152309,6.928838951310862,4.188514357053683,3.0836454431960054,4.0886392009987516,4.094881398252185,2.5905118601747814,6.741573033707866,4.369538077403246,3.2084893882646695,6.616729088639201,2.671660424469413,4.263420724094882,4.750312109862672,5.099875156054932,6.491885143570538,4.55056179775281,6.679151061173534,6.803995006242197,4.875156054931336,3.495630461922597,1.8227215980024971,2.4968789013732833,7.116104868913857,4.444444444444445,3.7078651685393256,1.735330836454432,7.0536828963795255,4.9687890137328345,6.01123595505618,2.5405742821473156,4.456928838951311,4.0886392009987516,6.491885143570538,1.3046192259675407,2.9962546816479403,2.7652933832709112,3.3583021223470664,6.429463171036204,1.8851435705368291,5.9113607990012484,5.324594257178527,4.975031210986267, +4.750312109862672,6.30461922596754,3.320848938826467,6.30461922596754,4.49438202247191,4.544319600499376,1.4856429463171037,4.250936329588015,1.9725343320848938,3.732833957553059,4.431960049937578,2.2846441947565546,1.1735330836454432,1.3295880149812733,2.5343320848938826,6.928838951310862,5.599250936329588,3.870162297128589,2.84019975031211,2.4344569288389515,4.937578027465668,6.367041198501872,3.8451935081148565,6.616729088639201,5.855181023720349,1.9975031210986267,1.704119850187266,1.5605493133583022,2.902621722846442,4.950062421972534,1.136079900124844,2.1036204744069913,5.880149812734083,4.806491885143571,2.128589263420724,3.4269662921348316,1.9600499375780276,7.303370786516854,5.181023720349563,1.4544319600499376,1.5605493133583022,5.749063670411985,4.775280898876405,2.4157303370786516,1.797752808988764,2.0474406991260925,6.866416978776529,3.9076154806491883,2.303370786516854,5.511860174781523,4.00749063670412,4.400749063670412,5.074906367041199,7.116104868913857,2.6529338327091136,4.382022471910113,4.931335830212235,6.223470661672909,6.928838951310862,4.213483146067416,3.102372034956305,4.1136079900124844,4.132334581772784,2.6092384519350813,6.741573033707866,4.394506866416979,3.227215980024969,6.616729088639201,2.696629213483146,4.288389513108614,4.781523096129837,5.131086142322098,6.554307116104869,4.575530586766542,6.741573033707866,6.866416978776529,4.893882646691636,3.533083645443196,1.8476903870162298,2.5343320848938826,7.116104868913857,4.475655430711611,3.7390761548064915,1.7602996254681649,7.0536828963795255,4.9937578027465666,6.036204744069912,2.571785268414482,4.4818976279650435,4.119850187265917,6.491885143570538,1.3295880149812733,3.027465667915106,2.790262172284644,3.3895131086142323,6.429463171036204,1.916354556803995,5.942571785268415,5.355805243445693,4.9937578027465666, +4.781523096129837,6.30461922596754,3.3583021223470664,6.367041198501872,4.519350811485642,4.563046192259676,1.5043695380774034,4.275905118601748,2.00374531835206,3.7578027465667914,4.450686641697877,2.3158551810237205,1.198501872659176,1.3545568039950062,2.5593008739076155,6.928838951310862,5.630461922596755,3.9013732833957557,2.865168539325843,2.453183520599251,4.9687890137328345,6.429463171036204,3.870162297128589,6.616729088639201,5.8863920099875156,2.0287141073657926,1.7290886392009988,1.585518102372035,2.933832709113608,4.975031210986267,1.161048689138577,2.134831460674157,5.8988764044943816,4.825218476903871,2.153558052434457,3.4456928838951315,1.9912609238451935,7.303370786516854,5.205992509363296,1.4731585518102372,1.585518102372035,5.774032459425719,4.800249687890138,2.446941323345818,1.8227215980024971,2.0786516853932584,6.866416978776529,3.938826466916354,2.33458177278402,5.543071161048689,4.038701622971286,4.431960049937578,5.099875156054932,7.116104868913857,2.6779026217228465,4.406991260923846,4.956304619225968,6.242197253433209,6.991260923845194,4.238451935081149,3.1273408239700373,4.132334581772784,4.16354556803995,2.634207240948814,6.803995006242197,4.413233458177278,3.2521847690387014,6.679151061173534,2.7215980024968793,4.313358302122348,4.812734082397004,5.168539325842697,6.554307116104869,4.606741573033708,6.741573033707866,6.866416978776529,4.912609238451935,3.564294631710362,1.8726591760299625,2.565543071161049,7.17852684144819,4.500624219725343,3.7702871410736583,1.7790262172284643,7.116104868913857,5.0187265917602994,6.061173533083646,2.602996254681648,4.506866416978776,4.157303370786517,6.491885143570538,1.3545568039950062,3.058676654182272,2.82147315855181,3.420724094881398,6.491885143570538,1.9538077403245941,5.97378277153558,5.380774032459426,5.0187265917602994, +4.806491885143571,6.367041198501872,3.3895131086142323,6.367041198501872,4.544319600499376,4.588014981273409,1.529338327091136,4.300873907615481,2.034956304619226,3.7827715355805243,4.475655430711611,2.3470661672908864,1.2172284644194757,1.3857677902621723,2.5842696629213484,6.991260923845194,5.66167290886392,3.9325842696629216,2.8901373283395753,2.478152309612984,5.0,6.429463171036204,3.8951310861423223,6.679151061173534,5.9113607990012484,2.0536828963795255,1.7602996254681649,1.6104868913857677,2.965043695380774,5.0,1.1860174781523096,2.1722846441947565,5.917602996254682,4.850187265917603,2.1722846441947565,3.470661672908864,2.0287141073657926,7.365792759051186,5.230961298377029,1.4918851435705367,1.6104868913857677,5.792759051186017,4.825218476903871,2.4843945068664173,1.8539325842696628,2.1036204744069913,6.928838951310862,3.9762796504369535,2.3720349563046192,5.574282147315855,4.063670411985019,4.4694132334581775,5.131086142322098,7.17852684144819,2.702871410736579,4.425717852684145,4.987515605493134,6.30461922596754,6.991260923845194,4.269662921348314,3.1460674157303368,4.151061173533084,4.194756554307116,2.6591760299625467,6.803995006242197,4.438202247191011,3.2709113607990012,6.679151061173534,2.746566791510612,4.33832709113608,4.843945068664169,5.199750312109863,6.616729088639201,4.631710362047441,6.803995006242197,6.866416978776529,4.937578027465668,3.6017478152309614,1.8976279650436954,2.602996254681648,7.17852684144819,4.531835205992509,3.8077403245942576,1.8039950062421974,7.116104868913857,5.043695380774032,6.086142322097379,2.634207240948814,4.531835205992509,4.188514357053683,6.554307116104869,1.3795255930087391,3.0836454431960054,2.8464419475655434,3.4581772784019975,6.491885143570538,1.9850187265917605,6.004993757802747,5.405742821473158,5.043695380774032, +4.837702871410737,6.367041198501872,3.420724094881398,6.367041198501872,4.569288389513109,4.612983770287141,1.554307116104869,4.325842696629214,2.0599250936329585,3.801498127340824,4.49438202247191,2.3720349563046192,1.2421972534332086,1.4169787765293382,2.6092384519350813,6.991260923845194,5.692883895131087,3.9637952559300875,2.9151061173533086,2.4968789013732833,5.024968789013733,6.491885143570538,3.9138576779026217,6.679151061173534,5.942571785268415,2.084893882646692,1.7915106117353308,1.6354556803995006,2.9962546816479403,5.024968789013733,1.2109862671660423,2.203495630461923,5.942571785268415,4.868913857677903,2.1972534332084894,3.495630461922597,2.0599250936329585,7.365792759051186,5.249687890137328,1.5106117353308364,1.6354556803995006,5.81772784019975,4.850187265917603,2.515605493133583,1.8851435705368291,2.128589263420724,6.928838951310862,4.00749063670412,2.4032459425717856,5.605493133583021,4.094881398252185,4.500624219725343,5.15605493133583,7.17852684144819,2.727840199750312,4.444444444444445,5.012484394506866,6.30461922596754,6.991260923845194,4.294631710362047,3.1647940074906367,4.176029962546816,4.225967540574282,2.6779026217228465,6.866416978776529,4.463171036204744,3.295880149812734,6.679151061173534,2.7715355805243447,4.3632958801498125,4.875156054931336,5.230961298377029,6.616729088639201,4.656679151061174,6.803995006242197,6.928838951310862,4.956304619225968,3.6329588014981273,1.9225967540574282,2.634207240948814,7.240948813982522,4.563046192259676,3.8389513108614235,1.8227215980024971,7.17852684144819,5.062421972534332,6.111111111111111,2.66541822721598,4.556803995006242,4.219725343320849,6.554307116104869,1.404494382022472,3.114856429463171,2.871410736579276,3.4893882646691634,6.554307116104869,2.0224719101123596,6.036204744069912,5.430711610486892,5.068664169787765, +4.868913857677903,6.429463171036204,3.4581772784019975,6.429463171036204,4.594257178526841,4.631710362047441,1.5730337078651684,4.357053682896379,2.091136079900125,3.826466916354557,4.519350811485642,2.4032459425717856,1.2671660424469413,1.4481897627965044,2.634207240948814,7.0536828963795255,5.724094881398252,3.9950062421972534,2.9400749063670415,2.521847690387016,5.056179775280899,6.491885143570538,3.938826466916354,6.741573033707866,5.97378277153558,2.1161048689138577,1.8227215980024971,1.6604244694132335,3.033707865168539,5.049937578027466,1.2359550561797754,2.2347066167290888,5.961298377028713,4.893882646691636,2.2222222222222223,3.5205992509363297,2.097378277153558,7.428214731585518,5.274656679151062,1.5355805243445693,1.6541822721598003,5.836454431960051,4.881398252184769,2.546816479400749,1.9101123595505618,2.15980024968789,6.991260923845194,4.044943820224719,2.4344569288389515,5.630461922596755,4.1260923845193505,4.531835205992509,5.181023720349563,7.240948813982522,2.746566791510612,4.4694132334581775,5.043695380774032,6.367041198501872,7.0536828963795255,4.31960049937578,3.183520599250936,4.194756554307116,4.257178526841448,2.702871410736579,6.866416978776529,4.4818976279650435,3.3146067415730336,6.741573033707866,2.790262172284644,4.388264669163545,4.906367041198502,5.262172284644195,6.616729088639201,4.687890137328339,6.803995006242197,6.928838951310862,4.975031210986267,3.6704119850187267,1.941323345817728,2.671660424469413,7.303370786516854,4.594257178526841,3.870162297128589,1.8476903870162298,7.17852684144819,5.087390761548065,6.1360799001248445,2.696629213483146,4.588014981273409,4.250936329588015,6.616729088639201,1.4294631710362047,3.1460674157303368,2.8963795255930087,3.5205992509363297,6.616729088639201,2.0536828963795255,6.061173533083646,5.455680399500624,5.087390761548065, +4.900124843945068,6.429463171036204,3.4893882646691634,6.429463171036204,4.619225967540574,4.656679151061174,1.5980024968789013,4.382022471910113,2.122347066167291,3.8451935081148565,4.538077403245943,2.4344569288389515,1.285892634207241,1.4731585518102372,2.6529338327091136,7.0536828963795255,5.7553058676654185,4.02621722846442,2.965043695380774,2.5405742821473156,5.087390761548065,6.554307116104869,3.9637952559300875,6.741573033707866,5.998751560549313,2.1410736579275906,1.8539325842696628,1.6853932584269664,3.0649188514357055,5.074906367041199,1.260923845193508,2.272159800249688,5.986267166042447,4.912609238451935,2.2409488139825218,3.5393258426966296,2.128589263420724,7.428214731585518,5.299625468164794,1.554307116104869,1.6791510611735332,5.861423220973783,4.906367041198502,2.578027465667915,1.941323345817728,2.184769038701623,6.991260923845194,4.0761548064918856,2.471910112359551,5.66167290886392,4.151061173533084,4.569288389513109,5.205992509363296,7.303370786516854,2.7715355805243447,4.488139825218477,5.068664169787765,6.429463171036204,7.0536828963795255,4.3508114856429465,3.202247191011236,4.213483146067416,4.288389513108614,2.7215980024968793,6.928838951310862,4.506866416978776,3.339575530586767,6.741573033707866,2.8152309612983775,4.413233458177278,4.937578027465668,5.299625468164794,6.679151061173534,4.712858926342073,6.866416978776529,6.928838951310862,5.0,3.701622971285893,1.9662921348314608,2.702871410736579,7.303370786516854,4.6254681647940075,3.9076154806491883,1.8664169787765295,7.240948813982522,5.1123595505617985,6.161048689138577,2.727840199750312,4.612983770287141,4.282147315855181,6.616729088639201,1.4481897627965044,3.1772784019975036,2.9275905118601746,3.5580524344569286,6.616729088639201,2.091136079900125,6.092384519350812,5.480649188514358,5.1123595505617985, +4.931335830212235,6.491885143570538,3.5205992509363297,6.491885143570538,4.644194756554308,4.681647940074906,1.6229712858926344,4.406991260923846,2.153558052434457,3.870162297128589,4.563046192259676,2.4656679151061174,1.3108614232209737,1.5043695380774034,2.6779026217228465,7.116104868913857,5.786516853932584,4.057428214731585,2.990012484394507,2.565543071161049,5.1123595505617985,6.554307116104869,3.9887640449438204,6.803995006242197,6.029962546816479,2.1722846441947565,1.8851435705368291,1.710362047440699,3.0961298377028714,5.099875156054932,1.285892634207241,2.303370786516854,6.004993757802747,4.937578027465668,2.2659176029962547,3.564294631710362,2.1660424469413235,7.49063670411985,5.324594257178527,1.5730337078651684,1.704119850187266,5.8863920099875156,4.931335830212235,2.6154806491885143,1.9725343320848938,2.209737827715356,7.0536828963795255,4.107365792759051,2.5031210986267167,5.692883895131087,4.18227215980025,4.600499375780275,5.230961298377029,7.303370786516854,2.7965043695380776,4.506866416978776,5.099875156054932,6.429463171036204,7.116104868913857,4.375780274656679,3.2209737827715355,4.238451935081149,4.31960049937578,2.746566791510612,6.928838951310862,4.525593008739076,3.3583021223470664,6.741573033707866,2.84019975031211,4.438202247191011,4.9687890137328345,5.33083645443196,6.679151061173534,4.737827715355805,6.866416978776529,6.991260923845194,5.0187265917602994,3.732833957553059,1.9912609238451935,2.740324594257179,7.365792759051186,4.656679151061174,3.938826466916354,1.8913857677902621,7.240948813982522,5.1373283395755305,6.186017478152309,2.7590511860174782,4.637952559300874,4.31960049937578,6.679151061173534,1.4731585518102372,3.2084893882646695,2.9525593008739075,3.589263420724095,6.679151061173534,2.122347066167291,6.123595505617978,5.50561797752809,5.1373283395755305, +4.962546816479401,6.491885143570538,3.5580524344569286,6.491885143570538,4.66916354556804,4.700374531835206,1.6416978776529338,4.431960049937578,2.1785268414481895,3.8951310861423223,4.581772784019975,2.4906367041198503,1.3358302122347065,1.5355805243445693,2.702871410736579,7.116104868913857,5.81772784019975,4.0886392009987516,3.0149812734082393,2.5842696629213484,5.143570536828964,6.616729088639201,4.013732833957553,6.803995006242197,6.061173533083646,2.203495630461923,1.9101123595505618,1.735330836454432,3.1273408239700373,5.118601747815231,1.3108614232209737,2.340823970037453,6.029962546816479,4.962546816479401,2.2846441947565546,3.589263420724095,2.1972534332084894,7.49063670411985,5.34956304619226,1.5980024968789013,1.7290886392009988,5.905118601747815,4.962546816479401,2.6466916354556806,2.00374531835206,2.2409488139825218,7.0536828963795255,4.144818976279651,2.5405742821473156,5.724094881398252,4.207240948813983,4.637952559300874,5.262172284644195,7.365792759051186,2.82147315855181,4.531835205992509,5.1248439450686645,6.491885143570538,7.116104868913857,4.400749063670412,3.2397003745318353,4.257178526841448,4.3508114856429465,2.7715355805243447,6.991260923845194,4.55056179775281,3.383270911360799,6.803995006242197,2.865168539325843,4.463171036204744,5.0,5.3620474406991265,6.679151061173534,4.769038701622971,6.928838951310862,6.991260923845194,5.0374531835206,3.7702871410736583,2.016229712858926,2.777777777777778,7.428214731585518,4.687890137328339,3.970037453183521,1.9101123595505618,7.303370786516854,5.162297128589263,6.210986267166042,2.790262172284644,4.662921348314606,4.3508114856429465,6.679151061173534,1.4981273408239701,3.2397003745318353,2.977528089887641,3.620474406991261,6.741573033707866,2.153558052434457,6.154806491885144,5.5305867665418225,5.162297128589263, +4.9937578027465666,6.554307116104869,3.589263420724095,6.554307116104869,4.694132334581773,4.725343320848939,1.6666666666666667,4.456928838951311,2.209737827715356,3.9138576779026217,4.600499375780275,2.521847690387016,1.3545568039950062,1.5667915106117354,2.727840199750312,7.17852684144819,5.848938826466916,4.119850187265917,3.0399500624219726,2.6092384519350813,5.174781523096129,6.616729088639201,4.038701622971286,6.866416978776529,6.086142322097379,2.2284644194756553,1.941323345817728,1.7602996254681649,3.1585518102372037,5.143570536828964,1.3358302122347065,2.3720349563046192,6.048689138576779,4.9812734082397006,2.309612983770287,3.6142322097378274,2.2347066167290888,7.553058676654182,5.3745318352059925,1.616729088639201,1.7540574282147314,5.930087390761548,4.987515605493134,2.6779026217228465,2.0287141073657926,2.2659176029962547,7.116104868913857,4.176029962546816,2.571785268414482,5.749063670411985,4.238451935081149,4.66916354556804,5.287141073657928,7.365792759051186,2.8464419475655434,4.55056179775281,5.15605493133583,6.491885143570538,7.116104868913857,4.431960049937578,3.258426966292135,4.275905118601748,4.382022471910113,2.790262172284644,6.991260923845194,4.575530586766542,3.4019975031210987,6.803995006242197,2.8901373283395753,4.488139825218477,5.031210986267166,5.393258426966292,6.741573033707866,4.794007490636704,6.928838951310862,6.991260923845194,5.062421972534332,3.801498127340824,2.0411985018726595,2.808988764044944,7.428214731585518,4.719101123595506,4.00749063670412,1.9350811485642945,7.303370786516854,5.187265917602996,6.235955056179775,2.82147315855181,4.687890137328339,4.382022471910113,6.741573033707866,1.523096129837703,3.2709113607990012,3.0087390761548067,3.6579275905118602,6.741573033707866,2.1910112359550564,6.186017478152309,5.561797752808988,5.181023720349563, +5.024968789013733,6.554307116104869,3.6267166042446943,6.554307116104869,4.719101123595506,4.750312109862672,1.6916354556803994,4.488139825218477,2.2409488139825218,3.938826466916354,4.6254681647940075,2.5530586766541825,1.3795255930087391,1.5980024968789013,2.752808988764045,7.17852684144819,5.880149812734083,4.151061173533084,3.0649188514357055,2.6279650436953808,5.199750312109863,6.679151061173534,4.063670411985019,6.866416978776529,6.117353308364544,2.259675405742821,1.9725343320848938,1.7852684144818978,3.1897627965043696,5.168539325842697,1.3607990012484397,2.4032459425717856,6.073657927590512,5.0062421972534334,2.33458177278402,3.6329588014981273,2.2659176029962547,7.553058676654182,5.393258426966292,1.6354556803995006,1.7790262172284643,5.948813982521848,5.012484394506866,2.715355805243446,2.0599250936329585,2.2908863920099876,7.116104868913857,4.207240948813983,2.602996254681648,5.7802746566791505,4.269662921348314,4.700374531835206,5.312109862671661,7.428214731585518,2.865168539325843,4.575530586766542,5.181023720349563,6.554307116104869,7.17852684144819,4.456928838951311,3.2771535580524347,4.300873907615481,4.413233458177278,2.8152309612983775,7.0536828963795255,4.594257178526841,3.4269662921348316,6.803995006242197,2.9151061173533086,4.51310861423221,5.062421972534332,5.424469413233458,6.741573033707866,4.818976279650437,6.991260923845194,7.0536828963795255,5.081148564294631,3.8389513108614235,2.066167290886392,2.8464419475655434,7.49063670411985,4.750312109862672,4.038701622971286,1.9538077403245941,7.365792759051186,5.212234706616729,6.242197253433209,2.852684144818976,4.712858926342073,4.413233458177278,6.741573033707866,1.5480649188514357,3.3021223470661676,3.033707865168539,3.689138576779026,6.803995006242197,2.2222222222222223,6.217228464419476,5.586766541822722,5.205992509363296, +5.056179775280899,6.616729088639201,3.6579275905118602,6.616729088639201,4.7440699126092385,4.769038701622971,1.710362047440699,4.51310861423221,2.272159800249688,3.9637952559300875,4.644194756554308,2.5842696629213484,1.404494382022472,1.6229712858926344,2.777777777777778,7.17852684144819,5.9113607990012484,4.18227215980025,3.089887640449438,2.6529338327091136,5.230961298377029,6.679151061173534,4.0886392009987516,6.928838951310862,6.1485642946317105,2.2908863920099876,2.00374531835206,1.8102372034956304,3.2209737827715355,5.19350811485643,1.3857677902621723,2.4406991260923845,6.092384519350812,5.024968789013733,2.35330836454432,3.6579275905118602,2.303370786516854,7.615480649188515,5.418227215980025,1.6541822721598003,1.8039950062421974,5.97378277153558,5.0374531835206,2.746566791510612,2.091136079900125,2.322097378277154,7.17852684144819,4.244694132334582,2.640449438202247,5.811485642946318,4.294631710362047,4.737827715355805,5.337078651685393,7.428214731585518,2.8901373283395753,4.594257178526841,5.212234706616729,6.616729088639201,7.17852684144819,4.4818976279650435,3.3021223470661676,4.31960049937578,4.444444444444445,2.8339575530586765,7.0536828963795255,4.619225967540574,3.4456928838951315,6.866416978776529,2.9400749063670415,4.538077403245943,5.093632958801498,5.461922596754057,6.803995006242197,4.850187265917603,6.991260923845194,7.0536828963795255,5.099875156054932,3.870162297128589,2.091136079900125,2.8776529338327093,7.49063670411985,4.781523096129837,4.069912609238452,1.9725343320848938,7.365792759051186,5.230961298377029,6.30461922596754,2.8838951310861427,4.737827715355805,4.444444444444445,6.803995006242197,1.5730337078651684,3.3333333333333335,3.058676654182272,3.7203495630461925,6.803995006242197,2.259675405742821,6.242197253433209,5.611735330836455,5.230961298377029, +5.081148564294631,6.616729088639201,3.689138576779026,6.616729088639201,4.775280898876405,4.794007490636704,1.735330836454432,4.538077403245943,2.2971285892634206,3.982521847690387,4.66916354556804,2.6092384519350813,1.4232209737827717,1.6541822721598003,2.8027465667915106,7.240948813982522,5.942571785268415,4.213483146067416,3.114856429463171,2.671660424469413,5.262172284644195,6.741573033707866,4.1136079900124844,6.928838951310862,6.179775280898876,2.3158551810237205,2.034956304619226,1.8352059925093633,3.2521847690387014,5.218476903870163,1.410736579275905,2.471910112359551,6.111111111111111,5.049937578027466,2.3782771535580522,3.682896379525593,2.33458177278402,7.615480649188515,5.443196004993759,1.6791510611735332,1.8227215980024971,5.992509363295881,5.068664169787765,2.777777777777778,2.1161048689138577,2.3470661672908864,7.17852684144819,4.275905118601748,2.671660424469413,5.842696629213483,4.325842696629214,4.769038701622971,5.3620474406991265,7.49063670411985,2.9151061173533086,4.612983770287141,5.243445692883895,6.616729088639201,7.240948813982522,4.51310861423221,3.320848938826467,4.33832709113608,4.4818976279650435,2.8589263420724094,7.116104868913857,4.637952559300874,3.470661672908864,6.866416978776529,2.965043695380774,4.563046192259676,5.118601747815231,5.493133583021224,6.803995006242197,4.875156054931336,7.0536828963795255,7.0536828963795255,5.1248439450686645,3.9076154806491883,2.1161048689138577,2.9151061173533086,7.553058676654182,4.812734082397004,4.107365792759051,1.9975031210986267,7.428214731585518,5.2559300873907615,6.30461922596754,2.9151061173533086,4.762796504369538,4.475655430711611,6.803995006242197,1.5980024968789013,3.3645443196004994,3.0836454431960054,3.7515605493133584,6.866416978776529,2.2908863920099876,6.30461922596754,5.636704119850187,5.2559300873907615, +5.1123595505617985,6.679151061173534,3.7265917602996255,6.679151061173534,4.800249687890138,4.818976279650437,1.7602996254681649,4.563046192259676,2.328339575530587,4.00749063670412,4.687890137328339,2.640449438202247,1.4481897627965044,1.6853932584269664,2.8277153558052435,7.240948813982522,5.97378277153558,4.238451935081149,3.139825218476904,2.696629213483146,5.287141073657928,6.741573033707866,4.132334581772784,6.991260923845194,6.20474406991261,2.3470661672908864,2.066167290886392,1.8601747815230962,3.2833957553058677,5.243445692883895,1.435705368289638,2.5031210986267167,6.1360799001248445,5.068664169787765,2.397003745318352,3.7078651685393256,2.3720349563046192,7.677902621722847,5.468164794007491,1.6978776529338326,1.8476903870162298,6.0174781523096135,5.093632958801498,2.808988764044944,2.1473158551810236,2.3720349563046192,7.240948813982522,4.307116104868914,2.7091136079900124,5.867665418227216,4.3508114856429465,4.806491885143571,5.393258426966292,7.553058676654182,2.9400749063670415,4.637952559300874,5.268414481897628,6.679151061173534,7.240948813982522,4.538077403245943,3.339575530586767,4.3632958801498125,4.51310861423221,2.8776529338327093,7.116104868913857,4.662921348314606,3.4893882646691634,6.866416978776529,2.990012484394507,4.588014981273409,5.149812734082397,5.524344569288389,6.803995006242197,4.900124843945068,7.0536828963795255,7.116104868913857,5.143570536828964,3.938826466916354,2.1410736579275906,2.9463171036204745,7.615480649188515,4.843945068664169,4.138576779026217,2.016229712858926,7.428214731585518,5.280898876404494,6.367041198501872,2.9463171036204745,4.787765293383271,4.51310861423221,6.866416978776529,1.616729088639201,3.3957553058676653,3.114856429463171,3.7890137328339577,6.928838951310862,2.328339575530587,6.30461922596754,5.66167290886392,5.274656679151062, +5.143570536828964,6.679151061173534,3.7578027465667914,6.679151061173534,4.825218476903871,4.837702871410737,1.7790262172284643,4.588014981273409,2.359550561797753,4.032459425717852,4.712858926342073,2.671660424469413,1.4731585518102372,1.7166042446941323,2.852684144818976,7.303370786516854,6.004993757802747,4.269662921348314,3.1647940074906367,2.715355805243446,5.318352059925093,6.803995006242197,4.157303370786517,6.991260923845194,6.235955056179775,2.3782771535580522,2.091136079900125,1.8851435705368291,3.3146067415730336,5.268414481897628,1.4606741573033708,2.5405742821473156,6.154806491885144,5.093632958801498,2.4219725343320846,3.7265917602996255,2.4032459425717856,7.677902621722847,5.493133583021224,1.7166042446941323,1.8726591760299625,6.036204744069912,5.118601747815231,2.8464419475655434,2.1785268414481895,2.4032459425717856,7.240948813982522,4.344569288389513,2.740324594257179,5.8988764044943816,4.382022471910113,4.837702871410737,5.418227215980025,7.553058676654182,2.965043695380774,4.656679151061174,5.299625468164794,6.679151061173534,7.303370786516854,4.563046192259676,3.3583021223470664,4.382022471910113,4.544319600499376,2.902621722846442,7.17852684144819,4.687890137328339,3.5143570536828963,6.928838951310862,3.0149812734082393,4.612983770287141,5.181023720349563,5.555555555555556,6.866416978776529,4.931335830212235,7.116104868913857,7.116104868913857,5.168539325842697,3.9762796504369535,2.1660424469413235,2.9837702871410734,7.615480649188515,4.875156054931336,4.169787765293384,2.0411985018726595,7.49063670411985,5.305867665418227,6.367041198501872,2.977528089887641,4.812734082397004,4.544319600499376,6.866416978776529,1.6416978776529338,3.4269662921348316,3.139825218476904,3.8202247191011236,6.928838951310862,2.359550561797753,6.367041198501872,5.686641697877653,5.299625468164794, +5.174781523096129,6.741573033707866,3.7890137328339577,6.679151061173534,4.850187265917603,4.8626716604244695,1.8039950062421974,4.619225967540574,2.3845193508114857,4.051186017478152,4.7315855181023725,2.702871410736579,1.4918851435705367,1.7478152309612984,2.8776529338327093,7.303370786516854,6.036204744069912,4.300873907615481,3.183520599250936,2.740324594257179,5.34956304619226,6.803995006242197,4.18227215980025,7.0536828963795255,6.242197253433209,2.4032459425717856,2.122347066167291,1.9101123595505618,3.3458177278401995,5.293383270911361,1.4856429463171037,2.571785268414482,6.179775280898876,5.118601747815231,2.446941323345818,3.7515605493133584,2.4406991260923845,7.740324594257178,5.5181023720349565,1.7415730337078652,1.8976279650436954,6.061173533083646,5.149812734082397,2.8776529338327093,2.209737827715356,2.428214731585518,7.303370786516854,4.375780274656679,2.7715355805243447,5.930087390761548,4.406991260923846,4.875156054931336,5.443196004993759,7.615480649188515,2.990012484394507,4.675405742821473,5.324594257178527,6.741573033707866,7.303370786516854,4.594257178526841,3.3770287141073654,4.400749063670412,4.575530586766542,2.9275905118601746,7.17852684144819,4.70661672908864,3.533083645443196,6.928838951310862,3.033707865168539,4.637952559300874,5.212234706616729,5.593008739076155,6.866416978776529,4.956304619225968,7.116104868913857,7.116104868913857,5.187265917602996,4.00749063670412,2.1910112359550564,3.0212234706616727,7.677902621722847,4.906367041198502,4.207240948813983,2.0599250936329585,7.49063670411985,5.33083645443196,6.367041198501872,3.0024968789013733,4.837702871410737,4.575530586766542,6.928838951310862,1.6666666666666667,3.4581772784019975,3.1647940074906367,3.8514357053682895,6.991260923845194,2.397003745318352,6.367041198501872,5.711610486891385,5.324594257178527, +5.205992509363296,6.803995006242197,3.826466916354557,6.741573033707866,4.875156054931336,4.887640449438202,1.8289637952559301,4.644194756554308,2.4157303370786516,4.0761548064918856,4.750312109862672,2.727840199750312,1.5168539325842696,1.772784019975031,2.902621722846442,7.365792759051186,6.067415730337078,4.332084893882647,3.2084893882646695,2.7590511860174782,5.3745318352059925,6.866416978776529,4.207240948813983,7.0536828963795255,6.30461922596754,2.4344569288389515,2.153558052434457,1.9350811485642945,3.383270911360799,5.318352059925093,1.5106117353308364,2.6092384519350813,6.198501872659176,5.1373283395755305,2.4656679151061174,3.776529338327091,2.471910112359551,7.740324594257178,5.543071161048689,1.7602996254681649,1.9225967540574282,6.079900124843945,5.174781523096129,2.908863920099875,2.2347066167290888,2.453183520599251,7.303370786516854,4.413233458177278,2.808988764044944,5.961298377028713,4.438202247191011,4.906367041198502,5.468164794007491,7.615480649188515,3.0087390761548067,4.700374531835206,5.355805243445693,6.803995006242197,7.303370786516854,4.619225967540574,3.3957553058676653,4.425717852684145,4.606741573033708,2.9463171036204745,7.240948813982522,4.7315855181023725,3.5580524344569286,6.991260923845194,3.058676654182272,4.662921348314606,5.243445692883895,5.6242197253433215,6.866416978776529,4.987515605493134,7.17852684144819,7.17852684144819,5.205992509363296,4.044943820224719,2.215980024968789,3.0524344569288386,7.740324594257178,4.937578027465668,4.238451935081149,2.084893882646692,7.553058676654182,5.355805243445693,6.429463171036204,3.033707865168539,4.8626716604244695,4.606741573033708,6.928838951310862,1.6916354556803994,3.4893882646691634,3.1897627965043696,3.888888888888889,7.0536828963795255,2.428214731585518,6.367041198501872,5.736579275905119,5.34956304619226, +5.237203495630462,6.803995006242197,3.857677902621723,6.741573033707866,4.900124843945068,4.906367041198502,1.8476903870162298,4.66916354556804,2.446941323345818,4.1011235955056184,4.775280898876405,2.7590511860174782,1.5418227215980027,1.8039950062421974,2.9275905118601746,7.365792759051186,6.092384519350812,4.3632958801498125,3.233458177278402,2.777777777777778,5.405742821473158,6.866416978776529,4.2322097378277155,7.116104868913857,6.30461922596754,2.4656679151061174,2.184769038701623,1.9600499375780276,3.4144818976279647,5.343320848938826,1.5355805243445693,2.640449438202247,6.223470661672909,5.162297128589263,2.4906367041198503,3.7952559300873907,2.5093632958801497,7.740324594257178,5.561797752808988,1.7790262172284643,1.9475655430711611,6.104868913857677,5.199750312109863,2.9400749063670415,2.2659176029962547,2.478152309612984,7.365792759051186,4.444444444444445,2.84019975031211,5.986267166042447,4.4694132334581775,4.937578027465668,5.493133583021224,7.677902621722847,3.033707865168539,4.719101123595506,5.380774032459426,6.803995006242197,7.365792759051186,4.644194756554308,3.4144818976279647,4.444444444444445,4.637952559300874,2.9712858926342074,7.240948813982522,4.750312109862672,3.576779026217228,6.991260923845194,3.0836454431960054,4.687890137328339,5.274656679151062,5.655430711610487,6.928838951310862,5.012484394506866,7.17852684144819,7.17852684144819,5.230961298377029,4.0761548064918856,2.2409488139825218,3.089887640449438,7.740324594257178,4.9687890137328345,4.269662921348314,2.1036204744069913,7.553058676654182,5.3745318352059925,6.429463171036204,3.0649188514357055,4.887640449438202,4.637952559300874,6.928838951310862,1.7166042446941323,3.5205992509363297,3.2209737827715355,3.920099875156055,7.0536828963795255,2.459425717852684,6.429463171036204,5.761548064918852,5.36828963795256, +5.268414481897628,6.866416978776529,3.888888888888889,6.803995006242197,4.925093632958801,4.931335830212235,1.8726591760299625,4.694132334581773,2.478152309612984,4.119850187265917,4.794007490636704,2.790262172284644,1.5605493133583022,1.8352059925093633,2.9525593008739075,7.428214731585518,6.123595505617978,4.394506866416979,3.258426966292135,2.8027465667915106,5.436953807740325,6.928838951310862,4.257178526841448,7.116104868913857,6.367041198501872,2.4906367041198503,2.215980024968789,1.9850187265917605,3.4456928838951315,5.36828963795256,1.5605493133583022,2.671660424469413,6.242197253433209,5.181023720349563,2.5093632958801497,3.8202247191011236,2.5405742821473156,7.8027465667915115,5.586766541822722,1.797752808988764,1.9662921348314608,6.129837702871411,5.224719101123595,2.977528089887641,2.2971285892634206,2.5093632958801497,7.365792759051186,4.475655430711611,2.871410736579276,6.0174781523096135,4.49438202247191,4.975031210986267,5.524344569288389,7.677902621722847,3.058676654182272,4.737827715355805,5.411985018726591,6.866416978776529,7.365792759051186,4.675405742821473,3.4332084893882646,4.463171036204744,4.66916354556804,2.990012484394507,7.303370786516854,4.775280898876405,3.6017478152309614,6.991260923845194,3.108614232209738,4.712858926342073,5.305867665418227,5.686641697877653,6.928838951310862,5.0374531835206,7.240948813982522,7.17852684144819,5.249687890137328,4.107365792759051,2.2659176029962547,3.1210986267166043,7.8027465667915115,5.0,4.307116104868914,2.128589263420724,7.615480649188515,5.399500624219725,6.491885143570538,3.0961298377028714,4.912609238451935,4.675405742821473,6.991260923845194,1.7415730337078652,3.5518102372034956,3.245942571785269,3.951310861423221,7.116104868913857,2.4968789013732833,6.429463171036204,5.792759051186017,5.393258426966292, +5.299625468164794,6.866416978776529,3.926342072409488,6.803995006242197,4.950062421972534,4.950062421972534,1.8976279650436954,4.719101123595506,2.5031210986267167,4.144818976279651,4.818976279650437,2.8152309612983775,1.585518102372035,1.8664169787765295,2.977528089887641,7.428214731585518,6.154806491885144,4.425717852684145,3.2833957553058677,2.82147315855181,5.461922596754057,6.928838951310862,4.282147315855181,7.17852684144819,6.367041198501872,2.521847690387016,2.2409488139825218,2.009987515605493,3.4769038701622974,5.393258426966292,1.585518102372035,2.7091136079900124,6.242197253433209,5.205992509363296,2.5343320848938826,3.8451935081148565,2.578027465667915,7.8027465667915115,5.611735330836455,1.8227215980024971,1.9912609238451935,6.1485642946317105,5.2559300873907615,3.0087390761548067,2.322097378277154,2.5343320848938826,7.428214731585518,4.51310861423221,2.908863920099875,6.048689138576779,4.525593008739076,5.0062421972534334,5.549313358302123,7.740324594257178,3.0836454431960054,4.762796504369538,5.436953807740325,6.866416978776529,7.428214731585518,4.700374531835206,3.451935081148564,4.488139825218477,4.700374531835206,3.0149812734082393,7.303370786516854,4.794007490636704,3.620474406991261,7.0536828963795255,3.1335830212234708,4.737827715355805,5.337078651685393,5.724094881398252,6.991260923845194,5.068664169787765,7.240948813982522,7.240948813982522,5.268414481897628,4.144818976279651,2.2908863920099876,3.1585518102372037,7.8027465667915115,5.031210986267166,4.33832709113608,2.1473158551810236,7.615480649188515,5.424469413233458,6.491885143570538,3.1273408239700373,4.937578027465668,4.70661672908864,6.991260923845194,1.7602996254681649,3.5830212234706615,3.2709113607990012,3.9887640449438204,7.17852684144819,2.5280898876404496,6.491885143570538,5.81772784019975,5.418227215980025, +5.324594257178527,6.928838951310862,3.957553058676654,6.866416978776529,4.975031210986267,4.975031210986267,1.916354556803995,4.750312109862672,2.5343320848938826,4.169787765293384,4.837702871410737,2.8464419475655434,1.6104868913857677,1.8976279650436954,3.0024968789013733,7.49063670411985,6.186017478152309,4.456928838951311,3.3083645443196006,2.8464419475655434,5.493133583021224,6.991260923845194,4.307116104868914,7.17852684144819,6.429463171036204,2.5530586766541825,2.272159800249688,2.034956304619226,3.508114856429463,5.418227215980025,1.6104868913857677,2.740324594257179,6.30461922596754,5.224719101123595,2.5593008739076155,3.870162297128589,2.6092384519350813,7.865168539325843,5.636704119850187,1.8414481897627966,2.016229712858926,6.173533083645444,5.280898876404494,3.0399500624219726,2.35330836454432,2.5593008739076155,7.428214731585518,4.544319600499376,2.9400749063670415,6.079900124843945,4.55056179775281,5.043695380774032,5.574282147315855,7.8027465667915115,3.108614232209738,4.781523096129837,5.468164794007491,6.928838951310862,7.428214731585518,4.725343320848939,3.4769038701622974,4.506866416978776,4.7315855181023725,3.033707865168539,7.365792759051186,4.818976279650437,3.6454431960049942,7.0536828963795255,3.1585518102372037,4.762796504369538,5.36828963795256,5.7553058676654185,6.991260923845194,5.093632958801498,7.303370786516854,7.240948813982522,5.293383270911361,4.176029962546816,2.3158551810237205,3.1960049937578026,7.865168539325843,5.062421972534332,4.375780274656679,2.1722846441947565,7.677902621722847,5.449438202247191,6.491885143570538,3.1585518102372037,4.962546816479401,4.737827715355805,7.0536828963795255,1.7852684144818978,3.6142322097378274,3.3021223470661676,4.019975031210986,7.17852684144819,2.565543071161049,6.491885143570538,5.842696629213483,5.436953807740325, +5.355805243445693,6.928838951310862,3.9887640449438204,6.866416978776529,5.0,5.0,1.941323345817728,4.775280898876405,2.565543071161049,4.188514357053683,4.856429463171036,2.8776529338327093,1.6292134831460674,1.9225967540574282,3.027465667915106,7.49063670411985,6.217228464419476,4.488139825218477,3.3333333333333335,2.865168539325843,5.524344569288389,6.991260923845194,4.332084893882647,7.240948813982522,6.429463171036204,2.578027465667915,2.303370786516854,2.0599250936329585,3.5393258426966296,5.443196004993759,1.6354556803995006,2.7715355805243447,6.30461922596754,5.249687890137328,2.578027465667915,3.888888888888889,2.6466916354556806,7.865168539325843,5.66167290886392,1.8601747815230962,2.0411985018726595,6.192259675405743,5.305867665418227,3.0711610486891385,2.3845193508114857,2.5905118601747814,7.49063670411985,4.575530586766542,2.977528089887641,6.104868913857677,4.581772784019975,5.074906367041199,5.599250936329588,7.8027465667915115,3.1335830212234708,4.800249687890138,5.493133583021224,6.991260923845194,7.428214731585518,4.750312109862672,3.495630461922597,4.525593008739076,4.762796504369538,3.058676654182272,7.365792759051186,4.843945068664169,3.6641697877652937,7.0536828963795255,3.183520599250936,4.787765293383271,5.399500624219725,5.786516853932584,6.991260923845194,5.118601747815231,7.303370786516854,7.240948813982522,5.312109862671661,4.213483146067416,2.340823970037453,3.227215980024969,7.927590511860175,5.087390761548065,4.406991260923846,2.1910112359550564,7.677902621722847,5.474406991260924,6.554307116104869,3.1897627965043696,4.987515605493134,4.769038701622971,7.0536828963795255,1.8102372034956304,3.6454431960049942,3.3270911360799,4.051186017478152,7.240948813982522,2.596754057428215,6.554307116104869,5.867665418227216,5.461922596754057, +5.3870162297128585,6.991260923845194,4.02621722846442,6.928838951310862,5.024968789013733,5.0187265917602994,1.9662921348314608,4.800249687890138,2.596754057428215,4.213483146067416,4.881398252184769,2.908863920099875,1.6541822721598003,1.9538077403245941,3.0524344569288386,7.553058676654182,6.242197253433209,4.519350811485642,3.3583021223470664,2.8901373283395753,5.549313358302123,7.0536828963795255,4.3508114856429465,7.240948813982522,6.491885143570538,2.6092384519350813,2.33458177278402,2.084893882646692,3.5705368289637955,5.468164794007491,1.6541822721598003,2.808988764044944,6.30461922596754,5.274656679151062,2.602996254681648,3.9138576779026217,2.6779026217228465,7.927590511860175,5.686641697877653,1.8851435705368291,2.066167290886392,6.217228464419476,5.337078651685393,3.108614232209738,2.4157303370786516,2.6154806491885143,7.49063670411985,4.612983770287141,3.0087390761548067,6.1360799001248445,4.606741573033708,5.1123595505617985,5.6242197253433215,7.865168539325843,3.15230961298377,4.825218476903871,5.524344569288389,6.991260923845194,7.49063670411985,4.781523096129837,3.5143570536828963,4.55056179775281,4.794007490636704,3.0836454431960054,7.428214731585518,4.8626716604244695,3.689138576779026,7.116104868913857,3.2084893882646695,4.812734082397004,5.430711610486892,5.81772784019975,7.0536828963795255,5.149812734082397,7.365792759051186,7.303370786516854,5.33083645443196,4.244694132334582,2.3657927590511862,3.2646691635455682,7.927590511860175,5.118601747815231,4.438202247191011,2.215980024968789,7.740324594257178,5.499375780274657,6.554307116104869,3.2209737827715355,5.012484394506866,4.800249687890138,7.116104868913857,1.8352059925093633,3.6766541822721597,3.352059925093633,4.082397003745319,7.240948813982522,2.634207240948814,6.554307116104869,5.892634207240949,5.48689138576779, +5.418227215980025,6.991260923845194,4.057428214731585,6.928838951310862,5.049937578027466,5.043695380774032,1.9850187265917605,4.825218476903871,2.6217228464419473,4.238451935081149,4.900124843945068,2.933832709113608,1.6791510611735332,1.9850187265917605,3.077403245942572,7.553058676654182,6.30461922596754,4.55056179775281,3.383270911360799,2.908863920099875,5.580524344569288,7.0536828963795255,4.375780274656679,7.303370786516854,6.491885143570538,2.640449438202247,2.3657927590511862,2.1098626716604243,3.6017478152309614,5.493133583021224,1.6791510611735332,2.84019975031211,6.367041198501872,5.293383270911361,2.6217228464419473,3.938826466916354,2.715355805243446,7.927590511860175,5.711610486891385,1.9038701622971288,2.091136079900125,6.235955056179775,5.3620474406991265,3.139825218476904,2.4406991260923845,2.640449438202247,7.553058676654182,4.644194756554308,3.0399500624219726,6.167290886392011,4.637952559300874,5.143570536828964,5.655430711610487,7.865168539325843,3.1772784019975036,4.843945068664169,5.555555555555556,7.0536828963795255,7.49063670411985,4.806491885143571,3.533083645443196,4.569288389513109,4.831460674157303,3.102372034956305,7.428214731585518,4.887640449438202,3.7078651685393256,7.116104868913857,3.233458177278402,4.837702871410737,5.461922596754057,5.855181023720349,7.0536828963795255,5.174781523096129,7.365792759051186,7.303370786516854,5.355805243445693,4.282147315855181,2.3907615480649187,3.295880149812734,7.990012484394507,5.149812734082397,4.475655430711611,2.2347066167290888,7.740324594257178,5.524344569288389,6.616729088639201,3.2521847690387014,5.0374531835206,4.831460674157303,7.116104868913857,1.8601747815230962,3.701622971285893,3.3770287141073654,4.119850187265917,7.303370786516854,2.66541822721598,6.616729088639201,5.917602996254682,5.511860174781523, +5.449438202247191,7.0536828963795255,4.094881398252185,6.928838951310862,5.074906367041199,5.068664169787765,2.009987515605493,4.850187265917603,2.6529338327091136,4.257178526841448,4.925093632958801,2.965043695380774,1.6978776529338326,2.016229712858926,3.102372034956305,7.615480649188515,6.30461922596754,4.581772784019975,3.408239700374532,2.933832709113608,5.611735330836455,7.116104868913857,4.400749063670412,7.303370786516854,6.554307116104869,2.66541822721598,2.397003745318352,2.134831460674157,3.6329588014981273,5.5181023720349565,1.704119850187266,2.8776529338327093,6.367041198501872,5.318352059925093,2.6466916354556806,3.9637952559300875,2.752808988764045,7.990012484394507,5.730337078651686,1.9225967540574282,2.1161048689138577,6.242197253433209,5.3870162297128585,3.17103620474407,2.471910112359551,2.671660424469413,7.553058676654182,4.675405742821473,3.077403245942572,6.198501872659176,4.66916354556804,5.174781523096129,5.68039950062422,7.927590511860175,3.202247191011236,4.868913857677903,5.580524344569288,7.0536828963795255,7.553058676654182,4.831460674157303,3.5518102372034956,4.588014981273409,4.8626716604244695,3.1273408239700373,7.428214731585518,4.906367041198502,3.732833957553059,7.116104868913857,3.258426966292135,4.8626716604244695,5.493133583021224,5.8863920099875156,7.0536828963795255,5.199750312109863,7.428214731585518,7.303370786516854,5.3745318352059925,4.313358302122348,2.4157303370786516,3.3333333333333335,7.990012484394507,5.181023720349563,4.506866416978776,2.259675405742821,7.8027465667915115,5.543071161048689,6.616729088639201,3.2833957553058677,5.062421972534332,4.868913857677903,7.17852684144819,1.8851435705368291,3.732833957553059,3.408239700374532,4.151061173533084,7.365792759051186,2.696629213483146,6.616729088639201,5.942571785268415,5.5305867665418225, +5.480649188514358,7.0536828963795255,4.1260923845193505,6.991260923845194,5.099875156054932,5.087390761548065,2.034956304619226,4.881398252184769,2.68414481897628,4.282147315855181,4.943820224719102,2.9962546816479403,1.7228464419475658,2.0474406991260925,3.1210986267166043,7.615480649188515,6.367041198501872,4.612983770287141,3.4332084893882646,2.9525593008739075,5.636704119850187,7.116104868913857,4.425717852684145,7.365792759051186,6.554307116104869,2.696629213483146,2.4219725343320846,2.15980024968789,3.6641697877652937,5.543071161048689,1.7290886392009988,2.908863920099875,6.367041198501872,5.337078651685393,2.671660424469413,3.982521847690387,2.7840199750312107,7.990012484394507,5.7553058676654185,1.9475655430711611,2.134831460674157,6.30461922596754,5.411985018726591,3.202247191011236,2.5031210986267167,2.696629213483146,7.615480649188515,4.712858926342073,3.108614232209738,6.223470661672909,4.694132334581773,5.212234706616729,5.705368289637952,7.927590511860175,3.227215980024969,4.887640449438202,5.611735330836455,7.116104868913857,7.553058676654182,4.8626716604244695,3.5705368289637955,4.612983770287141,4.893882646691636,3.1460674157303368,7.49063670411985,4.931335830212235,3.7515605493133584,7.17852684144819,3.2771535580524347,4.887640449438202,5.5181023720349565,5.917602996254682,7.116104868913857,5.230961298377029,7.428214731585518,7.365792759051186,5.393258426966292,4.3508114856429465,2.4406991260923845,3.3645443196004994,8.05243445692884,5.212234706616729,4.538077403245943,2.278401997503121,7.8027465667915115,5.568039950062421,6.616729088639201,3.3146067415730336,5.087390761548065,4.900124843945068,7.17852684144819,1.9101123595505618,3.764044943820225,3.4332084893882646,4.18227215980025,7.365792759051186,2.7340823970037453,6.679151061173534,5.967540574282147,5.555555555555556, +5.511860174781523,7.116104868913857,4.157303370786517,6.991260923845194,5.1248439450686645,5.1123595505617985,2.0536828963795255,4.906367041198502,2.715355805243446,4.307116104868914,4.9687890137328345,3.027465667915106,1.7478152309612984,2.0724094881398254,3.1460674157303368,7.677902621722847,6.367041198501872,4.644194756554308,3.4581772784019975,2.977528089887641,5.667915106117353,7.17852684144819,4.450686641697877,7.365792759051186,6.616729088639201,2.727840199750312,2.453183520599251,2.184769038701623,3.6953807740324596,5.568039950062421,1.7540574282147314,2.9400749063670415,6.429463171036204,5.3620474406991265,2.690387016229713,4.00749063670412,2.82147315855181,8.05243445692884,5.7802746566791505,1.9662921348314608,2.15980024968789,6.30461922596754,5.443196004993759,3.2397003745318353,2.5280898876404496,2.7215980024968793,7.615480649188515,4.7440699126092385,3.1460674157303368,6.242197253433209,4.725343320848939,5.243445692883895,5.730337078651686,7.990012484394507,3.2521847690387014,4.906367041198502,5.636704119850187,7.17852684144819,7.553058676654182,4.887640449438202,3.589263420724095,4.631710362047441,4.925093632958801,3.17103620474407,7.49063670411985,4.956304619225968,3.776529338327091,7.17852684144819,3.3021223470661676,4.912609238451935,5.549313358302123,5.948813982521848,7.116104868913857,5.2559300873907615,7.49063670411985,7.365792759051186,5.418227215980025,4.382022471910113,2.4656679151061174,3.4019975031210987,8.11485642946317,5.243445692883895,4.575530586766542,2.303370786516854,7.865168539325843,5.593008739076155,6.679151061173534,3.3458177278401995,5.118601747815231,4.931335830212235,7.240948813982522,1.9288389513108615,3.7952559300873907,3.4581772784019975,4.219725343320849,7.428214731585518,2.7652933832709112,6.679151061173534,5.998751560549313,5.580524344569288, +5.543071161048689,7.116104868913857,4.194756554307116,7.0536828963795255,5.149812734082397,5.1373283395755305,2.0786516853932584,4.931335830212235,2.740324594257179,4.325842696629214,4.987515605493134,3.0524344569288386,1.766541822721598,2.1036204744069913,3.17103620474407,7.677902621722847,6.429463171036204,4.675405742821473,3.4831460674157304,2.9962546816479403,5.69912609238452,7.17852684144819,4.475655430711611,7.428214731585518,6.616729088639201,2.752808988764045,2.4843945068664173,2.209737827715356,3.732833957553059,5.593008739076155,1.7790262172284643,2.977528089887641,6.429463171036204,5.380774032459426,2.715355805243446,4.032459425717852,2.852684144818976,8.05243445692884,5.805243445692884,1.9850187265917605,2.184769038701623,6.30461922596754,5.468164794007491,3.2709113607990012,2.5593008739076155,2.752808988764045,7.677902621722847,4.781523096129837,3.1772784019975036,6.30461922596754,4.750312109862672,5.280898876404494,5.7553058676654185,8.05243445692884,3.2709113607990012,4.931335830212235,5.667915106117353,7.17852684144819,7.615480649188515,4.912609238451935,3.607990012484395,4.65043695380774,4.956304619225968,3.1960049937578026,7.553058676654182,4.975031210986267,3.7952559300873907,7.17852684144819,3.3270911360799,4.937578027465668,5.580524344569288,5.980024968789014,7.17852684144819,5.280898876404494,7.49063670411985,7.365792759051186,5.436953807740325,4.419475655430712,2.4906367041198503,3.439450686641698,8.11485642946317,5.274656679151062,4.606741573033708,2.322097378277154,7.865168539325843,5.617977528089888,6.679151061173534,3.3770287141073654,5.143570536828964,4.962546816479401,7.240948813982522,1.9538077403245941,3.826466916354557,3.4831460674157304,4.250936329588015,7.49063670411985,2.8027465667915106,6.741573033707866,6.023720349563047,5.605493133583021, +5.574282147315855,7.17852684144819,4.225967540574282,7.0536828963795255,5.174781523096129,5.15605493133583,2.1036204744069913,4.956304619225968,2.7715355805243447,4.3508114856429465,5.0062421972534334,3.0836454431960054,1.7915106117353308,2.134831460674157,3.1960049937578026,7.677902621722847,6.429463171036204,4.70661672908864,3.508114856429463,3.0212234706616727,5.724094881398252,7.240948813982522,4.500624219725343,7.428214731585518,6.616729088639201,2.7840199750312107,2.515605493133583,2.2347066167290888,3.764044943820225,5.617977528089888,1.8039950062421974,3.0087390761548067,6.429463171036204,5.405742821473158,2.7340823970037453,4.051186017478152,2.8901373283395753,8.11485642946317,5.830212234706617,2.00374531835206,2.209737827715356,6.367041198501872,5.493133583021224,3.3021223470661676,2.5905118601747814,2.777777777777778,7.677902621722847,4.812734082397004,3.2084893882646695,6.30461922596754,4.781523096129837,5.312109862671661,5.786516853932584,8.05243445692884,3.295880149812734,4.950062421972534,5.692883895131087,7.240948813982522,7.615480649188515,4.943820224719102,3.6267166042446943,4.675405742821473,4.987515605493134,3.214731585518102,7.553058676654182,5.0,3.8202247191011236,7.240948813982522,3.352059925093633,4.962546816479401,5.611735330836455,6.0174781523096135,7.17852684144819,5.312109862671661,7.553058676654182,7.428214731585518,5.455680399500624,4.450686641697877,2.515605493133583,3.470661672908864,8.177278401997503,5.305867665418227,4.637952559300874,2.340823970037453,7.927590511860175,5.64294631710362,6.741573033707866,3.408239700374532,5.168539325842697,4.9937578027465666,7.303370786516854,1.978776529338327,3.857677902621723,3.5143570536828963,4.282147315855181,7.49063670411985,2.8339575530586765,6.741573033707866,6.048689138576779,5.6242197253433215, +5.599250936329588,7.17852684144819,4.257178526841448,7.116104868913857,5.199750312109863,5.181023720349563,2.122347066167291,4.987515605493134,2.8027465667915106,4.375780274656679,5.031210986267166,3.114856429463171,1.8102372034956304,2.1660424469413235,3.2209737827715355,7.740324594257178,6.491885143570538,4.737827715355805,3.5268414481897628,3.0399500624219726,5.7553058676654185,7.240948813982522,4.525593008739076,7.49063670411985,6.679151061173534,2.8152309612983775,2.546816479400749,2.259675405742821,3.7952559300873907,5.64294631710362,1.8289637952559301,3.0399500624219726,6.491885143570538,5.430711610486892,2.7590511860174782,4.0761548064918856,2.9213483146067416,8.11485642946317,5.855181023720349,2.0287141073657926,2.2347066167290888,6.367041198501872,5.524344569288389,3.3333333333333335,2.6217228464419473,2.8027465667915106,7.740324594257178,4.843945068664169,3.245942571785269,6.367041198501872,4.806491885143571,5.343320848938826,5.811485642946318,8.11485642946317,3.320848938826467,4.9687890137328345,5.724094881398252,7.240948813982522,7.677902621722847,4.9687890137328345,3.651685393258427,4.694132334581773,5.0187265917602994,3.2397003745318353,7.615480649188515,5.0187265917602994,3.8389513108614235,7.240948813982522,3.3770287141073654,4.987515605493134,5.64294631710362,6.048689138576779,7.17852684144819,5.337078651685393,7.553058676654182,7.428214731585518,5.480649188514358,4.488139825218477,2.5405742821473156,3.508114856429463,8.239700374531834,5.337078651685393,4.675405742821473,2.3657927590511862,7.927590511860175,5.667915106117353,6.741573033707866,3.439450686641698,5.19350811485643,5.031210986267166,7.303370786516854,2.00374531835206,3.888888888888889,3.5393258426966296,4.31960049937578,7.553058676654182,2.871410736579276,6.803995006242197,6.073657927590512,5.6491885143570535, +5.630461922596755,7.240948813982522,4.294631710362047,7.116104868913857,5.224719101123595,5.205992509363296,2.1473158551810236,5.012484394506866,2.8339575530586765,4.394506866416979,5.049937578027466,3.139825218476904,1.8352059925093633,2.1910112359550564,3.245942571785269,7.740324594257178,6.491885143570538,4.769038701622971,3.5518102372034956,3.0649188514357055,5.786516853932584,7.303370786516854,4.55056179775281,7.49063670411985,6.679151061173534,2.84019975031211,2.578027465667915,2.2846441947565546,3.826466916354557,5.667915106117353,1.8539325842696628,3.077403245942572,6.491885143570538,5.449438202247191,2.7840199750312107,4.1011235955056184,2.958801498127341,8.177278401997503,5.8739076154806495,2.0474406991260925,2.259675405742821,6.367041198501872,5.549313358302123,3.370786516853933,2.6466916354556806,2.8339575530586765,7.740324594257178,4.881398252184769,3.2771535580524347,6.367041198501872,4.837702871410737,5.380774032459426,5.836454431960051,8.11485642946317,3.3458177278401995,4.9937578027465666,5.749063670411985,7.303370786516854,7.677902621722847,4.9937578027465666,3.6704119850187267,4.712858926342073,5.049937578027466,3.258426966292135,7.615480649188515,5.043695380774032,3.8639200998751564,7.240948813982522,3.4019975031210987,5.012484394506866,5.674157303370786,6.079900124843945,7.240948813982522,5.3620474406991265,7.615480649188515,7.428214731585518,5.499375780274657,4.519350811485642,2.565543071161049,3.5393258426966296,8.239700374531834,5.36828963795256,4.70661672908864,2.3845193508114857,7.990012484394507,5.692883895131087,6.741573033707866,3.470661672908864,5.218476903870163,5.062421972534332,7.365792759051186,2.0287141073657926,3.920099875156055,3.564294631710362,4.3508114856429465,7.553058676654182,2.902621722846442,6.803995006242197,6.098626716604246,5.674157303370786, +5.66167290886392,7.303370786516854,4.325842696629214,7.17852684144819,5.249687890137328,5.224719101123595,2.1722846441947565,5.0374531835206,2.8589263420724094,4.419475655430712,5.074906367041199,3.17103620474407,1.8601747815230962,2.2222222222222223,3.2709113607990012,7.8027465667915115,6.554307116104869,4.800249687890138,3.576779026217228,3.0836454431960054,5.811485642946318,7.303370786516854,4.569288389513109,7.553058676654182,6.741573033707866,2.871410736579276,2.602996254681648,2.309612983770287,3.857677902621723,5.692883895131087,1.8789013732833957,3.108614232209738,6.491885143570538,5.474406991260924,2.8027465667915106,4.1260923845193505,2.990012484394507,8.177278401997503,5.8988764044943816,2.066167290886392,2.278401997503121,6.429463171036204,5.574282147315855,3.4019975031210987,2.6779026217228465,2.8589263420724094,7.8027465667915115,4.912609238451935,3.3146067415730336,6.429463171036204,4.868913857677903,5.411985018726591,5.861423220973783,8.177278401997503,3.370786516853933,5.012484394506866,5.7802746566791505,7.365792759051186,7.677902621722847,5.024968789013733,3.689138576779026,4.737827715355805,5.081148564294631,3.2833957553058677,7.677902621722847,5.068664169787765,3.882646691635456,7.303370786516854,3.4269662921348316,5.0374531835206,5.705368289637952,6.111111111111111,7.240948813982522,5.393258426966292,7.615480649188515,7.49063670411985,5.524344569288389,4.55056179775281,2.5905118601747814,3.576779026217228,8.302122347066168,5.399500624219725,4.737827715355805,2.4094881398252186,7.990012484394507,5.711610486891385,6.803995006242197,3.5018726591760303,5.243445692883895,5.093632958801498,7.365792759051186,2.0536828963795255,3.951310861423221,3.595505617977528,4.382022471910113,7.615480649188515,2.9400749063670415,6.866416978776529,6.123595505617978,5.69912609238452, +5.692883895131087,7.303370786516854,4.357053682896379,7.17852684144819,5.274656679151062,5.249687890137328,2.1910112359550564,5.062421972534332,2.8901373283395753,4.444444444444445,5.093632958801498,3.202247191011236,1.8789013732833957,2.253433208489388,3.295880149812734,7.8027465667915115,6.554307116104869,4.831460674157303,3.6017478152309614,3.102372034956305,5.842696629213483,7.365792759051186,4.594257178526841,7.553058676654182,6.741573033707866,2.902621722846442,2.634207240948814,2.33458177278402,3.888888888888889,5.711610486891385,1.9038701622971288,3.1460674157303368,6.554307116104869,5.493133583021224,2.8277153558052435,4.144818976279651,3.027465667915106,8.239700374531834,5.9238451935081144,2.091136079900125,2.303370786516854,6.429463171036204,5.599250936329588,3.4332084893882646,2.7091136079900124,2.8838951310861427,7.8027465667915115,4.943820224719102,3.3458177278401995,6.429463171036204,4.893882646691636,5.449438202247191,5.8863920099875156,8.177278401997503,3.3957553058676653,5.031210986267166,5.805243445692884,7.365792759051186,7.740324594257178,5.049937578027466,3.7078651685393256,4.7565543071161045,5.1123595505617985,3.3021223470661676,7.677902621722847,5.087390761548065,3.9076154806491883,7.303370786516854,3.451935081148564,5.062421972534332,5.736579275905119,6.1485642946317105,7.240948813982522,5.418227215980025,7.677902621722847,7.49063670411985,5.543071161048689,4.588014981273409,2.6154806491885143,3.6142322097378274,8.302122347066168,5.430711610486892,4.775280898876405,2.428214731585518,8.05243445692884,5.736579275905119,6.803995006242197,3.533083645443196,5.268414481897628,5.1248439450686645,7.365792759051186,2.0724094881398254,3.982521847690387,3.620474406991261,4.413233458177278,7.677902621722847,2.9712858926342074,6.866416978776529,6.1485642946317105,5.717852684144819, +5.724094881398252,7.365792759051186,4.394506866416979,7.240948813982522,5.299625468164794,5.274656679151062,2.215980024968789,5.087390761548065,2.9213483146067416,4.463171036204744,5.118601747815231,3.233458177278402,1.9038701622971288,2.2846441947565546,3.320848938826467,7.865168539325843,6.616729088639201,4.8626716604244695,3.6267166042446943,3.1273408239700373,5.8739076154806495,7.365792759051186,4.619225967540574,7.615480649188515,6.803995006242197,2.9275905118601746,2.66541822721598,2.359550561797753,3.920099875156055,5.736579275905119,1.9288389513108615,3.1772784019975036,6.554307116104869,5.5181023720349565,2.8464419475655434,4.169787765293384,3.058676654182272,8.239700374531834,5.948813982521848,2.1098626716604243,2.328339575530587,6.429463171036204,5.630461922596755,3.464419475655431,2.7340823970037453,2.9151061173533086,7.865168539325843,4.9812734082397006,3.3770287141073654,6.491885143570538,4.925093632958801,5.480649188514358,5.917602996254682,8.239700374531834,3.4144818976279647,5.056179775280899,5.836454431960051,7.428214731585518,7.740324594257178,5.074906367041199,3.7265917602996255,4.775280898876405,5.143570536828964,3.3270911360799,7.740324594257178,5.1123595505617985,3.926342072409488,7.303370786516854,3.4769038701622974,5.081148564294631,5.767790262172285,6.179775280898876,7.303370786516854,5.449438202247191,7.677902621722847,7.49063670411985,5.561797752808988,4.619225967540574,2.640449438202247,3.6454431960049942,8.3645443196005,5.461922596754057,4.806491885143571,2.453183520599251,8.05243445692884,5.761548064918852,6.866416978776529,3.564294631710362,5.293383270911361,5.15605493133583,7.428214731585518,2.097378277153558,4.013732833957553,3.6454431960049942,4.450686641697877,7.677902621722847,3.0024968789013733,6.928838951310862,6.173533083645444,5.742821473158552, +5.7553058676654185,7.365792759051186,4.425717852684145,7.240948813982522,5.324594257178527,5.293383270911361,2.2409488139825218,5.118601747815231,2.9525593008739075,4.488139825218477,5.1373283395755305,3.258426966292135,1.9288389513108615,2.3158551810237205,3.3458177278401995,7.865168539325843,6.616729088639201,4.893882646691636,3.651685393258427,3.1460674157303368,5.8988764044943816,7.428214731585518,4.644194756554308,7.615480649188515,6.803995006242197,2.958801498127341,2.696629213483146,2.3845193508114857,3.951310861423221,5.761548064918852,1.9538077403245941,3.2084893882646695,6.616729088639201,5.536828963795256,2.871410736579276,4.194756554307116,3.0961298377028714,8.302122347066168,5.97378277153558,2.128589263420724,2.35330836454432,6.491885143570538,5.655430711610487,3.5018726591760303,2.7652933832709112,2.9400749063670415,7.865168539325843,5.012484394506866,3.4144818976279647,6.491885143570538,4.950062421972534,5.5181023720349565,5.942571785268415,8.302122347066168,3.439450686641698,5.074906367041199,5.867665418227216,7.428214731585518,7.8027465667915115,5.106117353308365,3.745318352059925,4.800249687890138,5.181023720349563,3.352059925093633,7.740324594257178,5.131086142322098,3.951310861423221,7.365792759051186,3.5018726591760303,5.106117353308365,5.799001248439451,6.210986267166042,7.303370786516854,5.474406991260924,7.740324594257178,7.553058676654182,5.586766541822722,4.656679151061174,2.6591760299625467,3.682896379525593,8.426966292134832,5.493133583021224,4.837702871410737,2.471910112359551,8.11485642946317,5.786516853932584,6.866416978776529,3.595505617977528,5.318352059925093,5.19350811485643,7.428214731585518,2.122347066167291,4.044943820224719,3.6704119850187267,4.4818976279650435,7.740324594257178,3.0399500624219726,6.928838951310862,6.20474406991261,5.767790262172285, +5.786516853932584,7.428214731585518,4.463171036204744,7.240948813982522,5.34956304619226,5.318352059925093,2.259675405742821,5.143570536828964,2.977528089887641,4.51310861423221,5.15605493133583,3.2896379525593007,1.9475655430711611,2.340823970037453,3.370786516853933,7.927590511860175,6.679151061173534,4.925093632958801,3.6766541822721597,3.17103620474407,5.930087390761548,7.428214731585518,4.66916354556804,7.677902621722847,6.866416978776529,2.990012484394507,2.727840199750312,2.4094881398252186,3.982521847690387,5.786516853932584,1.978776529338327,3.245942571785269,6.616729088639201,5.561797752808988,2.8963795255930087,4.219725343320849,3.1273408239700373,8.302122347066168,5.998751560549313,2.1473158551810236,2.3782771535580522,6.491885143570538,5.68039950062422,3.533083645443196,2.7965043695380776,2.965043695380774,7.927590511860175,5.049937578027466,3.4456928838951315,6.491885143570538,4.9812734082397006,5.549313358302123,5.967540574282147,8.302122347066168,3.464419475655431,5.093632958801498,5.892634207240949,7.49063670411985,7.8027465667915115,5.131086142322098,3.764044943820225,4.818976279650437,5.212234706616729,3.370786516853933,7.8027465667915115,5.15605493133583,3.970037453183521,7.365792759051186,3.5205992509363297,5.131086142322098,5.830212234706617,6.242197253433209,7.365792759051186,5.499375780274657,7.740324594257178,7.553058676654182,5.605493133583021,4.687890137328339,2.68414481897628,3.714107365792759,8.426966292134832,5.524344569288389,4.875156054931336,2.4968789013732833,8.11485642946317,5.811485642946318,6.866416978776529,3.6267166042446943,5.343320848938826,5.224719101123595,7.49063670411985,2.1473158551810236,4.0761548064918856,3.701622971285893,4.51310861423221,7.8027465667915115,3.0711610486891385,6.991260923845194,6.229712858926342,5.786516853932584, +5.81772784019975,7.428214731585518,4.49438202247191,7.303370786516854,5.3745318352059925,5.337078651685393,2.2846441947565546,5.168539325842697,3.0087390761548067,4.531835205992509,5.181023720349563,3.320848938826467,1.9725343320848938,2.3720349563046192,3.3957553058676653,7.927590511860175,6.679151061173534,4.950062421972534,3.701622971285893,3.1897627965043696,5.961298377028713,7.49063670411985,4.694132334581773,7.677902621722847,6.866416978776529,3.0149812734082393,2.7590511860174782,2.4344569288389515,4.013732833957553,5.811485642946318,2.00374531835206,3.2771535580524347,6.616729088639201,5.586766541822722,2.9151061173533086,4.238451935081149,3.1647940074906367,8.3645443196005,6.023720349563047,2.1722846441947565,2.4032459425717856,6.554307116104869,5.711610486891385,3.564294631710362,2.8277153558052435,2.9962546816479403,7.927590511860175,5.081148564294631,3.4769038701622974,6.554307116104869,5.0062421972534334,5.580524344569288,5.992509363295881,8.3645443196005,3.4893882646691634,5.118601747815231,5.9238451935081144,7.553058676654182,7.8027465667915115,5.15605493133583,3.7827715355805243,4.837702871410737,5.243445692883895,3.3957553058676653,7.8027465667915115,5.181023720349563,3.9950062421972534,7.365792759051186,3.545568039950062,5.15605493133583,5.861423220973783,6.30461922596754,7.365792759051186,5.5305867665418225,7.8027465667915115,7.553058676654182,5.6242197253433215,4.725343320848939,2.7091136079900124,3.7515605493133584,8.489388264669165,5.555555555555556,4.906367041198502,2.515605493133583,8.177278401997503,5.836454431960051,6.928838951310862,3.6579275905118602,5.36828963795256,5.2559300873907615,7.49063670411985,2.1722846441947565,4.107365792759051,3.7265917602996255,4.55056179775281,7.8027465667915115,3.108614232209738,6.991260923845194,6.242197253433209,5.811485642946318, +5.842696629213483,7.49063670411985,4.525593008739076,7.303370786516854,5.405742821473158,5.3620474406991265,2.309612983770287,5.19350811485643,3.0399500624219726,4.556803995006242,5.199750312109863,3.352059925093633,1.9975031210986267,2.4032459425717856,3.420724094881398,7.990012484394507,6.741573033707866,4.9812734082397006,3.7265917602996255,3.214731585518102,5.986267166042447,7.49063670411985,4.719101123595506,7.740324594257178,6.928838951310862,3.046192259675406,2.7840199750312107,2.459425717852684,4.044943820224719,5.836454431960051,2.0287141073657926,3.3083645443196006,6.679151061173534,5.605493133583021,2.9400749063670415,4.263420724094882,3.1960049937578026,8.3645443196005,6.0424469413233455,2.1910112359550564,2.428214731585518,6.554307116104869,5.736579275905119,3.595505617977528,2.852684144818976,3.0212234706616727,7.990012484394507,5.1123595505617985,3.5143570536828963,6.554307116104869,5.0374531835206,5.617977528089888,6.0174781523096135,8.3645443196005,3.5143570536828963,5.1373283395755305,5.948813982521848,7.553058676654182,7.865168539325843,5.187265917602996,3.801498127340824,4.8626716604244695,5.274656679151062,3.4144818976279647,7.865168539325843,5.199750312109863,4.013732833957553,7.428214731585518,3.5705368289637955,5.181023720349563,5.8863920099875156,6.30461922596754,7.365792759051186,5.555555555555556,7.8027465667915115,7.615480649188515,5.6491885143570535,4.7565543071161045,2.7340823970037453,3.7827715355805243,8.551810237203496,5.586766541822722,4.937578027465668,2.5405742821473156,8.177278401997503,5.855181023720349,6.928838951310862,3.689138576779026,5.393258426966292,5.287141073657928,7.553058676654182,2.1972534332084894,4.138576779026217,3.7515605493133584,4.581772784019975,7.865168539325843,3.139825218476904,7.0536828963795255,6.30461922596754,5.836454431960051, +5.8739076154806495,7.49063670411985,4.563046192259676,7.365792759051186,5.430711610486892,5.3870162297128585,2.328339575530587,5.218476903870163,3.0711610486891385,4.581772784019975,5.224719101123595,3.3770287141073654,2.016229712858926,2.4344569288389515,3.4456928838951315,7.990012484394507,6.741573033707866,5.012484394506866,3.7515605493133584,3.233458177278402,6.0174781523096135,7.553058676654182,4.7440699126092385,7.740324594257178,6.928838951310862,3.077403245942572,2.8152309612983775,2.4843945068664173,4.082397003745319,5.861423220973783,2.0536828963795255,3.3458177278401995,6.679151061173534,5.630461922596755,2.958801498127341,4.288389513108614,3.233458177278402,8.426966292134832,6.067415730337078,2.209737827715356,2.446941323345818,6.554307116104869,5.761548064918852,3.6329588014981273,2.8838951310861427,3.046192259675406,7.990012484394507,5.149812734082397,3.545568039950062,6.616729088639201,5.068664169787765,5.6491885143570535,6.048689138576779,8.426966292134832,3.533083645443196,5.162297128589263,5.980024968789014,7.615480649188515,7.865168539325843,5.212234706616729,3.826466916354557,4.881398252184769,5.305867665418227,3.439450686641698,7.865168539325843,5.224719101123595,4.038701622971286,7.428214731585518,3.595505617977528,5.205992509363296,5.917602996254682,6.367041198501872,7.428214731585518,5.580524344569288,7.865168539325843,7.615480649188515,5.667915106117353,4.794007490636704,2.7590511860174782,3.8202247191011236,8.551810237203496,5.617977528089888,4.975031210986267,2.5593008739076155,8.239700374531834,5.880149812734083,6.991260923845194,3.7203495630461925,5.418227215980025,5.318352059925093,7.553058676654182,2.2222222222222223,4.169787765293384,3.776529338327091,4.612983770287141,7.865168539325843,3.1772784019975036,7.0536828963795255,6.30461922596754,5.861423220973783, +5.905118601747815,7.553058676654182,4.594257178526841,7.365792759051186,5.455680399500624,5.405742821473158,2.35330836454432,5.249687890137328,3.0961298377028714,4.600499375780275,5.243445692883895,3.408239700374532,2.0411985018726595,2.4656679151061174,3.470661672908864,8.05243445692884,6.803995006242197,5.043695380774032,3.776529338327091,3.258426966292135,6.048689138576779,7.553058676654182,4.769038701622971,7.8027465667915115,6.991260923845194,3.102372034956305,2.8464419475655434,2.5093632958801497,4.1136079900124844,5.8863920099875156,2.0786516853932584,3.3770287141073654,6.679151061173534,5.6491885143570535,2.9837702871410734,4.313358302122348,3.2646691635455682,8.426966292134832,6.092384519350812,2.2347066167290888,2.471910112359551,6.616729088639201,5.786516853932584,3.6641697877652937,2.9151061173533086,3.077403245942572,8.05243445692884,5.181023720349563,3.5830212234706615,6.616729088639201,5.093632958801498,5.686641697877653,6.073657927590512,8.426966292134832,3.5580524344569286,5.181023720349563,6.004993757802747,7.615480649188515,7.927590511860175,5.237203495630462,3.8451935081148565,4.900124843945068,5.337078651685393,3.464419475655431,7.927590511860175,5.243445692883895,4.057428214731585,7.428214731585518,3.620474406991261,5.230961298377029,5.948813982521848,6.367041198501872,7.428214731585518,5.611735330836455,7.865168539325843,7.615480649188515,5.686641697877653,4.825218476903871,2.7840199750312107,3.857677902621723,8.614232209737828,5.64294631710362,5.0062421972534334,2.5842696629213484,8.239700374531834,5.905118601747815,6.991260923845194,3.7515605493133584,5.443196004993759,5.34956304619226,7.615480649188515,2.2409488139825218,4.200998751560549,3.8077403245942576,4.65043695380774,7.927590511860175,3.2084893882646695,7.116104868913857,6.30461922596754,5.880149812734083, +5.936329588014981,7.553058676654182,4.6254681647940075,7.428214731585518,5.480649188514358,5.430711610486892,2.3782771535580522,5.274656679151062,3.1273408239700373,4.6254681647940075,5.268414481897628,3.439450686641698,2.066167290886392,2.4906367041198503,3.495630461922597,8.05243445692884,6.803995006242197,5.074906367041199,3.801498127340824,3.2771535580524347,6.073657927590512,7.615480649188515,4.787765293383271,7.8027465667915115,6.991260923845194,3.1335830212234708,2.8776529338327093,2.5343320848938826,4.144818976279651,5.9113607990012484,2.1036204744069913,3.4144818976279647,6.741573033707866,5.674157303370786,3.0087390761548067,4.332084893882647,3.3021223470661676,8.489388264669165,6.117353308364544,2.253433208489388,2.4968789013732833,6.616729088639201,5.81772784019975,3.6953807740324596,2.9400749063670415,3.102372034956305,8.05243445692884,5.212234706616729,3.6142322097378274,6.679151061173534,5.1248439450686645,5.717852684144819,6.098626716604246,8.489388264669165,3.5830212234706615,5.199750312109863,6.036204744069912,7.677902621722847,7.927590511860175,5.268414481897628,3.8639200998751564,4.925093632958801,5.36828963795256,3.4831460674157304,7.927590511860175,5.268414481897628,4.082397003745319,7.49063670411985,3.6454431960049942,5.2559300873907615,5.980024968789014,6.429463171036204,7.428214731585518,5.636704119850187,7.927590511860175,7.677902621722847,5.711610486891385,4.8626716604244695,2.808988764044944,3.888888888888889,8.614232209737828,5.674157303370786,5.043695380774032,2.602996254681648,8.302122347066168,5.930087390761548,6.991260923845194,3.7827715355805243,5.468164794007491,5.3870162297128585,7.615480649188515,2.2659176029962547,4.2322097378277155,3.83270911360799,4.681647940074906,7.990012484394507,3.245942571785269,7.116104868913857,6.367041198501872,5.905118601747815, +5.967540574282147,7.615480649188515,4.662921348314606,7.428214731585518,5.50561797752809,5.455680399500624,2.397003745318352,5.299625468164794,3.1585518102372037,4.65043695380774,5.287141073657928,3.464419475655431,2.084893882646692,2.521847690387016,3.5205992509363297,8.11485642946317,6.866416978776529,5.106117353308365,3.826466916354557,3.3021223470661676,6.104868913857677,7.615480649188515,4.812734082397004,7.8027465667915115,7.0536828963795255,3.1647940074906367,2.908863920099875,2.5593008739076155,4.176029962546816,5.936329588014981,2.128589263420724,3.4456928838951315,6.741573033707866,5.692883895131087,3.027465667915106,4.357053682896379,3.3333333333333335,8.489388264669165,6.142322097378277,2.272159800249688,2.521847690387016,6.616729088639201,5.842696629213483,3.732833957553059,2.9712858926342074,3.1273408239700373,8.11485642946317,5.249687890137328,3.6454431960049942,6.679151061173534,5.149812734082397,5.7553058676654185,6.123595505617978,8.551810237203496,3.607990012484395,5.224719101123595,6.061173533083646,7.740324594257178,7.927590511860175,5.293383270911361,3.882646691635456,4.943820224719102,5.399500624219725,3.508114856429463,7.990012484394507,5.293383270911361,4.1011235955056184,7.49063670411985,3.6704119850187267,5.280898876404494,6.01123595505618,6.429463171036204,7.49063670411985,5.66167290886392,7.927590511860175,7.677902621722847,5.730337078651686,4.893882646691636,2.8339575530586765,3.926342072409488,8.67665418227216,5.705368289637952,5.074906367041199,2.6279650436953808,8.302122347066168,5.955056179775282,7.0536828963795255,3.81398252184769,5.493133583021224,5.418227215980025,7.677902621722847,2.2908863920099876,4.263420724094882,3.857677902621723,4.712858926342073,7.990012484394507,3.2771535580524347,7.17852684144819,6.367041198501872,5.930087390761548, +5.998751560549313,7.615480649188515,4.694132334581773,7.49063670411985,5.5305867665418225,5.474406991260924,2.4219725343320846,5.324594257178527,3.183520599250936,4.66916354556804,5.305867665418227,3.495630461922597,2.1098626716604243,2.5530586766541825,3.545568039950062,8.11485642946317,6.866416978776529,5.1373283395755305,3.8514357053682895,3.320848938826467,6.1360799001248445,7.677902621722847,4.837702871410737,7.865168539325843,7.0536828963795255,3.1897627965043696,2.933832709113608,2.5842696629213484,4.207240948813983,5.961298377028713,2.153558052434457,3.4769038701622974,6.741573033707866,5.717852684144819,3.0524344569288386,4.382022471910113,3.370786516853933,8.551810237203496,6.167290886392011,2.2908863920099876,2.546816479400749,6.679151061173534,5.867665418227216,3.764044943820225,3.0024968789013733,3.1585518102372037,8.11485642946317,5.280898876404494,3.682896379525593,6.741573033707866,5.181023720349563,5.786516853932584,6.1485642946317105,8.551810237203496,3.6329588014981273,5.243445692883895,6.092384519350812,7.740324594257178,7.990012484394507,5.318352059925093,3.9013732833957557,4.962546816479401,5.430711610486892,3.5268414481897628,7.990012484394507,5.312109862671661,4.1260923845193505,7.553058676654182,3.6953807740324596,5.305867665418227,6.0424469413233455,6.491885143570538,7.49063670411985,5.692883895131087,7.990012484394507,7.677902621722847,5.749063670411985,4.931335830212235,2.8589263420724094,3.957553058676654,8.739076154806492,5.736579275905119,5.106117353308365,2.6466916354556806,8.3645443196005,5.980024968789014,7.0536828963795255,3.8451935081148565,5.5181023720349565,5.449438202247191,7.677902621722847,2.3158551810237205,4.294631710362047,3.888888888888889,4.7440699126092385,8.05243445692884,3.3083645443196006,7.17852684144819,6.429463171036204,5.955056179775282, +6.029962546816479,7.677902621722847,4.725343320848939,7.49063670411985,5.555555555555556,5.499375780274657,2.446941323345818,5.34956304619226,3.214731585518102,4.694132334581773,5.33083645443196,3.5268414481897628,2.134831460674157,2.5842696629213484,3.5705368289637955,8.177278401997503,6.928838951310862,5.168539325842697,3.870162297128589,3.3458177278401995,6.161048689138577,7.677902621722847,4.8626716604244695,7.865168539325843,7.0536828963795255,3.2209737827715355,2.965043695380774,2.6092384519350813,4.238451935081149,5.986267166042447,2.1785268414481895,3.5143570536828963,6.803995006242197,5.742821473158552,3.0711610486891385,4.400749063670412,3.4019975031210987,8.551810237203496,6.186017478152309,2.3158551810237205,2.571785268414482,6.679151061173534,5.8988764044943816,3.7952559300873907,3.033707865168539,3.183520599250936,8.177278401997503,5.312109862671661,3.714107365792759,6.741573033707866,5.212234706616729,5.81772784019975,6.179775280898876,8.614232209737828,3.6579275905118602,5.262172284644195,6.117353308364544,7.8027465667915115,7.990012484394507,5.34956304619226,3.920099875156055,4.987515605493134,5.461922596754057,3.5518102372034956,8.05243445692884,5.337078651685393,4.144818976279651,7.553058676654182,3.7203495630461925,5.33083645443196,6.073657927590512,6.491885143570538,7.553058676654182,5.717852684144819,7.990012484394507,7.740324594257178,5.774032459425719,4.962546816479401,2.8838951310861427,3.9950062421972534,8.739076154806492,5.767790262172285,5.143570536828964,2.671660424469413,8.3645443196005,6.004993757802747,7.116104868913857,3.8764044943820224,5.543071161048689,5.480649188514358,7.740324594257178,2.340823970037453,4.31960049937578,3.9138576779026217,4.781523096129837,8.11485642946317,3.3458177278401995,7.240948813982522,6.429463171036204,5.97378277153558, +6.061173533083646,7.677902621722847,4.762796504369538,7.49063670411985,5.580524344569288,5.524344569288389,2.4656679151061174,5.380774032459426,3.245942571785269,4.719101123595506,5.34956304619226,3.5580524344569286,2.153558052434457,2.6154806491885143,3.589263420724095,8.177278401997503,6.928838951310862,5.199750312109863,3.8951310861423223,3.3645443196004994,6.192259675405743,7.740324594257178,4.887640449438202,7.927590511860175,7.116104868913857,3.2521847690387014,2.9962546816479403,2.634207240948814,4.269662921348314,6.01123595505618,2.203495630461923,3.545568039950062,6.803995006242197,5.761548064918852,3.0961298377028714,4.425717852684145,3.439450686641698,8.614232209737828,6.210986267166042,2.33458177278402,2.596754057428215,6.679151061173534,5.9238451935081144,3.826466916354557,3.058676654182272,3.2084893882646695,8.177278401997503,5.34956304619226,3.7515605493133584,6.803995006242197,5.237203495630462,5.855181023720349,6.20474406991261,8.614232209737828,3.6766541822721597,5.287141073657928,6.1485642946317105,7.8027465667915115,8.05243445692884,5.3745318352059925,3.938826466916354,5.0062421972534334,5.493133583021224,3.5705368289637955,8.05243445692884,5.355805243445693,4.169787765293384,7.553058676654182,3.745318352059925,5.355805243445693,6.104868913857677,6.554307116104869,7.553058676654182,5.742821473158552,8.05243445692884,7.740324594257178,5.792759051186017,4.9937578027465666,2.908863920099875,4.02621722846442,8.801498127340825,5.799001248439451,5.174781523096129,2.690387016229713,8.426966292134832,6.023720349563047,7.116104868913857,3.9076154806491883,5.568039950062421,5.511860174781523,7.740324594257178,2.3657927590511862,4.3508114856429465,3.938826466916354,4.812734082397004,8.11485642946317,3.3770287141073654,7.240948813982522,6.429463171036204,5.998751560549313, +6.086142322097379,7.740324594257178,4.794007490636704,7.553058676654182,5.605493133583021,5.543071161048689,2.4906367041198503,5.405742821473158,3.2771535580524347,4.737827715355805,5.3745318352059925,3.5830212234706615,2.1785268414481895,2.640449438202247,3.6142322097378274,8.177278401997503,,,3.920099875156055,3.3895131086142323,6.223470661672909,7.740324594257178,4.912609238451935,7.927590511860175,7.116104868913857,3.2771535580524347,3.027465667915106,2.6591760299625467,4.300873907615481,6.036204744069912,2.2284644194756553,3.576779026217228,6.803995006242197,5.786516853932584,3.1210986267166043,4.450686641697877,3.470661672908864,8.614232209737828,6.235955056179775,2.35330836454432,2.6154806491885143,6.741573033707866,5.948813982521848,3.8639200998751564,3.089887640449438,3.2397003745318353,8.239700374531834,,3.7827715355805243,6.803995006242197,5.268414481897628,5.8863920099875156,,8.67665418227216,3.701622971285893,5.305867665418227,6.179775280898876,,8.05243445692884,5.399500624219725,3.957553058676654,5.024968789013733,5.5305867665418225,3.595505617977528,8.11485642946317,5.380774032459426,4.188514357053683,7.615480649188515,3.764044943820225,5.380774032459426,6.1360799001248445,6.554307116104869,7.553058676654182,5.774032459425719,8.05243445692884,7.740324594257178,5.811485642946318,5.031210986267166,2.933832709113608,4.063670411985019,,5.830212234706617,5.205992509363296,2.7091136079900124,,6.048689138576779,7.116104868913857,3.938826466916354,5.593008739076155,5.549313358302123,,2.3907615480649187,4.382022471910113,3.9637952559300875,4.843945068664169,,3.4144818976279647,7.240948813982522,6.491885143570538,6.023720349563047, +6.117353308364544,7.8027465667915115,4.831460674157303,7.553058676654182,5.630461922596755,5.568039950062421,2.515605493133583,5.430711610486892,3.3021223470661676,4.762796504369538,5.393258426966292,3.6142322097378274,2.203495630461923,2.671660424469413,3.639200998751561,8.239700374531834,,,3.9450686641697876,3.408239700374532,6.242197253433209,7.8027465667915115,4.937578027465668,7.990012484394507,7.17852684144819,3.3083645443196006,3.058676654182272,2.68414481897628,4.332084893882647,6.061173533083646,2.253433208489388,3.6142322097378274,6.866416978776529,5.805243445692884,3.139825218476904,4.475655430711611,3.508114856429463,8.67665418227216,6.242197253433209,2.3782771535580522,2.640449438202247,6.741573033707866,5.97378277153558,3.8951310861423223,3.1210986267166043,3.2646691635455682,8.239700374531834,,3.81398252184769,6.866416978776529,5.293383270911361,5.9238451935081144,,8.67665418227216,,5.324594257178527,6.20474406991261,,8.05243445692884,5.430711610486892,3.9762796504369535,5.049937578027466,5.561797752808988,3.620474406991261,8.11485642946317,5.405742821473158,4.213483146067416,7.615480649188515,3.7890137328339577,5.405742821473158,6.167290886392011,6.616729088639201,7.615480649188515,5.799001248439451,8.11485642946317,7.8027465667915115,5.836454431960051,5.062421972534332,,4.1011235955056184,,5.861423220973783,5.243445692883895,2.7340823970037453,,6.073657927590512,7.17852684144819,3.970037453183521,5.617977528089888,5.580524344569288,,2.4094881398252186,4.413233458177278,3.9950062421972534,4.881398252184769,,3.4456928838951315,7.303370786516854,6.491885143570538,6.048689138576779, +6.1485642946317105,7.8027465667915115,4.8626716604244695,7.615480649188515,5.655430711610487,5.593008739076155,2.5343320848938826,5.455680399500624,3.3333333333333335,4.787765293383271,5.418227215980025,3.6454431960049942,2.2222222222222223,2.702871410736579,3.6641697877652937,8.239700374531834,,,3.970037453183521,3.4269662921348316,6.30461922596754,7.8027465667915115,4.962546816479401,7.990012484394507,7.17852684144819,3.339575530586767,3.089887640449438,2.7091136079900124,4.3632958801498125,6.086142322097379,2.272159800249688,3.6454431960049942,6.866416978776529,5.830212234706617,3.1647940074906367,4.49438202247191,3.545568039950062,8.67665418227216,6.30461922596754,2.397003745318352,2.66541822721598,6.741573033707866,6.004993757802747,3.926342072409488,3.1460674157303368,3.2896379525593007,8.302122347066168,,,6.866416978776529,5.324594257178527,5.955056179775282,,8.739076154806492,,5.34956304619226,6.235955056179775,,8.11485642946317,5.455680399500624,4.001248439450687,5.068664169787765,5.593008739076155,3.639200998751561,8.177278401997503,5.424469413233458,4.2322097378277155,7.615480649188515,3.81398252184769,5.430711610486892,6.198501872659176,6.616729088639201,7.615480649188515,5.830212234706617,8.11485642946317,7.8027465667915115,5.855181023720349,5.099875156054932,,4.132334581772784,,5.892634207240949,5.274656679151062,2.752808988764045,,6.098626716604246,7.17852684144819,4.001248439450687,5.6491885143570535,5.611735330836455,,2.4344569288389515,4.444444444444445,4.019975031210986,4.912609238451935,,3.4831460674157304,7.303370786516854,6.554307116104869,6.067415730337078, +,7.865168539325843,4.893882646691636,,5.68039950062422,5.611735330836455,2.5593008739076155,,3.3645443196004994,4.806491885143571,5.436953807740325,3.6766541822721597,2.247191011235955,2.7340823970037453,3.689138576779026,8.302122347066168,,,3.9950062421972534,3.451935081148564,6.30461922596754,7.865168539325843,4.987515605493134,8.05243445692884,7.240948813982522,3.3645443196004994,3.114856429463171,2.7340823970037453,4.400749063670412,6.111111111111111,2.2971285892634206,3.682896379525593,6.866416978776529,5.848938826466916,3.183520599250936,4.519350811485642,3.576779026217228,8.739076154806492,6.30461922596754,2.4157303370786516,2.690387016229713,6.803995006242197,6.029962546816479,3.957553058676654,3.1772784019975036,3.3146067415730336,8.302122347066168,,,6.928838951310862,5.34956304619226,5.986267166042447,,8.801498127340825,,5.36828963795256,6.242197253433209,,8.11485642946317,5.480649188514358,4.019975031210986,5.087390761548065,5.6242197253433215,3.6641697877652937,8.177278401997503,5.449438202247191,4.257178526841448,7.677902621722847,3.8389513108614235,5.455680399500624,6.229712858926342,6.679151061173534,7.615480649188515,5.855181023720349,8.177278401997503,7.8027465667915115,5.880149812734083,5.131086142322098,,4.169787765293384,,5.9238451935081144,5.305867665418227,2.777777777777778,,6.123595505617978,7.240948813982522,4.032459425717852,5.674157303370786,5.64294631710362,,2.459425717852684,4.475655430711611,4.044943820224719,4.943820224719102,,3.5143570536828963,7.365792759051186,6.554307116104869,6.092384519350812, +,7.865168539325843,4.931335830212235,,5.705368289637952,5.636704119850187,2.5842696629213484,,3.3957553058676653,4.831460674157303,5.455680399500624,3.701622971285893,2.272159800249688,2.7652933832709112,3.714107365792759,,,,4.019975031210986,3.470661672908864,6.367041198501872,7.865168539325843,5.0062421972534334,,7.240948813982522,3.3957553058676653,3.1460674157303368,2.7590511860174782,4.431960049937578,6.1360799001248445,,3.714107365792759,6.928838951310862,5.8739076154806495,3.2084893882646695,4.544319600499376,3.6142322097378274,8.739076154806492,6.30461922596754,2.4406991260923845,2.715355805243446,6.803995006242197,6.054931335830212,3.9950062421972534,3.2084893882646695,3.3458177278401995,8.3645443196005,,,6.928838951310862,5.380774032459426,6.023720349563047,,8.801498127340825,,5.3870162297128585,6.30461922596754,,8.177278401997503,5.50561797752809,4.038701622971286,5.1123595505617985,5.655430711610487,3.682896379525593,8.239700374531834,5.468164794007491,4.275905118601748,7.677902621722847,3.8639200998751564,5.480649188514358,6.242197253433209,6.679151061173534,7.677902621722847,5.880149812734083,8.177278401997503,7.865168539325843,5.8988764044943816,5.168539325842697,,,,5.955056179775282,5.343320848938826,2.7965043695380776,,6.1485642946317105,7.240948813982522,4.063670411985019,5.69912609238452,5.674157303370786,,2.4843945068664173,4.506866416978776,4.069912609238452,4.9812734082397006,,3.5518102372034956,7.365792759051186,6.616729088639201,6.117353308364544, +,7.927590511860175,4.962546816479401,,5.730337078651686,5.655430711610487,2.602996254681648,,3.420724094881398,4.850187265917603,5.480649188514358,3.732833957553059,2.2908863920099876,2.790262172284644,3.7390761548064915,,,,4.044943820224719,3.495630461922597,6.367041198501872,7.927590511860175,5.031210986267166,,7.303370786516854,3.4269662921348316,3.1772784019975036,2.7840199750312107,4.463171036204744,,,3.745318352059925,6.928838951310862,5.8988764044943816,3.233458177278402,4.569288389513109,3.6454431960049942,8.801498127340825,6.367041198501872,2.459425717852684,2.740324594257179,6.866416978776529,6.086142322097379,4.02621722846442,3.2397003745318353,3.370786516853933,8.3645443196005,,,6.991260923845194,5.411985018726591,6.054931335830212,,8.863920099875156,,5.411985018726591,6.30461922596754,,8.177278401997503,5.536828963795256,4.057428214731585,5.131086142322098,5.686641697877653,3.7078651685393256,8.239700374531834,5.493133583021224,4.294631710362047,7.677902621722847,3.888888888888889,5.50561797752809,6.30461922596754,6.741573033707866,7.677902621722847,5.9113607990012484,8.239700374531834,7.865168539325843,5.917602996254682,5.199750312109863,,,,5.986267166042447,5.3745318352059925,2.82147315855181,,6.173533083645444,7.240948813982522,4.094881398252185,5.724094881398252,5.705368289637952,,2.5093632958801497,4.538077403245943,4.1011235955056184,5.012484394506866,,3.5830212234706615,7.428214731585518,,6.1360799001248445, +,7.927590511860175,4.9937578027465666,,5.7553058676654185,5.68039950062422,2.6279650436953808,,3.451935081148564,4.875156054931336,5.499375780274657,3.764044943820225,2.3158551810237205,2.82147315855181,3.764044943820225,,,,4.069912609238452,3.5143570536828963,6.367041198501872,7.990012484394507,5.056179775280899,,7.303370786516854,3.4581772784019975,3.2084893882646695,2.808988764044944,4.49438202247191,,,3.7827715355805243,6.928838951310862,5.917602996254682,3.2521847690387014,,3.682896379525593,8.801498127340825,6.367041198501872,2.478152309612984,2.7590511860174782,6.866416978776529,6.111111111111111,4.057428214731585,3.2646691635455682,3.3957553058676653,8.426966292134832,,,6.991260923845194,5.436953807740325,6.092384519350812,,8.863920099875156,,5.430711610486892,6.367041198501872,,8.239700374531834,5.561797752808988,4.0761548064918856,5.149812734082397,5.717852684144819,3.7265917602996255,8.302122347066168,5.5181023720349565,4.31960049937578,7.740324594257178,3.9138576779026217,5.5305867665418225,6.30461922596754,6.741573033707866,7.740324594257178,5.936329588014981,8.239700374531834,7.865168539325843,5.942571785268415,5.237203495630462,,,,6.0174781523096135,5.405742821473158,2.84019975031211,,6.192259675405743,7.303370786516854,4.1260923845193505,5.749063670411985,5.742821473158552,,2.5343320848938826,4.569288389513109,4.1260923845193505,5.043695380774032,,3.6142322097378274,7.428214731585518,,6.161048689138577, +,7.990012484394507,5.031210986267166,,5.7802746566791505,5.705368289637952,,,3.4831460674157304,4.900124843945068,5.524344569288389,3.7952559300873907,2.340823970037453,2.852684144818976,3.7890137328339577,,,,4.094881398252185,3.5393258426966296,6.429463171036204,7.990012484394507,5.081148564294631,,7.365792759051186,3.4831460674157304,3.2397003745318353,2.8339575530586765,4.525593008739076,,,3.81398252184769,6.991260923845194,,3.2771535580524347,,3.714107365792759,8.863920099875156,6.429463171036204,2.4968789013732833,2.7840199750312107,6.866416978776529,6.1360799001248445,4.0886392009987516,3.295880149812734,,8.426966292134832,,,7.0536828963795255,5.468164794007491,6.123595505617978,,8.926342072409488,,5.455680399500624,6.367041198501872,,8.239700374531834,,4.094881398252185,5.174781523096129,5.749063670411985,3.7515605493133584,8.302122347066168,5.536828963795256,4.33832709113608,7.740324594257178,3.938826466916354,5.555555555555556,,6.803995006242197,7.740324594257178,5.961298377028713,8.302122347066168,7.927590511860175,5.961298377028713,5.268414481897628,,,,6.048689138576779,5.443196004993759,2.865168539325843,,6.217228464419476,7.303370786516854,4.157303370786517,5.774032459425719,5.774032459425719,,2.5530586766541825,4.600499375780275,4.151061173533084,5.081148564294631,,3.651685393258427,,,6.186017478152309, +,,5.062421972534332,,5.805243445692884,,,,3.5143570536828963,4.918851435705368,5.543071161048689,3.8202247191011236,2.359550561797753,2.8838951310861427,3.81398252184769,,,,4.119850187265917,3.5580524344569286,6.429463171036204,8.05243445692884,5.106117353308365,,7.365792759051186,3.5143570536828963,3.2709113607990012,2.8589263420724094,4.556803995006242,,,3.8451935081148565,6.991260923845194,,3.295880149812734,,3.7515605493133584,8.863920099875156,6.429463171036204,2.521847690387016,2.808988764044944,6.928838951310862,6.161048689138577,4.1260923845193505,3.3270911360799,,8.489388264669165,,,7.0536828963795255,5.493133583021224,6.161048689138577,,,,5.474406991260924,6.429463171036204,,8.239700374531834,,4.1136079900124844,5.19350811485643,5.7802746566791505,3.776529338327091,8.3645443196005,5.561797752808988,4.3632958801498125,7.740324594257178,3.9637952559300875,5.580524344569288,,6.803995006242197,,5.992509363295881,8.302122347066168,7.927590511860175,5.980024968789014,5.305867665418227,,,,6.079900124843945,5.474406991260924,2.8838951310861427,,6.242197253433209,7.365792759051186,4.18227215980025,5.799001248439451,5.805243445692884,,2.578027465667915,4.631710362047441,4.18227215980025,5.1123595505617985,,3.682896379525593,,,6.210986267166042, +,,5.093632958801498,,5.830212234706617,,,,3.5393258426966296,4.943820224719102,5.568039950062421,3.8514357053682895,2.3845193508114857,2.908863920099875,3.8389513108614235,,,,4.144818976279651,3.5830212234706615,6.491885143570538,,5.131086142322098,,7.428214731585518,3.545568039950062,3.295880149812734,2.8838951310861427,4.588014981273409,,,3.882646691635456,6.991260923845194,,3.320848938826467,,,8.926342072409488,6.429463171036204,2.5405742821473156,2.8339575530586765,6.928838951310862,,,3.352059925093633,,8.489388264669165,,,7.116104868913857,5.524344569288389,6.192259675405743,,,,5.493133583021224,6.429463171036204,,8.302122347066168,,4.132334581772784,5.212234706616729,5.811485642946318,3.7952559300873907,8.3645443196005,5.580524344569288,4.382022471910113,7.8027465667915115,3.9887640449438204,5.605493133583021,,6.866416978776529,,6.0174781523096135,8.3645443196005,7.927590511860175,6.004993757802747,5.337078651685393,,,,6.111111111111111,5.50561797752809,2.908863920099875,,6.242197253433209,7.365792759051186,4.213483146067416,5.823970037453184,5.836454431960051,,2.602996254681648,4.662921348314606,4.207240948813983,5.143570536828964,,3.7203495630461925,,,6.229712858926342, +,,5.131086142322098,,5.855181023720349,,,,3.5705368289637955,4.9687890137328345,5.586766541822722,3.882646691635456,2.4094881398252186,2.9400749063670415,3.8639200998751564,,,,4.169787765293384,3.6017478152309614,6.491885143570538,,5.15605493133583,,7.428214731585518,3.5705368289637955,3.3270911360799,2.908863920099875,4.619225967540574,,,3.9138576779026217,7.0536828963795255,,3.3458177278401995,,,8.926342072409488,6.491885143570538,2.5593008739076155,2.8589263420724094,6.928838951310862,,,3.383270911360799,,8.551810237203496,,,7.116104868913857,,,,,,5.5181023720349565,6.491885143570538,,8.302122347066168,,4.151061173533084,5.237203495630462,5.842696629213483,3.8202247191011236,8.426966292134832,5.605493133583021,4.406991260923846,7.8027465667915115,4.00749063670412,5.630461922596755,,,,6.0424469413233455,8.3645443196005,7.990012484394507,6.023720349563047,5.3745318352059925,,,,,5.543071161048689,2.9275905118601746,,6.30461922596754,7.428214731585518,4.244694132334582,5.848938826466916,5.867665418227216,,2.6279650436953808,4.694132334581773,4.2322097378277155,5.174781523096129,,3.7515605493133584,,,6.242197253433209, +,,5.162297128589263,,,,,,3.6017478152309614,4.987515605493134,5.605493133583021,3.9076154806491883,2.428214731585518,2.9712858926342074,,,,,4.194756554307116,3.6267166042446943,6.554307116104869,,5.181023720349563,,7.49063670411985,3.6017478152309614,3.3583021223470664,2.933832709113608,4.65043695380774,,,,7.0536828963795255,,3.3645443196004994,,,8.98876404494382,,2.5842696629213484,2.8838951310861427,6.991260923845194,,,3.4144818976279647,,8.551810237203496,,,7.116104868913857,,,,,,5.536828963795256,6.491885143570538,,8.3645443196005,,4.176029962546816,5.2559300873907615,5.880149812734083,3.8389513108614235,8.426966292134832,5.6242197253433215,4.425717852684145,7.8027465667915115,4.032459425717852,,,,,6.073657927590512,8.426966292134832,7.990012484394507,6.0424469413233455,5.405742821473158,,,,,,2.9525593008739075,,,7.428214731585518,,5.8739076154806495,5.905118601747815,,,,4.257178526841448,5.212234706616729,,,,,6.30461922596754, +,,,,,,,,3.6329588014981273,5.012484394506866,5.630461922596755,3.938826466916354,2.453183520599251,3.0024968789013733,,,,,4.213483146067416,3.6454431960049942,6.554307116104869,,5.205992509363296,,7.49063670411985,3.6329588014981273,,2.958801498127341,4.681647940074906,,,,7.0536828963795255,,3.3895131086142323,,,8.98876404494382,,2.602996254681648,2.908863920099875,6.991260923845194,,,,,,,,7.17852684144819,,,,,,5.555555555555556,6.491885143570538,,8.3645443196005,,4.194756554307116,5.274656679151062,5.9113607990012484,3.8639200998751564,8.489388264669165,5.6491885143570535,4.450686641697877,,4.057428214731585,,,,,6.098626716604246,8.426966292134832,7.990012484394507,6.067415730337078,,,,,,,2.9712858926342074,,,7.428214731585518,,5.8988764044943816,5.936329588014981,,,,4.288389513108614,5.243445692883895,,,,,6.30461922596754, +,,,,,,,,3.6579275905118602,5.0374531835206,5.6491885143570535,,2.471910112359551,3.033707865168539,,,,,,3.6704119850187267,6.616729088639201,,5.224719101123595,,7.553058676654182,,,2.9837702871410734,4.712858926342073,,,,7.116104868913857,,3.408239700374532,,,9.051186017478152,,,2.9275905118601746,6.991260923845194,,,,,,,,7.17852684144819,,,,,,5.580524344569288,6.554307116104869,,,,4.213483146067416,5.299625468164794,5.942571785268415,3.888888888888889,8.489388264669165,,4.4694132334581775,,4.082397003745319,,,,,6.123595505617978,8.489388264669165,8.05243445692884,6.086142322097379,,,,,,,2.9962546816479403,,,7.49063670411985,,5.9238451935081144,5.967540574282147,,,,,5.274656679151062,,,,,6.30461922596754, +,,,,,,,,3.689138576779026,5.056179775280899,,,2.4968789013732833,3.058676654182272,,,,,,3.689138576779026,6.616729088639201,,5.249687890137328,,7.553058676654182,,,3.0087390761548067,,,,,7.116104868913857,,3.4332084893882646,,,9.051186017478152,,,2.9525593008739075,7.0536828963795255,,,,,,,,7.240948813982522,,,,,,,,,,,4.2322097378277155,5.318352059925093,5.97378277153558,3.9076154806491883,8.551810237203496,,4.49438202247191,,4.107365792759051,,,,,6.154806491885144,8.489388264669165,8.05243445692884,6.104868913857677,,,,,,,3.0149812734082393,,,7.49063670411985,,5.948813982521848,5.998751560549313,,,,,,,,,,6.367041198501872, +,,,,,,,,3.7203495630461925,,,,,3.089887640449438,,,,,,3.714107365792759,6.679151061173534,,5.274656679151062,,7.553058676654182,,,3.033707865168539,,,,,,,3.4581772784019975,,,9.113607990012484,,,2.977528089887641,,,,,,,,,7.240948813982522,,,,,,,,,,,4.250936329588015,5.337078651685393,6.004993757802747,3.9325842696629216,8.551810237203496,,,,4.132334581772784,,,,,6.179775280898876,8.551810237203496,8.05243445692884,6.129837702871411,,,,,,,3.0399500624219726,,,7.553058676654182,,5.97378277153558,6.029962546816479,,,,,,,,,,6.367041198501872, +,,,,,,,,,,,,,3.1210986267166043,,,,,,3.732833957553059,6.679151061173534,,5.299625468164794,,,,,3.058676654182272,,,,,,,,,,9.113607990012484,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.269662921348314,5.3620474406991265,6.036204744069912,3.951310861423221,8.614232209737828,,,,,,,,,6.210986267166042,8.551810237203496,8.11485642946317,6.1485642946317105,,,,,,,3.058676654182272,,,7.553058676654182,,,,,,,,,,,,,6.367041198501872, +,,,,,,,,,,,,,3.15230961298377,,,,,,3.7515605493133584,6.741573033707866,,5.324594257178527,,,,,3.0836454431960054,,,,,,,,,,9.176029962546817,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.288389513108614,5.380774032459426,6.067415730337078,3.9762796504369535,8.614232209737828,,,,,,,,,6.235955056179775,,8.11485642946317,6.167290886392011,,,,,,,3.077403245942572,,,7.553058676654182,,,,,,,,,,,,,6.429463171036204, +,,,,,,,,,,,,,,,,,,,,6.741573033707866,,,,,,,,,,,,,,,,,9.176029962546817,,,,,,,,,,,,,,,,,,,,,,,,5.399500624219725,6.098626716604246,,8.67665418227216,,,,,,,,,6.242197253433209,,8.11485642946317,6.192259675405743,,,,,,,3.102372034956305,,,7.615480649188515,,,,,,,,,,,,,6.429463171036204, +,,,,,,,,,,,,,,,,,,,,6.803995006242197,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5.424469413233458,,,,,,,,,,,,6.30461922596754,,,6.210986267166042,,,,,,,3.1210986267166043,,,7.615480649188515,,,,,,,,,,,,,, diff --git a/lessons/files/practice_files/energy_data_large.csv b/lessons/files/practice_files/energy_data_large.csv new file mode 100644 index 0000000..065f932 --- /dev/null +++ b/lessons/files/practice_files/energy_data_large.csv @@ -0,0 +1,100 @@ +5.85E-19,8.13E-19,3.39E-19,8.50E-19,5.75E-19,5.97E-19,1.05E-19,5.29E-19,1.45E-19,4.66E-19,5.87E-19,1.96E-19,5.65E-20,4.00E-20,2.64E-19,9.38E-19,7.18E-19,4.42E-19,3.14E-19,2.65E-19,6.24E-19,8.37E-19,4.76E-19,8.77E-19,7.69E-19,1.52E-19,9.89E-20,1.06E-19,2.82E-19,6.50E-19,3.97E-20,1.43E-19,8.17E-19,6.41E-19,2.11E-19,4.14E-19,1.15E-19,9.90E-19,6.91E-19,1.14E-19,1.11E-19,7.94E-19,6.10E-19,1.98E-19,1.18E-19,1.73E-19,9.17E-19,4.33E-19,1.75E-19,7.12E-19,4.78E-19,5.10E-19,6.62E-19,9.32E-19,2.88E-19,5.81E-19,6.26E-19,7.81E-19,9.66E-19,5.19E-19,3.85E-19,5.39E-19,4.78E-19,2.90E-19,9.05E-19,5.74E-19,3.92E-19,9.38E-19,2.91E-19,5.44E-19,5.89E-19,6.34E-19,9.14E-19,5.76E-19,8.96E-19,9.78E-19,6.63E-19,3.69E-19,1.53E-19,2.05E-19,9.18E-19,5.39E-19,4.06E-19,1.57E-19,9.50E-19,6.61E-19,8.21E-19,2.33E-19,5.73E-19,4.74E-19,8.71E-19,7.48E-20,3.06E-19,2.94E-19,3.52E-19,8.06E-19,1.11E-19,7.78E-19,7.09E-19,6.66E-19 +5.90E-19,8.19E-19,3.45E-19,8.54E-19,5.79E-19,6.00E-19,1.09E-19,5.33E-19,1.50E-19,4.70E-19,5.90E-19,2.01E-19,6.02E-20,4.48E-20,2.68E-19,9.42E-19,7.23E-19,4.47E-19,3.18E-19,2.69E-19,6.28E-19,8.43E-19,4.80E-19,8.82E-19,7.74E-19,1.56E-19,1.04E-19,1.10E-19,2.87E-19,6.54E-19,4.37E-20,1.49E-19,8.21E-19,6.44E-19,2.15E-19,4.18E-19,1.20E-19,9.95E-19,6.95E-19,1.17E-19,1.15E-19,7.97E-19,6.15E-19,2.03E-19,1.23E-19,1.77E-19,9.22E-19,4.38E-19,1.80E-19,7.17E-19,4.82E-19,5.15E-19,6.66E-19,9.38E-19,2.91E-19,5.85E-19,6.30E-19,7.87E-19,9.70E-19,5.24E-19,3.88E-19,5.42E-19,4.83E-19,2.93E-19,9.10E-19,5.78E-19,3.95E-19,9.42E-19,2.95E-19,5.48E-19,5.94E-19,6.39E-19,9.18E-19,5.81E-19,9.01E-19,9.82E-19,6.67E-19,3.75E-19,1.57E-19,2.10E-19,9.24E-19,5.43E-19,4.12E-19,1.60E-19,9.55E-19,6.65E-19,8.25E-19,2.38E-19,5.77E-19,4.79E-19,8.76E-19,7.86E-20,3.11E-19,2.98E-19,3.58E-19,8.12E-19,1.17E-19,7.83E-19,7.13E-19,6.70E-19 +5.95E-19,8.24E-19,3.50E-19,8.59E-19,5.83E-19,6.04E-19,1.13E-19,5.38E-19,1.55E-19,4.74E-19,5.94E-19,2.05E-19,6.38E-20,4.96E-20,2.72E-19,9.47E-19,7.28E-19,4.52E-19,3.22E-19,2.72E-19,6.33E-19,8.48E-19,4.83E-19,8.87E-19,7.78E-19,1.61E-19,1.09E-19,1.14E-19,2.92E-19,6.58E-19,4.76E-20,1.54E-19,8.24E-19,6.48E-19,2.19E-19,4.22E-19,1.26E-19,1.00E-18,6.99E-19,1.21E-19,1.19E-19,8.01E-19,6.19E-19,2.08E-19,1.27E-19,1.81E-19,9.27E-19,4.44E-19,1.86E-19,7.22E-19,4.87E-19,5.20E-19,6.71E-19,9.44E-19,2.95E-19,5.88E-19,6.35E-19,7.93E-19,9.75E-19,5.28E-19,3.92E-19,5.45E-19,4.88E-19,2.97E-19,9.15E-19,5.82E-19,3.99E-19,9.45E-19,2.99E-19,5.52E-19,5.99E-19,6.44E-19,9.22E-19,5.85E-19,9.06E-19,9.85E-19,6.70E-19,3.80E-19,1.61E-19,2.16E-19,9.30E-19,5.48E-19,4.17E-19,1.64E-19,9.60E-19,6.69E-19,8.29E-19,2.43E-19,5.81E-19,4.84E-19,8.81E-19,8.25E-20,3.16E-19,3.02E-19,3.63E-19,8.18E-19,1.22E-19,7.88E-19,7.17E-19,6.74E-19 +6.00E-19,8.29E-19,3.55E-19,8.63E-19,5.87E-19,6.08E-19,1.16E-19,5.42E-19,1.60E-19,4.77E-19,5.97E-19,2.10E-19,6.75E-20,5.44E-20,2.76E-19,9.52E-19,7.33E-19,4.56E-19,3.26E-19,2.76E-19,6.38E-19,8.53E-19,4.87E-19,8.92E-19,7.83E-19,1.66E-19,1.13E-19,1.18E-19,2.97E-19,6.62E-19,5.16E-20,1.60E-19,8.28E-19,6.52E-19,2.22E-19,4.26E-19,1.31E-19,1.01E-18,7.03E-19,1.24E-19,1.23E-19,8.04E-19,6.23E-19,2.14E-19,1.32E-19,1.86E-19,9.32E-19,4.49E-19,1.91E-19,7.27E-19,4.91E-19,5.26E-19,6.75E-19,9.50E-19,2.99E-19,5.92E-19,6.39E-19,7.99E-19,9.79E-19,5.32E-19,3.95E-19,5.49E-19,4.94E-19,3.00E-19,9.19E-19,5.85E-19,4.02E-19,9.49E-19,3.03E-19,5.56E-19,6.04E-19,6.50E-19,9.25E-19,5.89E-19,9.11E-19,9.88E-19,6.73E-19,3.85E-19,1.65E-19,2.21E-19,9.37E-19,5.53E-19,4.22E-19,1.67E-19,9.65E-19,6.73E-19,8.33E-19,2.48E-19,5.85E-19,4.89E-19,8.85E-19,8.63E-20,3.21E-19,3.06E-19,3.68E-19,8.25E-19,1.28E-19,7.93E-19,7.21E-19,6.77E-19 +6.05E-19,8.35E-19,3.61E-19,8.68E-19,5.91E-19,6.11E-19,1.20E-19,5.46E-19,1.64E-19,4.81E-19,6.00E-19,2.15E-19,7.11E-20,5.92E-20,2.79E-19,9.57E-19,7.38E-19,4.61E-19,3.30E-19,2.79E-19,6.42E-19,8.58E-19,4.91E-19,8.97E-19,7.88E-19,1.70E-19,1.18E-19,1.22E-19,3.02E-19,6.66E-19,5.55E-20,1.65E-19,8.31E-19,6.55E-19,2.26E-19,4.29E-19,1.37E-19,1.01E-18,7.07E-19,1.27E-19,1.27E-19,8.08E-19,6.28E-19,2.19E-19,1.37E-19,1.90E-19,9.37E-19,4.54E-19,1.97E-19,7.31E-19,4.96E-19,5.31E-19,6.79E-19,9.55E-19,3.03E-19,5.95E-19,6.44E-19,8.05E-19,9.83E-19,5.37E-19,3.98E-19,5.52E-19,4.99E-19,3.04E-19,9.24E-19,5.89E-19,4.06E-19,9.52E-19,3.07E-19,5.60E-19,6.09E-19,6.55E-19,9.29E-19,5.94E-19,9.16E-19,9.92E-19,6.77E-19,3.91E-19,1.69E-19,2.27E-19,9.43E-19,5.58E-19,4.28E-19,1.71E-19,9.70E-19,6.77E-19,8.37E-19,2.53E-19,5.89E-19,4.95E-19,8.90E-19,9.02E-20,3.26E-19,3.11E-19,3.73E-19,8.31E-19,1.33E-19,7.97E-19,7.26E-19,6.81E-19 +6.09E-19,8.40E-19,3.66E-19,8.72E-19,5.95E-19,6.15E-19,1.24E-19,5.50E-19,1.69E-19,4.85E-19,6.04E-19,2.20E-19,7.48E-20,6.40E-20,2.83E-19,9.61E-19,7.43E-19,4.66E-19,3.34E-19,2.83E-19,6.47E-19,8.63E-19,4.95E-19,9.02E-19,7.92E-19,1.75E-19,1.23E-19,1.26E-19,3.07E-19,6.70E-19,5.95E-20,1.70E-19,8.35E-19,6.59E-19,2.29E-19,4.33E-19,1.42E-19,1.01E-18,7.11E-19,1.30E-19,1.31E-19,8.11E-19,6.32E-19,2.24E-19,1.41E-19,1.94E-19,9.42E-19,4.60E-19,2.02E-19,7.36E-19,5.00E-19,5.37E-19,6.83E-19,9.61E-19,3.07E-19,5.98E-19,6.49E-19,8.11E-19,9.87E-19,5.41E-19,4.01E-19,5.55E-19,5.04E-19,3.07E-19,9.29E-19,5.92E-19,4.09E-19,9.56E-19,3.11E-19,5.64E-19,6.14E-19,6.60E-19,9.33E-19,5.98E-19,9.21E-19,9.95E-19,6.80E-19,3.96E-19,1.73E-19,2.33E-19,9.49E-19,5.63E-19,4.33E-19,1.74E-19,9.75E-19,6.80E-19,8.41E-19,2.58E-19,5.93E-19,5.00E-19,8.95E-19,9.40E-20,3.31E-19,3.15E-19,3.79E-19,8.37E-19,1.39E-19,8.02E-19,7.30E-19,6.85E-19 +6.14E-19,8.45E-19,3.71E-19,8.77E-19,5.99E-19,6.18E-19,1.27E-19,5.54E-19,1.74E-19,4.88E-19,6.07E-19,2.24E-19,7.84E-20,6.88E-20,2.87E-19,9.66E-19,7.48E-19,4.71E-19,3.38E-19,2.86E-19,6.52E-19,8.68E-19,4.99E-19,9.07E-19,7.97E-19,1.80E-19,1.28E-19,1.30E-19,3.12E-19,6.74E-19,6.35E-20,1.76E-19,8.38E-19,6.62E-19,2.33E-19,4.37E-19,1.48E-19,1.02E-18,7.14E-19,1.34E-19,1.35E-19,8.15E-19,6.36E-19,2.29E-19,1.46E-19,1.99E-19,9.47E-19,4.65E-19,2.07E-19,7.41E-19,5.05E-19,5.42E-19,6.87E-19,9.67E-19,3.10E-19,6.02E-19,6.53E-19,8.17E-19,9.91E-19,5.45E-19,4.04E-19,5.59E-19,5.09E-19,3.11E-19,9.34E-19,5.96E-19,4.13E-19,9.59E-19,3.15E-19,5.68E-19,6.19E-19,6.65E-19,9.37E-19,6.02E-19,9.26E-19,9.98E-19,6.83E-19,4.02E-19,1.77E-19,2.38E-19,9.55E-19,5.68E-19,4.38E-19,1.78E-19,9.80E-19,6.84E-19,8.45E-19,2.63E-19,5.97E-19,5.05E-19,8.99E-19,9.78E-20,3.36E-19,3.19E-19,3.84E-19,8.43E-19,1.44E-19,8.07E-19,7.34E-19,6.88E-19 +6.19E-19,8.51E-19,3.77E-19,8.81E-19,6.03E-19,6.22E-19,1.31E-19,5.59E-19,1.79E-19,4.92E-19,6.11E-19,2.29E-19,8.21E-20,7.36E-20,2.91E-19,9.71E-19,7.53E-19,4.76E-19,3.41E-19,2.90E-19,6.56E-19,8.73E-19,5.03E-19,9.12E-19,8.02E-19,1.84E-19,1.33E-19,1.34E-19,3.17E-19,6.78E-19,6.74E-20,1.81E-19,8.42E-19,6.66E-19,2.37E-19,4.40E-19,1.53E-19,1.02E-18,7.18E-19,1.37E-19,1.38E-19,8.18E-19,6.40E-19,2.35E-19,1.51E-19,2.03E-19,9.52E-19,4.71E-19,2.13E-19,7.46E-19,5.10E-19,5.47E-19,6.92E-19,9.72E-19,3.14E-19,6.05E-19,6.58E-19,8.23E-19,9.95E-19,5.50E-19,4.07E-19,5.62E-19,5.14E-19,3.15E-19,9.39E-19,6.00E-19,4.16E-19,9.63E-19,3.19E-19,5.72E-19,6.24E-19,6.71E-19,9.40E-19,6.07E-19,9.31E-19,1.00E-18,6.87E-19,4.07E-19,1.81E-19,2.44E-19,9.62E-19,5.73E-19,4.44E-19,1.81E-19,9.85E-19,6.88E-19,8.49E-19,2.68E-19,6.01E-19,5.10E-19,9.04E-19,1.02E-19,3.41E-19,3.24E-19,3.89E-19,8.50E-19,1.50E-19,8.12E-19,7.38E-19,6.92E-19 +6.24E-19,8.56E-19,3.82E-19,8.86E-19,6.07E-19,6.26E-19,1.35E-19,5.63E-19,1.83E-19,4.96E-19,6.14E-19,2.34E-19,8.57E-20,7.84E-20,2.95E-19,9.75E-19,7.58E-19,4.81E-19,3.45E-19,2.93E-19,6.61E-19,8.78E-19,5.07E-19,9.17E-19,8.07E-19,1.89E-19,1.38E-19,1.38E-19,3.23E-19,6.82E-19,7.14E-20,1.86E-19,8.45E-19,6.69E-19,2.40E-19,4.44E-19,1.59E-19,1.03E-18,7.22E-19,1.40E-19,1.42E-19,8.22E-19,6.45E-19,2.40E-19,1.56E-19,2.07E-19,9.57E-19,4.76E-19,2.18E-19,7.50E-19,5.14E-19,5.53E-19,6.96E-19,9.78E-19,3.18E-19,6.08E-19,6.62E-19,8.29E-19,9.99E-19,5.54E-19,4.10E-19,5.65E-19,5.19E-19,3.18E-19,9.44E-19,6.03E-19,4.20E-19,9.66E-19,3.23E-19,5.76E-19,6.29E-19,6.76E-19,9.44E-19,6.11E-19,9.36E-19,1.00E-18,6.90E-19,4.13E-19,1.85E-19,2.49E-19,9.68E-19,5.78E-19,4.49E-19,1.85E-19,9.90E-19,6.92E-19,8.53E-19,2.73E-19,6.05E-19,5.15E-19,9.09E-19,1.06E-19,3.46E-19,3.28E-19,3.95E-19,8.56E-19,1.55E-19,8.17E-19,7.42E-19,6.96E-19 +6.29E-19,8.61E-19,3.87E-19,8.90E-19,6.11E-19,6.29E-19,1.38E-19,5.67E-19,1.88E-19,4.99E-19,6.18E-19,2.39E-19,8.94E-20,8.32E-20,2.99E-19,9.80E-19,7.63E-19,4.86E-19,3.49E-19,2.96E-19,6.66E-19,8.83E-19,5.11E-19,9.22E-19,8.11E-19,1.94E-19,1.42E-19,1.42E-19,3.28E-19,6.86E-19,7.53E-20,1.92E-19,8.49E-19,6.73E-19,2.44E-19,4.48E-19,1.64E-19,1.03E-18,7.26E-19,1.44E-19,1.46E-19,8.25E-19,6.49E-19,2.45E-19,1.60E-19,2.12E-19,9.62E-19,4.81E-19,2.24E-19,7.55E-19,5.19E-19,5.58E-19,7.00E-19,9.84E-19,3.22E-19,6.12E-19,6.67E-19,8.35E-19,1.00E-18,5.58E-19,4.13E-19,5.69E-19,5.24E-19,3.22E-19,9.49E-19,6.07E-19,4.23E-19,9.70E-19,3.27E-19,5.80E-19,6.34E-19,6.81E-19,9.48E-19,6.16E-19,9.41E-19,1.01E-18,6.93E-19,4.18E-19,1.89E-19,2.55E-19,9.74E-19,5.83E-19,4.54E-19,1.88E-19,9.95E-19,6.96E-19,8.57E-19,2.78E-19,6.09E-19,5.20E-19,9.14E-19,1.09E-19,3.51E-19,3.32E-19,4.00E-19,8.62E-19,1.60E-19,8.22E-19,7.46E-19,7.00E-19 +6.34E-19,8.67E-19,3.93E-19,8.95E-19,6.15E-19,6.33E-19,1.42E-19,5.71E-19,1.93E-19,5.03E-19,6.21E-19,2.43E-19,9.31E-20,8.79E-20,3.03E-19,9.85E-19,7.68E-19,4.91E-19,3.53E-19,3.00E-19,6.70E-19,8.88E-19,5.15E-19,9.27E-19,8.16E-19,1.98E-19,1.47E-19,1.46E-19,3.33E-19,6.90E-19,7.93E-20,1.97E-19,8.52E-19,6.77E-19,2.47E-19,4.52E-19,1.70E-19,1.04E-18,7.30E-19,1.47E-19,1.50E-19,8.29E-19,6.53E-19,2.50E-19,1.65E-19,2.16E-19,9.67E-19,4.87E-19,2.29E-19,7.60E-19,5.23E-19,5.64E-19,7.04E-19,9.89E-19,3.26E-19,6.15E-19,6.71E-19,8.41E-19,1.01E-18,5.63E-19,4.16E-19,5.72E-19,5.29E-19,3.25E-19,9.54E-19,6.10E-19,4.27E-19,9.73E-19,3.30E-19,5.84E-19,6.38E-19,6.86E-19,9.52E-19,6.20E-19,9.46E-19,1.01E-18,6.97E-19,4.24E-19,1.93E-19,2.60E-19,9.80E-19,5.88E-19,4.60E-19,1.92E-19,1.00E-18,7.00E-19,8.61E-19,2.83E-19,6.13E-19,5.26E-19,9.18E-19,1.13E-19,3.56E-19,3.36E-19,4.05E-19,8.69E-19,1.66E-19,8.26E-19,7.50E-19,7.03E-19 +6.39E-19,8.72E-19,3.98E-19,8.99E-19,6.19E-19,6.37E-19,1.46E-19,5.75E-19,1.98E-19,5.07E-19,6.24E-19,2.48E-19,9.67E-20,9.27E-20,3.07E-19,9.90E-19,7.73E-19,4.96E-19,3.57E-19,3.03E-19,6.75E-19,8.93E-19,5.18E-19,9.32E-19,8.21E-19,2.03E-19,1.52E-19,1.50E-19,3.38E-19,6.94E-19,8.33E-20,2.03E-19,8.55E-19,6.80E-19,2.51E-19,4.55E-19,1.75E-19,1.04E-18,7.34E-19,1.50E-19,1.54E-19,8.33E-19,6.57E-19,2.56E-19,1.70E-19,2.20E-19,9.72E-19,4.92E-19,2.34E-19,7.65E-19,5.28E-19,5.69E-19,7.08E-19,9.95E-19,3.30E-19,6.18E-19,6.76E-19,8.47E-19,1.01E-18,5.67E-19,4.20E-19,5.75E-19,5.34E-19,3.29E-19,9.59E-19,6.14E-19,4.30E-19,9.77E-19,3.34E-19,5.88E-19,6.43E-19,6.92E-19,9.55E-19,6.24E-19,9.51E-19,1.01E-18,7.00E-19,4.29E-19,1.97E-19,2.66E-19,9.86E-19,5.93E-19,4.65E-19,1.95E-19,1.01E-18,7.04E-19,8.65E-19,2.88E-19,6.17E-19,5.31E-19,9.23E-19,1.17E-19,3.61E-19,3.41E-19,4.11E-19,8.75E-19,1.71E-19,8.31E-19,7.54E-19,7.07E-19 +6.44E-19,8.77E-19,4.04E-19,9.04E-19,6.23E-19,6.40E-19,1.49E-19,5.80E-19,2.02E-19,5.10E-19,6.28E-19,2.53E-19,1.00E-19,9.75E-20,3.11E-19,9.94E-19,7.78E-19,5.01E-19,3.61E-19,3.07E-19,6.80E-19,8.98E-19,5.22E-19,9.37E-19,8.25E-19,2.08E-19,1.57E-19,1.54E-19,3.43E-19,6.98E-19,8.72E-20,2.08E-19,8.59E-19,6.84E-19,2.55E-19,4.59E-19,1.81E-19,1.05E-18,7.38E-19,1.53E-19,1.58E-19,8.36E-19,6.62E-19,2.61E-19,1.74E-19,2.25E-19,9.77E-19,4.97E-19,2.40E-19,7.69E-19,5.33E-19,5.75E-19,7.13E-19,1.00E-18,3.33E-19,6.22E-19,6.80E-19,8.53E-19,1.02E-18,5.71E-19,4.23E-19,5.79E-19,5.39E-19,3.33E-19,9.64E-19,6.18E-19,4.34E-19,9.80E-19,3.38E-19,5.92E-19,6.48E-19,6.97E-19,9.59E-19,6.29E-19,9.56E-19,1.02E-18,7.03E-19,4.35E-19,2.00E-19,2.72E-19,9.93E-19,5.98E-19,4.70E-19,1.98E-19,1.01E-18,7.07E-19,8.69E-19,2.92E-19,6.21E-19,5.36E-19,9.28E-19,1.21E-19,3.66E-19,3.45E-19,4.16E-19,8.81E-19,1.77E-19,8.36E-19,7.59E-19,7.11E-19 +6.48E-19,8.83E-19,4.09E-19,9.08E-19,6.27E-19,6.44E-19,1.53E-19,5.84E-19,2.07E-19,5.14E-19,6.31E-19,2.57E-19,1.04E-19,1.02E-19,3.15E-19,9.99E-19,7.83E-19,5.06E-19,3.65E-19,3.10E-19,6.84E-19,9.04E-19,5.26E-19,9.42E-19,8.30E-19,2.12E-19,1.62E-19,1.58E-19,3.48E-19,7.02E-19,9.12E-20,2.13E-19,8.62E-19,6.87E-19,2.58E-19,4.63E-19,1.87E-19,1.05E-18,7.41E-19,1.57E-19,1.62E-19,8.40E-19,6.66E-19,2.66E-19,1.79E-19,2.29E-19,9.82E-19,5.03E-19,2.45E-19,7.74E-19,5.37E-19,5.80E-19,7.17E-19,1.01E-18,3.37E-19,6.25E-19,6.85E-19,8.59E-19,1.02E-18,5.76E-19,4.26E-19,5.82E-19,5.44E-19,3.36E-19,9.69E-19,6.21E-19,4.37E-19,9.83E-19,3.42E-19,5.96E-19,6.53E-19,7.02E-19,9.63E-19,6.33E-19,9.61E-19,1.02E-18,7.07E-19,4.40E-19,2.04E-19,2.77E-19,9.99E-19,6.03E-19,4.76E-19,2.02E-19,1.02E-18,7.11E-19,8.73E-19,2.97E-19,6.25E-19,5.41E-19,9.32E-19,1.25E-19,3.71E-19,3.49E-19,4.21E-19,8.87E-19,1.82E-19,8.41E-19,7.63E-19,7.15E-19 +6.53E-19,8.88E-19,4.14E-19,9.13E-19,6.31E-19,6.48E-19,1.57E-19,5.88E-19,2.12E-19,5.18E-19,6.35E-19,2.62E-19,1.08E-19,1.07E-19,3.19E-19,1.00E-18,7.88E-19,5.11E-19,3.69E-19,3.14E-19,6.89E-19,9.09E-19,5.30E-19,9.47E-19,8.35E-19,2.17E-19,1.66E-19,1.62E-19,3.53E-19,7.06E-19,9.52E-20,2.19E-19,8.66E-19,6.91E-19,2.62E-19,4.67E-19,1.92E-19,1.06E-18,7.45E-19,1.60E-19,1.65E-19,8.43E-19,6.70E-19,2.72E-19,1.84E-19,2.33E-19,9.87E-19,5.08E-19,2.50E-19,7.79E-19,5.42E-19,5.85E-19,7.21E-19,1.01E-18,3.41E-19,6.28E-19,6.89E-19,8.65E-19,1.02E-18,5.80E-19,4.29E-19,5.85E-19,5.50E-19,3.40E-19,9.74E-19,6.25E-19,4.41E-19,9.87E-19,3.46E-19,6.00E-19,6.58E-19,7.07E-19,9.67E-19,6.37E-19,9.66E-19,1.02E-18,7.10E-19,4.46E-19,2.08E-19,2.83E-19,1.01E-18,6.08E-19,4.81E-19,2.05E-19,1.02E-18,7.15E-19,8.78E-19,3.02E-19,6.29E-19,5.46E-19,9.37E-19,1.29E-19,3.76E-19,3.53E-19,4.27E-19,8.94E-19,1.88E-19,8.46E-19,7.67E-19,7.18E-19 +6.58E-19,8.93E-19,4.20E-19,9.17E-19,6.35E-19,6.51E-19,1.60E-19,5.92E-19,2.17E-19,5.21E-19,6.38E-19,2.67E-19,1.11E-19,1.12E-19,3.23E-19,1.01E-18,7.93E-19,5.16E-19,3.73E-19,3.17E-19,6.94E-19,9.14E-19,5.34E-19,9.52E-19,8.39E-19,2.22E-19,1.71E-19,1.66E-19,3.58E-19,7.10E-19,9.91E-20,2.24E-19,8.69E-19,6.94E-19,2.65E-19,4.70E-19,1.98E-19,1.06E-18,7.49E-19,1.63E-19,1.69E-19,8.47E-19,6.75E-19,2.77E-19,1.89E-19,2.38E-19,9.92E-19,5.13E-19,2.56E-19,7.84E-19,5.46E-19,5.91E-19,7.25E-19,1.02E-18,3.45E-19,6.32E-19,6.94E-19,8.71E-19,1.03E-18,5.84E-19,4.32E-19,5.89E-19,5.55E-19,3.43E-19,9.79E-19,6.28E-19,4.44E-19,9.90E-19,3.50E-19,6.04E-19,6.63E-19,7.12E-19,9.70E-19,6.42E-19,9.71E-19,1.03E-18,7.13E-19,4.51E-19,2.12E-19,2.88E-19,1.01E-18,6.13E-19,4.87E-19,2.09E-19,1.03E-18,7.19E-19,8.82E-19,3.07E-19,6.33E-19,5.52E-19,9.42E-19,1.32E-19,3.81E-19,3.58E-19,4.32E-19,9.00E-19,1.93E-19,8.51E-19,7.71E-19,7.22E-19 +6.63E-19,8.99E-19,4.25E-19,9.22E-19,6.39E-19,6.55E-19,1.64E-19,5.97E-19,2.21E-19,5.25E-19,6.42E-19,2.72E-19,1.15E-19,1.17E-19,3.27E-19,1.01E-18,7.98E-19,5.21E-19,3.77E-19,3.21E-19,6.98E-19,9.19E-19,5.38E-19,9.56E-19,8.44E-19,2.26E-19,1.76E-19,1.70E-19,3.63E-19,7.14E-19,1.03E-19,2.29E-19,8.73E-19,6.98E-19,2.69E-19,4.74E-19,2.03E-19,1.07E-18,7.53E-19,1.67E-19,1.73E-19,8.50E-19,6.79E-19,2.82E-19,1.93E-19,2.42E-19,9.97E-19,5.19E-19,2.61E-19,7.88E-19,5.51E-19,5.96E-19,7.29E-19,1.02E-18,3.49E-19,6.35E-19,6.99E-19,8.77E-19,1.03E-18,5.89E-19,4.35E-19,5.92E-19,5.60E-19,3.47E-19,9.83E-19,6.32E-19,4.48E-19,9.94E-19,3.54E-19,6.08E-19,6.68E-19,7.18E-19,9.74E-19,6.46E-19,9.76E-19,1.03E-18,7.17E-19,4.56E-19,2.16E-19,2.94E-19,1.02E-18,6.18E-19,4.92E-19,2.12E-19,1.03E-18,7.23E-19,8.86E-19,3.12E-19,6.37E-19,5.57E-19,9.46E-19,1.36E-19,3.86E-19,3.62E-19,4.37E-19,9.06E-19,1.98E-19,8.55E-19,7.75E-19,7.26E-19 +6.68E-19,9.04E-19,4.30E-19,9.26E-19,6.43E-19,6.59E-19,1.68E-19,6.01E-19,2.26E-19,5.29E-19,6.45E-19,2.76E-19,1.19E-19,1.21E-19,3.31E-19,1.02E-18,8.03E-19,5.26E-19,3.81E-19,3.24E-19,7.03E-19,9.24E-19,5.42E-19,9.61E-19,8.49E-19,2.31E-19,1.81E-19,1.74E-19,3.68E-19,7.18E-19,1.07E-19,2.35E-19,8.76E-19,7.02E-19,2.73E-19,4.78E-19,2.09E-19,1.07E-18,7.57E-19,1.70E-19,1.77E-19,8.54E-19,6.83E-19,2.87E-19,1.98E-19,2.46E-19,1.00E-18,5.24E-19,2.67E-19,7.93E-19,5.55E-19,6.02E-19,7.34E-19,1.03E-18,3.52E-19,6.39E-19,7.03E-19,8.83E-19,1.04E-18,5.93E-19,4.38E-19,5.95E-19,5.65E-19,3.50E-19,9.88E-19,6.35E-19,4.51E-19,9.97E-19,3.58E-19,6.12E-19,6.73E-19,7.23E-19,9.78E-19,6.50E-19,9.81E-19,1.03E-18,7.20E-19,4.62E-19,2.20E-19,3.00E-19,1.02E-18,6.23E-19,4.97E-19,2.16E-19,1.04E-18,7.27E-19,8.90E-19,3.17E-19,6.41E-19,5.62E-19,9.51E-19,1.40E-19,3.91E-19,3.66E-19,4.42E-19,9.13E-19,2.04E-19,8.60E-19,7.79E-19,7.30E-19 +6.73E-19,9.09E-19,4.36E-19,9.31E-19,6.47E-19,6.62E-19,1.71E-19,6.05E-19,2.31E-19,5.32E-19,6.48E-19,2.81E-19,1.22E-19,1.26E-19,3.35E-19,1.02E-18,8.08E-19,5.31E-19,3.85E-19,3.28E-19,7.08E-19,9.29E-19,5.46E-19,9.66E-19,8.53E-19,2.36E-19,1.86E-19,1.78E-19,3.73E-19,7.22E-19,1.11E-19,2.40E-19,8.80E-19,7.05E-19,2.76E-19,4.82E-19,2.14E-19,1.08E-18,7.61E-19,1.73E-19,1.81E-19,8.57E-19,6.87E-19,2.93E-19,2.03E-19,2.50E-19,1.01E-18,5.30E-19,2.72E-19,7.98E-19,5.60E-19,6.07E-19,7.38E-19,1.03E-18,3.56E-19,6.42E-19,7.08E-19,8.89E-19,1.04E-18,5.97E-19,4.41E-19,5.99E-19,5.70E-19,3.54E-19,9.93E-19,6.39E-19,4.55E-19,1.00E-18,3.62E-19,6.16E-19,6.78E-19,7.28E-19,9.81E-19,6.55E-19,9.85E-19,1.04E-18,7.24E-19,4.67E-19,2.24E-19,3.05E-19,1.03E-18,6.28E-19,5.03E-19,2.19E-19,1.04E-18,7.31E-19,8.94E-19,3.22E-19,6.45E-19,5.67E-19,9.56E-19,1.44E-19,3.95E-19,3.71E-19,4.48E-19,9.19E-19,2.09E-19,8.65E-19,7.83E-19,7.33E-19 +6.78E-19,9.15E-19,4.41E-19,9.35E-19,6.51E-19,6.66E-19,1.75E-19,6.09E-19,2.36E-19,5.36E-19,6.52E-19,2.86E-19,1.26E-19,1.31E-19,3.39E-19,1.03E-18,8.13E-19,5.36E-19,3.89E-19,3.31E-19,7.12E-19,9.34E-19,5.50E-19,9.71E-19,8.58E-19,2.40E-19,1.91E-19,1.82E-19,3.79E-19,7.25E-19,1.15E-19,2.46E-19,8.83E-19,7.09E-19,2.80E-19,4.85E-19,2.20E-19,1.08E-18,7.64E-19,1.77E-19,1.85E-19,8.61E-19,6.92E-19,2.98E-19,2.07E-19,2.55E-19,1.01E-18,5.35E-19,2.77E-19,8.03E-19,5.65E-19,6.13E-19,7.42E-19,1.04E-18,3.60E-19,6.45E-19,7.12E-19,8.95E-19,1.04E-18,6.02E-19,4.44E-19,6.02E-19,5.75E-19,3.58E-19,9.98E-19,6.43E-19,4.58E-19,1.00E-18,3.66E-19,6.20E-19,6.83E-19,7.33E-19,9.85E-19,6.59E-19,9.90E-19,1.04E-18,7.27E-19,4.73E-19,2.28E-19,3.11E-19,1.04E-18,6.32E-19,5.08E-19,2.23E-19,1.05E-18,7.34E-19,8.98E-19,3.27E-19,6.50E-19,5.72E-19,9.60E-19,1.48E-19,4.00E-19,3.75E-19,4.53E-19,9.25E-19,2.15E-19,8.70E-19,7.87E-19,7.37E-19 +6.83E-19,9.20E-19,4.46E-19,9.40E-19,6.55E-19,6.70E-19,1.79E-19,6.13E-19,2.40E-19,5.40E-19,6.55E-19,2.91E-19,1.30E-19,1.36E-19,3.43E-19,1.03E-18,8.18E-19,5.41E-19,3.93E-19,3.35E-19,7.17E-19,9.39E-19,5.54E-19,9.76E-19,8.63E-19,2.45E-19,1.95E-19,1.86E-19,3.84E-19,7.29E-19,1.19E-19,2.51E-19,8.86E-19,7.12E-19,2.83E-19,4.89E-19,2.25E-19,1.09E-18,7.68E-19,1.80E-19,1.88E-19,8.64E-19,6.96E-19,3.03E-19,2.12E-19,2.59E-19,1.02E-18,5.40E-19,2.83E-19,8.07E-19,5.69E-19,6.18E-19,7.46E-19,1.05E-18,3.64E-19,6.49E-19,7.17E-19,9.01E-19,1.05E-18,6.06E-19,4.48E-19,6.05E-19,5.80E-19,3.61E-19,1.00E-18,6.46E-19,4.62E-19,1.01E-18,3.69E-19,6.24E-19,6.88E-19,7.39E-19,9.89E-19,6.63E-19,9.95E-19,1.04E-18,7.30E-19,4.78E-19,2.32E-19,3.16E-19,1.04E-18,6.37E-19,5.13E-19,2.26E-19,1.05E-18,7.38E-19,9.02E-19,3.32E-19,6.54E-19,5.77E-19,9.65E-19,1.52E-19,4.05E-19,3.79E-19,4.58E-19,9.31E-19,2.20E-19,8.75E-19,7.92E-19,7.41E-19 +6.87E-19,9.25E-19,4.52E-19,9.44E-19,6.59E-19,6.73E-19,1.82E-19,6.18E-19,2.45E-19,5.43E-19,6.59E-19,2.95E-19,1.33E-19,1.41E-19,3.47E-19,1.04E-18,8.23E-19,5.46E-19,3.96E-19,3.38E-19,7.21E-19,9.44E-19,5.57E-19,9.81E-19,8.68E-19,2.50E-19,2.00E-19,1.90E-19,3.89E-19,7.33E-19,1.23E-19,2.56E-19,8.90E-19,7.16E-19,2.87E-19,4.93E-19,2.31E-19,1.09E-18,7.72E-19,1.83E-19,1.92E-19,8.68E-19,7.00E-19,3.08E-19,2.17E-19,2.63E-19,1.02E-18,5.46E-19,2.88E-19,8.12E-19,5.74E-19,6.23E-19,7.50E-19,1.05E-18,3.68E-19,6.52E-19,7.21E-19,9.07E-19,1.05E-18,6.10E-19,4.51E-19,6.09E-19,5.85E-19,3.65E-19,1.01E-18,6.50E-19,4.65E-19,1.01E-18,3.73E-19,6.28E-19,6.93E-19,7.44E-19,9.93E-19,6.68E-19,1.00E-18,1.05E-18,7.34E-19,4.84E-19,2.36E-19,3.22E-19,1.05E-18,6.42E-19,5.19E-19,2.30E-19,1.06E-18,7.42E-19,9.06E-19,3.37E-19,6.58E-19,5.83E-19,9.70E-19,1.56E-19,4.10E-19,3.83E-19,4.64E-19,9.38E-19,2.26E-19,8.80E-19,7.96E-19,7.44E-19 +6.92E-19,9.30E-19,4.57E-19,9.49E-19,6.64E-19,6.77E-19,1.86E-19,6.22E-19,2.50E-19,5.47E-19,6.62E-19,3.00E-19,1.37E-19,1.45E-19,3.51E-19,1.04E-18,8.27E-19,5.51E-19,4.00E-19,3.41E-19,7.26E-19,9.49E-19,5.61E-19,9.86E-19,8.72E-19,2.54E-19,2.05E-19,1.94E-19,3.94E-19,7.37E-19,1.27E-19,2.62E-19,8.93E-19,7.19E-19,2.91E-19,4.96E-19,2.36E-19,1.10E-18,7.76E-19,1.86E-19,1.96E-19,8.72E-19,7.05E-19,3.14E-19,2.22E-19,2.68E-19,1.03E-18,5.51E-19,2.94E-19,8.17E-19,5.78E-19,6.29E-19,7.55E-19,1.06E-18,3.72E-19,6.55E-19,7.26E-19,9.13E-19,1.06E-18,6.15E-19,4.54E-19,6.12E-19,5.90E-19,3.68E-19,1.01E-18,6.53E-19,4.69E-19,1.01E-18,3.77E-19,6.32E-19,6.98E-19,7.49E-19,9.96E-19,6.72E-19,1.01E-18,1.05E-18,7.37E-19,4.89E-19,2.40E-19,3.27E-19,1.05E-18,6.47E-19,5.24E-19,2.33E-19,1.06E-18,7.46E-19,9.10E-19,3.42E-19,6.62E-19,5.88E-19,9.74E-19,1.59E-19,4.15E-19,3.88E-19,4.69E-19,9.44E-19,2.31E-19,8.84E-19,8.00E-19,7.48E-19 +6.97E-19,9.36E-19,4.63E-19,9.53E-19,6.68E-19,6.80E-19,1.90E-19,6.26E-19,2.54E-19,5.51E-19,6.65E-19,3.05E-19,1.41E-19,1.50E-19,3.54E-19,1.05E-18,8.32E-19,5.56E-19,4.04E-19,3.45E-19,7.31E-19,9.54E-19,5.65E-19,9.91E-19,8.77E-19,2.59E-19,2.10E-19,1.98E-19,3.99E-19,7.41E-19,1.31E-19,2.67E-19,8.97E-19,7.23E-19,2.94E-19,5.00E-19,2.42E-19,1.10E-18,7.80E-19,1.90E-19,2.00E-19,8.75E-19,7.09E-19,3.19E-19,2.26E-19,2.72E-19,1.03E-18,5.56E-19,2.99E-19,8.22E-19,5.83E-19,6.34E-19,7.59E-19,1.06E-18,3.75E-19,6.59E-19,7.30E-19,9.19E-19,1.06E-18,6.19E-19,4.57E-19,6.15E-19,5.95E-19,3.72E-19,1.02E-18,6.57E-19,4.72E-19,1.02E-18,3.81E-19,6.36E-19,7.02E-19,7.54E-19,1.00E-18,6.77E-19,1.01E-18,1.05E-18,7.40E-19,4.95E-19,2.44E-19,3.33E-19,1.06E-18,6.52E-19,5.29E-19,2.37E-19,1.07E-18,7.50E-19,9.14E-19,3.47E-19,6.66E-19,5.93E-19,9.79E-19,1.63E-19,4.20E-19,3.92E-19,4.74E-19,9.50E-19,2.37E-19,8.89E-19,8.04E-19,7.52E-19 +7.02E-19,9.41E-19,4.68E-19,9.58E-19,6.72E-19,6.84E-19,1.93E-19,6.30E-19,2.59E-19,5.54E-19,6.69E-19,3.10E-19,1.44E-19,1.55E-19,3.58E-19,1.05E-18,8.37E-19,5.61E-19,4.08E-19,3.48E-19,7.35E-19,9.60E-19,5.69E-19,9.96E-19,8.82E-19,2.64E-19,2.15E-19,2.02E-19,4.04E-19,7.45E-19,1.35E-19,2.72E-19,9.00E-19,7.27E-19,2.98E-19,5.04E-19,2.47E-19,1.11E-18,7.84E-19,1.93E-19,2.04E-19,8.79E-19,7.13E-19,3.24E-19,2.31E-19,2.76E-19,1.04E-18,5.62E-19,3.04E-19,8.26E-19,5.87E-19,6.40E-19,7.63E-19,1.07E-18,3.79E-19,6.62E-19,7.35E-19,9.25E-19,1.06E-18,6.23E-19,4.60E-19,6.19E-19,6.00E-19,3.76E-19,1.02E-18,6.61E-19,4.76E-19,1.02E-18,3.85E-19,6.40E-19,7.07E-19,7.60E-19,1.00E-18,6.81E-19,1.02E-18,1.06E-18,7.44E-19,5.00E-19,2.48E-19,3.39E-19,1.07E-18,6.57E-19,5.35E-19,2.40E-19,1.07E-18,7.54E-19,9.18E-19,3.52E-19,6.70E-19,5.98E-19,9.84E-19,1.67E-19,4.25E-19,3.96E-19,4.80E-19,9.57E-19,2.42E-19,8.94E-19,8.08E-19,7.56E-19 +7.07E-19,9.46E-19,4.73E-19,9.62E-19,6.76E-19,6.88E-19,1.97E-19,6.34E-19,2.64E-19,5.58E-19,6.72E-19,3.14E-19,1.48E-19,1.60E-19,3.62E-19,1.06E-18,8.42E-19,5.65E-19,4.12E-19,3.52E-19,7.40E-19,9.65E-19,5.73E-19,1.00E-18,8.86E-19,2.68E-19,2.20E-19,2.06E-19,4.09E-19,7.49E-19,1.39E-19,2.78E-19,9.04E-19,7.30E-19,3.01E-19,5.08E-19,2.53E-19,1.11E-18,7.88E-19,1.96E-19,2.08E-19,8.82E-19,7.17E-19,3.29E-19,2.36E-19,2.81E-19,1.04E-18,5.67E-19,3.10E-19,8.31E-19,5.92E-19,6.45E-19,7.67E-19,1.07E-18,3.83E-19,6.65E-19,7.39E-19,9.31E-19,1.07E-18,6.28E-19,4.63E-19,6.22E-19,6.06E-19,3.79E-19,1.03E-18,6.64E-19,4.79E-19,1.03E-18,3.89E-19,6.44E-19,7.12E-19,7.65E-19,1.01E-18,6.85E-19,1.02E-18,1.06E-18,7.47E-19,5.06E-19,2.52E-19,3.44E-19,1.07E-18,6.62E-19,5.40E-19,2.44E-19,1.08E-18,7.58E-19,9.22E-19,3.57E-19,6.74E-19,6.03E-19,9.88E-19,1.71E-19,4.30E-19,4.00E-19,4.85E-19,9.63E-19,2.47E-19,8.99E-19,8.12E-19,7.59E-19 +7.12E-19,9.52E-19,4.79E-19,9.67E-19,6.80E-19,6.91E-19,2.01E-19,6.39E-19,2.69E-19,5.62E-19,6.76E-19,3.19E-19,1.52E-19,1.65E-19,3.66E-19,1.06E-18,8.47E-19,5.70E-19,4.16E-19,3.55E-19,7.45E-19,9.70E-19,5.77E-19,1.01E-18,8.91E-19,2.73E-19,2.24E-19,2.10E-19,4.14E-19,7.53E-19,1.43E-19,2.83E-19,9.07E-19,7.34E-19,3.05E-19,5.11E-19,2.58E-19,1.12E-18,7.91E-19,2.00E-19,2.12E-19,8.86E-19,7.22E-19,3.35E-19,2.40E-19,2.85E-19,1.05E-18,5.72E-19,3.15E-19,8.36E-19,5.97E-19,6.50E-19,7.71E-19,1.08E-18,3.87E-19,6.69E-19,7.44E-19,9.37E-19,1.07E-18,6.32E-19,4.66E-19,6.25E-19,6.11E-19,3.83E-19,1.03E-18,6.68E-19,4.83E-19,1.03E-18,3.93E-19,6.48E-19,7.17E-19,7.70E-19,1.01E-18,6.90E-19,1.03E-18,1.06E-18,7.50E-19,5.11E-19,2.56E-19,3.50E-19,1.08E-18,6.67E-19,5.45E-19,2.47E-19,1.08E-18,7.61E-19,9.26E-19,3.62E-19,6.78E-19,6.09E-19,9.93E-19,1.75E-19,4.35E-19,4.05E-19,4.90E-19,9.69E-19,2.53E-19,9.04E-19,8.16E-19,7.63E-19 +7.17E-19,9.57E-19,4.84E-19,9.71E-19,6.84E-19,6.95E-19,2.04E-19,6.43E-19,2.73E-19,5.65E-19,6.79E-19,3.24E-19,1.55E-19,1.69E-19,3.70E-19,1.06E-18,8.52E-19,5.75E-19,4.20E-19,3.59E-19,7.49E-19,9.75E-19,5.81E-19,1.01E-18,8.96E-19,2.78E-19,2.29E-19,2.14E-19,4.19E-19,7.57E-19,1.47E-19,2.89E-19,9.11E-19,7.37E-19,3.09E-19,5.15E-19,2.64E-19,1.12E-18,7.95E-19,2.03E-19,2.15E-19,8.89E-19,7.26E-19,3.40E-19,2.45E-19,2.89E-19,1.05E-18,5.78E-19,3.20E-19,8.41E-19,6.01E-19,6.56E-19,7.76E-19,1.09E-18,3.91E-19,6.72E-19,7.49E-19,9.43E-19,1.08E-18,6.36E-19,4.69E-19,6.29E-19,6.16E-19,3.86E-19,1.04E-18,6.71E-19,4.86E-19,1.03E-18,3.97E-19,6.52E-19,7.22E-19,7.75E-19,1.02E-18,6.94E-19,1.03E-18,1.07E-18,7.54E-19,5.17E-19,2.60E-19,3.55E-19,1.09E-18,6.72E-19,5.51E-19,2.51E-19,1.09E-18,7.65E-19,9.30E-19,3.67E-19,6.82E-19,6.14E-19,9.98E-19,1.79E-19,4.40E-19,4.09E-19,4.95E-19,9.75E-19,2.58E-19,9.09E-19,8.20E-19,7.67E-19 +7.22E-19,9.62E-19,4.89E-19,9.76E-19,6.88E-19,6.99E-19,2.08E-19,6.47E-19,2.78E-19,5.69E-19,6.83E-19,3.28E-19,1.59E-19,1.74E-19,3.74E-19,1.07E-18,8.57E-19,5.80E-19,4.24E-19,3.62E-19,7.54E-19,9.80E-19,5.85E-19,1.02E-18,9.00E-19,2.82E-19,2.34E-19,2.18E-19,4.24E-19,7.61E-19,1.51E-19,2.94E-19,9.14E-19,7.41E-19,3.12E-19,5.19E-19,2.69E-19,1.13E-18,7.99E-19,2.06E-19,2.19E-19,8.93E-19,7.30E-19,3.45E-19,2.50E-19,2.94E-19,1.06E-18,5.83E-19,3.26E-19,8.45E-19,6.06E-19,6.61E-19,7.80E-19,1.09E-18,3.95E-19,6.75E-19,7.53E-19,9.49E-19,1.08E-18,6.40E-19,4.72E-19,6.32E-19,6.21E-19,3.90E-19,1.04E-18,6.75E-19,4.90E-19,1.04E-18,4.01E-19,6.56E-19,7.27E-19,7.80E-19,1.02E-18,6.98E-19,1.04E-18,1.07E-18,7.57E-19,5.22E-19,2.64E-19,3.61E-19,1.09E-18,6.77E-19,5.56E-19,2.54E-19,1.09E-18,7.69E-19,9.34E-19,3.72E-19,6.86E-19,6.19E-19,1.00E-18,1.82E-19,4.45E-19,4.13E-19,5.01E-19,9.82E-19,2.64E-19,9.13E-19,8.25E-19,7.71E-19 +7.27E-19,9.68E-19,4.95E-19,9.80E-19,6.92E-19,7.02E-19,2.12E-19,6.51E-19,2.83E-19,5.73E-19,6.86E-19,3.33E-19,1.63E-19,1.79E-19,3.78E-19,1.07E-18,8.62E-19,5.85E-19,4.28E-19,3.66E-19,7.59E-19,9.85E-19,5.89E-19,1.02E-18,9.05E-19,2.87E-19,2.39E-19,2.22E-19,4.30E-19,7.65E-19,1.55E-19,2.99E-19,9.17E-19,7.45E-19,3.16E-19,5.23E-19,2.75E-19,1.13E-18,8.03E-19,2.09E-19,2.23E-19,8.96E-19,7.35E-19,3.50E-19,2.55E-19,2.98E-19,1.06E-18,5.89E-19,3.31E-19,8.50E-19,6.10E-19,6.67E-19,7.84E-19,1.10E-18,3.98E-19,6.79E-19,7.58E-19,9.55E-19,1.08E-18,6.45E-19,4.76E-19,6.35E-19,6.26E-19,3.93E-19,1.05E-18,6.79E-19,4.93E-19,1.04E-18,4.05E-19,6.59E-19,7.32E-19,7.86E-19,1.02E-18,7.03E-19,1.04E-18,1.07E-18,7.60E-19,5.27E-19,2.68E-19,3.66E-19,1.10E-18,6.82E-19,5.61E-19,2.57E-19,1.10E-18,7.73E-19,9.38E-19,3.77E-19,6.90E-19,6.24E-19,1.01E-18,1.86E-19,4.50E-19,4.18E-19,5.06E-19,9.88E-19,2.69E-19,9.18E-19,8.29E-19,7.74E-19 +7.31E-19,9.73E-19,5.00E-19,9.85E-19,6.96E-19,7.06E-19,2.16E-19,6.55E-19,2.88E-19,5.76E-19,6.89E-19,3.38E-19,1.66E-19,1.84E-19,3.82E-19,1.08E-18,8.67E-19,5.90E-19,4.32E-19,3.69E-19,7.63E-19,9.90E-19,5.92E-19,1.03E-18,9.10E-19,2.92E-19,2.44E-19,2.26E-19,4.35E-19,7.69E-19,1.59E-19,3.05E-19,9.21E-19,7.48E-19,3.20E-19,5.26E-19,2.80E-19,1.14E-18,8.07E-19,2.13E-19,2.27E-19,9.00E-19,7.39E-19,3.56E-19,2.59E-19,3.02E-19,1.07E-18,5.94E-19,3.37E-19,8.55E-19,6.15E-19,6.72E-19,7.88E-19,1.10E-18,4.02E-19,6.82E-19,7.62E-19,9.61E-19,1.09E-18,6.49E-19,4.79E-19,6.39E-19,6.31E-19,3.97E-19,1.05E-18,6.82E-19,4.97E-19,1.04E-18,4.08E-19,6.63E-19,7.37E-19,7.91E-19,1.03E-18,7.07E-19,1.05E-18,1.08E-18,7.64E-19,5.33E-19,2.72E-19,3.72E-19,1.10E-18,6.87E-19,5.67E-19,2.61E-19,1.10E-18,7.77E-19,9.42E-19,3.82E-19,6.94E-19,6.29E-19,1.01E-18,1.90E-19,4.55E-19,4.22E-19,5.11E-19,9.94E-19,2.75E-19,9.23E-19,8.33E-19,7.78E-19 +7.36E-19,9.78E-19,5.05E-19,9.89E-19,7.00E-19,7.10E-19,2.19E-19,6.60E-19,2.92E-19,5.80E-19,6.93E-19,3.43E-19,1.70E-19,1.89E-19,3.86E-19,1.08E-18,8.72E-19,5.95E-19,4.36E-19,3.73E-19,7.68E-19,9.95E-19,5.96E-19,1.03E-18,9.14E-19,2.96E-19,2.49E-19,2.30E-19,4.40E-19,7.73E-19,1.62E-19,3.10E-19,9.24E-19,7.52E-19,3.23E-19,5.30E-19,2.86E-19,1.14E-18,8.11E-19,2.16E-19,2.31E-19,9.03E-19,7.43E-19,3.61E-19,2.64E-19,3.07E-19,1.07E-18,5.99E-19,3.42E-19,8.60E-19,6.19E-19,6.78E-19,7.92E-19,1.11E-18,4.06E-19,6.86E-19,7.67E-19,9.67E-19,1.09E-18,6.53E-19,4.82E-19,6.42E-19,6.36E-19,4.01E-19,1.06E-18,6.86E-19,5.00E-19,1.05E-18,4.12E-19,6.67E-19,7.42E-19,7.96E-19,1.03E-18,7.11E-19,1.05E-18,1.08E-18,7.67E-19,5.38E-19,2.76E-19,3.78E-19,1.11E-18,6.92E-19,5.72E-19,2.64E-19,1.11E-18,7.81E-19,9.46E-19,3.87E-19,6.98E-19,6.35E-19,1.02E-18,1.94E-19,4.60E-19,4.26E-19,5.17E-19,1.00E-18,2.80E-19,9.28E-19,8.37E-19,7.82E-19 +7.41E-19,9.84E-19,5.11E-19,9.94E-19,7.04E-19,7.13E-19,2.23E-19,6.64E-19,2.97E-19,5.84E-19,6.96E-19,3.47E-19,1.73E-19,1.93E-19,3.90E-19,1.09E-18,8.77E-19,6.00E-19,4.40E-19,3.76E-19,7.73E-19,1.00E-18,6.00E-19,1.04E-18,9.19E-19,3.01E-19,2.53E-19,2.34E-19,4.45E-19,7.77E-19,1.66E-19,3.15E-19,9.28E-19,7.55E-19,3.27E-19,5.34E-19,2.91E-19,1.15E-18,8.14E-19,2.19E-19,2.35E-19,9.07E-19,7.47E-19,3.66E-19,2.69E-19,3.11E-19,1.08E-18,6.05E-19,3.47E-19,8.64E-19,6.24E-19,6.83E-19,7.96E-19,1.11E-18,4.10E-19,6.89E-19,7.71E-19,9.73E-19,1.10E-18,6.58E-19,4.85E-19,6.45E-19,6.41E-19,4.04E-19,1.06E-18,6.89E-19,5.04E-19,1.05E-18,4.16E-19,6.71E-19,7.47E-19,8.01E-19,1.03E-18,7.16E-19,1.06E-18,1.08E-18,7.71E-19,5.44E-19,2.80E-19,3.83E-19,1.12E-18,6.97E-19,5.77E-19,2.68E-19,1.11E-18,7.84E-19,9.50E-19,3.92E-19,7.02E-19,6.40E-19,1.02E-18,1.98E-19,4.65E-19,4.30E-19,5.22E-19,1.01E-18,2.86E-19,9.33E-19,8.41E-19,7.86E-19 +7.46E-19,9.89E-19,5.16E-19,9.98E-19,7.08E-19,7.17E-19,2.27E-19,6.68E-19,3.02E-19,5.87E-19,7.00E-19,3.52E-19,1.77E-19,1.98E-19,3.94E-19,1.09E-18,8.82E-19,6.05E-19,4.44E-19,3.80E-19,7.77E-19,1.01E-18,6.04E-19,1.04E-18,9.24E-19,3.06E-19,2.58E-19,2.38E-19,4.50E-19,7.81E-19,1.70E-19,3.21E-19,9.31E-19,7.59E-19,3.30E-19,5.38E-19,2.97E-19,1.15E-18,8.18E-19,2.23E-19,2.38E-19,9.11E-19,7.52E-19,3.71E-19,2.73E-19,3.15E-19,1.08E-18,6.10E-19,3.53E-19,8.69E-19,6.29E-19,6.88E-19,8.01E-19,1.12E-18,4.14E-19,6.92E-19,7.76E-19,9.79E-19,1.10E-18,6.62E-19,4.88E-19,6.49E-19,6.46E-19,4.08E-19,1.07E-18,6.93E-19,5.07E-19,1.05E-18,4.20E-19,6.75E-19,7.52E-19,8.07E-19,1.04E-18,7.20E-19,1.06E-18,1.09E-18,7.74E-19,5.49E-19,2.84E-19,3.89E-19,1.12E-18,7.02E-19,5.83E-19,2.71E-19,1.12E-18,7.88E-19,9.54E-19,3.97E-19,7.06E-19,6.45E-19,1.03E-18,2.02E-19,4.70E-19,4.35E-19,5.27E-19,1.01E-18,2.91E-19,9.38E-19,8.45E-19,7.89E-19 +7.51E-19,9.94E-19,5.22E-19,1.00E-18,7.12E-19,7.21E-19,2.30E-19,6.72E-19,3.07E-19,5.91E-19,7.03E-19,3.57E-19,1.81E-19,2.03E-19,3.98E-19,1.10E-18,8.87E-19,6.10E-19,4.48E-19,3.83E-19,7.82E-19,1.01E-18,6.08E-19,1.05E-18,9.29E-19,3.10E-19,2.63E-19,2.42E-19,4.55E-19,7.85E-19,1.74E-19,3.26E-19,9.35E-19,7.62E-19,3.34E-19,5.41E-19,3.02E-19,1.16E-18,8.22E-19,2.26E-19,2.42E-19,9.14E-19,7.56E-19,3.77E-19,2.78E-19,3.20E-19,1.09E-18,6.15E-19,3.58E-19,8.74E-19,6.33E-19,6.94E-19,8.05E-19,1.13E-18,4.17E-19,6.96E-19,7.80E-19,9.85E-19,1.10E-18,6.66E-19,4.91E-19,6.52E-19,6.51E-19,4.11E-19,1.07E-18,6.97E-19,5.11E-19,1.06E-18,4.24E-19,6.79E-19,7.57E-19,8.12E-19,1.04E-18,7.24E-19,1.07E-18,1.09E-18,7.77E-19,5.55E-19,2.88E-19,3.94E-19,1.13E-18,7.07E-19,5.88E-19,2.75E-19,1.12E-18,7.92E-19,9.58E-19,4.02E-19,7.10E-19,6.50E-19,1.03E-18,2.06E-19,4.75E-19,4.39E-19,5.33E-19,1.02E-18,2.96E-19,9.42E-19,8.49E-19,7.93E-19 +7.56E-19,1.00E-18,5.27E-19,1.01E-18,7.16E-19,7.24E-19,2.34E-19,6.76E-19,3.11E-19,5.95E-19,7.07E-19,3.62E-19,1.84E-19,2.08E-19,4.02E-19,1.10E-18,8.92E-19,6.15E-19,4.52E-19,3.87E-19,7.87E-19,1.02E-18,6.12E-19,1.05E-18,9.33E-19,3.15E-19,2.68E-19,2.46E-19,4.60E-19,7.89E-19,1.78E-19,3.32E-19,9.38E-19,7.66E-19,3.38E-19,5.45E-19,3.08E-19,1.16E-18,8.26E-19,2.29E-19,2.46E-19,9.18E-19,7.60E-19,3.82E-19,2.83E-19,3.24E-19,1.09E-18,6.21E-19,3.64E-19,8.79E-19,6.38E-19,6.99E-19,8.09E-19,1.13E-18,4.21E-19,6.99E-19,7.85E-19,9.91E-19,1.11E-18,6.71E-19,4.94E-19,6.55E-19,6.56E-19,4.15E-19,1.08E-18,7.00E-19,5.14E-19,1.06E-18,4.28E-19,6.83E-19,7.61E-19,8.17E-19,1.04E-18,7.29E-19,1.07E-18,1.09E-18,7.81E-19,5.60E-19,2.92E-19,4.00E-19,1.14E-18,7.12E-19,5.94E-19,2.78E-19,1.13E-18,7.96E-19,9.63E-19,4.07E-19,7.14E-19,6.55E-19,1.04E-18,2.09E-19,4.80E-19,4.43E-19,5.38E-19,1.03E-18,3.02E-19,9.47E-19,8.53E-19,7.97E-19 +7.61E-19,1.01E-18,5.32E-19,1.01E-18,7.20E-19,7.28E-19,2.38E-19,6.81E-19,3.16E-19,5.98E-19,7.10E-19,3.66E-19,1.88E-19,2.13E-19,4.06E-19,1.11E-18,8.97E-19,6.20E-19,4.55E-19,3.90E-19,7.91E-19,1.02E-18,6.16E-19,1.06E-18,9.38E-19,3.20E-19,2.73E-19,2.50E-19,4.65E-19,7.93E-19,1.82E-19,3.37E-19,9.42E-19,7.70E-19,3.41E-19,5.49E-19,3.14E-19,1.17E-18,8.30E-19,2.33E-19,2.50E-19,9.21E-19,7.65E-19,3.87E-19,2.88E-19,3.28E-19,1.10E-18,6.26E-19,3.69E-19,8.83E-19,6.42E-19,7.05E-19,8.13E-19,1.14E-18,4.25E-19,7.02E-19,7.90E-19,9.97E-19,1.11E-18,6.75E-19,4.97E-19,6.59E-19,6.62E-19,4.18E-19,1.08E-18,7.04E-19,5.17E-19,1.06E-18,4.32E-19,6.87E-19,7.66E-19,8.22E-19,1.05E-18,7.33E-19,1.08E-18,1.10E-18,7.84E-19,5.66E-19,2.96E-19,4.06E-19,1.14E-18,7.17E-19,5.99E-19,2.82E-19,1.13E-18,8.00E-19,9.67E-19,4.12E-19,7.18E-19,6.60E-19,1.04E-18,2.13E-19,4.85E-19,4.47E-19,5.43E-19,1.03E-18,3.07E-19,9.52E-19,8.58E-19,8.00E-19 +7.66E-19,1.01E-18,5.38E-19,1.02E-18,7.24E-19,7.31E-19,2.41E-19,6.85E-19,3.21E-19,6.02E-19,7.13E-19,3.71E-19,1.92E-19,2.17E-19,4.10E-19,1.11E-18,9.02E-19,6.25E-19,4.59E-19,3.93E-19,7.96E-19,1.03E-18,6.20E-19,1.06E-18,9.43E-19,3.25E-19,2.77E-19,2.54E-19,4.70E-19,7.97E-19,1.86E-19,3.42E-19,9.45E-19,7.73E-19,3.45E-19,5.52E-19,3.19E-19,1.17E-18,8.34E-19,2.36E-19,2.54E-19,9.25E-19,7.69E-19,3.92E-19,2.92E-19,3.33E-19,1.10E-18,6.31E-19,3.74E-19,8.88E-19,6.47E-19,7.10E-19,8.17E-19,1.14E-18,4.29E-19,7.06E-19,7.94E-19,1.00E-18,1.12E-18,6.79E-19,5.01E-19,6.62E-19,6.67E-19,4.22E-19,1.09E-18,7.07E-19,5.21E-19,1.07E-18,4.36E-19,6.91E-19,7.71E-19,8.28E-19,1.05E-18,7.38E-19,1.08E-18,1.10E-18,7.87E-19,5.71E-19,3.00E-19,4.11E-19,1.15E-18,7.21E-19,6.04E-19,2.85E-19,1.14E-18,8.04E-19,9.71E-19,4.17E-19,7.22E-19,6.66E-19,1.04E-18,2.17E-19,4.90E-19,4.52E-19,5.48E-19,1.04E-18,3.13E-19,9.57E-19,8.62E-19,8.04E-19 +7.70E-19,1.02E-18,5.43E-19,1.02E-18,7.28E-19,7.35E-19,2.45E-19,6.89E-19,3.26E-19,6.06E-19,7.17E-19,3.76E-19,1.95E-19,2.22E-19,4.14E-19,1.12E-18,9.07E-19,6.30E-19,4.63E-19,3.97E-19,8.01E-19,1.03E-18,6.24E-19,1.07E-18,9.47E-19,3.29E-19,2.82E-19,2.58E-19,4.75E-19,8.01E-19,1.90E-19,3.48E-19,9.48E-19,7.77E-19,3.48E-19,5.56E-19,3.25E-19,1.18E-18,8.38E-19,2.39E-19,2.58E-19,9.28E-19,7.73E-19,3.98E-19,2.97E-19,3.37E-19,1.11E-18,6.37E-19,3.80E-19,8.93E-19,6.51E-19,7.16E-19,8.22E-19,1.15E-18,4.33E-19,7.09E-19,7.99E-19,1.01E-18,1.12E-18,6.84E-19,5.04E-19,6.65E-19,6.72E-19,4.26E-19,1.09E-18,7.11E-19,5.24E-19,1.07E-18,4.40E-19,6.95E-19,7.76E-19,8.33E-19,1.06E-18,7.42E-19,1.09E-18,1.10E-18,7.91E-19,5.77E-19,3.04E-19,4.17E-19,1.15E-18,7.26E-19,6.10E-19,2.89E-19,1.14E-18,8.08E-19,9.75E-19,4.22E-19,7.26E-19,6.71E-19,1.05E-18,2.21E-19,4.94E-19,4.56E-19,5.54E-19,1.04E-18,3.18E-19,9.62E-19,8.66E-19,8.08E-19 +7.75E-19,1.02E-18,5.48E-19,1.02E-18,7.32E-19,7.39E-19,2.49E-19,6.93E-19,3.30E-19,6.09E-19,7.20E-19,3.80E-19,1.99E-19,2.27E-19,4.18E-19,1.12E-18,9.12E-19,6.35E-19,4.67E-19,4.00E-19,8.05E-19,1.04E-18,6.27E-19,1.07E-18,9.52E-19,3.34E-19,2.87E-19,2.62E-19,4.80E-19,8.05E-19,1.94E-19,3.53E-19,9.52E-19,7.80E-19,3.52E-19,5.60E-19,3.30E-19,1.18E-18,8.41E-19,2.42E-19,2.62E-19,9.32E-19,7.77E-19,4.03E-19,3.02E-19,3.41E-19,1.11E-18,6.42E-19,3.85E-19,8.98E-19,6.56E-19,7.21E-19,8.26E-19,1.15E-18,4.37E-19,7.12E-19,8.03E-19,1.01E-18,1.12E-18,6.88E-19,5.07E-19,6.69E-19,6.77E-19,4.29E-19,1.10E-18,7.15E-19,5.28E-19,1.07E-18,4.44E-19,6.99E-19,7.81E-19,8.38E-19,1.06E-18,7.46E-19,1.09E-18,1.11E-18,7.94E-19,5.82E-19,3.08E-19,4.22E-19,1.16E-18,7.31E-19,6.15E-19,2.92E-19,1.15E-18,8.11E-19,9.79E-19,4.27E-19,7.30E-19,6.76E-19,1.05E-18,2.25E-19,4.99E-19,4.60E-19,5.59E-19,1.05E-18,3.24E-19,9.67E-19,8.70E-19,8.12E-19 +7.80E-19,1.03E-18,5.54E-19,1.03E-18,7.36E-19,7.42E-19,2.52E-19,6.98E-19,3.35E-19,6.13E-19,7.24E-19,3.85E-19,2.03E-19,2.32E-19,4.22E-19,1.13E-18,9.17E-19,6.40E-19,4.71E-19,4.04E-19,8.10E-19,1.04E-18,6.31E-19,1.08E-18,9.57E-19,3.39E-19,2.92E-19,2.66E-19,4.86E-19,8.09E-19,1.98E-19,3.58E-19,9.55E-19,7.84E-19,3.56E-19,5.64E-19,3.36E-19,1.19E-18,8.45E-19,2.46E-19,2.65E-19,9.35E-19,7.82E-19,4.08E-19,3.06E-19,3.46E-19,1.12E-18,6.48E-19,3.90E-19,9.02E-19,6.61E-19,7.26E-19,8.30E-19,1.16E-18,4.40E-19,7.16E-19,8.08E-19,1.02E-18,1.13E-18,6.92E-19,5.10E-19,6.72E-19,6.82E-19,4.33E-19,1.10E-18,7.18E-19,5.31E-19,1.08E-18,4.47E-19,7.03E-19,7.86E-19,8.43E-19,1.06E-18,7.51E-19,1.09E-18,1.11E-18,7.97E-19,5.88E-19,3.11E-19,4.28E-19,1.17E-18,7.36E-19,6.20E-19,2.96E-19,1.15E-18,8.15E-19,9.83E-19,4.32E-19,7.35E-19,6.81E-19,1.06E-18,2.29E-19,5.04E-19,4.64E-19,5.64E-19,1.06E-18,3.29E-19,9.71E-19,8.74E-19,8.15E-19 +7.85E-19,1.03E-18,5.59E-19,1.03E-18,7.40E-19,7.46E-19,2.56E-19,7.02E-19,3.40E-19,6.16E-19,7.27E-19,3.90E-19,2.06E-19,2.36E-19,4.25E-19,1.13E-18,9.22E-19,6.45E-19,4.75E-19,4.07E-19,8.15E-19,1.05E-18,6.35E-19,1.08E-18,9.61E-19,3.43E-19,2.97E-19,2.70E-19,4.91E-19,8.13E-19,2.02E-19,3.64E-19,9.59E-19,7.87E-19,3.59E-19,5.67E-19,3.41E-19,1.19E-18,8.49E-19,2.49E-19,2.69E-19,9.39E-19,7.86E-19,4.13E-19,3.11E-19,3.50E-19,1.12E-18,6.53E-19,3.96E-19,9.07E-19,6.65E-19,7.32E-19,8.34E-19,1.17E-18,4.44E-19,7.19E-19,8.12E-19,1.03E-18,1.13E-18,6.97E-19,5.13E-19,6.75E-19,6.87E-19,4.36E-19,1.11E-18,7.22E-19,5.35E-19,1.08E-18,4.51E-19,7.07E-19,7.91E-19,8.49E-19,1.07E-18,7.55E-19,1.10E-18,1.11E-18,8.01E-19,5.93E-19,3.15E-19,4.33E-19,1.17E-18,7.41E-19,6.26E-19,2.99E-19,1.16E-18,8.19E-19,9.87E-19,4.37E-19,7.39E-19,6.86E-19,1.06E-18,2.32E-19,5.09E-19,4.69E-19,5.70E-19,1.06E-18,3.35E-19,9.76E-19,8.78E-19,8.19E-19 +7.90E-19,1.04E-18,5.64E-19,1.04E-18,7.44E-19,7.50E-19,2.60E-19,7.06E-19,3.45E-19,6.20E-19,7.31E-19,3.95E-19,2.10E-19,2.41E-19,4.29E-19,1.14E-18,9.27E-19,6.50E-19,4.79E-19,4.11E-19,8.19E-19,1.05E-18,6.39E-19,1.09E-18,9.66E-19,3.48E-19,3.02E-19,2.74E-19,4.96E-19,8.17E-19,2.06E-19,3.69E-19,9.62E-19,7.91E-19,3.63E-19,5.71E-19,3.47E-19,1.20E-18,8.53E-19,2.52E-19,2.73E-19,9.43E-19,7.90E-19,4.19E-19,3.16E-19,3.54E-19,1.13E-18,6.58E-19,4.01E-19,9.12E-19,6.70E-19,7.37E-19,8.38E-19,1.17E-18,4.48E-19,7.22E-19,8.17E-19,1.03E-18,1.14E-18,7.01E-19,5.16E-19,6.79E-19,6.92E-19,4.40E-19,1.11E-18,7.25E-19,5.38E-19,1.08E-18,4.55E-19,7.11E-19,7.96E-19,8.54E-19,1.07E-18,7.59E-19,1.10E-18,1.12E-18,8.04E-19,5.98E-19,3.19E-19,4.39E-19,1.18E-18,7.46E-19,6.31E-19,3.03E-19,1.16E-18,8.23E-19,9.91E-19,4.42E-19,7.43E-19,6.92E-19,1.07E-18,2.36E-19,5.14E-19,4.73E-19,5.75E-19,1.07E-18,3.40E-19,9.81E-19,8.82E-19,8.23E-19 +7.95E-19,1.04E-18,5.70E-19,1.04E-18,7.48E-19,7.53E-19,2.63E-19,7.10E-19,3.49E-19,6.24E-19,7.34E-19,3.99E-19,2.14E-19,2.46E-19,4.33E-19,1.14E-18,9.32E-19,6.55E-19,4.83E-19,4.14E-19,8.24E-19,1.06E-18,6.43E-19,1.09E-18,9.71E-19,3.53E-19,3.06E-19,2.78E-19,5.01E-19,8.20E-19,2.10E-19,3.75E-19,9.66E-19,7.95E-19,3.66E-19,5.75E-19,3.52E-19,1.20E-18,8.57E-19,2.56E-19,2.77E-19,9.46E-19,7.95E-19,4.24E-19,3.21E-19,3.59E-19,1.13E-18,6.64E-19,4.07E-19,9.17E-19,6.74E-19,7.43E-19,8.43E-19,1.18E-18,4.52E-19,7.26E-19,8.21E-19,1.04E-18,1.14E-18,7.05E-19,5.19E-19,6.82E-19,6.97E-19,4.44E-19,1.12E-18,7.29E-19,5.42E-19,1.09E-18,4.59E-19,7.15E-19,8.01E-19,8.59E-19,1.07E-18,7.64E-19,1.11E-18,1.12E-18,8.07E-19,6.04E-19,3.23E-19,4.45E-19,1.19E-18,7.51E-19,6.36E-19,3.06E-19,1.17E-18,8.27E-19,9.95E-19,4.47E-19,7.47E-19,6.97E-19,1.07E-18,2.40E-19,5.19E-19,4.77E-19,5.80E-19,1.08E-18,3.45E-19,9.86E-19,8.86E-19,8.27E-19 +8.00E-19,1.05E-18,5.75E-19,1.05E-18,7.52E-19,7.57E-19,2.67E-19,7.14E-19,3.54E-19,6.27E-19,7.37E-19,4.04E-19,2.17E-19,2.51E-19,4.37E-19,1.15E-18,9.37E-19,6.60E-19,4.87E-19,4.18E-19,8.29E-19,1.06E-18,6.47E-19,1.10E-18,9.75E-19,3.57E-19,3.11E-19,2.82E-19,5.06E-19,8.24E-19,2.14E-19,3.80E-19,9.69E-19,7.98E-19,3.70E-19,5.79E-19,3.58E-19,1.21E-18,8.61E-19,2.59E-19,2.81E-19,9.50E-19,7.99E-19,4.29E-19,3.25E-19,3.63E-19,1.14E-18,6.69E-19,4.12E-19,9.21E-19,6.79E-19,7.48E-19,8.47E-19,1.18E-18,4.56E-19,7.29E-19,8.26E-19,1.04E-18,1.14E-18,7.10E-19,5.22E-19,6.85E-19,7.02E-19,4.47E-19,1.12E-18,7.33E-19,5.45E-19,1.09E-18,4.63E-19,7.19E-19,8.06E-19,8.64E-19,1.08E-18,7.68E-19,1.11E-18,1.12E-18,8.11E-19,6.09E-19,3.27E-19,4.50E-19,1.19E-18,7.56E-19,6.42E-19,3.10E-19,1.17E-18,8.31E-19,9.99E-19,4.52E-19,7.51E-19,7.02E-19,1.08E-18,2.44E-19,5.24E-19,4.82E-19,5.86E-19,1.08E-18,3.51E-19,9.91E-19,8.91E-19,8.30E-19 +8.05E-19,1.05E-18,5.81E-19,1.05E-18,7.56E-19,7.61E-19,2.71E-19,7.19E-19,3.59E-19,6.31E-19,7.41E-19,4.09E-19,2.21E-19,2.56E-19,4.41E-19,1.15E-18,9.42E-19,6.65E-19,4.91E-19,4.21E-19,8.33E-19,1.07E-18,6.51E-19,1.10E-18,9.80E-19,3.62E-19,3.16E-19,2.86E-19,5.11E-19,8.28E-19,2.18E-19,3.85E-19,9.73E-19,8.02E-19,3.74E-19,5.82E-19,3.63E-19,1.21E-18,8.64E-19,2.62E-19,2.85E-19,9.53E-19,8.03E-19,4.35E-19,3.30E-19,3.67E-19,1.14E-18,6.74E-19,4.17E-19,9.26E-19,6.84E-19,7.53E-19,8.51E-19,1.19E-18,4.59E-19,7.33E-19,8.30E-19,1.05E-18,1.15E-18,7.14E-19,5.25E-19,6.89E-19,7.07E-19,4.51E-19,1.13E-18,7.36E-19,5.49E-19,1.09E-18,4.67E-19,7.23E-19,8.11E-19,8.69E-19,1.08E-18,7.72E-19,1.12E-18,1.13E-18,8.14E-19,6.15E-19,3.31E-19,4.56E-19,1.20E-18,7.61E-19,6.47E-19,3.13E-19,1.18E-18,8.35E-19,1.00E-18,4.57E-19,7.55E-19,7.07E-19,1.08E-18,2.48E-19,5.29E-19,4.86E-19,5.91E-19,1.09E-18,3.56E-19,9.96E-19,8.95E-19,8.34E-19 +8.10E-19,1.06E-18,5.86E-19,1.06E-18,7.60E-19,7.64E-19,2.74E-19,7.23E-19,3.64E-19,6.35E-19,7.44E-19,4.14E-19,2.25E-19,2.60E-19,4.45E-19,1.15E-18,9.47E-19,6.70E-19,4.95E-19,4.25E-19,8.38E-19,1.07E-18,6.55E-19,1.11E-18,9.85E-19,3.67E-19,3.21E-19,2.90E-19,5.16E-19,8.32E-19,2.22E-19,3.91E-19,9.76E-19,8.05E-19,3.77E-19,5.86E-19,3.69E-19,1.22E-18,8.68E-19,2.65E-19,2.89E-19,9.57E-19,8.07E-19,4.40E-19,3.35E-19,3.72E-19,1.15E-18,6.80E-19,4.23E-19,9.31E-19,6.88E-19,7.59E-19,8.55E-19,1.19E-18,4.63E-19,7.36E-19,8.35E-19,1.06E-18,1.15E-18,7.18E-19,5.29E-19,6.92E-19,7.12E-19,4.54E-19,1.13E-18,7.40E-19,5.52E-19,1.10E-18,4.71E-19,7.27E-19,8.16E-19,8.75E-19,1.09E-18,7.77E-19,1.12E-18,1.13E-18,8.17E-19,6.20E-19,3.35E-19,4.61E-19,1.20E-18,7.66E-19,6.52E-19,3.16E-19,1.18E-18,8.38E-19,1.01E-18,4.62E-19,7.59E-19,7.12E-19,1.09E-18,2.52E-19,5.34E-19,4.90E-19,5.96E-19,1.09E-18,3.62E-19,1.00E-18,8.99E-19,8.38E-19 +8.14E-19,1.06E-18,5.91E-19,1.06E-18,7.65E-19,7.68E-19,2.78E-19,7.27E-19,3.68E-19,6.38E-19,7.48E-19,4.18E-19,2.28E-19,2.65E-19,4.49E-19,1.16E-18,9.52E-19,6.75E-19,4.99E-19,4.28E-19,8.43E-19,1.08E-18,6.59E-19,1.11E-18,9.90E-19,3.71E-19,3.26E-19,2.94E-19,5.21E-19,8.36E-19,2.26E-19,3.96E-19,9.79E-19,8.09E-19,3.81E-19,5.90E-19,3.74E-19,1.22E-18,8.72E-19,2.69E-19,2.92E-19,9.60E-19,8.12E-19,4.45E-19,3.39E-19,3.76E-19,1.15E-18,6.85E-19,4.28E-19,9.36E-19,6.93E-19,7.64E-19,8.59E-19,1.20E-18,4.67E-19,7.39E-19,8.40E-19,1.06E-18,1.16E-18,7.23E-19,5.32E-19,6.95E-19,7.18E-19,4.58E-19,1.14E-18,7.43E-19,5.56E-19,1.10E-18,4.75E-19,7.31E-19,8.20E-19,8.80E-19,1.09E-18,7.81E-19,1.13E-18,1.13E-18,8.21E-19,6.26E-19,3.39E-19,4.67E-19,1.21E-18,7.71E-19,6.58E-19,3.20E-19,1.19E-18,8.42E-19,1.01E-18,4.67E-19,7.63E-19,7.17E-19,1.09E-18,2.56E-19,5.39E-19,4.94E-19,6.01E-19,1.10E-18,3.67E-19,1.01E-18,9.03E-19,8.42E-19 +8.19E-19,1.07E-18,5.97E-19,1.07E-18,7.69E-19,7.72E-19,2.82E-19,7.31E-19,3.73E-19,6.42E-19,7.51E-19,4.23E-19,2.32E-19,2.70E-19,4.53E-19,1.16E-18,9.57E-19,6.79E-19,5.03E-19,4.32E-19,8.47E-19,1.08E-18,6.62E-19,1.12E-18,9.94E-19,3.76E-19,3.31E-19,2.98E-19,5.26E-19,8.40E-19,2.30E-19,4.01E-19,9.83E-19,8.12E-19,3.84E-19,5.94E-19,3.80E-19,1.23E-18,8.76E-19,2.72E-19,2.96E-19,9.64E-19,8.16E-19,4.50E-19,3.44E-19,3.80E-19,1.16E-18,6.90E-19,4.34E-19,9.40E-19,6.97E-19,7.70E-19,8.64E-19,1.21E-18,4.71E-19,7.43E-19,8.44E-19,1.07E-18,1.16E-18,7.27E-19,5.35E-19,6.99E-19,7.23E-19,4.61E-19,1.14E-18,7.47E-19,5.59E-19,1.10E-18,4.79E-19,7.35E-19,8.25E-19,8.85E-19,1.09E-18,7.85E-19,1.13E-18,1.14E-18,8.24E-19,6.31E-19,3.43E-19,4.72E-19,1.22E-18,7.76E-19,6.63E-19,3.23E-19,1.19E-18,8.46E-19,1.02E-18,4.72E-19,7.67E-19,7.23E-19,1.10E-18,2.59E-19,5.44E-19,4.99E-19,6.07E-19,1.11E-18,3.73E-19,1.01E-18,9.07E-19,8.45E-19 +8.24E-19,1.07E-18,6.02E-19,1.07E-18,7.73E-19,7.75E-19,2.85E-19,7.35E-19,3.78E-19,6.46E-19,7.55E-19,4.28E-19,2.36E-19,2.75E-19,4.57E-19,1.17E-18,9.62E-19,6.84E-19,5.07E-19,4.35E-19,8.52E-19,1.09E-18,6.66E-19,1.12E-18,9.99E-19,3.81E-19,3.35E-19,3.02E-19,5.31E-19,8.44E-19,2.34E-19,4.07E-19,9.86E-19,8.16E-19,3.88E-19,5.97E-19,3.85E-19,1.23E-18,8.80E-19,2.75E-19,3.00E-19,9.67E-19,8.20E-19,4.56E-19,3.49E-19,3.85E-19,1.16E-18,6.96E-19,4.39E-19,9.45E-19,7.02E-19,7.75E-19,8.68E-19,1.21E-18,4.75E-19,7.46E-19,8.49E-19,1.07E-18,1.17E-18,7.31E-19,5.38E-19,7.02E-19,7.28E-19,4.65E-19,1.15E-18,7.51E-19,5.63E-19,1.11E-18,4.83E-19,7.39E-19,8.30E-19,8.90E-19,1.10E-18,7.90E-19,1.14E-18,1.14E-18,8.28E-19,6.37E-19,3.47E-19,4.78E-19,1.22E-18,7.81E-19,6.68E-19,3.27E-19,1.20E-18,8.50E-19,1.02E-18,4.77E-19,7.71E-19,7.28E-19,1.10E-18,2.63E-19,5.49E-19,5.03E-19,6.12E-19,1.11E-18,3.78E-19,1.02E-18,9.11E-19,8.49E-19 +8.29E-19,1.08E-18,6.07E-19,1.07E-18,7.77E-19,7.79E-19,2.89E-19,7.40E-19,3.82E-19,6.49E-19,7.58E-19,4.33E-19,2.39E-19,2.80E-19,4.61E-19,1.17E-18,9.67E-19,6.89E-19,5.10E-19,4.39E-19,8.57E-19,1.09E-18,6.70E-19,1.13E-18,1.00E-18,3.85E-19,3.40E-19,3.06E-19,5.36E-19,8.48E-19,2.38E-19,4.12E-19,9.90E-19,8.20E-19,3.92E-19,6.01E-19,3.91E-19,1.24E-18,8.84E-19,2.79E-19,3.04E-19,9.71E-19,8.25E-19,4.61E-19,3.54E-19,3.89E-19,1.17E-18,7.01E-19,4.44E-19,9.50E-19,7.06E-19,7.81E-19,8.72E-19,1.22E-18,4.79E-19,7.49E-19,8.53E-19,1.08E-18,1.17E-18,7.36E-19,5.41E-19,7.05E-19,7.33E-19,4.69E-19,1.15E-18,7.54E-19,5.66E-19,1.11E-18,4.86E-19,7.43E-19,8.35E-19,8.96E-19,1.10E-18,7.94E-19,1.14E-18,1.14E-18,8.31E-19,6.42E-19,3.51E-19,4.84E-19,1.23E-18,7.86E-19,6.74E-19,3.30E-19,1.20E-18,8.54E-19,1.02E-18,4.81E-19,7.75E-19,7.33E-19,1.11E-18,2.67E-19,5.54E-19,5.07E-19,6.17E-19,1.12E-18,3.84E-19,1.02E-18,9.15E-19,8.53E-19 +8.34E-19,1.09E-18,6.13E-19,1.08E-18,7.81E-19,7.83E-19,2.93E-19,7.44E-19,3.87E-19,6.53E-19,7.61E-19,4.37E-19,2.43E-19,2.84E-19,4.65E-19,1.18E-18,9.72E-19,6.94E-19,5.14E-19,4.42E-19,8.61E-19,1.10E-18,6.74E-19,1.13E-18,1.01E-18,3.90E-19,3.45E-19,3.10E-19,5.42E-19,8.52E-19,2.42E-19,4.18E-19,9.93E-19,8.23E-19,3.95E-19,6.05E-19,3.96E-19,1.24E-18,8.88E-19,2.82E-19,3.08E-19,9.74E-19,8.29E-19,4.66E-19,3.58E-19,3.93E-19,1.17E-18,7.07E-19,4.50E-19,9.55E-19,7.11E-19,7.86E-19,8.76E-19,1.22E-18,4.82E-19,7.53E-19,8.58E-19,1.09E-18,1.17E-18,7.40E-19,5.44E-19,7.09E-19,7.38E-19,4.72E-19,1.16E-18,7.58E-19,5.70E-19,1.12E-18,4.90E-19,7.47E-19,8.40E-19,9.01E-19,1.10E-18,7.99E-19,1.15E-18,1.15E-18,8.34E-19,6.48E-19,3.55E-19,4.89E-19,1.24E-18,7.91E-19,6.79E-19,3.34E-19,1.21E-18,8.58E-19,1.03E-18,4.86E-19,7.79E-19,7.38E-19,1.11E-18,2.71E-19,5.59E-19,5.11E-19,6.23E-19,1.13E-18,3.89E-19,1.02E-18,9.19E-19,8.57E-19 +8.39E-19,1.09E-18,6.18E-19,1.08E-18,7.85E-19,7.86E-19,2.96E-19,7.48E-19,3.92E-19,6.57E-19,7.65E-19,4.42E-19,2.47E-19,2.89E-19,4.69E-19,1.18E-18,9.76E-19,6.99E-19,5.18E-19,4.45E-19,8.66E-19,1.10E-18,6.78E-19,1.14E-18,1.01E-18,3.95E-19,3.50E-19,3.14E-19,5.47E-19,8.56E-19,2.46E-19,4.23E-19,9.97E-19,8.27E-19,3.99E-19,6.08E-19,4.02E-19,1.24E-18,8.91E-19,2.85E-19,3.12E-19,9.78E-19,8.33E-19,4.71E-19,3.63E-19,3.97E-19,1.18E-18,7.12E-19,4.55E-19,9.59E-19,7.16E-19,7.91E-19,8.80E-19,1.23E-18,4.86E-19,7.56E-19,8.62E-19,1.09E-18,1.18E-18,7.44E-19,5.47E-19,7.12E-19,7.43E-19,4.76E-19,1.16E-18,7.61E-19,5.73E-19,1.12E-18,4.94E-19,7.51E-19,8.45E-19,9.06E-19,1.11E-18,8.03E-19,1.15E-18,1.15E-18,8.38E-19,6.53E-19,3.59E-19,4.95E-19,1.24E-18,7.96E-19,6.84E-19,3.37E-19,1.21E-18,8.61E-19,1.03E-18,4.91E-19,7.83E-19,7.43E-19,1.11E-18,2.75E-19,5.64E-19,5.16E-19,6.28E-19,1.13E-18,3.94E-19,1.03E-18,9.23E-19,8.60E-19 +8.44E-19,1.10E-18,6.23E-19,1.09E-18,7.89E-19,7.90E-19,3.00E-19,7.52E-19,3.97E-19,6.60E-19,7.68E-19,4.47E-19,2.50E-19,2.94E-19,4.73E-19,1.19E-18,9.81E-19,7.04E-19,5.22E-19,4.49E-19,8.71E-19,1.11E-18,6.82E-19,1.14E-18,1.02E-18,3.99E-19,3.55E-19,3.18E-19,5.52E-19,8.60E-19,2.50E-19,4.28E-19,1.00E-18,8.30E-19,4.02E-19,6.12E-19,4.07E-19,1.25E-18,8.95E-19,2.88E-19,3.15E-19,9.82E-19,8.37E-19,4.77E-19,3.68E-19,4.02E-19,1.18E-18,7.17E-19,4.60E-19,9.64E-19,7.20E-19,7.97E-19,8.85E-19,1.23E-18,4.90E-19,7.59E-19,8.67E-19,1.10E-18,1.18E-18,7.49E-19,5.50E-19,7.15E-19,7.48E-19,4.79E-19,1.17E-18,7.65E-19,5.77E-19,1.12E-18,4.98E-19,7.55E-19,8.50E-19,9.11E-19,1.11E-18,8.07E-19,1.16E-18,1.15E-18,8.41E-19,6.58E-19,3.63E-19,5.00E-19,1.25E-18,8.01E-19,6.90E-19,3.41E-19,1.22E-18,8.65E-19,1.04E-18,4.96E-19,7.87E-19,7.49E-19,1.12E-18,2.79E-19,5.69E-19,5.20E-19,6.33E-19,1.14E-18,4.00E-19,1.03E-18,9.28E-19,8.64E-19 +8.49E-19,1.10E-18,6.29E-19,1.09E-18,7.93E-19,7.93E-19,3.04E-19,7.56E-19,4.01E-19,6.64E-19,7.72E-19,4.51E-19,2.54E-19,2.99E-19,4.77E-19,1.19E-18,9.86E-19,7.09E-19,5.26E-19,4.52E-19,8.75E-19,1.11E-18,6.86E-19,1.15E-18,1.02E-18,4.04E-19,3.59E-19,3.22E-19,5.57E-19,8.64E-19,2.54E-19,4.34E-19,1.00E-18,8.34E-19,4.06E-19,6.16E-19,4.13E-19,1.25E-18,8.99E-19,2.92E-19,3.19E-19,9.85E-19,8.42E-19,4.82E-19,3.72E-19,4.06E-19,1.19E-18,7.23E-19,4.66E-19,9.69E-19,7.25E-19,8.02E-19,8.89E-19,1.24E-18,4.94E-19,7.63E-19,8.71E-19,1.10E-18,1.19E-18,7.53E-19,5.53E-19,7.19E-19,7.53E-19,4.83E-19,1.17E-18,7.68E-19,5.80E-19,1.13E-18,5.02E-19,7.59E-19,8.55E-19,9.17E-19,1.12E-18,8.12E-19,1.16E-18,1.16E-18,8.44E-19,6.64E-19,3.67E-19,5.06E-19,1.25E-18,8.06E-19,6.95E-19,3.44E-19,1.22E-18,8.69E-19,1.04E-18,5.01E-19,7.91E-19,7.54E-19,1.12E-18,2.82E-19,5.74E-19,5.24E-19,6.39E-19,1.15E-18,4.05E-19,1.04E-18,9.32E-19,8.68E-19 +8.53E-19,1.11E-18,6.34E-19,1.10E-18,7.97E-19,7.97E-19,3.07E-19,7.61E-19,4.06E-19,6.68E-19,7.75E-19,4.56E-19,2.58E-19,3.04E-19,4.81E-19,1.20E-18,9.91E-19,7.14E-19,5.30E-19,4.56E-19,8.80E-19,1.12E-18,6.90E-19,1.15E-18,1.03E-18,4.09E-19,3.64E-19,3.26E-19,5.62E-19,8.68E-19,2.58E-19,4.39E-19,1.01E-18,8.37E-19,4.10E-19,6.20E-19,4.18E-19,1.26E-18,9.03E-19,2.95E-19,3.23E-19,9.89E-19,8.46E-19,4.87E-19,3.77E-19,4.10E-19,1.19E-18,7.28E-19,4.71E-19,9.74E-19,7.29E-19,8.08E-19,8.93E-19,1.25E-18,4.98E-19,7.66E-19,8.76E-19,1.11E-18,1.19E-18,7.57E-19,5.57E-19,7.22E-19,7.58E-19,4.86E-19,1.18E-18,7.72E-19,5.84E-19,1.13E-18,5.06E-19,7.63E-19,8.60E-19,9.22E-19,1.12E-18,8.16E-19,1.17E-18,1.16E-18,8.48E-19,6.69E-19,3.71E-19,5.12E-19,1.26E-18,8.11E-19,7.01E-19,3.48E-19,1.23E-18,8.73E-19,1.04E-18,5.06E-19,7.95E-19,7.59E-19,1.13E-18,2.86E-19,5.79E-19,5.29E-19,6.44E-19,1.15E-18,4.11E-19,1.04E-18,9.36E-19,8.71E-19 +8.58E-19,1.11E-18,6.39E-19,1.10E-18,8.01E-19,8.01E-19,3.11E-19,7.65E-19,4.11E-19,6.71E-19,7.78E-19,4.61E-19,2.61E-19,3.08E-19,4.85E-19,1.20E-18,9.96E-19,7.19E-19,5.34E-19,4.59E-19,8.85E-19,1.12E-18,6.94E-19,1.16E-18,1.03E-18,4.13E-19,3.69E-19,3.30E-19,5.67E-19,8.72E-19,2.62E-19,4.44E-19,1.01E-18,8.41E-19,4.13E-19,6.23E-19,4.24E-19,1.26E-18,9.07E-19,2.98E-19,3.27E-19,9.92E-19,8.50E-19,4.92E-19,3.82E-19,4.15E-19,1.20E-18,7.33E-19,4.77E-19,9.78E-19,7.34E-19,8.13E-19,8.97E-19,1.25E-18,5.02E-19,7.69E-19,8.80E-19,1.12E-18,1.19E-18,7.61E-19,5.60E-19,7.25E-19,7.63E-19,4.90E-19,1.18E-18,7.76E-19,5.87E-19,1.13E-18,5.10E-19,7.67E-19,8.65E-19,9.27E-19,1.12E-18,8.20E-19,1.17E-18,1.16E-18,8.51E-19,6.75E-19,3.75E-19,5.17E-19,1.27E-18,8.15E-19,7.06E-19,3.51E-19,1.23E-18,8.77E-19,1.05E-18,5.11E-19,7.99E-19,7.64E-19,1.13E-18,2.90E-19,5.84E-19,5.33E-19,6.49E-19,1.16E-18,4.16E-19,1.05E-18,9.40E-19,8.75E-19 +8.63E-19,1.12E-18,6.45E-19,1.11E-18,8.05E-19,8.04E-19,3.15E-19,7.69E-19,4.16E-19,6.75E-19,7.82E-19,4.66E-19,2.65E-19,3.13E-19,4.89E-19,1.21E-18,1.00E-18,7.24E-19,5.38E-19,4.63E-19,8.89E-19,1.13E-18,6.97E-19,1.16E-18,1.04E-18,4.18E-19,3.74E-19,3.34E-19,5.72E-19,8.76E-19,2.65E-19,4.50E-19,1.01E-18,8.45E-19,4.17E-19,6.27E-19,4.29E-19,1.27E-18,9.11E-19,3.02E-19,3.31E-19,9.96E-19,8.55E-19,4.98E-19,3.87E-19,4.19E-19,1.20E-18,7.39E-19,4.82E-19,9.83E-19,7.38E-19,8.19E-19,9.01E-19,1.26E-18,5.05E-19,7.73E-19,8.85E-19,1.12E-18,1.20E-18,7.66E-19,5.63E-19,7.29E-19,7.68E-19,4.94E-19,1.19E-18,7.79E-19,5.91E-19,1.14E-18,5.14E-19,7.71E-19,8.70E-19,9.32E-19,1.13E-18,8.25E-19,1.18E-18,1.17E-18,8.54E-19,6.80E-19,3.79E-19,5.23E-19,1.27E-18,8.20E-19,7.11E-19,3.55E-19,1.24E-18,8.81E-19,1.05E-18,5.16E-19,8.03E-19,7.69E-19,1.14E-18,2.94E-19,5.89E-19,5.37E-19,6.54E-19,1.16E-18,4.22E-19,1.05E-18,9.44E-19,8.79E-19 +8.68E-19,1.12E-18,6.50E-19,1.11E-18,8.09E-19,8.08E-19,3.18E-19,7.73E-19,4.20E-19,6.79E-19,7.85E-19,4.70E-19,2.69E-19,3.18E-19,4.93E-19,1.21E-18,1.01E-18,7.29E-19,5.42E-19,4.66E-19,8.94E-19,1.13E-18,7.01E-19,1.17E-18,1.04E-18,4.23E-19,3.79E-19,3.38E-19,5.77E-19,8.80E-19,2.69E-19,4.55E-19,1.02E-18,8.48E-19,4.20E-19,6.31E-19,4.35E-19,1.27E-18,9.15E-19,3.05E-19,3.35E-19,9.99E-19,8.59E-19,5.03E-19,3.91E-19,4.23E-19,1.21E-18,7.44E-19,4.87E-19,9.88E-19,7.43E-19,8.24E-19,9.06E-19,1.26E-18,5.09E-19,7.76E-19,8.90E-19,1.13E-18,1.20E-18,7.70E-19,5.66E-19,7.32E-19,7.74E-19,4.97E-19,1.19E-18,7.83E-19,5.94E-19,1.14E-18,5.18E-19,7.75E-19,8.75E-19,9.38E-19,1.13E-18,8.29E-19,1.18E-18,1.17E-18,8.58E-19,6.86E-19,3.83E-19,5.28E-19,1.28E-18,8.25E-19,7.17E-19,3.58E-19,1.24E-18,8.85E-19,1.06E-18,5.21E-19,8.07E-19,7.74E-19,1.14E-18,2.98E-19,5.93E-19,5.41E-19,6.60E-19,1.17E-18,4.27E-19,1.06E-18,9.48E-19,8.83E-19 +8.73E-19,1.13E-18,6.56E-19,1.11E-18,8.13E-19,8.12E-19,3.22E-19,7.77E-19,4.25E-19,6.82E-19,7.89E-19,4.75E-19,2.72E-19,3.23E-19,4.97E-19,1.22E-18,1.01E-18,7.34E-19,5.46E-19,4.70E-19,8.99E-19,1.14E-18,7.05E-19,1.17E-18,1.05E-18,4.27E-19,3.84E-19,3.42E-19,5.82E-19,8.84E-19,2.73E-19,4.61E-19,1.02E-18,8.52E-19,4.24E-19,6.35E-19,4.41E-19,1.28E-18,9.18E-19,3.08E-19,3.39E-19,1.00E-18,8.63E-19,5.08E-19,3.96E-19,4.28E-19,1.21E-18,7.49E-19,4.93E-19,9.93E-19,7.48E-19,8.29E-19,9.10E-19,1.27E-18,5.13E-19,7.80E-19,8.94E-19,1.13E-18,1.21E-18,7.74E-19,5.69E-19,7.35E-19,7.79E-19,5.01E-19,1.19E-18,7.86E-19,5.98E-19,1.14E-18,5.22E-19,7.79E-19,8.80E-19,9.43E-19,1.13E-18,8.33E-19,1.19E-18,1.17E-18,8.61E-19,6.91E-19,3.87E-19,5.34E-19,1.28E-18,8.30E-19,7.22E-19,3.62E-19,1.25E-18,8.88E-19,1.06E-18,5.26E-19,8.11E-19,7.80E-19,1.15E-18,3.02E-19,5.98E-19,5.46E-19,6.65E-19,1.18E-18,4.32E-19,1.06E-18,9.52E-19,8.86E-19 +8.78E-19,1.13E-18,6.61E-19,1.12E-18,8.17E-19,8.15E-19,3.26E-19,7.82E-19,4.30E-19,6.86E-19,7.92E-19,4.80E-19,2.76E-19,3.28E-19,5.00E-19,1.22E-18,1.02E-18,7.39E-19,5.50E-19,4.73E-19,9.03E-19,1.14E-18,7.09E-19,1.18E-18,1.05E-18,4.32E-19,3.88E-19,3.46E-19,5.87E-19,8.88E-19,2.77E-19,4.66E-19,1.02E-18,8.55E-19,4.28E-19,6.38E-19,4.46E-19,1.28E-18,9.22E-19,3.12E-19,3.42E-19,1.01E-18,8.67E-19,5.13E-19,4.01E-19,4.32E-19,1.22E-18,7.55E-19,4.98E-19,9.97E-19,7.52E-19,8.35E-19,9.14E-19,1.27E-18,5.17E-19,7.83E-19,8.99E-19,1.14E-18,1.21E-18,7.79E-19,5.72E-19,7.39E-19,7.84E-19,5.04E-19,1.20E-18,7.90E-19,6.01E-19,1.15E-18,5.25E-19,7.83E-19,8.84E-19,9.48E-19,1.14E-18,8.38E-19,1.19E-18,1.18E-18,8.64E-19,6.97E-19,3.91E-19,5.39E-19,1.29E-18,8.35E-19,7.27E-19,3.65E-19,1.25E-18,8.92E-19,1.06E-18,5.31E-19,8.15E-19,7.85E-19,1.15E-18,3.06E-19,6.03E-19,5.50E-19,6.70E-19,1.18E-18,4.38E-19,1.07E-18,9.56E-19,8.90E-19 +8.83E-19,1.14E-18,6.66E-19,1.12E-18,8.21E-19,8.19E-19,3.29E-19,7.86E-19,4.35E-19,6.90E-19,7.96E-19,4.85E-19,2.80E-19,3.32E-19,5.04E-19,1.23E-18,1.02E-18,7.44E-19,5.54E-19,4.77E-19,9.08E-19,1.15E-18,7.13E-19,1.18E-18,1.06E-18,4.37E-19,3.93E-19,3.50E-19,5.92E-19,8.92E-19,2.81E-19,4.71E-19,1.03E-18,8.59E-19,4.31E-19,6.42E-19,4.52E-19,1.29E-18,9.26E-19,3.15E-19,3.46E-19,1.01E-18,8.72E-19,5.19E-19,4.05E-19,4.36E-19,1.22E-18,7.60E-19,5.04E-19,1.00E-18,7.57E-19,8.40E-19,9.18E-19,1.28E-18,5.21E-19,7.86E-19,9.03E-19,1.15E-18,1.21E-18,7.83E-19,5.75E-19,7.42E-19,7.89E-19,5.08E-19,1.20E-18,7.94E-19,6.05E-19,1.15E-18,5.29E-19,7.87E-19,8.89E-19,9.53E-19,1.14E-18,8.42E-19,1.20E-18,1.18E-18,8.68E-19,7.02E-19,3.95E-19,5.45E-19,1.30E-18,8.40E-19,7.33E-19,3.69E-19,1.26E-18,8.96E-19,1.07E-18,5.36E-19,8.20E-19,7.90E-19,1.16E-18,3.09E-19,6.08E-19,5.54E-19,6.76E-19,1.19E-18,4.43E-19,1.07E-18,9.61E-19,8.94E-19 +8.88E-19,1.14E-18,6.72E-19,1.13E-18,8.25E-19,8.23E-19,3.33E-19,7.90E-19,4.39E-19,6.93E-19,7.99E-19,4.89E-19,2.83E-19,3.37E-19,5.08E-19,1.23E-18,1.03E-18,7.49E-19,5.58E-19,4.80E-19,9.13E-19,1.15E-18,7.17E-19,1.19E-18,1.06E-18,4.41E-19,3.98E-19,3.54E-19,5.98E-19,8.96E-19,2.85E-19,4.77E-19,1.03E-18,8.62E-19,4.35E-19,6.46E-19,4.57E-19,1.29E-18,9.30E-19,3.18E-19,3.50E-19,1.01E-18,8.76E-19,5.24E-19,4.10E-19,4.41E-19,1.23E-18,7.66E-19,5.09E-19,1.01E-18,7.61E-19,8.46E-19,9.22E-19,1.29E-18,5.24E-19,7.90E-19,9.08E-19,1.15E-18,1.22E-18,7.87E-19,5.78E-19,7.45E-19,7.94E-19,5.12E-19,1.21E-18,7.97E-19,6.08E-19,1.15E-18,5.33E-19,7.91E-19,8.94E-19,9.58E-19,1.15E-18,8.46E-19,1.20E-18,1.18E-18,8.71E-19,7.08E-19,3.99E-19,5.51E-19,1.30E-18,8.45E-19,7.38E-19,3.72E-19,1.26E-18,9.00E-19,1.07E-18,5.41E-19,8.24E-19,7.95E-19,1.16E-18,3.13E-19,6.13E-19,5.58E-19,6.81E-19,1.20E-18,4.49E-19,1.08E-18,9.65E-19,8.98E-19 +8.93E-19,1.15E-18,6.77E-19,1.13E-18,8.29E-19,8.26E-19,3.37E-19,7.94E-19,4.44E-19,6.97E-19,8.02E-19,4.94E-19,2.87E-19,3.42E-19,5.12E-19,1.23E-18,1.03E-18,7.54E-19,5.62E-19,4.84E-19,9.17E-19,1.16E-18,7.21E-19,1.19E-18,1.06E-18,4.46E-19,4.03E-19,3.58E-19,6.03E-19,9.00E-19,2.89E-19,4.82E-19,1.03E-18,8.66E-19,4.38E-19,6.49E-19,4.63E-19,1.30E-18,9.34E-19,3.21E-19,3.54E-19,1.02E-18,8.80E-19,5.29E-19,4.15E-19,4.45E-19,1.23E-18,7.71E-19,5.14E-19,1.01E-18,7.66E-19,8.51E-19,9.27E-19,1.29E-18,5.28E-19,7.93E-19,9.12E-19,1.16E-18,1.22E-18,7.92E-19,5.81E-19,7.49E-19,7.99E-19,5.15E-19,1.21E-18,8.01E-19,6.12E-19,1.16E-18,5.37E-19,7.95E-19,8.99E-19,9.64E-19,1.15E-18,8.51E-19,1.21E-18,1.19E-18,8.74E-19,7.13E-19,4.03E-19,5.56E-19,1.31E-18,8.50E-19,7.43E-19,3.75E-19,1.27E-18,9.04E-19,1.08E-18,5.46E-19,8.28E-19,8.00E-19,1.17E-18,3.17E-19,6.18E-19,5.63E-19,6.86E-19,1.20E-18,4.54E-19,1.08E-18,9.69E-19,9.01E-19 +8.97E-19,1.15E-18,6.82E-19,1.14E-18,8.33E-19,8.30E-19,3.40E-19,7.99E-19,4.49E-19,7.01E-19,8.06E-19,4.99E-19,2.90E-19,3.47E-19,5.16E-19,1.24E-18,1.04E-18,7.59E-19,5.65E-19,4.87E-19,9.22E-19,1.16E-18,7.25E-19,1.20E-18,1.07E-18,4.51E-19,4.08E-19,3.62E-19,6.08E-19,9.04E-19,2.93E-19,4.87E-19,1.04E-18,8.70E-19,4.42E-19,6.53E-19,4.68E-19,1.30E-18,9.38E-19,3.25E-19,3.58E-19,1.02E-18,8.85E-19,5.34E-19,4.20E-19,4.49E-19,1.24E-18,7.76E-19,5.20E-19,1.02E-18,7.70E-19,8.56E-19,9.31E-19,1.30E-18,5.32E-19,7.96E-19,9.17E-19,1.16E-18,1.23E-18,7.96E-19,5.85E-19,7.52E-19,8.04E-19,5.19E-19,1.22E-18,8.04E-19,6.15E-19,1.16E-18,5.41E-19,7.99E-19,9.04E-19,9.69E-19,1.15E-18,8.55E-19,1.21E-18,1.19E-18,8.78E-19,7.19E-19,4.07E-19,5.62E-19,1.32E-18,8.55E-19,7.49E-19,3.79E-19,1.27E-18,9.08E-19,1.08E-18,5.51E-19,8.32E-19,8.06E-19,1.17E-18,3.21E-19,6.23E-19,5.67E-19,6.92E-19,1.21E-18,4.60E-19,1.09E-18,9.73E-19,9.05E-19 +9.02E-19,1.16E-18,6.88E-19,1.14E-18,8.37E-19,8.34E-19,3.44E-19,8.03E-19,4.54E-19,7.04E-19,8.09E-19,5.03E-19,2.94E-19,3.51E-19,5.20E-19,1.24E-18,1.04E-18,7.64E-19,5.69E-19,4.91E-19,9.27E-19,1.17E-18,7.29E-19,1.20E-18,1.07E-18,4.55E-19,4.13E-19,3.66E-19,6.13E-19,9.08E-19,2.97E-19,4.93E-19,1.04E-18,8.73E-19,4.46E-19,6.57E-19,4.74E-19,1.31E-18,9.41E-19,3.28E-19,3.62E-19,1.02E-18,8.89E-19,5.40E-19,4.24E-19,4.54E-19,1.24E-18,7.82E-19,5.25E-19,1.02E-18,7.75E-19,8.62E-19,9.35E-19,1.30E-18,5.36E-19,8.00E-19,9.21E-19,1.17E-18,1.23E-18,8.00E-19,5.88E-19,7.55E-19,8.09E-19,5.22E-19,1.22E-18,8.08E-19,6.19E-19,1.16E-18,5.45E-19,8.03E-19,9.09E-19,9.74E-19,1.16E-18,8.59E-19,1.22E-18,1.19E-18,8.81E-19,7.24E-19,4.11E-19,5.67E-19,1.32E-18,8.60E-19,7.54E-19,3.82E-19,1.28E-18,9.12E-19,1.08E-18,5.56E-19,8.36E-19,8.11E-19,1.18E-18,3.25E-19,6.28E-19,5.71E-19,6.97E-19,1.21E-18,4.65E-19,1.09E-18,9.77E-19,9.09E-19 +9.07E-19,1.17E-18,6.93E-19,1.15E-18,8.41E-19,8.37E-19,3.48E-19,8.07E-19,4.58E-19,7.08E-19,8.13E-19,5.08E-19,2.98E-19,3.56E-19,5.24E-19,1.25E-18,1.05E-18,7.69E-19,5.73E-19,4.94E-19,9.31E-19,1.17E-18,7.32E-19,1.21E-18,1.08E-18,4.60E-19,4.17E-19,3.70E-19,6.18E-19,9.12E-19,3.01E-19,4.98E-19,1.04E-18,8.77E-19,4.49E-19,6.61E-19,4.79E-19,1.31E-18,9.45E-19,3.31E-19,3.65E-19,1.03E-18,8.93E-19,5.45E-19,4.29E-19,4.58E-19,1.25E-18,7.87E-19,5.31E-19,1.03E-18,7.80E-19,8.67E-19,9.39E-19,1.31E-18,5.40E-19,8.03E-19,9.26E-19,1.18E-18,1.23E-18,8.05E-19,5.91E-19,7.59E-19,8.14E-19,5.26E-19,1.23E-18,8.12E-19,6.22E-19,1.17E-18,5.49E-19,8.07E-19,9.14E-19,9.79E-19,1.16E-18,8.64E-19,1.22E-18,1.20E-18,8.85E-19,7.29E-19,4.15E-19,5.73E-19,1.33E-18,8.65E-19,7.59E-19,3.86E-19,1.28E-18,9.15E-19,1.09E-18,5.61E-19,8.40E-19,8.16E-19,1.18E-18,3.29E-19,6.33E-19,5.76E-19,7.02E-19,1.22E-18,4.71E-19,1.10E-18,9.81E-19,9.13E-19 +9.12E-19,1.17E-18,6.98E-19,1.15E-18,8.45E-19,8.41E-19,3.51E-19,8.11E-19,4.63E-19,7.12E-19,8.16E-19,5.13E-19,3.01E-19,3.61E-19,5.28E-19,1.25E-18,1.05E-18,7.74E-19,5.77E-19,4.97E-19,9.36E-19,1.18E-18,7.36E-19,1.21E-18,1.08E-18,4.65E-19,4.22E-19,3.74E-19,6.23E-19,9.15E-19,3.05E-19,5.04E-19,1.05E-18,8.80E-19,4.53E-19,6.64E-19,4.85E-19,1.32E-18,9.49E-19,3.35E-19,3.69E-19,1.03E-18,8.97E-19,5.50E-19,4.34E-19,4.62E-19,1.25E-18,7.92E-19,5.36E-19,1.03E-18,7.84E-19,8.73E-19,9.43E-19,1.31E-18,5.44E-19,8.06E-19,9.30E-19,1.18E-18,1.24E-18,8.09E-19,5.94E-19,7.62E-19,8.19E-19,5.29E-19,1.23E-18,8.15E-19,6.26E-19,1.17E-18,5.53E-19,8.11E-19,9.19E-19,9.85E-19,1.16E-18,8.68E-19,1.23E-18,1.20E-18,8.88E-19,7.35E-19,4.19E-19,5.79E-19,1.33E-18,8.70E-19,7.65E-19,3.89E-19,1.29E-18,9.19E-19,1.09E-18,5.66E-19,8.44E-19,8.21E-19,1.18E-18,3.32E-19,6.38E-19,5.80E-19,7.07E-19,1.23E-18,4.76E-19,1.10E-18,9.85E-19,9.16E-19 +9.17E-19,1.18E-18,7.04E-19,1.16E-18,8.49E-19,8.45E-19,3.55E-19,8.15E-19,4.68E-19,7.15E-19,8.20E-19,5.18E-19,3.05E-19,3.66E-19,5.32E-19,1.26E-18,1.06E-18,7.79E-19,5.81E-19,5.01E-19,9.41E-19,1.18E-18,7.40E-19,1.22E-18,1.09E-18,4.69E-19,4.27E-19,3.78E-19,6.28E-19,9.19E-19,3.09E-19,5.09E-19,1.05E-18,8.84E-19,4.56E-19,6.68E-19,4.90E-19,1.32E-18,9.53E-19,3.38E-19,3.73E-19,1.03E-18,9.02E-19,5.55E-19,4.38E-19,4.67E-19,1.26E-18,7.98E-19,5.41E-19,1.04E-18,7.89E-19,8.78E-19,9.48E-19,1.32E-18,5.47E-19,8.10E-19,9.35E-19,1.19E-18,1.24E-18,8.13E-19,5.97E-19,7.65E-19,8.24E-19,5.33E-19,1.24E-18,8.19E-19,6.29E-19,1.17E-18,5.57E-19,8.14E-19,9.24E-19,9.90E-19,1.17E-18,8.73E-19,1.23E-18,1.20E-18,8.91E-19,7.40E-19,4.23E-19,5.84E-19,1.34E-18,8.75E-19,7.70E-19,3.93E-19,1.29E-18,9.23E-19,1.10E-18,5.71E-19,8.48E-19,8.26E-19,1.19E-18,3.36E-19,6.43E-19,5.84E-19,7.13E-19,1.23E-18,4.81E-19,1.11E-18,9.89E-19,9.20E-19 +9.22E-19,1.18E-18,7.09E-19,1.16E-18,8.53E-19,8.48E-19,3.59E-19,8.20E-19,4.73E-19,7.19E-19,8.23E-19,5.22E-19,3.09E-19,3.71E-19,5.36E-19,1.26E-18,1.06E-18,7.84E-19,5.85E-19,5.04E-19,9.45E-19,1.19E-18,7.44E-19,1.22E-18,1.09E-18,4.74E-19,4.32E-19,3.82E-19,6.33E-19,9.23E-19,3.13E-19,5.14E-19,1.06E-18,8.87E-19,4.60E-19,6.72E-19,4.96E-19,1.33E-18,9.57E-19,3.41E-19,3.77E-19,1.04E-18,9.06E-19,5.61E-19,4.43E-19,4.71E-19,1.26E-18,8.03E-19,5.47E-19,1.04E-18,7.93E-19,8.84E-19,9.52E-19,1.33E-18,5.51E-19,8.13E-19,9.40E-19,1.19E-18,1.25E-18,8.18E-19,6.00E-19,7.69E-19,8.30E-19,5.37E-19,1.24E-18,8.22E-19,6.33E-19,1.18E-18,5.61E-19,8.18E-19,9.29E-19,9.95E-19,1.17E-18,8.77E-19,1.24E-18,1.21E-18,8.95E-19,7.46E-19,4.26E-19,5.90E-19,1.35E-18,8.80E-19,7.75E-19,3.96E-19,1.30E-18,9.27E-19,1.10E-18,5.76E-19,8.52E-19,8.32E-19,1.19E-18,3.40E-19,6.48E-19,5.88E-19,7.18E-19,1.24E-18,4.87E-19,1.11E-18,9.94E-19,9.24E-19 +9.27E-19,1.19E-18,7.15E-19,1.16E-18,8.57E-19,8.52E-19,3.62E-19,8.24E-19,4.77E-19,7.23E-19,8.26E-19,5.27E-19,3.12E-19,3.75E-19,5.40E-19,1.27E-18,1.07E-18,7.89E-19,5.89E-19,5.08E-19,9.50E-19,1.19E-18,7.48E-19,1.23E-18,1.10E-18,4.79E-19,4.37E-19,3.86E-19,6.38E-19,9.27E-19,3.17E-19,5.20E-19,1.06E-18,8.91E-19,4.64E-19,6.76E-19,5.01E-19,1.33E-18,9.61E-19,3.44E-19,3.81E-19,1.04E-18,9.10E-19,5.66E-19,4.48E-19,4.75E-19,1.27E-18,8.09E-19,5.52E-19,1.04E-18,7.98E-19,8.89E-19,9.56E-19,1.33E-18,5.55E-19,8.16E-19,9.44E-19,1.20E-18,1.25E-18,8.22E-19,6.03E-19,7.72E-19,8.35E-19,5.40E-19,1.25E-18,8.26E-19,6.36E-19,1.18E-18,5.64E-19,8.22E-19,9.34E-19,1.00E-18,1.18E-18,8.81E-19,1.24E-18,1.21E-18,8.98E-19,7.51E-19,4.30E-19,5.95E-19,1.35E-18,8.85E-19,7.81E-19,4.00E-19,1.30E-18,9.31E-19,1.10E-18,5.81E-19,8.56E-19,8.37E-19,1.20E-18,3.44E-19,6.53E-19,5.93E-19,7.23E-19,1.25E-18,4.92E-19,1.12E-18,9.98E-19,9.27E-19 +9.32E-19,1.19E-18,7.20E-19,1.17E-18,8.61E-19,8.55E-19,3.66E-19,8.28E-19,4.82E-19,7.26E-19,8.30E-19,5.32E-19,3.16E-19,3.80E-19,5.44E-19,1.27E-18,1.07E-18,7.93E-19,5.93E-19,5.11E-19,9.55E-19,1.20E-18,7.52E-19,1.23E-18,1.10E-18,4.83E-19,4.42E-19,3.90E-19,6.43E-19,9.31E-19,3.21E-19,5.25E-19,1.06E-18,8.95E-19,4.67E-19,6.79E-19,5.07E-19,1.34E-18,9.65E-19,3.48E-19,3.85E-19,1.05E-18,9.15E-19,5.71E-19,4.53E-19,4.80E-19,1.27E-18,8.14E-19,5.57E-19,1.05E-18,8.02E-19,8.94E-19,9.60E-19,1.34E-18,5.59E-19,8.20E-19,9.49E-19,1.21E-18,1.25E-18,8.26E-19,6.06E-19,7.75E-19,8.40E-19,5.44E-19,1.25E-18,8.30E-19,6.40E-19,1.18E-18,5.68E-19,8.26E-19,9.39E-19,1.01E-18,1.18E-18,8.86E-19,1.25E-18,1.21E-18,9.01E-19,7.57E-19,4.34E-19,6.01E-19,1.36E-18,8.90E-19,7.86E-19,4.03E-19,1.31E-18,9.35E-19,1.11E-18,5.86E-19,8.60E-19,8.42E-19,1.20E-18,3.48E-19,6.58E-19,5.97E-19,7.29E-19,1.25E-18,4.98E-19,1.12E-18,1.00E-18,9.31E-19 +9.36E-19,1.20E-18,7.25E-19,1.17E-18,8.66E-19,8.59E-19,3.70E-19,8.32E-19,4.87E-19,7.30E-19,8.33E-19,5.37E-19,3.20E-19,3.85E-19,5.48E-19,1.28E-18,1.08E-18,7.98E-19,5.97E-19,5.15E-19,9.59E-19,1.20E-18,7.56E-19,1.24E-18,1.11E-18,4.88E-19,4.46E-19,3.94E-19,6.48E-19,9.35E-19,3.25E-19,5.30E-19,1.07E-18,8.98E-19,4.71E-19,6.83E-19,5.12E-19,1.34E-18,9.68E-19,3.51E-19,3.89E-19,1.05E-18,9.19E-19,5.76E-19,4.57E-19,4.84E-19,1.28E-18,8.19E-19,5.63E-19,1.05E-18,8.07E-19,9.00E-19,9.64E-19,1.34E-18,5.63E-19,8.23E-19,9.53E-19,1.21E-18,1.26E-18,8.31E-19,6.09E-19,7.79E-19,8.45E-19,5.47E-19,1.26E-18,8.33E-19,6.43E-19,1.19E-18,5.72E-19,8.30E-19,9.43E-19,1.01E-18,1.18E-18,8.90E-19,1.25E-18,1.22E-18,9.05E-19,7.62E-19,4.38E-19,6.06E-19,1.37E-18,8.95E-19,7.91E-19,4.07E-19,1.31E-18,9.38E-19,1.11E-18,5.91E-19,8.64E-19,8.47E-19,1.21E-18,3.52E-19,6.63E-19,6.01E-19,7.34E-19,1.26E-18,5.03E-19,1.13E-18,1.01E-18,9.35E-19 +9.41E-19,1.20E-18,7.31E-19,1.18E-18,8.70E-19,8.63E-19,3.73E-19,8.36E-19,4.92E-19,7.34E-19,8.37E-19,5.41E-19,3.23E-19,3.90E-19,5.52E-19,1.28E-18,1.08E-18,8.03E-19,6.01E-19,5.18E-19,9.64E-19,1.21E-18,7.60E-19,1.24E-18,1.11E-18,4.93E-19,4.51E-19,3.98E-19,6.54E-19,9.39E-19,3.29E-19,5.36E-19,1.07E-18,9.02E-19,4.74E-19,6.87E-19,5.18E-19,1.35E-18,9.72E-19,3.54E-19,3.92E-19,1.05E-18,9.23E-19,5.82E-19,4.62E-19,4.88E-19,1.28E-18,8.25E-19,5.68E-19,1.06E-18,8.12E-19,9.05E-19,9.69E-19,1.35E-18,5.66E-19,8.27E-19,9.58E-19,1.22E-18,1.26E-18,8.35E-19,6.13E-19,7.82E-19,8.50E-19,5.51E-19,1.26E-18,8.37E-19,6.47E-19,1.19E-18,5.76E-19,8.34E-19,9.48E-19,1.02E-18,1.19E-18,8.94E-19,1.26E-18,1.22E-18,9.08E-19,7.68E-19,4.42E-19,6.12E-19,1.37E-18,9.00E-19,7.97E-19,4.10E-19,1.32E-18,9.42E-19,1.12E-18,5.96E-19,8.68E-19,8.52E-19,1.21E-18,3.56E-19,6.68E-19,6.05E-19,7.39E-19,1.26E-18,5.09E-19,1.13E-18,1.01E-18,9.39E-19 +9.46E-19,1.21E-18,7.36E-19,1.18E-18,8.74E-19,8.66E-19,3.77E-19,8.41E-19,4.96E-19,7.37E-19,8.40E-19,5.46E-19,3.27E-19,3.95E-19,5.56E-19,1.29E-18,1.09E-18,8.08E-19,6.05E-19,5.22E-19,9.69E-19,1.21E-18,7.64E-19,1.25E-18,1.12E-18,4.97E-19,4.56E-19,4.02E-19,6.59E-19,9.43E-19,3.33E-19,5.41E-19,1.07E-18,9.05E-19,4.78E-19,6.91E-19,5.23E-19,1.35E-18,9.76E-19,3.58E-19,3.96E-19,1.06E-18,9.27E-19,5.87E-19,4.67E-19,4.93E-19,1.29E-18,8.30E-19,5.74E-19,1.06E-18,8.16E-19,9.11E-19,9.73E-19,1.35E-18,5.70E-19,8.30E-19,9.62E-19,1.22E-18,1.27E-18,8.39E-19,6.16E-19,7.85E-19,8.55E-19,5.55E-19,1.27E-18,8.40E-19,6.50E-19,1.19E-18,5.80E-19,8.38E-19,9.53E-19,1.02E-18,1.19E-18,8.99E-19,1.26E-18,1.22E-18,9.11E-19,7.73E-19,4.46E-19,6.18E-19,1.38E-18,9.04E-19,8.02E-19,4.14E-19,1.32E-18,9.46E-19,1.12E-18,6.01E-19,8.72E-19,8.57E-19,1.22E-18,3.59E-19,6.73E-19,6.10E-19,7.45E-19,1.27E-18,5.14E-19,1.14E-18,1.01E-18,9.42E-19 +9.51E-19,1.21E-18,7.41E-19,1.19E-18,8.78E-19,8.70E-19,3.81E-19,8.45E-19,5.01E-19,7.41E-19,8.44E-19,5.51E-19,3.31E-19,3.99E-19,5.60E-19,1.29E-18,1.09E-18,8.13E-19,6.09E-19,5.25E-19,9.73E-19,1.22E-18,7.67E-19,1.25E-18,1.12E-18,5.02E-19,4.61E-19,4.06E-19,6.64E-19,9.47E-19,3.37E-19,5.47E-19,1.08E-18,9.09E-19,4.82E-19,6.94E-19,5.29E-19,1.36E-18,9.80E-19,3.61E-19,4.00E-19,1.06E-18,9.32E-19,5.92E-19,4.71E-19,4.97E-19,1.29E-18,8.35E-19,5.79E-19,1.07E-18,8.21E-19,9.16E-19,9.77E-19,1.36E-18,5.74E-19,8.33E-19,9.67E-19,1.23E-18,1.27E-18,8.44E-19,6.19E-19,7.89E-19,8.60E-19,5.58E-19,1.27E-18,8.44E-19,6.54E-19,1.20E-18,5.84E-19,8.42E-19,9.58E-19,1.03E-18,1.19E-18,9.03E-19,1.27E-18,1.23E-18,9.15E-19,7.79E-19,4.50E-19,6.23E-19,1.38E-18,9.09E-19,8.08E-19,4.17E-19,1.33E-18,9.50E-19,1.12E-18,6.06E-19,8.76E-19,8.63E-19,1.22E-18,3.63E-19,6.78E-19,6.14E-19,7.50E-19,1.28E-18,5.20E-19,1.14E-18,1.02E-18,9.46E-19 +9.56E-19,1.22E-18,7.47E-19,1.19E-18,8.82E-19,8.74E-19,3.84E-19,8.49E-19,5.06E-19,7.45E-19,8.47E-19,5.55E-19,3.34E-19,4.04E-19,5.64E-19,1.30E-18,1.10E-18,8.18E-19,6.13E-19,5.29E-19,9.78E-19,1.22E-18,7.71E-19,1.25E-18,1.13E-18,5.07E-19,4.66E-19,4.10E-19,6.69E-19,9.51E-19,3.41E-19,5.52E-19,1.08E-18,9.12E-19,4.85E-19,6.98E-19,5.34E-19,1.36E-18,9.84E-19,3.64E-19,4.04E-19,1.06E-18,9.36E-19,5.98E-19,4.76E-19,5.01E-19,1.30E-18,8.41E-19,5.84E-19,1.07E-18,8.25E-19,9.22E-19,9.81E-19,1.37E-18,5.78E-19,8.37E-19,9.71E-19,1.24E-18,1.27E-18,8.48E-19,6.22E-19,7.92E-19,8.65E-19,5.62E-19,1.28E-18,8.48E-19,6.57E-19,1.20E-18,5.88E-19,8.46E-19,9.63E-19,1.03E-18,1.20E-18,9.07E-19,1.27E-18,1.23E-18,9.18E-19,7.84E-19,4.54E-19,6.29E-19,1.39E-18,9.14E-19,8.13E-19,4.21E-19,1.33E-18,9.54E-19,1.13E-18,6.11E-19,8.80E-19,8.68E-19,1.23E-18,3.67E-19,6.83E-19,6.18E-19,7.55E-19,1.28E-18,5.25E-19,1.15E-18,1.02E-18,9.50E-19 +9.61E-19,1.22E-18,7.52E-19,1.20E-18,8.86E-19,8.77E-19,3.88E-19,8.53E-19,5.10E-19,7.48E-19,8.50E-19,5.60E-19,3.38E-19,4.09E-19,5.68E-19,1.30E-18,1.10E-18,8.23E-19,6.17E-19,5.32E-19,9.83E-19,1.23E-18,7.75E-19,1.26E-18,1.13E-18,5.11E-19,4.70E-19,4.14E-19,6.74E-19,9.55E-19,3.45E-19,5.57E-19,1.08E-18,9.16E-19,4.89E-19,7.02E-19,5.40E-19,1.37E-18,9.88E-19,3.67E-19,4.08E-19,1.07E-18,9.40E-19,6.03E-19,4.81E-19,5.06E-19,1.30E-18,8.46E-19,5.90E-19,1.08E-18,8.30E-19,9.27E-19,9.85E-19,1.37E-18,5.82E-19,8.40E-19,9.76E-19,1.24E-18,1.28E-18,8.52E-19,6.25E-19,7.95E-19,8.70E-19,5.65E-19,1.28E-18,8.51E-19,6.61E-19,1.21E-18,5.92E-19,8.50E-19,9.68E-19,1.04E-18,1.20E-18,9.12E-19,1.28E-18,1.23E-18,9.21E-19,7.90E-19,4.58E-19,6.34E-19,1.40E-18,9.19E-19,8.18E-19,4.24E-19,1.34E-18,9.58E-19,1.13E-18,6.16E-19,8.84E-19,8.73E-19,1.23E-18,3.71E-19,6.88E-19,6.23E-19,7.60E-19,1.29E-18,5.30E-19,1.15E-18,1.03E-18,9.54E-19 +9.66E-19,1.23E-18,7.57E-19,1.20E-18,8.90E-19,8.81E-19,3.92E-19,8.57E-19,5.15E-19,7.52E-19,8.54E-19,5.65E-19,3.42E-19,4.14E-19,5.72E-19,1.31E-18,1.11E-18,8.28E-19,6.20E-19,5.36E-19,9.87E-19,1.23E-18,7.79E-19,1.26E-18,1.13E-18,5.16E-19,4.75E-19,4.18E-19,6.79E-19,9.59E-19,3.49E-19,5.63E-19,1.09E-18,9.20E-19,4.92E-19,7.05E-19,5.45E-19,1.37E-18,9.91E-19,3.71E-19,4.12E-19,1.07E-18,9.45E-19,6.08E-19,4.86E-19,5.10E-19,1.31E-18,8.51E-19,5.95E-19,1.08E-18,8.35E-19,9.32E-19,9.90E-19,1.38E-18,5.86E-19,8.43E-19,9.80E-19,1.25E-18,1.28E-18,8.57E-19,6.28E-19,7.99E-19,8.75E-19,5.69E-19,1.29E-18,8.55E-19,6.64E-19,1.21E-18,5.96E-19,8.54E-19,9.73E-19,1.04E-18,1.21E-18,9.16E-19,1.28E-18,1.24E-18,9.25E-19,7.95E-19,4.62E-19,6.40E-19,1.40E-18,9.24E-19,8.24E-19,4.28E-19,1.34E-18,9.62E-19,1.14E-18,6.21E-19,8.88E-19,8.78E-19,1.24E-18,3.75E-19,6.92E-19,6.27E-19,7.66E-19,1.30E-18,5.36E-19,1.16E-18,1.03E-18,9.57E-19 +9.71E-19,1.23E-18,7.63E-19,1.20E-18,8.94E-19,8.85E-19,3.95E-19,8.62E-19,5.20E-19,7.56E-19,8.57E-19,5.70E-19,3.45E-19,4.19E-19,5.75E-19,1.31E-18,1.11E-18,8.33E-19,6.24E-19,5.39E-19,9.92E-19,1.24E-18,7.83E-19,1.27E-18,1.14E-18,5.21E-19,4.80E-19,4.22E-19,6.84E-19,9.63E-19,3.53E-19,5.68E-19,1.09E-18,9.23E-19,4.96E-19,7.09E-19,5.51E-19,1.38E-18,9.95E-19,3.74E-19,4.16E-19,1.07E-18,9.49E-19,6.13E-19,4.90E-19,5.14E-19,1.31E-18,8.57E-19,6.01E-19,1.09E-18,8.39E-19,9.38E-19,9.94E-19,1.38E-18,5.89E-19,8.47E-19,9.85E-19,1.25E-18,1.29E-18,8.61E-19,6.31E-19,8.02E-19,8.80E-19,5.72E-19,1.29E-18,8.58E-19,6.68E-19,1.21E-18,6.00E-19,8.58E-19,9.78E-19,1.05E-18,1.21E-18,9.20E-19,1.29E-18,1.24E-18,9.28E-19,8.00E-19,4.66E-19,6.45E-19,1.41E-18,9.29E-19,8.29E-19,4.31E-19,1.35E-18,9.65E-19,1.14E-18,6.26E-19,8.92E-19,8.83E-19,1.24E-18,3.79E-19,6.97E-19,6.31E-19,7.71E-19,1.30E-18,5.41E-19,1.16E-18,1.03E-18,9.61E-19 +9.75E-19,1.24E-18,7.68E-19,1.21E-18,8.98E-19,8.88E-19,3.99E-19,8.66E-19,5.25E-19,7.59E-19,8.61E-19,5.74E-19,3.49E-19,4.23E-19,5.79E-19,1.31E-18,,,6.28E-19,5.43E-19,9.97E-19,1.24E-18,7.87E-19,1.27E-18,1.14E-18,5.25E-19,4.85E-19,4.26E-19,6.89E-19,9.67E-19,3.57E-19,5.73E-19,1.09E-18,9.27E-19,5.00E-19,7.13E-19,5.56E-19,1.38E-18,9.99E-19,3.77E-19,4.19E-19,1.08E-18,9.53E-19,6.19E-19,4.95E-19,5.19E-19,1.32E-18,,6.06E-19,1.09E-18,8.44E-19,9.43E-19,,1.39E-18,5.93E-19,8.50E-19,9.90E-19,,1.29E-18,8.65E-19,6.34E-19,8.05E-19,8.86E-19,5.76E-19,1.30E-18,8.62E-19,6.71E-19,1.22E-18,6.03E-19,8.62E-19,9.83E-19,1.05E-18,1.21E-18,9.25E-19,1.29E-18,1.24E-18,9.31E-19,8.06E-19,4.70E-19,6.51E-19,,9.34E-19,8.34E-19,4.34E-19,,9.69E-19,1.14E-18,6.31E-19,8.96E-19,8.89E-19,,3.83E-19,7.02E-19,6.35E-19,7.76E-19,,5.47E-19,1.16E-18,1.04E-18,9.65E-19 +9.80E-19,1.25E-18,7.74E-19,1.21E-18,9.02E-19,8.92E-19,4.03E-19,8.70E-19,5.29E-19,7.63E-19,8.64E-19,5.79E-19,3.53E-19,4.28E-19,5.83E-19,1.32E-18,,,6.32E-19,5.46E-19,1.00E-18,1.25E-18,7.91E-19,1.28E-18,1.15E-18,5.30E-19,4.90E-19,4.30E-19,6.94E-19,9.71E-19,3.61E-19,5.79E-19,1.10E-18,9.30E-19,5.03E-19,7.17E-19,5.62E-19,1.39E-18,1.00E-18,3.81E-19,4.23E-19,1.08E-18,9.57E-19,6.24E-19,5.00E-19,5.23E-19,1.32E-18,,6.11E-19,1.10E-18,8.48E-19,9.49E-19,,1.39E-18,,8.53E-19,9.94E-19,,1.29E-18,8.70E-19,6.37E-19,8.09E-19,8.91E-19,5.80E-19,1.30E-18,8.66E-19,6.75E-19,1.22E-18,6.07E-19,8.66E-19,9.88E-19,1.06E-18,1.22E-18,9.29E-19,1.30E-18,1.25E-18,9.35E-19,8.11E-19,,6.57E-19,,9.39E-19,8.40E-19,4.38E-19,,9.73E-19,1.15E-18,6.36E-19,9.00E-19,8.94E-19,,3.86E-19,7.07E-19,6.40E-19,7.82E-19,,5.52E-19,1.17E-18,1.04E-18,9.69E-19 +9.85E-19,1.25E-18,7.79E-19,1.22E-18,9.06E-19,8.96E-19,4.06E-19,8.74E-19,5.34E-19,7.67E-19,8.68E-19,5.84E-19,3.56E-19,4.33E-19,5.87E-19,1.32E-18,,,6.36E-19,5.49E-19,1.01E-18,1.25E-18,7.95E-19,1.28E-18,1.15E-18,5.35E-19,4.95E-19,4.34E-19,6.99E-19,9.75E-19,3.64E-19,5.84E-19,1.10E-18,9.34E-19,5.07E-19,7.20E-19,5.68E-19,1.39E-18,1.01E-18,3.84E-19,4.27E-19,1.08E-18,9.62E-19,6.29E-19,5.04E-19,5.27E-19,1.33E-18,,,1.10E-18,8.53E-19,9.54E-19,,1.40E-18,,8.57E-19,9.99E-19,,1.30E-18,8.74E-19,6.41E-19,8.12E-19,8.96E-19,5.83E-19,1.31E-18,8.69E-19,6.78E-19,1.22E-18,6.11E-19,8.70E-19,9.93E-19,1.06E-18,1.22E-18,9.34E-19,1.30E-18,1.25E-18,9.38E-19,8.17E-19,,6.62E-19,,9.44E-19,8.45E-19,4.41E-19,,9.77E-19,1.15E-18,6.41E-19,9.05E-19,8.99E-19,,3.90E-19,7.12E-19,6.44E-19,7.87E-19,,5.58E-19,1.17E-18,1.05E-18,9.72E-19 +,1.26E-18,7.84E-19,,9.10E-19,8.99E-19,4.10E-19,,5.39E-19,7.70E-19,8.71E-19,5.89E-19,3.60E-19,4.38E-19,5.91E-19,1.33E-18,,,6.40E-19,5.53E-19,1.01E-18,1.26E-18,7.99E-19,1.29E-18,1.16E-18,5.39E-19,4.99E-19,4.38E-19,7.05E-19,9.79E-19,3.68E-19,5.90E-19,1.10E-18,9.37E-19,5.10E-19,7.24E-19,5.73E-19,1.40E-18,1.01E-18,3.87E-19,4.31E-19,1.09E-18,9.66E-19,6.34E-19,5.09E-19,5.31E-19,1.33E-18,,,1.11E-18,8.57E-19,9.59E-19,,1.41E-18,,8.60E-19,1.00E-18,,1.30E-18,8.78E-19,6.44E-19,8.15E-19,9.01E-19,5.87E-19,1.31E-18,8.73E-19,6.82E-19,1.23E-18,6.15E-19,8.74E-19,9.98E-19,1.07E-18,1.22E-18,9.38E-19,1.31E-18,1.25E-18,9.42E-19,8.22E-19,,6.68E-19,,9.49E-19,8.50E-19,4.45E-19,,9.81E-19,1.16E-18,6.46E-19,9.09E-19,9.04E-19,,3.94E-19,7.17E-19,6.48E-19,7.92E-19,,5.63E-19,1.18E-18,1.05E-18,9.76E-19 +,1.26E-18,7.90E-19,,9.14E-19,9.03E-19,4.14E-19,,5.44E-19,7.74E-19,8.74E-19,5.93E-19,3.64E-19,4.43E-19,5.95E-19,,,,6.44E-19,5.56E-19,1.02E-18,1.26E-18,8.02E-19,,1.16E-18,5.44E-19,5.04E-19,4.42E-19,7.10E-19,9.83E-19,,5.95E-19,1.11E-18,9.41E-19,5.14E-19,7.28E-19,5.79E-19,1.40E-18,1.01E-18,3.91E-19,4.35E-19,1.09E-18,9.70E-19,6.40E-19,5.14E-19,5.36E-19,1.34E-18,,,1.11E-18,8.62E-19,9.65E-19,,1.41E-18,,8.63E-19,1.01E-18,,1.31E-18,8.82E-19,6.47E-19,8.19E-19,9.06E-19,5.90E-19,1.32E-18,8.76E-19,6.85E-19,1.23E-18,6.19E-19,8.78E-19,1.00E-18,1.07E-18,1.23E-18,9.42E-19,1.31E-18,1.26E-18,9.45E-19,8.28E-19,,,,9.54E-19,8.56E-19,4.48E-19,,9.85E-19,1.16E-18,6.51E-19,9.13E-19,9.09E-19,,3.98E-19,7.22E-19,6.52E-19,7.98E-19,,5.69E-19,1.18E-18,1.06E-18,9.80E-19 +,1.27E-18,7.95E-19,,9.18E-19,9.06E-19,4.17E-19,,5.48E-19,7.77E-19,8.78E-19,5.98E-19,3.67E-19,4.47E-19,5.99E-19,,,,6.48E-19,5.60E-19,1.02E-18,1.27E-18,8.06E-19,,1.17E-18,5.49E-19,5.09E-19,4.46E-19,7.15E-19,,,6.00E-19,1.11E-18,9.45E-19,5.18E-19,7.32E-19,5.84E-19,1.41E-18,1.02E-18,3.94E-19,4.39E-19,1.10E-18,9.75E-19,6.45E-19,5.19E-19,5.40E-19,1.34E-18,,,1.12E-18,8.67E-19,9.70E-19,,1.42E-18,,8.67E-19,1.01E-18,,1.31E-18,8.87E-19,6.50E-19,8.22E-19,9.11E-19,5.94E-19,1.32E-18,8.80E-19,6.88E-19,1.23E-18,6.23E-19,8.82E-19,1.01E-18,1.08E-18,1.23E-18,9.47E-19,1.32E-18,1.26E-18,9.48E-19,8.33E-19,,,,9.59E-19,8.61E-19,4.52E-19,,9.89E-19,1.16E-18,6.56E-19,9.17E-19,9.14E-19,,4.02E-19,7.27E-19,6.57E-19,8.03E-19,,5.74E-19,1.19E-18,,9.83E-19 +,1.27E-18,8.00E-19,,9.22E-19,9.10E-19,4.21E-19,,5.53E-19,7.81E-19,8.81E-19,6.03E-19,3.71E-19,4.52E-19,6.03E-19,,,,6.52E-19,5.63E-19,1.02E-18,1.28E-18,8.10E-19,,1.17E-18,5.54E-19,5.14E-19,4.50E-19,7.20E-19,,,6.06E-19,1.11E-18,9.48E-19,5.21E-19,,5.90E-19,1.41E-18,1.02E-18,3.97E-19,4.42E-19,1.10E-18,9.79E-19,6.50E-19,5.23E-19,5.44E-19,1.35E-18,,,1.12E-18,8.71E-19,9.76E-19,,1.42E-18,,8.70E-19,1.02E-18,,1.32E-18,8.91E-19,6.53E-19,8.25E-19,9.16E-19,5.97E-19,1.33E-18,8.84E-19,6.92E-19,1.24E-18,6.27E-19,8.86E-19,1.01E-18,1.08E-18,1.24E-18,9.51E-19,1.32E-18,1.26E-18,9.52E-19,8.39E-19,,,,9.64E-19,8.66E-19,4.55E-19,,9.92E-19,1.17E-18,6.61E-19,9.21E-19,9.20E-19,,4.06E-19,7.32E-19,6.61E-19,8.08E-19,,5.79E-19,1.19E-18,,9.87E-19 +,1.28E-18,8.06E-19,,9.26E-19,9.14E-19,,,5.58E-19,7.85E-19,8.85E-19,6.08E-19,3.75E-19,4.57E-19,6.07E-19,,,,6.56E-19,5.67E-19,1.03E-18,1.28E-18,8.14E-19,,1.18E-18,5.58E-19,5.19E-19,4.54E-19,7.25E-19,,,6.11E-19,1.12E-18,,5.25E-19,,5.95E-19,1.42E-18,1.03E-18,4.00E-19,4.46E-19,1.10E-18,9.83E-19,6.55E-19,5.28E-19,,1.35E-18,,,1.13E-18,8.76E-19,9.81E-19,,1.43E-18,,8.74E-19,1.02E-18,,1.32E-18,,6.56E-19,8.29E-19,9.21E-19,6.01E-19,1.33E-18,8.87E-19,6.95E-19,1.24E-18,6.31E-19,8.90E-19,,1.09E-18,1.24E-18,9.55E-19,1.33E-18,1.27E-18,9.55E-19,8.44E-19,,,,9.69E-19,8.72E-19,4.59E-19,,9.96E-19,1.17E-18,6.66E-19,9.25E-19,9.25E-19,,4.09E-19,7.37E-19,6.65E-19,8.14E-19,,5.85E-19,,,9.91E-19 +,,8.11E-19,,9.30E-19,,,,5.63E-19,7.88E-19,8.88E-19,6.12E-19,3.78E-19,4.62E-19,6.11E-19,,,,6.60E-19,5.70E-19,1.03E-18,1.29E-18,8.18E-19,,1.18E-18,5.63E-19,5.24E-19,4.58E-19,7.30E-19,,,6.16E-19,1.12E-18,,5.28E-19,,6.01E-19,1.42E-18,1.03E-18,4.04E-19,4.50E-19,1.11E-18,9.87E-19,6.61E-19,5.33E-19,,1.36E-18,,,1.13E-18,8.80E-19,9.87E-19,,,,8.77E-19,1.03E-18,,1.32E-18,,6.59E-19,8.32E-19,9.26E-19,6.05E-19,1.34E-18,8.91E-19,6.99E-19,1.24E-18,6.35E-19,8.94E-19,,1.09E-18,,9.60E-19,1.33E-18,1.27E-18,9.58E-19,8.50E-19,,,,9.74E-19,8.77E-19,4.62E-19,,1.00E-18,1.18E-18,6.70E-19,9.29E-19,9.30E-19,,4.13E-19,7.42E-19,6.70E-19,8.19E-19,,5.90E-19,,,9.95E-19 +,,8.16E-19,,9.34E-19,,,,5.67E-19,7.92E-19,8.92E-19,6.17E-19,3.82E-19,4.66E-19,6.15E-19,,,,6.64E-19,5.74E-19,1.04E-18,,8.22E-19,,1.19E-18,5.68E-19,5.28E-19,4.62E-19,7.35E-19,,,6.22E-19,1.12E-18,,5.32E-19,,,1.43E-18,1.03E-18,4.07E-19,4.54E-19,1.11E-18,,,5.37E-19,,1.36E-18,,,1.14E-18,8.85E-19,9.92E-19,,,,8.80E-19,1.03E-18,,1.33E-18,,6.62E-19,8.35E-19,9.31E-19,6.08E-19,1.34E-18,8.94E-19,7.02E-19,1.25E-18,6.39E-19,8.98E-19,,1.10E-18,,9.64E-19,1.34E-18,1.27E-18,9.62E-19,8.55E-19,,,,9.79E-19,8.82E-19,4.66E-19,,1.00E-18,1.18E-18,6.75E-19,9.33E-19,9.35E-19,,4.17E-19,7.47E-19,6.74E-19,8.24E-19,,5.96E-19,,,9.98E-19 +,,8.22E-19,,9.38E-19,,,,5.72E-19,7.96E-19,8.95E-19,6.22E-19,3.86E-19,4.71E-19,6.19E-19,,,,6.68E-19,5.77E-19,1.04E-18,,8.26E-19,,1.19E-18,5.72E-19,5.33E-19,4.66E-19,7.40E-19,,,6.27E-19,1.13E-18,,5.36E-19,,,1.43E-18,1.04E-18,4.10E-19,4.58E-19,1.11E-18,,,5.42E-19,,1.37E-18,,,1.14E-18,,,,,,8.84E-19,1.04E-18,,1.33E-18,,6.65E-19,8.39E-19,9.36E-19,6.12E-19,1.35E-18,8.98E-19,7.06E-19,1.25E-18,6.42E-19,9.02E-19,,,,9.68E-19,1.34E-18,1.28E-18,9.65E-19,8.61E-19,,,,,8.88E-19,4.69E-19,,1.01E-18,1.19E-18,6.80E-19,9.37E-19,9.40E-19,,4.21E-19,7.52E-19,6.78E-19,8.29E-19,,6.01E-19,,,1.00E-18 +,,8.27E-19,,,,,,5.77E-19,7.99E-19,8.98E-19,6.26E-19,3.89E-19,4.76E-19,,,,,6.72E-19,5.81E-19,1.05E-18,,8.30E-19,,1.20E-18,5.77E-19,5.38E-19,4.70E-19,7.45E-19,,,,1.13E-18,,5.39E-19,,,1.44E-18,,4.14E-19,4.62E-19,1.12E-18,,,5.47E-19,,1.37E-18,,,1.14E-18,,,,,,8.87E-19,1.04E-18,,1.34E-18,,6.69E-19,8.42E-19,9.42E-19,6.15E-19,1.35E-18,9.01E-19,7.09E-19,1.25E-18,6.46E-19,,,,,9.73E-19,1.35E-18,1.28E-18,9.68E-19,8.66E-19,,,,,,4.73E-19,,,1.19E-18,,9.41E-19,9.46E-19,,,,6.82E-19,8.35E-19,,,,,1.01E-18 +,,,,,,,,5.82E-19,8.03E-19,9.02E-19,6.31E-19,3.93E-19,4.81E-19,,,,,6.75E-19,5.84E-19,1.05E-18,,8.34E-19,,1.20E-18,5.82E-19,,4.74E-19,7.50E-19,,,,1.13E-18,,5.43E-19,,,1.44E-18,,4.17E-19,4.66E-19,1.12E-18,,,,,,,,1.15E-18,,,,,,8.90E-19,1.04E-18,,1.34E-18,,6.72E-19,8.45E-19,9.47E-19,6.19E-19,1.36E-18,9.05E-19,7.13E-19,,6.50E-19,,,,,9.77E-19,1.35E-18,1.28E-18,9.72E-19,,,,,,,4.76E-19,,,1.19E-18,,9.45E-19,9.51E-19,,,,6.87E-19,8.40E-19,,,,,1.01E-18 +,,,,,,,,5.86E-19,8.07E-19,9.05E-19,,3.96E-19,4.86E-19,,,,,,5.88E-19,1.06E-18,,8.37E-19,,1.21E-18,,,4.78E-19,7.55E-19,,,,1.14E-18,,5.46E-19,,,1.45E-18,,,4.69E-19,1.12E-18,,,,,,,,1.15E-18,,,,,,8.94E-19,1.05E-18,,,,6.75E-19,8.49E-19,9.52E-19,6.23E-19,1.36E-18,,7.16E-19,,6.54E-19,,,,,9.81E-19,1.36E-18,1.29E-18,9.75E-19,,,,,,,4.80E-19,,,1.20E-18,,9.49E-19,9.56E-19,,,,,8.45E-19,,,,,1.01E-18 +,,,,,,,,5.91E-19,8.10E-19,,,4.00E-19,4.90E-19,,,,,,5.91E-19,1.06E-18,,8.41E-19,,1.21E-18,,,4.82E-19,,,,,1.14E-18,,5.50E-19,,,1.45E-18,,,4.73E-19,1.13E-18,,,,,,,,1.16E-18,,,,,,,,,,,6.78E-19,8.52E-19,9.57E-19,6.26E-19,1.37E-18,,7.20E-19,,6.58E-19,,,,,9.86E-19,1.36E-18,1.29E-18,9.78E-19,,,,,,,4.83E-19,,,1.20E-18,,9.53E-19,9.61E-19,,,,,,,,,,1.02E-18 +,,,,,,,,5.96E-19,,,,,4.95E-19,,,,,,5.95E-19,1.07E-18,,8.45E-19,,1.21E-18,,,4.86E-19,,,,,,,5.54E-19,,,1.46E-18,,,4.77E-19,,,,,,,,,1.16E-18,,,,,,,,,,,6.81E-19,8.55E-19,9.62E-19,6.30E-19,1.37E-18,,,,6.62E-19,,,,,9.90E-19,1.37E-18,1.29E-18,9.82E-19,,,,,,,4.87E-19,,,1.21E-18,,9.57E-19,9.66E-19,,,,,,,,,,1.02E-18 +,,,,,,,,,,,,,5.00E-19,,,,,,5.98E-19,1.07E-18,,8.49E-19,,,,,4.90E-19,,,,,,,,,,1.46E-18,,,,,,,,,,,,1.17E-18,,,,,,,,,,,6.84E-19,8.59E-19,9.67E-19,6.33E-19,1.38E-18,,,,,,,,,9.95E-19,1.37E-18,1.30E-18,9.85E-19,,,,,,,4.90E-19,,,1.21E-18,,,,,,,,,,,,,1.02E-18 +,,,,,,,,,,,,,5.05E-19,,,,,,6.01E-19,1.08E-18,,8.53E-19,,,,,4.94E-19,,,,,,,,,,1.47E-18,,,,,,,,,,,,1.17E-18,,,,,,,,,,,6.87E-19,8.62E-19,9.72E-19,6.37E-19,1.38E-18,,,,,,,,,9.99E-19,,1.30E-18,9.88E-19,,,,,,,4.93E-19,,,1.21E-18,,,,,,,,,,,,,1.03E-18 +,,,,,,,,,,,,,,,,,,,,1.08E-18,,,,,,,,,,,,,,,,,1.47E-18,,,,,,,,,,,,,,,,,,,,,,,,8.65E-19,9.77E-19,,1.39E-18,,,,,,,,,1.00E-18,,1.30E-18,9.92E-19,,,,,,,4.97E-19,,,1.22E-18,,,,,,,,,,,,,1.03E-18 +,,,,,,,,,,,,,,,,,,,,1.09E-18,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8.69E-19,,,,,,,,,,,,1.01E-18,,,9.95E-19,,,,,,,5.00E-19,,,1.22E-18,,,,,,,,,,,,, diff --git a/lessons/files/reading_files.ipynb b/lessons/files/reading_files.ipynb index d6d4bfd..14894d9 100644 --- a/lessons/files/reading_files.ipynb +++ b/lessons/files/reading_files.ipynb @@ -71,30 +71,6 @@ "- The final line prints the string that has been placed inside the variable ``contents``." ] }, - { - "cell_type": "markdown", - "id": "cf2aca7e", - "metadata": {}, - "source": [ - "### Files in a diffferent directory" - ] - }, - { - "cell_type": "markdown", - "id": "2c25fe30", - "metadata": {}, - "source": [ - "If the file you are trying to call is unavoidably in a differect directory to the one you are working in, you can still call the file by instead inputing the full filepath for the file. E.g. ``\"C:\\Users\\Tara\\Documents\\PythonInChemistry\\readingfiles\\molecule.txt\"``\n", - "\n", - "You could also use a relative filepath using ``./`` and ``../``. \n", - "- ``./`` indicates you want to stay in the same directory. After the forward slash, you can then put in further directory names, ending with your file name.\n", - "- ``../`` indicates you want to go back a directory from the one you are in. After the backslash, you can then put in further directory names, again ending with your file name.\n", - "\n", - "If this is confusing, have a look at the previous lessons on file types and view the directory branch diagram.\n", - "\n", - " Remember Forward slash and backward slash are interchangeable for specifying a filepath (at higher computing levels this is not necessarily true, but for our purposes it is)." - ] - }, { "cell_type": "markdown", "id": "900f642e", @@ -132,17 +108,12 @@ }, { "cell_type": "markdown", - "id": "fa3fded7", - "metadata": {}, - "source": [ - "### ``read()`` and ``readline()``" - ] - }, - { - "cell_type": "markdown", - "id": "ddaa58fb", + "id": "6e61007d", "metadata": {}, "source": [ + "
\n", + "Read() and readline()\n", + "\n", "By default, the ``read()`` method returns the whole text, but you can also specify how many characters you want to return. \n", "\n", "`` molec_file.read(4) `` \n", @@ -166,7 +137,9 @@ " print(molec_file.readline())\n", "```\n", "\n", - "Which would return the first and second molecules, on separate lines. " + "Which would return the first and second molecules, on separate lines. \n", + "\n", + "

" ] }, { @@ -218,15 +191,23 @@ "id": "f110135e", "metadata": {}, "source": [ - "
Exercise: Print a certain number of lines \n", + "
\n", + "
Exercise: Print a certain number of lines \n", "\n", "For the file \"spectrum.dat\", open using a ``with`` statement and print the first four lines.\n", "\n", " Hint Use a ``for`` loop with the ``range()`` function to print the line a certain number of times.\n", "\n", - "
Click to see a potential answer \n", - "\n", - "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "ba982c79", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", ">```Python\n", ">with open(\"./practice_files/spectrum.dat\") as file:\n", @@ -236,9 +217,7 @@ "\n", "This code prints the first 4 lines of the file. We have used the ``range()`` function to only print it 4 times. \n", "\n", - "
\n", - "\n", - "
" + "

" ] }, { @@ -298,43 +277,29 @@ "\n", "``['C2H6,C2H4,C2H2', 'C3H8,C3H6,C3H4', 'C4H10,C4H8,C4H6', 'C5H12,C5H10,C5H8', 'C6H14,C6H12,C6H10', ... ,'C14H30,C14H28,C14H26', 'C15H32,C15H30,C15H28']``\n", "\n", - "Try for yourself.\n", - "\n", - "Instead of splitting all the contents, we can iterate through line by line and split the line we are on using the delimiter \",\". " + "Try for yourself." ] }, { - "cell_type": "code", - "execution_count": null, - "id": "478c2fc3", + "cell_type": "markdown", + "id": "1ba91256", "metadata": {}, - "outputs": [], "source": [ + "
\n", + "Splitting a line\n", + "\n", + "Instead of splitting all the contents, we can iterate through line by line and split the line we are on using the delimiter \",\". \n", + "\n", + "```Python\n", "with open(\"./practice_files/alkanes_alkenes_alkynes.csv\") as file:\n", " file = file.read()\n", " file = file.split(\"\\n\")\n", " for line in file:\n", " line = line.split(\",\")\n", - " print(line)" - ] - }, - { - "cell_type": "markdown", - "id": "5750b5d8", - "metadata": {}, - "source": [ - "The above code returns each item in each line as items in a list. However, this isn't particularly useful. It would be more useful to have a list of alkanes, a list of alkenes, and a list of alkynes. We can do this by apppending to empty lists by referencing the position in each line using square brackets." - ] - }, - { - "cell_type": "markdown", - "id": "1ba91256", - "metadata": {}, - "source": [ - "
\n", - "Splitting a line\n", + " print(line)\n", + "```\n", "\n", - "MORE DESCRIPTION\n", + "The above code returns each item in each line as items in a list. However, this isn't particularly useful. It would be more useful to have a list of alkanes, a list of alkenes, and a list of alkynes. We can do this by apppending to empty lists by referencing the position in each line using square brackets.\n", "\n", "```Python\n", "alkanes = []\n", @@ -393,15 +358,26 @@ "id": "828d3808", "metadata": {}, "source": [ - "
Exercise: Extract columns of data \n", - "\n", + "
\n", + "
Exercise: Extract columns of data \n", + "
\n", "The file 'measurements_2.csv' contains three columns of background data, corresponding to three different students. Write a code that extracts the data from each of the three columns and appends it to three lists. Then write a code that finds the average of each set of data.\n", "\n", " Hint 1: Once you have split each line, you can call items in a line using square brackets. The first item in a line can be called using ``line[0]``, the second using ``line[1]``, and so on. \n", "\n", " Hint 2: Define a function to find the average to avoid writing out the same code over and over.\n", "\n", - "
Click to see a potential answer \n", + "
\n", + "

" + ] + }, + { + "cell_type": "markdown", + "id": "3fa00d3c", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", "
\n", "\n", @@ -436,9 +412,7 @@ "\n", "We have defined our function at the top, which is good practice. Then, we open our file and extract the contents, ensuring values in each list are floats and not strings. Finally, we print the mean of those strings using our earlier defined function.\n", "\n", - "
\n", - "\n", - "
" + "

" ] }, { @@ -446,7 +420,8 @@ "id": "7bff0294", "metadata": {}, "source": [ - "
Exercise: Create a function \n", + "
\n", + "
Exercise: Create a function to read a file \n", "\n", "Above, we have written code to open a single file and extract the data. If we have many files of data that we want to read, we don't want to write that out over and over again. \n", "\n", @@ -457,9 +432,19 @@ "3. Advanced extension: Create a function that can take an arbitrary number of list index values for a file and output the data of those two lists. (Hint: use nested loops and nested lists).\n", " HintL Use arbitrary arguments, ``*args``.\n", "\n", - "
Click to see a potential answer \n", "\n", - "
\n", + "
\n", + "\n", + "

" + ] + }, + { + "cell_type": "markdown", + "id": "52258018", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", "This is just turning our code from the previous exercise into a function. The function takes one argument (the file name), and will always output the first three columns of data as a three separate lists.\n", "\n", @@ -488,12 +473,16 @@ ">print(student_1, \"\\n\", student_2, \"\\n\", student_3)\n", "\n", "This has many limitations. It will not work if our data has less than 3 columns (try with the file \"measurements_1\" and see what happens). It also won't return any columns past the first three, so you can't retrieve the fifth, sixth, or 100th column. The extension question tackles this.\n", - "\n", - "
\n", - "\n", - "
\n", - "\n", - "
Click to see the extension answer \n", + "

" + ] + }, + { + "cell_type": "markdown", + "id": "1228e25e", + "metadata": {}, + "source": [ + "
\n", + " Click to view extension answer\n", "\n", "This code is more flexible than the previous one. Now, we can accept files with any number of columns, and we retrieve the data frp, a certain column, specifed with a second argument.\n", "\n", @@ -532,11 +521,16 @@ "\n", "In the advanced extentsion, we instead use an arbitrary number of arguments to retrieve any number of columns from the data.\n", "\n", - "
\n", - "\n", - "
\n", - "\n", - "
Click to see the advanced extension answer \n", + "

" + ] + }, + { + "cell_type": "markdown", + "id": "c1fd0ab0", + "metadata": {}, + "source": [ + "
\n", + " Click to view advanced answer\n", "\n", "In this code, we have written ``*columns`` as our arbitrary arguments. As our file only has 3 columns of data, we could put in 0, 1, or 2, as our arbitrary arguments. If we had more columns of data, we could call any number of those columns.\n", "\n", @@ -588,7 +582,7 @@ "\n", "Indexing can get confusing, especially with Python's 0-indexing system. Keep your variable names consistent and descriptive, and leave sensible comments to help you and others understand what is going on.\n", "\n", - "
" + "

" ] }, { @@ -665,23 +659,17 @@ }, { "cell_type": "markdown", - "id": "ca424bb0", + "id": "22973ad9", "metadata": {}, "source": [ - "#### Example 1: Identifying a line containing certain values\n", + "
\n", + "Identify a line containing a phrase\n", "\n", "Here, if the first line is equal to ['nm', 'abs'] (which it is), the program will ``continue``, meaning the current loop ends and the next loop begins. Since the lines in the next loops are numbers, the code will go straight to the ``else`` statement and append to the relevant lists. \n", "\n", - "You could also test just the first item in the line using ``if line[0] == \"nm\":``. This might be useful if there are multiple lines beginning with the same thing that you want to extract." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5e912e8c", - "metadata": {}, - "outputs": [], - "source": [ + "You could also test just the first item in the line using ``if line[0] == \"nm\":``. This might be useful if there are multiple lines beginning with the same thing that you want to extract.\n", + "\n", + "```Python\n", "wavelength = []\n", "absorption = []\n", "with open(\"./practice_files/spectrum.dat\") as file:\n", @@ -695,28 +683,25 @@ " wavelength.append(float(line[0]))\n", " absorption.append(float(line[1]))\n", "print(\"Wavelengths: \" , wavelength)\n", - "print(\"Absorptions :\" , absorption)" + "print(\"Absorptions :\" , absorption)\n", + "```\n", + "\n", + "

" ] }, { "cell_type": "markdown", - "id": "9719bd5e", + "id": "599796f0", "metadata": {}, "source": [ - "#### Example 2: Check if an entry is a number using ``.isdigit()``\n", + "
\n", + "Check if an entry is a number using .isdigit()\n", "\n", "In this example, we have added a ``for`` loop that iterates through the line, checking if each string item in the line contains numbers using the built-in Python function ``.isdigit()``. This will return True if all characters in the string are numbers, and False if any of those characters are not numbers. In this way, we can skip over any items which are not floats. \n", "\n", - "Also, if we have removed any values (outliers, etc.), this will filter them out." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "14f6800b", - "metadata": {}, - "outputs": [], - "source": [ + "Also, if we have removed any values (outliers, etc.), this will filter them out.\n", + "\n", + "```Python\n", "wavelength = []\n", "absorption = []\n", "with open(\"./practice_files/spectrum.dat\") as file:\n", @@ -731,26 +716,23 @@ " wavelength.append(float(line[0]))\n", " absorption.append(float(line[1]))\n", "print(\"Wavelengths: \" , wavelength)\n", - "print(\"Absorptions :\" , absorption)" + "print(\"Absorptions :\" , absorption)\n", + "```\n", + "\n", + "

" ] }, { "cell_type": "markdown", - "id": "1a5229ca", + "id": "0df837a2", "metadata": {}, "source": [ - "#### Example 3: Use enumerate to skip specific lines\n", + "
\n", + "Use enumerate() to skip specific lines\n", "\n", - "In this example, we enumerate the contents. This way, we can skip over any line we specify. In this case, the first line (index == 0) is skipped. If we also wanted to skip over the second line, we could use an ``or`` statement, e.g. ``if index == 0 or index == 1:``. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1b22f5d9", - "metadata": {}, - "outputs": [], - "source": [ + "In this example, we enumerate the contents. This way, we can skip over any line we specify. In this case, the first line (index == 0) is skipped. If we also wanted to skip over the second line, we could use an ``or`` statement, e.g. ``if index == 0 or index == 1:``. \n", + "\n", + "```Python\n", "wavelength = []\n", "absorption = []\n", "with open(\"./practice_files/spectrum.dat\") as file:\n", @@ -764,30 +746,27 @@ " absorption.append(float(line[1]))\n", "\n", "print(\"Wavelengths: \" , wavelength)\n", - "print(\"Absorptions :\" , absorption)" + "print(\"Absorptions :\" , absorption)\n", + "```\n", + "\n", + "

" ] }, { "cell_type": "markdown", - "id": "7d282a05", + "id": "0de1d353", "metadata": {}, "source": [ - "#### Example 4: Using length of a line\n", + "
\n", + "Use length of line\n", "\n", "In some cases, the headers are a different length to the rest of the file.\n", "\n", "In the XYZ file \"hydrogen_atoms.xyz\", the lines containing the data always have 4 elements to them: the atom, its x coordinate, its y coordinate, its z coordinate. All coordinates are given in Angstroms. \n", "\n", - "If you wanted to, instead of outputting a nested list of coordinates in the format [[x,y,z], [x,y,z]], you could create three lists corresponding the the three axes, each with every x- y- or z- value. You could then use these values for calculating the distance between atoms, or calculating the geometric similarity between two structures (using the RMSD formula for two structures)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ca0186ed", - "metadata": {}, - "outputs": [], - "source": [ + "If you wanted to, instead of outputting a nested list of coordinates in the format [[x,y,z], [x,y,z]], you could create three lists corresponding the the three axes, each with every x- y- or z- value. You could then use these values for calculating the distance between atoms, or calculating the geometric similarity between two structures (using the RMSD formula for two structures).\n", + "\n", + "```Python\n", "atoms = []\n", "H_coords = []\n", "\n", @@ -803,7 +782,10 @@ " coord = [float(line[1]), float(line[2]), float(line[3])]\n", " H_coords.append(coord)\n", "\n", - "print(\"H coords: \", H_coords)" + "print(\"H coords: \", H_coords)\n", + "```\n", + "\n", + "

" ] }, { @@ -811,8 +793,9 @@ "id": "860ec445", "metadata": {}, "source": [ - "
Exercise: Extract data from periodic table \n", - "\n", + "
\n", + "
Exercise: Extract data from periodic table \n", + "
\n", "Using the file 'periodic_table.csv', write code to write each element out in the following format:\n", "\n", " ``Element`` has the symbol ``symbol``. It has ``number`` protons and a mass of ``mass`` amu. \n", @@ -821,9 +804,19 @@ "\n", "Hint: Use f-strings for more control over your variables and better readability.\n", "\n", - "
\n", "\n", - "
Click here to reveal an answer \n", + "\n", + "
\n", + "

" + ] + }, + { + "cell_type": "markdown", + "id": "bdab5ff9", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", "There are many ways to write this. The important thing is that our output does NOT include the headers as a phrase. This answer has done this by skipping the line starting with the string \"Name\". If you have achieved the same output a different way, that's fine! At the moment, it is more important to just solve the problem rather than look for the \"best\" way to solve it. \n", "\n", @@ -841,9 +834,7 @@ "\n", "Think about how you could extract and use each column. If I wanted to just take the data for phosphorus, how would I achieve this? Could I use enumerate to find the right index? \n", "\n", - "
\n", - "\n", - "
" + "

" ] }, { @@ -851,18 +842,25 @@ "id": "6a239074", "metadata": {}, "source": [ - "
Exercise: Using the CSV module \n", - "\n", + "
\n", + "
Exercise: Using the CSV module \n", + "
\n", "Using the CSV module and the file 'periodic_table.csv', write code to write each element out in the following format:\n", "\n", " Element: ``element``, Symbol: ``symbol``, Atomic Number: ``number``, Atomic Mass: ``mass``. \n", "\n", "Hint: Use f-strings for more control over your variables and better readability.\n", "\n", - "
\n", - "\n", - "\n", - "
Click here to reveal an answer \n", + "

" + ] + }, + { + "cell_type": "markdown", + "id": "1ed1114b", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", "Using the CSV module results in fewer lines of code.\n", "\n", @@ -878,7 +876,31 @@ "\n", "Remember that although the CSV module can simplify things, it is still important to understand how to read and write code without it, as this will give you a better understanding of programming and Python coding.\n", "\n", - "
" + "

" + ] + }, + { + "cell_type": "markdown", + "id": "20c43e7b", + "metadata": {}, + "source": [ + "### Files in a diffferent directory" + ] + }, + { + "cell_type": "markdown", + "id": "807a6013", + "metadata": {}, + "source": [ + "If the file you are trying to call is unavoidably in a differect directory to the one you are working in, you can still call the file by instead inputing the full filepath for the file. E.g. ``\"C:\\Users\\Tara\\Documents\\PythonInChemistry\\readingfiles\\molecule.txt\"``\n", + "\n", + "You could also use a relative filepath using ``./`` and ``../``. \n", + "- ``./`` indicates you want to stay in the same directory. After the forward slash, you can then put in further directory names, ending with your file name.\n", + "- ``../`` indicates you want to go back a directory from the one you are in. After the backslash, you can then put in further directory names, again ending with your file name.\n", + "\n", + "If this is confusing, have a look at the previous lessons on file types and view the directory branch diagram.\n", + "\n", + " Remember Forward slash and backward slash are interchangeable for specifying a filepath (at higher computing levels this is not necessarily true, but for our purposes it is)." ] }, { @@ -894,7 +916,7 @@ "id": "c67c1875", "metadata": {}, "source": [ - "### Practice 1: Using the file path\n", + "### Question 1: Using the file path\n", "With the file \"gas_const.txt\" in a different directory to your program, write a code to open and print its contents. Remember you can use ``..`` to go back a directory, and ``.`` to indicate the directory you are currently in." ] }, @@ -926,7 +948,7 @@ "id": "981c5dec", "metadata": {}, "source": [ - "### Practice 2: Calculate internuclear distance\n", + "### Question 2: Calculate internuclear distance\n", "\n", "Using the coordinates in the file \"hydrogen_atoms.xyz\", write a program to calculate the distance between the two nuclei using Pythagoras' Theorem. \n", "\n", @@ -988,7 +1010,7 @@ "id": "1fdd99c8", "metadata": {}, "source": [ - "### Practice 3:\n", + "### Question 3:\n", "\n", "Extract the data from \"spectrum.dat\" and identify which wavelength results in the maximum absorption. \n", "\n", diff --git a/lessons/files/spectrum.txt b/lessons/files/spectrum.txt index 484a67b..33a9db2 100644 --- a/lessons/files/spectrum.txt +++ b/lessons/files/spectrum.txt @@ -7,3 +7,5 @@ nm &#&# abs 290 &#&# 0.377 300 0.007 310 0.002 +300 0.007 +310 0.002 diff --git a/lessons/files/writing_files.ipynb b/lessons/files/writing_files.ipynb index 310791c..fb555d3 100644 --- a/lessons/files/writing_files.ipynb +++ b/lessons/files/writing_files.ipynb @@ -83,43 +83,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "\n", - "
\n", - " Example 1 \n", - "\n", - "Contents\n", - "\n", - "
\n", - "\n", - "
\n", - " Example 2 \n", - "\n", - "Contents\n", - "\n", - "
\n", - "\n", "
\n", - " Example 3 \n", - "\n", - "Contents\n", + "Writing data to a new file\n", "\n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Writing data to a new file" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "BVX99iEZ3Rc2" - }, - "source": [ "If the file you want to write to doesn't exist, Python will create it.\n", "\n", "In the below example, we want to write the gas constant to a file called \"gas_const.txt\".\n", @@ -137,20 +103,20 @@ "\n", " The gas constant is: 8.314 J/K.mol \n", "\n", - "Try it for yourself." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Writing data to an existing file" + "Try it for yourself.\n", + "\n", + "

" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "BVX99iEZ3Rc2" + }, "source": [ + "
\n", + "Writing data to an existing file\n", + "\n", "If the file you want to write to already exists, Python will erase the contents of the file (this is called truncation) and write the new contents in that space.\n", "\n", "Run the above code to create the file \"gas_const.txt\", then run the code below.\n", @@ -164,20 +130,18 @@ "file.close()\n", "```\n", "\n", - "You will see that the previous value of R is no longer in the file. This is why we need to be careful with writing files, we don't want to lose any important data!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Writing to a file using ``with`` statements" + "You will see that the previous value of R is no longer in the file. This is why we need to be careful with writing files, we don't want to lose any important data!\n", + "\n", + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ + "
\n", + "Writing using 'with' statements\n", + "\n", "Just like when we are reading files, we can use a ``with`` statement to write to files. \n", "\n", "```Python\n", @@ -186,15 +150,18 @@ " file.write(\"The gas constant is: \" + str(R) + \" cal/K.mol\")\n", "```\n", "\n", - "Just like with reading, the file will automatically close once the ``with`` statement is no longer respected. " + "Just like with reading, the file will automatically close once the ``with`` statement is no longer respected. \n", + "\n", + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
Exercise: Writing files \n", - "\n", + "
\n", + "
Exercise: Writing files \n", + "
\n", "Using a ``with`` statement and an f-string, create a code to write the following statement to a new text file using the given variables below:\n", "\n", ">Lanthanum, with the elemental symbol La, has 57 protons and a mass of 138.91 amu. \n", @@ -210,8 +177,14 @@ "mass = 138.91\n", "```\n", "\n", - "
\n", - "\n", + "
\n", + "

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "
\n", " Click to reveal answer \n", "\n", @@ -227,7 +200,7 @@ "\n", "Don't forget the ``\\n`` character to create a new line!\n", "\n", - "
" + "

" ] }, { @@ -271,15 +244,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
Exercise: Write data to a file \n", - "\n", + "
\n", + "
Exercise: Write data to a file\n", + "
\n", "For the following list of random background noise, write each item to a text file on a new line. Include a header that describes what the data is.\n", "\n", "background = [1.48, 1.23, 1.39, 1.46, 1.31, 1.55, 1.25, 1.36, 1.44, 1.29, 1.58, 1.34, 1.41, 1.53, 1.27, 1.38, 1.52, 1.22, 1.33, 1.49, 1.24, 1.56, 1.26, 1.45, 1.51, 1.28, 1.35, 1.57, 1.43, 1.21]\n", "\n", - "
\n", - "\n", - "
Click here to view answer\n", + "

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", "```Python\n", "background = [1.48, 1.23, 1.39, 1.46, 1.31, 1.55, 1.25, 1.36, 1.44, 1.29, 1.58, 1.34, 1.41, 1.53, 1.27, 1.38, 1.52, 1.22, 1.33, 1.49, 1.24, 1.56, 1.26, 1.45, 1.51, 1.28, 1.35, 1.57, 1.43, 1.21]\n", @@ -290,15 +270,16 @@ " file.write(str(i) + \"\\n\")\n", "```\n", "\n", - "
" + "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
Exercise: Debugging code \n", - "\n", + "
\n", + "
Exercise: Debugging code \n", + "
\n", "Below is a piece of code with numerous errors. Identify as many as possible. Try running the code and look at the error message to more quickly figure out what is wrong. When you are writing a code project, you will encounter lots of error messages, so it is good to get used to recognising them now.\n", "\n", ">```Python\n", @@ -310,9 +291,17 @@ ">for point in data_points\n", "> file.write(point + \"\\n\")\n", "\n", - "
\n", "\n", - "
Click here to view answer\n", + "\n", + "

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", "```Python\n", "data_points = [1.2, 5.6, 3.4, 0.5, 4.1, 3.2]\n", @@ -334,7 +323,7 @@ "- There should always be a colon ``:`` at the end of the ``for`` line. \n", "- When writing an integer or float to a file using concatenation (the ``+`` sign), it must be converted to a string using ``str()``. In this case, it should read ``file.write(str(point) + \"\\n\")``. \n", "\n", - "
" + "
" ] }, { @@ -359,84 +348,60 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### CSV structure" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ + "
\n", + "CSV Structure\n", + "\n", "In this example, we take two lines of data and write them to a CSV file. We use a ``for`` loop with the ``range()`` function, and then write to the file the value at the index i which we are iterating through using square brackets. \n", "\n", - "When you are doing this, remember ``\\n`` to start a new line!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "When you are doing this, remember ``\\n`` to start a new line!\n", + "\n", + "```Python\n", "energies_1 = [1.01e-19, 1.43e-19, 1.85e-19, 2.28e-19, 2.7e-19, 3.13e-19, 3.55e-19, 3.98e-19, 4.4e-19, 4.83e-19, 5.25e-19, 5.68e-19]\n", "energies_2 = [1.82e-19, 2.11e-19, 2.4e-19, 2.69e-19, 2.99e-19, 3.28e-19, 3.57e-19, 3.86e-19, 4.15e-19, 4.44e-19, 4.74e-19, 5.03e-19]\n", "\n", "with open(\"data_record.csv\", \"w\") as file:\n", " file.write(f\"run1,run2\\n\")\n", " for i in range(len(energies_1)):\n", - " file.write(f\"{energies_1[i]},{energies_2[i]}\\n\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Using ``zip()``" + " file.write(f\"{energies_1[i]},{energies_2[i]}\\n\")\n", + "```\n", + "\n", + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We don#t have to use the range() function. In the below example, the two lists are being associated item-wise using the function ``zip()``. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "
\n", + "Using zip()\n", + "\n", + "We don#t have to use the range() function. In the below example, the two lists are being associated item-wise using the function ``zip()``. \n", + "\n", + "```Python\n", "energies_1 = [1.01e-19, 1.43e-19, 1.85e-19, 2.28e-19, 2.7e-19, 3.13e-19, 3.55e-19, 3.98e-19, 4.4e-19, 4.83e-19, 5.25e-19, 5.68e-19]\n", "energies_2 = [1.82e-19, 2.11e-19, 2.4e-19, 2.69e-19, 2.99e-19, 3.28e-19, 3.57e-19, 3.86e-19, 4.15e-19, 4.44e-19, 4.74e-19, 5.03e-19]\n", "\n", "with open(\"data_record.csv\", \"w\") as file:\n", " file.write(\"run1,run2\\n\")\n", " for i, j in zip(energies_1,energies_2):\n", - " file.write(f\"{i},{j}\\n\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Using ``zip()`` and the unpacking operator ``*``" + " file.write(f\"{i},{j}\\n\")\n", + "```\n", + "\n", + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ + "
\n", + "Zip() and the unpacking operator *\n", + "\n", "If we had lots and lots of lists that we want to write to the document, both ``range()`` and ``zip()`` seem to require lots of repetitive naming of lists. However, there are ways around this. \n", "\n", - "When we first learned about ``zip()``, we might have mentioned that if you use only 1 temporary variable for multiple lists (e.g. ``for i in zip(list1,list2,list3):``), the items in the list are still associated with each other, but as a tuple, in this case witht he variable name ``i``. Tuples are very similar to lists, with the difference that they are immutable, their contents cannot be changed once it has been created. Once you have the tuple, you can iterate through it, writing each item in the tuple to your document. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "When we first learned about ``zip()``, we might have mentioned that if you use only 1 temporary variable for multiple lists (e.g. ``for i in zip(list1,list2,list3):``), the items in the list are still associated with each other, but as a tuple, in this case witht he variable name ``i``. Tuples are very similar to lists, with the difference that they are immutable, their contents cannot be changed once it has been created. Once you have the tuple, you can iterate through it, writing each item in the tuple to your document. \n", + "\n", + "```Python\n", "energies_1 = [1.01e-19, 1.43e-19, 1.85e-19, 2.28e-19, 2.7e-19, 3.13e-19, 3.55e-19, 3.98e-19, 4.4e-19, 4.83e-19, 5.25e-19, 5.68e-19]\n", "energies_2 = [1.82e-19, 2.11e-19, 2.4e-19, 2.69e-19, 2.99e-19, 3.28e-19, 3.57e-19, 3.86e-19, 4.15e-19, 4.44e-19, 4.74e-19, 5.03e-19]\n", "energies_3 = [5.17e-19, 5.45e-19, 5.74e-19, 6.02e-19, 6.30e-19, 6.58e-19, 6.86e-19, 7.14e-19, 7.43e-19, 7.71e-19, 7.99e-19, 8.27e-19]\n", @@ -447,28 +412,18 @@ " print(tuple)\n", " for item in tuple:\n", " file.write(f\"{item},\")\n", - " file.write(\"\\n\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ + " file.write(\"\\n\")\n", + "```\n", + "\n", "At the moment, this isn't particularly quicker than range(), or the first examples using zip(). But what if you had 100 lists of data you want to write to a file? You don't want to write ``zip(energies_1,energies_2,energies_3,...)`` all the way to 100! This is where a powerful tool called the unpacking operator ``*`` comes in handy. \n", "\n", "The unpacking operator literally 'unpacks' objects from inside other objects. For example, a list ``list_0 = [1,2,3,4]`` which has been acted on by the unpacking operator ``*list_0``, has its contents unpacked and turned into individual objects, in this case a group of integers ``1,2,3,4``. A nested list ``n_list = [[1,2],[5,6],[8,9]]`` when unpacked will just become three lists: ``[1,2],[5,6],[8,9]``.\n", "\n", "In the context of tuples and zip(), this means we could have a list containing our lists of data, e.g. ``all_energies = [energies_1, energies_2, energies_3]``, and inside our zip() function unpack it into separate lists like so: ``for tuple in zip(*all_energies):``\n", "\n", - "An example is below." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "An example is below.\n", + "\n", + "```Python\n", "energies_1 = [1.01e-19, 1.43e-19, 1.85e-19, 2.28e-19, 2.7e-19, 3.13e-19, 3.55e-19, 3.98e-19, 4.4e-19, 4.83e-19, 5.25e-19, 5.68e-19]\n", "energies_2 = [1.82e-19, 2.11e-19, 2.4e-19, 2.69e-19, 2.99e-19, 3.28e-19, 3.57e-19, 3.86e-19, 4.15e-19, 4.44e-19, 4.74e-19, 5.03e-19]\n", "energies_3 = [5.17e-19, 5.45e-19, 5.74e-19, 6.02e-19, 6.30e-19, 6.58e-19, 6.86e-19, 7.14e-19, 7.43e-19, 7.71e-19, 7.99e-19, 8.27e-19]\n", @@ -480,40 +435,26 @@ " print(energy_tuple)\n", " for item in energy_tuple:\n", " file.write(f\"{item},\")\n", - " file.write(\"\\n\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ + " file.write(\"\\n\")\n", + "```\n", + "\n", "In this case, we have still had to define the list manually, which is annoying. However, if you are reading data from a file, you can choose to store it in any way you want - you can store it straight into a nested list! Go back and look at the reading files lesson for examples where we pull data straight into a nested list!\n", "\n", - "Another common instance of using the unpacking operator is when you want to feed many items into an arbitrary argument of a function!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Using tab" + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ + "
\n", + "Using tab\n", + "\n", "Just like with commas as shown above, you can separate items using tab. The special character for this is ``\\t``.\n", "\n", - "In this example, we opened and closed the file manually. We have also used ``range()``. Run the code and have a look at the file ``spectrum.txt``. Notice that on either side of the tab there is an additional space. This is because there is a space on either side of the special symbol ``\\t``. If you want a specific format, you need to watch out when writing to your file!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "In this example, we opened and closed the file manually. We have also used ``range()``. Run the code and have a look at the file ``spectrum.txt``. Notice that on either side of the tab there is an additional space. This is because there is a space on either side of the special symbol ``\\t``. If you want a specific format, you need to watch out when writing to your file!\n", + "\n", + "```Python\n", "file = open('spectrum.txt', 'w')\n", "\n", "wavelength = [240, 250, 260, 270, 280, 290]\n", @@ -522,29 +463,22 @@ "for i in range(len(wavelength)):\n", " file.write(f\"{wavelength[i]} \\t {absorbance[i]}\\n\")\n", "\n", - "file.close()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Using other strings as delimiters" + "file.close()\n", + "```\n", + "\n", + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "So far, we have used pretty standard delimiters that make sense to us intuitively, such as commas, spaces, tabs, or semicolons. But this does not have to be the case. You can use anything as a delimiter. You could use a certain word, a combination of letters and numbers, or other symbols. In the example below the string \"&#&#\" has been used as a delimiter. Although it looks strange, you could still read this file just as easily as using a tab, space, or comma, by writing ``.split(\"&#&#\")``." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "
\n", + "Using other delimiters\n", + "\n", + "So far, we have used pretty standard delimiters that make sense to us intuitively, such as commas, spaces, tabs, or semicolons. But this does not have to be the case. You can use anything as a delimiter. You could use a certain word, a combination of letters and numbers, or other symbols. In the example below the string \"&#&#\" has been used as a delimiter. Although it looks strange, you could still read this file just as easily as using a tab, space, or comma, by writing ``.split(\"&#&#\")``.\n", + "\n", + "```Python\n", "file = open('spectrum.txt', 'w')\n", "\n", "wavelength = [240, 250, 260, 270, 280, 290]\n", @@ -553,53 +487,35 @@ "for i in range(len(wavelength)):\n", " file.write(f\"{wavelength[i]} &#&# {absorbance[i]}\\n\")\n", "\n", - "file.close()" + "file.close()\n", + "```\n", + "\n", + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
Exercise: Write multiple lists to a file using tab as a delimiter.\n", - "\n", - "Using a ``with`` statement and f strings, write the lists given below to a text file, using tab as a delimiter. On each line of the text file, write an atom and its associated mass, separated using tab as a delimiter. Include a heading for each column. \n", - "\n", - "\n", - "atoms = ['C', 'O', 'H', 'N', 'Cl', 'Na', 'Fe', 'P', 'S', 'K', 'Mg', 'Ca', 'Zn', 'F']
\n", - "masses = [12.01, 16.00, 1.01, 14.01, 35.45, 22.99, 55.85, 30.97, 32.07, 39.10, 24.31, 40.08, 65.38, 18.99]
\n", + "
\n", + "
Exercise: Read, transform, write \n", + "
\n", + "You have 3 columns of random background data in the file \"measurements_2.csv\". After calibrating your instrument, you have realised that every data point needs to be increased by 4.35. Write a piece of code that reads the file, adds 4.35 to every item, and writes the new data into a new CSV file. Use ``zip()`` and the unpacking operator.\n", "\n", - "
\n", + "Hint: When tackling an open-ended question like this, break the problem into chunks and do not get overwhelmed by the overall problem. Start with reading the file and storing the data, remembering that if we want to use the unpacking operator later on, we want to store the data in a nested list. \n", "\n", - "
Click here to view answer\n", + "Once you have written your code, think about how you might want to adjust this code later to take many more (even hundreds or thousands) of columns of data.\n", "\n", - "```Python\n", - "atoms = ['C', 'O', 'H', 'N', 'Cl', 'Na', 'Fe', 'P', 'S', 'K', 'Mg', 'Ca', 'Zn', 'F']\n", - "masses = [12.01, 16.00, 1.01, 14.01, 35.45, 22.99, 55.85, 30.97, 32.07, 39.10, 24.31, 40.08, 65.38, 18.99]\n", "\n", - "with open(\"data_record.txt\", \"w\") as file:\n", - " file.write(\"atoms\\tmasses\\n\")\n", - " for index in range(len(atoms)):\n", - " file.write(f\"{atoms[index]}\\t{masses[index]}\\n\")\n", - "```\n", - "\n", - "
" + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
Exercise: Read, transform, write\n", - "\n", - "You have 3 columns of random background data in the file \"measurements_2.csv\". After calibrating your instrument, you have realised that every data point needs to be increased by 4.35. Write a piece of code that reads the file, adds 4.35 to every item, and writes the new data into a new CSV file. Use ``zip()`` and the unpacking operator.\n", - "\n", - "Hint: When tackling an open-ended question like this, break the problem into chunks and do not get overwhelmed by the overall problem. Start with reading the file and storing the data, remembering that if we want to use the unpacking operator later on, we want to store the data in a nested list. \n", - "\n", - "Once you have written your code, think about how you might want to adjust this code later to take many more (even hundreds or thousands) of columns of data.\n", - "\n", - "
\n", - "\n", - "
Click here to view answer\n", + "
\n", + " Click to view answer\n", "\n", "This is one way of solving this problem. If you have used another way and it works, that's great!\n", "\n", @@ -636,8 +552,7 @@ "```\n", "\n", "If I then wanted to do the same thing, but on a file that has 80 columns of data, all I need to change is the line ``for i in range(3):`` in the first section, and replace ``3`` with ``80``. Check it works for yourself by changing it to ``2``. \n", - "\n", - "
" + "

" ] }, { @@ -685,14 +600,14 @@ "id": "aVs6rJBuJLiw" }, "source": [ - "## Practice" + "## Further Practice" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Practice 1.1\n", + "### Question 1\n", "Three moles of an ideal gas are contained within a frictionless piston at 298.15 K. Use Python to calculate the volume of the gas at the following four different pressures:
\n", "1.00 kPa
\n", "10.00 kPa
\n", @@ -740,7 +655,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Practice 1.2\n", + "### Question 2\n", "\n", "Add an additional four values of pressure and the associated volume. Copy and adapt your above script to append the following values of pressure and associated volume to the end of your file.\n", "\n", @@ -790,7 +705,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Practice 2\n", + "### Question 3\n", "\n", "We have the coordinates of two hydrogen atoms in an XYZ file called \"hydrogen_atoms.xy\". Translate these coordinates +10 Angstroms in the x direction, -5 Angstroms in the y direction, and +1 Angstrom in the z direction. Then, create a new XYZ file to store the translated coordinates. Make sure it is stored in an XYZ format!\n", "\n", @@ -864,19 +779,19 @@ "\n", "For step 2, we have written code in the past to convert items in a list from J to eV. We can repurpose this to work for many lists.\n", "\n", - "For step 3, we have written code to append lists to a CSV file before. How can we repurpose this to take lists of different lengths? How can we repurpose this to take an arbitrary number of lists? (Hint: go to the functions lesson and check out arbitrary arguments)" + "For step 3, we have written code to append lists to a CSV file before. How can we repurpose this to take lists of different lengths? How can we repurpose this to take an arbitrary number of lists?" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Take data, transform it, write to a CSV file\n", "\n", "# Read a certain number of columns and return the data in a nested list\n", - "def read_file(data_file, *columns):\n", + "def read_file(data_file, columns):\n", " \"\"\"\n", " Read a file and output any of the columns\n", " \"\"\"\n", @@ -900,7 +815,7 @@ " data.append(temp_list)\n", " return data\n", "\n", - "def J_to_eV(*data):\n", + "def J_to_eV(data):\n", " \"\"\" \n", " Convert list values in J to eV.\n", "\n", @@ -921,7 +836,7 @@ " final_list.append(temp_list)\n", " return final_list\n", "\n", - "def CSV_data_write(file_name, *lists):\n", + "def CSV_data_write(file_name, lists):\n", " \"\"\"\n", " Create a CSV file of data with an arbitrary number of columns of arbitrary length.\n", "\n", @@ -964,13 +879,13 @@ " columns.append(i)\n", "\n", "# take the data from the CSV file and store as a list\n", - "J_data = read_file(\"energy_data_large.csv\", *columns)\n", + "J_data = read_file(\"./practice_files/energy_data_large.csv\", columns)\n", "\n", "# Convert to eV\n", - "eV_data = J_to_eV(*J_data)\n", + "eV_data = J_to_eV(J_data)\n", "\n", "# Store back into a CSV file\n", - "CSV_data_write(\"data_record.csv\", *eV_data)" + "CSV_data_write(\"data_record.csv\", eV_data)" ] }, { @@ -981,7 +896,8 @@ "source": [ "## Learning Outcomes\n", "\n", - "FINISH" + "- Write to a file\n", + "- Add structure to a file" ] }, { @@ -991,6 +907,13 @@ "## Summary" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- " + ] + }, { "cell_type": "markdown", "metadata": {}, diff --git a/lessons/loops_functions/For_Loop_Lesson.ipynb b/lessons/loops_functions/For_Loop_Lesson.ipynb index 989dffc..72ff864 100644 --- a/lessons/loops_functions/For_Loop_Lesson.ipynb +++ b/lessons/loops_functions/For_Loop_Lesson.ipynb @@ -72,12 +72,12 @@ "The cell above prints three stings despite having only used a single `print()` statement. Let's look at this closer.\n", "\n", "We begin by defining a list of strings:\n", - ">```python\n", - ">molecules = [\"H2\", \"H2O\", \"CH4\"]\n", + "\n", + "`molecules = [\"H2\", \"H2O\", \"CH4\"]`\n", "\n", "We start a loop with the line:\n", - ">```python\n", - ">for mol in molecules:\n", + "\n", + "`for mol in molecules:`\n", "\n", "- `for` indicates that we will begin a loop.\n", "- `mol` is a new variable we are defining, describing the items within the list of molecules.\n", @@ -85,8 +85,9 @@ "- `:` signals the beginning of the loop.\n", "\n", "We print the contents of the `mol` variable to the screen. \n", - ">```Python\n", - ">print(mol) \n", + "\n", + "`print(mol)`\n", + "\n", "While we are within this loop, the variable `mol` will adopt the values of each element of the list `molecules` in sequence, changing at every loop. This is why `print(mol)` is effectively becoming `print(\"H2\")`, `print(\"H2O\")`, and `print(\"CH4\")` one after another.\n", "\n", "When the code is no longer indented, the loop is over. You can write Python code of any length inside a `for` loop as long as you respect its indentation. \n", @@ -899,7 +900,7 @@ "\n", "Run the two sets of code below and compare them.\n", "\n", - "### ``continue``\n", + "#### ``continue``\n", ">```Python\n", ">molecs = [\"H2O\", \"HCN\", \"CO2\", \"NH3\", \"CH3\"]\n", ">\n", @@ -912,7 +913,7 @@ "\n", "
\n", "\n", - "### ``break``\n", + "#### ``break``\n", ">```Python\n", ">molecs = [\"H2O\", \"HCN\", \"CO2\", \"NH3\", \"CH3\"]\n", ">\n", diff --git a/lessons/loops_functions/functions_and_scope.ipynb b/lessons/loops_functions/functions_and_scope.ipynb index 7159e33..66685f2 100644 --- a/lessons/loops_functions/functions_and_scope.ipynb +++ b/lessons/loops_functions/functions_and_scope.ipynb @@ -339,17 +339,20 @@ }, { "cell_type": "markdown", - "id": "63439068", + "id": "f2b126d3", "metadata": {}, "source": [ - "#### Return multiple statements" + "So far, all the functions we have seen have only one `return` statement, in which only one variable is returned. But not only is it possible to return multiple variables, it is also possible to use multiple `return` statements within the function. " ] }, { "cell_type": "markdown", - "id": "198bb5fb", + "id": "3a226cf5", "metadata": {}, "source": [ + "
\n", + "Returning multiple outputs\n", + "\n", "So far, our functions have only returned one variable. However, it is possible to return multiple values. \n", "\n", "This is a function which returns both the maximum and the mininum of a list of numbers:\n", @@ -368,10 +371,10 @@ ">print(max_mass)\n", "\n", "This returns:\n", - "```\n", - "1.008\n", - "14.007\n", - "```\n", + "
\n", + "1.008
\n", + "14.007
\n", + "
\n", "\n", "Note the following:\n", "- The two variables we want from the function are both on the ``return`` line, separated by a comma.\n", @@ -386,22 +389,19 @@ "- If you only want one of the returned variables, you can put a double underscore ``__`` to indicate that you will not retrieve that answer: ``min_mass, __ = minmax(masses)``. \n", " The function is 'throwing away' the second value. This is useful if you want to test or use only one aspect of the function, or if one of the returned variables takes up a lot of storage space, making your program slow.\n", "\n", - "But that's not all! Not only can a function return more than one statement, it can also have more than one return statement. " - ] - }, - { - "cell_type": "markdown", - "id": "7300a93d", - "metadata": {}, - "source": [ - "#### Multiple ``return`` statements" + "But that's not all! Not only can a function return more than one statement, it can also have more than one return statement. \n", + "\n", + "

" ] }, { "cell_type": "markdown", - "id": "c7ae994f", + "id": "1893bde5", "metadata": {}, "source": [ + "
\n", + "Using multiple return statements\n", + "\n", "So far, all our functions have had one ``return`` statement, right at the end, but this is not a requirement. A function can have a return statement anywhere, and it can have more than one. This is usually encountered when functions contain if statements, where depending on whether the conditions are met, different sections of the function may execute. \n", "\n", "The below function checks if a given elemental symbool is a noble gas or not using [Boolean logic](../variables/Comparisons.ipynb). There are three different possible return values in the above function, depending on the input.\n", @@ -422,15 +422,9 @@ "\n", "The last statement is ``else:``. Now that we have eliminated every other option, the inputted symbol cannot be a noble gas. \n", "\n", - "However, it is important to recognise limitations. This code would not flag the first ``if`` statement for strings with integers ``\"10\"``, empty strings ``\"\"``, or made-up symbols ``\"TM\"``. You could fix this by adjusting the comparative statement to exclude strings of length 0, and add an 'elif' statement checking that the given symbol is within a list containing all the symbols of the periodic table. It is also quite common to store the periodic table in a dictionary, where the key:value pairs are element_name:element_mass. " - ] - }, - { - "cell_type": "markdown", - "id": "635d7e31", - "metadata": {}, - "source": [ - "#### Practice: Return statements" + "However, it is important to recognise limitations. This code would not flag the first ``if`` statement for strings with integers ``\"10\"``, empty strings ``\"\"``, or made-up symbols ``\"TM\"``. You could fix this by adjusting the comparative statement to exclude strings of length 0, and add an 'elif' statement checking that the given symbol is within a list containing all the symbols of the periodic table. It is also quite common to store the periodic table in a dictionary, where the key:value pairs are element_name:element_mass. \n", + "\n", + "

" ] }, { @@ -438,15 +432,26 @@ "id": "1961efb0", "metadata": {}, "source": [ - "
Practice Question \n", - "\n", + "
\n", + "
Exercise: Returning two values \n", + "
\n", "From a list of wavelengths, return the energy in J and the energy in eV in separate lists.\n", "\n", "$ E = \\frac{hc}{\\lambda} $\n", "\n", "Remember: To convert from J to eV you must divide by 1.602 $\\times$ 10-19.\n", "\n", - "
Click here to view an answer \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "f22eb8bd", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", ">```Python\n", ">def energy_calc(wavelengths):\n", @@ -467,8 +472,7 @@ ">print(f\"The energies in J are: {energy_light_J}\")\n", ">print(f\"The energies in eV are: {energy_light_eV}\")\n", "\n", - "
\n", - "
" + "
" ] }, { @@ -510,17 +514,11 @@ }, { "cell_type": "markdown", - "id": "20fc9784", - "metadata": {}, - "source": [ - "#### Positional arguments" - ] - }, - { - "cell_type": "markdown", - "id": "33506f36", + "id": "5ff6d78c", "metadata": {}, "source": [ + "
\n", + "Positional Arguments\n", "\n", "But be careful! The arguments you see above are called positional arguments, ``arg``, and the order in which you list them when you call your function matters! \n", "\n", @@ -532,22 +530,20 @@ "\n", "It will result in the output 121.72837837837837 mols of aspirin. Not the right answer!\n", "\n", - "Positional arguments are passed into the function in the order they are listed when defining the function (in this case, ``mass`` first, then ``Mr``). If you put in 'Mr_aspirin' first, then 'mass_aspirin' when you call the function, then 'Mr_aspirin' will take the place of ``mass`` within the function, and 'mass_aspirin' will take the place of ``Mr`` within the function, resulting in the wrong division. " - ] - }, - { - "cell_type": "markdown", - "id": "11f51897", - "metadata": {}, - "source": [ - "#### Keyword arguments" + "Positional arguments are passed into the function in the order they are listed when defining the function (in this case, ``mass`` first, then ``Mr``). If you put in 'Mr_aspirin' first, then 'mass_aspirin' when you call the function, then 'Mr_aspirin' will take the place of ``mass`` within the function, and 'mass_aspirin' will take the place of ``Mr`` within the function, resulting in the wrong division. \n", + "\n", + "

" ] }, { "cell_type": "markdown", - "id": "fb0c93f4", + "id": "33506f36", "metadata": {}, "source": [ + "\n", + "
\n", + "Keyword Arguments\n", + "\n", "A keyword argument, or ``kwarg`` is the alternative to positional arguments, and do not have to be called in a specific order. Instead, they are identifiable by a specific name which can be referenced when you call your function. \n", "\n", " answer = my_function(kwarg_2 = 2006, kwarg_1 = 3.01) \n", @@ -570,22 +566,19 @@ "\n", "Even though we have put ``Mr_aspirin`` and ``mass_aspirin`` in a different order to how it is in the function, the code still outputs the correct answer: 0.008215011267887077 mols of aspirin .\n", "\n", - "Warning! If you are using both positional an keyword arguments (for example if the function takes many arguments), all the positional arguments must come before the keyword arguments." - ] - }, - { - "cell_type": "markdown", - "id": "3e5b45aa", - "metadata": {}, - "source": [ - "#### Positional-only arguments, ``, /``, and keyword-only arguments, ``* ,``" + "Warning! If you are using both positional an keyword arguments (for example if the function takes many arguments), all the positional arguments must come before the keyword arguments.\n", + "\n", + "

" ] }, { "cell_type": "markdown", - "id": "99415ebe", + "id": "fb0c93f4", "metadata": {}, "source": [ + "
\n", + "Positional-only arguments, ``, /``, and keyword-only arguments, ``* ,``\n", + "\n", "In the sections about positional and keyword arguments above, there is nothing in the function line itself that describes whether the arguments are positional or keyword. The way in which you call the function (and the order) is what defines it. In the first example, we treated both as positional, but in the second we treated both as keyword. \n", "\n", "But there is a way of forcing the function to only take positional or only take keyword arguments. If you then try to treat the input differently, it will raise an error. \n", @@ -617,68 +610,19 @@ "\n", "We will get the correct output.\n", "\n", - "Be aware: you can only use ``, /`` and ``*,`` once each in each function argument line. " - ] - }, - { - "cell_type": "markdown", - "id": "e9f64452", - "metadata": {}, - "source": [ - "#### Practice using positional and keyword arguments" - ] - }, - { - "cell_type": "markdown", - "id": "fdb290c9", - "metadata": {}, - "source": [ - "
Practice \n", - "\n", - "The cosine rule allows you to find the length of one side of a triangle, c, when you know the lengths of the other two sides, a and b, and one angle, $\\theta$. \n", - "\n", - "$ c = \\sqrt{a^2 + b^2 - 2ab cos(\\theta)} $\n", - "\n", - "Write a function which will output the length of the final side of a triangle in cm, taking a positional argument of 'side_a', a positional-only argument of 'side_b', and a keyword-only argument of 'angle'. \n", - "\n", - "Test your program works by using side_a = 3 cm, side_b = 4 cm, and the known angle = 15°, which should result in side_c = 1.35 cm.\n", - "\n", - " Hint! Remember that you need to import the module ``math`` to use the function ``cos()``. Also consider the units in which the function ``cos()`` works.\n", - "\n", - "
Click to view answer \n", - "\n", - "Here is a potential answer. \n", - "\n", - ">```Python\n", - ">import math\n", - ">\n", - ">def triangle_side(side_a, side_b, /, *, angle):\n", - "> angle = math.radians(angle)\n", - "> answer = side_a**2 + side_b**2 - (2 * side_a * side_b * math.cos(angle))\n", - "> answer **= 1/2\n", - "> return answer\n", - ">\n", - ">print(triangle_side(3, 4, angle = 15), \"cm\")\n", - "\n", + "Be aware: you can only use ``, /`` and ``*,`` once each in each function argument line. \n", "\n", - "Remember! When writing your code you always start by importing relevant modules/libraries, then define all your functions, then write the rest of your code. \n", - "\n", - "
" - ] - }, - { - "cell_type": "markdown", - "id": "f7bbd81c", - "metadata": {}, - "source": [ - "#### Default/Optional arguments" + "

" ] }, { "cell_type": "markdown", - "id": "71169a49", + "id": "43dad2f7", "metadata": {}, "source": [ + "
\n", + "Default/Optional Arguments\n", + "\n", "Default arguments are keyword arguments whose values are assigned within the function. They are often also referred to as optional arguments. You set it by adding ``= value`` to the end of the argument in your function. This means that even if your function takes two arguments, if one is a default argument, you only need to call one, the other will take the default value, and you won't receive an error.\n", "\n", "``def my_function(date, year=2000):``\n", @@ -712,16 +656,67 @@ "\n", "Here, we are expecting that someone might forget the argument 'Mr', so we have added the optional argument 'None' to ensure we do not get errors down the line. You probably will not have much use of None as a beginner.\n", "\n", - " Warning! When using positional, keyword, and default arguments, they must be defined in a strict order within your function. This is: positional arguments first, then keyword arguments, and then all your default arguments at the end. When you call your function, you first specify your positional arguments, then your keyword arguments, and then any default arguments you wish to change. " + " Warning! When using positional, keyword, and default arguments, they must be defined in a strict order within your function. This is: positional arguments first, then keyword arguments, and then all your default arguments at the end. When you call your function, you first specify your positional arguments, then your keyword arguments, and then any default arguments you wish to change. \n", + "\n", + "

" + ] + }, + { + "cell_type": "markdown", + "id": "fdb290c9", + "metadata": {}, + "source": [ + "
\n", + "
Exercise: Using positional and keyword arguments \n", + "
\n", + "The cosine rule allows you to find the length of one side of a triangle, c, when you know the lengths of the other two sides, a and b, and one angle, $\\theta$. \n", + "\n", + "$ c = \\sqrt{a^2 + b^2 - 2ab cos(\\theta)} $\n", + "\n", + "Write a function which will output the length of the final side of a triangle in cm, taking a positional argument of 'side_a', a positional-only argument of 'side_b', and a keyword-only argument of 'angle'. \n", + "\n", + "Test your program works by using side_a = 3 cm, side_b = 4 cm, and the known angle = 15°, which should result in side_c = 1.35 cm.\n", + "\n", + " Hint! Remember that you need to import the module ``math`` to use the function ``cos()``. Also consider the units in which the function ``cos()`` works.\n", + "\n", + "\n", + "
" ] }, { "cell_type": "markdown", - "id": "c24c926d", + "id": "2dc6e4a2", "metadata": {}, "source": [ - "
Practice \n", + "
\n", + " Click to view answer\n", + "\n", + "Here is a potential answer. \n", + "\n", + ">```Python\n", + ">import math\n", + ">\n", + ">def triangle_side(side_a, side_b, /, *, angle):\n", + "> angle = math.radians(angle)\n", + "> answer = side_a**2 + side_b**2 - (2 * side_a * side_b * math.cos(angle))\n", + "> answer **= 1/2\n", + "> return answer\n", + ">\n", + ">print(triangle_side(3, 4, angle = 15), \"cm\")\n", + "\n", + "Remember! When writing your code you always start by importing relevant modules/libraries, then define all your functions, then write the rest of your code. \n", "\n", + "

" + ] + }, + { + "cell_type": "markdown", + "id": "5739b8a2", + "metadata": {}, + "source": [ + "
\n", + "
Exercise: Using a default argument \n", + "
\n", "Write a function which will output an atomic velocity from its mass and temperature. Set the default temperature to be 20°C. Use the relationship: \n", "\n", "$v = \\sqrt{\\frac{3k_bT}{m}} $\n", @@ -730,7 +725,17 @@ "\n", "Find the velocity for an N2 molecule of mass 4.6 $\\times$ 10-26 g.\n", "\n", - "
Click here to view the answer \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "c0ec0856", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", ">```Python\n", ">def molecule_velocity(mass, temperature=20):\n", @@ -745,24 +750,34 @@ "\n", "The correct answer should be ``513.52 ms-1``\n", "\n", - "
\n", - "
" + "
" ] }, { "cell_type": "markdown", - "id": "6157558d", + "id": "0ab4a76f", "metadata": {}, "source": [ - "#### Arbitrary positional arguments: ``*args``" + "### More advanced arguments" ] }, { "cell_type": "markdown", - "id": "147d2fcd", + "id": "e5639ed7", + "metadata": {}, + "source": [ + "There are some kinds of function arguments that are more complex, and less often used. These include arbitrary arguments. " + ] + }, + { + "cell_type": "markdown", + "id": "60b2325b", "metadata": {}, "source": [ - "Up until this point, the number of arguments passed into the function has been fixed. Whether positional, keyword, or default, it is a fixed number of arguments. But what if we do not know how many arguments we will need in advance? We can use arbitrary positional arguments ``*args`` and arbitrary keyword arguments ``**kwargs``. Note single asterisk for positional arguments and double asterisk for keyword arguments. This is defined in the function:\n", + "
\n", + "Arbitrary positional arguments: ``*args``\n", + "\n", + "Up until this point, the number of arguments passed into the function has been fixed. Whether positional, keyword, or default, the function will only accept a certain number of arguments. But what if we do not know how many arguments we will need in advance? We can use arbitrary positional arguments ``*args`` and arbitrary keyword arguments ``**kwargs``. Note single asterisk for positional arguments and double asterisk for keyword arguments. This is defined in the function:\n", "\n", "``def my_function(*date, year=2000):``\n", "\n", @@ -787,22 +802,18 @@ "\n", "The arbitrary argument ``*masses`` represents every mass given when we call the function. Since we have multiple of these, we must iterate through the collection of masses using a ``for`` loop and calculate the number of mols for each. \n", "\n", - "The real meaning of arbitrary positional arguments is that the arbitrary number of arguments you are putting into the function are stored as a tuple, but you don't really need to know this for it to work." + "The real meaning of arbitrary positional arguments is that the arbitrary number of arguments you are putting into the function are stored as a tuple, but you don't really need to know this for it to work.\n", + "

" ] }, { "cell_type": "markdown", - "id": "915a3e6b", - "metadata": {}, - "source": [ - "#### Arbitrary keyword arguments: ``**kwargs``" - ] - }, - { - "cell_type": "markdown", - "id": "b42b4be6", + "id": "147d2fcd", "metadata": {}, "source": [ + "
\n", + "Arbitrary keyword arguments: ``**kwargs``\n", + "\n", "Arbitrary keyword arguments are a bit more complicated than ``*args``, so feel free to skip this bit if you are a complete beginner. You can always come back later.\n", "\n", "Essentially, while ``*args`` stores the input as a tuple, ``**args`` stores it as a dictionary. This means there are a number of things that need to happen. Have a look at our code, where ``**masses`` is now an arbitrary keyword argument (note that ``**kwargs`` comes after ``args``, ``kwargs``, and ``*args`` in the function).\n", @@ -829,7 +840,41 @@ "- ``masses.items()``: This takes all the ``**kwargs``, (mass1, mass2, mass3), and puts them in a list of tuples, allowing the ``for`` loop to iterate through. In this case, it becomes: ``[(\"mass1\", 1.48), (\"mass2\", 1.01), (\"mass3\", 0.62)]``. You can now see how ``name, mass`` extracts the information as each tuple is iterated through.\n", "- Once we have all this information, we can use both the name and the mass to calculate the number of mols and print a statement. \n", "\n", - "Again, ``**kwargs`` are not commonly used, especially amongst beginners, so if this is a bit too complicated, do not worry. " + "Again, ``**kwargs`` are not commonly used, especially amongst beginners, so if this is a bit too complicated, do not worry. \n", + "\n", + "

" + ] + }, + { + "cell_type": "markdown", + "id": "b42b4be6", + "metadata": {}, + "source": [ + "
\n", + "Using the unpacking operator, *, when calling a function\n", + "\n", + "The single asterisk operator `*` can be used on any iterable that Python provides (lists, tuples, strings, etc.), while the double asterisk operator, `**`, can only be used on dictionaries. When placed just before an iterable, `*` unpacks the items within the iterable to be separate objects. \n", + "\n", + "For example, in a list of integers, the unpacking operator will unpack them into separate variables. \n", + "\n", + "```Python\n", + "my_list = [2, 3, 5, 7, 11]\n", + "\n", + "print(my_list)\n", + "print(*my_list)\n", + "```\n", + "\n", + "Returns the following:\n", + "\n", + "```\n", + "A list: [2, 3, 5, 7, 11]\n", + "Separate variables: 2 3 5 7 11\n", + "```\n", + "\n", + "An example where this could be used is when a function takes lots of arguments, and you don't want to remember what each should be every time. You can store your arguments in a list, and then unpack them when calling the function. \n", + "\n", + "\n", + "

" ] }, { @@ -847,7 +892,7 @@ "id": "37cb2c58", "metadata": {}, "source": [ - "### Recursion" + "## Recursion" ] }, { @@ -878,7 +923,7 @@ "id": "6d37c923", "metadata": {}, "source": [ - "### Functions within functions" + "## Functions within functions" ] }, { @@ -905,22 +950,6 @@ "Here, instead of nesting the functions, we have used the first function within the second function. This means we could call either function to best suit our purpose. " ] }, - { - "cell_type": "markdown", - "id": "ffebb439", - "metadata": {}, - "source": [ - "### Practicing with multiple arguments, multiple returns, and keyword arguments" - ] - }, - { - "cell_type": "markdown", - "id": "1d5e1235", - "metadata": {}, - "source": [ - "#### Practice Question 1" - ] - }, { "cell_type": "markdown", "id": "bc30edc8", @@ -994,116 +1023,149 @@ }, { "cell_type": "markdown", - "id": "2c708ff5", + "id": "17325532", "metadata": {}, "source": [ - "Practice question:\n", + "
\n", + "
Exercise: Write a docstring for a given function \n", + "
\n", + "The following function takes a value of wavelength and converts it into energy in Joules and energy in eV using the equation $ E = \\frac{h \\ c}{\\lambda} $. Write a docstring for this function. \n", "\n", - "Write a docstring for the following function. TODO" - ] - }, - { - "cell_type": "markdown", - "id": "8526723d", - "metadata": {}, - "source": [ - "Turn this code into a function TO DO" + ">```Python\n", + ">def energy_calc(wavelengths):\n", + "> h = 6.626e-34 # m^2kgs^-1\n", + "> c = 3.00e8 # ms^-1\n", + "> energy_J = []\n", + "> energy_eV = []\n", + "> for value in wavelengths:\n", + "> val_J = (h * c) / (value * 1e-9) # J\n", + "> energy_J.append(val_J)\n", + "> val_eV = val_J / 1.602e-19\n", + "> energy_eV.append(val_eV)\n", + "> return energy_J, energy_eV\n", + ">\n", + ">wavelengths_light = [276, 59, 0.5, 1183, 52, 0.002, 127, 474] # nm\n", + ">\n", + ">energy_light_J, energy_light_eV = energy_calc(wavelengths_light)\n", + ">print(f\"The energies in J are: {energy_light_J}\")\n", + ">print(f\"The energies in eV are: {energy_light_eV}\")\n", + "\n", + "
\n", + "
" ] }, { "cell_type": "markdown", - "id": "4b8b293d-cc79-40e9-a83c-b8f75454aec2", + "id": "2d4ac768", "metadata": {}, "source": [ - "## Exercises\n", - "\n", - "1. Write a function that takes one argument, `num`, and returns `True` if it is even and `False` if it is odd.
\n", - " Hint: Remember that the modulo operator (%) returns the remainder of the left hand quantity when divided by the right hand quantity.\n", + "
\n", + " Click to view answer\n", "\n", - "
\n", "\n", - "2. Using your function above, write a function which takes a list of integers, and returns only the even integers of this list\n", "\n", - "
\n", - "\n", - "3. The function `add_atomic_masses()` defined earlier in the document accepted a list of atomic masses. However, molecules are more generally referred to using formulae rather than lists of masses. Write a series of functions as directed in the comments in the cell below to allow calculation of molecular masses from molecular formulae for simple organic molecules:\n", - " ```Python\n", - " # The dictionary below can be used to look up an atom's mass from its symbol. \n", - " # Don't worry about other elements for the time being, you can assume that these are the only elements that matter.\n", - " # (pretend you're an organic chemist)\n", - "\n", - " atom_masses = {\n", - " \"C\" : 12,\n", - " \"H\" : 1,\n", - " \"O\" : 16,\n", - " \"N\" : 14\n", - " }\n", - "\n", - " # Write a function to take a list of atomic symbols, and return a list of masses.\n", - " ```\n", - "\n", - "
\n", - "\n", - "4. The code below has errors. Have a look at the error message and fix the code to get the expected output. \n", - "\n", - " ```Python\n", - " def say_hello():\n", - " print(\"Hello World\")\n", - "\n", - " say_hello\n", - "\n", - " #Expected output: Hello World\n", - " ```\n", - "\n", - "
\n", + "```Python\n", + "def energy_calc(wavelengths):\n", + " \"\"\"\n", + " Caculate energy in J and eV from a wavelength.\n", "\n", - "5. In the ``for`` loop lesson, you wrote a piece of code taking IR data and only outputting the wavenumbers that were both above the value of 1500 cm-1, and had a transmittance below 95%. Take this code and turn it into a function so that it can be reused for the IR data of the newly-discovered substance pythonium, symbol 'Py'.
\n", - " Py_raw_wavenumbers = [3420.50, 2955.75, 2850.30, 1745.60, 1605.25, 1550.40, 1515.10, 1501.85, 1450.70, 1255.20, 980.55, 750.30]
\n", - " Py_raw_transmittance = [60.3, 47.7, 34.6, 96.2, 48.4, 99.1, 95.8, 51.2, 65.3, 50.0, 97.1, 27.5]
\n", + " Parameters\n", + " ------------\n", + " wavelengths : LIST\n", + " A list of wavelengths in nm\n", + " \n", + " Returns\n", + " ------------\n", + " energy_J : LIST\n", + " A list of energy values in Joules.\n", + " energy_eV : LIST\n", + " A list of energy values in electron Volts\n", + " \"\"\"\n", + " h = 6.626e-34 # m^2kgs^-1\n", + " c = 3.00e8 # ms^-1\n", + " energy_J = []\n", + " energy_eV = []\n", + " for value in wavelengths:\n", + " val_J = (h * c) / (value * 1e-9) # J\n", + " energy_J.append(val_J)\n", + " val_eV = val_J / 1.602e-19\n", + " energy_eV.append(val_eV)\n", + " return energy_J, energy_eV\n", + "```\n", "\n", - "
\n", "\n", - "6. Now adapt the code from Exercise 5 so that it parses the data when it is in the format: ``raw_data = [[wavenumber, transmittance], [wavenumber, transmittance], etc.]`` for each point.
\n", - " ``Py_raw_data = [[3420.50, 60.3], [2955.75, 47.7], [2850.30, 34.6], [1745.60, 96.2], [1605.25, 48.4], [1550.40, 99.1], [1515.10, 95.8], [1501.85, 51.2], [1450.70, 65.3], [1255.20, 50.0], [980.55, 97.1], [750.30, 27.5]]``" + "

" ] }, { "cell_type": "markdown", - "id": "203732e1-509b-436a-a2b3-fcde5b3d8ab6", + "id": "4bb9ee04", "metadata": {}, "source": [ - "## Answers" + "## Further Practice" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "e14aea88-2dd4-486a-8a11-ba69db8256c5", + "cell_type": "markdown", + "id": "8526723d", "metadata": {}, - "outputs": [], "source": [ - "# Exercise 1:\n", + "Turn this code into a function TO DO" + ] + }, + { + "cell_type": "markdown", + "id": "7d817de7", + "metadata": {}, + "source": [ + "### Question 1\n", + "\n", + "Write a function that takes one argument, `num`, and returns `True` if it is even and `False` if it is odd.
\n", + "Hint: Remember that the modulo operator (%) returns the remainder of the left hand quantity when divided by the right hand quantity." + ] + }, + { + "cell_type": "markdown", + "id": "79c80e22", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", + "```Python\n", "def is_even(num):\n", - " if num%2 == 0:\n", + " if num % 2 == 0:\n", " return True\n", " else:\n", " return False\n", "\n", "print(is_even(9))\n", "print(is_even(42))\n", - " " + "```\n", + "\n", + "\n", + "

" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "df8b0816-99f6-4f09-8636-96c14fa153e7", + "cell_type": "markdown", + "id": "0a4d37ed", "metadata": {}, - "outputs": [], "source": [ - "# Exercise 2:\n", + "### Question 2\n", "\n", + "Using your function above, write a function which takes a list of integers, and returns only the even integers of this list" + ] + }, + { + "cell_type": "markdown", + "id": "9f7a2c5a", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", + "\n", + "```Python\n", "def keep_evens(num_list):\n", " evens = []\n", " for num in num_list:\n", @@ -1112,30 +1174,43 @@ "\n", " return evens\n", "\n", - "print(keep_evens([1,2,3,4,5,6,7,8,9,10]))" + "print(keep_evens([1,2,3,4,5,6,7,8,9,10]))\n", + "```\n", + "\n", + "

" ] }, { - "cell_type": "code", - "execution_count": 1, - "id": "22ba62ed-7af1-42f9-90dd-93cf68f828ca", + "cell_type": "markdown", + "id": "b1d8e905", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[12, 1, 1, 1, 12, 1, 16]\n" - ] - } - ], "source": [ - "# Exercise 3:\n", + "### Question 3\n", + "\n", + "The function `add_atomic_masses()` defined earlier in the document accepted a list of atomic masses. However, molecules are more generally referred to using formulae rather than lists of masses. Write a series of functions as directed in the comments in the cell below to allow calculation of molecular masses from molecular formulae for simple organic molecules:\n", + "\n", + "The dictionary below can be used to look up an atom's mass from its symbol. Don't worry about other elements for the time being, you can assume that these are the only elements that matter (pretend you're an organic chemist)\n", + "\n", + "```Python\n", "\n", - "# The dictionary below can be used to look up an atom's mass from its symbol. \n", - "# Don't worry about other elements for the time being, you can assume that these are the only elements that matter.\n", - "# (pretend you're an organic chemist)\n", + "atom_masses = {\n", + " \"C\" : 12.011,\n", + " \"H\" : 1.008,\n", + " \"O\" : 15.999,\n", + " \"N\" : 14.007\n", + "}\n", + "```\n" + ] + }, + { + "cell_type": "markdown", + "id": "6f470616", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", + "```Python\n", "atom_masses = {\n", " \"C\" : 12,\n", " \"H\" : 1,\n", @@ -1143,8 +1218,6 @@ " \"N\" : 14\n", "}\n", "\n", - "# Write a function to take a list of atomic symbols, and return a list of masses.\n", - "\n", "def get_masses(atoms):\n", " mass_list = []\n", " for atom in atoms:\n", @@ -1153,41 +1226,97 @@ "\n", "print(get_masses([\"C\",\"H\",\"H\",\"H\",\"C\",\"H\",\"O\"]))\n", "\n", - "\n" + "```\n", + "\n", + "

" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "a571c19b-6970-4073-8a24-4cf10d757fb8", + "cell_type": "markdown", + "id": "ca082fe8", "metadata": {}, - "outputs": [], "source": [ - "# Ex 4 \n", + "### Question 4\n", "\n", - "# TO DO" + "\n", + "The code below has errors. Have a look at the error message and fix the code to get the expected output. \n", + "\n", + "```Python\n", + "def say_hello()\n", + "print(\"Hello World\")\n", + "\n", + "say_hello\n", + "\n", + "#Expected output: Hello World\n", + "```" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "c39ea199", + "cell_type": "markdown", + "id": "ed462f17", "metadata": {}, - "outputs": [], "source": [ - "# Exercise 5: IR data parser\n", + "
\n", + " Click to view answer\n", "\n", - "# Data retrieved from the lab for the substance pythonium.\n", - "Py_raw_wavenumbers = [3420.50, 2955.75, 2850.30, 1745.60, 1605.25, 1550.40, 1515.10, 1501.85, 1450.70, 1255.20, 980.55, 750.30] # cm-1\n", - "Py_raw_transmittance = [60.3, 47.7, 34.6, 96.2, 48.4, 99.1, 95.8, 51.2, 65.3, 50.0, 97.1, 27.5] # %\n", + "```Python\n", + "def say_hello():\n", + " print(\"Hello World\")\n", + " return\n", + "\n", + "say_hello()\n", + "```\n", + "\n", + "Corrections: \n", + "- There must be a colon after the function.\n", + "- Code belonging to the function (in this case, the phrase \"Hello World\"), must be indented by one line.\n", + "- You should include `return`. Technically, this function will work without it, but it is good practice.\n", + "- When calling the function, you must include brackets \"()\" even if the function takes no arguments. \n", + "\n", + "

" + ] + }, + { + "cell_type": "markdown", + "id": "494b0ff8", + "metadata": {}, + "source": [ + "### Question 5\n", + "\n", + "After a lab, a student has extracted IR data from a newly-discovered material, Pythonium ('Py'). The spectrum data is stored in two lists, the first is the peak wavenumbers, and the second is the corresponding transmittance. Only peaks with a wavenumber above 1500 cm-1 and with a transmittance less than 95% can be analysed by the students. Write a function that can take the two lists below and output only the useful values. You should be able to adapt any code you have written for this purpose before (hint, go back to the `for` loops lesson).\n", + "\n", + "\n", + "raw_wavenumbers_Py = [3420.50, 2955.75, 2850.30, 1745.60, 1605.25, 1550.40, 1515.10, 1501.85, 1450.70, 1255.20, 980.55, 750.30]
\n", + "raw_transmittance_Py = [60.3, 47.7, 34.6, 96.2, 48.4, 99.1, 95.8, 51.2, 65.3, 50.0, 97.1, 27.5]
" + ] + }, + { + "cell_type": "markdown", + "id": "f4126a6f", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", + "\n", + "When thinking about writing a piece of code, it is important to break it down into simple chunks that you can get your mind around. How you achieve each block is not yet in consideration. For example, with this code, you might write. \n", + "\n", + "```Python\n", + "# Zip together wavenumbers and transmittance\n", + "## Check if wavenumber > 1500\n", + "## Check if transmittance < 95\n", + "### Add to new lists\n", + "```\n", "\n", + "This is breaking the code down into its component parts. Also notice that there is no mention of a function at this point. It is normally much easier to write out the code before converting it into a function.\n", + "\n", + "```Python\n", "def parse_IR_data(wavenumbers, transmittances):\n", " \"\"\"\n", - " Take IR data of wavenumbers and corresponding transmittances. \n", + " Take IR data of wavenumbers and corresponding transmittances.\n", " Return only wavenumbers which are above 1500cm-1 and below 95% transmittance.\n", "\n", " Parameters\n", - " ----------\n", + " -----------\n", " wavenumbers : List\n", " Peak values taken from an IR spectrum\n", " Units: cm-1\n", @@ -1198,11 +1327,13 @@ " Returns\n", " -----------\n", " maj_peak_wavenumbers : List\n", - " Peak wavenumber \n", + " Peak wavenumber\n", " \"\"\"\n", + " \n", " # Empty lists of the data we want to keep\n", " maj_peak_wavenumbers = []\n", " maj_peak_transmittance = []\n", + "\n", " # Iterates through the lists\n", " for v, tr in zip(wavenumbers, transmittances):\n", " # Checks the values obey the conditional statement\n", @@ -1212,21 +1343,55 @@ " maj_peak_transmittance.append(tr)\n", " return maj_peak_wavenumbers, maj_peak_transmittance\n", "\n", + "\n", + "# Data retrieved from the lab for the substance pythonium.\n", + "raw_wavenumbers_Py = [3420.50, 2955.75, 2850.30, 1745.60, 1605.25, 1550.40, 1515.10, 1501.85, 1450.70, 1255.20, 980.55, 750.30] # cm-1\n", + "raw_transmittance_Py = [60.3, 47.7, 34.6, 96.2, 48.4, 99.1, 95.8, 51.2, 65.3, 50.0, 97.1, 27.5] # %\n", + "\n", "# Call function\n", - "Py_wavenumbers, Py_transmittance = parse_IR_data(Py_raw_wavenumbers, Py_raw_transmittance)\n", - "print(Py_wavenumbers, Py_transmittance)" + "wavenumbers_Py, transmittance_Py = parse_IR_data(raw_wavenumbers_Py, raw_transmittance_Py)\n", + "print(wavenumbers_Py, transmittance_Py)\n", + "```\n", + "\n", + "

" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "eda5ee2c", + "cell_type": "markdown", + "id": "a9711c77", "metadata": {}, - "outputs": [], "source": [ - "# Exercise 6\n", + "### Question 6\n", + "\n", + "Now adapt the code from Exercise 5 so that it parses the data when it is in the format: ``raw_data = [[wavenumber, transmittance], [wavenumber, transmittance], etc.]`` for each point.
\n", + "\n", + "``raw_data_Py = [[3420.50, 60.3], [2955.75, 47.7], [2850.30, 34.6], [1745.60, 96.2], [1605.25, 48.4], [1550.40, 99.1], [1515.10, 95.8], [1501.85, 51.2], [1450.70, 65.3], [1255.20, 50.0], [980.55, 97.1], [750.30, 27.5]]``" + ] + }, + { + "cell_type": "markdown", + "id": "7ac65955", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", + "\n", + "```Python\n", + "raw_data_Py = [\n", + " [3420.50, 60.3],\n", + " [2955.75, 47.7],\n", + " [2850.30, 34.6],\n", + " [1745.60, 96.2],\n", + " [1605.25, 48.4],\n", + " [1550.40, 99.1],\n", + " [1515.10, 95.8],\n", + " [1501.85, 51.2],\n", + " [1450.70, 65.3],\n", + " [1255.20, 50.0],\n", + " [980.55, 97.1],\n", + " [750.30, 27.5],\n", + "]\n", "\n", - "Py_raw_data = [[3420.50, 60.3], [2955.75, 47.7], [2850.30, 34.6], [1745.60, 96.2], [1605.25, 48.4], [1550.40, 99.1], [1515.10, 95.8], [1501.85, 51.2], [1450.70, 65.3], [1255.20, 50.0], [980.55, 97.1], [750.30, 27.5]]\n", "\n", "def parse_IR_data(raw_data):\n", " \"\"\"\n", @@ -1252,7 +1417,13 @@ " parsed_data.append(point)\n", " return parsed_data\n", "\n", - "parse_IR_data(Py_raw_data)" + "\n", + "parse_IR_data(raw_data_Py)\n", + "```\n", + "\n", + "This version is much shorter, and highlights the importance of considering the way in which to present your data. By placing into a nested list containing both wavenumber and transmittance, we have made the code significantly shorter.\n", + "\n", + "

" ] }, { diff --git a/lessons/solving_problems/debugging.ipynb b/lessons/solving_problems/debugging.ipynb index 54e19b2..804bbe3 100644 --- a/lessons/solving_problems/debugging.ipynb +++ b/lessons/solving_problems/debugging.ipynb @@ -9,6 +9,30 @@ "\n", "A lesson on how to go about debugging your code" ] + }, + { + "cell_type": "markdown", + "id": "f4b642ff", + "metadata": {}, + "source": [ + "## Approaches to debugging" + ] + }, + { + "cell_type": "markdown", + "id": "1304ae80", + "metadata": {}, + "source": [ + "We will highlight a few ways to find errors in your programmes.\n", + "\n", + "* Add print statements. When constructing your code add print statements to check that you are getting the values you expect at each step. If you want to see if a condition is being met, add print statements into a condition which says that it has been met.\n", + "\n", + "* If there are calculations, do simple examples by hand and then run those examples through your programme. Make sure you get the same answer.\n", + "\n", + "* When writing loops, make sure the code works for a single loop then check it works for 2 etc... build up.\n", + "\n", + "* Use an Integrated Development Environment (IDE) and similar tools. These can help track through code for errors, through break points and linting." + ] } ], "metadata": { diff --git a/lessons/solving_problems/errors.ipynb b/lessons/solving_problems/errors.ipynb index ed84572..79b6a05 100644 --- a/lessons/solving_problems/errors.ipynb +++ b/lessons/solving_problems/errors.ipynb @@ -7,13 +7,175 @@ "source": [ "# Errors\n", "\n", - "A lesson on error types." + "A lesson on errors and error types." + ] + }, + { + "cell_type": "markdown", + "id": "c8883803", + "metadata": {}, + "source": [ + "## Typos" + ] + }, + { + "cell_type": "markdown", + "id": "f2aafb76", + "metadata": {}, + "source": [ + "Perhaps the most common errors, where the user mistypes the code they are writing. Can be subtle, remember that Python is case-sensitive. So it is easy to type the wrong variable name with different capitalisation. To minimise typos, try autocompleting your words using the `` key.\n", + "\n", + "This can be controlled by having **meaningful** variable names that aren't to long\n", + "\n", + "Example\n", + "\n", + "```python\n", + "my_Value = 5\n", + "my_value = 90\n", + "\n", + "#Will do a calculation on my_Value\n", + "my_Value = my_Value * 50 + 2\n", + "#now print my result\n", + "print(my_value)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eed815ba", + "metadata": {}, + "outputs": [], + "source": [ + "my_Value = 5\n", + "my_value = 90\n", + "\n", + "#Will do a calculation on my_Value\n", + "my_Value = my_Value * 50 + 2\n", + "#now print my result\n", + "print(my_Value)" + ] + }, + { + "cell_type": "markdown", + "id": "f59bd9fb", + "metadata": {}, + "source": [ + "## Syntax errors" + ] + }, + { + "cell_type": "markdown", + "id": "52649529", + "metadata": {}, + "source": [ + "These are generally the easiest errors to spot. When the code runs the compiler tends to pick up these errors and inform the user. Try putting the following in the box below \n", + "```python\n", + " i = 0\n", + " i = 0 + \"error\"\n", + "```\n", + "You should get the following error:\n", + " \n", + " ---------------------------------------------------------------------------\n", + " TypeError Traceback (most recent call last)\n", + " in ()\n", + " 1 i = 0\n", + " ----> 2 i = 0 + \"error\"\n", + "\n", + " TypeError: unsupported operand type(s) for +: 'int' and 'str'\n", + "\n", + "Though often appearing unintelligble there is a lot of useful information contained in these reports. Perhaps most important is which line is in error (indicated by the `---->`) allowing you to at least track it down. If there is ever more than one error it is usually best to start with the first error, often correcting this corrects the others. The error in the code above is that the code is attempting to add a string (`'str'`) to an integer (`'int'`) using the `+` command (the operand). This is not allowed for `+`.\n", + "\n", + "Example\n", + "```python\n", + "my_Value = 5\n", + "my_value = 90\n", + "\n", + "#Will do a calculation on my_Value\n", + "my_Value = my_Value * 50 + 2\n", + "#now print my result\n", + "print(my_alue)\n", + "```\n" + ] + }, + { + "cell_type": "markdown", + "id": "70f6d53d", + "metadata": {}, + "source": [ + "## Logic errors" + ] + }, + { + "cell_type": "markdown", + "id": "102cbf2a", + "metadata": {}, + "source": [ + "These are the most insidious errors and by far the hardest to find. The code will be correct in terms of syntax and will work as written. However the code won't run as intended. Common places to find this type of error are in conditional statements.\n", + "\n", + "Example:\n", + "\n", + "Imagine we are checking values, if they are less than 10 we want to do something to them that is different to if they are over 10. However, what if we also want something to happen when the value is 5?\n", + "\n", + "We might right the following code\n", + "```python\n", + "import_test = 5\n", + "\n", + "if import_test <10:\n", + " print(\"Less than 10\")\n", + "elif import_test == 5:\n", + " print(\"This is really important and needs recording\")\n", + "else:\n", + " print(\"Over 10\")\n", + "```\n", + "But this will never trigger the important condition. We check if the value is less than 10, if it is no other checks are peformed. Therefore we will never check if it is 5.\n", + "\n", + "This is correct Python, we have just broken the logic!" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "18623da7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Less than 10\n", + "This is really important and needs recording\n" + ] + } + ], + "source": [ + "import_test = 5\n", + "\n", + "if import_test <10:\n", + " print(\"Less than 10\")\n", + "if import_test == 5:\n", + " print(\"This is really important and needs recording\")\n", + "else:\n", + " print(\"Over 10\")" ] } ], "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, "language_info": { - "name": "python" + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.3" } }, "nbformat": 4, diff --git a/lessons/solving_problems/style-and-comments.ipynb b/lessons/solving_problems/style-and-comments.ipynb index 15c5915..fd23b63 100644 --- a/lessons/solving_problems/style-and-comments.ipynb +++ b/lessons/solving_problems/style-and-comments.ipynb @@ -5,17 +5,188 @@ "id": "406b4e39", "metadata": {}, "source": [ - "# Style and Comments\n", + "# Style and Comments" + ] + }, + { + "cell_type": "markdown", + "id": "dddb4951", + "metadata": {}, + "source": [ + "A foolish consistency is the hobgoblin of little minds " + ] + }, + { + "cell_type": "markdown", + "id": "30dc22fb", + "metadata": {}, + "source": [ + "## Introduction" + ] + }, + { + "cell_type": "markdown", + "id": "9c8e6771", + "metadata": {}, + "source": [ + "Programming code is read much more than it is written. Whether this is you goin back to check and edit your work, a colleague working on the same piece of code as you, or your lecturer marking your work, it will be read many more times than written down. This is why making your code look good and readable is very important. It also needs to be adaptable for different purposes. \n", "\n", - "A lesson on style, comments, and PEP8 - how to make your code look good. \n", + "PEP8 is a guidance for making your Python look good, allowing people across different workplaces, industries, and countries, understand the format and layout of your code. It focussses on readability, simplicity, adaptability, and consistency." + ] + }, + { + "cell_type": "markdown", + "id": "c47ea131", + "metadata": {}, + "source": [ + "## Indentation" + ] + }, + { + "cell_type": "markdown", + "id": "142f2d04", + "metadata": {}, + "source": [ + "## Wrapping long lines" + ] + }, + { + "cell_type": "markdown", + "id": "4c01a879", + "metadata": {}, + "source": [ + "## Comments + Docstrings" + ] + }, + { + "cell_type": "markdown", + "id": "604830e3", + "metadata": {}, + "source": [ + "- Inline comments\n", + "- Comments before describing what the piece of code does\n", + "- Grammar\n", + "- Block comments\n", + "- Doctstrings\n", + "\n", + "Principles:\n", + "- Comments that contradict the code are worse than no comments\n", + "- Complete sentences. First word capitalised (unless it refers to an identifier, e.g. variable name). Space between # and start of comment. \n", + "- Clear and understandable to other speakers of the language\n", + "- Write in English unless you are certain it will never be read by speakers of any other language than its written in\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "6dea0852", + "metadata": {}, + "source": [ + "## Code order " + ] + }, + { + "cell_type": "markdown", + "id": "5c7437c5", + "metadata": {}, + "source": [ + "1. Import modules, libraries, and functions\n", + "2. Declare functions\n", + "3. Declare constants\n", + "4. Declare variables\n", + "5. Write code" + ] + }, + { + "cell_type": "markdown", + "id": "92e70919", + "metadata": {}, + "source": [ + "## Whitespace" + ] + }, + { + "cell_type": "markdown", + "id": "d058f8da", + "metadata": {}, + "source": [ + "- After commas, semicolons, colons (and NOT before)\n", + "- Before and afer operators (=, +=, etc), except with kwargs\n" + ] + }, + { + "cell_type": "markdown", + "id": "ee462892", + "metadata": {}, + "source": [ + "## Naming conventions" + ] + }, + { + "cell_type": "markdown", + "id": "de65e656", + "metadata": {}, + "source": [ + "- Snake case for variables and functino names\n", + "- Camelcase and mixed case used for other Python things\n", "\n", - "PEP8 is a description of how to make Python code look good, focussing on readability and simplicity. If your code is a mess it is very difficult to adjust it to suit different purposes, or for others to understand what is going on." + "Never use lowercase 'l' ('el'), uppercase I ('i'), or uppercase O ('oh'). In some fonts these characters are indistinguishable from each other or the numerals 1 (one) and 0 (zero).\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "0d96e9a5", + "metadata": {}, + "source": [ + "## Functions" + ] + }, + { + "cell_type": "markdown", + "id": "0c463ea8", + "metadata": {}, + "source": [ + "- Either all return statements should return something or none should. If even one return statement returns an object, any empty return statements should explicitly read `return None`." + ] + }, + { + "cell_type": "markdown", + "id": "1458111d", + "metadata": {}, + "source": [ + "## The Zen of Python" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b17358e1", + "metadata": {}, + "outputs": [], + "source": [ + "import this" ] } ], "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, "language_info": { - "name": "python" + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.3" } }, "nbformat": 4, diff --git a/lessons/solving_problems/writing_a_program.ipynb b/lessons/solving_problems/writing_a_program.ipynb index e69de29..abdb242 100644 --- a/lessons/solving_problems/writing_a_program.ipynb +++ b/lessons/solving_problems/writing_a_program.ipynb @@ -0,0 +1,146 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0a5934f7", + "metadata": {}, + "source": [ + "# Writing a Program From Scratch" + ] + }, + { + "cell_type": "markdown", + "id": "990d1dc4", + "metadata": {}, + "source": [ + "## Learning Outcomes" + ] + }, + { + "cell_type": "markdown", + "id": "dabd0fac", + "metadata": {}, + "source": [ + "- How to create a programme from scratch\n", + "- How to create the programme outline\n", + "- How to fill in the outline\n", + "- How to debug and check the code" + ] + }, + { + "cell_type": "markdown", + "id": "00f8437c", + "metadata": {}, + "source": [ + "## Writing a program to calculate the mean and standard deviation of a set of numbers" + ] + }, + { + "cell_type": "markdown", + "id": "0dd85a2b", + "metadata": {}, + "source": [ + "### Establishing basics" + ] + }, + { + "cell_type": "markdown", + "id": "aacee4f1", + "metadata": {}, + "source": [ + "Now we can pull all we have learnt and write our own program.\n", + "\n", + "We will create a program to calculate the mean and standard deviation of a set of numbers. We will therefore need the following equations:\n", + "\n", + "For the mean: $$ = \\frac{1}{N}(x_1 + x_2 + x_3 + ...+x_n)= \\frac{1}{N}\\sum(x_i) $$\n", + "\n", + "So the mean is the sum of N numbers from $x_1$ to $x_n$\n", + "\n", + "The Population has variance: $$ v(x,x)=<(x-\\bar{x})^2> = \\frac{1}{N}\\sum((x_i -\\bar{x})^2) $$\n", + "\n", + "The variance is the sum of the squared differences of N numbers from $x_1$ to $x_n$\n", + "\n", + "For the standard deviation: $$\\sigma(\\bar{x}) = \\sqrt{v(x,x)}$$\n", + "\n", + "The standard deviation is the square root of the variance.\n", + "\n", + "We will take this equations and turn them into a working programme" + ] + }, + { + "cell_type": "markdown", + "id": "94571ac5", + "metadata": {}, + "source": [ + "### First steps" + ] + }, + { + "cell_type": "markdown", + "id": "2e09d0ab", + "metadata": {}, + "source": [ + "The first thing we need are some numbers we can work with. We will use\n", + "1, 2, 3, 4, 5, 6, 7, 8, 9, 10 as our numbers. We have choosen these as they give us a simple test case.\n", + "\n", + "We can calculate the sum, the mean, variance and standard deviation of this list by hand easily. Which will allow us to test the code as we go along.\n", + "\n", + "Sum = 55,\n", + "\n", + "Mean = 5.5,\n", + "\n", + "Variance = 8.25,\n", + "\n", + "Standard deviation = 2.87" + ] + }, + { + "cell_type": "markdown", + "id": "1e14b3e3", + "metadata": {}, + "source": [ + "### Outline 1" + ] + }, + { + "cell_type": "markdown", + "id": "2c9a4316", + "metadata": {}, + "source": [ + "Our next step will be to create an initial outline of the programme and how it will work. This is our chance to make sure we have clear in our head how the programme and its algorithm will work\n", + "\n", + "First we build up the outline using comments\n", + "\n", + "```python\n", + "\n", + "# Start and import any libraries\n", + "\n", + "# Set up key variables needed later\n", + "\n", + "# Input data to work with\n", + "\n", + "# Do calculations on data\n", + "\n", + "# Output the results\n", + "\n", + "```\n", + "This is a very sparse barebones outline. But the key points are covered" + ] + }, + { + "cell_type": "markdown", + "id": "e981dc68", + "metadata": {}, + "source": [ + "ABSTRACTNING, SPLITTING INTO PARTS" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 5e5175b7b017bb5a3e9a61d895319ff680fbcec3 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Wed, 6 Aug 2025 16:41:11 +0100 Subject: [PATCH 34/94] format files and minor edits. created format guide. --- lessons/basics/basics.md | 2 +- lessons/basics/write_run_python.md | 59 ++--- lessons/files/data_record.csv | 100 +++++++++ lessons/files/reading_files.ipynb | 98 +++++---- lessons/files/spectrum.txt | 2 + lessons/files/writing_files.ipynb | 118 ++++++---- lessons/formatting_guide.md | 140 ++++++++++++ lessons/loops_functions/For_Loop_Lesson.ipynb | 181 ++++++++-------- .../PyinC_while_loops_WIP.ipynb | 14 +- .../conditional_statements.ipynb | 44 ++-- .../loops_functions/functions_and_scope.ipynb | 146 +++++++------ lessons/loops_functions/tut_import_mod.ipynb | 85 +++++++- .../solving_problems/style-and-comments.ipynb | 26 ++- lessons/variables/Comparisons.ipynb | 78 +++---- .../variables/mathematical-operators.ipynb | 201 ++++++++++-------- 15 files changed, 873 insertions(+), 421 deletions(-) create mode 100644 lessons/formatting_guide.md diff --git a/lessons/basics/basics.md b/lessons/basics/basics.md index 337056a..10c3102 100644 --- a/lessons/basics/basics.md +++ b/lessons/basics/basics.md @@ -4,6 +4,6 @@ Here, you will find how to start running Python. ## What is Python -[Python](https://en.wikipedia.org/wiki/Python_(programming_language)) is an interepted language that is widely used. +[Python](https://en.wikipedia.org/wiki/Python_(programming_language)) is a high-level interpreted language that is widely used. This means it is written in a way that is close to standard English, reducing complexity for the programmer. Due to this popularity there are many ways to install and to use it. In the following sections we will guide you on how to install and use Python \ No newline at end of file diff --git a/lessons/basics/write_run_python.md b/lessons/basics/write_run_python.md index c913898..bbdf90f 100755 --- a/lessons/basics/write_run_python.md +++ b/lessons/basics/write_run_python.md @@ -18,10 +18,10 @@ The first step is to install Python, there are various ways to do this listed be ## Installation -
- Miniforge Installation +
+ Miniforge Installation -### Install Miniforge +

Install Miniforge

Miniforge is a minimal install of the *conda* and *mamba* Python package managers. It currently has no license restrictions on its use. @@ -36,10 +36,11 @@ Once installed run the following command in a terminal to make sure Python is in

-
- Anaconda Installation -### Install Anaconda +
+ Anaconda Installation + +

Install Anaconda

Anaconda is a bundle of the *conda* package manager with a collection of programs and Python libraries. Together they can run and edit Python code. @@ -52,11 +53,9 @@ Once it is downloaded, **open the installer and follow the instructions**.

-
- Basic Python Installation - -### Install Python - +
+ Basic Python Installation +
The simplest way to install Python is by itself Go to the Python [downloads](https://www.python.org/downloads/) and download the latest version. @@ -72,26 +71,26 @@ To create one use the following command in a terminal

+ + # Writing and running your Programme As with installing Python there are many ways to write your program, from using a text editor to using an IDE. Below we give guidance on a couple of these methods. -This is not an exhaustive list +This is not an exhaustive list.

-
- Text Editor and Command line - -## Text Editor and Command line - +
+Text Editor and Command line +
Perhaps the simplest method is to write your Python code in a text editor and then run on the command line, though this lacks the power of an IDE environment to make your life easier. Open the text editor of your choice and **write the following in a new file:** ```print("Hello, world!")``` -make sure it is saved, for example as *hello_world.py*. +Make sure it is saved, for example as *hello_world.py*. Open the command line window and type the following: @@ -101,21 +100,23 @@ Open the command line window and type the following: This will run your programme and print -Hello World + Hello World to your screen

-
- Spyder IDE -## Using the Spyder IDE + +
+ Spyder IDE + +

Using the Spyder IDE

Spyder is a Python IDE that is provided with the Anaconda install, or can be installed [separately](https://www.spyder-ide.org/) -### Open Spyder +
Open Spyder
If using Anaconda **Search for the program _Anaconda Navigator_ and open it**. After a few seconds, you should see a window like this appear: @@ -154,15 +155,17 @@ Anything that the computer writes as a result of the program is called an *outpu

-
- VScode IDE -## Using the VScode IDE + +
+ VScode IDE + +

Using the VScode IDE

Vscode is a general IDE that works with a range of programming languages it is provided with the Anaconda install, or can be installed [separately](https://code.visualstudio.com/) -### Open VScode +
Open VScode
If using Anaconda **Search for the program _Anaconda Navigator_ and open it**. After a few seconds, you should see a window like this appear: @@ -175,7 +178,7 @@ This will open window that should look this: ![Window separated into two panes and with a side ribbon with many options.](images/code_clean.png) -### Write a Python program +
Write a Python program
Click on ```New File...``` to create a new file. Type the file name ```hello_world.py``` into the input box that appears. diff --git a/lessons/files/data_record.csv b/lessons/files/data_record.csv index b1e81b8..22b9631 100644 --- a/lessons/files/data_record.csv +++ b/lessons/files/data_record.csv @@ -198,3 +198,103 @@ ,,,,,,,,,,,,,3.15230961298377,,,,,,3.7515605493133584,6.741573033707866,,5.324594257178527,,,,,3.0836454431960054,,,,,,,,,,9.176029962546817,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.288389513108614,5.380774032459426,6.067415730337078,3.9762796504369535,8.614232209737828,,,,,,,,,6.235955056179775,,8.11485642946317,6.167290886392011,,,,,,,3.077403245942572,,,7.553058676654182,,,,,,,,,,,,,6.429463171036204, ,,,,,,,,,,,,,,,,,,,,6.741573033707866,,,,,,,,,,,,,,,,,9.176029962546817,,,,,,,,,,,,,,,,,,,,,,,,5.399500624219725,6.098626716604246,,8.67665418227216,,,,,,,,,6.242197253433209,,8.11485642946317,6.192259675405743,,,,,,,3.102372034956305,,,7.615480649188515,,,,,,,,,,,,,6.429463171036204, ,,,,,,,,,,,,,,,,,,,,6.803995006242197,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5.424469413233458,,,,,,,,,,,,6.30461922596754,,,6.210986267166042,,,,,,,3.1210986267166043,,,7.615480649188515,,,,,,,,,,,,,, +3.651685393258427,5.074906367041199,2.1161048689138577,5.305867665418227,3.589263420724095,3.7265917602996255,0.6554307116104868,3.3021223470661676,0.9051186017478152,2.908863920099875,3.6641697877652937,1.223470661672909,0.35268414481897625,0.24968789013732834,1.647940074906367,5.855181023720349,4.4818976279650435,2.7590511860174782,1.9600499375780276,1.6541822721598003,3.8951310861423223,5.224719101123595,2.9712858926342074,5.474406991260924,4.800249687890138,0.9488139825218477,0.6173533083645443,0.6616729088639202,1.7602996254681649,4.057428214731585,0.24781523096129837,0.8926342072409489,5.099875156054932,4.001248439450687,1.317103620474407,2.5842696629213484,0.717852684144819,6.179775280898876,4.313358302122348,0.7116104868913858,0.6928838951310862,4.956304619225968,3.8077403245942576,1.2359550561797754,0.7365792759051186,1.079900124843945,5.724094881398252,2.702871410736579,1.0923845193508115,4.444444444444445,2.9837702871410734,3.183520599250936,4.132334581772784,5.81772784019975,1.797752808988764,3.6267166042446943,3.9076154806491883,4.875156054931336,6.029962546816479,3.2397003745318353,2.4032459425717856,3.3645443196004994,2.9837702871410734,1.8102372034956304,5.6491885143570535,3.5830212234706615,2.446941323345818,5.855181023720349,1.8164794007490637,3.3957553058676653,3.6766541822721597,3.957553058676654,5.705368289637952,3.595505617977528,5.593008739076155,6.104868913857677,4.138576779026217,2.303370786516854,0.9550561797752809,1.2796504369538078,5.730337078651686,3.3645443196004994,2.5343320848938826,0.9800249687890138,5.930087390761548,4.1260923845193505,5.1248439450686645,1.4544319600499376,3.576779026217228,2.958801498127341,5.436953807740325,0.466916354556804,1.9101123595505618,1.8352059925093633,2.1972534332084894,5.031210986267166,0.6928838951310862,4.856429463171036,4.425717852684145,4.157303370786517, +3.682896379525593,5.1123595505617985,2.153558052434457,5.33083645443196,3.6142322097378274,3.745318352059925,0.6803995006242198,3.3270911360799,0.9363295880149812,2.933832709113608,3.682896379525593,1.2546816479400749,0.3757802746566792,0.27965043695380776,1.6729088639200997,5.880149812734083,4.51310861423221,2.790262172284644,1.9850187265917605,1.6791510611735332,3.920099875156055,5.262172284644195,2.9962546816479403,5.50561797752809,4.831460674157303,0.9737827715355806,0.6491885143570537,0.686641697877653,1.7915106117353308,4.082397003745319,0.2727840199750312,0.9300873907615481,5.1248439450686645,4.019975031210986,1.34207240948814,2.6092384519350813,0.7490636704119851,6.210986267166042,4.33832709113608,0.7303370786516854,0.717852684144819,4.975031210986267,3.8389513108614235,1.2671660424469413,0.7677902621722846,1.104868913857678,5.7553058676654185,2.7340823970037453,1.1235955056179776,4.475655430711611,3.0087390761548067,3.214731585518102,4.157303370786517,5.855181023720349,1.8164794007490637,3.651685393258427,3.9325842696629216,4.912609238451935,6.054931335830212,3.2709113607990012,2.4219725343320846,3.383270911360799,3.0149812734082393,1.8289637952559301,5.68039950062422,3.607990012484395,2.4656679151061174,5.880149812734083,1.8414481897627966,3.420724094881398,3.7078651685393256,3.9887640449438204,5.730337078651686,3.6267166042446943,5.6242197253433215,6.129837702871411,4.16354556803995,2.340823970037453,0.9800249687890138,1.3108614232209737,5.767790262172285,3.3895131086142323,2.571785268414482,0.9987515605493134,5.961298377028713,4.151061173533084,5.149812734082397,1.4856429463171037,3.6017478152309614,2.990012484394507,5.468164794007491,0.49063670411985016,1.941323345817728,1.8601747815230962,2.2347066167290888,5.068664169787765,0.7303370786516854,4.887640449438202,4.450686641697877,4.18227215980025, +3.714107365792759,5.143570536828964,2.184769038701623,5.3620474406991265,3.639200998751561,3.7702871410736583,0.7053682896379525,3.3583021223470664,0.9675405742821472,2.958801498127341,3.7078651685393256,1.2796504369538078,0.39825218476903873,0.3096129837702871,1.6978776529338326,5.9113607990012484,4.544319600499376,2.82147315855181,2.009987515605493,1.6978776529338326,3.951310861423221,5.293383270911361,3.0149812734082393,5.536828963795256,4.856429463171036,1.0049937578027466,0.6803995006242198,0.7116104868913858,1.8227215980024971,4.107365792759051,0.29712858926342073,0.9612983770287141,5.143570536828964,4.044943820224719,1.3670411985018727,2.634207240948814,0.7865168539325842,6.242197253433209,4.3632958801498125,0.7553058676654182,0.7428214731585518,5.0,3.8639200998751564,1.2983770287141074,0.7927590511860175,1.1298377028714106,5.786516853932584,2.7715355805243447,1.161048689138577,4.506866416978776,3.0399500624219726,3.245942571785269,4.188514357053683,5.892634207240949,1.8414481897627966,3.6704119850187267,3.9637952559300875,4.950062421972534,6.086142322097379,3.295880149812734,2.446941323345818,3.4019975031210987,3.046192259675406,1.8539325842696628,5.711610486891385,3.6329588014981273,2.4906367041198503,5.8988764044943816,1.8664169787765295,3.4456928838951315,3.7390761548064915,4.019975031210986,5.7553058676654185,3.651685393258427,5.655430711610487,6.1485642946317105,4.18227215980025,2.3720349563046192,1.0049937578027466,1.348314606741573,5.805243445692884,3.420724094881398,2.602996254681648,1.0237203495630463,5.992509363295881,4.176029962546816,5.174781523096129,1.5168539325842696,3.6267166042446943,3.0212234706616727,5.499375780274657,0.5149812734082396,1.9725343320848938,1.8851435705368291,2.2659176029962547,5.106117353308365,0.7615480649188515,4.918851435705368,4.475655430711611,4.207240948813983, +3.745318352059925,5.174781523096129,2.215980024968789,5.3870162297128585,3.6641697877652937,3.7952559300873907,0.7240948813982522,3.383270911360799,0.9987515605493134,2.977528089887641,3.7265917602996255,1.3108614232209737,0.4213483146067416,0.33957553058676654,1.7228464419475658,5.942571785268415,4.575530586766542,2.8464419475655434,2.034956304619226,1.7228464419475658,3.982521847690387,5.324594257178527,3.0399500624219726,5.568039950062421,4.887640449438202,1.0362047440699127,0.7053682896379525,0.7365792759051186,1.8539325842696628,4.132334581772784,0.32209737827715357,0.9987515605493134,5.168539325842697,4.069912609238452,1.3857677902621723,2.6591760299625467,0.8177278401997503,6.30461922596754,4.388264669163545,0.7740324594257179,0.7677902621722846,5.0187265917602994,3.888888888888889,1.3358302122347065,0.8239700374531835,1.161048689138577,5.81772784019975,2.8027465667915106,1.1922596754057428,4.538077403245943,3.0649188514357055,3.2833957553058677,4.213483146067416,5.930087390761548,1.8664169787765295,3.6953807740324596,3.9887640449438204,4.987515605493134,6.111111111111111,3.320848938826467,2.4656679151061174,3.4269662921348316,3.0836454431960054,1.8726591760299625,5.736579275905119,3.651685393258427,2.5093632958801497,5.9238451935081144,1.8913857677902621,3.470661672908864,3.7702871410736583,4.057428214731585,5.774032459425719,3.6766541822721597,5.686641697877653,6.167290886392011,4.200998751560549,2.4032459425717856,1.0299625468164793,1.3795255930087391,5.848938826466916,3.451935081148564,2.634207240948814,1.042446941323346,6.023720349563047,4.200998751560549,5.199750312109863,1.5480649188514357,3.651685393258427,3.0524344569288386,5.524344569288389,0.5387016229712859,2.00374531835206,1.9101123595505618,2.2971285892634206,5.149812734082397,0.7990012484394506,4.950062421972534,4.500624219725343,4.225967540574282, +3.776529338327091,5.212234706616729,2.253433208489388,5.418227215980025,3.689138576779026,3.81398252184769,0.7490636704119851,3.408239700374532,1.0237203495630463,3.0024968789013733,3.745318352059925,1.34207240948814,0.44382022471910115,0.36953807740324596,1.7415730337078652,5.97378277153558,4.606741573033708,2.8776529338327093,2.0599250936329585,1.7415730337078652,4.00749063670412,5.355805243445693,3.0649188514357055,5.599250936329588,4.918851435705368,1.0611735330836456,0.7365792759051186,0.7615480649188515,1.8851435705368291,4.157303370786517,0.3464419475655431,1.0299625468164793,5.187265917602996,4.0886392009987516,1.410736579275905,2.6779026217228465,0.8551810237203495,6.30461922596754,4.413233458177278,0.7927590511860175,0.7927590511860175,5.043695380774032,3.920099875156055,1.3670411985018727,0.8551810237203495,1.1860174781523096,5.848938826466916,2.8339575530586765,1.229712858926342,4.563046192259676,3.0961298377028714,3.3146067415730336,4.238451935081149,5.961298377028713,1.8913857677902621,3.714107365792759,4.019975031210986,5.024968789013733,6.1360799001248445,3.352059925093633,2.4843945068664173,3.4456928838951315,3.114856429463171,1.8976279650436954,5.767790262172285,3.6766541822721597,2.5343320848938826,5.942571785268415,1.916354556803995,3.495630461922597,3.801498127340824,4.0886392009987516,5.799001248439451,3.7078651685393256,5.717852684144819,6.192259675405743,4.225967540574282,2.4406991260923845,1.0549313358302121,1.4169787765293382,5.8863920099875156,3.4831460674157304,2.671660424469413,1.0674157303370786,6.054931335830212,4.225967540574282,5.224719101123595,1.5792759051186018,3.6766541822721597,3.089887640449438,5.555555555555556,0.5630461922596754,2.034956304619226,1.941323345817728,2.328339575530587,5.187265917602996,0.8302122347066168,4.975031210986267,4.531835205992509,4.250936329588015, +3.801498127340824,5.243445692883895,2.2846441947565546,5.443196004993759,3.714107365792759,3.8389513108614235,0.7740324594257179,3.4332084893882646,1.0549313358302121,3.027465667915106,3.7702871410736583,1.373283395755306,0.466916354556804,0.3995006242197253,1.766541822721598,5.998751560549313,4.637952559300874,2.908863920099875,2.084893882646692,1.766541822721598,4.038701622971286,5.3870162297128585,3.089887640449438,5.630461922596755,4.943820224719102,1.0923845193508115,0.7677902621722846,0.7865168539325842,1.916354556803995,4.18227215980025,0.3714107365792759,1.0611735330836456,5.212234706616729,4.1136079900124844,1.4294631710362047,2.702871410736579,0.8863920099875156,6.30461922596754,4.438202247191011,0.8114856429463172,0.8177278401997503,5.062421972534332,3.9450686641697876,1.3982521847690388,0.8801498127340824,1.2109862671660423,5.880149812734083,2.871410736579276,1.260923845193508,4.594257178526841,3.1210986267166043,3.352059925093633,4.263420724094882,5.998751560549313,1.916354556803995,3.732833957553059,4.051186017478152,5.062421972534332,6.161048689138577,3.3770287141073654,2.5031210986267167,3.464419475655431,3.1460674157303368,1.916354556803995,5.799001248439451,3.6953807740324596,2.5530586766541825,5.967540574282147,1.941323345817728,3.5205992509363297,3.83270911360799,4.119850187265917,5.823970037453184,3.732833957553059,5.749063670411985,6.210986267166042,4.244694132334582,2.471910112359551,1.079900124843945,1.4544319600499376,5.9238451935081144,3.5143570536828963,2.702871410736579,1.0861423220973783,6.086142322097379,4.244694132334582,5.249687890137328,1.6104868913857677,3.701622971285893,3.1210986267166043,5.586766541822722,0.5867665418227216,2.066167290886392,1.9662921348314608,2.3657927590511862,5.224719101123595,0.867665418227216,5.0062421972534334,4.556803995006242,4.275905118601748, +3.83270911360799,5.274656679151062,2.3158551810237205,5.474406991260924,3.7390761548064915,3.857677902621723,0.7927590511860175,3.4581772784019975,1.0861423220973783,3.046192259675406,3.7890137328339577,1.3982521847690388,0.4893882646691636,0.42946317103620474,1.7915106117353308,6.029962546816479,4.66916354556804,2.9400749063670415,2.1098626716604243,1.7852684144818978,4.069912609238452,5.418227215980025,3.114856429463171,5.66167290886392,4.975031210986267,1.1235955056179776,0.7990012484394506,0.8114856429463172,1.9475655430711611,4.207240948813983,0.39637952559300876,1.0986267166042447,5.230961298377029,4.132334581772784,1.4544319600499376,2.727840199750312,0.9238451935081149,6.367041198501872,4.456928838951311,0.8364544319600499,0.8426966292134832,5.087390761548065,3.970037453183521,1.4294631710362047,0.9113607990012486,1.2421972534332086,5.9113607990012484,2.902621722846442,1.2921348314606742,4.6254681647940075,3.15230961298377,3.383270911360799,4.288389513108614,6.036204744069912,1.9350811485642945,3.7578027465667914,4.0761548064918856,5.099875156054932,6.186017478152309,3.4019975031210987,2.521847690387016,3.4893882646691634,3.1772784019975036,1.941323345817728,5.830212234706617,3.7203495630461925,2.578027465667915,5.986267166042447,1.9662921348314608,3.545568039950062,3.8639200998751564,4.151061173533084,5.848938826466916,3.7578027465667914,5.7802746566791505,6.229712858926342,4.263420724094882,2.5093632958801497,1.104868913857678,1.4856429463171037,5.961298377028713,3.545568039950062,2.7340823970037453,1.1111111111111112,6.117353308364544,4.269662921348314,5.274656679151062,1.6416978776529338,3.7265917602996255,3.15230961298377,5.611735330836455,0.6104868913857677,2.097378277153558,1.9912609238451935,2.397003745318352,5.262172284644195,0.898876404494382,5.0374531835206,4.581772784019975,4.294631710362047, +3.8639200998751564,5.312109862671661,2.35330836454432,5.499375780274657,3.764044943820225,3.882646691635456,0.8177278401997503,3.4893882646691634,1.1173533083645444,3.0711610486891385,3.81398252184769,1.4294631710362047,0.5124843945068664,0.45942571785268416,1.8164794007490637,6.061173533083646,4.700374531835206,2.9712858926342074,2.128589263420724,1.8102372034956304,4.094881398252185,5.449438202247191,3.139825218476904,5.692883895131087,5.0062421972534334,1.1485642946317103,0.8302122347066168,0.8364544319600499,1.978776529338327,4.2322097378277155,0.4207240948813982,1.1298377028714106,5.2559300873907615,4.157303370786517,1.4794007490636705,2.746566791510612,0.9550561797752809,6.367041198501872,4.4818976279650435,0.8551810237203495,0.8614232209737829,5.106117353308365,3.9950062421972534,1.466916354556804,0.9425717852684146,1.2671660424469413,5.942571785268415,2.9400749063670415,1.3295880149812733,4.656679151061174,3.183520599250936,3.4144818976279647,4.31960049937578,6.067415730337078,1.9600499375780276,3.776529338327091,4.107365792759051,5.1373283395755305,6.210986267166042,3.4332084893882646,2.5405742821473156,3.508114856429463,3.2084893882646695,1.9662921348314608,5.861423220973783,3.745318352059925,2.596754057428215,6.01123595505618,1.9912609238451935,3.5705368289637955,3.8951310861423223,4.188514357053683,5.867665418227216,3.7890137328339577,5.811485642946318,6.242197253433209,4.288389513108614,2.5405742821473156,1.1298377028714106,1.523096129837703,6.004993757802747,3.576779026217228,2.7715355805243447,1.1298377028714106,6.1485642946317105,4.294631710362047,5.299625468164794,1.6729088639200997,3.7515605493133584,3.183520599250936,5.64294631710362,0.6367041198501873,2.128589263420724,2.0224719101123596,2.428214731585518,5.305867665418227,0.9363295880149812,5.068664169787765,4.606741573033708,4.31960049937578, +3.8951310861423223,5.343320848938826,2.3845193508114857,5.5305867665418225,3.7890137328339577,3.9076154806491883,0.8426966292134832,3.5143570536828963,1.1423220973782773,3.0961298377028714,3.83270911360799,1.4606741573033708,0.534956304619226,0.4893882646691636,1.8414481897627966,6.086142322097379,4.7315855181023725,3.0024968789013733,2.153558052434457,1.8289637952559301,4.1260923845193505,5.480649188514358,3.1647940074906367,5.724094881398252,5.0374531835206,1.1797752808988764,0.8614232209737829,0.8614232209737829,2.016229712858926,4.257178526841448,0.44569288389513106,1.161048689138577,5.274656679151062,4.176029962546816,1.4981273408239701,2.7715355805243447,0.9925093632958802,6.429463171036204,4.506866416978776,0.8739076154806492,0.8863920099875156,5.131086142322098,4.02621722846442,1.4981273408239701,0.9737827715355806,1.2921348314606742,5.97378277153558,2.9712858926342074,1.3607990012484397,4.681647940074906,3.2084893882646695,3.451935081148564,4.344569288389513,6.104868913857677,1.9850187265917605,3.7952559300873907,4.132334581772784,5.174781523096129,6.235955056179775,3.4581772784019975,2.5593008739076155,3.5268414481897628,3.2397003745318353,1.9850187265917605,5.892634207240949,3.764044943820225,2.6217228464419473,6.029962546816479,2.016229712858926,3.595505617977528,3.926342072409488,4.219725343320849,5.892634207240949,3.81398252184769,5.842696629213483,6.242197253433209,4.307116104868914,2.578027465667915,1.1548064918851435,1.554307116104869,6.0424469413233455,3.607990012484395,2.8027465667915106,1.1548064918851435,6.179775280898876,4.31960049937578,5.324594257178527,1.704119850187266,3.776529338327091,3.214731585518102,5.674157303370786,0.6616729088639202,2.15980024968789,2.0474406991260925,2.4656679151061174,5.343320848938826,0.9675405742821472,5.099875156054932,4.631710362047441,4.344569288389513, +3.926342072409488,5.3745318352059925,2.4157303370786516,5.555555555555556,3.81398252184769,3.926342072409488,0.8614232209737829,3.5393258426966296,1.1735330836454432,3.114856429463171,3.857677902621723,1.4918851435705367,0.5580524344569288,0.519350811485643,1.8664169787765295,6.117353308364544,4.762796504369538,3.033707865168539,2.1785268414481895,1.8476903870162298,4.157303370786517,5.511860174781523,3.1897627965043696,5.7553058676654185,5.062421972534332,1.2109862671660423,0.8863920099875156,0.8863920099875156,2.0474406991260925,4.282147315855181,0.4700374531835206,1.198501872659176,5.299625468164794,4.200998751560549,1.523096129837703,2.7965043695380776,1.0237203495630463,6.429463171036204,4.531835205992509,0.898876404494382,0.9113607990012486,5.149812734082397,4.051186017478152,1.529338327091136,0.9987515605493134,1.3233458177278403,6.004993757802747,3.0024968789013733,1.3982521847690388,4.712858926342073,3.2397003745318353,3.4831460674157304,4.369538077403246,6.142322097378277,2.009987515605493,3.8202247191011236,4.16354556803995,5.212234706616729,6.242197253433209,3.4831460674157304,2.578027465667915,3.5518102372034956,3.2709113607990012,2.009987515605493,5.9238451935081144,3.7890137328339577,2.640449438202247,6.054931335830212,2.0411985018726595,3.620474406991261,3.957553058676654,4.250936329588015,5.917602996254682,3.8451935081148565,5.8739076154806495,6.30461922596754,4.325842696629214,2.6092384519350813,1.1797752808988764,1.591760299625468,6.079900124843945,3.639200998751561,2.8339575530586765,1.1735330836454432,6.210986267166042,4.344569288389513,5.34956304619226,1.735330836454432,3.801498127340824,3.245942571785269,5.705368289637952,0.6803995006242198,2.1910112359550564,2.0724094881398254,2.4968789013732833,5.380774032459426,0.9987515605493134,5.131086142322098,4.656679151061174,4.369538077403246, +3.957553058676654,5.411985018726591,2.453183520599251,5.586766541822722,3.8389513108614235,3.951310861423221,0.8863920099875156,3.564294631710362,1.2047440699126093,3.139825218476904,3.8764044943820224,1.5168539325842696,0.5811485642946317,0.548689138576779,1.8913857677902621,6.1485642946317105,4.794007490636704,3.0649188514357055,2.203495630461923,1.8726591760299625,4.18227215980025,5.543071161048689,3.214731585518102,5.786516853932584,5.093632958801498,1.2359550561797754,0.9176029962546817,0.9113607990012486,2.0786516853932584,4.307116104868914,0.4950062421972534,1.229712858926342,5.318352059925093,4.225967540574282,1.5418227215980027,2.82147315855181,1.0611735330836456,6.491885143570538,4.556803995006242,0.9176029962546817,0.9363295880149812,5.174781523096129,4.0761548064918856,1.5605493133583022,1.0299625468164793,1.348314606741573,6.036204744069912,3.0399500624219726,1.4294631710362047,4.7440699126092385,3.2646691635455682,3.5205992509363297,4.394506866416979,6.173533083645444,2.034956304619226,3.8389513108614235,4.188514357053683,5.249687890137328,6.30461922596754,3.5143570536828963,2.596754057428215,3.5705368289637955,3.3021223470661676,2.0287141073657926,5.955056179775282,3.8077403245942576,2.66541822721598,6.073657927590512,2.0599250936329585,3.6454431960049942,3.982521847690387,4.282147315855181,5.942571785268415,3.870162297128589,5.905118601747815,6.30461922596754,4.3508114856429465,2.6466916354556806,1.2047440699126093,1.6229712858926344,6.117353308364544,3.6704119850187267,2.871410736579276,1.198501872659176,6.242197253433209,4.369538077403246,5.3745318352059925,1.766541822721598,3.826466916354557,3.2833957553058677,5.730337078651686,0.7053682896379525,2.2222222222222223,2.097378277153558,2.5280898876404496,5.424469413233458,1.0362047440699127,5.15605493133583,4.681647940074906,4.388264669163545, +3.9887640449438204,5.443196004993759,2.4843945068664173,5.611735330836455,3.8639200998751564,3.9762796504369535,0.9113607990012486,3.589263420724095,1.2359550561797754,3.1647940074906367,3.8951310861423223,1.5480649188514357,0.6036204744069913,0.5786516853932584,1.916354556803995,6.179775280898876,4.825218476903871,3.0961298377028714,2.2284644194756553,1.8913857677902621,4.213483146067416,5.574282147315855,3.233458177278402,5.81772784019975,5.1248439450686645,1.2671660424469413,0.9488139825218477,0.9363295880149812,2.1098626716604243,4.332084893882647,0.5199750312109862,1.2671660424469413,5.337078651685393,4.244694132334582,1.5667915106117354,2.84019975031211,1.0923845193508115,6.491885143570538,4.581772784019975,0.9363295880149812,0.9612983770287141,5.199750312109863,4.1011235955056184,1.5980024968789013,1.0611735330836456,1.373283395755306,6.067415730337078,3.0711610486891385,1.4606741573033708,4.775280898876405,3.295880149812734,3.5518102372034956,4.419475655430712,6.210986267166042,2.0599250936329585,3.857677902621723,4.219725343320849,5.287141073657928,6.30461922596754,3.5393258426966296,2.6217228464419473,3.589263420724095,3.3333333333333335,2.0536828963795255,5.986267166042447,3.83270911360799,2.68414481897628,6.098626716604246,2.084893882646692,3.6704119850187267,4.013732833957553,4.31960049937578,5.961298377028713,3.8951310861423223,5.936329588014981,6.30461922596754,4.369538077403246,2.6779026217228465,1.229712858926342,1.6604244694132335,6.154806491885144,3.701622971285893,2.902621722846442,1.2172284644194757,6.30461922596754,4.394506866416979,5.399500624219725,1.797752808988764,3.8514357053682895,3.3146067415730336,5.761548064918852,0.7303370786516854,2.253433208489388,2.128589263420724,2.565543071161049,5.461922596754057,1.0674157303370786,5.187265917602996,4.70661672908864,4.413233458177278, +4.019975031210986,5.474406991260924,2.521847690387016,5.64294631710362,3.888888888888889,3.9950062421972534,0.9300873907615481,3.620474406991261,1.260923845193508,3.183520599250936,3.920099875156055,1.5792759051186018,0.6242197253433208,0.6086142322097379,1.941323345817728,6.20474406991261,4.856429463171036,3.1273408239700373,2.253433208489388,1.916354556803995,4.244694132334582,5.605493133583021,3.258426966292135,5.848938826466916,5.149812734082397,1.2983770287141074,0.9800249687890138,0.9612983770287141,2.1410736579275906,4.357053682896379,0.5443196004993758,1.2983770287141074,5.3620474406991265,4.269662921348314,1.591760299625468,2.865168539325843,1.1298377028714106,6.554307116104869,4.606741573033708,0.9550561797752809,0.9862671660424469,5.218476903870163,4.132334581772784,1.6292134831460674,1.0861423220973783,1.404494382022472,6.098626716604246,3.102372034956305,1.4981273408239701,4.800249687890138,3.3270911360799,3.589263420724095,4.450686641697877,6.242197253433209,2.0786516853932584,3.882646691635456,4.244694132334582,5.324594257178527,6.367041198501872,3.564294631710362,2.640449438202247,3.6142322097378274,3.3645443196004994,2.0786516853932584,6.0174781523096135,3.857677902621723,2.7091136079900124,6.117353308364544,2.1098626716604243,3.6953807740324596,4.044943820224719,4.3508114856429465,5.986267166042447,3.926342072409488,5.967540574282147,6.367041198501872,4.388264669163545,2.715355805243446,1.2484394506866416,1.6978776529338326,6.198501872659176,3.732833957553059,2.933832709113608,1.2359550561797754,6.30461922596754,4.413233458177278,5.424469413233458,1.8227215980024971,3.8764044943820224,3.3458177278401995,5.792759051186017,0.7553058676654182,2.2846441947565546,2.153558052434457,2.596754057428215,5.499375780274657,1.104868913857678,5.218476903870163,4.737827715355805,4.438202247191011, +4.044943820224719,5.511860174781523,2.5530586766541825,5.667915106117353,3.9138576779026217,4.019975031210986,0.9550561797752809,3.6454431960049942,1.2921348314606742,3.2084893882646695,3.938826466916354,1.6042446941323347,0.6491885143570537,0.6367041198501873,1.9662921348314608,6.235955056179775,4.887640449438202,3.1585518102372037,2.278401997503121,1.9350811485642945,4.269662921348314,5.64294631710362,3.2833957553058677,5.880149812734083,5.181023720349563,1.3233458177278403,1.0112359550561798,0.9862671660424469,2.1722846441947565,4.382022471910113,0.5692883895131086,1.3295880149812733,5.380774032459426,4.288389513108614,1.6104868913857677,2.8901373283395753,1.16729088639201,6.554307116104869,4.6254681647940075,0.9800249687890138,1.0112359550561798,5.243445692883895,4.157303370786517,1.6604244694132335,1.1173533083645444,1.4294631710362047,6.129837702871411,3.139825218476904,1.529338327091136,4.831460674157303,3.352059925093633,3.620474406991261,4.475655430711611,6.30461922596754,2.1036204744069913,3.9013732833957557,4.275905118601748,5.3620474406991265,6.367041198501872,3.595505617977528,2.6591760299625467,3.6329588014981273,3.3957553058676653,2.097378277153558,6.048689138576779,3.8764044943820224,2.727840199750312,6.1360799001248445,2.134831460674157,3.7203495630461925,4.0761548064918856,4.382022471910113,6.01123595505618,3.951310861423221,5.998751560549313,6.367041198501872,4.413233458177278,2.746566791510612,1.2734082397003745,1.7290886392009988,6.235955056179775,3.764044943820225,2.9712858926342074,1.260923845193508,6.367041198501872,4.438202247191011,5.449438202247191,1.8539325842696628,3.9013732833957557,3.3770287141073654,5.81772784019975,0.7802746566791511,2.3158551810237205,2.1785268414481895,2.6279650436953808,5.536828963795256,1.136079900124844,5.249687890137328,4.762796504369538,4.463171036204744, +4.0761548064918856,5.543071161048689,2.5842696629213484,5.69912609238452,3.938826466916354,4.044943820224719,0.9800249687890138,3.6704119850187267,1.3233458177278403,3.233458177278402,3.9637952559300875,1.6354556803995006,0.6741573033707865,0.6679151061173533,1.9912609238451935,6.242197253433209,4.918851435705368,3.1897627965043696,2.303370786516854,1.9600499375780276,4.300873907615481,5.674157303370786,3.3083645443196006,5.9113607990012484,5.212234706616729,1.3545568039950062,1.0362047440699127,1.0112359550561798,2.203495630461923,4.406991260923846,0.5942571785268415,1.3670411985018727,5.405742821473158,4.313358302122348,1.6354556803995006,2.9151061173533086,1.198501872659176,6.616729088639201,4.65043695380774,0.9987515605493134,1.0299625468164793,5.262172284644195,4.18227215980025,1.6978776529338326,1.1485642946317103,1.4544319600499376,6.161048689138577,3.17103620474407,1.5605493133583022,4.8626716604244695,3.383270911360799,3.651685393258427,4.500624219725343,6.30461922596754,2.128589263420724,3.920099875156055,4.300873907615481,5.399500624219725,6.367041198501872,3.620474406991261,2.6779026217228465,3.651685393258427,3.4332084893882646,2.122347066167291,6.079900124843945,3.9013732833957557,2.752808988764045,6.161048689138577,2.15980024968789,3.745318352059925,4.107365792759051,4.413233458177278,6.036204744069912,3.9762796504369535,6.029962546816479,6.367041198501872,4.431960049937578,2.7840199750312107,1.2983770287141074,1.766541822721598,6.30461922596754,3.7952559300873907,3.0024968789013733,1.2796504369538078,6.367041198501872,4.463171036204744,5.480649188514358,1.8851435705368291,3.926342072409488,3.408239700374532,5.848938826466916,0.8052434456928839,2.3470661672908864,2.203495630461923,2.66541822721598,5.580524344569288,1.1735330836454432,5.280898876404494,4.787765293383271,4.4818976279650435, +4.107365792759051,5.574282147315855,2.6217228464419473,5.724094881398252,3.9637952559300875,4.063670411985019,0.9987515605493134,3.6953807740324596,1.3545568039950062,3.2521847690387014,3.982521847690387,1.6666666666666667,0.6928838951310862,0.6991260923845194,2.016229712858926,6.30461922596754,4.950062421972534,3.2209737827715355,2.328339575530587,1.978776529338327,4.332084893882647,5.705368289637952,3.3333333333333335,5.942571785268415,5.237203495630462,1.3857677902621723,1.0674157303370786,1.0362047440699127,2.2347066167290888,4.431960049937578,0.618601747815231,1.3982521847690388,5.424469413233458,4.332084893882647,1.6541822721598003,2.933832709113608,1.2359550561797754,6.616729088639201,4.675405742821473,1.017478152309613,1.0549313358302121,5.287141073657928,4.213483146067416,1.7290886392009988,1.1797752808988764,1.4856429463171037,6.192259675405743,3.202247191011236,1.5980024968789013,4.893882646691636,3.408239700374532,3.689138576779026,4.525593008739076,6.367041198501872,2.153558052434457,3.9450686641697876,4.332084893882647,5.436953807740325,6.429463171036204,3.6454431960049942,2.696629213483146,3.6766541822721597,3.464419475655431,2.1410736579275906,6.111111111111111,3.920099875156055,2.7715355805243447,6.179775280898876,2.184769038701623,3.7702871410736583,4.138576779026217,4.444444444444445,6.054931335830212,4.00749063670412,6.061173533083646,6.429463171036204,4.450686641697877,2.8152309612983775,1.3233458177278403,1.797752808988764,6.30461922596754,3.826466916354557,3.0399500624219726,1.3046192259675407,6.429463171036204,4.488139825218477,5.50561797752809,1.916354556803995,3.951310861423221,3.4456928838951315,5.880149812734083,0.8239700374531835,2.3782771535580522,2.2347066167290888,2.696629213483146,5.617977528089888,1.2047440699126093,5.312109862671661,4.812734082397004,4.506866416978776, +4.138576779026217,5.611735330836455,2.6529338327091136,5.7553058676654185,3.9887640449438204,4.0886392009987516,1.0237203495630463,3.7265917602996255,1.3795255930087391,3.2771535580524347,4.00749063670412,1.6978776529338326,0.717852684144819,0.7303370786516854,2.0411985018726595,6.30461922596754,4.9812734082397006,3.2521847690387014,2.35330836454432,2.00374531835206,4.357053682896379,5.736579275905119,3.3583021223470664,5.967540574282147,5.268414481897628,1.410736579275905,1.0986267166042447,1.0611735330836456,2.2659176029962547,4.456928838951311,0.6429463171036205,1.4294631710362047,5.449438202247191,4.357053682896379,1.6791510611735332,2.958801498127341,1.2671660424469413,6.679151061173534,4.700374531835206,1.042446941323346,1.079900124843945,5.305867665418227,4.238451935081149,1.7602996254681649,1.2047440699126093,1.5106117353308364,6.223470661672909,3.2397003745318353,1.6292134831460674,4.918851435705368,3.439450686641698,3.7203495630461925,4.55056179775281,6.367041198501872,2.1785268414481895,3.9637952559300875,4.3632958801498125,5.474406991260924,6.429463171036204,3.6766541822721597,2.715355805243446,3.6953807740324596,3.495630461922597,2.1660424469413235,6.1360799001248445,3.9450686641697876,2.7965043695380776,6.20474406991261,2.209737827715356,3.7952559300873907,4.169787765293384,4.4818976279650435,6.079900124843945,4.032459425717852,6.092384519350812,6.429463171036204,4.475655430711611,2.8464419475655434,1.348314606741573,1.8352059925093633,6.367041198501872,3.857677902621723,3.0711610486891385,1.3233458177278403,6.429463171036204,4.51310861423221,5.5305867665418225,1.9475655430711611,3.9762796504369535,3.4769038701622974,5.905118601747815,0.8489388264669163,2.4094881398252186,2.259675405742821,2.727840199750312,5.655430711610487,1.2359550561797754,5.337078651685393,4.837702871410737,4.531835205992509, +4.169787765293384,5.64294631710362,2.68414481897628,5.7802746566791505,4.013732833957553,4.1136079900124844,1.048689138576779,3.7515605493133584,1.410736579275905,3.3021223470661676,4.02621722846442,1.7228464419475658,0.7428214731585518,0.7553058676654182,2.066167290886392,6.367041198501872,5.012484394506866,3.2833957553058677,2.3782771535580522,2.0224719101123596,4.388264669163545,5.767790262172285,3.383270911360799,5.998751560549313,5.299625468164794,1.4419475655430714,1.1298377028714106,1.0861423220973783,2.2971285892634206,4.4818976279650435,0.6679151061173533,1.466916354556804,5.468164794007491,4.382022471910113,1.704119850187266,2.9837702871410734,1.3046192259675407,6.679151061173534,4.725343320848939,1.0611735330836456,1.104868913857678,5.33083645443196,4.263420724094882,1.7915106117353308,1.2359550561797754,1.5355805243445693,6.242197253433209,3.2709113607990012,1.6666666666666667,4.950062421972534,3.464419475655431,3.7578027465667914,4.581772784019975,6.429463171036204,2.1972534332084894,3.9887640449438204,4.388264669163545,5.511860174781523,6.491885143570538,3.701622971285893,2.7340823970037453,3.714107365792759,3.5268414481897628,2.184769038701623,6.167290886392011,3.9637952559300875,2.8152309612983775,6.223470661672909,2.2347066167290888,3.8202247191011236,4.200998751560549,4.51310861423221,6.104868913857677,4.057428214731585,6.123595505617978,6.429463171036204,4.49438202247191,2.8838951310861427,1.373283395755306,1.8726591760299625,6.367041198501872,3.888888888888889,3.102372034956305,1.348314606741573,6.491885143570538,4.538077403245943,5.555555555555556,1.978776529338327,4.001248439450687,3.508114856429463,5.936329588014981,0.8739076154806492,2.4406991260923845,2.2846441947565546,2.7590511860174782,5.69912609238452,1.2734082397003745,5.36828963795256,4.8626716604244695,4.556803995006242, +4.200998751560549,5.674157303370786,2.7215980024968793,5.811485642946318,4.038701622971286,4.132334581772784,1.0674157303370786,3.776529338327091,1.4419475655430714,3.320848938826467,4.044943820224719,1.7540574282147314,0.7615480649188515,0.7865168539325842,2.091136079900125,6.367041198501872,5.043695380774032,3.3146067415730336,2.4032459425717856,2.0474406991260925,4.419475655430712,5.799001248439451,3.408239700374532,6.029962546816479,5.324594257178527,1.4731585518102372,1.161048689138577,1.1111111111111112,2.328339575530587,4.506866416978776,0.6928838951310862,1.4981273408239701,5.493133583021224,4.400749063670412,1.7228464419475658,3.0087390761548067,1.3358302122347065,6.741573033707866,4.750312109862672,1.079900124843945,1.1298377028714106,5.34956304619226,4.288389513108614,1.8289637952559301,1.2671660424469413,1.5605493133583022,6.30461922596754,3.3083645443196006,1.6978776529338326,4.9812734082397006,3.495630461922597,3.7890137328339577,4.606741573033708,6.429463171036204,2.2222222222222223,4.00749063670412,4.419475655430712,5.549313358302123,6.491885143570538,3.7265917602996255,2.752808988764045,3.7390761548064915,3.5580524344569286,2.209737827715356,6.198501872659176,3.9887640449438204,2.84019975031211,6.242197253433209,2.259675405742821,3.8451935081148565,4.2322097378277155,4.544319600499376,6.123595505617978,4.0886392009987516,6.1485642946317105,6.491885143570538,4.519350811485642,2.9151061173533086,1.3982521847690388,1.9038701622971288,6.429463171036204,3.920099875156055,3.139825218476904,1.3670411985018727,6.491885143570538,4.563046192259676,5.580524344569288,2.009987515605493,4.02621722846442,3.5393258426966296,5.967540574282147,0.898876404494382,2.4656679151061174,2.3158551810237205,2.7965043695380776,5.736579275905119,1.3046192259675407,5.399500624219725,4.887640449438202,4.575530586766542, +4.2322097378277155,5.711610486891385,2.752808988764045,5.836454431960051,4.063670411985019,4.157303370786517,1.0923845193508115,3.801498127340824,1.4731585518102372,3.3458177278401995,4.069912609238452,1.7852684144818978,0.7865168539325842,0.8177278401997503,2.1161048689138577,6.429463171036204,5.074906367041199,3.3458177278401995,2.428214731585518,2.066167290886392,4.444444444444445,5.830212234706617,3.4332084893882646,6.061173533083646,5.355805243445693,1.4981273408239701,1.1922596754057428,1.136079900124844,2.3657927590511862,4.525593008739076,0.717852684144819,1.5355805243445693,5.511860174781523,4.425717852684145,1.7478152309612984,3.027465667915106,1.373283395755306,6.741573033707866,4.769038701622971,1.104868913857678,1.1548064918851435,5.3745318352059925,4.31960049937578,1.8601747815230962,1.2921348314606742,1.591760299625468,6.30461922596754,3.339575530586767,1.7290886392009988,5.012484394506866,3.5268414481897628,3.826466916354557,4.631710362047441,6.491885143570538,2.247191011235955,4.02621722846442,4.444444444444445,5.586766541822722,6.491885143570538,3.7578027465667914,2.7715355805243447,3.7578027465667914,3.589263420724095,2.2347066167290888,6.229712858926342,4.013732833957553,2.8589263420724094,6.242197253433209,2.2846441947565546,3.870162297128589,4.263420724094882,4.575530586766542,6.1485642946317105,4.1136079900124844,6.179775280898876,6.491885143570538,4.538077403245943,2.9525593008739075,1.4232209737827717,1.941323345817728,6.491885143570538,3.9450686641697876,3.17103620474407,1.3920099875156053,6.554307116104869,4.581772784019975,5.605493133583021,2.0411985018726595,4.057428214731585,3.5705368289637955,5.992509363295881,0.9238451935081149,2.4968789013732833,2.340823970037453,2.8277153558052435,5.774032459425719,1.34207240948814,5.430711610486892,4.912609238451935,4.600499375780275, +4.263420724094882,5.742821473158552,2.7840199750312107,5.867665418227216,4.0886392009987516,4.18227215980025,1.1173533083645444,3.826466916354557,1.4981273408239701,3.370786516853933,4.0886392009987516,1.8164794007490637,0.8114856429463172,0.8489388264669163,2.1410736579275906,6.429463171036204,5.106117353308365,3.3770287141073654,2.453183520599251,2.091136079900125,4.475655430711611,5.861423220973783,3.4581772784019975,6.092384519350812,5.3870162297128585,1.529338327091136,1.2172284644194757,1.161048689138577,2.397003745318352,4.55056179775281,0.7428214731585518,1.5667915106117354,5.5305867665418225,4.444444444444445,1.766541822721598,3.0524344569288386,1.404494382022472,6.803995006242197,4.794007490636704,1.1235955056179776,1.1735330836454432,5.393258426966292,4.344569288389513,1.8913857677902621,1.3233458177278403,1.616729088639201,6.367041198501872,3.370786516853933,1.766541822721598,5.0374531835206,3.5518102372034956,3.857677902621723,4.656679151061174,6.554307116104869,2.272159800249688,4.051186017478152,4.475655430711611,5.6242197253433215,6.554307116104869,3.7827715355805243,2.7965043695380776,3.776529338327091,3.620474406991261,2.253433208489388,6.242197253433209,4.032459425717852,2.8838951310861427,6.30461922596754,2.303370786516854,3.8951310861423223,4.294631710362047,4.612983770287141,6.173533083645444,4.138576779026217,6.210986267166042,6.491885143570538,4.556803995006242,2.9837702871410734,1.4481897627965044,1.9725343320848938,6.491885143570538,3.9762796504369535,3.202247191011236,1.410736579275905,6.554307116104869,4.606741573033708,5.630461922596755,2.0724094881398254,4.082397003745319,3.6017478152309614,6.023720349563047,0.9488139825218477,2.5280898876404496,2.3657927590511862,2.8589263420724094,5.811485642946318,1.373283395755306,5.461922596754057,4.943820224719102,4.6254681647940075, +4.288389513108614,5.774032459425719,2.82147315855181,5.892634207240949,4.1136079900124844,4.200998751560549,1.136079900124844,3.857677902621723,1.529338327091136,3.3895131086142323,4.1136079900124844,1.8414481897627966,0.8302122347066168,0.8801498127340824,2.1660424469413235,6.491885143570538,5.1373283395755305,3.408239700374532,2.471910112359551,2.1098626716604243,4.500624219725343,5.892634207240949,3.4769038701622974,6.123595505617978,5.418227215980025,1.5605493133583022,1.2484394506866416,1.1860174781523096,2.428214731585518,4.575530586766542,0.7677902621722846,1.5980024968789013,5.555555555555556,4.4694132334581775,1.7915106117353308,3.077403245942572,1.4419475655430714,6.803995006242197,4.818976279650437,1.1423220973782773,1.198501872659176,5.418227215980025,4.369538077403246,1.9225967540574282,1.3545568039950062,1.6416978776529338,6.367041198501872,3.408239700374532,1.797752808988764,5.068664169787765,3.5830212234706615,3.888888888888889,4.681647940074906,6.554307116104869,2.2971285892634206,4.069912609238452,4.500624219725343,5.66167290886392,6.554307116104869,3.8077403245942576,2.8152309612983775,3.801498127340824,3.651685393258427,2.278401997503121,6.30461922596754,4.057428214731585,2.902621722846442,6.30461922596754,2.328339575530587,3.920099875156055,4.325842696629214,4.644194756554308,6.198501872659176,4.169787765293384,6.242197253433209,6.554307116104869,4.581772784019975,3.0212234706616727,1.4731585518102372,2.009987515605493,6.554307116104869,4.00749063670412,3.2397003745318353,1.435705368289638,6.616729088639201,4.631710362047441,5.655430711610487,2.1036204744069913,4.107365792759051,3.639200998751561,6.054931335830212,0.9737827715355806,2.5593008739076155,2.3907615480649187,2.8963795255930087,5.855181023720349,1.410736579275905,5.493133583021224,4.9687890137328345,4.644194756554308, +4.31960049937578,5.805243445692884,2.852684144818976,5.9238451935081144,4.144818976279651,4.225967540574282,1.161048689138577,3.882646691635456,1.5605493133583022,3.4144818976279647,4.132334581772784,1.8726591760299625,0.8551810237203495,0.9051186017478152,2.1910112359550564,6.491885143570538,5.162297128589263,3.439450686641698,2.4968789013732833,2.128589263420724,4.531835205992509,5.9238451935081144,3.5018726591760303,6.154806491885144,5.443196004993759,1.585518102372035,1.2796504369538078,1.2109862671660423,2.459425717852684,4.600499375780275,0.7927590511860175,1.6354556803995006,5.574282147315855,4.488139825218477,1.8164794007490637,3.0961298377028714,1.4731585518102372,6.866416978776529,4.843945068664169,1.161048689138577,1.223470661672909,5.443196004993759,4.400749063670412,1.9600499375780276,1.3857677902621723,1.6729088639200997,6.429463171036204,3.439450686641698,1.8352059925093633,5.099875156054932,3.607990012484395,3.926342072409488,4.712858926342073,6.616729088639201,2.322097378277154,4.0886392009987516,4.531835205992509,5.69912609238452,6.616729088639201,3.8389513108614235,2.8339575530586765,3.8202247191011236,3.682896379525593,2.2971285892634206,6.30461922596754,4.0761548064918856,2.9275905118601746,6.30461922596754,2.35330836454432,3.9450686641697876,4.357053682896379,4.675405742821473,6.217228464419476,4.194756554307116,6.30461922596754,6.554307116104869,4.600499375780275,3.0524344569288386,1.4981273408239701,2.0411985018726595,6.554307116104869,4.038701622971286,3.2709113607990012,1.4544319600499376,6.616729088639201,4.656679151061174,5.68039950062422,2.134831460674157,4.132334581772784,3.6704119850187267,6.079900124843945,0.9925093632958802,2.5905118601747814,2.4219725343320846,2.9275905118601746,5.892634207240949,1.4419475655430714,5.5181023720349565,4.9937578027465666,4.66916354556804, +4.3508114856429465,5.842696629213483,2.8901373283395753,5.948813982521848,4.169787765293384,4.244694132334582,1.1860174781523096,3.9076154806491883,1.585518102372035,3.439450686641698,4.151061173533084,1.9038701622971288,0.8801498127340824,0.9363295880149812,2.209737827715356,6.554307116104869,5.19350811485643,3.470661672908864,2.521847690387016,2.153558052434457,4.563046192259676,5.955056179775282,3.5268414481897628,6.186017478152309,5.474406991260924,1.616729088639201,1.3108614232209737,1.2359550561797754,2.4906367041198503,4.6254681647940075,0.8177278401997503,1.6666666666666667,5.599250936329588,4.51310861423221,1.8352059925093633,3.1210986267166043,1.5106117353308364,6.866416978776529,4.868913857677903,1.1860174781523096,1.2484394506866416,5.461922596754057,4.425717852684145,1.9912609238451935,1.410736579275905,1.6978776529338326,6.429463171036204,3.470661672908864,1.8664169787765295,5.131086142322098,3.639200998751561,3.957553058676654,4.737827715355805,6.616729088639201,2.340823970037453,4.1136079900124844,4.556803995006242,5.736579275905119,6.616729088639201,3.8639200998751564,2.852684144818976,3.8389513108614235,3.714107365792759,2.322097378277154,6.367041198501872,4.1011235955056184,2.9463171036204745,6.367041198501872,2.3782771535580522,3.970037453183521,4.382022471910113,4.70661672908864,6.242197253433209,4.225967540574282,6.30461922596754,6.554307116104869,4.619225967540574,3.089887640449438,1.523096129837703,2.0786516853932584,6.616729088639201,4.069912609238452,3.3021223470661676,1.4794007490636705,6.679151061173534,4.681647940074906,5.705368289637952,2.1660424469413235,4.157303370786517,3.701622971285893,6.111111111111111,1.017478152309613,2.6217228464419473,2.446941323345818,2.958801498127341,5.930087390761548,1.4794007490636705,5.549313358302123,5.0187265917602994,4.694132334581773, +4.382022471910113,5.8739076154806495,2.9213483146067416,5.980024968789014,4.194756554307116,4.269662921348314,1.2047440699126093,3.9325842696629216,1.616729088639201,3.4581772784019975,4.176029962546816,1.9350811485642945,0.898876404494382,0.9675405742821472,2.2347066167290888,6.554307116104869,5.224719101123595,3.5018726591760303,2.546816479400749,2.1722846441947565,4.588014981273409,5.992509363295881,3.5518102372034956,6.217228464419476,5.50561797752809,1.647940074906367,1.34207240948814,1.260923845193508,2.521847690387016,4.65043695380774,0.8426966292134832,1.6978776529338326,5.617977528089888,4.538077403245943,1.8601747815230962,3.1460674157303368,1.5418227215980027,6.928838951310862,4.893882646691636,1.2047440699126093,1.2734082397003745,5.48689138576779,4.450686641697877,2.0224719101123596,1.4419475655430714,1.7228464419475658,6.491885143570538,3.508114856429463,1.8976279650436954,5.15605493133583,3.6641697877652937,3.9950062421972534,4.762796504369538,6.679151061173534,2.3657927590511862,4.132334581772784,4.588014981273409,5.774032459425719,6.616729088639201,3.888888888888889,2.871410736579276,3.8639200998751564,3.745318352059925,2.3470661672908864,6.367041198501872,4.1260923845193505,2.9712858926342074,6.367041198501872,2.4032459425717856,3.9950062421972534,4.413233458177278,4.7440699126092385,6.242197253433209,4.250936329588015,6.367041198501872,6.616729088639201,4.644194756554308,3.1210986267166043,1.5480649188514357,2.1161048689138577,6.679151061173534,4.1011235955056184,3.339575530586767,1.4981273408239701,6.679151061173534,4.70661672908864,5.730337078651686,2.1972534332084894,4.18227215980025,3.732833957553059,6.142322097378277,1.042446941323346,2.6529338327091136,2.471910112359551,2.9962546816479403,5.97378277153558,1.5106117353308364,5.580524344569288,5.043695380774032,4.719101123595506, +4.413233458177278,5.905118601747815,2.9525593008739075,6.004993757802747,4.219725343320849,4.294631710362047,1.229712858926342,3.957553058676654,1.647940074906367,3.4831460674157304,4.194756554307116,1.9600499375780276,0.9238451935081149,0.9987515605493134,2.259675405742821,6.616729088639201,5.2559300873907615,3.5268414481897628,2.571785268414482,2.1972534332084894,4.619225967540574,6.023720349563047,3.576779026217228,6.242197253433209,5.5305867665418225,1.6729088639200997,1.373283395755306,1.285892634207241,2.5530586766541825,4.675405742821473,0.867665418227216,1.735330836454432,5.64294631710362,4.556803995006242,1.8789013732833957,3.17103620474407,1.5792759051186018,6.928838951310862,4.918851435705368,1.223470661672909,1.2983770287141074,5.50561797752809,4.475655430711611,2.0536828963795255,1.4731585518102372,1.7540574282147314,6.491885143570538,3.5393258426966296,1.9350811485642945,5.187265917602996,3.6953807740324596,4.02621722846442,4.787765293383271,6.679151061173534,2.3907615480649187,4.151061173533084,4.612983770287141,5.811485642946318,6.679151061173534,3.920099875156055,2.8901373283395753,3.882646691635456,3.7827715355805243,2.3657927590511862,6.429463171036204,4.144818976279651,2.990012484394507,6.429463171036204,2.428214731585518,4.019975031210986,4.444444444444445,4.775280898876405,6.30461922596754,4.275905118601748,6.367041198501872,6.616729088639201,4.662921348314606,3.1585518102372037,1.5730337078651684,2.1473158551810236,6.679151061173534,4.132334581772784,3.370786516853933,1.523096129837703,6.741573033707866,4.7315855181023725,5.7553058676654185,2.2284644194756553,4.207240948813983,3.764044943820225,6.167290886392011,1.0674157303370786,2.68414481897628,2.4968789013732833,3.027465667915106,6.01123595505618,1.5418227215980027,5.611735330836455,5.068664169787765,4.737827715355805, +4.444444444444445,5.942571785268415,2.990012484394507,6.036204744069912,4.244694132334582,4.313358302122348,1.2546816479400749,3.9887640449438204,1.6791510611735332,3.508114856429463,4.219725343320849,1.9912609238451935,0.9488139825218477,1.0299625468164793,2.2846441947565546,6.616729088639201,5.287141073657928,3.5580524344569286,2.596754057428215,2.215980024968789,4.65043695380774,6.054931335830212,3.6017478152309614,6.30461922596754,5.561797752808988,1.704119850187266,1.3982521847690388,1.3108614232209737,2.5842696629213484,4.700374531835206,0.8926342072409489,1.766541822721598,5.66167290886392,4.581772784019975,1.9038701622971288,3.1897627965043696,1.6104868913857677,6.991260923845194,4.937578027465668,1.2484394506866416,1.3233458177278403,5.5305867665418225,4.506866416978776,2.091136079900125,1.4981273408239701,1.7790262172284643,6.554307116104869,3.5705368289637955,1.9662921348314608,5.218476903870163,3.7265917602996255,4.057428214731585,4.812734082397004,6.741573033707866,2.4157303370786516,4.176029962546816,4.644194756554308,5.848938826466916,6.679151061173534,3.9450686641697876,2.908863920099875,3.9013732833957557,3.81398252184769,2.3907615480649187,6.429463171036204,4.169787765293384,3.0149812734082393,6.429463171036204,2.453183520599251,4.044943820224719,4.475655430711611,4.806491885143571,6.30461922596754,4.307116104868914,6.429463171036204,6.616729088639201,4.681647940074906,3.1897627965043696,1.5980024968789013,2.184769038701623,6.741573033707866,4.16354556803995,3.4019975031210987,1.5418227215980027,6.741573033707866,4.750312109862672,5.7802746566791505,2.259675405742821,4.2322097378277155,3.801498127340824,6.198501872659176,1.0923845193508115,2.715355805243446,2.5280898876404496,3.058676654182272,6.048689138576779,1.5792759051186018,5.64294631710362,5.093632958801498,4.762796504369538, +4.475655430711611,5.97378277153558,3.0212234706616727,6.061173533083646,4.269662921348314,4.33832709113608,1.2734082397003745,4.013732833957553,1.704119850187266,3.5268414481897628,4.238451935081149,2.0224719101123596,0.9675405742821472,1.0549313358302121,2.309612983770287,6.616729088639201,5.318352059925093,3.589263420724095,2.6217228464419473,2.2409488139825218,4.675405742821473,6.086142322097379,3.6267166042446943,6.30461922596754,5.593008739076155,1.735330836454432,1.4294631710362047,1.3358302122347065,2.6154806491885143,4.725343320848939,0.9176029962546817,1.8039950062421974,5.686641697877653,4.600499375780275,1.9288389513108615,3.214731585518102,1.647940074906367,6.991260923845194,4.962546816479401,1.2671660424469413,1.34207240948814,5.549313358302123,4.531835205992509,2.122347066167291,1.529338327091136,1.8039950062421974,6.554307116104869,3.607990012484395,1.9975031210986267,5.249687890137328,3.7515605493133584,4.094881398252185,4.843945068664169,6.803995006242197,2.4406991260923845,4.194756554307116,4.675405742821473,5.8863920099875156,6.741573033707866,3.970037453183521,2.9275905118601746,3.926342072409488,3.8451935081148565,2.4094881398252186,6.491885143570538,4.188514357053683,3.033707865168539,6.429463171036204,2.478152309612984,4.069912609238452,4.506866416978776,4.837702871410737,6.367041198501872,4.332084893882647,6.429463171036204,6.679151061173534,4.70661672908864,3.227215980024969,1.6229712858926344,2.215980024968789,6.803995006242197,4.194756554307116,3.439450686641698,1.5667915106117354,6.803995006242197,4.775280898876405,5.805243445692884,2.2908863920099876,4.257178526841448,3.83270911360799,6.229712858926342,1.1173533083645444,2.746566791510612,2.5530586766541825,3.089887640449438,6.086142322097379,1.6104868913857677,5.674157303370786,5.118601747815231,4.787765293383271, +4.506866416978776,6.004993757802747,3.0524344569288386,6.092384519350812,4.294631710362047,4.3632958801498125,1.2983770287141074,4.038701622971286,1.735330836454432,3.5518102372034956,4.263420724094882,2.0474406991260925,0.9925093632958802,1.0861423220973783,2.33458177278402,6.679151061173534,5.34956304619226,3.620474406991261,2.6466916354556806,2.259675405742821,4.70661672908864,6.117353308364544,3.651685393258427,6.367041198501872,5.617977528089888,1.7602996254681649,1.4606741573033708,1.3607990012484397,2.6466916354556806,4.750312109862672,0.9425717852684146,1.8352059925093633,5.705368289637952,4.6254681647940075,1.9475655430711611,3.2397003745318353,1.6791510611735332,7.0536828963795255,4.987515605493134,1.285892634207241,1.3670411985018727,5.574282147315855,4.556803995006242,2.153558052434457,1.5605493133583022,1.8352059925093633,6.616729088639201,3.639200998751561,2.034956304619226,5.274656679151062,3.7827715355805243,4.1260923845193505,4.868913857677903,6.803995006242197,2.4656679151061174,4.213483146067416,4.700374531835206,5.9238451935081144,6.741573033707866,3.9950062421972534,2.9463171036204745,3.9450686641697876,3.8764044943820224,2.4344569288389515,6.491885143570538,4.213483146067416,3.058676654182272,6.491885143570538,2.5031210986267167,4.094881398252185,4.538077403245943,4.868913857677903,6.367041198501872,4.357053682896379,6.491885143570538,6.679151061173534,4.725343320848939,3.258426966292135,1.647940074906367,2.253433208489388,6.803995006242197,4.225967540574282,3.470661672908864,1.585518102372035,6.803995006242197,4.800249687890138,5.830212234706617,2.322097378277154,4.282147315855181,3.8639200998751564,6.242197253433209,1.136079900124844,2.777777777777778,2.578027465667915,3.1273408239700373,6.129837702871411,1.647940074906367,5.69912609238452,5.149812734082397,4.812734082397004, +4.538077403245943,6.0424469413233455,3.089887640449438,6.117353308364544,4.31960049937578,4.382022471910113,1.3233458177278403,4.063670411985019,1.766541822721598,3.576779026217228,4.282147315855181,2.0786516853932584,1.017478152309613,1.1173533083645444,2.359550561797753,6.679151061173534,5.380774032459426,3.651685393258427,2.671660424469413,2.2846441947565546,4.737827715355805,6.1485642946317105,3.6766541822721597,6.367041198501872,5.6491885143570535,1.7915106117353308,1.4918851435705367,1.3857677902621723,2.68414481897628,4.775280898876405,0.9675405742821472,1.8664169787765295,5.724094881398252,4.65043695380774,1.9725343320848938,3.2646691635455682,1.7166042446941323,7.0536828963795255,5.012484394506866,1.3046192259675407,1.3920099875156053,5.593008739076155,4.588014981273409,2.184769038701623,1.591760299625468,1.8601747815230962,6.616729088639201,3.6766541822721597,2.066167290886392,5.305867665418227,3.8077403245942576,4.16354556803995,4.893882646691636,6.866416978776529,2.4843945068664173,4.238451935081149,4.7315855181023725,5.961298377028713,6.741573033707866,4.02621722846442,2.9712858926342074,3.9637952559300875,3.9076154806491883,2.453183520599251,6.554307116104869,4.238451935081149,3.077403245942572,6.491885143570538,2.5280898876404496,4.1136079900124844,4.569288389513109,4.906367041198502,6.367041198501872,4.388264669163545,6.491885143570538,6.679151061173534,4.7440699126092385,3.2896379525593007,1.6729088639200997,2.2846441947565546,6.866416978776529,4.257178526841448,3.5018726591760303,1.6042446941323347,6.866416978776529,4.825218476903871,5.855181023720349,2.35330836454432,4.307116104868914,3.8951310861423223,6.30461922596754,1.161048689138577,2.808988764044944,2.6092384519350813,3.1585518102372037,6.167290886392011,1.6791510611735332,5.730337078651686,5.174781523096129,4.831460674157303, +4.563046192259676,6.073657927590512,3.1210986267166043,6.1485642946317105,4.344569288389513,4.406991260923846,1.348314606741573,4.0886392009987516,1.797752808988764,3.595505617977528,4.300873907615481,2.1098626716604243,1.0362047440699127,1.1485642946317103,2.3845193508114857,6.741573033707866,5.411985018726591,3.682896379525593,2.696629213483146,2.303370786516854,4.762796504369538,6.179775280898876,3.6953807740324596,6.429463171036204,5.68039950062422,1.8227215980024971,1.523096129837703,1.410736579275905,2.715355805243446,4.800249687890138,0.9925093632958802,1.9038701622971288,5.749063670411985,4.66916354556804,1.9975031210986267,3.2833957553058677,1.7478152309612984,7.116104868913857,5.0374531835206,1.3295880149812733,1.4169787765293382,5.617977528089888,4.612983770287141,2.2222222222222223,1.616729088639201,1.8851435705368291,6.679151061173534,3.7078651685393256,2.1036204744069913,5.337078651685393,3.8389513108614235,4.194756554307116,4.918851435705368,6.866416978776529,2.5093632958801497,4.257178526841448,4.7565543071161045,5.998751560549313,6.803995006242197,4.051186017478152,2.990012484394507,3.9887640449438204,3.938826466916354,2.478152309612984,6.554307116104869,4.257178526841448,3.102372034956305,6.491885143570538,2.546816479400749,4.138576779026217,4.600499375780275,4.937578027465668,6.429463171036204,4.413233458177278,6.554307116104869,6.741573033707866,4.769038701622971,3.3270911360799,1.6978776529338326,2.322097378277154,6.866416978776529,4.288389513108614,3.5393258426966296,1.6292134831460674,6.866416978776529,4.850187265917603,5.880149812734083,2.3845193508114857,4.332084893882647,3.926342072409488,6.30461922596754,1.1860174781523096,2.84019975031211,2.634207240948814,3.1897627965043696,6.20474406991261,1.7166042446941323,5.761548064918852,5.199750312109863,4.856429463171036, +4.594257178526841,6.104868913857677,3.15230961298377,6.173533083645444,4.369538077403246,4.431960049937578,1.3670411985018727,4.119850187265917,1.8227215980024971,3.620474406991261,4.325842696629214,2.1410736579275906,1.0611735330836456,1.1797752808988764,2.4094881398252186,6.741573033707866,5.443196004993759,3.714107365792759,2.7215980024968793,2.328339575530587,4.794007490636704,6.210986267166042,3.7203495630461925,6.429463171036204,5.705368289637952,1.8476903870162298,1.554307116104869,1.435705368289638,2.746566791510612,4.825218476903871,1.0112359550561798,1.9350811485642945,5.767790262172285,4.694132334581773,2.016229712858926,3.3083645443196006,1.7852684144818978,7.116104868913857,5.062421972534332,1.348314606741573,1.4419475655430714,5.636704119850187,4.637952559300874,2.253433208489388,1.647940074906367,1.916354556803995,6.679151061173534,3.7390761548064915,2.134831460674157,5.36828963795256,3.8639200998751564,4.2322097378277155,4.943820224719102,6.928838951310862,2.5343320848938826,4.282147315855181,4.787765293383271,6.036204744069912,6.803995006242197,4.0761548064918856,3.0087390761548067,4.00749063670412,3.970037453183521,2.5031210986267167,6.616729088639201,4.282147315855181,3.1210986267166043,6.554307116104869,2.571785268414482,4.16354556803995,4.631710362047441,4.9687890137328345,6.429463171036204,4.438202247191011,6.554307116104869,6.741573033707866,4.787765293383271,3.3583021223470664,1.7228464419475658,2.359550561797753,6.928838951310862,4.31960049937578,3.5705368289637955,1.647940074906367,6.928838951310862,4.875156054931336,5.905118601747815,2.4157303370786516,4.357053682896379,3.9637952559300875,6.367041198501872,1.2109862671660423,2.871410736579276,2.6591760299625467,3.227215980024969,6.242197253433209,1.7478152309612984,5.792759051186017,5.224719101123595,4.881398252184769, +4.6254681647940075,6.142322097378277,3.1897627965043696,6.20474406991261,4.394506866416979,4.450686641697877,1.3920099875156053,4.144818976279651,1.8539325842696628,3.6454431960049942,4.344569288389513,2.1660424469413235,1.079900124843945,1.2047440699126093,2.4344569288389515,6.803995006242197,5.474406991260924,3.745318352059925,2.746566791510612,2.3470661672908864,4.825218476903871,6.242197253433209,3.745318352059925,6.491885143570538,5.736579275905119,1.8789013732833957,1.5792759051186018,1.4606741573033708,2.777777777777778,4.850187265917603,1.0362047440699127,1.9662921348314608,5.792759051186017,4.712858926342073,2.0411985018726595,3.3333333333333335,1.8164794007490637,7.17852684144819,5.081148564294631,1.3670411985018727,1.466916354556804,5.66167290886392,4.662921348314606,2.2846441947565546,1.6791510611735332,1.941323345817728,6.741573033707866,3.776529338327091,2.1660424469413235,5.393258426966292,3.8951310861423223,4.263420724094882,4.9687890137328345,6.928838951310862,2.5593008739076155,4.300873907615481,4.812734082397004,6.073657927590512,6.866416978776529,4.107365792759051,3.027465667915106,4.02621722846442,4.001248439450687,2.521847690387016,6.616729088639201,4.300873907615481,3.1460674157303368,6.554307116104869,2.596754057428215,4.188514357053683,4.662921348314606,5.0,6.429463171036204,4.4694132334581775,6.616729088639201,6.741573033707866,4.812734082397004,3.3957553058676653,1.7478152309612984,2.3907615480649187,6.991260923845194,4.3508114856429465,3.6017478152309614,1.6729088639200997,6.928838951310862,4.893882646691636,5.930087390761548,2.446941323345818,4.382022471910113,3.9950062421972534,6.367041198501872,1.2359550561797754,2.902621722846442,2.68414481897628,3.258426966292135,6.30461922596754,1.7852684144818978,5.823970037453184,5.249687890137328,4.906367041198502, +4.656679151061174,6.173533083645444,3.2209737827715355,6.229712858926342,4.419475655430712,4.475655430711611,1.4169787765293382,4.169787765293384,1.8851435705368291,3.6641697877652937,4.369538077403246,2.1972534332084894,1.104868913857678,1.2359550561797754,2.459425717852684,6.803995006242197,5.50561797752809,3.776529338327091,2.7715355805243447,2.3720349563046192,4.850187265917603,6.30461922596754,3.7702871410736583,6.491885143570538,5.767790262172285,1.9101123595505618,1.6104868913857677,1.4856429463171037,2.808988764044944,4.875156054931336,1.0611735330836456,2.00374531835206,5.811485642946318,4.737827715355805,2.0599250936329585,3.3583021223470664,1.8539325842696628,7.17852684144819,5.106117353308365,1.3920099875156053,1.4856429463171037,5.686641697877653,4.694132334581773,2.3158551810237205,1.704119850187266,1.9662921348314608,6.741573033707866,3.8077403245942576,2.203495630461923,5.424469413233458,3.926342072409488,4.294631710362047,5.0,6.991260923845194,2.5842696629213484,4.31960049937578,4.843945068664169,6.111111111111111,6.866416978776529,4.132334581772784,3.046192259675406,4.051186017478152,4.032459425717852,2.546816479400749,6.679151061173534,4.325842696629214,3.1647940074906367,6.554307116104869,2.6217228464419473,4.213483146067416,4.694132334581773,5.0374531835206,6.491885143570538,4.49438202247191,6.616729088639201,6.803995006242197,4.831460674157303,3.4269662921348316,1.772784019975031,2.428214731585518,6.991260923845194,4.382022471910113,3.639200998751561,1.6916354556803994,6.991260923845194,4.918851435705368,5.955056179775282,2.478152309612984,4.406991260923846,4.02621722846442,6.429463171036204,1.260923845193508,2.933832709113608,2.715355805243446,3.2896379525593007,6.30461922596754,1.8164794007490637,5.855181023720349,5.274656679151062,4.925093632958801, +4.687890137328339,6.20474406991261,3.258426966292135,6.242197253433209,4.444444444444445,4.500624219725343,1.435705368289638,4.194756554307116,1.916354556803995,3.689138576779026,4.388264669163545,2.2284644194756553,1.1298377028714106,1.2671660424469413,2.4843945068664173,6.866416978776529,5.536828963795256,3.8077403245942576,2.7965043695380776,2.3907615480649187,4.881398252184769,6.30461922596754,3.7952559300873907,6.554307116104869,5.799001248439451,1.9350811485642945,1.6416978776529338,1.5106117353308364,2.84019975031211,4.900124843945068,1.0861423220973783,2.034956304619226,5.836454431960051,4.7565543071161045,2.084893882646692,3.3770287141073654,1.8851435705368291,7.240948813982522,5.131086142322098,1.410736579275905,1.5106117353308364,5.705368289637952,4.719101123595506,2.35330836454432,1.735330836454432,1.9975031210986267,6.803995006242197,3.8389513108614235,2.2347066167290888,5.455680399500624,3.951310861423221,4.332084893882647,5.024968789013733,7.0536828963795255,2.602996254681648,4.344569288389513,4.868913857677903,6.1485642946317105,6.866416978776529,4.157303370786517,3.0649188514357055,4.069912609238452,4.063670411985019,2.565543071161049,6.679151061173534,4.3508114856429465,3.1897627965043696,6.616729088639201,2.6466916354556806,4.238451935081149,4.725343320848939,5.068664169787765,6.491885143570538,4.519350811485642,6.679151061173534,6.803995006242197,4.850187265917603,3.464419475655431,1.797752808988764,2.459425717852684,7.0536828963795255,4.413233458177278,3.6704119850187267,1.7166042446941323,6.991260923845194,4.943820224719102,5.980024968789014,2.5093632958801497,4.431960049937578,4.057428214731585,6.429463171036204,1.285892634207241,2.965043695380774,2.740324594257179,3.3270911360799,6.367041198501872,1.8476903870162298,5.880149812734083,5.299625468164794,4.950062421972534, +4.719101123595506,6.242197253433209,3.2896379525593007,6.30461922596754,4.4694132334581775,4.519350811485642,1.4606741573033708,4.219725343320849,1.941323345817728,3.714107365792759,4.413233458177278,2.259675405742821,1.1485642946317103,1.2983770287141074,2.5093632958801497,6.866416978776529,5.568039950062421,3.8389513108614235,2.82147315855181,2.4157303370786516,4.912609238451935,6.367041198501872,3.8202247191011236,6.554307116104869,5.823970037453184,1.9662921348314608,1.6729088639200997,1.5355805243445693,2.871410736579276,4.925093632958801,1.1111111111111112,2.0724094881398254,5.855181023720349,4.781523096129837,2.1098626716604243,3.4019975031210987,1.9225967540574282,7.240948813982522,5.15605493133583,1.4294631710362047,1.5355805243445693,5.730337078651686,4.7440699126092385,2.3845193508114857,1.766541822721598,2.0224719101123596,6.803995006242197,3.8764044943820224,2.272159800249688,5.48689138576779,3.982521847690387,4.3632958801498125,5.049937578027466,7.0536828963795255,2.6279650436953808,4.3632958801498125,4.900124843945068,6.186017478152309,6.928838951310862,4.188514357053683,3.0836454431960054,4.0886392009987516,4.094881398252185,2.5905118601747814,6.741573033707866,4.369538077403246,3.2084893882646695,6.616729088639201,2.671660424469413,4.263420724094882,4.750312109862672,5.099875156054932,6.491885143570538,4.55056179775281,6.679151061173534,6.803995006242197,4.875156054931336,3.495630461922597,1.8227215980024971,2.4968789013732833,7.116104868913857,4.444444444444445,3.7078651685393256,1.735330836454432,7.0536828963795255,4.9687890137328345,6.01123595505618,2.5405742821473156,4.456928838951311,4.0886392009987516,6.491885143570538,1.3046192259675407,2.9962546816479403,2.7652933832709112,3.3583021223470664,6.429463171036204,1.8851435705368291,5.9113607990012484,5.324594257178527,4.975031210986267, +4.750312109862672,6.30461922596754,3.320848938826467,6.30461922596754,4.49438202247191,4.544319600499376,1.4856429463171037,4.250936329588015,1.9725343320848938,3.732833957553059,4.431960049937578,2.2846441947565546,1.1735330836454432,1.3295880149812733,2.5343320848938826,6.928838951310862,5.599250936329588,3.870162297128589,2.84019975031211,2.4344569288389515,4.937578027465668,6.367041198501872,3.8451935081148565,6.616729088639201,5.855181023720349,1.9975031210986267,1.704119850187266,1.5605493133583022,2.902621722846442,4.950062421972534,1.136079900124844,2.1036204744069913,5.880149812734083,4.806491885143571,2.128589263420724,3.4269662921348316,1.9600499375780276,7.303370786516854,5.181023720349563,1.4544319600499376,1.5605493133583022,5.749063670411985,4.775280898876405,2.4157303370786516,1.797752808988764,2.0474406991260925,6.866416978776529,3.9076154806491883,2.303370786516854,5.511860174781523,4.00749063670412,4.400749063670412,5.074906367041199,7.116104868913857,2.6529338327091136,4.382022471910113,4.931335830212235,6.223470661672909,6.928838951310862,4.213483146067416,3.102372034956305,4.1136079900124844,4.132334581772784,2.6092384519350813,6.741573033707866,4.394506866416979,3.227215980024969,6.616729088639201,2.696629213483146,4.288389513108614,4.781523096129837,5.131086142322098,6.554307116104869,4.575530586766542,6.741573033707866,6.866416978776529,4.893882646691636,3.533083645443196,1.8476903870162298,2.5343320848938826,7.116104868913857,4.475655430711611,3.7390761548064915,1.7602996254681649,7.0536828963795255,4.9937578027465666,6.036204744069912,2.571785268414482,4.4818976279650435,4.119850187265917,6.491885143570538,1.3295880149812733,3.027465667915106,2.790262172284644,3.3895131086142323,6.429463171036204,1.916354556803995,5.942571785268415,5.355805243445693,4.9937578027465666, +4.781523096129837,6.30461922596754,3.3583021223470664,6.367041198501872,4.519350811485642,4.563046192259676,1.5043695380774034,4.275905118601748,2.00374531835206,3.7578027465667914,4.450686641697877,2.3158551810237205,1.198501872659176,1.3545568039950062,2.5593008739076155,6.928838951310862,5.630461922596755,3.9013732833957557,2.865168539325843,2.453183520599251,4.9687890137328345,6.429463171036204,3.870162297128589,6.616729088639201,5.8863920099875156,2.0287141073657926,1.7290886392009988,1.585518102372035,2.933832709113608,4.975031210986267,1.161048689138577,2.134831460674157,5.8988764044943816,4.825218476903871,2.153558052434457,3.4456928838951315,1.9912609238451935,7.303370786516854,5.205992509363296,1.4731585518102372,1.585518102372035,5.774032459425719,4.800249687890138,2.446941323345818,1.8227215980024971,2.0786516853932584,6.866416978776529,3.938826466916354,2.33458177278402,5.543071161048689,4.038701622971286,4.431960049937578,5.099875156054932,7.116104868913857,2.6779026217228465,4.406991260923846,4.956304619225968,6.242197253433209,6.991260923845194,4.238451935081149,3.1273408239700373,4.132334581772784,4.16354556803995,2.634207240948814,6.803995006242197,4.413233458177278,3.2521847690387014,6.679151061173534,2.7215980024968793,4.313358302122348,4.812734082397004,5.168539325842697,6.554307116104869,4.606741573033708,6.741573033707866,6.866416978776529,4.912609238451935,3.564294631710362,1.8726591760299625,2.565543071161049,7.17852684144819,4.500624219725343,3.7702871410736583,1.7790262172284643,7.116104868913857,5.0187265917602994,6.061173533083646,2.602996254681648,4.506866416978776,4.157303370786517,6.491885143570538,1.3545568039950062,3.058676654182272,2.82147315855181,3.420724094881398,6.491885143570538,1.9538077403245941,5.97378277153558,5.380774032459426,5.0187265917602994, +4.806491885143571,6.367041198501872,3.3895131086142323,6.367041198501872,4.544319600499376,4.588014981273409,1.529338327091136,4.300873907615481,2.034956304619226,3.7827715355805243,4.475655430711611,2.3470661672908864,1.2172284644194757,1.3857677902621723,2.5842696629213484,6.991260923845194,5.66167290886392,3.9325842696629216,2.8901373283395753,2.478152309612984,5.0,6.429463171036204,3.8951310861423223,6.679151061173534,5.9113607990012484,2.0536828963795255,1.7602996254681649,1.6104868913857677,2.965043695380774,5.0,1.1860174781523096,2.1722846441947565,5.917602996254682,4.850187265917603,2.1722846441947565,3.470661672908864,2.0287141073657926,7.365792759051186,5.230961298377029,1.4918851435705367,1.6104868913857677,5.792759051186017,4.825218476903871,2.4843945068664173,1.8539325842696628,2.1036204744069913,6.928838951310862,3.9762796504369535,2.3720349563046192,5.574282147315855,4.063670411985019,4.4694132334581775,5.131086142322098,7.17852684144819,2.702871410736579,4.425717852684145,4.987515605493134,6.30461922596754,6.991260923845194,4.269662921348314,3.1460674157303368,4.151061173533084,4.194756554307116,2.6591760299625467,6.803995006242197,4.438202247191011,3.2709113607990012,6.679151061173534,2.746566791510612,4.33832709113608,4.843945068664169,5.199750312109863,6.616729088639201,4.631710362047441,6.803995006242197,6.866416978776529,4.937578027465668,3.6017478152309614,1.8976279650436954,2.602996254681648,7.17852684144819,4.531835205992509,3.8077403245942576,1.8039950062421974,7.116104868913857,5.043695380774032,6.086142322097379,2.634207240948814,4.531835205992509,4.188514357053683,6.554307116104869,1.3795255930087391,3.0836454431960054,2.8464419475655434,3.4581772784019975,6.491885143570538,1.9850187265917605,6.004993757802747,5.405742821473158,5.043695380774032, +4.837702871410737,6.367041198501872,3.420724094881398,6.367041198501872,4.569288389513109,4.612983770287141,1.554307116104869,4.325842696629214,2.0599250936329585,3.801498127340824,4.49438202247191,2.3720349563046192,1.2421972534332086,1.4169787765293382,2.6092384519350813,6.991260923845194,5.692883895131087,3.9637952559300875,2.9151061173533086,2.4968789013732833,5.024968789013733,6.491885143570538,3.9138576779026217,6.679151061173534,5.942571785268415,2.084893882646692,1.7915106117353308,1.6354556803995006,2.9962546816479403,5.024968789013733,1.2109862671660423,2.203495630461923,5.942571785268415,4.868913857677903,2.1972534332084894,3.495630461922597,2.0599250936329585,7.365792759051186,5.249687890137328,1.5106117353308364,1.6354556803995006,5.81772784019975,4.850187265917603,2.515605493133583,1.8851435705368291,2.128589263420724,6.928838951310862,4.00749063670412,2.4032459425717856,5.605493133583021,4.094881398252185,4.500624219725343,5.15605493133583,7.17852684144819,2.727840199750312,4.444444444444445,5.012484394506866,6.30461922596754,6.991260923845194,4.294631710362047,3.1647940074906367,4.176029962546816,4.225967540574282,2.6779026217228465,6.866416978776529,4.463171036204744,3.295880149812734,6.679151061173534,2.7715355805243447,4.3632958801498125,4.875156054931336,5.230961298377029,6.616729088639201,4.656679151061174,6.803995006242197,6.928838951310862,4.956304619225968,3.6329588014981273,1.9225967540574282,2.634207240948814,7.240948813982522,4.563046192259676,3.8389513108614235,1.8227215980024971,7.17852684144819,5.062421972534332,6.111111111111111,2.66541822721598,4.556803995006242,4.219725343320849,6.554307116104869,1.404494382022472,3.114856429463171,2.871410736579276,3.4893882646691634,6.554307116104869,2.0224719101123596,6.036204744069912,5.430711610486892,5.068664169787765, +4.868913857677903,6.429463171036204,3.4581772784019975,6.429463171036204,4.594257178526841,4.631710362047441,1.5730337078651684,4.357053682896379,2.091136079900125,3.826466916354557,4.519350811485642,2.4032459425717856,1.2671660424469413,1.4481897627965044,2.634207240948814,7.0536828963795255,5.724094881398252,3.9950062421972534,2.9400749063670415,2.521847690387016,5.056179775280899,6.491885143570538,3.938826466916354,6.741573033707866,5.97378277153558,2.1161048689138577,1.8227215980024971,1.6604244694132335,3.033707865168539,5.049937578027466,1.2359550561797754,2.2347066167290888,5.961298377028713,4.893882646691636,2.2222222222222223,3.5205992509363297,2.097378277153558,7.428214731585518,5.274656679151062,1.5355805243445693,1.6541822721598003,5.836454431960051,4.881398252184769,2.546816479400749,1.9101123595505618,2.15980024968789,6.991260923845194,4.044943820224719,2.4344569288389515,5.630461922596755,4.1260923845193505,4.531835205992509,5.181023720349563,7.240948813982522,2.746566791510612,4.4694132334581775,5.043695380774032,6.367041198501872,7.0536828963795255,4.31960049937578,3.183520599250936,4.194756554307116,4.257178526841448,2.702871410736579,6.866416978776529,4.4818976279650435,3.3146067415730336,6.741573033707866,2.790262172284644,4.388264669163545,4.906367041198502,5.262172284644195,6.616729088639201,4.687890137328339,6.803995006242197,6.928838951310862,4.975031210986267,3.6704119850187267,1.941323345817728,2.671660424469413,7.303370786516854,4.594257178526841,3.870162297128589,1.8476903870162298,7.17852684144819,5.087390761548065,6.1360799001248445,2.696629213483146,4.588014981273409,4.250936329588015,6.616729088639201,1.4294631710362047,3.1460674157303368,2.8963795255930087,3.5205992509363297,6.616729088639201,2.0536828963795255,6.061173533083646,5.455680399500624,5.087390761548065, +4.900124843945068,6.429463171036204,3.4893882646691634,6.429463171036204,4.619225967540574,4.656679151061174,1.5980024968789013,4.382022471910113,2.122347066167291,3.8451935081148565,4.538077403245943,2.4344569288389515,1.285892634207241,1.4731585518102372,2.6529338327091136,7.0536828963795255,5.7553058676654185,4.02621722846442,2.965043695380774,2.5405742821473156,5.087390761548065,6.554307116104869,3.9637952559300875,6.741573033707866,5.998751560549313,2.1410736579275906,1.8539325842696628,1.6853932584269664,3.0649188514357055,5.074906367041199,1.260923845193508,2.272159800249688,5.986267166042447,4.912609238451935,2.2409488139825218,3.5393258426966296,2.128589263420724,7.428214731585518,5.299625468164794,1.554307116104869,1.6791510611735332,5.861423220973783,4.906367041198502,2.578027465667915,1.941323345817728,2.184769038701623,6.991260923845194,4.0761548064918856,2.471910112359551,5.66167290886392,4.151061173533084,4.569288389513109,5.205992509363296,7.303370786516854,2.7715355805243447,4.488139825218477,5.068664169787765,6.429463171036204,7.0536828963795255,4.3508114856429465,3.202247191011236,4.213483146067416,4.288389513108614,2.7215980024968793,6.928838951310862,4.506866416978776,3.339575530586767,6.741573033707866,2.8152309612983775,4.413233458177278,4.937578027465668,5.299625468164794,6.679151061173534,4.712858926342073,6.866416978776529,6.928838951310862,5.0,3.701622971285893,1.9662921348314608,2.702871410736579,7.303370786516854,4.6254681647940075,3.9076154806491883,1.8664169787765295,7.240948813982522,5.1123595505617985,6.161048689138577,2.727840199750312,4.612983770287141,4.282147315855181,6.616729088639201,1.4481897627965044,3.1772784019975036,2.9275905118601746,3.5580524344569286,6.616729088639201,2.091136079900125,6.092384519350812,5.480649188514358,5.1123595505617985, +4.931335830212235,6.491885143570538,3.5205992509363297,6.491885143570538,4.644194756554308,4.681647940074906,1.6229712858926344,4.406991260923846,2.153558052434457,3.870162297128589,4.563046192259676,2.4656679151061174,1.3108614232209737,1.5043695380774034,2.6779026217228465,7.116104868913857,5.786516853932584,4.057428214731585,2.990012484394507,2.565543071161049,5.1123595505617985,6.554307116104869,3.9887640449438204,6.803995006242197,6.029962546816479,2.1722846441947565,1.8851435705368291,1.710362047440699,3.0961298377028714,5.099875156054932,1.285892634207241,2.303370786516854,6.004993757802747,4.937578027465668,2.2659176029962547,3.564294631710362,2.1660424469413235,7.49063670411985,5.324594257178527,1.5730337078651684,1.704119850187266,5.8863920099875156,4.931335830212235,2.6154806491885143,1.9725343320848938,2.209737827715356,7.0536828963795255,4.107365792759051,2.5031210986267167,5.692883895131087,4.18227215980025,4.600499375780275,5.230961298377029,7.303370786516854,2.7965043695380776,4.506866416978776,5.099875156054932,6.429463171036204,7.116104868913857,4.375780274656679,3.2209737827715355,4.238451935081149,4.31960049937578,2.746566791510612,6.928838951310862,4.525593008739076,3.3583021223470664,6.741573033707866,2.84019975031211,4.438202247191011,4.9687890137328345,5.33083645443196,6.679151061173534,4.737827715355805,6.866416978776529,6.991260923845194,5.0187265917602994,3.732833957553059,1.9912609238451935,2.740324594257179,7.365792759051186,4.656679151061174,3.938826466916354,1.8913857677902621,7.240948813982522,5.1373283395755305,6.186017478152309,2.7590511860174782,4.637952559300874,4.31960049937578,6.679151061173534,1.4731585518102372,3.2084893882646695,2.9525593008739075,3.589263420724095,6.679151061173534,2.122347066167291,6.123595505617978,5.50561797752809,5.1373283395755305, +4.962546816479401,6.491885143570538,3.5580524344569286,6.491885143570538,4.66916354556804,4.700374531835206,1.6416978776529338,4.431960049937578,2.1785268414481895,3.8951310861423223,4.581772784019975,2.4906367041198503,1.3358302122347065,1.5355805243445693,2.702871410736579,7.116104868913857,5.81772784019975,4.0886392009987516,3.0149812734082393,2.5842696629213484,5.143570536828964,6.616729088639201,4.013732833957553,6.803995006242197,6.061173533083646,2.203495630461923,1.9101123595505618,1.735330836454432,3.1273408239700373,5.118601747815231,1.3108614232209737,2.340823970037453,6.029962546816479,4.962546816479401,2.2846441947565546,3.589263420724095,2.1972534332084894,7.49063670411985,5.34956304619226,1.5980024968789013,1.7290886392009988,5.905118601747815,4.962546816479401,2.6466916354556806,2.00374531835206,2.2409488139825218,7.0536828963795255,4.144818976279651,2.5405742821473156,5.724094881398252,4.207240948813983,4.637952559300874,5.262172284644195,7.365792759051186,2.82147315855181,4.531835205992509,5.1248439450686645,6.491885143570538,7.116104868913857,4.400749063670412,3.2397003745318353,4.257178526841448,4.3508114856429465,2.7715355805243447,6.991260923845194,4.55056179775281,3.383270911360799,6.803995006242197,2.865168539325843,4.463171036204744,5.0,5.3620474406991265,6.679151061173534,4.769038701622971,6.928838951310862,6.991260923845194,5.0374531835206,3.7702871410736583,2.016229712858926,2.777777777777778,7.428214731585518,4.687890137328339,3.970037453183521,1.9101123595505618,7.303370786516854,5.162297128589263,6.210986267166042,2.790262172284644,4.662921348314606,4.3508114856429465,6.679151061173534,1.4981273408239701,3.2397003745318353,2.977528089887641,3.620474406991261,6.741573033707866,2.153558052434457,6.154806491885144,5.5305867665418225,5.162297128589263, +4.9937578027465666,6.554307116104869,3.589263420724095,6.554307116104869,4.694132334581773,4.725343320848939,1.6666666666666667,4.456928838951311,2.209737827715356,3.9138576779026217,4.600499375780275,2.521847690387016,1.3545568039950062,1.5667915106117354,2.727840199750312,7.17852684144819,5.848938826466916,4.119850187265917,3.0399500624219726,2.6092384519350813,5.174781523096129,6.616729088639201,4.038701622971286,6.866416978776529,6.086142322097379,2.2284644194756553,1.941323345817728,1.7602996254681649,3.1585518102372037,5.143570536828964,1.3358302122347065,2.3720349563046192,6.048689138576779,4.9812734082397006,2.309612983770287,3.6142322097378274,2.2347066167290888,7.553058676654182,5.3745318352059925,1.616729088639201,1.7540574282147314,5.930087390761548,4.987515605493134,2.6779026217228465,2.0287141073657926,2.2659176029962547,7.116104868913857,4.176029962546816,2.571785268414482,5.749063670411985,4.238451935081149,4.66916354556804,5.287141073657928,7.365792759051186,2.8464419475655434,4.55056179775281,5.15605493133583,6.491885143570538,7.116104868913857,4.431960049937578,3.258426966292135,4.275905118601748,4.382022471910113,2.790262172284644,6.991260923845194,4.575530586766542,3.4019975031210987,6.803995006242197,2.8901373283395753,4.488139825218477,5.031210986267166,5.393258426966292,6.741573033707866,4.794007490636704,6.928838951310862,6.991260923845194,5.062421972534332,3.801498127340824,2.0411985018726595,2.808988764044944,7.428214731585518,4.719101123595506,4.00749063670412,1.9350811485642945,7.303370786516854,5.187265917602996,6.235955056179775,2.82147315855181,4.687890137328339,4.382022471910113,6.741573033707866,1.523096129837703,3.2709113607990012,3.0087390761548067,3.6579275905118602,6.741573033707866,2.1910112359550564,6.186017478152309,5.561797752808988,5.181023720349563, +5.024968789013733,6.554307116104869,3.6267166042446943,6.554307116104869,4.719101123595506,4.750312109862672,1.6916354556803994,4.488139825218477,2.2409488139825218,3.938826466916354,4.6254681647940075,2.5530586766541825,1.3795255930087391,1.5980024968789013,2.752808988764045,7.17852684144819,5.880149812734083,4.151061173533084,3.0649188514357055,2.6279650436953808,5.199750312109863,6.679151061173534,4.063670411985019,6.866416978776529,6.117353308364544,2.259675405742821,1.9725343320848938,1.7852684144818978,3.1897627965043696,5.168539325842697,1.3607990012484397,2.4032459425717856,6.073657927590512,5.0062421972534334,2.33458177278402,3.6329588014981273,2.2659176029962547,7.553058676654182,5.393258426966292,1.6354556803995006,1.7790262172284643,5.948813982521848,5.012484394506866,2.715355805243446,2.0599250936329585,2.2908863920099876,7.116104868913857,4.207240948813983,2.602996254681648,5.7802746566791505,4.269662921348314,4.700374531835206,5.312109862671661,7.428214731585518,2.865168539325843,4.575530586766542,5.181023720349563,6.554307116104869,7.17852684144819,4.456928838951311,3.2771535580524347,4.300873907615481,4.413233458177278,2.8152309612983775,7.0536828963795255,4.594257178526841,3.4269662921348316,6.803995006242197,2.9151061173533086,4.51310861423221,5.062421972534332,5.424469413233458,6.741573033707866,4.818976279650437,6.991260923845194,7.0536828963795255,5.081148564294631,3.8389513108614235,2.066167290886392,2.8464419475655434,7.49063670411985,4.750312109862672,4.038701622971286,1.9538077403245941,7.365792759051186,5.212234706616729,6.242197253433209,2.852684144818976,4.712858926342073,4.413233458177278,6.741573033707866,1.5480649188514357,3.3021223470661676,3.033707865168539,3.689138576779026,6.803995006242197,2.2222222222222223,6.217228464419476,5.586766541822722,5.205992509363296, +5.056179775280899,6.616729088639201,3.6579275905118602,6.616729088639201,4.7440699126092385,4.769038701622971,1.710362047440699,4.51310861423221,2.272159800249688,3.9637952559300875,4.644194756554308,2.5842696629213484,1.404494382022472,1.6229712858926344,2.777777777777778,7.17852684144819,5.9113607990012484,4.18227215980025,3.089887640449438,2.6529338327091136,5.230961298377029,6.679151061173534,4.0886392009987516,6.928838951310862,6.1485642946317105,2.2908863920099876,2.00374531835206,1.8102372034956304,3.2209737827715355,5.19350811485643,1.3857677902621723,2.4406991260923845,6.092384519350812,5.024968789013733,2.35330836454432,3.6579275905118602,2.303370786516854,7.615480649188515,5.418227215980025,1.6541822721598003,1.8039950062421974,5.97378277153558,5.0374531835206,2.746566791510612,2.091136079900125,2.322097378277154,7.17852684144819,4.244694132334582,2.640449438202247,5.811485642946318,4.294631710362047,4.737827715355805,5.337078651685393,7.428214731585518,2.8901373283395753,4.594257178526841,5.212234706616729,6.616729088639201,7.17852684144819,4.4818976279650435,3.3021223470661676,4.31960049937578,4.444444444444445,2.8339575530586765,7.0536828963795255,4.619225967540574,3.4456928838951315,6.866416978776529,2.9400749063670415,4.538077403245943,5.093632958801498,5.461922596754057,6.803995006242197,4.850187265917603,6.991260923845194,7.0536828963795255,5.099875156054932,3.870162297128589,2.091136079900125,2.8776529338327093,7.49063670411985,4.781523096129837,4.069912609238452,1.9725343320848938,7.365792759051186,5.230961298377029,6.30461922596754,2.8838951310861427,4.737827715355805,4.444444444444445,6.803995006242197,1.5730337078651684,3.3333333333333335,3.058676654182272,3.7203495630461925,6.803995006242197,2.259675405742821,6.242197253433209,5.611735330836455,5.230961298377029, +5.081148564294631,6.616729088639201,3.689138576779026,6.616729088639201,4.775280898876405,4.794007490636704,1.735330836454432,4.538077403245943,2.2971285892634206,3.982521847690387,4.66916354556804,2.6092384519350813,1.4232209737827717,1.6541822721598003,2.8027465667915106,7.240948813982522,5.942571785268415,4.213483146067416,3.114856429463171,2.671660424469413,5.262172284644195,6.741573033707866,4.1136079900124844,6.928838951310862,6.179775280898876,2.3158551810237205,2.034956304619226,1.8352059925093633,3.2521847690387014,5.218476903870163,1.410736579275905,2.471910112359551,6.111111111111111,5.049937578027466,2.3782771535580522,3.682896379525593,2.33458177278402,7.615480649188515,5.443196004993759,1.6791510611735332,1.8227215980024971,5.992509363295881,5.068664169787765,2.777777777777778,2.1161048689138577,2.3470661672908864,7.17852684144819,4.275905118601748,2.671660424469413,5.842696629213483,4.325842696629214,4.769038701622971,5.3620474406991265,7.49063670411985,2.9151061173533086,4.612983770287141,5.243445692883895,6.616729088639201,7.240948813982522,4.51310861423221,3.320848938826467,4.33832709113608,4.4818976279650435,2.8589263420724094,7.116104868913857,4.637952559300874,3.470661672908864,6.866416978776529,2.965043695380774,4.563046192259676,5.118601747815231,5.493133583021224,6.803995006242197,4.875156054931336,7.0536828963795255,7.0536828963795255,5.1248439450686645,3.9076154806491883,2.1161048689138577,2.9151061173533086,7.553058676654182,4.812734082397004,4.107365792759051,1.9975031210986267,7.428214731585518,5.2559300873907615,6.30461922596754,2.9151061173533086,4.762796504369538,4.475655430711611,6.803995006242197,1.5980024968789013,3.3645443196004994,3.0836454431960054,3.7515605493133584,6.866416978776529,2.2908863920099876,6.30461922596754,5.636704119850187,5.2559300873907615, +5.1123595505617985,6.679151061173534,3.7265917602996255,6.679151061173534,4.800249687890138,4.818976279650437,1.7602996254681649,4.563046192259676,2.328339575530587,4.00749063670412,4.687890137328339,2.640449438202247,1.4481897627965044,1.6853932584269664,2.8277153558052435,7.240948813982522,5.97378277153558,4.238451935081149,3.139825218476904,2.696629213483146,5.287141073657928,6.741573033707866,4.132334581772784,6.991260923845194,6.20474406991261,2.3470661672908864,2.066167290886392,1.8601747815230962,3.2833957553058677,5.243445692883895,1.435705368289638,2.5031210986267167,6.1360799001248445,5.068664169787765,2.397003745318352,3.7078651685393256,2.3720349563046192,7.677902621722847,5.468164794007491,1.6978776529338326,1.8476903870162298,6.0174781523096135,5.093632958801498,2.808988764044944,2.1473158551810236,2.3720349563046192,7.240948813982522,4.307116104868914,2.7091136079900124,5.867665418227216,4.3508114856429465,4.806491885143571,5.393258426966292,7.553058676654182,2.9400749063670415,4.637952559300874,5.268414481897628,6.679151061173534,7.240948813982522,4.538077403245943,3.339575530586767,4.3632958801498125,4.51310861423221,2.8776529338327093,7.116104868913857,4.662921348314606,3.4893882646691634,6.866416978776529,2.990012484394507,4.588014981273409,5.149812734082397,5.524344569288389,6.803995006242197,4.900124843945068,7.0536828963795255,7.116104868913857,5.143570536828964,3.938826466916354,2.1410736579275906,2.9463171036204745,7.615480649188515,4.843945068664169,4.138576779026217,2.016229712858926,7.428214731585518,5.280898876404494,6.367041198501872,2.9463171036204745,4.787765293383271,4.51310861423221,6.866416978776529,1.616729088639201,3.3957553058676653,3.114856429463171,3.7890137328339577,6.928838951310862,2.328339575530587,6.30461922596754,5.66167290886392,5.274656679151062, +5.143570536828964,6.679151061173534,3.7578027465667914,6.679151061173534,4.825218476903871,4.837702871410737,1.7790262172284643,4.588014981273409,2.359550561797753,4.032459425717852,4.712858926342073,2.671660424469413,1.4731585518102372,1.7166042446941323,2.852684144818976,7.303370786516854,6.004993757802747,4.269662921348314,3.1647940074906367,2.715355805243446,5.318352059925093,6.803995006242197,4.157303370786517,6.991260923845194,6.235955056179775,2.3782771535580522,2.091136079900125,1.8851435705368291,3.3146067415730336,5.268414481897628,1.4606741573033708,2.5405742821473156,6.154806491885144,5.093632958801498,2.4219725343320846,3.7265917602996255,2.4032459425717856,7.677902621722847,5.493133583021224,1.7166042446941323,1.8726591760299625,6.036204744069912,5.118601747815231,2.8464419475655434,2.1785268414481895,2.4032459425717856,7.240948813982522,4.344569288389513,2.740324594257179,5.8988764044943816,4.382022471910113,4.837702871410737,5.418227215980025,7.553058676654182,2.965043695380774,4.656679151061174,5.299625468164794,6.679151061173534,7.303370786516854,4.563046192259676,3.3583021223470664,4.382022471910113,4.544319600499376,2.902621722846442,7.17852684144819,4.687890137328339,3.5143570536828963,6.928838951310862,3.0149812734082393,4.612983770287141,5.181023720349563,5.555555555555556,6.866416978776529,4.931335830212235,7.116104868913857,7.116104868913857,5.168539325842697,3.9762796504369535,2.1660424469413235,2.9837702871410734,7.615480649188515,4.875156054931336,4.169787765293384,2.0411985018726595,7.49063670411985,5.305867665418227,6.367041198501872,2.977528089887641,4.812734082397004,4.544319600499376,6.866416978776529,1.6416978776529338,3.4269662921348316,3.139825218476904,3.8202247191011236,6.928838951310862,2.359550561797753,6.367041198501872,5.686641697877653,5.299625468164794, +5.174781523096129,6.741573033707866,3.7890137328339577,6.679151061173534,4.850187265917603,4.8626716604244695,1.8039950062421974,4.619225967540574,2.3845193508114857,4.051186017478152,4.7315855181023725,2.702871410736579,1.4918851435705367,1.7478152309612984,2.8776529338327093,7.303370786516854,6.036204744069912,4.300873907615481,3.183520599250936,2.740324594257179,5.34956304619226,6.803995006242197,4.18227215980025,7.0536828963795255,6.242197253433209,2.4032459425717856,2.122347066167291,1.9101123595505618,3.3458177278401995,5.293383270911361,1.4856429463171037,2.571785268414482,6.179775280898876,5.118601747815231,2.446941323345818,3.7515605493133584,2.4406991260923845,7.740324594257178,5.5181023720349565,1.7415730337078652,1.8976279650436954,6.061173533083646,5.149812734082397,2.8776529338327093,2.209737827715356,2.428214731585518,7.303370786516854,4.375780274656679,2.7715355805243447,5.930087390761548,4.406991260923846,4.875156054931336,5.443196004993759,7.615480649188515,2.990012484394507,4.675405742821473,5.324594257178527,6.741573033707866,7.303370786516854,4.594257178526841,3.3770287141073654,4.400749063670412,4.575530586766542,2.9275905118601746,7.17852684144819,4.70661672908864,3.533083645443196,6.928838951310862,3.033707865168539,4.637952559300874,5.212234706616729,5.593008739076155,6.866416978776529,4.956304619225968,7.116104868913857,7.116104868913857,5.187265917602996,4.00749063670412,2.1910112359550564,3.0212234706616727,7.677902621722847,4.906367041198502,4.207240948813983,2.0599250936329585,7.49063670411985,5.33083645443196,6.367041198501872,3.0024968789013733,4.837702871410737,4.575530586766542,6.928838951310862,1.6666666666666667,3.4581772784019975,3.1647940074906367,3.8514357053682895,6.991260923845194,2.397003745318352,6.367041198501872,5.711610486891385,5.324594257178527, +5.205992509363296,6.803995006242197,3.826466916354557,6.741573033707866,4.875156054931336,4.887640449438202,1.8289637952559301,4.644194756554308,2.4157303370786516,4.0761548064918856,4.750312109862672,2.727840199750312,1.5168539325842696,1.772784019975031,2.902621722846442,7.365792759051186,6.067415730337078,4.332084893882647,3.2084893882646695,2.7590511860174782,5.3745318352059925,6.866416978776529,4.207240948813983,7.0536828963795255,6.30461922596754,2.4344569288389515,2.153558052434457,1.9350811485642945,3.383270911360799,5.318352059925093,1.5106117353308364,2.6092384519350813,6.198501872659176,5.1373283395755305,2.4656679151061174,3.776529338327091,2.471910112359551,7.740324594257178,5.543071161048689,1.7602996254681649,1.9225967540574282,6.079900124843945,5.174781523096129,2.908863920099875,2.2347066167290888,2.453183520599251,7.303370786516854,4.413233458177278,2.808988764044944,5.961298377028713,4.438202247191011,4.906367041198502,5.468164794007491,7.615480649188515,3.0087390761548067,4.700374531835206,5.355805243445693,6.803995006242197,7.303370786516854,4.619225967540574,3.3957553058676653,4.425717852684145,4.606741573033708,2.9463171036204745,7.240948813982522,4.7315855181023725,3.5580524344569286,6.991260923845194,3.058676654182272,4.662921348314606,5.243445692883895,5.6242197253433215,6.866416978776529,4.987515605493134,7.17852684144819,7.17852684144819,5.205992509363296,4.044943820224719,2.215980024968789,3.0524344569288386,7.740324594257178,4.937578027465668,4.238451935081149,2.084893882646692,7.553058676654182,5.355805243445693,6.429463171036204,3.033707865168539,4.8626716604244695,4.606741573033708,6.928838951310862,1.6916354556803994,3.4893882646691634,3.1897627965043696,3.888888888888889,7.0536828963795255,2.428214731585518,6.367041198501872,5.736579275905119,5.34956304619226, +5.237203495630462,6.803995006242197,3.857677902621723,6.741573033707866,4.900124843945068,4.906367041198502,1.8476903870162298,4.66916354556804,2.446941323345818,4.1011235955056184,4.775280898876405,2.7590511860174782,1.5418227215980027,1.8039950062421974,2.9275905118601746,7.365792759051186,6.092384519350812,4.3632958801498125,3.233458177278402,2.777777777777778,5.405742821473158,6.866416978776529,4.2322097378277155,7.116104868913857,6.30461922596754,2.4656679151061174,2.184769038701623,1.9600499375780276,3.4144818976279647,5.343320848938826,1.5355805243445693,2.640449438202247,6.223470661672909,5.162297128589263,2.4906367041198503,3.7952559300873907,2.5093632958801497,7.740324594257178,5.561797752808988,1.7790262172284643,1.9475655430711611,6.104868913857677,5.199750312109863,2.9400749063670415,2.2659176029962547,2.478152309612984,7.365792759051186,4.444444444444445,2.84019975031211,5.986267166042447,4.4694132334581775,4.937578027465668,5.493133583021224,7.677902621722847,3.033707865168539,4.719101123595506,5.380774032459426,6.803995006242197,7.365792759051186,4.644194756554308,3.4144818976279647,4.444444444444445,4.637952559300874,2.9712858926342074,7.240948813982522,4.750312109862672,3.576779026217228,6.991260923845194,3.0836454431960054,4.687890137328339,5.274656679151062,5.655430711610487,6.928838951310862,5.012484394506866,7.17852684144819,7.17852684144819,5.230961298377029,4.0761548064918856,2.2409488139825218,3.089887640449438,7.740324594257178,4.9687890137328345,4.269662921348314,2.1036204744069913,7.553058676654182,5.3745318352059925,6.429463171036204,3.0649188514357055,4.887640449438202,4.637952559300874,6.928838951310862,1.7166042446941323,3.5205992509363297,3.2209737827715355,3.920099875156055,7.0536828963795255,2.459425717852684,6.429463171036204,5.761548064918852,5.36828963795256, +5.268414481897628,6.866416978776529,3.888888888888889,6.803995006242197,4.925093632958801,4.931335830212235,1.8726591760299625,4.694132334581773,2.478152309612984,4.119850187265917,4.794007490636704,2.790262172284644,1.5605493133583022,1.8352059925093633,2.9525593008739075,7.428214731585518,6.123595505617978,4.394506866416979,3.258426966292135,2.8027465667915106,5.436953807740325,6.928838951310862,4.257178526841448,7.116104868913857,6.367041198501872,2.4906367041198503,2.215980024968789,1.9850187265917605,3.4456928838951315,5.36828963795256,1.5605493133583022,2.671660424469413,6.242197253433209,5.181023720349563,2.5093632958801497,3.8202247191011236,2.5405742821473156,7.8027465667915115,5.586766541822722,1.797752808988764,1.9662921348314608,6.129837702871411,5.224719101123595,2.977528089887641,2.2971285892634206,2.5093632958801497,7.365792759051186,4.475655430711611,2.871410736579276,6.0174781523096135,4.49438202247191,4.975031210986267,5.524344569288389,7.677902621722847,3.058676654182272,4.737827715355805,5.411985018726591,6.866416978776529,7.365792759051186,4.675405742821473,3.4332084893882646,4.463171036204744,4.66916354556804,2.990012484394507,7.303370786516854,4.775280898876405,3.6017478152309614,6.991260923845194,3.108614232209738,4.712858926342073,5.305867665418227,5.686641697877653,6.928838951310862,5.0374531835206,7.240948813982522,7.17852684144819,5.249687890137328,4.107365792759051,2.2659176029962547,3.1210986267166043,7.8027465667915115,5.0,4.307116104868914,2.128589263420724,7.615480649188515,5.399500624219725,6.491885143570538,3.0961298377028714,4.912609238451935,4.675405742821473,6.991260923845194,1.7415730337078652,3.5518102372034956,3.245942571785269,3.951310861423221,7.116104868913857,2.4968789013732833,6.429463171036204,5.792759051186017,5.393258426966292, +5.299625468164794,6.866416978776529,3.926342072409488,6.803995006242197,4.950062421972534,4.950062421972534,1.8976279650436954,4.719101123595506,2.5031210986267167,4.144818976279651,4.818976279650437,2.8152309612983775,1.585518102372035,1.8664169787765295,2.977528089887641,7.428214731585518,6.154806491885144,4.425717852684145,3.2833957553058677,2.82147315855181,5.461922596754057,6.928838951310862,4.282147315855181,7.17852684144819,6.367041198501872,2.521847690387016,2.2409488139825218,2.009987515605493,3.4769038701622974,5.393258426966292,1.585518102372035,2.7091136079900124,6.242197253433209,5.205992509363296,2.5343320848938826,3.8451935081148565,2.578027465667915,7.8027465667915115,5.611735330836455,1.8227215980024971,1.9912609238451935,6.1485642946317105,5.2559300873907615,3.0087390761548067,2.322097378277154,2.5343320848938826,7.428214731585518,4.51310861423221,2.908863920099875,6.048689138576779,4.525593008739076,5.0062421972534334,5.549313358302123,7.740324594257178,3.0836454431960054,4.762796504369538,5.436953807740325,6.866416978776529,7.428214731585518,4.700374531835206,3.451935081148564,4.488139825218477,4.700374531835206,3.0149812734082393,7.303370786516854,4.794007490636704,3.620474406991261,7.0536828963795255,3.1335830212234708,4.737827715355805,5.337078651685393,5.724094881398252,6.991260923845194,5.068664169787765,7.240948813982522,7.240948813982522,5.268414481897628,4.144818976279651,2.2908863920099876,3.1585518102372037,7.8027465667915115,5.031210986267166,4.33832709113608,2.1473158551810236,7.615480649188515,5.424469413233458,6.491885143570538,3.1273408239700373,4.937578027465668,4.70661672908864,6.991260923845194,1.7602996254681649,3.5830212234706615,3.2709113607990012,3.9887640449438204,7.17852684144819,2.5280898876404496,6.491885143570538,5.81772784019975,5.418227215980025, +5.324594257178527,6.928838951310862,3.957553058676654,6.866416978776529,4.975031210986267,4.975031210986267,1.916354556803995,4.750312109862672,2.5343320848938826,4.169787765293384,4.837702871410737,2.8464419475655434,1.6104868913857677,1.8976279650436954,3.0024968789013733,7.49063670411985,6.186017478152309,4.456928838951311,3.3083645443196006,2.8464419475655434,5.493133583021224,6.991260923845194,4.307116104868914,7.17852684144819,6.429463171036204,2.5530586766541825,2.272159800249688,2.034956304619226,3.508114856429463,5.418227215980025,1.6104868913857677,2.740324594257179,6.30461922596754,5.224719101123595,2.5593008739076155,3.870162297128589,2.6092384519350813,7.865168539325843,5.636704119850187,1.8414481897627966,2.016229712858926,6.173533083645444,5.280898876404494,3.0399500624219726,2.35330836454432,2.5593008739076155,7.428214731585518,4.544319600499376,2.9400749063670415,6.079900124843945,4.55056179775281,5.043695380774032,5.574282147315855,7.8027465667915115,3.108614232209738,4.781523096129837,5.468164794007491,6.928838951310862,7.428214731585518,4.725343320848939,3.4769038701622974,4.506866416978776,4.7315855181023725,3.033707865168539,7.365792759051186,4.818976279650437,3.6454431960049942,7.0536828963795255,3.1585518102372037,4.762796504369538,5.36828963795256,5.7553058676654185,6.991260923845194,5.093632958801498,7.303370786516854,7.240948813982522,5.293383270911361,4.176029962546816,2.3158551810237205,3.1960049937578026,7.865168539325843,5.062421972534332,4.375780274656679,2.1722846441947565,7.677902621722847,5.449438202247191,6.491885143570538,3.1585518102372037,4.962546816479401,4.737827715355805,7.0536828963795255,1.7852684144818978,3.6142322097378274,3.3021223470661676,4.019975031210986,7.17852684144819,2.565543071161049,6.491885143570538,5.842696629213483,5.436953807740325, +5.355805243445693,6.928838951310862,3.9887640449438204,6.866416978776529,5.0,5.0,1.941323345817728,4.775280898876405,2.565543071161049,4.188514357053683,4.856429463171036,2.8776529338327093,1.6292134831460674,1.9225967540574282,3.027465667915106,7.49063670411985,6.217228464419476,4.488139825218477,3.3333333333333335,2.865168539325843,5.524344569288389,6.991260923845194,4.332084893882647,7.240948813982522,6.429463171036204,2.578027465667915,2.303370786516854,2.0599250936329585,3.5393258426966296,5.443196004993759,1.6354556803995006,2.7715355805243447,6.30461922596754,5.249687890137328,2.578027465667915,3.888888888888889,2.6466916354556806,7.865168539325843,5.66167290886392,1.8601747815230962,2.0411985018726595,6.192259675405743,5.305867665418227,3.0711610486891385,2.3845193508114857,2.5905118601747814,7.49063670411985,4.575530586766542,2.977528089887641,6.104868913857677,4.581772784019975,5.074906367041199,5.599250936329588,7.8027465667915115,3.1335830212234708,4.800249687890138,5.493133583021224,6.991260923845194,7.428214731585518,4.750312109862672,3.495630461922597,4.525593008739076,4.762796504369538,3.058676654182272,7.365792759051186,4.843945068664169,3.6641697877652937,7.0536828963795255,3.183520599250936,4.787765293383271,5.399500624219725,5.786516853932584,6.991260923845194,5.118601747815231,7.303370786516854,7.240948813982522,5.312109862671661,4.213483146067416,2.340823970037453,3.227215980024969,7.927590511860175,5.087390761548065,4.406991260923846,2.1910112359550564,7.677902621722847,5.474406991260924,6.554307116104869,3.1897627965043696,4.987515605493134,4.769038701622971,7.0536828963795255,1.8102372034956304,3.6454431960049942,3.3270911360799,4.051186017478152,7.240948813982522,2.596754057428215,6.554307116104869,5.867665418227216,5.461922596754057, +5.3870162297128585,6.991260923845194,4.02621722846442,6.928838951310862,5.024968789013733,5.0187265917602994,1.9662921348314608,4.800249687890138,2.596754057428215,4.213483146067416,4.881398252184769,2.908863920099875,1.6541822721598003,1.9538077403245941,3.0524344569288386,7.553058676654182,6.242197253433209,4.519350811485642,3.3583021223470664,2.8901373283395753,5.549313358302123,7.0536828963795255,4.3508114856429465,7.240948813982522,6.491885143570538,2.6092384519350813,2.33458177278402,2.084893882646692,3.5705368289637955,5.468164794007491,1.6541822721598003,2.808988764044944,6.30461922596754,5.274656679151062,2.602996254681648,3.9138576779026217,2.6779026217228465,7.927590511860175,5.686641697877653,1.8851435705368291,2.066167290886392,6.217228464419476,5.337078651685393,3.108614232209738,2.4157303370786516,2.6154806491885143,7.49063670411985,4.612983770287141,3.0087390761548067,6.1360799001248445,4.606741573033708,5.1123595505617985,5.6242197253433215,7.865168539325843,3.15230961298377,4.825218476903871,5.524344569288389,6.991260923845194,7.49063670411985,4.781523096129837,3.5143570536828963,4.55056179775281,4.794007490636704,3.0836454431960054,7.428214731585518,4.8626716604244695,3.689138576779026,7.116104868913857,3.2084893882646695,4.812734082397004,5.430711610486892,5.81772784019975,7.0536828963795255,5.149812734082397,7.365792759051186,7.303370786516854,5.33083645443196,4.244694132334582,2.3657927590511862,3.2646691635455682,7.927590511860175,5.118601747815231,4.438202247191011,2.215980024968789,7.740324594257178,5.499375780274657,6.554307116104869,3.2209737827715355,5.012484394506866,4.800249687890138,7.116104868913857,1.8352059925093633,3.6766541822721597,3.352059925093633,4.082397003745319,7.240948813982522,2.634207240948814,6.554307116104869,5.892634207240949,5.48689138576779, +5.418227215980025,6.991260923845194,4.057428214731585,6.928838951310862,5.049937578027466,5.043695380774032,1.9850187265917605,4.825218476903871,2.6217228464419473,4.238451935081149,4.900124843945068,2.933832709113608,1.6791510611735332,1.9850187265917605,3.077403245942572,7.553058676654182,6.30461922596754,4.55056179775281,3.383270911360799,2.908863920099875,5.580524344569288,7.0536828963795255,4.375780274656679,7.303370786516854,6.491885143570538,2.640449438202247,2.3657927590511862,2.1098626716604243,3.6017478152309614,5.493133583021224,1.6791510611735332,2.84019975031211,6.367041198501872,5.293383270911361,2.6217228464419473,3.938826466916354,2.715355805243446,7.927590511860175,5.711610486891385,1.9038701622971288,2.091136079900125,6.235955056179775,5.3620474406991265,3.139825218476904,2.4406991260923845,2.640449438202247,7.553058676654182,4.644194756554308,3.0399500624219726,6.167290886392011,4.637952559300874,5.143570536828964,5.655430711610487,7.865168539325843,3.1772784019975036,4.843945068664169,5.555555555555556,7.0536828963795255,7.49063670411985,4.806491885143571,3.533083645443196,4.569288389513109,4.831460674157303,3.102372034956305,7.428214731585518,4.887640449438202,3.7078651685393256,7.116104868913857,3.233458177278402,4.837702871410737,5.461922596754057,5.855181023720349,7.0536828963795255,5.174781523096129,7.365792759051186,7.303370786516854,5.355805243445693,4.282147315855181,2.3907615480649187,3.295880149812734,7.990012484394507,5.149812734082397,4.475655430711611,2.2347066167290888,7.740324594257178,5.524344569288389,6.616729088639201,3.2521847690387014,5.0374531835206,4.831460674157303,7.116104868913857,1.8601747815230962,3.701622971285893,3.3770287141073654,4.119850187265917,7.303370786516854,2.66541822721598,6.616729088639201,5.917602996254682,5.511860174781523, +5.449438202247191,7.0536828963795255,4.094881398252185,6.928838951310862,5.074906367041199,5.068664169787765,2.009987515605493,4.850187265917603,2.6529338327091136,4.257178526841448,4.925093632958801,2.965043695380774,1.6978776529338326,2.016229712858926,3.102372034956305,7.615480649188515,6.30461922596754,4.581772784019975,3.408239700374532,2.933832709113608,5.611735330836455,7.116104868913857,4.400749063670412,7.303370786516854,6.554307116104869,2.66541822721598,2.397003745318352,2.134831460674157,3.6329588014981273,5.5181023720349565,1.704119850187266,2.8776529338327093,6.367041198501872,5.318352059925093,2.6466916354556806,3.9637952559300875,2.752808988764045,7.990012484394507,5.730337078651686,1.9225967540574282,2.1161048689138577,6.242197253433209,5.3870162297128585,3.17103620474407,2.471910112359551,2.671660424469413,7.553058676654182,4.675405742821473,3.077403245942572,6.198501872659176,4.66916354556804,5.174781523096129,5.68039950062422,7.927590511860175,3.202247191011236,4.868913857677903,5.580524344569288,7.0536828963795255,7.553058676654182,4.831460674157303,3.5518102372034956,4.588014981273409,4.8626716604244695,3.1273408239700373,7.428214731585518,4.906367041198502,3.732833957553059,7.116104868913857,3.258426966292135,4.8626716604244695,5.493133583021224,5.8863920099875156,7.0536828963795255,5.199750312109863,7.428214731585518,7.303370786516854,5.3745318352059925,4.313358302122348,2.4157303370786516,3.3333333333333335,7.990012484394507,5.181023720349563,4.506866416978776,2.259675405742821,7.8027465667915115,5.543071161048689,6.616729088639201,3.2833957553058677,5.062421972534332,4.868913857677903,7.17852684144819,1.8851435705368291,3.732833957553059,3.408239700374532,4.151061173533084,7.365792759051186,2.696629213483146,6.616729088639201,5.942571785268415,5.5305867665418225, +5.480649188514358,7.0536828963795255,4.1260923845193505,6.991260923845194,5.099875156054932,5.087390761548065,2.034956304619226,4.881398252184769,2.68414481897628,4.282147315855181,4.943820224719102,2.9962546816479403,1.7228464419475658,2.0474406991260925,3.1210986267166043,7.615480649188515,6.367041198501872,4.612983770287141,3.4332084893882646,2.9525593008739075,5.636704119850187,7.116104868913857,4.425717852684145,7.365792759051186,6.554307116104869,2.696629213483146,2.4219725343320846,2.15980024968789,3.6641697877652937,5.543071161048689,1.7290886392009988,2.908863920099875,6.367041198501872,5.337078651685393,2.671660424469413,3.982521847690387,2.7840199750312107,7.990012484394507,5.7553058676654185,1.9475655430711611,2.134831460674157,6.30461922596754,5.411985018726591,3.202247191011236,2.5031210986267167,2.696629213483146,7.615480649188515,4.712858926342073,3.108614232209738,6.223470661672909,4.694132334581773,5.212234706616729,5.705368289637952,7.927590511860175,3.227215980024969,4.887640449438202,5.611735330836455,7.116104868913857,7.553058676654182,4.8626716604244695,3.5705368289637955,4.612983770287141,4.893882646691636,3.1460674157303368,7.49063670411985,4.931335830212235,3.7515605493133584,7.17852684144819,3.2771535580524347,4.887640449438202,5.5181023720349565,5.917602996254682,7.116104868913857,5.230961298377029,7.428214731585518,7.365792759051186,5.393258426966292,4.3508114856429465,2.4406991260923845,3.3645443196004994,8.05243445692884,5.212234706616729,4.538077403245943,2.278401997503121,7.8027465667915115,5.568039950062421,6.616729088639201,3.3146067415730336,5.087390761548065,4.900124843945068,7.17852684144819,1.9101123595505618,3.764044943820225,3.4332084893882646,4.18227215980025,7.365792759051186,2.7340823970037453,6.679151061173534,5.967540574282147,5.555555555555556, +5.511860174781523,7.116104868913857,4.157303370786517,6.991260923845194,5.1248439450686645,5.1123595505617985,2.0536828963795255,4.906367041198502,2.715355805243446,4.307116104868914,4.9687890137328345,3.027465667915106,1.7478152309612984,2.0724094881398254,3.1460674157303368,7.677902621722847,6.367041198501872,4.644194756554308,3.4581772784019975,2.977528089887641,5.667915106117353,7.17852684144819,4.450686641697877,7.365792759051186,6.616729088639201,2.727840199750312,2.453183520599251,2.184769038701623,3.6953807740324596,5.568039950062421,1.7540574282147314,2.9400749063670415,6.429463171036204,5.3620474406991265,2.690387016229713,4.00749063670412,2.82147315855181,8.05243445692884,5.7802746566791505,1.9662921348314608,2.15980024968789,6.30461922596754,5.443196004993759,3.2397003745318353,2.5280898876404496,2.7215980024968793,7.615480649188515,4.7440699126092385,3.1460674157303368,6.242197253433209,4.725343320848939,5.243445692883895,5.730337078651686,7.990012484394507,3.2521847690387014,4.906367041198502,5.636704119850187,7.17852684144819,7.553058676654182,4.887640449438202,3.589263420724095,4.631710362047441,4.925093632958801,3.17103620474407,7.49063670411985,4.956304619225968,3.776529338327091,7.17852684144819,3.3021223470661676,4.912609238451935,5.549313358302123,5.948813982521848,7.116104868913857,5.2559300873907615,7.49063670411985,7.365792759051186,5.418227215980025,4.382022471910113,2.4656679151061174,3.4019975031210987,8.11485642946317,5.243445692883895,4.575530586766542,2.303370786516854,7.865168539325843,5.593008739076155,6.679151061173534,3.3458177278401995,5.118601747815231,4.931335830212235,7.240948813982522,1.9288389513108615,3.7952559300873907,3.4581772784019975,4.219725343320849,7.428214731585518,2.7652933832709112,6.679151061173534,5.998751560549313,5.580524344569288, +5.543071161048689,7.116104868913857,4.194756554307116,7.0536828963795255,5.149812734082397,5.1373283395755305,2.0786516853932584,4.931335830212235,2.740324594257179,4.325842696629214,4.987515605493134,3.0524344569288386,1.766541822721598,2.1036204744069913,3.17103620474407,7.677902621722847,6.429463171036204,4.675405742821473,3.4831460674157304,2.9962546816479403,5.69912609238452,7.17852684144819,4.475655430711611,7.428214731585518,6.616729088639201,2.752808988764045,2.4843945068664173,2.209737827715356,3.732833957553059,5.593008739076155,1.7790262172284643,2.977528089887641,6.429463171036204,5.380774032459426,2.715355805243446,4.032459425717852,2.852684144818976,8.05243445692884,5.805243445692884,1.9850187265917605,2.184769038701623,6.30461922596754,5.468164794007491,3.2709113607990012,2.5593008739076155,2.752808988764045,7.677902621722847,4.781523096129837,3.1772784019975036,6.30461922596754,4.750312109862672,5.280898876404494,5.7553058676654185,8.05243445692884,3.2709113607990012,4.931335830212235,5.667915106117353,7.17852684144819,7.615480649188515,4.912609238451935,3.607990012484395,4.65043695380774,4.956304619225968,3.1960049937578026,7.553058676654182,4.975031210986267,3.7952559300873907,7.17852684144819,3.3270911360799,4.937578027465668,5.580524344569288,5.980024968789014,7.17852684144819,5.280898876404494,7.49063670411985,7.365792759051186,5.436953807740325,4.419475655430712,2.4906367041198503,3.439450686641698,8.11485642946317,5.274656679151062,4.606741573033708,2.322097378277154,7.865168539325843,5.617977528089888,6.679151061173534,3.3770287141073654,5.143570536828964,4.962546816479401,7.240948813982522,1.9538077403245941,3.826466916354557,3.4831460674157304,4.250936329588015,7.49063670411985,2.8027465667915106,6.741573033707866,6.023720349563047,5.605493133583021, +5.574282147315855,7.17852684144819,4.225967540574282,7.0536828963795255,5.174781523096129,5.15605493133583,2.1036204744069913,4.956304619225968,2.7715355805243447,4.3508114856429465,5.0062421972534334,3.0836454431960054,1.7915106117353308,2.134831460674157,3.1960049937578026,7.677902621722847,6.429463171036204,4.70661672908864,3.508114856429463,3.0212234706616727,5.724094881398252,7.240948813982522,4.500624219725343,7.428214731585518,6.616729088639201,2.7840199750312107,2.515605493133583,2.2347066167290888,3.764044943820225,5.617977528089888,1.8039950062421974,3.0087390761548067,6.429463171036204,5.405742821473158,2.7340823970037453,4.051186017478152,2.8901373283395753,8.11485642946317,5.830212234706617,2.00374531835206,2.209737827715356,6.367041198501872,5.493133583021224,3.3021223470661676,2.5905118601747814,2.777777777777778,7.677902621722847,4.812734082397004,3.2084893882646695,6.30461922596754,4.781523096129837,5.312109862671661,5.786516853932584,8.05243445692884,3.295880149812734,4.950062421972534,5.692883895131087,7.240948813982522,7.615480649188515,4.943820224719102,3.6267166042446943,4.675405742821473,4.987515605493134,3.214731585518102,7.553058676654182,5.0,3.8202247191011236,7.240948813982522,3.352059925093633,4.962546816479401,5.611735330836455,6.0174781523096135,7.17852684144819,5.312109862671661,7.553058676654182,7.428214731585518,5.455680399500624,4.450686641697877,2.515605493133583,3.470661672908864,8.177278401997503,5.305867665418227,4.637952559300874,2.340823970037453,7.927590511860175,5.64294631710362,6.741573033707866,3.408239700374532,5.168539325842697,4.9937578027465666,7.303370786516854,1.978776529338327,3.857677902621723,3.5143570536828963,4.282147315855181,7.49063670411985,2.8339575530586765,6.741573033707866,6.048689138576779,5.6242197253433215, +5.599250936329588,7.17852684144819,4.257178526841448,7.116104868913857,5.199750312109863,5.181023720349563,2.122347066167291,4.987515605493134,2.8027465667915106,4.375780274656679,5.031210986267166,3.114856429463171,1.8102372034956304,2.1660424469413235,3.2209737827715355,7.740324594257178,6.491885143570538,4.737827715355805,3.5268414481897628,3.0399500624219726,5.7553058676654185,7.240948813982522,4.525593008739076,7.49063670411985,6.679151061173534,2.8152309612983775,2.546816479400749,2.259675405742821,3.7952559300873907,5.64294631710362,1.8289637952559301,3.0399500624219726,6.491885143570538,5.430711610486892,2.7590511860174782,4.0761548064918856,2.9213483146067416,8.11485642946317,5.855181023720349,2.0287141073657926,2.2347066167290888,6.367041198501872,5.524344569288389,3.3333333333333335,2.6217228464419473,2.8027465667915106,7.740324594257178,4.843945068664169,3.245942571785269,6.367041198501872,4.806491885143571,5.343320848938826,5.811485642946318,8.11485642946317,3.320848938826467,4.9687890137328345,5.724094881398252,7.240948813982522,7.677902621722847,4.9687890137328345,3.651685393258427,4.694132334581773,5.0187265917602994,3.2397003745318353,7.615480649188515,5.0187265917602994,3.8389513108614235,7.240948813982522,3.3770287141073654,4.987515605493134,5.64294631710362,6.048689138576779,7.17852684144819,5.337078651685393,7.553058676654182,7.428214731585518,5.480649188514358,4.488139825218477,2.5405742821473156,3.508114856429463,8.239700374531834,5.337078651685393,4.675405742821473,2.3657927590511862,7.927590511860175,5.667915106117353,6.741573033707866,3.439450686641698,5.19350811485643,5.031210986267166,7.303370786516854,2.00374531835206,3.888888888888889,3.5393258426966296,4.31960049937578,7.553058676654182,2.871410736579276,6.803995006242197,6.073657927590512,5.6491885143570535, +5.630461922596755,7.240948813982522,4.294631710362047,7.116104868913857,5.224719101123595,5.205992509363296,2.1473158551810236,5.012484394506866,2.8339575530586765,4.394506866416979,5.049937578027466,3.139825218476904,1.8352059925093633,2.1910112359550564,3.245942571785269,7.740324594257178,6.491885143570538,4.769038701622971,3.5518102372034956,3.0649188514357055,5.786516853932584,7.303370786516854,4.55056179775281,7.49063670411985,6.679151061173534,2.84019975031211,2.578027465667915,2.2846441947565546,3.826466916354557,5.667915106117353,1.8539325842696628,3.077403245942572,6.491885143570538,5.449438202247191,2.7840199750312107,4.1011235955056184,2.958801498127341,8.177278401997503,5.8739076154806495,2.0474406991260925,2.259675405742821,6.367041198501872,5.549313358302123,3.370786516853933,2.6466916354556806,2.8339575530586765,7.740324594257178,4.881398252184769,3.2771535580524347,6.367041198501872,4.837702871410737,5.380774032459426,5.836454431960051,8.11485642946317,3.3458177278401995,4.9937578027465666,5.749063670411985,7.303370786516854,7.677902621722847,4.9937578027465666,3.6704119850187267,4.712858926342073,5.049937578027466,3.258426966292135,7.615480649188515,5.043695380774032,3.8639200998751564,7.240948813982522,3.4019975031210987,5.012484394506866,5.674157303370786,6.079900124843945,7.240948813982522,5.3620474406991265,7.615480649188515,7.428214731585518,5.499375780274657,4.519350811485642,2.565543071161049,3.5393258426966296,8.239700374531834,5.36828963795256,4.70661672908864,2.3845193508114857,7.990012484394507,5.692883895131087,6.741573033707866,3.470661672908864,5.218476903870163,5.062421972534332,7.365792759051186,2.0287141073657926,3.920099875156055,3.564294631710362,4.3508114856429465,7.553058676654182,2.902621722846442,6.803995006242197,6.098626716604246,5.674157303370786, +5.66167290886392,7.303370786516854,4.325842696629214,7.17852684144819,5.249687890137328,5.224719101123595,2.1722846441947565,5.0374531835206,2.8589263420724094,4.419475655430712,5.074906367041199,3.17103620474407,1.8601747815230962,2.2222222222222223,3.2709113607990012,7.8027465667915115,6.554307116104869,4.800249687890138,3.576779026217228,3.0836454431960054,5.811485642946318,7.303370786516854,4.569288389513109,7.553058676654182,6.741573033707866,2.871410736579276,2.602996254681648,2.309612983770287,3.857677902621723,5.692883895131087,1.8789013732833957,3.108614232209738,6.491885143570538,5.474406991260924,2.8027465667915106,4.1260923845193505,2.990012484394507,8.177278401997503,5.8988764044943816,2.066167290886392,2.278401997503121,6.429463171036204,5.574282147315855,3.4019975031210987,2.6779026217228465,2.8589263420724094,7.8027465667915115,4.912609238451935,3.3146067415730336,6.429463171036204,4.868913857677903,5.411985018726591,5.861423220973783,8.177278401997503,3.370786516853933,5.012484394506866,5.7802746566791505,7.365792759051186,7.677902621722847,5.024968789013733,3.689138576779026,4.737827715355805,5.081148564294631,3.2833957553058677,7.677902621722847,5.068664169787765,3.882646691635456,7.303370786516854,3.4269662921348316,5.0374531835206,5.705368289637952,6.111111111111111,7.240948813982522,5.393258426966292,7.615480649188515,7.49063670411985,5.524344569288389,4.55056179775281,2.5905118601747814,3.576779026217228,8.302122347066168,5.399500624219725,4.737827715355805,2.4094881398252186,7.990012484394507,5.711610486891385,6.803995006242197,3.5018726591760303,5.243445692883895,5.093632958801498,7.365792759051186,2.0536828963795255,3.951310861423221,3.595505617977528,4.382022471910113,7.615480649188515,2.9400749063670415,6.866416978776529,6.123595505617978,5.69912609238452, +5.692883895131087,7.303370786516854,4.357053682896379,7.17852684144819,5.274656679151062,5.249687890137328,2.1910112359550564,5.062421972534332,2.8901373283395753,4.444444444444445,5.093632958801498,3.202247191011236,1.8789013732833957,2.253433208489388,3.295880149812734,7.8027465667915115,6.554307116104869,4.831460674157303,3.6017478152309614,3.102372034956305,5.842696629213483,7.365792759051186,4.594257178526841,7.553058676654182,6.741573033707866,2.902621722846442,2.634207240948814,2.33458177278402,3.888888888888889,5.711610486891385,1.9038701622971288,3.1460674157303368,6.554307116104869,5.493133583021224,2.8277153558052435,4.144818976279651,3.027465667915106,8.239700374531834,5.9238451935081144,2.091136079900125,2.303370786516854,6.429463171036204,5.599250936329588,3.4332084893882646,2.7091136079900124,2.8838951310861427,7.8027465667915115,4.943820224719102,3.3458177278401995,6.429463171036204,4.893882646691636,5.449438202247191,5.8863920099875156,8.177278401997503,3.3957553058676653,5.031210986267166,5.805243445692884,7.365792759051186,7.740324594257178,5.049937578027466,3.7078651685393256,4.7565543071161045,5.1123595505617985,3.3021223470661676,7.677902621722847,5.087390761548065,3.9076154806491883,7.303370786516854,3.451935081148564,5.062421972534332,5.736579275905119,6.1485642946317105,7.240948813982522,5.418227215980025,7.677902621722847,7.49063670411985,5.543071161048689,4.588014981273409,2.6154806491885143,3.6142322097378274,8.302122347066168,5.430711610486892,4.775280898876405,2.428214731585518,8.05243445692884,5.736579275905119,6.803995006242197,3.533083645443196,5.268414481897628,5.1248439450686645,7.365792759051186,2.0724094881398254,3.982521847690387,3.620474406991261,4.413233458177278,7.677902621722847,2.9712858926342074,6.866416978776529,6.1485642946317105,5.717852684144819, +5.724094881398252,7.365792759051186,4.394506866416979,7.240948813982522,5.299625468164794,5.274656679151062,2.215980024968789,5.087390761548065,2.9213483146067416,4.463171036204744,5.118601747815231,3.233458177278402,1.9038701622971288,2.2846441947565546,3.320848938826467,7.865168539325843,6.616729088639201,4.8626716604244695,3.6267166042446943,3.1273408239700373,5.8739076154806495,7.365792759051186,4.619225967540574,7.615480649188515,6.803995006242197,2.9275905118601746,2.66541822721598,2.359550561797753,3.920099875156055,5.736579275905119,1.9288389513108615,3.1772784019975036,6.554307116104869,5.5181023720349565,2.8464419475655434,4.169787765293384,3.058676654182272,8.239700374531834,5.948813982521848,2.1098626716604243,2.328339575530587,6.429463171036204,5.630461922596755,3.464419475655431,2.7340823970037453,2.9151061173533086,7.865168539325843,4.9812734082397006,3.3770287141073654,6.491885143570538,4.925093632958801,5.480649188514358,5.917602996254682,8.239700374531834,3.4144818976279647,5.056179775280899,5.836454431960051,7.428214731585518,7.740324594257178,5.074906367041199,3.7265917602996255,4.775280898876405,5.143570536828964,3.3270911360799,7.740324594257178,5.1123595505617985,3.926342072409488,7.303370786516854,3.4769038701622974,5.081148564294631,5.767790262172285,6.179775280898876,7.303370786516854,5.449438202247191,7.677902621722847,7.49063670411985,5.561797752808988,4.619225967540574,2.640449438202247,3.6454431960049942,8.3645443196005,5.461922596754057,4.806491885143571,2.453183520599251,8.05243445692884,5.761548064918852,6.866416978776529,3.564294631710362,5.293383270911361,5.15605493133583,7.428214731585518,2.097378277153558,4.013732833957553,3.6454431960049942,4.450686641697877,7.677902621722847,3.0024968789013733,6.928838951310862,6.173533083645444,5.742821473158552, +5.7553058676654185,7.365792759051186,4.425717852684145,7.240948813982522,5.324594257178527,5.293383270911361,2.2409488139825218,5.118601747815231,2.9525593008739075,4.488139825218477,5.1373283395755305,3.258426966292135,1.9288389513108615,2.3158551810237205,3.3458177278401995,7.865168539325843,6.616729088639201,4.893882646691636,3.651685393258427,3.1460674157303368,5.8988764044943816,7.428214731585518,4.644194756554308,7.615480649188515,6.803995006242197,2.958801498127341,2.696629213483146,2.3845193508114857,3.951310861423221,5.761548064918852,1.9538077403245941,3.2084893882646695,6.616729088639201,5.536828963795256,2.871410736579276,4.194756554307116,3.0961298377028714,8.302122347066168,5.97378277153558,2.128589263420724,2.35330836454432,6.491885143570538,5.655430711610487,3.5018726591760303,2.7652933832709112,2.9400749063670415,7.865168539325843,5.012484394506866,3.4144818976279647,6.491885143570538,4.950062421972534,5.5181023720349565,5.942571785268415,8.302122347066168,3.439450686641698,5.074906367041199,5.867665418227216,7.428214731585518,7.8027465667915115,5.106117353308365,3.745318352059925,4.800249687890138,5.181023720349563,3.352059925093633,7.740324594257178,5.131086142322098,3.951310861423221,7.365792759051186,3.5018726591760303,5.106117353308365,5.799001248439451,6.210986267166042,7.303370786516854,5.474406991260924,7.740324594257178,7.553058676654182,5.586766541822722,4.656679151061174,2.6591760299625467,3.682896379525593,8.426966292134832,5.493133583021224,4.837702871410737,2.471910112359551,8.11485642946317,5.786516853932584,6.866416978776529,3.595505617977528,5.318352059925093,5.19350811485643,7.428214731585518,2.122347066167291,4.044943820224719,3.6704119850187267,4.4818976279650435,7.740324594257178,3.0399500624219726,6.928838951310862,6.20474406991261,5.767790262172285, +5.786516853932584,7.428214731585518,4.463171036204744,7.240948813982522,5.34956304619226,5.318352059925093,2.259675405742821,5.143570536828964,2.977528089887641,4.51310861423221,5.15605493133583,3.2896379525593007,1.9475655430711611,2.340823970037453,3.370786516853933,7.927590511860175,6.679151061173534,4.925093632958801,3.6766541822721597,3.17103620474407,5.930087390761548,7.428214731585518,4.66916354556804,7.677902621722847,6.866416978776529,2.990012484394507,2.727840199750312,2.4094881398252186,3.982521847690387,5.786516853932584,1.978776529338327,3.245942571785269,6.616729088639201,5.561797752808988,2.8963795255930087,4.219725343320849,3.1273408239700373,8.302122347066168,5.998751560549313,2.1473158551810236,2.3782771535580522,6.491885143570538,5.68039950062422,3.533083645443196,2.7965043695380776,2.965043695380774,7.927590511860175,5.049937578027466,3.4456928838951315,6.491885143570538,4.9812734082397006,5.549313358302123,5.967540574282147,8.302122347066168,3.464419475655431,5.093632958801498,5.892634207240949,7.49063670411985,7.8027465667915115,5.131086142322098,3.764044943820225,4.818976279650437,5.212234706616729,3.370786516853933,7.8027465667915115,5.15605493133583,3.970037453183521,7.365792759051186,3.5205992509363297,5.131086142322098,5.830212234706617,6.242197253433209,7.365792759051186,5.499375780274657,7.740324594257178,7.553058676654182,5.605493133583021,4.687890137328339,2.68414481897628,3.714107365792759,8.426966292134832,5.524344569288389,4.875156054931336,2.4968789013732833,8.11485642946317,5.811485642946318,6.866416978776529,3.6267166042446943,5.343320848938826,5.224719101123595,7.49063670411985,2.1473158551810236,4.0761548064918856,3.701622971285893,4.51310861423221,7.8027465667915115,3.0711610486891385,6.991260923845194,6.229712858926342,5.786516853932584, +5.81772784019975,7.428214731585518,4.49438202247191,7.303370786516854,5.3745318352059925,5.337078651685393,2.2846441947565546,5.168539325842697,3.0087390761548067,4.531835205992509,5.181023720349563,3.320848938826467,1.9725343320848938,2.3720349563046192,3.3957553058676653,7.927590511860175,6.679151061173534,4.950062421972534,3.701622971285893,3.1897627965043696,5.961298377028713,7.49063670411985,4.694132334581773,7.677902621722847,6.866416978776529,3.0149812734082393,2.7590511860174782,2.4344569288389515,4.013732833957553,5.811485642946318,2.00374531835206,3.2771535580524347,6.616729088639201,5.586766541822722,2.9151061173533086,4.238451935081149,3.1647940074906367,8.3645443196005,6.023720349563047,2.1722846441947565,2.4032459425717856,6.554307116104869,5.711610486891385,3.564294631710362,2.8277153558052435,2.9962546816479403,7.927590511860175,5.081148564294631,3.4769038701622974,6.554307116104869,5.0062421972534334,5.580524344569288,5.992509363295881,8.3645443196005,3.4893882646691634,5.118601747815231,5.9238451935081144,7.553058676654182,7.8027465667915115,5.15605493133583,3.7827715355805243,4.837702871410737,5.243445692883895,3.3957553058676653,7.8027465667915115,5.181023720349563,3.9950062421972534,7.365792759051186,3.545568039950062,5.15605493133583,5.861423220973783,6.30461922596754,7.365792759051186,5.5305867665418225,7.8027465667915115,7.553058676654182,5.6242197253433215,4.725343320848939,2.7091136079900124,3.7515605493133584,8.489388264669165,5.555555555555556,4.906367041198502,2.515605493133583,8.177278401997503,5.836454431960051,6.928838951310862,3.6579275905118602,5.36828963795256,5.2559300873907615,7.49063670411985,2.1722846441947565,4.107365792759051,3.7265917602996255,4.55056179775281,7.8027465667915115,3.108614232209738,6.991260923845194,6.242197253433209,5.811485642946318, +5.842696629213483,7.49063670411985,4.525593008739076,7.303370786516854,5.405742821473158,5.3620474406991265,2.309612983770287,5.19350811485643,3.0399500624219726,4.556803995006242,5.199750312109863,3.352059925093633,1.9975031210986267,2.4032459425717856,3.420724094881398,7.990012484394507,6.741573033707866,4.9812734082397006,3.7265917602996255,3.214731585518102,5.986267166042447,7.49063670411985,4.719101123595506,7.740324594257178,6.928838951310862,3.046192259675406,2.7840199750312107,2.459425717852684,4.044943820224719,5.836454431960051,2.0287141073657926,3.3083645443196006,6.679151061173534,5.605493133583021,2.9400749063670415,4.263420724094882,3.1960049937578026,8.3645443196005,6.0424469413233455,2.1910112359550564,2.428214731585518,6.554307116104869,5.736579275905119,3.595505617977528,2.852684144818976,3.0212234706616727,7.990012484394507,5.1123595505617985,3.5143570536828963,6.554307116104869,5.0374531835206,5.617977528089888,6.0174781523096135,8.3645443196005,3.5143570536828963,5.1373283395755305,5.948813982521848,7.553058676654182,7.865168539325843,5.187265917602996,3.801498127340824,4.8626716604244695,5.274656679151062,3.4144818976279647,7.865168539325843,5.199750312109863,4.013732833957553,7.428214731585518,3.5705368289637955,5.181023720349563,5.8863920099875156,6.30461922596754,7.365792759051186,5.555555555555556,7.8027465667915115,7.615480649188515,5.6491885143570535,4.7565543071161045,2.7340823970037453,3.7827715355805243,8.551810237203496,5.586766541822722,4.937578027465668,2.5405742821473156,8.177278401997503,5.855181023720349,6.928838951310862,3.689138576779026,5.393258426966292,5.287141073657928,7.553058676654182,2.1972534332084894,4.138576779026217,3.7515605493133584,4.581772784019975,7.865168539325843,3.139825218476904,7.0536828963795255,6.30461922596754,5.836454431960051, +5.8739076154806495,7.49063670411985,4.563046192259676,7.365792759051186,5.430711610486892,5.3870162297128585,2.328339575530587,5.218476903870163,3.0711610486891385,4.581772784019975,5.224719101123595,3.3770287141073654,2.016229712858926,2.4344569288389515,3.4456928838951315,7.990012484394507,6.741573033707866,5.012484394506866,3.7515605493133584,3.233458177278402,6.0174781523096135,7.553058676654182,4.7440699126092385,7.740324594257178,6.928838951310862,3.077403245942572,2.8152309612983775,2.4843945068664173,4.082397003745319,5.861423220973783,2.0536828963795255,3.3458177278401995,6.679151061173534,5.630461922596755,2.958801498127341,4.288389513108614,3.233458177278402,8.426966292134832,6.067415730337078,2.209737827715356,2.446941323345818,6.554307116104869,5.761548064918852,3.6329588014981273,2.8838951310861427,3.046192259675406,7.990012484394507,5.149812734082397,3.545568039950062,6.616729088639201,5.068664169787765,5.6491885143570535,6.048689138576779,8.426966292134832,3.533083645443196,5.162297128589263,5.980024968789014,7.615480649188515,7.865168539325843,5.212234706616729,3.826466916354557,4.881398252184769,5.305867665418227,3.439450686641698,7.865168539325843,5.224719101123595,4.038701622971286,7.428214731585518,3.595505617977528,5.205992509363296,5.917602996254682,6.367041198501872,7.428214731585518,5.580524344569288,7.865168539325843,7.615480649188515,5.667915106117353,4.794007490636704,2.7590511860174782,3.8202247191011236,8.551810237203496,5.617977528089888,4.975031210986267,2.5593008739076155,8.239700374531834,5.880149812734083,6.991260923845194,3.7203495630461925,5.418227215980025,5.318352059925093,7.553058676654182,2.2222222222222223,4.169787765293384,3.776529338327091,4.612983770287141,7.865168539325843,3.1772784019975036,7.0536828963795255,6.30461922596754,5.861423220973783, +5.905118601747815,7.553058676654182,4.594257178526841,7.365792759051186,5.455680399500624,5.405742821473158,2.35330836454432,5.249687890137328,3.0961298377028714,4.600499375780275,5.243445692883895,3.408239700374532,2.0411985018726595,2.4656679151061174,3.470661672908864,8.05243445692884,6.803995006242197,5.043695380774032,3.776529338327091,3.258426966292135,6.048689138576779,7.553058676654182,4.769038701622971,7.8027465667915115,6.991260923845194,3.102372034956305,2.8464419475655434,2.5093632958801497,4.1136079900124844,5.8863920099875156,2.0786516853932584,3.3770287141073654,6.679151061173534,5.6491885143570535,2.9837702871410734,4.313358302122348,3.2646691635455682,8.426966292134832,6.092384519350812,2.2347066167290888,2.471910112359551,6.616729088639201,5.786516853932584,3.6641697877652937,2.9151061173533086,3.077403245942572,8.05243445692884,5.181023720349563,3.5830212234706615,6.616729088639201,5.093632958801498,5.686641697877653,6.073657927590512,8.426966292134832,3.5580524344569286,5.181023720349563,6.004993757802747,7.615480649188515,7.927590511860175,5.237203495630462,3.8451935081148565,4.900124843945068,5.337078651685393,3.464419475655431,7.927590511860175,5.243445692883895,4.057428214731585,7.428214731585518,3.620474406991261,5.230961298377029,5.948813982521848,6.367041198501872,7.428214731585518,5.611735330836455,7.865168539325843,7.615480649188515,5.686641697877653,4.825218476903871,2.7840199750312107,3.857677902621723,8.614232209737828,5.64294631710362,5.0062421972534334,2.5842696629213484,8.239700374531834,5.905118601747815,6.991260923845194,3.7515605493133584,5.443196004993759,5.34956304619226,7.615480649188515,2.2409488139825218,4.200998751560549,3.8077403245942576,4.65043695380774,7.927590511860175,3.2084893882646695,7.116104868913857,6.30461922596754,5.880149812734083, +5.936329588014981,7.553058676654182,4.6254681647940075,7.428214731585518,5.480649188514358,5.430711610486892,2.3782771535580522,5.274656679151062,3.1273408239700373,4.6254681647940075,5.268414481897628,3.439450686641698,2.066167290886392,2.4906367041198503,3.495630461922597,8.05243445692884,6.803995006242197,5.074906367041199,3.801498127340824,3.2771535580524347,6.073657927590512,7.615480649188515,4.787765293383271,7.8027465667915115,6.991260923845194,3.1335830212234708,2.8776529338327093,2.5343320848938826,4.144818976279651,5.9113607990012484,2.1036204744069913,3.4144818976279647,6.741573033707866,5.674157303370786,3.0087390761548067,4.332084893882647,3.3021223470661676,8.489388264669165,6.117353308364544,2.253433208489388,2.4968789013732833,6.616729088639201,5.81772784019975,3.6953807740324596,2.9400749063670415,3.102372034956305,8.05243445692884,5.212234706616729,3.6142322097378274,6.679151061173534,5.1248439450686645,5.717852684144819,6.098626716604246,8.489388264669165,3.5830212234706615,5.199750312109863,6.036204744069912,7.677902621722847,7.927590511860175,5.268414481897628,3.8639200998751564,4.925093632958801,5.36828963795256,3.4831460674157304,7.927590511860175,5.268414481897628,4.082397003745319,7.49063670411985,3.6454431960049942,5.2559300873907615,5.980024968789014,6.429463171036204,7.428214731585518,5.636704119850187,7.927590511860175,7.677902621722847,5.711610486891385,4.8626716604244695,2.808988764044944,3.888888888888889,8.614232209737828,5.674157303370786,5.043695380774032,2.602996254681648,8.302122347066168,5.930087390761548,6.991260923845194,3.7827715355805243,5.468164794007491,5.3870162297128585,7.615480649188515,2.2659176029962547,4.2322097378277155,3.83270911360799,4.681647940074906,7.990012484394507,3.245942571785269,7.116104868913857,6.367041198501872,5.905118601747815, +5.967540574282147,7.615480649188515,4.662921348314606,7.428214731585518,5.50561797752809,5.455680399500624,2.397003745318352,5.299625468164794,3.1585518102372037,4.65043695380774,5.287141073657928,3.464419475655431,2.084893882646692,2.521847690387016,3.5205992509363297,8.11485642946317,6.866416978776529,5.106117353308365,3.826466916354557,3.3021223470661676,6.104868913857677,7.615480649188515,4.812734082397004,7.8027465667915115,7.0536828963795255,3.1647940074906367,2.908863920099875,2.5593008739076155,4.176029962546816,5.936329588014981,2.128589263420724,3.4456928838951315,6.741573033707866,5.692883895131087,3.027465667915106,4.357053682896379,3.3333333333333335,8.489388264669165,6.142322097378277,2.272159800249688,2.521847690387016,6.616729088639201,5.842696629213483,3.732833957553059,2.9712858926342074,3.1273408239700373,8.11485642946317,5.249687890137328,3.6454431960049942,6.679151061173534,5.149812734082397,5.7553058676654185,6.123595505617978,8.551810237203496,3.607990012484395,5.224719101123595,6.061173533083646,7.740324594257178,7.927590511860175,5.293383270911361,3.882646691635456,4.943820224719102,5.399500624219725,3.508114856429463,7.990012484394507,5.293383270911361,4.1011235955056184,7.49063670411985,3.6704119850187267,5.280898876404494,6.01123595505618,6.429463171036204,7.49063670411985,5.66167290886392,7.927590511860175,7.677902621722847,5.730337078651686,4.893882646691636,2.8339575530586765,3.926342072409488,8.67665418227216,5.705368289637952,5.074906367041199,2.6279650436953808,8.302122347066168,5.955056179775282,7.0536828963795255,3.81398252184769,5.493133583021224,5.418227215980025,7.677902621722847,2.2908863920099876,4.263420724094882,3.857677902621723,4.712858926342073,7.990012484394507,3.2771535580524347,7.17852684144819,6.367041198501872,5.930087390761548, +5.998751560549313,7.615480649188515,4.694132334581773,7.49063670411985,5.5305867665418225,5.474406991260924,2.4219725343320846,5.324594257178527,3.183520599250936,4.66916354556804,5.305867665418227,3.495630461922597,2.1098626716604243,2.5530586766541825,3.545568039950062,8.11485642946317,6.866416978776529,5.1373283395755305,3.8514357053682895,3.320848938826467,6.1360799001248445,7.677902621722847,4.837702871410737,7.865168539325843,7.0536828963795255,3.1897627965043696,2.933832709113608,2.5842696629213484,4.207240948813983,5.961298377028713,2.153558052434457,3.4769038701622974,6.741573033707866,5.717852684144819,3.0524344569288386,4.382022471910113,3.370786516853933,8.551810237203496,6.167290886392011,2.2908863920099876,2.546816479400749,6.679151061173534,5.867665418227216,3.764044943820225,3.0024968789013733,3.1585518102372037,8.11485642946317,5.280898876404494,3.682896379525593,6.741573033707866,5.181023720349563,5.786516853932584,6.1485642946317105,8.551810237203496,3.6329588014981273,5.243445692883895,6.092384519350812,7.740324594257178,7.990012484394507,5.318352059925093,3.9013732833957557,4.962546816479401,5.430711610486892,3.5268414481897628,7.990012484394507,5.312109862671661,4.1260923845193505,7.553058676654182,3.6953807740324596,5.305867665418227,6.0424469413233455,6.491885143570538,7.49063670411985,5.692883895131087,7.990012484394507,7.677902621722847,5.749063670411985,4.931335830212235,2.8589263420724094,3.957553058676654,8.739076154806492,5.736579275905119,5.106117353308365,2.6466916354556806,8.3645443196005,5.980024968789014,7.0536828963795255,3.8451935081148565,5.5181023720349565,5.449438202247191,7.677902621722847,2.3158551810237205,4.294631710362047,3.888888888888889,4.7440699126092385,8.05243445692884,3.3083645443196006,7.17852684144819,6.429463171036204,5.955056179775282, +6.029962546816479,7.677902621722847,4.725343320848939,7.49063670411985,5.555555555555556,5.499375780274657,2.446941323345818,5.34956304619226,3.214731585518102,4.694132334581773,5.33083645443196,3.5268414481897628,2.134831460674157,2.5842696629213484,3.5705368289637955,8.177278401997503,6.928838951310862,5.168539325842697,3.870162297128589,3.3458177278401995,6.161048689138577,7.677902621722847,4.8626716604244695,7.865168539325843,7.0536828963795255,3.2209737827715355,2.965043695380774,2.6092384519350813,4.238451935081149,5.986267166042447,2.1785268414481895,3.5143570536828963,6.803995006242197,5.742821473158552,3.0711610486891385,4.400749063670412,3.4019975031210987,8.551810237203496,6.186017478152309,2.3158551810237205,2.571785268414482,6.679151061173534,5.8988764044943816,3.7952559300873907,3.033707865168539,3.183520599250936,8.177278401997503,5.312109862671661,3.714107365792759,6.741573033707866,5.212234706616729,5.81772784019975,6.179775280898876,8.614232209737828,3.6579275905118602,5.262172284644195,6.117353308364544,7.8027465667915115,7.990012484394507,5.34956304619226,3.920099875156055,4.987515605493134,5.461922596754057,3.5518102372034956,8.05243445692884,5.337078651685393,4.144818976279651,7.553058676654182,3.7203495630461925,5.33083645443196,6.073657927590512,6.491885143570538,7.553058676654182,5.717852684144819,7.990012484394507,7.740324594257178,5.774032459425719,4.962546816479401,2.8838951310861427,3.9950062421972534,8.739076154806492,5.767790262172285,5.143570536828964,2.671660424469413,8.3645443196005,6.004993757802747,7.116104868913857,3.8764044943820224,5.543071161048689,5.480649188514358,7.740324594257178,2.340823970037453,4.31960049937578,3.9138576779026217,4.781523096129837,8.11485642946317,3.3458177278401995,7.240948813982522,6.429463171036204,5.97378277153558, +6.061173533083646,7.677902621722847,4.762796504369538,7.49063670411985,5.580524344569288,5.524344569288389,2.4656679151061174,5.380774032459426,3.245942571785269,4.719101123595506,5.34956304619226,3.5580524344569286,2.153558052434457,2.6154806491885143,3.589263420724095,8.177278401997503,6.928838951310862,5.199750312109863,3.8951310861423223,3.3645443196004994,6.192259675405743,7.740324594257178,4.887640449438202,7.927590511860175,7.116104868913857,3.2521847690387014,2.9962546816479403,2.634207240948814,4.269662921348314,6.01123595505618,2.203495630461923,3.545568039950062,6.803995006242197,5.761548064918852,3.0961298377028714,4.425717852684145,3.439450686641698,8.614232209737828,6.210986267166042,2.33458177278402,2.596754057428215,6.679151061173534,5.9238451935081144,3.826466916354557,3.058676654182272,3.2084893882646695,8.177278401997503,5.34956304619226,3.7515605493133584,6.803995006242197,5.237203495630462,5.855181023720349,6.20474406991261,8.614232209737828,3.6766541822721597,5.287141073657928,6.1485642946317105,7.8027465667915115,8.05243445692884,5.3745318352059925,3.938826466916354,5.0062421972534334,5.493133583021224,3.5705368289637955,8.05243445692884,5.355805243445693,4.169787765293384,7.553058676654182,3.745318352059925,5.355805243445693,6.104868913857677,6.554307116104869,7.553058676654182,5.742821473158552,8.05243445692884,7.740324594257178,5.792759051186017,4.9937578027465666,2.908863920099875,4.02621722846442,8.801498127340825,5.799001248439451,5.174781523096129,2.690387016229713,8.426966292134832,6.023720349563047,7.116104868913857,3.9076154806491883,5.568039950062421,5.511860174781523,7.740324594257178,2.3657927590511862,4.3508114856429465,3.938826466916354,4.812734082397004,8.11485642946317,3.3770287141073654,7.240948813982522,6.429463171036204,5.998751560549313, +6.086142322097379,7.740324594257178,4.794007490636704,7.553058676654182,5.605493133583021,5.543071161048689,2.4906367041198503,5.405742821473158,3.2771535580524347,4.737827715355805,5.3745318352059925,3.5830212234706615,2.1785268414481895,2.640449438202247,3.6142322097378274,8.177278401997503,,,3.920099875156055,3.3895131086142323,6.223470661672909,7.740324594257178,4.912609238451935,7.927590511860175,7.116104868913857,3.2771535580524347,3.027465667915106,2.6591760299625467,4.300873907615481,6.036204744069912,2.2284644194756553,3.576779026217228,6.803995006242197,5.786516853932584,3.1210986267166043,4.450686641697877,3.470661672908864,8.614232209737828,6.235955056179775,2.35330836454432,2.6154806491885143,6.741573033707866,5.948813982521848,3.8639200998751564,3.089887640449438,3.2397003745318353,8.239700374531834,,3.7827715355805243,6.803995006242197,5.268414481897628,5.8863920099875156,,8.67665418227216,3.701622971285893,5.305867665418227,6.179775280898876,,8.05243445692884,5.399500624219725,3.957553058676654,5.024968789013733,5.5305867665418225,3.595505617977528,8.11485642946317,5.380774032459426,4.188514357053683,7.615480649188515,3.764044943820225,5.380774032459426,6.1360799001248445,6.554307116104869,7.553058676654182,5.774032459425719,8.05243445692884,7.740324594257178,5.811485642946318,5.031210986267166,2.933832709113608,4.063670411985019,,5.830212234706617,5.205992509363296,2.7091136079900124,,6.048689138576779,7.116104868913857,3.938826466916354,5.593008739076155,5.549313358302123,,2.3907615480649187,4.382022471910113,3.9637952559300875,4.843945068664169,,3.4144818976279647,7.240948813982522,6.491885143570538,6.023720349563047, +6.117353308364544,7.8027465667915115,4.831460674157303,7.553058676654182,5.630461922596755,5.568039950062421,2.515605493133583,5.430711610486892,3.3021223470661676,4.762796504369538,5.393258426966292,3.6142322097378274,2.203495630461923,2.671660424469413,3.639200998751561,8.239700374531834,,,3.9450686641697876,3.408239700374532,6.242197253433209,7.8027465667915115,4.937578027465668,7.990012484394507,7.17852684144819,3.3083645443196006,3.058676654182272,2.68414481897628,4.332084893882647,6.061173533083646,2.253433208489388,3.6142322097378274,6.866416978776529,5.805243445692884,3.139825218476904,4.475655430711611,3.508114856429463,8.67665418227216,6.242197253433209,2.3782771535580522,2.640449438202247,6.741573033707866,5.97378277153558,3.8951310861423223,3.1210986267166043,3.2646691635455682,8.239700374531834,,3.81398252184769,6.866416978776529,5.293383270911361,5.9238451935081144,,8.67665418227216,,5.324594257178527,6.20474406991261,,8.05243445692884,5.430711610486892,3.9762796504369535,5.049937578027466,5.561797752808988,3.620474406991261,8.11485642946317,5.405742821473158,4.213483146067416,7.615480649188515,3.7890137328339577,5.405742821473158,6.167290886392011,6.616729088639201,7.615480649188515,5.799001248439451,8.11485642946317,7.8027465667915115,5.836454431960051,5.062421972534332,,4.1011235955056184,,5.861423220973783,5.243445692883895,2.7340823970037453,,6.073657927590512,7.17852684144819,3.970037453183521,5.617977528089888,5.580524344569288,,2.4094881398252186,4.413233458177278,3.9950062421972534,4.881398252184769,,3.4456928838951315,7.303370786516854,6.491885143570538,6.048689138576779, +6.1485642946317105,7.8027465667915115,4.8626716604244695,7.615480649188515,5.655430711610487,5.593008739076155,2.5343320848938826,5.455680399500624,3.3333333333333335,4.787765293383271,5.418227215980025,3.6454431960049942,2.2222222222222223,2.702871410736579,3.6641697877652937,8.239700374531834,,,3.970037453183521,3.4269662921348316,6.30461922596754,7.8027465667915115,4.962546816479401,7.990012484394507,7.17852684144819,3.339575530586767,3.089887640449438,2.7091136079900124,4.3632958801498125,6.086142322097379,2.272159800249688,3.6454431960049942,6.866416978776529,5.830212234706617,3.1647940074906367,4.49438202247191,3.545568039950062,8.67665418227216,6.30461922596754,2.397003745318352,2.66541822721598,6.741573033707866,6.004993757802747,3.926342072409488,3.1460674157303368,3.2896379525593007,8.302122347066168,,,6.866416978776529,5.324594257178527,5.955056179775282,,8.739076154806492,,5.34956304619226,6.235955056179775,,8.11485642946317,5.455680399500624,4.001248439450687,5.068664169787765,5.593008739076155,3.639200998751561,8.177278401997503,5.424469413233458,4.2322097378277155,7.615480649188515,3.81398252184769,5.430711610486892,6.198501872659176,6.616729088639201,7.615480649188515,5.830212234706617,8.11485642946317,7.8027465667915115,5.855181023720349,5.099875156054932,,4.132334581772784,,5.892634207240949,5.274656679151062,2.752808988764045,,6.098626716604246,7.17852684144819,4.001248439450687,5.6491885143570535,5.611735330836455,,2.4344569288389515,4.444444444444445,4.019975031210986,4.912609238451935,,3.4831460674157304,7.303370786516854,6.554307116104869,6.067415730337078, +,7.865168539325843,4.893882646691636,,5.68039950062422,5.611735330836455,2.5593008739076155,,3.3645443196004994,4.806491885143571,5.436953807740325,3.6766541822721597,2.247191011235955,2.7340823970037453,3.689138576779026,8.302122347066168,,,3.9950062421972534,3.451935081148564,6.30461922596754,7.865168539325843,4.987515605493134,8.05243445692884,7.240948813982522,3.3645443196004994,3.114856429463171,2.7340823970037453,4.400749063670412,6.111111111111111,2.2971285892634206,3.682896379525593,6.866416978776529,5.848938826466916,3.183520599250936,4.519350811485642,3.576779026217228,8.739076154806492,6.30461922596754,2.4157303370786516,2.690387016229713,6.803995006242197,6.029962546816479,3.957553058676654,3.1772784019975036,3.3146067415730336,8.302122347066168,,,6.928838951310862,5.34956304619226,5.986267166042447,,8.801498127340825,,5.36828963795256,6.242197253433209,,8.11485642946317,5.480649188514358,4.019975031210986,5.087390761548065,5.6242197253433215,3.6641697877652937,8.177278401997503,5.449438202247191,4.257178526841448,7.677902621722847,3.8389513108614235,5.455680399500624,6.229712858926342,6.679151061173534,7.615480649188515,5.855181023720349,8.177278401997503,7.8027465667915115,5.880149812734083,5.131086142322098,,4.169787765293384,,5.9238451935081144,5.305867665418227,2.777777777777778,,6.123595505617978,7.240948813982522,4.032459425717852,5.674157303370786,5.64294631710362,,2.459425717852684,4.475655430711611,4.044943820224719,4.943820224719102,,3.5143570536828963,7.365792759051186,6.554307116104869,6.092384519350812, +,7.865168539325843,4.931335830212235,,5.705368289637952,5.636704119850187,2.5842696629213484,,3.3957553058676653,4.831460674157303,5.455680399500624,3.701622971285893,2.272159800249688,2.7652933832709112,3.714107365792759,,,,4.019975031210986,3.470661672908864,6.367041198501872,7.865168539325843,5.0062421972534334,,7.240948813982522,3.3957553058676653,3.1460674157303368,2.7590511860174782,4.431960049937578,6.1360799001248445,,3.714107365792759,6.928838951310862,5.8739076154806495,3.2084893882646695,4.544319600499376,3.6142322097378274,8.739076154806492,6.30461922596754,2.4406991260923845,2.715355805243446,6.803995006242197,6.054931335830212,3.9950062421972534,3.2084893882646695,3.3458177278401995,8.3645443196005,,,6.928838951310862,5.380774032459426,6.023720349563047,,8.801498127340825,,5.3870162297128585,6.30461922596754,,8.177278401997503,5.50561797752809,4.038701622971286,5.1123595505617985,5.655430711610487,3.682896379525593,8.239700374531834,5.468164794007491,4.275905118601748,7.677902621722847,3.8639200998751564,5.480649188514358,6.242197253433209,6.679151061173534,7.677902621722847,5.880149812734083,8.177278401997503,7.865168539325843,5.8988764044943816,5.168539325842697,,,,5.955056179775282,5.343320848938826,2.7965043695380776,,6.1485642946317105,7.240948813982522,4.063670411985019,5.69912609238452,5.674157303370786,,2.4843945068664173,4.506866416978776,4.069912609238452,4.9812734082397006,,3.5518102372034956,7.365792759051186,6.616729088639201,6.117353308364544, +,7.927590511860175,4.962546816479401,,5.730337078651686,5.655430711610487,2.602996254681648,,3.420724094881398,4.850187265917603,5.480649188514358,3.732833957553059,2.2908863920099876,2.790262172284644,3.7390761548064915,,,,4.044943820224719,3.495630461922597,6.367041198501872,7.927590511860175,5.031210986267166,,7.303370786516854,3.4269662921348316,3.1772784019975036,2.7840199750312107,4.463171036204744,,,3.745318352059925,6.928838951310862,5.8988764044943816,3.233458177278402,4.569288389513109,3.6454431960049942,8.801498127340825,6.367041198501872,2.459425717852684,2.740324594257179,6.866416978776529,6.086142322097379,4.02621722846442,3.2397003745318353,3.370786516853933,8.3645443196005,,,6.991260923845194,5.411985018726591,6.054931335830212,,8.863920099875156,,5.411985018726591,6.30461922596754,,8.177278401997503,5.536828963795256,4.057428214731585,5.131086142322098,5.686641697877653,3.7078651685393256,8.239700374531834,5.493133583021224,4.294631710362047,7.677902621722847,3.888888888888889,5.50561797752809,6.30461922596754,6.741573033707866,7.677902621722847,5.9113607990012484,8.239700374531834,7.865168539325843,5.917602996254682,5.199750312109863,,,,5.986267166042447,5.3745318352059925,2.82147315855181,,6.173533083645444,7.240948813982522,4.094881398252185,5.724094881398252,5.705368289637952,,2.5093632958801497,4.538077403245943,4.1011235955056184,5.012484394506866,,3.5830212234706615,7.428214731585518,,6.1360799001248445, +,7.927590511860175,4.9937578027465666,,5.7553058676654185,5.68039950062422,2.6279650436953808,,3.451935081148564,4.875156054931336,5.499375780274657,3.764044943820225,2.3158551810237205,2.82147315855181,3.764044943820225,,,,4.069912609238452,3.5143570536828963,6.367041198501872,7.990012484394507,5.056179775280899,,7.303370786516854,3.4581772784019975,3.2084893882646695,2.808988764044944,4.49438202247191,,,3.7827715355805243,6.928838951310862,5.917602996254682,3.2521847690387014,,3.682896379525593,8.801498127340825,6.367041198501872,2.478152309612984,2.7590511860174782,6.866416978776529,6.111111111111111,4.057428214731585,3.2646691635455682,3.3957553058676653,8.426966292134832,,,6.991260923845194,5.436953807740325,6.092384519350812,,8.863920099875156,,5.430711610486892,6.367041198501872,,8.239700374531834,5.561797752808988,4.0761548064918856,5.149812734082397,5.717852684144819,3.7265917602996255,8.302122347066168,5.5181023720349565,4.31960049937578,7.740324594257178,3.9138576779026217,5.5305867665418225,6.30461922596754,6.741573033707866,7.740324594257178,5.936329588014981,8.239700374531834,7.865168539325843,5.942571785268415,5.237203495630462,,,,6.0174781523096135,5.405742821473158,2.84019975031211,,6.192259675405743,7.303370786516854,4.1260923845193505,5.749063670411985,5.742821473158552,,2.5343320848938826,4.569288389513109,4.1260923845193505,5.043695380774032,,3.6142322097378274,7.428214731585518,,6.161048689138577, +,7.990012484394507,5.031210986267166,,5.7802746566791505,5.705368289637952,,,3.4831460674157304,4.900124843945068,5.524344569288389,3.7952559300873907,2.340823970037453,2.852684144818976,3.7890137328339577,,,,4.094881398252185,3.5393258426966296,6.429463171036204,7.990012484394507,5.081148564294631,,7.365792759051186,3.4831460674157304,3.2397003745318353,2.8339575530586765,4.525593008739076,,,3.81398252184769,6.991260923845194,,3.2771535580524347,,3.714107365792759,8.863920099875156,6.429463171036204,2.4968789013732833,2.7840199750312107,6.866416978776529,6.1360799001248445,4.0886392009987516,3.295880149812734,,8.426966292134832,,,7.0536828963795255,5.468164794007491,6.123595505617978,,8.926342072409488,,5.455680399500624,6.367041198501872,,8.239700374531834,,4.094881398252185,5.174781523096129,5.749063670411985,3.7515605493133584,8.302122347066168,5.536828963795256,4.33832709113608,7.740324594257178,3.938826466916354,5.555555555555556,,6.803995006242197,7.740324594257178,5.961298377028713,8.302122347066168,7.927590511860175,5.961298377028713,5.268414481897628,,,,6.048689138576779,5.443196004993759,2.865168539325843,,6.217228464419476,7.303370786516854,4.157303370786517,5.774032459425719,5.774032459425719,,2.5530586766541825,4.600499375780275,4.151061173533084,5.081148564294631,,3.651685393258427,,,6.186017478152309, +,,5.062421972534332,,5.805243445692884,,,,3.5143570536828963,4.918851435705368,5.543071161048689,3.8202247191011236,2.359550561797753,2.8838951310861427,3.81398252184769,,,,4.119850187265917,3.5580524344569286,6.429463171036204,8.05243445692884,5.106117353308365,,7.365792759051186,3.5143570536828963,3.2709113607990012,2.8589263420724094,4.556803995006242,,,3.8451935081148565,6.991260923845194,,3.295880149812734,,3.7515605493133584,8.863920099875156,6.429463171036204,2.521847690387016,2.808988764044944,6.928838951310862,6.161048689138577,4.1260923845193505,3.3270911360799,,8.489388264669165,,,7.0536828963795255,5.493133583021224,6.161048689138577,,,,5.474406991260924,6.429463171036204,,8.239700374531834,,4.1136079900124844,5.19350811485643,5.7802746566791505,3.776529338327091,8.3645443196005,5.561797752808988,4.3632958801498125,7.740324594257178,3.9637952559300875,5.580524344569288,,6.803995006242197,,5.992509363295881,8.302122347066168,7.927590511860175,5.980024968789014,5.305867665418227,,,,6.079900124843945,5.474406991260924,2.8838951310861427,,6.242197253433209,7.365792759051186,4.18227215980025,5.799001248439451,5.805243445692884,,2.578027465667915,4.631710362047441,4.18227215980025,5.1123595505617985,,3.682896379525593,,,6.210986267166042, +,,5.093632958801498,,5.830212234706617,,,,3.5393258426966296,4.943820224719102,5.568039950062421,3.8514357053682895,2.3845193508114857,2.908863920099875,3.8389513108614235,,,,4.144818976279651,3.5830212234706615,6.491885143570538,,5.131086142322098,,7.428214731585518,3.545568039950062,3.295880149812734,2.8838951310861427,4.588014981273409,,,3.882646691635456,6.991260923845194,,3.320848938826467,,,8.926342072409488,6.429463171036204,2.5405742821473156,2.8339575530586765,6.928838951310862,,,3.352059925093633,,8.489388264669165,,,7.116104868913857,5.524344569288389,6.192259675405743,,,,5.493133583021224,6.429463171036204,,8.302122347066168,,4.132334581772784,5.212234706616729,5.811485642946318,3.7952559300873907,8.3645443196005,5.580524344569288,4.382022471910113,7.8027465667915115,3.9887640449438204,5.605493133583021,,6.866416978776529,,6.0174781523096135,8.3645443196005,7.927590511860175,6.004993757802747,5.337078651685393,,,,6.111111111111111,5.50561797752809,2.908863920099875,,6.242197253433209,7.365792759051186,4.213483146067416,5.823970037453184,5.836454431960051,,2.602996254681648,4.662921348314606,4.207240948813983,5.143570536828964,,3.7203495630461925,,,6.229712858926342, +,,5.131086142322098,,5.855181023720349,,,,3.5705368289637955,4.9687890137328345,5.586766541822722,3.882646691635456,2.4094881398252186,2.9400749063670415,3.8639200998751564,,,,4.169787765293384,3.6017478152309614,6.491885143570538,,5.15605493133583,,7.428214731585518,3.5705368289637955,3.3270911360799,2.908863920099875,4.619225967540574,,,3.9138576779026217,7.0536828963795255,,3.3458177278401995,,,8.926342072409488,6.491885143570538,2.5593008739076155,2.8589263420724094,6.928838951310862,,,3.383270911360799,,8.551810237203496,,,7.116104868913857,,,,,,5.5181023720349565,6.491885143570538,,8.302122347066168,,4.151061173533084,5.237203495630462,5.842696629213483,3.8202247191011236,8.426966292134832,5.605493133583021,4.406991260923846,7.8027465667915115,4.00749063670412,5.630461922596755,,,,6.0424469413233455,8.3645443196005,7.990012484394507,6.023720349563047,5.3745318352059925,,,,,5.543071161048689,2.9275905118601746,,6.30461922596754,7.428214731585518,4.244694132334582,5.848938826466916,5.867665418227216,,2.6279650436953808,4.694132334581773,4.2322097378277155,5.174781523096129,,3.7515605493133584,,,6.242197253433209, +,,5.162297128589263,,,,,,3.6017478152309614,4.987515605493134,5.605493133583021,3.9076154806491883,2.428214731585518,2.9712858926342074,,,,,4.194756554307116,3.6267166042446943,6.554307116104869,,5.181023720349563,,7.49063670411985,3.6017478152309614,3.3583021223470664,2.933832709113608,4.65043695380774,,,,7.0536828963795255,,3.3645443196004994,,,8.98876404494382,,2.5842696629213484,2.8838951310861427,6.991260923845194,,,3.4144818976279647,,8.551810237203496,,,7.116104868913857,,,,,,5.536828963795256,6.491885143570538,,8.3645443196005,,4.176029962546816,5.2559300873907615,5.880149812734083,3.8389513108614235,8.426966292134832,5.6242197253433215,4.425717852684145,7.8027465667915115,4.032459425717852,,,,,6.073657927590512,8.426966292134832,7.990012484394507,6.0424469413233455,5.405742821473158,,,,,,2.9525593008739075,,,7.428214731585518,,5.8739076154806495,5.905118601747815,,,,4.257178526841448,5.212234706616729,,,,,6.30461922596754, +,,,,,,,,3.6329588014981273,5.012484394506866,5.630461922596755,3.938826466916354,2.453183520599251,3.0024968789013733,,,,,4.213483146067416,3.6454431960049942,6.554307116104869,,5.205992509363296,,7.49063670411985,3.6329588014981273,,2.958801498127341,4.681647940074906,,,,7.0536828963795255,,3.3895131086142323,,,8.98876404494382,,2.602996254681648,2.908863920099875,6.991260923845194,,,,,,,,7.17852684144819,,,,,,5.555555555555556,6.491885143570538,,8.3645443196005,,4.194756554307116,5.274656679151062,5.9113607990012484,3.8639200998751564,8.489388264669165,5.6491885143570535,4.450686641697877,,4.057428214731585,,,,,6.098626716604246,8.426966292134832,7.990012484394507,6.067415730337078,,,,,,,2.9712858926342074,,,7.428214731585518,,5.8988764044943816,5.936329588014981,,,,4.288389513108614,5.243445692883895,,,,,6.30461922596754, +,,,,,,,,3.6579275905118602,5.0374531835206,5.6491885143570535,,2.471910112359551,3.033707865168539,,,,,,3.6704119850187267,6.616729088639201,,5.224719101123595,,7.553058676654182,,,2.9837702871410734,4.712858926342073,,,,7.116104868913857,,3.408239700374532,,,9.051186017478152,,,2.9275905118601746,6.991260923845194,,,,,,,,7.17852684144819,,,,,,5.580524344569288,6.554307116104869,,,,4.213483146067416,5.299625468164794,5.942571785268415,3.888888888888889,8.489388264669165,,4.4694132334581775,,4.082397003745319,,,,,6.123595505617978,8.489388264669165,8.05243445692884,6.086142322097379,,,,,,,2.9962546816479403,,,7.49063670411985,,5.9238451935081144,5.967540574282147,,,,,5.274656679151062,,,,,6.30461922596754, +,,,,,,,,3.689138576779026,5.056179775280899,,,2.4968789013732833,3.058676654182272,,,,,,3.689138576779026,6.616729088639201,,5.249687890137328,,7.553058676654182,,,3.0087390761548067,,,,,7.116104868913857,,3.4332084893882646,,,9.051186017478152,,,2.9525593008739075,7.0536828963795255,,,,,,,,7.240948813982522,,,,,,,,,,,4.2322097378277155,5.318352059925093,5.97378277153558,3.9076154806491883,8.551810237203496,,4.49438202247191,,4.107365792759051,,,,,6.154806491885144,8.489388264669165,8.05243445692884,6.104868913857677,,,,,,,3.0149812734082393,,,7.49063670411985,,5.948813982521848,5.998751560549313,,,,,,,,,,6.367041198501872, +,,,,,,,,3.7203495630461925,,,,,3.089887640449438,,,,,,3.714107365792759,6.679151061173534,,5.274656679151062,,7.553058676654182,,,3.033707865168539,,,,,,,3.4581772784019975,,,9.113607990012484,,,2.977528089887641,,,,,,,,,7.240948813982522,,,,,,,,,,,4.250936329588015,5.337078651685393,6.004993757802747,3.9325842696629216,8.551810237203496,,,,4.132334581772784,,,,,6.179775280898876,8.551810237203496,8.05243445692884,6.129837702871411,,,,,,,3.0399500624219726,,,7.553058676654182,,5.97378277153558,6.029962546816479,,,,,,,,,,6.367041198501872, +,,,,,,,,,,,,,3.1210986267166043,,,,,,3.732833957553059,6.679151061173534,,5.299625468164794,,,,,3.058676654182272,,,,,,,,,,9.113607990012484,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.269662921348314,5.3620474406991265,6.036204744069912,3.951310861423221,8.614232209737828,,,,,,,,,6.210986267166042,8.551810237203496,8.11485642946317,6.1485642946317105,,,,,,,3.058676654182272,,,7.553058676654182,,,,,,,,,,,,,6.367041198501872, +,,,,,,,,,,,,,3.15230961298377,,,,,,3.7515605493133584,6.741573033707866,,5.324594257178527,,,,,3.0836454431960054,,,,,,,,,,9.176029962546817,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.288389513108614,5.380774032459426,6.067415730337078,3.9762796504369535,8.614232209737828,,,,,,,,,6.235955056179775,,8.11485642946317,6.167290886392011,,,,,,,3.077403245942572,,,7.553058676654182,,,,,,,,,,,,,6.429463171036204, +,,,,,,,,,,,,,,,,,,,,6.741573033707866,,,,,,,,,,,,,,,,,9.176029962546817,,,,,,,,,,,,,,,,,,,,,,,,5.399500624219725,6.098626716604246,,8.67665418227216,,,,,,,,,6.242197253433209,,8.11485642946317,6.192259675405743,,,,,,,3.102372034956305,,,7.615480649188515,,,,,,,,,,,,,6.429463171036204, +,,,,,,,,,,,,,,,,,,,,6.803995006242197,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5.424469413233458,,,,,,,,,,,,6.30461922596754,,,6.210986267166042,,,,,,,3.1210986267166043,,,7.615480649188515,,,,,,,,,,,,,, diff --git a/lessons/files/reading_files.ipynb b/lessons/files/reading_files.ipynb index 14894d9..b317f1a 100644 --- a/lessons/files/reading_files.ipynb +++ b/lessons/files/reading_files.ipynb @@ -5,7 +5,7 @@ "id": "1767a58b", "metadata": {}, "source": [ - "# **Reading Files**\n", + "# Reading Files\n", "\n", "## Prerequisites:\n", "- Variables\n", @@ -111,8 +111,8 @@ "id": "6e61007d", "metadata": {}, "source": [ - "
\n", - "Read() and readline()\n", + "
\n", + " Read() and readline()\n", "\n", "By default, the ``read()`` method returns the whole text, but you can also specify how many characters you want to return. \n", "\n", @@ -147,8 +147,8 @@ "id": "9cf0db2a", "metadata": {}, "source": [ - "
\n", - "Using for loops to read a file\n", + "
\n", + " Using for loops to read a file\n", "\n", "An easy way to extract information from a file is to use a ``for`` loop. The most simple case is to iterate line-by-line and print each line. \n", "\n", @@ -191,8 +191,10 @@ "id": "f110135e", "metadata": {}, "source": [ - "
\n", - "
Exercise: Print a certain number of lines \n", + "
\n", + "
Exercise: Print a certain number of lines \n", + "\n", + "---\n", "\n", "For the file \"spectrum.dat\", open using a ``with`` statement and print the first four lines.\n", "\n", @@ -206,8 +208,8 @@ "id": "ba982c79", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", ">```Python\n", ">with open(\"./practice_files/spectrum.dat\") as file:\n", @@ -285,8 +287,8 @@ "id": "1ba91256", "metadata": {}, "source": [ - "
\n", - "Splitting a line\n", + "
\n", + " Splitting a line\n", "\n", "Instead of splitting all the contents, we can iterate through line by line and split the line we are on using the delimiter \",\". \n", "\n", @@ -330,8 +332,8 @@ "id": "76859efa", "metadata": {}, "source": [ - "
\n", - "Extracting and converting numerical data\n", + "
\n", + " Extracting and converting numerical data\n", "\n", "As a default, information from files are imported as a string. Therefore, if you want to use numbers from your file, you need to convert it to numbers. The easiest way is to use the built-in Python ``float()`` function. But be careful! If there are letters or special characters in the string, you will receive an error. \n", "\n", @@ -358,9 +360,11 @@ "id": "828d3808", "metadata": {}, "source": [ - "
\n", - "
Exercise: Extract columns of data \n", - "
\n", + "
\n", + "
Exercise: Extract columns of data \n", + "\n", + "---\n", + "\n", "The file 'measurements_2.csv' contains three columns of background data, corresponding to three different students. Write a code that extracts the data from each of the three columns and appends it to three lists. Then write a code that finds the average of each set of data.\n", "\n", " Hint 1: Once you have split each line, you can call items in a line using square brackets. The first item in a line can be called using ``line[0]``, the second using ``line[1]``, and so on. \n", @@ -376,8 +380,8 @@ "id": "3fa00d3c", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "
\n", "\n", @@ -420,8 +424,10 @@ "id": "7bff0294", "metadata": {}, "source": [ - "
\n", - "
Exercise: Create a function to read a file \n", + "
\n", + "
Exercise: Create a function to read a file \n", + "\n", + "---\n", "\n", "Above, we have written code to open a single file and extract the data. If we have many files of data that we want to read, we don't want to write that out over and over again. \n", "\n", @@ -443,8 +449,8 @@ "id": "52258018", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "This is just turning our code from the previous exercise into a function. The function takes one argument (the file name), and will always output the first three columns of data as a three separate lists.\n", "\n", @@ -481,8 +487,8 @@ "id": "1228e25e", "metadata": {}, "source": [ - "
\n", - " Click to view extension answer\n", + "
\n", + " Click to view extension answer\n", "\n", "This code is more flexible than the previous one. Now, we can accept files with any number of columns, and we retrieve the data frp, a certain column, specifed with a second argument.\n", "\n", @@ -529,8 +535,8 @@ "id": "c1fd0ab0", "metadata": {}, "source": [ - "
\n", - " Click to view advanced answer\n", + "
\n", + " Click to view advanced answer\n", "\n", "In this code, we have written ``*columns`` as our arbitrary arguments. As our file only has 3 columns of data, we could put in 0, 1, or 2, as our arbitrary arguments. If we had more columns of data, we could call any number of those columns.\n", "\n", @@ -662,8 +668,8 @@ "id": "22973ad9", "metadata": {}, "source": [ - "
\n", - "Identify a line containing a phrase\n", + "
\n", + " Identify a line containing a phrase\n", "\n", "Here, if the first line is equal to ['nm', 'abs'] (which it is), the program will ``continue``, meaning the current loop ends and the next loop begins. Since the lines in the next loops are numbers, the code will go straight to the ``else`` statement and append to the relevant lists. \n", "\n", @@ -694,8 +700,8 @@ "id": "599796f0", "metadata": {}, "source": [ - "
\n", - "Check if an entry is a number using .isdigit()\n", + "
\n", + " Check if an entry is a number using .isdigit()\n", "\n", "In this example, we have added a ``for`` loop that iterates through the line, checking if each string item in the line contains numbers using the built-in Python function ``.isdigit()``. This will return True if all characters in the string are numbers, and False if any of those characters are not numbers. In this way, we can skip over any items which are not floats. \n", "\n", @@ -727,8 +733,8 @@ "id": "0df837a2", "metadata": {}, "source": [ - "
\n", - "Use enumerate() to skip specific lines\n", + "
\n", + " enumerate() to skip specific lines\n", "\n", "In this example, we enumerate the contents. This way, we can skip over any line we specify. In this case, the first line (index == 0) is skipped. If we also wanted to skip over the second line, we could use an ``or`` statement, e.g. ``if index == 0 or index == 1:``. \n", "\n", @@ -757,8 +763,8 @@ "id": "0de1d353", "metadata": {}, "source": [ - "
\n", - "Use length of line\n", + "
\n", + " Use length of line\n", "\n", "In some cases, the headers are a different length to the rest of the file.\n", "\n", @@ -793,9 +799,11 @@ "id": "860ec445", "metadata": {}, "source": [ - "
\n", - "
Exercise: Extract data from periodic table \n", - "
\n", + "
\n", + "
Exercise: Extract data from periodic table \n", + "\n", + "---\n", + "\n", "Using the file 'periodic_table.csv', write code to write each element out in the following format:\n", "\n", " ``Element`` has the symbol ``symbol``. It has ``number`` protons and a mass of ``mass`` amu. \n", @@ -815,8 +823,8 @@ "id": "bdab5ff9", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "There are many ways to write this. The important thing is that our output does NOT include the headers as a phrase. This answer has done this by skipping the line starting with the string \"Name\". If you have achieved the same output a different way, that's fine! At the moment, it is more important to just solve the problem rather than look for the \"best\" way to solve it. \n", "\n", @@ -842,9 +850,11 @@ "id": "6a239074", "metadata": {}, "source": [ - "
\n", - "
Exercise: Using the CSV module \n", - "
\n", + "
\n", + "
Exercise: Using the CSV module \n", + "\n", + "---\n", + "\n", "Using the CSV module and the file 'periodic_table.csv', write code to write each element out in the following format:\n", "\n", " Element: ``element``, Symbol: ``symbol``, Atomic Number: ``number``, Atomic Mass: ``mass``. \n", @@ -859,8 +869,8 @@ "id": "1ed1114b", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "Using the CSV module results in fewer lines of code.\n", "\n", diff --git a/lessons/files/spectrum.txt b/lessons/files/spectrum.txt index 33a9db2..6134c3e 100644 --- a/lessons/files/spectrum.txt +++ b/lessons/files/spectrum.txt @@ -9,3 +9,5 @@ nm &#&# abs 310 0.002 300 0.007 310 0.002 +300 0.007 +310 0.002 diff --git a/lessons/files/writing_files.ipynb b/lessons/files/writing_files.ipynb index fb555d3..113d24c 100644 --- a/lessons/files/writing_files.ipynb +++ b/lessons/files/writing_files.ipynb @@ -83,8 +83,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "Writing data to a new file\n", + "
\n", + " Writing data to a new file\n", "\n", "If the file you want to write to doesn't exist, Python will create it.\n", "\n", @@ -114,8 +114,8 @@ "id": "BVX99iEZ3Rc2" }, "source": [ - "
\n", - "Writing data to an existing file\n", + "
\n", + " Writing data to an existing file\n", "\n", "If the file you want to write to already exists, Python will erase the contents of the file (this is called truncation) and write the new contents in that space.\n", "\n", @@ -139,8 +139,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "Writing using 'with' statements\n", + "
\n", + " Writing using 'with' statements\n", "\n", "Just like when we are reading files, we can use a ``with`` statement to write to files. \n", "\n", @@ -159,9 +159,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "
Exercise: Writing files \n", - "
\n", + "
\n", + "
Exercise: Writing files \n", + "\n", + "---\n", + "\n", "Using a ``with`` statement and an f-string, create a code to write the following statement to a new text file using the given variables below:\n", "\n", ">Lanthanum, with the elemental symbol La, has 57 protons and a mass of 138.91 amu. \n", @@ -185,8 +187,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - " Click to reveal answer \n", + "
\n", + " Click to reveal answer \n", "\n", "```Python\n", "element = \"Lanthanum\"\n", @@ -244,9 +246,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "
Exercise: Write data to a file\n", - "
\n", + "
\n", + "
Exercise: Write data to a file\n", + "\n", + "---\n", + "\n", "For the following list of random background noise, write each item to a text file on a new line. Include a header that describes what the data is.\n", "\n", "background = [1.48, 1.23, 1.39, 1.46, 1.31, 1.55, 1.25, 1.36, 1.44, 1.29, 1.58, 1.34, 1.41, 1.53, 1.27, 1.38, 1.52, 1.22, 1.33, 1.49, 1.24, 1.56, 1.26, 1.45, 1.51, 1.28, 1.35, 1.57, 1.43, 1.21]\n", @@ -258,8 +262,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "```Python\n", "background = [1.48, 1.23, 1.39, 1.46, 1.31, 1.55, 1.25, 1.36, 1.44, 1.29, 1.58, 1.34, 1.41, 1.53, 1.27, 1.38, 1.52, 1.22, 1.33, 1.49, 1.24, 1.56, 1.26, 1.45, 1.51, 1.28, 1.35, 1.57, 1.43, 1.21]\n", @@ -277,9 +281,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "
Exercise: Debugging code \n", - "
\n", + "
\n", + "
Exercise: Debugging code \n", + "\n", + "---\n", + "\n", "Below is a piece of code with numerous errors. Identify as many as possible. Try running the code and look at the error message to more quickly figure out what is wrong. When you are writing a code project, you will encounter lots of error messages, so it is good to get used to recognising them now.\n", "\n", ">```Python\n", @@ -300,8 +306,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "```Python\n", "data_points = [1.2, 5.6, 3.4, 0.5, 4.1, 3.2]\n", @@ -348,8 +354,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "CSV Structure\n", + "
\n", + " CSV Structure\n", "\n", "In this example, we take two lines of data and write them to a CSV file. We use a ``for`` loop with the ``range()`` function, and then write to the file the value at the index i which we are iterating through using square brackets. \n", "\n", @@ -372,8 +378,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "Using zip()\n", + "
\n", + " Using zip()\n", "\n", "We don#t have to use the range() function. In the below example, the two lists are being associated item-wise using the function ``zip()``. \n", "\n", @@ -394,8 +400,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "Zip() and the unpacking operator *\n", + "
\n", + " Zip() and the unpacking operator *\n", "\n", "If we had lots and lots of lists that we want to write to the document, both ``range()`` and ``zip()`` seem to require lots of repetitive naming of lists. However, there are ways around this. \n", "\n", @@ -447,8 +453,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "Using tab\n", + "
\n", + " Using tab\n", "\n", "Just like with commas as shown above, you can separate items using tab. The special character for this is ``\\t``.\n", "\n", @@ -473,8 +479,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "Using other delimiters\n", + "
\n", + " Using other delimiters\n", "\n", "So far, we have used pretty standard delimiters that make sense to us intuitively, such as commas, spaces, tabs, or semicolons. But this does not have to be the case. You can use anything as a delimiter. You could use a certain word, a combination of letters and numbers, or other symbols. In the example below the string \"&#&#\" has been used as a delimiter. Although it looks strange, you could still read this file just as easily as using a tab, space, or comma, by writing ``.split(\"&#&#\")``.\n", "\n", @@ -497,9 +503,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "
Exercise: Read, transform, write \n", - "
\n", + "
\n", + "
Exercise: Read, transform, write \n", + "\n", + "---\n", + "\n", "You have 3 columns of random background data in the file \"measurements_2.csv\". After calibrating your instrument, you have realised that every data point needs to be increased by 4.35. Write a piece of code that reads the file, adds 4.35 to every item, and writes the new data into a new CSV file. Use ``zip()`` and the unpacking operator.\n", "\n", "Hint: When tackling an open-ended question like this, break the problem into chunks and do not get overwhelmed by the overall problem. Start with reading the file and storing the data, remembering that if we want to use the unpacking operator later on, we want to store the data in a nested list. \n", @@ -514,8 +522,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "This is one way of solving this problem. If you have used another way and it works, that's great!\n", "\n", @@ -618,11 +626,15 @@ "\n", "Ideal gas equation:\n", "\n", - "$V = \\frac{nRT}{p}$\n", - "\n", - "
\n", - "\n", - "
Click to view answer\n", + "$V = \\frac{nRT}{p}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", "```Python\n", "pressure_kPa = [1.00, 10.00, 50.00, 100.00] # kPa\n", @@ -662,9 +674,15 @@ "200.00 kPa
\n", "500.00 kPa
\n", "1000.00 kPa
\n", - "5000.00 kPa
\n", - "\n", - "
Click here to view answer\n", + "5000.00 kPa
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", "This code is very similar to the one above. The only changes are changing ``\"w\"`` to ``\"a\"`` when opening our file, and removing the line inserting a header.\n", "\n", @@ -707,9 +725,15 @@ "source": [ "### Question 3\n", "\n", - "We have the coordinates of two hydrogen atoms in an XYZ file called \"hydrogen_atoms.xy\". Translate these coordinates +10 Angstroms in the x direction, -5 Angstroms in the y direction, and +1 Angstrom in the z direction. Then, create a new XYZ file to store the translated coordinates. Make sure it is stored in an XYZ format!\n", - "\n", - "
Click here to view an answer\n", + "We have the coordinates of two hydrogen atoms in an XYZ file called \"hydrogen_atoms.xy\". Translate these coordinates +10 Angstroms in the x direction, -5 Angstroms in the y direction, and +1 Angstrom in the z direction. Then, create a new XYZ file to store the translated coordinates. Make sure it is stored in an XYZ format!\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Click here to view an answer\n", "\n", "```Python\n", "atoms = []\n", diff --git a/lessons/formatting_guide.md b/lessons/formatting_guide.md new file mode 100644 index 0000000..c545603 --- /dev/null +++ b/lessons/formatting_guide.md @@ -0,0 +1,140 @@ +# Formatting Guide +All of the following formatting works in BOTH raw Jupyter Book ipynb and as a built website. + +## Built-in Jupyter Books formatting + +Hashtags # dictate header levels. The more hashtags, the lower the header level. +Single asterisk * makes text *italic* +Double asterisk ** makes text **bold** +Ticks ` ` Makes text into code `code` +Three dashes --- on their own line inserts a line break +Single dollar signs $ $ makes things into $ maths\ using\ latex $ +Double dollar signs $$ $$ on a new line place the maths block into the centre +Tables are written by separating with | and headers separated with ---- + |Header 1 | Header 2 | Header 3 | + | ----- | ----- | ----- | + | Row 1 | Row 1 | Row 1 | + | Row 2 || Row 2 | Row 2 | +- Bullet points are written using - +1. Numbered lists written using 1., 2., etc + + + + +## Code + +```Python +All code between these ticks +Is formatted like Python code +var = "hello" +This has a transparent background +``` + +`Inline monospaced code can be written with a single tick` This has a dark highlighted background. ```Multiple ticks are the same``` + +>```Python +>Python formatted code with a dark background +>Can be written with three ticks and 'Python' on the first line +>And arrows > before every line + + + + +## Images + +Built-in Jupyter method: + ![Optional description of image. Image must include directory if in a folder](logo.png). Cannot adjust size. + +HTML method (allows for image sizing): + fishy + +The tag only takes +- src (soure location of image, filepath if not in same directory), +- alt (alternate text for an image), +- width (width in pixels), +- height (height in pixels), and +- class (further styles for the image, defined with CSS) attributes. Anything further requires a class (example below, defined using ). + + + + + +## Maths + +Written in LaTex inbetween $ signs. Double dollar signs $$ $$ create centred maths. +- \theta for a symbol +- \ to insert a small space +- \frac{}{} to insert a fraction, with the numerator in the first brackets and denominator in the second + + + + +## Clear examples menu + +
+ Title + +Content + +```Python +Code + +More code +``` + +Content. ``Inline code`` + +

+ + + + +## Green exercise box + +
+
Exercise: Write some code for... + +--- + +Question content. Question content. Question content. + +Question content. Question content. Question content. + +Useful information: + +$equation\ in\ latex$ + +The ``math`` function for $sin^-1$ is: ``asin()``. + +Hint: Here is a hint. + +
+
+ + + + +## Answers box + +
+ Click to view answer + +Answer explanation, potentially. + +Can add a line break if you want. +--- +```Python +import answer + +Code answer. +This might be quite long. + +it is auto-for-matted +``` + +More answer explanation, potentially. ``inline code``. inline code inline code or print in a different style. + +

\ No newline at end of file diff --git a/lessons/loops_functions/For_Loop_Lesson.ipynb b/lessons/loops_functions/For_Loop_Lesson.ipynb index 72ff864..c7352a2 100644 --- a/lessons/loops_functions/For_Loop_Lesson.ipynb +++ b/lessons/loops_functions/For_Loop_Lesson.ipynb @@ -100,8 +100,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "Iterating to perform many maths operations\n", + "
\n", + " Iterating to perform many maths operations\n", "\n", "``for`` loops can iterate through lists containing both strings and numbers. When iterating through lists of floats or integers, you can then perform maths operations on each item. You could then append it to a new list to use later.\n", "\n", @@ -136,8 +136,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "Iterating through a string\n", + "
\n", + " Iterating through a string\n", "\n", "``for`` loops can also iterate over items in a string.\n", "\n", @@ -157,8 +157,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "Iterating using nested lists\n", + "
\n", + " Iterating using nested lists\n", "\n", "You can also iterate over nested lists, however it is important to keep in mind that the nested list itself is the item you are referring to. You can refer to items within the nested list by using square brackets. Try out this code:\n", "\n", @@ -182,8 +182,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "Combining loops and conditional statements\n", + "
\n", + " Combining loops and conditional statements\n", "\n", "You can test a condition by using an `if` statement within your ``for`` loop. For example, to find outliers in your data.\n", "\n", @@ -211,11 +211,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "
Task 1: Write a basic loop \n", - "
\n", + "
\n", + "
Task 1: Write a basic loop \n", + "\n", + "---\n", "\n", - " Write a code that prints out each item in the following list, using a ``for`` loop. Then answer the following True/False questions.\n", + "Write a code that prints out each item in the following list, using a ``for`` loop. Then answer the following True/False questions.\n", "\n", " gas_list = ['Nitrogen', 'Oxygen', 'Fluorine'] \n", "\n", @@ -230,8 +231,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "Here is an example of the code you should have written:\n", "\n", @@ -251,9 +252,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "
Task 2: Understanding a Loop \n", - "
\n", + "
\n", + "
Task 2: Understanding a Loop \n", + "\n", + "---\n", + "\n", "In the lab you are making methyl benzoate using the scheme below, starting with 3 g of benzoic acid. Five scientists repeat the reaction, and get the following yields of product: \n", "\n", "2.5 g, 2.7 g, 3.1 g, 1.6 g, 4 g. \n", @@ -272,8 +275,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", ">```Python\n", ">product_mass_list = [2.5,2.7,3.1,1.6,4]\n", @@ -298,9 +301,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "
Task 3: Understanding a Loop \n", - "
\n", + "
\n", + "
Task 3: Understanding a Loop \n", + "\n", + "---\n", + "\n", "You have a series of temperature measurements from your reaction in degrees C and you want to print all of them out in Kelvin. One of your colleagues writes some code but it doesn't seem to be working. Can you identify the problem and fix the code?\n", "\n", ">```Python\n", @@ -323,8 +328,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "Remember that the items that you want to do each time you go around the for loop need to be indented. In the example the print statement is not indented and so is not executed each time, but only one the loop is finished. You can fix the code just by indenting the print statement with the tab key.\n", ">```Python\n", @@ -394,15 +399,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Examples using zip and enumerate" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "Zipping a list and a nested list\n", + "
\n", + " Zipping a list and a nested list\n", "\n", "The ``zip()`` function takes two or more lists and associates them element-wise with each other, assigning a temporary variable name to each item as it does so. In this way, we can access two lists and their contents at the same time. It is important that the two lists have the same number of entries, or this will not work.\n", "\n", @@ -430,8 +428,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "Zipping more than 2 lists\n", + "
\n", + " Zipping more than 2 lists\n", "\n", "You can zip more than just two lists together. Copy out and run this code:\n", "\n", @@ -452,8 +450,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "Using enumerate to find a list index\n", + "
\n", + " Using enumerate to find a list index\n", "\n", "You have a very long list of amino acids, and you want to find the position of the amino acid \"Proline\".\n", "\n", @@ -477,9 +475,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "
Exercise: Compare near-identical lists \n", - "
\n", + "
\n", + "
Exercise: Compare near-identical lists \n", + "\n", + "---\n", + "\n", "Two minerals in the same series have very similar formulas. Write a program to compare the two and identify where they differ. Also identify the index at which they differ.\n", "\n", "```Python\n", @@ -496,8 +496,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "You can do this by first zipping the two lists to compare element-wise, then appending both elements to another list in order to find the discrepancy. It is pretty obvious when using fairly short lists of strings, but imagine if you were using huge arrays of numbers - it would take a lot longer playing spot-the-difference with that!\n", "\n", @@ -569,8 +569,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "Predicting range() output\n", + "
\n", + " Predicting range() output\n", "\n", "Write out and run the following for loops. Make sure to look at what number it starts and ends at.\n", "\n", @@ -610,8 +610,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "Creating a list using loops\n", + "
\n", + " Creating a list using loops\n", "\n", "If you want to quickly create a list containing lots of numbers, you could use a ``for`` loop. In the following example, I am creating a list of the values of ml, the magnetic quantum number, for an f orbital. This takes values of -2 to 2.\n", "\n", @@ -632,8 +632,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "Iterating the length of a list using len()\n", + "
\n", + " Iterating the length of a list using len()\n", "\n", "You can use the built-in Python function ``len()`` to find the length of a list. You could then iterate for the length of the list.\n", "\n", @@ -656,8 +656,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "Creating an empty nested list\n", + "
\n", + " Creating an empty nested list\n", "\n", "In one of my projects I would like to create a list of empty coordinates to use later. I want the coordinate [0,0,0] repeated 1000 times. Instead of writing it out manually, I use a ``for`` loop. Copy out and run this code. Check the correct number of coordinates are being outputted, then change it to create a list of 1000 empty coordinates.\n", "\n", @@ -685,9 +685,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "
Exercise: Task 1: Correct the error \n", - "
\n", + "
\n", + "
Exercise: Task 1: Correct the error \n", + "\n", + "---\n", + "\n", "Try the following for loops. They will return an error, try to figure out why.\n", "\n", ">```Python\n", @@ -707,8 +709,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "The first example will not return any output, as it does not know it needs to count down. Add the number '-1' separated by a comma to the 'range()' function to correct it.\n", "\n", @@ -721,9 +723,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "
Exercise: List certain elements using ``range`` \n", - "
\n", + "
\n", + "
Exercise: List certain elements using ``range`` \n", + "\n", + "---\n", + "\n", "In the neutral state, elements higher than Lanthanum (atomic number = 57) contain filled or partially-filled f orbitals. Quickly create a list of atomic numbers of all elements (up to and including Nobelium at 102) of elements containing f electrons. \n", "\n", "\n", @@ -734,8 +738,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "
\n", "\n", @@ -783,8 +787,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "Exhaustive multiplication - combining every item with every other item\n", + "
\n", + " Exhaustive multiplication - combining every item with every other item\n", "\n", "Below is a piece of code with two lists. Every number in the first list is multiplied by every value in the second, exhausting every possibility. This is one of the easiest ways to visualise a nested ``for`` loop.\n", "\n", @@ -808,8 +812,8 @@ "metadata": {}, "source": [ "\n", - "
\n", - "Identifying items repeated in two lists\n", + "
\n", + " Identifying items repeated in two lists\n", "\n", "You have two lists and want to make sure than none are repeated from one list to the other. You could use nested lists to check every combination of th two lists.\n", "\n", @@ -832,8 +836,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "Creating a list of coordinates\n", + "
\n", + " Creating a list of coordinates\n", "\n", "Create a list of 2-dimensional coordinates for every point in a grid running from x = o to x = 2 and from y = 0 to y = 4.\n", "\n", @@ -900,8 +904,8 @@ "\n", "Run the two sets of code below and compare them.\n", "\n", - "#### ``continue``\n", ">```Python\n", + "># Continue\n", ">molecs = [\"H2O\", \"HCN\", \"CO2\", \"NH3\", \"CH3\"]\n", ">\n", ">for formula in molecs:\n", @@ -913,8 +917,8 @@ "\n", "
\n", "\n", - "#### ``break``\n", ">```Python\n", + "># Break\n", ">molecs = [\"H2O\", \"HCN\", \"CO2\", \"NH3\", \"CH3\"]\n", ">\n", ">for formula in molecs:\n", @@ -924,7 +928,6 @@ ">\n", ">print(\"This represents the rest of the code continuing\")\n", "\n", - "\n", "
\n", "\n", "In the ``continue`` statement, \"CO2\" is not printed, as the loop has already restarted onto the next iteration, which is to print \"NH3\". \n", @@ -936,8 +939,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "Using continue\n", + "
\n", + " Using continue\n", "\n", "To retrieve only molecules containing oxygen, this code uses a ``continue`` statement. \n", "\n", @@ -964,8 +967,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "Using break\n", + "
\n", + " Using break\n", "\n", "To retrieve onlyt the first molecule that contains an oxygen atom, this code uses ``break``.\n", "\n", @@ -1010,9 +1013,15 @@ "h = 6.626e-34 # m^2kgs^-1\n", "c = 3.00e8 # ms^-1\n", "workfunction = 1.017e-18 # J\n", - "```\n", - "\n", - "
Click to view an answer \n", + "```\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", "Remember that there could be multiple ways to appraoch the same question. Below is one solution.\n", "\n", @@ -1032,14 +1041,14 @@ "\n", "The output of this code is a bit difficult to read. Perhaps you could try instead appending to a list of wavelengths that do release an electron and a list of wavelengths that do not release an electron.\n", "\n", - "
" + "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Qeustion 2\n", + "### Question 2\n", "\n", "Some IR data has been retrieved after a lab. Every peak retrieved by the system has been saved as a list of wavelengths (in cm-1) and a separate list of corresponding transmittance. \n", "\n", @@ -1050,9 +1059,15 @@ "```Python\n", "peak_shift = [3542.63, 3497.12, 3077.12, 3002.03, 2930.46, 2925.47, 2919.60, 2740.36, 1730.00, 1715.89, 1710.20, 1705.23, 1700.458, 1599.30, 1434.42, 1109.34, 808.34, 550.02, 428.43] # cm-1\n", "peak_transmittance = [66, 73, 41, 57, 95, 96, 97, 70, 38, 35, 97.2, 95.9, 96.1, 50, 59, 97.8, 99.0, 74, 66.0] # %\n", - "```\n", - "\n", - "
Click here to view answer \n", + "```\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer\n", "\n", "This is the perfect opportunity to use ``zip()``. Do not worry if your code looks a bit different.\n", "\n", @@ -1079,7 +1094,7 @@ "\n", "Try out this code. Does the output of this code match yours? This is another example of using logic operators in our answer.\n", "\n", - "
" + "

" ] }, { @@ -1129,7 +1144,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.9" + "version": "3.12.3" } }, "nbformat": 4, diff --git a/lessons/loops_functions/PyinC_while_loops_WIP.ipynb b/lessons/loops_functions/PyinC_while_loops_WIP.ipynb index f1529c6..9a54fd1 100644 --- a/lessons/loops_functions/PyinC_while_loops_WIP.ipynb +++ b/lessons/loops_functions/PyinC_while_loops_WIP.ipynb @@ -150,9 +150,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Incorrect password. 2 attempts left.\n", + "Incorrect password. 1 attempts left.\n", + "Too many failed attempts.\n" + ] + } + ], "source": [ "# Password example\n", "\n", diff --git a/lessons/loops_functions/conditional_statements.ipynb b/lessons/loops_functions/conditional_statements.ipynb index 29e665f..1b1221d 100644 --- a/lessons/loops_functions/conditional_statements.ipynb +++ b/lessons/loops_functions/conditional_statements.ipynb @@ -62,8 +62,8 @@ "id": "e0dbebd5", "metadata": {}, "source": [ - "
\n", - "Using if \n", + "
\n", + " Using if \n", "\n", "One way we can use `if` statements is in conjuction with comparisons. \n", "\n", @@ -93,9 +93,11 @@ "id": "2d12b05b", "metadata": {}, "source": [ - "
\n", - "
Exercise: Write a simple 'if' statement \n", - "
\n", + "
\n", + "
Exercise: Write a simple 'if' statement \n", + "\n", + "---\n", + "\n", "A nickel surface has workfunction 5.08 eV. If an electron incident on the surface has energy greater or equal to this energy, an electron will be liberated from the surface. Write a conditional ('if') statement to test if a photon of energy 6.17 eV will liberate an electron, and print the energy,\n", "\n", "
\n", @@ -107,8 +109,8 @@ "id": "76e675f7", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "```Python\n", "workfunction_Ni = 5.08 # eV\n", @@ -164,8 +166,8 @@ "id": "ee23bb99", "metadata": {}, "source": [ - "
\n", - "Using if...else...\n", + "
\n", + " Using if...else...\n", "\n", "We can use if...else... when we have only two outcomes we want to test. \n", "\n", @@ -185,8 +187,8 @@ "id": "ecba019b", "metadata": {}, "source": [ - "
\n", - "Understanding if...elif...else... logic\n", + "
\n", + " Understanding if...elif...else... logic\n", "\n", "When writing 'if...elif...' statements, it is important to remember that once a conditional statement has returned true, no further elif or else statements will be tested. \n", "\n", @@ -218,9 +220,11 @@ "id": "1eac36c7", "metadata": {}, "source": [ - "
\n", - "
Exercise: Predict if...elif...else logic \n", - "
\n", + "
\n", + "
Exercise: Predict if...elif...else logic \n", + "\n", + "---\n", + "\n", "Look at each of the code snippets below and for each, predict which print() statements will execute. Write them our yourself and check you were correct.\n", "\n", "a)\n", @@ -264,8 +268,8 @@ "id": "e8acc105", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "a) Only the first print() statement is executed. Even though the `elif` statement is also True, this is not executed because the first condition has already been met. \n", "\n", @@ -317,8 +321,8 @@ "id": "71574d59", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "```Python\n", "peak_frequency = 3200 # cm-1\n", @@ -364,8 +368,8 @@ "id": "c210ea26", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "Below is a possible answer. Note that since this is done from superacid upwards, the first `elif` statement does not need the addition of ``elif pH > 0 and pH < 7:``, since it will only run if `pH <= 0` is False. However, if you were working from base downwards, you would have to specify that pH must be both larger than 0 and smaller than 7 to be marked as acidic.\n", "\n", diff --git a/lessons/loops_functions/functions_and_scope.ipynb b/lessons/loops_functions/functions_and_scope.ipynb index 66685f2..7565634 100644 --- a/lessons/loops_functions/functions_and_scope.ipynb +++ b/lessons/loops_functions/functions_and_scope.ipynb @@ -91,9 +91,6 @@ "- ``return`` indicates the end of the function, and must be one indent away from the margin (unless it is nested within another statement - more on that later). The real meaning of ``return`` is that the variable which comes after it (in this case, ``an_output``) is what the function will spit out at the end. In reality, this means you could have a ``return`` statement halfway down your function.\n", "- ``an_output`` is what the function will return at the end of its process. You can have multiple outputs (discussed later) separated by commas. \n", "\n", - "\n", - "### Example\n", - "\n", "Using this syntax, we will now turn the above code for adding masses into a function. \n", "\n", "```Python\n", @@ -169,7 +166,10 @@ "id": "49ccc08e", "metadata": {}, "source": [ - "
Practice Question \n", + "
\n", + "
Exercise: Write a function to convert units \n", + "\n", + "---\n", "\n", "Write a function that will convert eV to J by multiplying by 1.602×10-19. Do this for:\n", "\n", @@ -181,9 +181,17 @@ "\n", " 2.2. Print each item in the list on a new line. Include units. \n", "\n", - "
\n", - "\n", - "
Click here to view answer for Part 1 \n", + "
\n", + "

" + ] + }, + { + "cell_type": "markdown", + "id": "64cc781b", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer for Part 1\n", "\n", "In part 1, we are creating a function to take a single variable as an argument and return a single variable. \n", "\n", @@ -200,10 +208,16 @@ "\n", "Instead of creating another variable to describe the new value in J, this piece of code executes the function within a ``print()`` statement. If we wanted to use this value again later, it would be better to store it in a relevantly named variable.\n", "\n", - "
\n", - "
\n", - "\n", - "
Click here to view answer for Part 2 \n", + "

" + ] + }, + { + "cell_type": "markdown", + "id": "14b129da", + "metadata": {}, + "source": [ + "
\n", + " Click to view answer for Part 2\n", "\n", "In Part 2, we need to take the program we wrote above, and convert it to take a list as an argument, and also return a list.\n", "\n", @@ -231,7 +245,7 @@ "\n", "Try both. Although lists are better to use throughout the rest of a program, it is easier to look at when they have a new value on each line. \n", "\n", - "
" + "

" ] }, { @@ -350,8 +364,8 @@ "id": "3a226cf5", "metadata": {}, "source": [ - "
\n", - "Returning multiple outputs\n", + "
\n", + " Returning multiple outputs\n", "\n", "So far, our functions have only returned one variable. However, it is possible to return multiple values. \n", "\n", @@ -399,8 +413,8 @@ "id": "1893bde5", "metadata": {}, "source": [ - "
\n", - "Using multiple return statements\n", + "
\n", + " Using multiple return statements\n", "\n", "So far, all our functions have had one ``return`` statement, right at the end, but this is not a requirement. A function can have a return statement anywhere, and it can have more than one. This is usually encountered when functions contain if statements, where depending on whether the conditions are met, different sections of the function may execute. \n", "\n", @@ -432,9 +446,11 @@ "id": "1961efb0", "metadata": {}, "source": [ - "
\n", - "
Exercise: Returning two values \n", - "
\n", + "
\n", + "
Exercise: Returning two values \n", + "\n", + "---\n", + "\n", "From a list of wavelengths, return the energy in J and the energy in eV in separate lists.\n", "\n", "$ E = \\frac{hc}{\\lambda} $\n", @@ -450,8 +466,8 @@ "id": "f22eb8bd", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", ">```Python\n", ">def energy_calc(wavelengths):\n", @@ -517,8 +533,8 @@ "id": "5ff6d78c", "metadata": {}, "source": [ - "
\n", - "Positional Arguments\n", + "
\n", + " Positional Arguments\n", "\n", "But be careful! The arguments you see above are called positional arguments, ``arg``, and the order in which you list them when you call your function matters! \n", "\n", @@ -541,8 +557,8 @@ "metadata": {}, "source": [ "\n", - "
\n", - "Keyword Arguments\n", + "
\n", + " Keyword Arguments\n", "\n", "A keyword argument, or ``kwarg`` is the alternative to positional arguments, and do not have to be called in a specific order. Instead, they are identifiable by a specific name which can be referenced when you call your function. \n", "\n", @@ -576,8 +592,8 @@ "id": "fb0c93f4", "metadata": {}, "source": [ - "
\n", - "Positional-only arguments, ``, /``, and keyword-only arguments, ``* ,``\n", + "
\n", + " Positional-only arguments, ``, /``, and keyword-only arguments, ``* ,``\n", "\n", "In the sections about positional and keyword arguments above, there is nothing in the function line itself that describes whether the arguments are positional or keyword. The way in which you call the function (and the order) is what defines it. In the first example, we treated both as positional, but in the second we treated both as keyword. \n", "\n", @@ -620,8 +636,8 @@ "id": "43dad2f7", "metadata": {}, "source": [ - "
\n", - "Default/Optional Arguments\n", + "
\n", + " Default/Optional Arguments\n", "\n", "Default arguments are keyword arguments whose values are assigned within the function. They are often also referred to as optional arguments. You set it by adding ``= value`` to the end of the argument in your function. This means that even if your function takes two arguments, if one is a default argument, you only need to call one, the other will take the default value, and you won't receive an error.\n", "\n", @@ -666,9 +682,11 @@ "id": "fdb290c9", "metadata": {}, "source": [ - "
\n", - "
Exercise: Using positional and keyword arguments \n", - "
\n", + "
\n", + "
Exercise: Using positional and keyword arguments \n", + "\n", + "---\n", + "\n", "The cosine rule allows you to find the length of one side of a triangle, c, when you know the lengths of the other two sides, a and b, and one angle, $\\theta$. \n", "\n", "$ c = \\sqrt{a^2 + b^2 - 2ab cos(\\theta)} $\n", @@ -688,8 +706,8 @@ "id": "2dc6e4a2", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "Here is a potential answer. \n", "\n", @@ -714,9 +732,11 @@ "id": "5739b8a2", "metadata": {}, "source": [ - "
\n", - "
Exercise: Using a default argument \n", - "
\n", + "
\n", + "
Exercise: Using a default argument \n", + "\n", + "---\n", + "\n", "Write a function which will output an atomic velocity from its mass and temperature. Set the default temperature to be 20°C. Use the relationship: \n", "\n", "$v = \\sqrt{\\frac{3k_bT}{m}} $\n", @@ -734,8 +754,8 @@ "id": "c0ec0856", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", ">```Python\n", ">def molecule_velocity(mass, temperature=20):\n", @@ -774,8 +794,8 @@ "id": "60b2325b", "metadata": {}, "source": [ - "
\n", - "Arbitrary positional arguments: ``*args``\n", + "
\n", + " Arbitrary positional arguments: ``*args``\n", "\n", "Up until this point, the number of arguments passed into the function has been fixed. Whether positional, keyword, or default, the function will only accept a certain number of arguments. But what if we do not know how many arguments we will need in advance? We can use arbitrary positional arguments ``*args`` and arbitrary keyword arguments ``**kwargs``. Note single asterisk for positional arguments and double asterisk for keyword arguments. This is defined in the function:\n", "\n", @@ -811,8 +831,8 @@ "id": "147d2fcd", "metadata": {}, "source": [ - "
\n", - "Arbitrary keyword arguments: ``**kwargs``\n", + "
\n", + " Arbitrary keyword arguments: ``**kwargs``\n", "\n", "Arbitrary keyword arguments are a bit more complicated than ``*args``, so feel free to skip this bit if you are a complete beginner. You can always come back later.\n", "\n", @@ -850,8 +870,8 @@ "id": "b42b4be6", "metadata": {}, "source": [ - "
\n", - "Using the unpacking operator, *, when calling a function\n", + "
\n", + " Using the unpacking operator, *, when calling a function\n", "\n", "The single asterisk operator `*` can be used on any iterable that Python provides (lists, tuples, strings, etc.), while the double asterisk operator, `**`, can only be used on dictionaries. When placed just before an iterable, `*` unpacks the items within the iterable to be separate objects. \n", "\n", @@ -1026,9 +1046,11 @@ "id": "17325532", "metadata": {}, "source": [ - "
\n", - "
Exercise: Write a docstring for a given function \n", - "
\n", + "
\n", + "
Exercise: Write a docstring for a given function \n", + "\n", + "---\n", + "\n", "The following function takes a value of wavelength and converts it into energy in Joules and energy in eV using the equation $ E = \\frac{h \\ c}{\\lambda} $. Write a docstring for this function. \n", "\n", ">```Python\n", @@ -1059,8 +1081,8 @@ "id": "2d4ac768", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "\n", "\n", @@ -1129,8 +1151,8 @@ "id": "79c80e22", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "```Python\n", "def is_even(num):\n", @@ -1162,8 +1184,8 @@ "id": "9f7a2c5a", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "```Python\n", "def keep_evens(num_list):\n", @@ -1207,8 +1229,8 @@ "id": "6f470616", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "```Python\n", "atom_masses = {\n", @@ -1256,8 +1278,8 @@ "id": "ed462f17", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "```Python\n", "def say_hello():\n", @@ -1295,8 +1317,8 @@ "id": "f4126a6f", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "When thinking about writing a piece of code, it is important to break it down into simple chunks that you can get your mind around. How you achieve each block is not yet in consideration. For example, with this code, you might write. \n", "\n", @@ -1373,8 +1395,8 @@ "id": "7ac65955", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "```Python\n", "raw_data_Py = [\n", diff --git a/lessons/loops_functions/tut_import_mod.ipynb b/lessons/loops_functions/tut_import_mod.ipynb index 5ec97c4..4867aca 100644 --- a/lessons/loops_functions/tut_import_mod.ipynb +++ b/lessons/loops_functions/tut_import_mod.ipynb @@ -24,12 +24,73 @@ }, { "cell_type": "markdown", - "id": "1ef7b1b3", + "id": "4703b507", + "metadata": {}, + "source": [ + "## Learning Outcomes" + ] + }, + { + "cell_type": "markdown", + "id": "e8948a40", + "metadata": {}, + "source": [ + "- Importing a function\n", + "- Importing a module\n", + "- Importing a library" + ] + }, + { + "cell_type": "markdown", + "id": "e561f0bb", + "metadata": {}, + "source": [ + "## What are modules and libraries?" + ] + }, + { + "cell_type": "markdown", + "id": "21a29d39", "metadata": {}, "source": [ + "A module is a file consisting of Python code. A library is a collection of modules. \n", "\n", - "## Learning Outcomes\n", - " How to import external libraries into your code\n", + "Modules can define functions, variables, and classes, and can include runable code. Any Python file can be referenced as a module. \n", + "\n", + "This is extremely useful, as it means you do not have to write out complex functions in your program itself. You can store them externally, and just import them for use in your program. " + ] + }, + { + "cell_type": "markdown", + "id": "c465b64d", + "metadata": {}, + "source": [ + "## Accessing a module or library" + ] + }, + { + "cell_type": "markdown", + "id": "6ba6434e", + "metadata": {}, + "source": [ + "In order for your program to be able to access a module or library, they must be in a location that it can access. \n", + "\n", + "Built-in modules." + ] + }, + { + "cell_type": "markdown", + "id": "32cf2fd2", + "metadata": {}, + "source": [ + "## Importing a module or library" + ] + }, + { + "cell_type": "markdown", + "id": "1ef7b1b3", + "metadata": {}, + "source": [ "\n", "\n", "Sometimes, we wish to use prewritten libraries. For example the numpy libraries for data analysis. To do this we use the import command\n", @@ -57,7 +118,23 @@ " a = math.sqrt(4)\n", "\n", "\n", - "```\n", + "```\n" + ] + }, + { + "cell_type": "markdown", + "id": "ab496835", + "metadata": {}, + "source": [ + "## Using aliases" + ] + }, + { + "cell_type": "markdown", + "id": "44a0aa27", + "metadata": {}, + "source": [ + "## Using import *\n", "\n", "in some tutorials it will be suggested you use the \n", "```python \n", diff --git a/lessons/solving_problems/style-and-comments.ipynb b/lessons/solving_problems/style-and-comments.ipynb index fd23b63..ee4789a 100644 --- a/lessons/solving_problems/style-and-comments.ipynb +++ b/lessons/solving_problems/style-and-comments.ipynb @@ -13,7 +13,10 @@ "id": "dddb4951", "metadata": {}, "source": [ - "A foolish consistency is the hobgoblin of little minds " + "\"A foolish consistency is the hobgoblin of little minds\" \n", + " - Ralph Waldo Emerson \n", + "\n", + "In other words: Following the style guide is important for readability in your code, but you need to know when to be inconsistent and break the style guide - sometimes the style guide doesn't apply, and you need to use your best judgement in those cases. If applying the style guide makes your code less readable, you should break it. " ] }, { @@ -75,7 +78,9 @@ "- Clear and understandable to other speakers of the language\n", "- Write in English unless you are certain it will never be read by speakers of any other language than its written in\n", "\n", - "\n" + "Different ways of writing them. \n", + "- NumPy vs other ways\n", + "- Extensions\n" ] }, { @@ -151,6 +156,23 @@ "- Either all return statements should return something or none should. If even one return statement returns an object, any empty return statements should explicitly read `return None`." ] }, + { + "cell_type": "markdown", + "id": "c40ff1fd", + "metadata": {}, + "source": [ + "## Scientific Programming" + ] + }, + { + "cell_type": "markdown", + "id": "3972c683", + "metadata": {}, + "source": [ + "- Units\n", + "- " + ] + }, { "cell_type": "markdown", "id": "1458111d", diff --git a/lessons/variables/Comparisons.ipynb b/lessons/variables/Comparisons.ipynb index 15f9707..aa38a78 100644 --- a/lessons/variables/Comparisons.ipynb +++ b/lessons/variables/Comparisons.ipynb @@ -101,8 +101,8 @@ "id": "a84760ed", "metadata": {}, "source": [ - "
\n", - "Comparing numbers: floats and integers\n", + "
\n", + " Comparing numbers: floats and integers\n", "\n", "The most basic use for comparisons is numerically, using integers or floats. You can compare integer data types with float data types, but not with strings. \n", "\n", @@ -148,8 +148,8 @@ "id": "cf5fa523", "metadata": {}, "source": [ - "
\n", - "Comparing other data types: strings and lists\n", + "
\n", + " Comparing other data types: strings and lists\n", "\n", "As well as comparing numbers, you can use comparison operators on strings and lists.\n", "\n", @@ -190,8 +190,8 @@ "id": "c42c319f-594f-47a2-bb2f-535840c1ed80", "metadata": {}, "source": [ - "
\n", - "Comparing different data types\n", + "
\n", + " Comparing different data types\n", "\n", "Most different data types, even if they have the same contents, will always yield a ``==`` comparison of False. An exception is floats and integers, which can be compared.\n", "\n", @@ -214,8 +214,8 @@ "id": "71222469", "metadata": {}, "source": [ - "
\n", - "Identifying identical objects using is\n", + "
\n", + " Identifying identical objects using is\n", "\n", "The comparitor `==` identifies if two objects have the same contents (in the same order), but what if we wanted to distinguish if they are alsso exactly the same object (i.e. rather than just looking the same, they are actually the same 'behind the scenes')? For this, we can use ```is```:\n", "\n", @@ -242,8 +242,8 @@ "id": "d4dfcd32", "metadata": {}, "source": [ - "
\n", - "Finding contents using in\n", + "
\n", + " Finding contents using in\n", "\n", "``in`` has two uses - you will see it come back in another way when we do [for loops](../loops_functions/For_Loop_Lesson.ipynb). In this context, ``in`` checks if a certain object is contained within a string or list.\n", "\n", @@ -266,8 +266,8 @@ "id": "bcf9b010", "metadata": {}, "source": [ - "
\n", - "Chaining together comparisons\n", + "
\n", + " Chaining together comparisons\n", "\n", "You can also chain together these comparisons, but you need to be careful you don't get confused!\n", "\n", @@ -293,9 +293,11 @@ "id": "75f79025", "metadata": {}, "source": [ - "
\n", - "
Exercise: Obtain a True output\n", - "
\n", + "
\n", + "
Exercise: Obtain a True output\n", + "\n", + "---\n", + "\n", "In the comparisons in the code below, replace each -- with different comparison operators to get a True output.

\n", "\n", ">```Python\n", @@ -317,8 +319,8 @@ "id": "146885b4", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "```Python\n", "num_nitrogen = 7\n", @@ -341,8 +343,10 @@ "id": "bebc9cbb", "metadata": {}, "source": [ - "
\n", - "
Exercise: Test similarity \n", + "
\n", + "
Exercise: Test similarity \n", + "\n", + "---\n", "\n", "On the following two variables, use Python comparisons to test the following:\n", "\n", @@ -363,8 +367,8 @@ "id": "a67425ac", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "1. The two values are not the same. You can check this using:\n", " >```Python\n", @@ -420,8 +424,8 @@ "id": "c0b13b2c", "metadata": {}, "source": [ - "
\n", - "Using and\n", + "
\n", + " Using and\n", "\n", "When considering ``a and b``, where a and b are individual comparisons, a and b must both be True for the overall result to be True. \n", "\n", @@ -449,8 +453,8 @@ "id": "d954f269", "metadata": {}, "source": [ - "
\n", - "Using or\n", + "
\n", + " Using or\n", "\n", "When considering ``a or b``, where a and b are individual comparisons, only one of the two must be True for the whole statement to be True. If neither are True, the whole statement will be False.\n", "\n", @@ -482,8 +486,8 @@ "id": "6c93aafa", "metadata": {}, "source": [ - "
\n", - "Using not\n", + "
\n", + " Using not\n", "\n", "Finally, not is slightly different. It should be used before a comparison statement, i.e. (```not a == 2```), and 'inverts' the True or False behaviour. If a statement was True, `not` will make it False, or vice versa.\n", "\n", @@ -520,8 +524,8 @@ "id": "1c2b08e0-672b-46e7-b92e-ee9a35d69907", "metadata": {}, "source": [ - "
\n", - "Understanding order of comparisons\n", + "
\n", + " Understanding order of comparisons\n", "\n", "Watch out! Python evaluates operators according to a strict order: maths and comparison operators first, then logical operators (and, or, not). If you are getting error messages, try bracketing your 'not' and other logical operators to give them precedence. Try the following lines with and without the brackets and try to understand the order of operations.\n", "\n", @@ -540,9 +544,11 @@ "id": "ab2e19ee", "metadata": {}, "source": [ - "
\n", - "
Exercise: Logical outputs \n", - "
\n", + "
\n", + "
Exercise: Logical outputs \n", + "\n", + "---\n", + "\n", "What is the logical output of this piece of code?\n", "

\n", "\n", @@ -559,8 +565,8 @@ "id": "f8e5a7d6", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "The answer is True. Because each comparison is separated by `or`, only one of them has to be True for the overall output to be True. since the last comparison, `w == \"tungsten\"` is True, the overall output is True. \n", "\n", @@ -605,8 +611,8 @@ "id": "7673c9de", "metadata": {}, "source": [ - "
\n", - " Click to view answer\n", + "
\n", + " Click to view answer\n", "\n", "When working out logic, it is worth going through step by step. \n", "\n", diff --git a/lessons/variables/mathematical-operators.ipynb b/lessons/variables/mathematical-operators.ipynb index 4cb84e1..b7ed9d7 100644 --- a/lessons/variables/mathematical-operators.ipynb +++ b/lessons/variables/mathematical-operators.ipynb @@ -14,6 +14,7 @@ "## Learning outcomes\n", "\n", "- Develop familiarity with basic mathematical operations in Python\n", + "- Understand the consequences of doing maths on non-numerical data types\n", "- Understand how to access some additional, more complex mathematical operations\n", "\n", "## Prerequisites\n", @@ -56,37 +57,41 @@ "\n", "A single line of code may have many mathematical operations. In this event, Python will follow the standard order of operations for mathematical operations: you might know this as [BODMAS](https://en.wikipedia.org/wiki/Order_of_operations#Mnemonics). Use round brackets \"()\" in your sum to avoid ambiguity.\n", "\n", - "Maths can be done both with types numbers and with variable names, as long as the variable is of the correct type (integer or float). Storing numbers as variables becomes extremely useful when they are being used often, and when they are needed to a large number of significant figures. For example, instead of writing out π or Avogadro's number each time it is used, you can store it at the beginning and only call it by the name you have given it.\n", + "Maths can be done both with numbers and with variable names, as long as the variable is of the correct type (integer or float). Storing numbers as variables becomes extremely useful when they are being used often, and when they are needed to a large number of significant figures. For example, instead of writing out π or Avogadro's number each time it is used, you can store it at the beginning and only call it by the name you have given it.\n", "\n", - ">``` Python \n", - "> pi = 3.141592653589\n", - "> avogadro = 6.02214e23\n", - ">\n", - "> product = pi * avogadro * 4" + "``` Python \n", + "pi = 3.141592653589\n", + "avogadro = 6.02214e23\n", + "\n", + "product = pi * avogadro * 4\n", + "```\n", + "\n", + "The value of the variable `product` is now that of 3.14 × 6.022×10-23 × 4, which equals 7.567644313153783e+24 .\n", + "\n", + "Note that to represent standard form, Python uses the symbol `en` instead of ×10n." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - " Using maths in variables\n", + "
\n", + "Using maths in variables\n", "\n", "You can do maths in a variable, which can be called inside a print statement.\n", "\n", - ">```Python\n", - "> mass_H = 1.008\n", - "> mass_O = 15.999\n", - ">\n", - "> mass_H2O = 2 * H + O\n", - "> \n", - "> print(\"The mass of water is: \" , mass_H2O) \n", + "```Python\n", + "mass_H = 1.008\n", + "mass_O = 15.999\n", "\n", + "mass_H2O = 2 * H + O\n", + "print(\"The mass of water is: \" , mass_H2O) \n", + "```\n", "\n", - "The output of this chunk of code is:
\n", - "The mass of water is: 18.015\n", + "The output of this code is:
\n", + "The mass of water is: 18.015\n", "\n", - "
☝ Note: Remember to separate objects in a print statement with commas.\n", + "Remember to separate objects in a print statement with commas.\n", "\n", "

" ] @@ -95,20 +100,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - " Using maths inside a print() statement \n", + "
\n", + " Using maths inside a print() statement \n", "\n", "You can do maths within the print statement.\n", "\n", - ">```Python\n", - "> mass_H = 1.008\n", - ">\n", - "> print(\"The mass of a hydrogen molecule is: \", 2 * mass_H)\n", + "```Python\n", + "mass_H = 1.008\n", + "print(\"The mass of a hydrogen molecule is: \", 2 * mass_H)\n", + "```\n", "\n", "The output of this code is:
\n", - " The mass of a hydrogen molecule is: 2.016 \n", + " The mass of a hydrogen molecule is: 2.016 \n", "\n", - "☝ Note: The value 2.016 has been calculated, but is not stored as a variable, as in the previous example. If you wanted to do further maths with the number 2.016, it would be better to store it as a variable.\n", + "The value 2.016 has been calculated, but is not stored as a variable like it is in the previous example. If you wanted to do further maths with the number 2.016, it would be better to store it as a variable.\n", "\n", "

" ] @@ -118,29 +123,30 @@ "metadata": {}, "source": [ "\n", - "
\n", - " Maths in an f-string \n", + "
\n", + " Maths in an f-string \n", "\n", "You can do maths inside f strings. Just like previously, we can store the maths inside a variable and then call it from the f string, or do the maths within the f string itself.\n", "\n", - "> ```Python\n", - "> mass_C = 12.008\n", - "> mass_H = 1.008\n", - ">\n", - "> mass_methane = mass_C + 4 * mass_H\n", - ">\n", - "> # Calling up a variable that has already been calculated\n", - "> print(f\"The mass of methane is: {mass_methane:.2f}\")\n", - ">\n", - "> # Doing maths inside an f string\n", - "> print(f\"The mass of ethane is: {2 * mass_C + 6 * mass_H:.5f}\")\n", + "```Python\n", + "mass_C = 12.008\n", + "mass_H = 1.008\n", + "mass_methane = mass_C + 4 * mass_H\n", + "\n", + "# Calling up a variable that has already been calculated\n", + "print(f\"The mass of methane is: {mass_methane:.2f}\")\n", + "\n", + "# Doing maths inside an f string\n", + "print(f\"The mass of ethane is: {2 * mass_C + 6 * mass_H:.5f}\")\n", + "```\n", "\n", "The output of this is:
\n", - ">```\n", - ">The mass of methane is: 16.04 \n", - ">The mass of ethane is 30.06400\n", + "```text\n", + "The mass of methane is: 16.04 \n", + "The mass of ethane is 30.06400\n", + "```\n", "\n", - "☝ Note: The syntax :.5f indicates that the calculation should be given to 5 decimal places. The number can be changed to any number of desired significant figures.\n", + "The syntax :.5f indicates that the calculation should be given to 5 decimal places. The number can be changed to any number of desired significant figures.\n", "\n", "

" ] @@ -149,9 +155,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "
Exercise 1: Addition and Subtraction\n", - "
\n", + "
\n", + "
Exercise 1: Addition and Subtraction\n", + "\n", + "---\n", + "\n", "Using variables to store the atomic masses of hydrogen, carbon, oxygen, and nitrogen, write a program to calculate the molecular masses of the following species.\n", "\n", "
    \n", @@ -176,8 +184,8 @@ "metadata": {}, "source": [ "\n", - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "Your code should look something like this:\n", "> ```Python\n", @@ -207,9 +215,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "
    Exercise 2: Multiplication and Division \n", - "
    \n", + "
    \n", + "
    Exercise 2: Multiplication and Division \n", + "\n", + "---\n", + "\n", "The interaction potential between two isolated ions in water, Na+ (ionic radius = 116 pm) and Cl+ (ionic radius = 157 pm) is given by the following equation:\n", "\n", "$ V(r) = \\frac{q_{Na^+} \\ q_{Cl^+}}{4 \\ \\pi \\ \\epsilon \\ \\epsilon_{0} \\ r}\\ $\n", @@ -241,8 +251,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "Your code should look something like this:\n", "```Python\n", @@ -271,9 +281,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "
    Exercise 3: Exponents\n", - "
    \n", + "
    \n", + "
    Exercise 3: Exponents\n", + "\n", + "---\n", + "\n", "The equilibrium constant of an equation\n", "\n", "aA + bB β‡Œ cC + dD\n", @@ -298,8 +310,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "You should have got the output:\n", " 7.9e4 \n", @@ -335,8 +347,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - " Error message: TypeError\n", + "
    \n", + " Error message: TypeError\n", "\n", "Many mathematical operations can only be performed on variables of the ``integer`` or ``float``, and cannot be performed on variables of the type ``string``, even if that string is a number. Often, this will result in an error message popping up when you try to run it.\n", "\n", @@ -360,8 +372,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - " String concatenation \n", + "
    \n", + " String concatenation \n", "\n", "Run the two print statements below. \n", "\n", @@ -397,9 +409,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Maths errors \n", - "
    \n", + "
    \n", + "
    Exercise: Maths errors \n", + "\n", + "---\n", + "\n", "You are writing a program to calculate the mean of some data. Which of the below programs will result in an error, and why?\n", "\n", "a) \n", @@ -434,8 +448,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - " Click to view answer \n", + "
    \n", + " Click to view answer \n", "\n", "The answer is all three will result in error!\n", "\n", @@ -508,8 +522,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Importing a function from math\n", + "
    \n", + " Importing a function from math\n", "\n", "In this code, we want to import the function ``log10()`` to use when calculating pH from proton concentration using $ pH = -log_{10}[H^+]$\n", "\n", @@ -532,8 +546,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Importing pi and other constants\n", + "
    \n", + " Importing pi and other constants\n", "\n", "We can also import constants from ``math``, such as ``pi``, ``e``, and even ``inf``, infinity. \n", "\n", @@ -552,9 +566,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Importing a function \n", - "
    \n", + "
    \n", + "
    Exercise: Importing a function \n", + "\n", + "---\n", + "\n", "Using the relation\n", "\n", "$ pH = -log_{10}[H^+]$\n", @@ -569,8 +585,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "You should have got the output:\n", " 4.64 \n", @@ -610,8 +626,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Importing the entire 'math' module\n", + "
    \n", + " Importing the entire 'math' module\n", "\n", "For example with the module ``math``:\n", "\n", @@ -639,8 +655,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Importing other modules\n", + "
    \n", + " Importing other modules\n", "\n", "You can also import other modules and libraries, such as NumPy, SciPy, or MatPlotLib.pyplot. \n", "\n", @@ -653,9 +669,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Import the module math and use multiple functions\n", - "
    \n", + "
    \n", + "
    Exercise: Import the module math and use multiple functions\n", + "\n", + "---\n", + "\n", "A right-angled triangle sits inside a circle, with its hypotenuse equal to the diameter of the circle. Write a program to calculate one of the angles, θ, of the triangle in degrees, given that the opposite edge of the triangle has length 2 cm and the circumference of the circle is 10 cm. Import the module ``math``.\n", "\n", "Useful information:\n", @@ -680,8 +698,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "\n", "\n", @@ -730,8 +748,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Click to view answer
    \n", + "
    \n", + " Click to view answer
    \n", "\n", ">```Python\n", ">k_b = 1.38e-23\n", @@ -779,9 +797,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - "
    \n", - " Click to view answer
    \n", + "
    \n", + " Click to view answer
    \n", "\n", ">```Python\n", "> # Import all relevant libraries and functions at the beginning\n", @@ -851,8 +868,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - " Click to view answer
    \n", + "
    \n", + " Click to view answer
    \n", "\n", "Here is the same code with the mistakes corrected. Did you find them all or did you have to look at the answer?\n", "\n", From ce817d7be53e9c98f49b6b6b453cc0e5f1f2da55 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Wed, 6 Aug 2025 16:41:11 +0100 Subject: [PATCH 35/94] argparse --- lessons/basics/basics.md | 2 +- lessons/basics/write_run_python.md | 59 ++--- lessons/files/data_record.csv | 100 +++++++++ lessons/files/reading_files.ipynb | 98 +++++---- lessons/files/spectrum.txt | 2 + lessons/files/writing_files.ipynb | 118 ++++++---- lessons/formatting_guide.md | 140 ++++++++++++ lessons/loops_functions/For_Loop_Lesson.ipynb | 181 ++++++++-------- .../PyinC_while_loops_WIP.ipynb | 14 +- .../conditional_statements.ipynb | 44 ++-- .../loops_functions/functions_and_scope.ipynb | 146 +++++++------ lessons/loops_functions/tut_import_mod.ipynb | 85 +++++++- .../solving_problems/style-and-comments.ipynb | 26 ++- lessons/variables/Comparisons.ipynb | 78 +++---- .../variables/mathematical-operators.ipynb | 201 ++++++++++-------- 15 files changed, 873 insertions(+), 421 deletions(-) create mode 100644 lessons/formatting_guide.md diff --git a/lessons/basics/basics.md b/lessons/basics/basics.md index 337056a..10c3102 100644 --- a/lessons/basics/basics.md +++ b/lessons/basics/basics.md @@ -4,6 +4,6 @@ Here, you will find how to start running Python. ## What is Python -[Python](https://en.wikipedia.org/wiki/Python_(programming_language)) is an interepted language that is widely used. +[Python](https://en.wikipedia.org/wiki/Python_(programming_language)) is a high-level interpreted language that is widely used. This means it is written in a way that is close to standard English, reducing complexity for the programmer. Due to this popularity there are many ways to install and to use it. In the following sections we will guide you on how to install and use Python \ No newline at end of file diff --git a/lessons/basics/write_run_python.md b/lessons/basics/write_run_python.md index c913898..bbdf90f 100755 --- a/lessons/basics/write_run_python.md +++ b/lessons/basics/write_run_python.md @@ -18,10 +18,10 @@ The first step is to install Python, there are various ways to do this listed be ## Installation -
    - Miniforge Installation +
    + Miniforge Installation -### Install Miniforge +

    Install Miniforge

    Miniforge is a minimal install of the *conda* and *mamba* Python package managers. It currently has no license restrictions on its use. @@ -36,10 +36,11 @@ Once installed run the following command in a terminal to make sure Python is in

    -
    - Anaconda Installation -### Install Anaconda +
    + Anaconda Installation + +

    Install Anaconda

    Anaconda is a bundle of the *conda* package manager with a collection of programs and Python libraries. Together they can run and edit Python code. @@ -52,11 +53,9 @@ Once it is downloaded, **open the installer and follow the instructions**.

    -
    - Basic Python Installation - -### Install Python - +
    + Basic Python Installation +
    The simplest way to install Python is by itself Go to the Python [downloads](https://www.python.org/downloads/) and download the latest version. @@ -72,26 +71,26 @@ To create one use the following command in a terminal

    + + # Writing and running your Programme As with installing Python there are many ways to write your program, from using a text editor to using an IDE. Below we give guidance on a couple of these methods. -This is not an exhaustive list +This is not an exhaustive list.

    -
    - Text Editor and Command line - -## Text Editor and Command line - +
    +Text Editor and Command line +
    Perhaps the simplest method is to write your Python code in a text editor and then run on the command line, though this lacks the power of an IDE environment to make your life easier. Open the text editor of your choice and **write the following in a new file:** ```print("Hello, world!")``` -make sure it is saved, for example as *hello_world.py*. +Make sure it is saved, for example as *hello_world.py*. Open the command line window and type the following: @@ -101,21 +100,23 @@ Open the command line window and type the following: This will run your programme and print -Hello World + Hello World to your screen

    -
    - Spyder IDE -## Using the Spyder IDE + +
    + Spyder IDE + +

    Using the Spyder IDE

    Spyder is a Python IDE that is provided with the Anaconda install, or can be installed [separately](https://www.spyder-ide.org/) -### Open Spyder +
    Open Spyder
    If using Anaconda **Search for the program _Anaconda Navigator_ and open it**. After a few seconds, you should see a window like this appear: @@ -154,15 +155,17 @@ Anything that the computer writes as a result of the program is called an *outpu

    -
    - VScode IDE -## Using the VScode IDE + +
    + VScode IDE + +

    Using the VScode IDE

    Vscode is a general IDE that works with a range of programming languages it is provided with the Anaconda install, or can be installed [separately](https://code.visualstudio.com/) -### Open VScode +
    Open VScode
    If using Anaconda **Search for the program _Anaconda Navigator_ and open it**. After a few seconds, you should see a window like this appear: @@ -175,7 +178,7 @@ This will open window that should look this: ![Window separated into two panes and with a side ribbon with many options.](images/code_clean.png) -### Write a Python program +
    Write a Python program
    Click on ```New File...``` to create a new file. Type the file name ```hello_world.py``` into the input box that appears. diff --git a/lessons/files/data_record.csv b/lessons/files/data_record.csv index b1e81b8..22b9631 100644 --- a/lessons/files/data_record.csv +++ b/lessons/files/data_record.csv @@ -198,3 +198,103 @@ ,,,,,,,,,,,,,3.15230961298377,,,,,,3.7515605493133584,6.741573033707866,,5.324594257178527,,,,,3.0836454431960054,,,,,,,,,,9.176029962546817,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.288389513108614,5.380774032459426,6.067415730337078,3.9762796504369535,8.614232209737828,,,,,,,,,6.235955056179775,,8.11485642946317,6.167290886392011,,,,,,,3.077403245942572,,,7.553058676654182,,,,,,,,,,,,,6.429463171036204, ,,,,,,,,,,,,,,,,,,,,6.741573033707866,,,,,,,,,,,,,,,,,9.176029962546817,,,,,,,,,,,,,,,,,,,,,,,,5.399500624219725,6.098626716604246,,8.67665418227216,,,,,,,,,6.242197253433209,,8.11485642946317,6.192259675405743,,,,,,,3.102372034956305,,,7.615480649188515,,,,,,,,,,,,,6.429463171036204, ,,,,,,,,,,,,,,,,,,,,6.803995006242197,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5.424469413233458,,,,,,,,,,,,6.30461922596754,,,6.210986267166042,,,,,,,3.1210986267166043,,,7.615480649188515,,,,,,,,,,,,,, +3.651685393258427,5.074906367041199,2.1161048689138577,5.305867665418227,3.589263420724095,3.7265917602996255,0.6554307116104868,3.3021223470661676,0.9051186017478152,2.908863920099875,3.6641697877652937,1.223470661672909,0.35268414481897625,0.24968789013732834,1.647940074906367,5.855181023720349,4.4818976279650435,2.7590511860174782,1.9600499375780276,1.6541822721598003,3.8951310861423223,5.224719101123595,2.9712858926342074,5.474406991260924,4.800249687890138,0.9488139825218477,0.6173533083645443,0.6616729088639202,1.7602996254681649,4.057428214731585,0.24781523096129837,0.8926342072409489,5.099875156054932,4.001248439450687,1.317103620474407,2.5842696629213484,0.717852684144819,6.179775280898876,4.313358302122348,0.7116104868913858,0.6928838951310862,4.956304619225968,3.8077403245942576,1.2359550561797754,0.7365792759051186,1.079900124843945,5.724094881398252,2.702871410736579,1.0923845193508115,4.444444444444445,2.9837702871410734,3.183520599250936,4.132334581772784,5.81772784019975,1.797752808988764,3.6267166042446943,3.9076154806491883,4.875156054931336,6.029962546816479,3.2397003745318353,2.4032459425717856,3.3645443196004994,2.9837702871410734,1.8102372034956304,5.6491885143570535,3.5830212234706615,2.446941323345818,5.855181023720349,1.8164794007490637,3.3957553058676653,3.6766541822721597,3.957553058676654,5.705368289637952,3.595505617977528,5.593008739076155,6.104868913857677,4.138576779026217,2.303370786516854,0.9550561797752809,1.2796504369538078,5.730337078651686,3.3645443196004994,2.5343320848938826,0.9800249687890138,5.930087390761548,4.1260923845193505,5.1248439450686645,1.4544319600499376,3.576779026217228,2.958801498127341,5.436953807740325,0.466916354556804,1.9101123595505618,1.8352059925093633,2.1972534332084894,5.031210986267166,0.6928838951310862,4.856429463171036,4.425717852684145,4.157303370786517, +3.682896379525593,5.1123595505617985,2.153558052434457,5.33083645443196,3.6142322097378274,3.745318352059925,0.6803995006242198,3.3270911360799,0.9363295880149812,2.933832709113608,3.682896379525593,1.2546816479400749,0.3757802746566792,0.27965043695380776,1.6729088639200997,5.880149812734083,4.51310861423221,2.790262172284644,1.9850187265917605,1.6791510611735332,3.920099875156055,5.262172284644195,2.9962546816479403,5.50561797752809,4.831460674157303,0.9737827715355806,0.6491885143570537,0.686641697877653,1.7915106117353308,4.082397003745319,0.2727840199750312,0.9300873907615481,5.1248439450686645,4.019975031210986,1.34207240948814,2.6092384519350813,0.7490636704119851,6.210986267166042,4.33832709113608,0.7303370786516854,0.717852684144819,4.975031210986267,3.8389513108614235,1.2671660424469413,0.7677902621722846,1.104868913857678,5.7553058676654185,2.7340823970037453,1.1235955056179776,4.475655430711611,3.0087390761548067,3.214731585518102,4.157303370786517,5.855181023720349,1.8164794007490637,3.651685393258427,3.9325842696629216,4.912609238451935,6.054931335830212,3.2709113607990012,2.4219725343320846,3.383270911360799,3.0149812734082393,1.8289637952559301,5.68039950062422,3.607990012484395,2.4656679151061174,5.880149812734083,1.8414481897627966,3.420724094881398,3.7078651685393256,3.9887640449438204,5.730337078651686,3.6267166042446943,5.6242197253433215,6.129837702871411,4.16354556803995,2.340823970037453,0.9800249687890138,1.3108614232209737,5.767790262172285,3.3895131086142323,2.571785268414482,0.9987515605493134,5.961298377028713,4.151061173533084,5.149812734082397,1.4856429463171037,3.6017478152309614,2.990012484394507,5.468164794007491,0.49063670411985016,1.941323345817728,1.8601747815230962,2.2347066167290888,5.068664169787765,0.7303370786516854,4.887640449438202,4.450686641697877,4.18227215980025, +3.714107365792759,5.143570536828964,2.184769038701623,5.3620474406991265,3.639200998751561,3.7702871410736583,0.7053682896379525,3.3583021223470664,0.9675405742821472,2.958801498127341,3.7078651685393256,1.2796504369538078,0.39825218476903873,0.3096129837702871,1.6978776529338326,5.9113607990012484,4.544319600499376,2.82147315855181,2.009987515605493,1.6978776529338326,3.951310861423221,5.293383270911361,3.0149812734082393,5.536828963795256,4.856429463171036,1.0049937578027466,0.6803995006242198,0.7116104868913858,1.8227215980024971,4.107365792759051,0.29712858926342073,0.9612983770287141,5.143570536828964,4.044943820224719,1.3670411985018727,2.634207240948814,0.7865168539325842,6.242197253433209,4.3632958801498125,0.7553058676654182,0.7428214731585518,5.0,3.8639200998751564,1.2983770287141074,0.7927590511860175,1.1298377028714106,5.786516853932584,2.7715355805243447,1.161048689138577,4.506866416978776,3.0399500624219726,3.245942571785269,4.188514357053683,5.892634207240949,1.8414481897627966,3.6704119850187267,3.9637952559300875,4.950062421972534,6.086142322097379,3.295880149812734,2.446941323345818,3.4019975031210987,3.046192259675406,1.8539325842696628,5.711610486891385,3.6329588014981273,2.4906367041198503,5.8988764044943816,1.8664169787765295,3.4456928838951315,3.7390761548064915,4.019975031210986,5.7553058676654185,3.651685393258427,5.655430711610487,6.1485642946317105,4.18227215980025,2.3720349563046192,1.0049937578027466,1.348314606741573,5.805243445692884,3.420724094881398,2.602996254681648,1.0237203495630463,5.992509363295881,4.176029962546816,5.174781523096129,1.5168539325842696,3.6267166042446943,3.0212234706616727,5.499375780274657,0.5149812734082396,1.9725343320848938,1.8851435705368291,2.2659176029962547,5.106117353308365,0.7615480649188515,4.918851435705368,4.475655430711611,4.207240948813983, +3.745318352059925,5.174781523096129,2.215980024968789,5.3870162297128585,3.6641697877652937,3.7952559300873907,0.7240948813982522,3.383270911360799,0.9987515605493134,2.977528089887641,3.7265917602996255,1.3108614232209737,0.4213483146067416,0.33957553058676654,1.7228464419475658,5.942571785268415,4.575530586766542,2.8464419475655434,2.034956304619226,1.7228464419475658,3.982521847690387,5.324594257178527,3.0399500624219726,5.568039950062421,4.887640449438202,1.0362047440699127,0.7053682896379525,0.7365792759051186,1.8539325842696628,4.132334581772784,0.32209737827715357,0.9987515605493134,5.168539325842697,4.069912609238452,1.3857677902621723,2.6591760299625467,0.8177278401997503,6.30461922596754,4.388264669163545,0.7740324594257179,0.7677902621722846,5.0187265917602994,3.888888888888889,1.3358302122347065,0.8239700374531835,1.161048689138577,5.81772784019975,2.8027465667915106,1.1922596754057428,4.538077403245943,3.0649188514357055,3.2833957553058677,4.213483146067416,5.930087390761548,1.8664169787765295,3.6953807740324596,3.9887640449438204,4.987515605493134,6.111111111111111,3.320848938826467,2.4656679151061174,3.4269662921348316,3.0836454431960054,1.8726591760299625,5.736579275905119,3.651685393258427,2.5093632958801497,5.9238451935081144,1.8913857677902621,3.470661672908864,3.7702871410736583,4.057428214731585,5.774032459425719,3.6766541822721597,5.686641697877653,6.167290886392011,4.200998751560549,2.4032459425717856,1.0299625468164793,1.3795255930087391,5.848938826466916,3.451935081148564,2.634207240948814,1.042446941323346,6.023720349563047,4.200998751560549,5.199750312109863,1.5480649188514357,3.651685393258427,3.0524344569288386,5.524344569288389,0.5387016229712859,2.00374531835206,1.9101123595505618,2.2971285892634206,5.149812734082397,0.7990012484394506,4.950062421972534,4.500624219725343,4.225967540574282, +3.776529338327091,5.212234706616729,2.253433208489388,5.418227215980025,3.689138576779026,3.81398252184769,0.7490636704119851,3.408239700374532,1.0237203495630463,3.0024968789013733,3.745318352059925,1.34207240948814,0.44382022471910115,0.36953807740324596,1.7415730337078652,5.97378277153558,4.606741573033708,2.8776529338327093,2.0599250936329585,1.7415730337078652,4.00749063670412,5.355805243445693,3.0649188514357055,5.599250936329588,4.918851435705368,1.0611735330836456,0.7365792759051186,0.7615480649188515,1.8851435705368291,4.157303370786517,0.3464419475655431,1.0299625468164793,5.187265917602996,4.0886392009987516,1.410736579275905,2.6779026217228465,0.8551810237203495,6.30461922596754,4.413233458177278,0.7927590511860175,0.7927590511860175,5.043695380774032,3.920099875156055,1.3670411985018727,0.8551810237203495,1.1860174781523096,5.848938826466916,2.8339575530586765,1.229712858926342,4.563046192259676,3.0961298377028714,3.3146067415730336,4.238451935081149,5.961298377028713,1.8913857677902621,3.714107365792759,4.019975031210986,5.024968789013733,6.1360799001248445,3.352059925093633,2.4843945068664173,3.4456928838951315,3.114856429463171,1.8976279650436954,5.767790262172285,3.6766541822721597,2.5343320848938826,5.942571785268415,1.916354556803995,3.495630461922597,3.801498127340824,4.0886392009987516,5.799001248439451,3.7078651685393256,5.717852684144819,6.192259675405743,4.225967540574282,2.4406991260923845,1.0549313358302121,1.4169787765293382,5.8863920099875156,3.4831460674157304,2.671660424469413,1.0674157303370786,6.054931335830212,4.225967540574282,5.224719101123595,1.5792759051186018,3.6766541822721597,3.089887640449438,5.555555555555556,0.5630461922596754,2.034956304619226,1.941323345817728,2.328339575530587,5.187265917602996,0.8302122347066168,4.975031210986267,4.531835205992509,4.250936329588015, +3.801498127340824,5.243445692883895,2.2846441947565546,5.443196004993759,3.714107365792759,3.8389513108614235,0.7740324594257179,3.4332084893882646,1.0549313358302121,3.027465667915106,3.7702871410736583,1.373283395755306,0.466916354556804,0.3995006242197253,1.766541822721598,5.998751560549313,4.637952559300874,2.908863920099875,2.084893882646692,1.766541822721598,4.038701622971286,5.3870162297128585,3.089887640449438,5.630461922596755,4.943820224719102,1.0923845193508115,0.7677902621722846,0.7865168539325842,1.916354556803995,4.18227215980025,0.3714107365792759,1.0611735330836456,5.212234706616729,4.1136079900124844,1.4294631710362047,2.702871410736579,0.8863920099875156,6.30461922596754,4.438202247191011,0.8114856429463172,0.8177278401997503,5.062421972534332,3.9450686641697876,1.3982521847690388,0.8801498127340824,1.2109862671660423,5.880149812734083,2.871410736579276,1.260923845193508,4.594257178526841,3.1210986267166043,3.352059925093633,4.263420724094882,5.998751560549313,1.916354556803995,3.732833957553059,4.051186017478152,5.062421972534332,6.161048689138577,3.3770287141073654,2.5031210986267167,3.464419475655431,3.1460674157303368,1.916354556803995,5.799001248439451,3.6953807740324596,2.5530586766541825,5.967540574282147,1.941323345817728,3.5205992509363297,3.83270911360799,4.119850187265917,5.823970037453184,3.732833957553059,5.749063670411985,6.210986267166042,4.244694132334582,2.471910112359551,1.079900124843945,1.4544319600499376,5.9238451935081144,3.5143570536828963,2.702871410736579,1.0861423220973783,6.086142322097379,4.244694132334582,5.249687890137328,1.6104868913857677,3.701622971285893,3.1210986267166043,5.586766541822722,0.5867665418227216,2.066167290886392,1.9662921348314608,2.3657927590511862,5.224719101123595,0.867665418227216,5.0062421972534334,4.556803995006242,4.275905118601748, +3.83270911360799,5.274656679151062,2.3158551810237205,5.474406991260924,3.7390761548064915,3.857677902621723,0.7927590511860175,3.4581772784019975,1.0861423220973783,3.046192259675406,3.7890137328339577,1.3982521847690388,0.4893882646691636,0.42946317103620474,1.7915106117353308,6.029962546816479,4.66916354556804,2.9400749063670415,2.1098626716604243,1.7852684144818978,4.069912609238452,5.418227215980025,3.114856429463171,5.66167290886392,4.975031210986267,1.1235955056179776,0.7990012484394506,0.8114856429463172,1.9475655430711611,4.207240948813983,0.39637952559300876,1.0986267166042447,5.230961298377029,4.132334581772784,1.4544319600499376,2.727840199750312,0.9238451935081149,6.367041198501872,4.456928838951311,0.8364544319600499,0.8426966292134832,5.087390761548065,3.970037453183521,1.4294631710362047,0.9113607990012486,1.2421972534332086,5.9113607990012484,2.902621722846442,1.2921348314606742,4.6254681647940075,3.15230961298377,3.383270911360799,4.288389513108614,6.036204744069912,1.9350811485642945,3.7578027465667914,4.0761548064918856,5.099875156054932,6.186017478152309,3.4019975031210987,2.521847690387016,3.4893882646691634,3.1772784019975036,1.941323345817728,5.830212234706617,3.7203495630461925,2.578027465667915,5.986267166042447,1.9662921348314608,3.545568039950062,3.8639200998751564,4.151061173533084,5.848938826466916,3.7578027465667914,5.7802746566791505,6.229712858926342,4.263420724094882,2.5093632958801497,1.104868913857678,1.4856429463171037,5.961298377028713,3.545568039950062,2.7340823970037453,1.1111111111111112,6.117353308364544,4.269662921348314,5.274656679151062,1.6416978776529338,3.7265917602996255,3.15230961298377,5.611735330836455,0.6104868913857677,2.097378277153558,1.9912609238451935,2.397003745318352,5.262172284644195,0.898876404494382,5.0374531835206,4.581772784019975,4.294631710362047, +3.8639200998751564,5.312109862671661,2.35330836454432,5.499375780274657,3.764044943820225,3.882646691635456,0.8177278401997503,3.4893882646691634,1.1173533083645444,3.0711610486891385,3.81398252184769,1.4294631710362047,0.5124843945068664,0.45942571785268416,1.8164794007490637,6.061173533083646,4.700374531835206,2.9712858926342074,2.128589263420724,1.8102372034956304,4.094881398252185,5.449438202247191,3.139825218476904,5.692883895131087,5.0062421972534334,1.1485642946317103,0.8302122347066168,0.8364544319600499,1.978776529338327,4.2322097378277155,0.4207240948813982,1.1298377028714106,5.2559300873907615,4.157303370786517,1.4794007490636705,2.746566791510612,0.9550561797752809,6.367041198501872,4.4818976279650435,0.8551810237203495,0.8614232209737829,5.106117353308365,3.9950062421972534,1.466916354556804,0.9425717852684146,1.2671660424469413,5.942571785268415,2.9400749063670415,1.3295880149812733,4.656679151061174,3.183520599250936,3.4144818976279647,4.31960049937578,6.067415730337078,1.9600499375780276,3.776529338327091,4.107365792759051,5.1373283395755305,6.210986267166042,3.4332084893882646,2.5405742821473156,3.508114856429463,3.2084893882646695,1.9662921348314608,5.861423220973783,3.745318352059925,2.596754057428215,6.01123595505618,1.9912609238451935,3.5705368289637955,3.8951310861423223,4.188514357053683,5.867665418227216,3.7890137328339577,5.811485642946318,6.242197253433209,4.288389513108614,2.5405742821473156,1.1298377028714106,1.523096129837703,6.004993757802747,3.576779026217228,2.7715355805243447,1.1298377028714106,6.1485642946317105,4.294631710362047,5.299625468164794,1.6729088639200997,3.7515605493133584,3.183520599250936,5.64294631710362,0.6367041198501873,2.128589263420724,2.0224719101123596,2.428214731585518,5.305867665418227,0.9363295880149812,5.068664169787765,4.606741573033708,4.31960049937578, +3.8951310861423223,5.343320848938826,2.3845193508114857,5.5305867665418225,3.7890137328339577,3.9076154806491883,0.8426966292134832,3.5143570536828963,1.1423220973782773,3.0961298377028714,3.83270911360799,1.4606741573033708,0.534956304619226,0.4893882646691636,1.8414481897627966,6.086142322097379,4.7315855181023725,3.0024968789013733,2.153558052434457,1.8289637952559301,4.1260923845193505,5.480649188514358,3.1647940074906367,5.724094881398252,5.0374531835206,1.1797752808988764,0.8614232209737829,0.8614232209737829,2.016229712858926,4.257178526841448,0.44569288389513106,1.161048689138577,5.274656679151062,4.176029962546816,1.4981273408239701,2.7715355805243447,0.9925093632958802,6.429463171036204,4.506866416978776,0.8739076154806492,0.8863920099875156,5.131086142322098,4.02621722846442,1.4981273408239701,0.9737827715355806,1.2921348314606742,5.97378277153558,2.9712858926342074,1.3607990012484397,4.681647940074906,3.2084893882646695,3.451935081148564,4.344569288389513,6.104868913857677,1.9850187265917605,3.7952559300873907,4.132334581772784,5.174781523096129,6.235955056179775,3.4581772784019975,2.5593008739076155,3.5268414481897628,3.2397003745318353,1.9850187265917605,5.892634207240949,3.764044943820225,2.6217228464419473,6.029962546816479,2.016229712858926,3.595505617977528,3.926342072409488,4.219725343320849,5.892634207240949,3.81398252184769,5.842696629213483,6.242197253433209,4.307116104868914,2.578027465667915,1.1548064918851435,1.554307116104869,6.0424469413233455,3.607990012484395,2.8027465667915106,1.1548064918851435,6.179775280898876,4.31960049937578,5.324594257178527,1.704119850187266,3.776529338327091,3.214731585518102,5.674157303370786,0.6616729088639202,2.15980024968789,2.0474406991260925,2.4656679151061174,5.343320848938826,0.9675405742821472,5.099875156054932,4.631710362047441,4.344569288389513, +3.926342072409488,5.3745318352059925,2.4157303370786516,5.555555555555556,3.81398252184769,3.926342072409488,0.8614232209737829,3.5393258426966296,1.1735330836454432,3.114856429463171,3.857677902621723,1.4918851435705367,0.5580524344569288,0.519350811485643,1.8664169787765295,6.117353308364544,4.762796504369538,3.033707865168539,2.1785268414481895,1.8476903870162298,4.157303370786517,5.511860174781523,3.1897627965043696,5.7553058676654185,5.062421972534332,1.2109862671660423,0.8863920099875156,0.8863920099875156,2.0474406991260925,4.282147315855181,0.4700374531835206,1.198501872659176,5.299625468164794,4.200998751560549,1.523096129837703,2.7965043695380776,1.0237203495630463,6.429463171036204,4.531835205992509,0.898876404494382,0.9113607990012486,5.149812734082397,4.051186017478152,1.529338327091136,0.9987515605493134,1.3233458177278403,6.004993757802747,3.0024968789013733,1.3982521847690388,4.712858926342073,3.2397003745318353,3.4831460674157304,4.369538077403246,6.142322097378277,2.009987515605493,3.8202247191011236,4.16354556803995,5.212234706616729,6.242197253433209,3.4831460674157304,2.578027465667915,3.5518102372034956,3.2709113607990012,2.009987515605493,5.9238451935081144,3.7890137328339577,2.640449438202247,6.054931335830212,2.0411985018726595,3.620474406991261,3.957553058676654,4.250936329588015,5.917602996254682,3.8451935081148565,5.8739076154806495,6.30461922596754,4.325842696629214,2.6092384519350813,1.1797752808988764,1.591760299625468,6.079900124843945,3.639200998751561,2.8339575530586765,1.1735330836454432,6.210986267166042,4.344569288389513,5.34956304619226,1.735330836454432,3.801498127340824,3.245942571785269,5.705368289637952,0.6803995006242198,2.1910112359550564,2.0724094881398254,2.4968789013732833,5.380774032459426,0.9987515605493134,5.131086142322098,4.656679151061174,4.369538077403246, +3.957553058676654,5.411985018726591,2.453183520599251,5.586766541822722,3.8389513108614235,3.951310861423221,0.8863920099875156,3.564294631710362,1.2047440699126093,3.139825218476904,3.8764044943820224,1.5168539325842696,0.5811485642946317,0.548689138576779,1.8913857677902621,6.1485642946317105,4.794007490636704,3.0649188514357055,2.203495630461923,1.8726591760299625,4.18227215980025,5.543071161048689,3.214731585518102,5.786516853932584,5.093632958801498,1.2359550561797754,0.9176029962546817,0.9113607990012486,2.0786516853932584,4.307116104868914,0.4950062421972534,1.229712858926342,5.318352059925093,4.225967540574282,1.5418227215980027,2.82147315855181,1.0611735330836456,6.491885143570538,4.556803995006242,0.9176029962546817,0.9363295880149812,5.174781523096129,4.0761548064918856,1.5605493133583022,1.0299625468164793,1.348314606741573,6.036204744069912,3.0399500624219726,1.4294631710362047,4.7440699126092385,3.2646691635455682,3.5205992509363297,4.394506866416979,6.173533083645444,2.034956304619226,3.8389513108614235,4.188514357053683,5.249687890137328,6.30461922596754,3.5143570536828963,2.596754057428215,3.5705368289637955,3.3021223470661676,2.0287141073657926,5.955056179775282,3.8077403245942576,2.66541822721598,6.073657927590512,2.0599250936329585,3.6454431960049942,3.982521847690387,4.282147315855181,5.942571785268415,3.870162297128589,5.905118601747815,6.30461922596754,4.3508114856429465,2.6466916354556806,1.2047440699126093,1.6229712858926344,6.117353308364544,3.6704119850187267,2.871410736579276,1.198501872659176,6.242197253433209,4.369538077403246,5.3745318352059925,1.766541822721598,3.826466916354557,3.2833957553058677,5.730337078651686,0.7053682896379525,2.2222222222222223,2.097378277153558,2.5280898876404496,5.424469413233458,1.0362047440699127,5.15605493133583,4.681647940074906,4.388264669163545, +3.9887640449438204,5.443196004993759,2.4843945068664173,5.611735330836455,3.8639200998751564,3.9762796504369535,0.9113607990012486,3.589263420724095,1.2359550561797754,3.1647940074906367,3.8951310861423223,1.5480649188514357,0.6036204744069913,0.5786516853932584,1.916354556803995,6.179775280898876,4.825218476903871,3.0961298377028714,2.2284644194756553,1.8913857677902621,4.213483146067416,5.574282147315855,3.233458177278402,5.81772784019975,5.1248439450686645,1.2671660424469413,0.9488139825218477,0.9363295880149812,2.1098626716604243,4.332084893882647,0.5199750312109862,1.2671660424469413,5.337078651685393,4.244694132334582,1.5667915106117354,2.84019975031211,1.0923845193508115,6.491885143570538,4.581772784019975,0.9363295880149812,0.9612983770287141,5.199750312109863,4.1011235955056184,1.5980024968789013,1.0611735330836456,1.373283395755306,6.067415730337078,3.0711610486891385,1.4606741573033708,4.775280898876405,3.295880149812734,3.5518102372034956,4.419475655430712,6.210986267166042,2.0599250936329585,3.857677902621723,4.219725343320849,5.287141073657928,6.30461922596754,3.5393258426966296,2.6217228464419473,3.589263420724095,3.3333333333333335,2.0536828963795255,5.986267166042447,3.83270911360799,2.68414481897628,6.098626716604246,2.084893882646692,3.6704119850187267,4.013732833957553,4.31960049937578,5.961298377028713,3.8951310861423223,5.936329588014981,6.30461922596754,4.369538077403246,2.6779026217228465,1.229712858926342,1.6604244694132335,6.154806491885144,3.701622971285893,2.902621722846442,1.2172284644194757,6.30461922596754,4.394506866416979,5.399500624219725,1.797752808988764,3.8514357053682895,3.3146067415730336,5.761548064918852,0.7303370786516854,2.253433208489388,2.128589263420724,2.565543071161049,5.461922596754057,1.0674157303370786,5.187265917602996,4.70661672908864,4.413233458177278, +4.019975031210986,5.474406991260924,2.521847690387016,5.64294631710362,3.888888888888889,3.9950062421972534,0.9300873907615481,3.620474406991261,1.260923845193508,3.183520599250936,3.920099875156055,1.5792759051186018,0.6242197253433208,0.6086142322097379,1.941323345817728,6.20474406991261,4.856429463171036,3.1273408239700373,2.253433208489388,1.916354556803995,4.244694132334582,5.605493133583021,3.258426966292135,5.848938826466916,5.149812734082397,1.2983770287141074,0.9800249687890138,0.9612983770287141,2.1410736579275906,4.357053682896379,0.5443196004993758,1.2983770287141074,5.3620474406991265,4.269662921348314,1.591760299625468,2.865168539325843,1.1298377028714106,6.554307116104869,4.606741573033708,0.9550561797752809,0.9862671660424469,5.218476903870163,4.132334581772784,1.6292134831460674,1.0861423220973783,1.404494382022472,6.098626716604246,3.102372034956305,1.4981273408239701,4.800249687890138,3.3270911360799,3.589263420724095,4.450686641697877,6.242197253433209,2.0786516853932584,3.882646691635456,4.244694132334582,5.324594257178527,6.367041198501872,3.564294631710362,2.640449438202247,3.6142322097378274,3.3645443196004994,2.0786516853932584,6.0174781523096135,3.857677902621723,2.7091136079900124,6.117353308364544,2.1098626716604243,3.6953807740324596,4.044943820224719,4.3508114856429465,5.986267166042447,3.926342072409488,5.967540574282147,6.367041198501872,4.388264669163545,2.715355805243446,1.2484394506866416,1.6978776529338326,6.198501872659176,3.732833957553059,2.933832709113608,1.2359550561797754,6.30461922596754,4.413233458177278,5.424469413233458,1.8227215980024971,3.8764044943820224,3.3458177278401995,5.792759051186017,0.7553058676654182,2.2846441947565546,2.153558052434457,2.596754057428215,5.499375780274657,1.104868913857678,5.218476903870163,4.737827715355805,4.438202247191011, +4.044943820224719,5.511860174781523,2.5530586766541825,5.667915106117353,3.9138576779026217,4.019975031210986,0.9550561797752809,3.6454431960049942,1.2921348314606742,3.2084893882646695,3.938826466916354,1.6042446941323347,0.6491885143570537,0.6367041198501873,1.9662921348314608,6.235955056179775,4.887640449438202,3.1585518102372037,2.278401997503121,1.9350811485642945,4.269662921348314,5.64294631710362,3.2833957553058677,5.880149812734083,5.181023720349563,1.3233458177278403,1.0112359550561798,0.9862671660424469,2.1722846441947565,4.382022471910113,0.5692883895131086,1.3295880149812733,5.380774032459426,4.288389513108614,1.6104868913857677,2.8901373283395753,1.16729088639201,6.554307116104869,4.6254681647940075,0.9800249687890138,1.0112359550561798,5.243445692883895,4.157303370786517,1.6604244694132335,1.1173533083645444,1.4294631710362047,6.129837702871411,3.139825218476904,1.529338327091136,4.831460674157303,3.352059925093633,3.620474406991261,4.475655430711611,6.30461922596754,2.1036204744069913,3.9013732833957557,4.275905118601748,5.3620474406991265,6.367041198501872,3.595505617977528,2.6591760299625467,3.6329588014981273,3.3957553058676653,2.097378277153558,6.048689138576779,3.8764044943820224,2.727840199750312,6.1360799001248445,2.134831460674157,3.7203495630461925,4.0761548064918856,4.382022471910113,6.01123595505618,3.951310861423221,5.998751560549313,6.367041198501872,4.413233458177278,2.746566791510612,1.2734082397003745,1.7290886392009988,6.235955056179775,3.764044943820225,2.9712858926342074,1.260923845193508,6.367041198501872,4.438202247191011,5.449438202247191,1.8539325842696628,3.9013732833957557,3.3770287141073654,5.81772784019975,0.7802746566791511,2.3158551810237205,2.1785268414481895,2.6279650436953808,5.536828963795256,1.136079900124844,5.249687890137328,4.762796504369538,4.463171036204744, +4.0761548064918856,5.543071161048689,2.5842696629213484,5.69912609238452,3.938826466916354,4.044943820224719,0.9800249687890138,3.6704119850187267,1.3233458177278403,3.233458177278402,3.9637952559300875,1.6354556803995006,0.6741573033707865,0.6679151061173533,1.9912609238451935,6.242197253433209,4.918851435705368,3.1897627965043696,2.303370786516854,1.9600499375780276,4.300873907615481,5.674157303370786,3.3083645443196006,5.9113607990012484,5.212234706616729,1.3545568039950062,1.0362047440699127,1.0112359550561798,2.203495630461923,4.406991260923846,0.5942571785268415,1.3670411985018727,5.405742821473158,4.313358302122348,1.6354556803995006,2.9151061173533086,1.198501872659176,6.616729088639201,4.65043695380774,0.9987515605493134,1.0299625468164793,5.262172284644195,4.18227215980025,1.6978776529338326,1.1485642946317103,1.4544319600499376,6.161048689138577,3.17103620474407,1.5605493133583022,4.8626716604244695,3.383270911360799,3.651685393258427,4.500624219725343,6.30461922596754,2.128589263420724,3.920099875156055,4.300873907615481,5.399500624219725,6.367041198501872,3.620474406991261,2.6779026217228465,3.651685393258427,3.4332084893882646,2.122347066167291,6.079900124843945,3.9013732833957557,2.752808988764045,6.161048689138577,2.15980024968789,3.745318352059925,4.107365792759051,4.413233458177278,6.036204744069912,3.9762796504369535,6.029962546816479,6.367041198501872,4.431960049937578,2.7840199750312107,1.2983770287141074,1.766541822721598,6.30461922596754,3.7952559300873907,3.0024968789013733,1.2796504369538078,6.367041198501872,4.463171036204744,5.480649188514358,1.8851435705368291,3.926342072409488,3.408239700374532,5.848938826466916,0.8052434456928839,2.3470661672908864,2.203495630461923,2.66541822721598,5.580524344569288,1.1735330836454432,5.280898876404494,4.787765293383271,4.4818976279650435, +4.107365792759051,5.574282147315855,2.6217228464419473,5.724094881398252,3.9637952559300875,4.063670411985019,0.9987515605493134,3.6953807740324596,1.3545568039950062,3.2521847690387014,3.982521847690387,1.6666666666666667,0.6928838951310862,0.6991260923845194,2.016229712858926,6.30461922596754,4.950062421972534,3.2209737827715355,2.328339575530587,1.978776529338327,4.332084893882647,5.705368289637952,3.3333333333333335,5.942571785268415,5.237203495630462,1.3857677902621723,1.0674157303370786,1.0362047440699127,2.2347066167290888,4.431960049937578,0.618601747815231,1.3982521847690388,5.424469413233458,4.332084893882647,1.6541822721598003,2.933832709113608,1.2359550561797754,6.616729088639201,4.675405742821473,1.017478152309613,1.0549313358302121,5.287141073657928,4.213483146067416,1.7290886392009988,1.1797752808988764,1.4856429463171037,6.192259675405743,3.202247191011236,1.5980024968789013,4.893882646691636,3.408239700374532,3.689138576779026,4.525593008739076,6.367041198501872,2.153558052434457,3.9450686641697876,4.332084893882647,5.436953807740325,6.429463171036204,3.6454431960049942,2.696629213483146,3.6766541822721597,3.464419475655431,2.1410736579275906,6.111111111111111,3.920099875156055,2.7715355805243447,6.179775280898876,2.184769038701623,3.7702871410736583,4.138576779026217,4.444444444444445,6.054931335830212,4.00749063670412,6.061173533083646,6.429463171036204,4.450686641697877,2.8152309612983775,1.3233458177278403,1.797752808988764,6.30461922596754,3.826466916354557,3.0399500624219726,1.3046192259675407,6.429463171036204,4.488139825218477,5.50561797752809,1.916354556803995,3.951310861423221,3.4456928838951315,5.880149812734083,0.8239700374531835,2.3782771535580522,2.2347066167290888,2.696629213483146,5.617977528089888,1.2047440699126093,5.312109862671661,4.812734082397004,4.506866416978776, +4.138576779026217,5.611735330836455,2.6529338327091136,5.7553058676654185,3.9887640449438204,4.0886392009987516,1.0237203495630463,3.7265917602996255,1.3795255930087391,3.2771535580524347,4.00749063670412,1.6978776529338326,0.717852684144819,0.7303370786516854,2.0411985018726595,6.30461922596754,4.9812734082397006,3.2521847690387014,2.35330836454432,2.00374531835206,4.357053682896379,5.736579275905119,3.3583021223470664,5.967540574282147,5.268414481897628,1.410736579275905,1.0986267166042447,1.0611735330836456,2.2659176029962547,4.456928838951311,0.6429463171036205,1.4294631710362047,5.449438202247191,4.357053682896379,1.6791510611735332,2.958801498127341,1.2671660424469413,6.679151061173534,4.700374531835206,1.042446941323346,1.079900124843945,5.305867665418227,4.238451935081149,1.7602996254681649,1.2047440699126093,1.5106117353308364,6.223470661672909,3.2397003745318353,1.6292134831460674,4.918851435705368,3.439450686641698,3.7203495630461925,4.55056179775281,6.367041198501872,2.1785268414481895,3.9637952559300875,4.3632958801498125,5.474406991260924,6.429463171036204,3.6766541822721597,2.715355805243446,3.6953807740324596,3.495630461922597,2.1660424469413235,6.1360799001248445,3.9450686641697876,2.7965043695380776,6.20474406991261,2.209737827715356,3.7952559300873907,4.169787765293384,4.4818976279650435,6.079900124843945,4.032459425717852,6.092384519350812,6.429463171036204,4.475655430711611,2.8464419475655434,1.348314606741573,1.8352059925093633,6.367041198501872,3.857677902621723,3.0711610486891385,1.3233458177278403,6.429463171036204,4.51310861423221,5.5305867665418225,1.9475655430711611,3.9762796504369535,3.4769038701622974,5.905118601747815,0.8489388264669163,2.4094881398252186,2.259675405742821,2.727840199750312,5.655430711610487,1.2359550561797754,5.337078651685393,4.837702871410737,4.531835205992509, +4.169787765293384,5.64294631710362,2.68414481897628,5.7802746566791505,4.013732833957553,4.1136079900124844,1.048689138576779,3.7515605493133584,1.410736579275905,3.3021223470661676,4.02621722846442,1.7228464419475658,0.7428214731585518,0.7553058676654182,2.066167290886392,6.367041198501872,5.012484394506866,3.2833957553058677,2.3782771535580522,2.0224719101123596,4.388264669163545,5.767790262172285,3.383270911360799,5.998751560549313,5.299625468164794,1.4419475655430714,1.1298377028714106,1.0861423220973783,2.2971285892634206,4.4818976279650435,0.6679151061173533,1.466916354556804,5.468164794007491,4.382022471910113,1.704119850187266,2.9837702871410734,1.3046192259675407,6.679151061173534,4.725343320848939,1.0611735330836456,1.104868913857678,5.33083645443196,4.263420724094882,1.7915106117353308,1.2359550561797754,1.5355805243445693,6.242197253433209,3.2709113607990012,1.6666666666666667,4.950062421972534,3.464419475655431,3.7578027465667914,4.581772784019975,6.429463171036204,2.1972534332084894,3.9887640449438204,4.388264669163545,5.511860174781523,6.491885143570538,3.701622971285893,2.7340823970037453,3.714107365792759,3.5268414481897628,2.184769038701623,6.167290886392011,3.9637952559300875,2.8152309612983775,6.223470661672909,2.2347066167290888,3.8202247191011236,4.200998751560549,4.51310861423221,6.104868913857677,4.057428214731585,6.123595505617978,6.429463171036204,4.49438202247191,2.8838951310861427,1.373283395755306,1.8726591760299625,6.367041198501872,3.888888888888889,3.102372034956305,1.348314606741573,6.491885143570538,4.538077403245943,5.555555555555556,1.978776529338327,4.001248439450687,3.508114856429463,5.936329588014981,0.8739076154806492,2.4406991260923845,2.2846441947565546,2.7590511860174782,5.69912609238452,1.2734082397003745,5.36828963795256,4.8626716604244695,4.556803995006242, +4.200998751560549,5.674157303370786,2.7215980024968793,5.811485642946318,4.038701622971286,4.132334581772784,1.0674157303370786,3.776529338327091,1.4419475655430714,3.320848938826467,4.044943820224719,1.7540574282147314,0.7615480649188515,0.7865168539325842,2.091136079900125,6.367041198501872,5.043695380774032,3.3146067415730336,2.4032459425717856,2.0474406991260925,4.419475655430712,5.799001248439451,3.408239700374532,6.029962546816479,5.324594257178527,1.4731585518102372,1.161048689138577,1.1111111111111112,2.328339575530587,4.506866416978776,0.6928838951310862,1.4981273408239701,5.493133583021224,4.400749063670412,1.7228464419475658,3.0087390761548067,1.3358302122347065,6.741573033707866,4.750312109862672,1.079900124843945,1.1298377028714106,5.34956304619226,4.288389513108614,1.8289637952559301,1.2671660424469413,1.5605493133583022,6.30461922596754,3.3083645443196006,1.6978776529338326,4.9812734082397006,3.495630461922597,3.7890137328339577,4.606741573033708,6.429463171036204,2.2222222222222223,4.00749063670412,4.419475655430712,5.549313358302123,6.491885143570538,3.7265917602996255,2.752808988764045,3.7390761548064915,3.5580524344569286,2.209737827715356,6.198501872659176,3.9887640449438204,2.84019975031211,6.242197253433209,2.259675405742821,3.8451935081148565,4.2322097378277155,4.544319600499376,6.123595505617978,4.0886392009987516,6.1485642946317105,6.491885143570538,4.519350811485642,2.9151061173533086,1.3982521847690388,1.9038701622971288,6.429463171036204,3.920099875156055,3.139825218476904,1.3670411985018727,6.491885143570538,4.563046192259676,5.580524344569288,2.009987515605493,4.02621722846442,3.5393258426966296,5.967540574282147,0.898876404494382,2.4656679151061174,2.3158551810237205,2.7965043695380776,5.736579275905119,1.3046192259675407,5.399500624219725,4.887640449438202,4.575530586766542, +4.2322097378277155,5.711610486891385,2.752808988764045,5.836454431960051,4.063670411985019,4.157303370786517,1.0923845193508115,3.801498127340824,1.4731585518102372,3.3458177278401995,4.069912609238452,1.7852684144818978,0.7865168539325842,0.8177278401997503,2.1161048689138577,6.429463171036204,5.074906367041199,3.3458177278401995,2.428214731585518,2.066167290886392,4.444444444444445,5.830212234706617,3.4332084893882646,6.061173533083646,5.355805243445693,1.4981273408239701,1.1922596754057428,1.136079900124844,2.3657927590511862,4.525593008739076,0.717852684144819,1.5355805243445693,5.511860174781523,4.425717852684145,1.7478152309612984,3.027465667915106,1.373283395755306,6.741573033707866,4.769038701622971,1.104868913857678,1.1548064918851435,5.3745318352059925,4.31960049937578,1.8601747815230962,1.2921348314606742,1.591760299625468,6.30461922596754,3.339575530586767,1.7290886392009988,5.012484394506866,3.5268414481897628,3.826466916354557,4.631710362047441,6.491885143570538,2.247191011235955,4.02621722846442,4.444444444444445,5.586766541822722,6.491885143570538,3.7578027465667914,2.7715355805243447,3.7578027465667914,3.589263420724095,2.2347066167290888,6.229712858926342,4.013732833957553,2.8589263420724094,6.242197253433209,2.2846441947565546,3.870162297128589,4.263420724094882,4.575530586766542,6.1485642946317105,4.1136079900124844,6.179775280898876,6.491885143570538,4.538077403245943,2.9525593008739075,1.4232209737827717,1.941323345817728,6.491885143570538,3.9450686641697876,3.17103620474407,1.3920099875156053,6.554307116104869,4.581772784019975,5.605493133583021,2.0411985018726595,4.057428214731585,3.5705368289637955,5.992509363295881,0.9238451935081149,2.4968789013732833,2.340823970037453,2.8277153558052435,5.774032459425719,1.34207240948814,5.430711610486892,4.912609238451935,4.600499375780275, +4.263420724094882,5.742821473158552,2.7840199750312107,5.867665418227216,4.0886392009987516,4.18227215980025,1.1173533083645444,3.826466916354557,1.4981273408239701,3.370786516853933,4.0886392009987516,1.8164794007490637,0.8114856429463172,0.8489388264669163,2.1410736579275906,6.429463171036204,5.106117353308365,3.3770287141073654,2.453183520599251,2.091136079900125,4.475655430711611,5.861423220973783,3.4581772784019975,6.092384519350812,5.3870162297128585,1.529338327091136,1.2172284644194757,1.161048689138577,2.397003745318352,4.55056179775281,0.7428214731585518,1.5667915106117354,5.5305867665418225,4.444444444444445,1.766541822721598,3.0524344569288386,1.404494382022472,6.803995006242197,4.794007490636704,1.1235955056179776,1.1735330836454432,5.393258426966292,4.344569288389513,1.8913857677902621,1.3233458177278403,1.616729088639201,6.367041198501872,3.370786516853933,1.766541822721598,5.0374531835206,3.5518102372034956,3.857677902621723,4.656679151061174,6.554307116104869,2.272159800249688,4.051186017478152,4.475655430711611,5.6242197253433215,6.554307116104869,3.7827715355805243,2.7965043695380776,3.776529338327091,3.620474406991261,2.253433208489388,6.242197253433209,4.032459425717852,2.8838951310861427,6.30461922596754,2.303370786516854,3.8951310861423223,4.294631710362047,4.612983770287141,6.173533083645444,4.138576779026217,6.210986267166042,6.491885143570538,4.556803995006242,2.9837702871410734,1.4481897627965044,1.9725343320848938,6.491885143570538,3.9762796504369535,3.202247191011236,1.410736579275905,6.554307116104869,4.606741573033708,5.630461922596755,2.0724094881398254,4.082397003745319,3.6017478152309614,6.023720349563047,0.9488139825218477,2.5280898876404496,2.3657927590511862,2.8589263420724094,5.811485642946318,1.373283395755306,5.461922596754057,4.943820224719102,4.6254681647940075, +4.288389513108614,5.774032459425719,2.82147315855181,5.892634207240949,4.1136079900124844,4.200998751560549,1.136079900124844,3.857677902621723,1.529338327091136,3.3895131086142323,4.1136079900124844,1.8414481897627966,0.8302122347066168,0.8801498127340824,2.1660424469413235,6.491885143570538,5.1373283395755305,3.408239700374532,2.471910112359551,2.1098626716604243,4.500624219725343,5.892634207240949,3.4769038701622974,6.123595505617978,5.418227215980025,1.5605493133583022,1.2484394506866416,1.1860174781523096,2.428214731585518,4.575530586766542,0.7677902621722846,1.5980024968789013,5.555555555555556,4.4694132334581775,1.7915106117353308,3.077403245942572,1.4419475655430714,6.803995006242197,4.818976279650437,1.1423220973782773,1.198501872659176,5.418227215980025,4.369538077403246,1.9225967540574282,1.3545568039950062,1.6416978776529338,6.367041198501872,3.408239700374532,1.797752808988764,5.068664169787765,3.5830212234706615,3.888888888888889,4.681647940074906,6.554307116104869,2.2971285892634206,4.069912609238452,4.500624219725343,5.66167290886392,6.554307116104869,3.8077403245942576,2.8152309612983775,3.801498127340824,3.651685393258427,2.278401997503121,6.30461922596754,4.057428214731585,2.902621722846442,6.30461922596754,2.328339575530587,3.920099875156055,4.325842696629214,4.644194756554308,6.198501872659176,4.169787765293384,6.242197253433209,6.554307116104869,4.581772784019975,3.0212234706616727,1.4731585518102372,2.009987515605493,6.554307116104869,4.00749063670412,3.2397003745318353,1.435705368289638,6.616729088639201,4.631710362047441,5.655430711610487,2.1036204744069913,4.107365792759051,3.639200998751561,6.054931335830212,0.9737827715355806,2.5593008739076155,2.3907615480649187,2.8963795255930087,5.855181023720349,1.410736579275905,5.493133583021224,4.9687890137328345,4.644194756554308, +4.31960049937578,5.805243445692884,2.852684144818976,5.9238451935081144,4.144818976279651,4.225967540574282,1.161048689138577,3.882646691635456,1.5605493133583022,3.4144818976279647,4.132334581772784,1.8726591760299625,0.8551810237203495,0.9051186017478152,2.1910112359550564,6.491885143570538,5.162297128589263,3.439450686641698,2.4968789013732833,2.128589263420724,4.531835205992509,5.9238451935081144,3.5018726591760303,6.154806491885144,5.443196004993759,1.585518102372035,1.2796504369538078,1.2109862671660423,2.459425717852684,4.600499375780275,0.7927590511860175,1.6354556803995006,5.574282147315855,4.488139825218477,1.8164794007490637,3.0961298377028714,1.4731585518102372,6.866416978776529,4.843945068664169,1.161048689138577,1.223470661672909,5.443196004993759,4.400749063670412,1.9600499375780276,1.3857677902621723,1.6729088639200997,6.429463171036204,3.439450686641698,1.8352059925093633,5.099875156054932,3.607990012484395,3.926342072409488,4.712858926342073,6.616729088639201,2.322097378277154,4.0886392009987516,4.531835205992509,5.69912609238452,6.616729088639201,3.8389513108614235,2.8339575530586765,3.8202247191011236,3.682896379525593,2.2971285892634206,6.30461922596754,4.0761548064918856,2.9275905118601746,6.30461922596754,2.35330836454432,3.9450686641697876,4.357053682896379,4.675405742821473,6.217228464419476,4.194756554307116,6.30461922596754,6.554307116104869,4.600499375780275,3.0524344569288386,1.4981273408239701,2.0411985018726595,6.554307116104869,4.038701622971286,3.2709113607990012,1.4544319600499376,6.616729088639201,4.656679151061174,5.68039950062422,2.134831460674157,4.132334581772784,3.6704119850187267,6.079900124843945,0.9925093632958802,2.5905118601747814,2.4219725343320846,2.9275905118601746,5.892634207240949,1.4419475655430714,5.5181023720349565,4.9937578027465666,4.66916354556804, +4.3508114856429465,5.842696629213483,2.8901373283395753,5.948813982521848,4.169787765293384,4.244694132334582,1.1860174781523096,3.9076154806491883,1.585518102372035,3.439450686641698,4.151061173533084,1.9038701622971288,0.8801498127340824,0.9363295880149812,2.209737827715356,6.554307116104869,5.19350811485643,3.470661672908864,2.521847690387016,2.153558052434457,4.563046192259676,5.955056179775282,3.5268414481897628,6.186017478152309,5.474406991260924,1.616729088639201,1.3108614232209737,1.2359550561797754,2.4906367041198503,4.6254681647940075,0.8177278401997503,1.6666666666666667,5.599250936329588,4.51310861423221,1.8352059925093633,3.1210986267166043,1.5106117353308364,6.866416978776529,4.868913857677903,1.1860174781523096,1.2484394506866416,5.461922596754057,4.425717852684145,1.9912609238451935,1.410736579275905,1.6978776529338326,6.429463171036204,3.470661672908864,1.8664169787765295,5.131086142322098,3.639200998751561,3.957553058676654,4.737827715355805,6.616729088639201,2.340823970037453,4.1136079900124844,4.556803995006242,5.736579275905119,6.616729088639201,3.8639200998751564,2.852684144818976,3.8389513108614235,3.714107365792759,2.322097378277154,6.367041198501872,4.1011235955056184,2.9463171036204745,6.367041198501872,2.3782771535580522,3.970037453183521,4.382022471910113,4.70661672908864,6.242197253433209,4.225967540574282,6.30461922596754,6.554307116104869,4.619225967540574,3.089887640449438,1.523096129837703,2.0786516853932584,6.616729088639201,4.069912609238452,3.3021223470661676,1.4794007490636705,6.679151061173534,4.681647940074906,5.705368289637952,2.1660424469413235,4.157303370786517,3.701622971285893,6.111111111111111,1.017478152309613,2.6217228464419473,2.446941323345818,2.958801498127341,5.930087390761548,1.4794007490636705,5.549313358302123,5.0187265917602994,4.694132334581773, +4.382022471910113,5.8739076154806495,2.9213483146067416,5.980024968789014,4.194756554307116,4.269662921348314,1.2047440699126093,3.9325842696629216,1.616729088639201,3.4581772784019975,4.176029962546816,1.9350811485642945,0.898876404494382,0.9675405742821472,2.2347066167290888,6.554307116104869,5.224719101123595,3.5018726591760303,2.546816479400749,2.1722846441947565,4.588014981273409,5.992509363295881,3.5518102372034956,6.217228464419476,5.50561797752809,1.647940074906367,1.34207240948814,1.260923845193508,2.521847690387016,4.65043695380774,0.8426966292134832,1.6978776529338326,5.617977528089888,4.538077403245943,1.8601747815230962,3.1460674157303368,1.5418227215980027,6.928838951310862,4.893882646691636,1.2047440699126093,1.2734082397003745,5.48689138576779,4.450686641697877,2.0224719101123596,1.4419475655430714,1.7228464419475658,6.491885143570538,3.508114856429463,1.8976279650436954,5.15605493133583,3.6641697877652937,3.9950062421972534,4.762796504369538,6.679151061173534,2.3657927590511862,4.132334581772784,4.588014981273409,5.774032459425719,6.616729088639201,3.888888888888889,2.871410736579276,3.8639200998751564,3.745318352059925,2.3470661672908864,6.367041198501872,4.1260923845193505,2.9712858926342074,6.367041198501872,2.4032459425717856,3.9950062421972534,4.413233458177278,4.7440699126092385,6.242197253433209,4.250936329588015,6.367041198501872,6.616729088639201,4.644194756554308,3.1210986267166043,1.5480649188514357,2.1161048689138577,6.679151061173534,4.1011235955056184,3.339575530586767,1.4981273408239701,6.679151061173534,4.70661672908864,5.730337078651686,2.1972534332084894,4.18227215980025,3.732833957553059,6.142322097378277,1.042446941323346,2.6529338327091136,2.471910112359551,2.9962546816479403,5.97378277153558,1.5106117353308364,5.580524344569288,5.043695380774032,4.719101123595506, +4.413233458177278,5.905118601747815,2.9525593008739075,6.004993757802747,4.219725343320849,4.294631710362047,1.229712858926342,3.957553058676654,1.647940074906367,3.4831460674157304,4.194756554307116,1.9600499375780276,0.9238451935081149,0.9987515605493134,2.259675405742821,6.616729088639201,5.2559300873907615,3.5268414481897628,2.571785268414482,2.1972534332084894,4.619225967540574,6.023720349563047,3.576779026217228,6.242197253433209,5.5305867665418225,1.6729088639200997,1.373283395755306,1.285892634207241,2.5530586766541825,4.675405742821473,0.867665418227216,1.735330836454432,5.64294631710362,4.556803995006242,1.8789013732833957,3.17103620474407,1.5792759051186018,6.928838951310862,4.918851435705368,1.223470661672909,1.2983770287141074,5.50561797752809,4.475655430711611,2.0536828963795255,1.4731585518102372,1.7540574282147314,6.491885143570538,3.5393258426966296,1.9350811485642945,5.187265917602996,3.6953807740324596,4.02621722846442,4.787765293383271,6.679151061173534,2.3907615480649187,4.151061173533084,4.612983770287141,5.811485642946318,6.679151061173534,3.920099875156055,2.8901373283395753,3.882646691635456,3.7827715355805243,2.3657927590511862,6.429463171036204,4.144818976279651,2.990012484394507,6.429463171036204,2.428214731585518,4.019975031210986,4.444444444444445,4.775280898876405,6.30461922596754,4.275905118601748,6.367041198501872,6.616729088639201,4.662921348314606,3.1585518102372037,1.5730337078651684,2.1473158551810236,6.679151061173534,4.132334581772784,3.370786516853933,1.523096129837703,6.741573033707866,4.7315855181023725,5.7553058676654185,2.2284644194756553,4.207240948813983,3.764044943820225,6.167290886392011,1.0674157303370786,2.68414481897628,2.4968789013732833,3.027465667915106,6.01123595505618,1.5418227215980027,5.611735330836455,5.068664169787765,4.737827715355805, +4.444444444444445,5.942571785268415,2.990012484394507,6.036204744069912,4.244694132334582,4.313358302122348,1.2546816479400749,3.9887640449438204,1.6791510611735332,3.508114856429463,4.219725343320849,1.9912609238451935,0.9488139825218477,1.0299625468164793,2.2846441947565546,6.616729088639201,5.287141073657928,3.5580524344569286,2.596754057428215,2.215980024968789,4.65043695380774,6.054931335830212,3.6017478152309614,6.30461922596754,5.561797752808988,1.704119850187266,1.3982521847690388,1.3108614232209737,2.5842696629213484,4.700374531835206,0.8926342072409489,1.766541822721598,5.66167290886392,4.581772784019975,1.9038701622971288,3.1897627965043696,1.6104868913857677,6.991260923845194,4.937578027465668,1.2484394506866416,1.3233458177278403,5.5305867665418225,4.506866416978776,2.091136079900125,1.4981273408239701,1.7790262172284643,6.554307116104869,3.5705368289637955,1.9662921348314608,5.218476903870163,3.7265917602996255,4.057428214731585,4.812734082397004,6.741573033707866,2.4157303370786516,4.176029962546816,4.644194756554308,5.848938826466916,6.679151061173534,3.9450686641697876,2.908863920099875,3.9013732833957557,3.81398252184769,2.3907615480649187,6.429463171036204,4.169787765293384,3.0149812734082393,6.429463171036204,2.453183520599251,4.044943820224719,4.475655430711611,4.806491885143571,6.30461922596754,4.307116104868914,6.429463171036204,6.616729088639201,4.681647940074906,3.1897627965043696,1.5980024968789013,2.184769038701623,6.741573033707866,4.16354556803995,3.4019975031210987,1.5418227215980027,6.741573033707866,4.750312109862672,5.7802746566791505,2.259675405742821,4.2322097378277155,3.801498127340824,6.198501872659176,1.0923845193508115,2.715355805243446,2.5280898876404496,3.058676654182272,6.048689138576779,1.5792759051186018,5.64294631710362,5.093632958801498,4.762796504369538, +4.475655430711611,5.97378277153558,3.0212234706616727,6.061173533083646,4.269662921348314,4.33832709113608,1.2734082397003745,4.013732833957553,1.704119850187266,3.5268414481897628,4.238451935081149,2.0224719101123596,0.9675405742821472,1.0549313358302121,2.309612983770287,6.616729088639201,5.318352059925093,3.589263420724095,2.6217228464419473,2.2409488139825218,4.675405742821473,6.086142322097379,3.6267166042446943,6.30461922596754,5.593008739076155,1.735330836454432,1.4294631710362047,1.3358302122347065,2.6154806491885143,4.725343320848939,0.9176029962546817,1.8039950062421974,5.686641697877653,4.600499375780275,1.9288389513108615,3.214731585518102,1.647940074906367,6.991260923845194,4.962546816479401,1.2671660424469413,1.34207240948814,5.549313358302123,4.531835205992509,2.122347066167291,1.529338327091136,1.8039950062421974,6.554307116104869,3.607990012484395,1.9975031210986267,5.249687890137328,3.7515605493133584,4.094881398252185,4.843945068664169,6.803995006242197,2.4406991260923845,4.194756554307116,4.675405742821473,5.8863920099875156,6.741573033707866,3.970037453183521,2.9275905118601746,3.926342072409488,3.8451935081148565,2.4094881398252186,6.491885143570538,4.188514357053683,3.033707865168539,6.429463171036204,2.478152309612984,4.069912609238452,4.506866416978776,4.837702871410737,6.367041198501872,4.332084893882647,6.429463171036204,6.679151061173534,4.70661672908864,3.227215980024969,1.6229712858926344,2.215980024968789,6.803995006242197,4.194756554307116,3.439450686641698,1.5667915106117354,6.803995006242197,4.775280898876405,5.805243445692884,2.2908863920099876,4.257178526841448,3.83270911360799,6.229712858926342,1.1173533083645444,2.746566791510612,2.5530586766541825,3.089887640449438,6.086142322097379,1.6104868913857677,5.674157303370786,5.118601747815231,4.787765293383271, +4.506866416978776,6.004993757802747,3.0524344569288386,6.092384519350812,4.294631710362047,4.3632958801498125,1.2983770287141074,4.038701622971286,1.735330836454432,3.5518102372034956,4.263420724094882,2.0474406991260925,0.9925093632958802,1.0861423220973783,2.33458177278402,6.679151061173534,5.34956304619226,3.620474406991261,2.6466916354556806,2.259675405742821,4.70661672908864,6.117353308364544,3.651685393258427,6.367041198501872,5.617977528089888,1.7602996254681649,1.4606741573033708,1.3607990012484397,2.6466916354556806,4.750312109862672,0.9425717852684146,1.8352059925093633,5.705368289637952,4.6254681647940075,1.9475655430711611,3.2397003745318353,1.6791510611735332,7.0536828963795255,4.987515605493134,1.285892634207241,1.3670411985018727,5.574282147315855,4.556803995006242,2.153558052434457,1.5605493133583022,1.8352059925093633,6.616729088639201,3.639200998751561,2.034956304619226,5.274656679151062,3.7827715355805243,4.1260923845193505,4.868913857677903,6.803995006242197,2.4656679151061174,4.213483146067416,4.700374531835206,5.9238451935081144,6.741573033707866,3.9950062421972534,2.9463171036204745,3.9450686641697876,3.8764044943820224,2.4344569288389515,6.491885143570538,4.213483146067416,3.058676654182272,6.491885143570538,2.5031210986267167,4.094881398252185,4.538077403245943,4.868913857677903,6.367041198501872,4.357053682896379,6.491885143570538,6.679151061173534,4.725343320848939,3.258426966292135,1.647940074906367,2.253433208489388,6.803995006242197,4.225967540574282,3.470661672908864,1.585518102372035,6.803995006242197,4.800249687890138,5.830212234706617,2.322097378277154,4.282147315855181,3.8639200998751564,6.242197253433209,1.136079900124844,2.777777777777778,2.578027465667915,3.1273408239700373,6.129837702871411,1.647940074906367,5.69912609238452,5.149812734082397,4.812734082397004, +4.538077403245943,6.0424469413233455,3.089887640449438,6.117353308364544,4.31960049937578,4.382022471910113,1.3233458177278403,4.063670411985019,1.766541822721598,3.576779026217228,4.282147315855181,2.0786516853932584,1.017478152309613,1.1173533083645444,2.359550561797753,6.679151061173534,5.380774032459426,3.651685393258427,2.671660424469413,2.2846441947565546,4.737827715355805,6.1485642946317105,3.6766541822721597,6.367041198501872,5.6491885143570535,1.7915106117353308,1.4918851435705367,1.3857677902621723,2.68414481897628,4.775280898876405,0.9675405742821472,1.8664169787765295,5.724094881398252,4.65043695380774,1.9725343320848938,3.2646691635455682,1.7166042446941323,7.0536828963795255,5.012484394506866,1.3046192259675407,1.3920099875156053,5.593008739076155,4.588014981273409,2.184769038701623,1.591760299625468,1.8601747815230962,6.616729088639201,3.6766541822721597,2.066167290886392,5.305867665418227,3.8077403245942576,4.16354556803995,4.893882646691636,6.866416978776529,2.4843945068664173,4.238451935081149,4.7315855181023725,5.961298377028713,6.741573033707866,4.02621722846442,2.9712858926342074,3.9637952559300875,3.9076154806491883,2.453183520599251,6.554307116104869,4.238451935081149,3.077403245942572,6.491885143570538,2.5280898876404496,4.1136079900124844,4.569288389513109,4.906367041198502,6.367041198501872,4.388264669163545,6.491885143570538,6.679151061173534,4.7440699126092385,3.2896379525593007,1.6729088639200997,2.2846441947565546,6.866416978776529,4.257178526841448,3.5018726591760303,1.6042446941323347,6.866416978776529,4.825218476903871,5.855181023720349,2.35330836454432,4.307116104868914,3.8951310861423223,6.30461922596754,1.161048689138577,2.808988764044944,2.6092384519350813,3.1585518102372037,6.167290886392011,1.6791510611735332,5.730337078651686,5.174781523096129,4.831460674157303, +4.563046192259676,6.073657927590512,3.1210986267166043,6.1485642946317105,4.344569288389513,4.406991260923846,1.348314606741573,4.0886392009987516,1.797752808988764,3.595505617977528,4.300873907615481,2.1098626716604243,1.0362047440699127,1.1485642946317103,2.3845193508114857,6.741573033707866,5.411985018726591,3.682896379525593,2.696629213483146,2.303370786516854,4.762796504369538,6.179775280898876,3.6953807740324596,6.429463171036204,5.68039950062422,1.8227215980024971,1.523096129837703,1.410736579275905,2.715355805243446,4.800249687890138,0.9925093632958802,1.9038701622971288,5.749063670411985,4.66916354556804,1.9975031210986267,3.2833957553058677,1.7478152309612984,7.116104868913857,5.0374531835206,1.3295880149812733,1.4169787765293382,5.617977528089888,4.612983770287141,2.2222222222222223,1.616729088639201,1.8851435705368291,6.679151061173534,3.7078651685393256,2.1036204744069913,5.337078651685393,3.8389513108614235,4.194756554307116,4.918851435705368,6.866416978776529,2.5093632958801497,4.257178526841448,4.7565543071161045,5.998751560549313,6.803995006242197,4.051186017478152,2.990012484394507,3.9887640449438204,3.938826466916354,2.478152309612984,6.554307116104869,4.257178526841448,3.102372034956305,6.491885143570538,2.546816479400749,4.138576779026217,4.600499375780275,4.937578027465668,6.429463171036204,4.413233458177278,6.554307116104869,6.741573033707866,4.769038701622971,3.3270911360799,1.6978776529338326,2.322097378277154,6.866416978776529,4.288389513108614,3.5393258426966296,1.6292134831460674,6.866416978776529,4.850187265917603,5.880149812734083,2.3845193508114857,4.332084893882647,3.926342072409488,6.30461922596754,1.1860174781523096,2.84019975031211,2.634207240948814,3.1897627965043696,6.20474406991261,1.7166042446941323,5.761548064918852,5.199750312109863,4.856429463171036, +4.594257178526841,6.104868913857677,3.15230961298377,6.173533083645444,4.369538077403246,4.431960049937578,1.3670411985018727,4.119850187265917,1.8227215980024971,3.620474406991261,4.325842696629214,2.1410736579275906,1.0611735330836456,1.1797752808988764,2.4094881398252186,6.741573033707866,5.443196004993759,3.714107365792759,2.7215980024968793,2.328339575530587,4.794007490636704,6.210986267166042,3.7203495630461925,6.429463171036204,5.705368289637952,1.8476903870162298,1.554307116104869,1.435705368289638,2.746566791510612,4.825218476903871,1.0112359550561798,1.9350811485642945,5.767790262172285,4.694132334581773,2.016229712858926,3.3083645443196006,1.7852684144818978,7.116104868913857,5.062421972534332,1.348314606741573,1.4419475655430714,5.636704119850187,4.637952559300874,2.253433208489388,1.647940074906367,1.916354556803995,6.679151061173534,3.7390761548064915,2.134831460674157,5.36828963795256,3.8639200998751564,4.2322097378277155,4.943820224719102,6.928838951310862,2.5343320848938826,4.282147315855181,4.787765293383271,6.036204744069912,6.803995006242197,4.0761548064918856,3.0087390761548067,4.00749063670412,3.970037453183521,2.5031210986267167,6.616729088639201,4.282147315855181,3.1210986267166043,6.554307116104869,2.571785268414482,4.16354556803995,4.631710362047441,4.9687890137328345,6.429463171036204,4.438202247191011,6.554307116104869,6.741573033707866,4.787765293383271,3.3583021223470664,1.7228464419475658,2.359550561797753,6.928838951310862,4.31960049937578,3.5705368289637955,1.647940074906367,6.928838951310862,4.875156054931336,5.905118601747815,2.4157303370786516,4.357053682896379,3.9637952559300875,6.367041198501872,1.2109862671660423,2.871410736579276,2.6591760299625467,3.227215980024969,6.242197253433209,1.7478152309612984,5.792759051186017,5.224719101123595,4.881398252184769, +4.6254681647940075,6.142322097378277,3.1897627965043696,6.20474406991261,4.394506866416979,4.450686641697877,1.3920099875156053,4.144818976279651,1.8539325842696628,3.6454431960049942,4.344569288389513,2.1660424469413235,1.079900124843945,1.2047440699126093,2.4344569288389515,6.803995006242197,5.474406991260924,3.745318352059925,2.746566791510612,2.3470661672908864,4.825218476903871,6.242197253433209,3.745318352059925,6.491885143570538,5.736579275905119,1.8789013732833957,1.5792759051186018,1.4606741573033708,2.777777777777778,4.850187265917603,1.0362047440699127,1.9662921348314608,5.792759051186017,4.712858926342073,2.0411985018726595,3.3333333333333335,1.8164794007490637,7.17852684144819,5.081148564294631,1.3670411985018727,1.466916354556804,5.66167290886392,4.662921348314606,2.2846441947565546,1.6791510611735332,1.941323345817728,6.741573033707866,3.776529338327091,2.1660424469413235,5.393258426966292,3.8951310861423223,4.263420724094882,4.9687890137328345,6.928838951310862,2.5593008739076155,4.300873907615481,4.812734082397004,6.073657927590512,6.866416978776529,4.107365792759051,3.027465667915106,4.02621722846442,4.001248439450687,2.521847690387016,6.616729088639201,4.300873907615481,3.1460674157303368,6.554307116104869,2.596754057428215,4.188514357053683,4.662921348314606,5.0,6.429463171036204,4.4694132334581775,6.616729088639201,6.741573033707866,4.812734082397004,3.3957553058676653,1.7478152309612984,2.3907615480649187,6.991260923845194,4.3508114856429465,3.6017478152309614,1.6729088639200997,6.928838951310862,4.893882646691636,5.930087390761548,2.446941323345818,4.382022471910113,3.9950062421972534,6.367041198501872,1.2359550561797754,2.902621722846442,2.68414481897628,3.258426966292135,6.30461922596754,1.7852684144818978,5.823970037453184,5.249687890137328,4.906367041198502, +4.656679151061174,6.173533083645444,3.2209737827715355,6.229712858926342,4.419475655430712,4.475655430711611,1.4169787765293382,4.169787765293384,1.8851435705368291,3.6641697877652937,4.369538077403246,2.1972534332084894,1.104868913857678,1.2359550561797754,2.459425717852684,6.803995006242197,5.50561797752809,3.776529338327091,2.7715355805243447,2.3720349563046192,4.850187265917603,6.30461922596754,3.7702871410736583,6.491885143570538,5.767790262172285,1.9101123595505618,1.6104868913857677,1.4856429463171037,2.808988764044944,4.875156054931336,1.0611735330836456,2.00374531835206,5.811485642946318,4.737827715355805,2.0599250936329585,3.3583021223470664,1.8539325842696628,7.17852684144819,5.106117353308365,1.3920099875156053,1.4856429463171037,5.686641697877653,4.694132334581773,2.3158551810237205,1.704119850187266,1.9662921348314608,6.741573033707866,3.8077403245942576,2.203495630461923,5.424469413233458,3.926342072409488,4.294631710362047,5.0,6.991260923845194,2.5842696629213484,4.31960049937578,4.843945068664169,6.111111111111111,6.866416978776529,4.132334581772784,3.046192259675406,4.051186017478152,4.032459425717852,2.546816479400749,6.679151061173534,4.325842696629214,3.1647940074906367,6.554307116104869,2.6217228464419473,4.213483146067416,4.694132334581773,5.0374531835206,6.491885143570538,4.49438202247191,6.616729088639201,6.803995006242197,4.831460674157303,3.4269662921348316,1.772784019975031,2.428214731585518,6.991260923845194,4.382022471910113,3.639200998751561,1.6916354556803994,6.991260923845194,4.918851435705368,5.955056179775282,2.478152309612984,4.406991260923846,4.02621722846442,6.429463171036204,1.260923845193508,2.933832709113608,2.715355805243446,3.2896379525593007,6.30461922596754,1.8164794007490637,5.855181023720349,5.274656679151062,4.925093632958801, +4.687890137328339,6.20474406991261,3.258426966292135,6.242197253433209,4.444444444444445,4.500624219725343,1.435705368289638,4.194756554307116,1.916354556803995,3.689138576779026,4.388264669163545,2.2284644194756553,1.1298377028714106,1.2671660424469413,2.4843945068664173,6.866416978776529,5.536828963795256,3.8077403245942576,2.7965043695380776,2.3907615480649187,4.881398252184769,6.30461922596754,3.7952559300873907,6.554307116104869,5.799001248439451,1.9350811485642945,1.6416978776529338,1.5106117353308364,2.84019975031211,4.900124843945068,1.0861423220973783,2.034956304619226,5.836454431960051,4.7565543071161045,2.084893882646692,3.3770287141073654,1.8851435705368291,7.240948813982522,5.131086142322098,1.410736579275905,1.5106117353308364,5.705368289637952,4.719101123595506,2.35330836454432,1.735330836454432,1.9975031210986267,6.803995006242197,3.8389513108614235,2.2347066167290888,5.455680399500624,3.951310861423221,4.332084893882647,5.024968789013733,7.0536828963795255,2.602996254681648,4.344569288389513,4.868913857677903,6.1485642946317105,6.866416978776529,4.157303370786517,3.0649188514357055,4.069912609238452,4.063670411985019,2.565543071161049,6.679151061173534,4.3508114856429465,3.1897627965043696,6.616729088639201,2.6466916354556806,4.238451935081149,4.725343320848939,5.068664169787765,6.491885143570538,4.519350811485642,6.679151061173534,6.803995006242197,4.850187265917603,3.464419475655431,1.797752808988764,2.459425717852684,7.0536828963795255,4.413233458177278,3.6704119850187267,1.7166042446941323,6.991260923845194,4.943820224719102,5.980024968789014,2.5093632958801497,4.431960049937578,4.057428214731585,6.429463171036204,1.285892634207241,2.965043695380774,2.740324594257179,3.3270911360799,6.367041198501872,1.8476903870162298,5.880149812734083,5.299625468164794,4.950062421972534, +4.719101123595506,6.242197253433209,3.2896379525593007,6.30461922596754,4.4694132334581775,4.519350811485642,1.4606741573033708,4.219725343320849,1.941323345817728,3.714107365792759,4.413233458177278,2.259675405742821,1.1485642946317103,1.2983770287141074,2.5093632958801497,6.866416978776529,5.568039950062421,3.8389513108614235,2.82147315855181,2.4157303370786516,4.912609238451935,6.367041198501872,3.8202247191011236,6.554307116104869,5.823970037453184,1.9662921348314608,1.6729088639200997,1.5355805243445693,2.871410736579276,4.925093632958801,1.1111111111111112,2.0724094881398254,5.855181023720349,4.781523096129837,2.1098626716604243,3.4019975031210987,1.9225967540574282,7.240948813982522,5.15605493133583,1.4294631710362047,1.5355805243445693,5.730337078651686,4.7440699126092385,2.3845193508114857,1.766541822721598,2.0224719101123596,6.803995006242197,3.8764044943820224,2.272159800249688,5.48689138576779,3.982521847690387,4.3632958801498125,5.049937578027466,7.0536828963795255,2.6279650436953808,4.3632958801498125,4.900124843945068,6.186017478152309,6.928838951310862,4.188514357053683,3.0836454431960054,4.0886392009987516,4.094881398252185,2.5905118601747814,6.741573033707866,4.369538077403246,3.2084893882646695,6.616729088639201,2.671660424469413,4.263420724094882,4.750312109862672,5.099875156054932,6.491885143570538,4.55056179775281,6.679151061173534,6.803995006242197,4.875156054931336,3.495630461922597,1.8227215980024971,2.4968789013732833,7.116104868913857,4.444444444444445,3.7078651685393256,1.735330836454432,7.0536828963795255,4.9687890137328345,6.01123595505618,2.5405742821473156,4.456928838951311,4.0886392009987516,6.491885143570538,1.3046192259675407,2.9962546816479403,2.7652933832709112,3.3583021223470664,6.429463171036204,1.8851435705368291,5.9113607990012484,5.324594257178527,4.975031210986267, +4.750312109862672,6.30461922596754,3.320848938826467,6.30461922596754,4.49438202247191,4.544319600499376,1.4856429463171037,4.250936329588015,1.9725343320848938,3.732833957553059,4.431960049937578,2.2846441947565546,1.1735330836454432,1.3295880149812733,2.5343320848938826,6.928838951310862,5.599250936329588,3.870162297128589,2.84019975031211,2.4344569288389515,4.937578027465668,6.367041198501872,3.8451935081148565,6.616729088639201,5.855181023720349,1.9975031210986267,1.704119850187266,1.5605493133583022,2.902621722846442,4.950062421972534,1.136079900124844,2.1036204744069913,5.880149812734083,4.806491885143571,2.128589263420724,3.4269662921348316,1.9600499375780276,7.303370786516854,5.181023720349563,1.4544319600499376,1.5605493133583022,5.749063670411985,4.775280898876405,2.4157303370786516,1.797752808988764,2.0474406991260925,6.866416978776529,3.9076154806491883,2.303370786516854,5.511860174781523,4.00749063670412,4.400749063670412,5.074906367041199,7.116104868913857,2.6529338327091136,4.382022471910113,4.931335830212235,6.223470661672909,6.928838951310862,4.213483146067416,3.102372034956305,4.1136079900124844,4.132334581772784,2.6092384519350813,6.741573033707866,4.394506866416979,3.227215980024969,6.616729088639201,2.696629213483146,4.288389513108614,4.781523096129837,5.131086142322098,6.554307116104869,4.575530586766542,6.741573033707866,6.866416978776529,4.893882646691636,3.533083645443196,1.8476903870162298,2.5343320848938826,7.116104868913857,4.475655430711611,3.7390761548064915,1.7602996254681649,7.0536828963795255,4.9937578027465666,6.036204744069912,2.571785268414482,4.4818976279650435,4.119850187265917,6.491885143570538,1.3295880149812733,3.027465667915106,2.790262172284644,3.3895131086142323,6.429463171036204,1.916354556803995,5.942571785268415,5.355805243445693,4.9937578027465666, +4.781523096129837,6.30461922596754,3.3583021223470664,6.367041198501872,4.519350811485642,4.563046192259676,1.5043695380774034,4.275905118601748,2.00374531835206,3.7578027465667914,4.450686641697877,2.3158551810237205,1.198501872659176,1.3545568039950062,2.5593008739076155,6.928838951310862,5.630461922596755,3.9013732833957557,2.865168539325843,2.453183520599251,4.9687890137328345,6.429463171036204,3.870162297128589,6.616729088639201,5.8863920099875156,2.0287141073657926,1.7290886392009988,1.585518102372035,2.933832709113608,4.975031210986267,1.161048689138577,2.134831460674157,5.8988764044943816,4.825218476903871,2.153558052434457,3.4456928838951315,1.9912609238451935,7.303370786516854,5.205992509363296,1.4731585518102372,1.585518102372035,5.774032459425719,4.800249687890138,2.446941323345818,1.8227215980024971,2.0786516853932584,6.866416978776529,3.938826466916354,2.33458177278402,5.543071161048689,4.038701622971286,4.431960049937578,5.099875156054932,7.116104868913857,2.6779026217228465,4.406991260923846,4.956304619225968,6.242197253433209,6.991260923845194,4.238451935081149,3.1273408239700373,4.132334581772784,4.16354556803995,2.634207240948814,6.803995006242197,4.413233458177278,3.2521847690387014,6.679151061173534,2.7215980024968793,4.313358302122348,4.812734082397004,5.168539325842697,6.554307116104869,4.606741573033708,6.741573033707866,6.866416978776529,4.912609238451935,3.564294631710362,1.8726591760299625,2.565543071161049,7.17852684144819,4.500624219725343,3.7702871410736583,1.7790262172284643,7.116104868913857,5.0187265917602994,6.061173533083646,2.602996254681648,4.506866416978776,4.157303370786517,6.491885143570538,1.3545568039950062,3.058676654182272,2.82147315855181,3.420724094881398,6.491885143570538,1.9538077403245941,5.97378277153558,5.380774032459426,5.0187265917602994, +4.806491885143571,6.367041198501872,3.3895131086142323,6.367041198501872,4.544319600499376,4.588014981273409,1.529338327091136,4.300873907615481,2.034956304619226,3.7827715355805243,4.475655430711611,2.3470661672908864,1.2172284644194757,1.3857677902621723,2.5842696629213484,6.991260923845194,5.66167290886392,3.9325842696629216,2.8901373283395753,2.478152309612984,5.0,6.429463171036204,3.8951310861423223,6.679151061173534,5.9113607990012484,2.0536828963795255,1.7602996254681649,1.6104868913857677,2.965043695380774,5.0,1.1860174781523096,2.1722846441947565,5.917602996254682,4.850187265917603,2.1722846441947565,3.470661672908864,2.0287141073657926,7.365792759051186,5.230961298377029,1.4918851435705367,1.6104868913857677,5.792759051186017,4.825218476903871,2.4843945068664173,1.8539325842696628,2.1036204744069913,6.928838951310862,3.9762796504369535,2.3720349563046192,5.574282147315855,4.063670411985019,4.4694132334581775,5.131086142322098,7.17852684144819,2.702871410736579,4.425717852684145,4.987515605493134,6.30461922596754,6.991260923845194,4.269662921348314,3.1460674157303368,4.151061173533084,4.194756554307116,2.6591760299625467,6.803995006242197,4.438202247191011,3.2709113607990012,6.679151061173534,2.746566791510612,4.33832709113608,4.843945068664169,5.199750312109863,6.616729088639201,4.631710362047441,6.803995006242197,6.866416978776529,4.937578027465668,3.6017478152309614,1.8976279650436954,2.602996254681648,7.17852684144819,4.531835205992509,3.8077403245942576,1.8039950062421974,7.116104868913857,5.043695380774032,6.086142322097379,2.634207240948814,4.531835205992509,4.188514357053683,6.554307116104869,1.3795255930087391,3.0836454431960054,2.8464419475655434,3.4581772784019975,6.491885143570538,1.9850187265917605,6.004993757802747,5.405742821473158,5.043695380774032, +4.837702871410737,6.367041198501872,3.420724094881398,6.367041198501872,4.569288389513109,4.612983770287141,1.554307116104869,4.325842696629214,2.0599250936329585,3.801498127340824,4.49438202247191,2.3720349563046192,1.2421972534332086,1.4169787765293382,2.6092384519350813,6.991260923845194,5.692883895131087,3.9637952559300875,2.9151061173533086,2.4968789013732833,5.024968789013733,6.491885143570538,3.9138576779026217,6.679151061173534,5.942571785268415,2.084893882646692,1.7915106117353308,1.6354556803995006,2.9962546816479403,5.024968789013733,1.2109862671660423,2.203495630461923,5.942571785268415,4.868913857677903,2.1972534332084894,3.495630461922597,2.0599250936329585,7.365792759051186,5.249687890137328,1.5106117353308364,1.6354556803995006,5.81772784019975,4.850187265917603,2.515605493133583,1.8851435705368291,2.128589263420724,6.928838951310862,4.00749063670412,2.4032459425717856,5.605493133583021,4.094881398252185,4.500624219725343,5.15605493133583,7.17852684144819,2.727840199750312,4.444444444444445,5.012484394506866,6.30461922596754,6.991260923845194,4.294631710362047,3.1647940074906367,4.176029962546816,4.225967540574282,2.6779026217228465,6.866416978776529,4.463171036204744,3.295880149812734,6.679151061173534,2.7715355805243447,4.3632958801498125,4.875156054931336,5.230961298377029,6.616729088639201,4.656679151061174,6.803995006242197,6.928838951310862,4.956304619225968,3.6329588014981273,1.9225967540574282,2.634207240948814,7.240948813982522,4.563046192259676,3.8389513108614235,1.8227215980024971,7.17852684144819,5.062421972534332,6.111111111111111,2.66541822721598,4.556803995006242,4.219725343320849,6.554307116104869,1.404494382022472,3.114856429463171,2.871410736579276,3.4893882646691634,6.554307116104869,2.0224719101123596,6.036204744069912,5.430711610486892,5.068664169787765, +4.868913857677903,6.429463171036204,3.4581772784019975,6.429463171036204,4.594257178526841,4.631710362047441,1.5730337078651684,4.357053682896379,2.091136079900125,3.826466916354557,4.519350811485642,2.4032459425717856,1.2671660424469413,1.4481897627965044,2.634207240948814,7.0536828963795255,5.724094881398252,3.9950062421972534,2.9400749063670415,2.521847690387016,5.056179775280899,6.491885143570538,3.938826466916354,6.741573033707866,5.97378277153558,2.1161048689138577,1.8227215980024971,1.6604244694132335,3.033707865168539,5.049937578027466,1.2359550561797754,2.2347066167290888,5.961298377028713,4.893882646691636,2.2222222222222223,3.5205992509363297,2.097378277153558,7.428214731585518,5.274656679151062,1.5355805243445693,1.6541822721598003,5.836454431960051,4.881398252184769,2.546816479400749,1.9101123595505618,2.15980024968789,6.991260923845194,4.044943820224719,2.4344569288389515,5.630461922596755,4.1260923845193505,4.531835205992509,5.181023720349563,7.240948813982522,2.746566791510612,4.4694132334581775,5.043695380774032,6.367041198501872,7.0536828963795255,4.31960049937578,3.183520599250936,4.194756554307116,4.257178526841448,2.702871410736579,6.866416978776529,4.4818976279650435,3.3146067415730336,6.741573033707866,2.790262172284644,4.388264669163545,4.906367041198502,5.262172284644195,6.616729088639201,4.687890137328339,6.803995006242197,6.928838951310862,4.975031210986267,3.6704119850187267,1.941323345817728,2.671660424469413,7.303370786516854,4.594257178526841,3.870162297128589,1.8476903870162298,7.17852684144819,5.087390761548065,6.1360799001248445,2.696629213483146,4.588014981273409,4.250936329588015,6.616729088639201,1.4294631710362047,3.1460674157303368,2.8963795255930087,3.5205992509363297,6.616729088639201,2.0536828963795255,6.061173533083646,5.455680399500624,5.087390761548065, +4.900124843945068,6.429463171036204,3.4893882646691634,6.429463171036204,4.619225967540574,4.656679151061174,1.5980024968789013,4.382022471910113,2.122347066167291,3.8451935081148565,4.538077403245943,2.4344569288389515,1.285892634207241,1.4731585518102372,2.6529338327091136,7.0536828963795255,5.7553058676654185,4.02621722846442,2.965043695380774,2.5405742821473156,5.087390761548065,6.554307116104869,3.9637952559300875,6.741573033707866,5.998751560549313,2.1410736579275906,1.8539325842696628,1.6853932584269664,3.0649188514357055,5.074906367041199,1.260923845193508,2.272159800249688,5.986267166042447,4.912609238451935,2.2409488139825218,3.5393258426966296,2.128589263420724,7.428214731585518,5.299625468164794,1.554307116104869,1.6791510611735332,5.861423220973783,4.906367041198502,2.578027465667915,1.941323345817728,2.184769038701623,6.991260923845194,4.0761548064918856,2.471910112359551,5.66167290886392,4.151061173533084,4.569288389513109,5.205992509363296,7.303370786516854,2.7715355805243447,4.488139825218477,5.068664169787765,6.429463171036204,7.0536828963795255,4.3508114856429465,3.202247191011236,4.213483146067416,4.288389513108614,2.7215980024968793,6.928838951310862,4.506866416978776,3.339575530586767,6.741573033707866,2.8152309612983775,4.413233458177278,4.937578027465668,5.299625468164794,6.679151061173534,4.712858926342073,6.866416978776529,6.928838951310862,5.0,3.701622971285893,1.9662921348314608,2.702871410736579,7.303370786516854,4.6254681647940075,3.9076154806491883,1.8664169787765295,7.240948813982522,5.1123595505617985,6.161048689138577,2.727840199750312,4.612983770287141,4.282147315855181,6.616729088639201,1.4481897627965044,3.1772784019975036,2.9275905118601746,3.5580524344569286,6.616729088639201,2.091136079900125,6.092384519350812,5.480649188514358,5.1123595505617985, +4.931335830212235,6.491885143570538,3.5205992509363297,6.491885143570538,4.644194756554308,4.681647940074906,1.6229712858926344,4.406991260923846,2.153558052434457,3.870162297128589,4.563046192259676,2.4656679151061174,1.3108614232209737,1.5043695380774034,2.6779026217228465,7.116104868913857,5.786516853932584,4.057428214731585,2.990012484394507,2.565543071161049,5.1123595505617985,6.554307116104869,3.9887640449438204,6.803995006242197,6.029962546816479,2.1722846441947565,1.8851435705368291,1.710362047440699,3.0961298377028714,5.099875156054932,1.285892634207241,2.303370786516854,6.004993757802747,4.937578027465668,2.2659176029962547,3.564294631710362,2.1660424469413235,7.49063670411985,5.324594257178527,1.5730337078651684,1.704119850187266,5.8863920099875156,4.931335830212235,2.6154806491885143,1.9725343320848938,2.209737827715356,7.0536828963795255,4.107365792759051,2.5031210986267167,5.692883895131087,4.18227215980025,4.600499375780275,5.230961298377029,7.303370786516854,2.7965043695380776,4.506866416978776,5.099875156054932,6.429463171036204,7.116104868913857,4.375780274656679,3.2209737827715355,4.238451935081149,4.31960049937578,2.746566791510612,6.928838951310862,4.525593008739076,3.3583021223470664,6.741573033707866,2.84019975031211,4.438202247191011,4.9687890137328345,5.33083645443196,6.679151061173534,4.737827715355805,6.866416978776529,6.991260923845194,5.0187265917602994,3.732833957553059,1.9912609238451935,2.740324594257179,7.365792759051186,4.656679151061174,3.938826466916354,1.8913857677902621,7.240948813982522,5.1373283395755305,6.186017478152309,2.7590511860174782,4.637952559300874,4.31960049937578,6.679151061173534,1.4731585518102372,3.2084893882646695,2.9525593008739075,3.589263420724095,6.679151061173534,2.122347066167291,6.123595505617978,5.50561797752809,5.1373283395755305, +4.962546816479401,6.491885143570538,3.5580524344569286,6.491885143570538,4.66916354556804,4.700374531835206,1.6416978776529338,4.431960049937578,2.1785268414481895,3.8951310861423223,4.581772784019975,2.4906367041198503,1.3358302122347065,1.5355805243445693,2.702871410736579,7.116104868913857,5.81772784019975,4.0886392009987516,3.0149812734082393,2.5842696629213484,5.143570536828964,6.616729088639201,4.013732833957553,6.803995006242197,6.061173533083646,2.203495630461923,1.9101123595505618,1.735330836454432,3.1273408239700373,5.118601747815231,1.3108614232209737,2.340823970037453,6.029962546816479,4.962546816479401,2.2846441947565546,3.589263420724095,2.1972534332084894,7.49063670411985,5.34956304619226,1.5980024968789013,1.7290886392009988,5.905118601747815,4.962546816479401,2.6466916354556806,2.00374531835206,2.2409488139825218,7.0536828963795255,4.144818976279651,2.5405742821473156,5.724094881398252,4.207240948813983,4.637952559300874,5.262172284644195,7.365792759051186,2.82147315855181,4.531835205992509,5.1248439450686645,6.491885143570538,7.116104868913857,4.400749063670412,3.2397003745318353,4.257178526841448,4.3508114856429465,2.7715355805243447,6.991260923845194,4.55056179775281,3.383270911360799,6.803995006242197,2.865168539325843,4.463171036204744,5.0,5.3620474406991265,6.679151061173534,4.769038701622971,6.928838951310862,6.991260923845194,5.0374531835206,3.7702871410736583,2.016229712858926,2.777777777777778,7.428214731585518,4.687890137328339,3.970037453183521,1.9101123595505618,7.303370786516854,5.162297128589263,6.210986267166042,2.790262172284644,4.662921348314606,4.3508114856429465,6.679151061173534,1.4981273408239701,3.2397003745318353,2.977528089887641,3.620474406991261,6.741573033707866,2.153558052434457,6.154806491885144,5.5305867665418225,5.162297128589263, +4.9937578027465666,6.554307116104869,3.589263420724095,6.554307116104869,4.694132334581773,4.725343320848939,1.6666666666666667,4.456928838951311,2.209737827715356,3.9138576779026217,4.600499375780275,2.521847690387016,1.3545568039950062,1.5667915106117354,2.727840199750312,7.17852684144819,5.848938826466916,4.119850187265917,3.0399500624219726,2.6092384519350813,5.174781523096129,6.616729088639201,4.038701622971286,6.866416978776529,6.086142322097379,2.2284644194756553,1.941323345817728,1.7602996254681649,3.1585518102372037,5.143570536828964,1.3358302122347065,2.3720349563046192,6.048689138576779,4.9812734082397006,2.309612983770287,3.6142322097378274,2.2347066167290888,7.553058676654182,5.3745318352059925,1.616729088639201,1.7540574282147314,5.930087390761548,4.987515605493134,2.6779026217228465,2.0287141073657926,2.2659176029962547,7.116104868913857,4.176029962546816,2.571785268414482,5.749063670411985,4.238451935081149,4.66916354556804,5.287141073657928,7.365792759051186,2.8464419475655434,4.55056179775281,5.15605493133583,6.491885143570538,7.116104868913857,4.431960049937578,3.258426966292135,4.275905118601748,4.382022471910113,2.790262172284644,6.991260923845194,4.575530586766542,3.4019975031210987,6.803995006242197,2.8901373283395753,4.488139825218477,5.031210986267166,5.393258426966292,6.741573033707866,4.794007490636704,6.928838951310862,6.991260923845194,5.062421972534332,3.801498127340824,2.0411985018726595,2.808988764044944,7.428214731585518,4.719101123595506,4.00749063670412,1.9350811485642945,7.303370786516854,5.187265917602996,6.235955056179775,2.82147315855181,4.687890137328339,4.382022471910113,6.741573033707866,1.523096129837703,3.2709113607990012,3.0087390761548067,3.6579275905118602,6.741573033707866,2.1910112359550564,6.186017478152309,5.561797752808988,5.181023720349563, +5.024968789013733,6.554307116104869,3.6267166042446943,6.554307116104869,4.719101123595506,4.750312109862672,1.6916354556803994,4.488139825218477,2.2409488139825218,3.938826466916354,4.6254681647940075,2.5530586766541825,1.3795255930087391,1.5980024968789013,2.752808988764045,7.17852684144819,5.880149812734083,4.151061173533084,3.0649188514357055,2.6279650436953808,5.199750312109863,6.679151061173534,4.063670411985019,6.866416978776529,6.117353308364544,2.259675405742821,1.9725343320848938,1.7852684144818978,3.1897627965043696,5.168539325842697,1.3607990012484397,2.4032459425717856,6.073657927590512,5.0062421972534334,2.33458177278402,3.6329588014981273,2.2659176029962547,7.553058676654182,5.393258426966292,1.6354556803995006,1.7790262172284643,5.948813982521848,5.012484394506866,2.715355805243446,2.0599250936329585,2.2908863920099876,7.116104868913857,4.207240948813983,2.602996254681648,5.7802746566791505,4.269662921348314,4.700374531835206,5.312109862671661,7.428214731585518,2.865168539325843,4.575530586766542,5.181023720349563,6.554307116104869,7.17852684144819,4.456928838951311,3.2771535580524347,4.300873907615481,4.413233458177278,2.8152309612983775,7.0536828963795255,4.594257178526841,3.4269662921348316,6.803995006242197,2.9151061173533086,4.51310861423221,5.062421972534332,5.424469413233458,6.741573033707866,4.818976279650437,6.991260923845194,7.0536828963795255,5.081148564294631,3.8389513108614235,2.066167290886392,2.8464419475655434,7.49063670411985,4.750312109862672,4.038701622971286,1.9538077403245941,7.365792759051186,5.212234706616729,6.242197253433209,2.852684144818976,4.712858926342073,4.413233458177278,6.741573033707866,1.5480649188514357,3.3021223470661676,3.033707865168539,3.689138576779026,6.803995006242197,2.2222222222222223,6.217228464419476,5.586766541822722,5.205992509363296, +5.056179775280899,6.616729088639201,3.6579275905118602,6.616729088639201,4.7440699126092385,4.769038701622971,1.710362047440699,4.51310861423221,2.272159800249688,3.9637952559300875,4.644194756554308,2.5842696629213484,1.404494382022472,1.6229712858926344,2.777777777777778,7.17852684144819,5.9113607990012484,4.18227215980025,3.089887640449438,2.6529338327091136,5.230961298377029,6.679151061173534,4.0886392009987516,6.928838951310862,6.1485642946317105,2.2908863920099876,2.00374531835206,1.8102372034956304,3.2209737827715355,5.19350811485643,1.3857677902621723,2.4406991260923845,6.092384519350812,5.024968789013733,2.35330836454432,3.6579275905118602,2.303370786516854,7.615480649188515,5.418227215980025,1.6541822721598003,1.8039950062421974,5.97378277153558,5.0374531835206,2.746566791510612,2.091136079900125,2.322097378277154,7.17852684144819,4.244694132334582,2.640449438202247,5.811485642946318,4.294631710362047,4.737827715355805,5.337078651685393,7.428214731585518,2.8901373283395753,4.594257178526841,5.212234706616729,6.616729088639201,7.17852684144819,4.4818976279650435,3.3021223470661676,4.31960049937578,4.444444444444445,2.8339575530586765,7.0536828963795255,4.619225967540574,3.4456928838951315,6.866416978776529,2.9400749063670415,4.538077403245943,5.093632958801498,5.461922596754057,6.803995006242197,4.850187265917603,6.991260923845194,7.0536828963795255,5.099875156054932,3.870162297128589,2.091136079900125,2.8776529338327093,7.49063670411985,4.781523096129837,4.069912609238452,1.9725343320848938,7.365792759051186,5.230961298377029,6.30461922596754,2.8838951310861427,4.737827715355805,4.444444444444445,6.803995006242197,1.5730337078651684,3.3333333333333335,3.058676654182272,3.7203495630461925,6.803995006242197,2.259675405742821,6.242197253433209,5.611735330836455,5.230961298377029, +5.081148564294631,6.616729088639201,3.689138576779026,6.616729088639201,4.775280898876405,4.794007490636704,1.735330836454432,4.538077403245943,2.2971285892634206,3.982521847690387,4.66916354556804,2.6092384519350813,1.4232209737827717,1.6541822721598003,2.8027465667915106,7.240948813982522,5.942571785268415,4.213483146067416,3.114856429463171,2.671660424469413,5.262172284644195,6.741573033707866,4.1136079900124844,6.928838951310862,6.179775280898876,2.3158551810237205,2.034956304619226,1.8352059925093633,3.2521847690387014,5.218476903870163,1.410736579275905,2.471910112359551,6.111111111111111,5.049937578027466,2.3782771535580522,3.682896379525593,2.33458177278402,7.615480649188515,5.443196004993759,1.6791510611735332,1.8227215980024971,5.992509363295881,5.068664169787765,2.777777777777778,2.1161048689138577,2.3470661672908864,7.17852684144819,4.275905118601748,2.671660424469413,5.842696629213483,4.325842696629214,4.769038701622971,5.3620474406991265,7.49063670411985,2.9151061173533086,4.612983770287141,5.243445692883895,6.616729088639201,7.240948813982522,4.51310861423221,3.320848938826467,4.33832709113608,4.4818976279650435,2.8589263420724094,7.116104868913857,4.637952559300874,3.470661672908864,6.866416978776529,2.965043695380774,4.563046192259676,5.118601747815231,5.493133583021224,6.803995006242197,4.875156054931336,7.0536828963795255,7.0536828963795255,5.1248439450686645,3.9076154806491883,2.1161048689138577,2.9151061173533086,7.553058676654182,4.812734082397004,4.107365792759051,1.9975031210986267,7.428214731585518,5.2559300873907615,6.30461922596754,2.9151061173533086,4.762796504369538,4.475655430711611,6.803995006242197,1.5980024968789013,3.3645443196004994,3.0836454431960054,3.7515605493133584,6.866416978776529,2.2908863920099876,6.30461922596754,5.636704119850187,5.2559300873907615, +5.1123595505617985,6.679151061173534,3.7265917602996255,6.679151061173534,4.800249687890138,4.818976279650437,1.7602996254681649,4.563046192259676,2.328339575530587,4.00749063670412,4.687890137328339,2.640449438202247,1.4481897627965044,1.6853932584269664,2.8277153558052435,7.240948813982522,5.97378277153558,4.238451935081149,3.139825218476904,2.696629213483146,5.287141073657928,6.741573033707866,4.132334581772784,6.991260923845194,6.20474406991261,2.3470661672908864,2.066167290886392,1.8601747815230962,3.2833957553058677,5.243445692883895,1.435705368289638,2.5031210986267167,6.1360799001248445,5.068664169787765,2.397003745318352,3.7078651685393256,2.3720349563046192,7.677902621722847,5.468164794007491,1.6978776529338326,1.8476903870162298,6.0174781523096135,5.093632958801498,2.808988764044944,2.1473158551810236,2.3720349563046192,7.240948813982522,4.307116104868914,2.7091136079900124,5.867665418227216,4.3508114856429465,4.806491885143571,5.393258426966292,7.553058676654182,2.9400749063670415,4.637952559300874,5.268414481897628,6.679151061173534,7.240948813982522,4.538077403245943,3.339575530586767,4.3632958801498125,4.51310861423221,2.8776529338327093,7.116104868913857,4.662921348314606,3.4893882646691634,6.866416978776529,2.990012484394507,4.588014981273409,5.149812734082397,5.524344569288389,6.803995006242197,4.900124843945068,7.0536828963795255,7.116104868913857,5.143570536828964,3.938826466916354,2.1410736579275906,2.9463171036204745,7.615480649188515,4.843945068664169,4.138576779026217,2.016229712858926,7.428214731585518,5.280898876404494,6.367041198501872,2.9463171036204745,4.787765293383271,4.51310861423221,6.866416978776529,1.616729088639201,3.3957553058676653,3.114856429463171,3.7890137328339577,6.928838951310862,2.328339575530587,6.30461922596754,5.66167290886392,5.274656679151062, +5.143570536828964,6.679151061173534,3.7578027465667914,6.679151061173534,4.825218476903871,4.837702871410737,1.7790262172284643,4.588014981273409,2.359550561797753,4.032459425717852,4.712858926342073,2.671660424469413,1.4731585518102372,1.7166042446941323,2.852684144818976,7.303370786516854,6.004993757802747,4.269662921348314,3.1647940074906367,2.715355805243446,5.318352059925093,6.803995006242197,4.157303370786517,6.991260923845194,6.235955056179775,2.3782771535580522,2.091136079900125,1.8851435705368291,3.3146067415730336,5.268414481897628,1.4606741573033708,2.5405742821473156,6.154806491885144,5.093632958801498,2.4219725343320846,3.7265917602996255,2.4032459425717856,7.677902621722847,5.493133583021224,1.7166042446941323,1.8726591760299625,6.036204744069912,5.118601747815231,2.8464419475655434,2.1785268414481895,2.4032459425717856,7.240948813982522,4.344569288389513,2.740324594257179,5.8988764044943816,4.382022471910113,4.837702871410737,5.418227215980025,7.553058676654182,2.965043695380774,4.656679151061174,5.299625468164794,6.679151061173534,7.303370786516854,4.563046192259676,3.3583021223470664,4.382022471910113,4.544319600499376,2.902621722846442,7.17852684144819,4.687890137328339,3.5143570536828963,6.928838951310862,3.0149812734082393,4.612983770287141,5.181023720349563,5.555555555555556,6.866416978776529,4.931335830212235,7.116104868913857,7.116104868913857,5.168539325842697,3.9762796504369535,2.1660424469413235,2.9837702871410734,7.615480649188515,4.875156054931336,4.169787765293384,2.0411985018726595,7.49063670411985,5.305867665418227,6.367041198501872,2.977528089887641,4.812734082397004,4.544319600499376,6.866416978776529,1.6416978776529338,3.4269662921348316,3.139825218476904,3.8202247191011236,6.928838951310862,2.359550561797753,6.367041198501872,5.686641697877653,5.299625468164794, +5.174781523096129,6.741573033707866,3.7890137328339577,6.679151061173534,4.850187265917603,4.8626716604244695,1.8039950062421974,4.619225967540574,2.3845193508114857,4.051186017478152,4.7315855181023725,2.702871410736579,1.4918851435705367,1.7478152309612984,2.8776529338327093,7.303370786516854,6.036204744069912,4.300873907615481,3.183520599250936,2.740324594257179,5.34956304619226,6.803995006242197,4.18227215980025,7.0536828963795255,6.242197253433209,2.4032459425717856,2.122347066167291,1.9101123595505618,3.3458177278401995,5.293383270911361,1.4856429463171037,2.571785268414482,6.179775280898876,5.118601747815231,2.446941323345818,3.7515605493133584,2.4406991260923845,7.740324594257178,5.5181023720349565,1.7415730337078652,1.8976279650436954,6.061173533083646,5.149812734082397,2.8776529338327093,2.209737827715356,2.428214731585518,7.303370786516854,4.375780274656679,2.7715355805243447,5.930087390761548,4.406991260923846,4.875156054931336,5.443196004993759,7.615480649188515,2.990012484394507,4.675405742821473,5.324594257178527,6.741573033707866,7.303370786516854,4.594257178526841,3.3770287141073654,4.400749063670412,4.575530586766542,2.9275905118601746,7.17852684144819,4.70661672908864,3.533083645443196,6.928838951310862,3.033707865168539,4.637952559300874,5.212234706616729,5.593008739076155,6.866416978776529,4.956304619225968,7.116104868913857,7.116104868913857,5.187265917602996,4.00749063670412,2.1910112359550564,3.0212234706616727,7.677902621722847,4.906367041198502,4.207240948813983,2.0599250936329585,7.49063670411985,5.33083645443196,6.367041198501872,3.0024968789013733,4.837702871410737,4.575530586766542,6.928838951310862,1.6666666666666667,3.4581772784019975,3.1647940074906367,3.8514357053682895,6.991260923845194,2.397003745318352,6.367041198501872,5.711610486891385,5.324594257178527, +5.205992509363296,6.803995006242197,3.826466916354557,6.741573033707866,4.875156054931336,4.887640449438202,1.8289637952559301,4.644194756554308,2.4157303370786516,4.0761548064918856,4.750312109862672,2.727840199750312,1.5168539325842696,1.772784019975031,2.902621722846442,7.365792759051186,6.067415730337078,4.332084893882647,3.2084893882646695,2.7590511860174782,5.3745318352059925,6.866416978776529,4.207240948813983,7.0536828963795255,6.30461922596754,2.4344569288389515,2.153558052434457,1.9350811485642945,3.383270911360799,5.318352059925093,1.5106117353308364,2.6092384519350813,6.198501872659176,5.1373283395755305,2.4656679151061174,3.776529338327091,2.471910112359551,7.740324594257178,5.543071161048689,1.7602996254681649,1.9225967540574282,6.079900124843945,5.174781523096129,2.908863920099875,2.2347066167290888,2.453183520599251,7.303370786516854,4.413233458177278,2.808988764044944,5.961298377028713,4.438202247191011,4.906367041198502,5.468164794007491,7.615480649188515,3.0087390761548067,4.700374531835206,5.355805243445693,6.803995006242197,7.303370786516854,4.619225967540574,3.3957553058676653,4.425717852684145,4.606741573033708,2.9463171036204745,7.240948813982522,4.7315855181023725,3.5580524344569286,6.991260923845194,3.058676654182272,4.662921348314606,5.243445692883895,5.6242197253433215,6.866416978776529,4.987515605493134,7.17852684144819,7.17852684144819,5.205992509363296,4.044943820224719,2.215980024968789,3.0524344569288386,7.740324594257178,4.937578027465668,4.238451935081149,2.084893882646692,7.553058676654182,5.355805243445693,6.429463171036204,3.033707865168539,4.8626716604244695,4.606741573033708,6.928838951310862,1.6916354556803994,3.4893882646691634,3.1897627965043696,3.888888888888889,7.0536828963795255,2.428214731585518,6.367041198501872,5.736579275905119,5.34956304619226, +5.237203495630462,6.803995006242197,3.857677902621723,6.741573033707866,4.900124843945068,4.906367041198502,1.8476903870162298,4.66916354556804,2.446941323345818,4.1011235955056184,4.775280898876405,2.7590511860174782,1.5418227215980027,1.8039950062421974,2.9275905118601746,7.365792759051186,6.092384519350812,4.3632958801498125,3.233458177278402,2.777777777777778,5.405742821473158,6.866416978776529,4.2322097378277155,7.116104868913857,6.30461922596754,2.4656679151061174,2.184769038701623,1.9600499375780276,3.4144818976279647,5.343320848938826,1.5355805243445693,2.640449438202247,6.223470661672909,5.162297128589263,2.4906367041198503,3.7952559300873907,2.5093632958801497,7.740324594257178,5.561797752808988,1.7790262172284643,1.9475655430711611,6.104868913857677,5.199750312109863,2.9400749063670415,2.2659176029962547,2.478152309612984,7.365792759051186,4.444444444444445,2.84019975031211,5.986267166042447,4.4694132334581775,4.937578027465668,5.493133583021224,7.677902621722847,3.033707865168539,4.719101123595506,5.380774032459426,6.803995006242197,7.365792759051186,4.644194756554308,3.4144818976279647,4.444444444444445,4.637952559300874,2.9712858926342074,7.240948813982522,4.750312109862672,3.576779026217228,6.991260923845194,3.0836454431960054,4.687890137328339,5.274656679151062,5.655430711610487,6.928838951310862,5.012484394506866,7.17852684144819,7.17852684144819,5.230961298377029,4.0761548064918856,2.2409488139825218,3.089887640449438,7.740324594257178,4.9687890137328345,4.269662921348314,2.1036204744069913,7.553058676654182,5.3745318352059925,6.429463171036204,3.0649188514357055,4.887640449438202,4.637952559300874,6.928838951310862,1.7166042446941323,3.5205992509363297,3.2209737827715355,3.920099875156055,7.0536828963795255,2.459425717852684,6.429463171036204,5.761548064918852,5.36828963795256, +5.268414481897628,6.866416978776529,3.888888888888889,6.803995006242197,4.925093632958801,4.931335830212235,1.8726591760299625,4.694132334581773,2.478152309612984,4.119850187265917,4.794007490636704,2.790262172284644,1.5605493133583022,1.8352059925093633,2.9525593008739075,7.428214731585518,6.123595505617978,4.394506866416979,3.258426966292135,2.8027465667915106,5.436953807740325,6.928838951310862,4.257178526841448,7.116104868913857,6.367041198501872,2.4906367041198503,2.215980024968789,1.9850187265917605,3.4456928838951315,5.36828963795256,1.5605493133583022,2.671660424469413,6.242197253433209,5.181023720349563,2.5093632958801497,3.8202247191011236,2.5405742821473156,7.8027465667915115,5.586766541822722,1.797752808988764,1.9662921348314608,6.129837702871411,5.224719101123595,2.977528089887641,2.2971285892634206,2.5093632958801497,7.365792759051186,4.475655430711611,2.871410736579276,6.0174781523096135,4.49438202247191,4.975031210986267,5.524344569288389,7.677902621722847,3.058676654182272,4.737827715355805,5.411985018726591,6.866416978776529,7.365792759051186,4.675405742821473,3.4332084893882646,4.463171036204744,4.66916354556804,2.990012484394507,7.303370786516854,4.775280898876405,3.6017478152309614,6.991260923845194,3.108614232209738,4.712858926342073,5.305867665418227,5.686641697877653,6.928838951310862,5.0374531835206,7.240948813982522,7.17852684144819,5.249687890137328,4.107365792759051,2.2659176029962547,3.1210986267166043,7.8027465667915115,5.0,4.307116104868914,2.128589263420724,7.615480649188515,5.399500624219725,6.491885143570538,3.0961298377028714,4.912609238451935,4.675405742821473,6.991260923845194,1.7415730337078652,3.5518102372034956,3.245942571785269,3.951310861423221,7.116104868913857,2.4968789013732833,6.429463171036204,5.792759051186017,5.393258426966292, +5.299625468164794,6.866416978776529,3.926342072409488,6.803995006242197,4.950062421972534,4.950062421972534,1.8976279650436954,4.719101123595506,2.5031210986267167,4.144818976279651,4.818976279650437,2.8152309612983775,1.585518102372035,1.8664169787765295,2.977528089887641,7.428214731585518,6.154806491885144,4.425717852684145,3.2833957553058677,2.82147315855181,5.461922596754057,6.928838951310862,4.282147315855181,7.17852684144819,6.367041198501872,2.521847690387016,2.2409488139825218,2.009987515605493,3.4769038701622974,5.393258426966292,1.585518102372035,2.7091136079900124,6.242197253433209,5.205992509363296,2.5343320848938826,3.8451935081148565,2.578027465667915,7.8027465667915115,5.611735330836455,1.8227215980024971,1.9912609238451935,6.1485642946317105,5.2559300873907615,3.0087390761548067,2.322097378277154,2.5343320848938826,7.428214731585518,4.51310861423221,2.908863920099875,6.048689138576779,4.525593008739076,5.0062421972534334,5.549313358302123,7.740324594257178,3.0836454431960054,4.762796504369538,5.436953807740325,6.866416978776529,7.428214731585518,4.700374531835206,3.451935081148564,4.488139825218477,4.700374531835206,3.0149812734082393,7.303370786516854,4.794007490636704,3.620474406991261,7.0536828963795255,3.1335830212234708,4.737827715355805,5.337078651685393,5.724094881398252,6.991260923845194,5.068664169787765,7.240948813982522,7.240948813982522,5.268414481897628,4.144818976279651,2.2908863920099876,3.1585518102372037,7.8027465667915115,5.031210986267166,4.33832709113608,2.1473158551810236,7.615480649188515,5.424469413233458,6.491885143570538,3.1273408239700373,4.937578027465668,4.70661672908864,6.991260923845194,1.7602996254681649,3.5830212234706615,3.2709113607990012,3.9887640449438204,7.17852684144819,2.5280898876404496,6.491885143570538,5.81772784019975,5.418227215980025, +5.324594257178527,6.928838951310862,3.957553058676654,6.866416978776529,4.975031210986267,4.975031210986267,1.916354556803995,4.750312109862672,2.5343320848938826,4.169787765293384,4.837702871410737,2.8464419475655434,1.6104868913857677,1.8976279650436954,3.0024968789013733,7.49063670411985,6.186017478152309,4.456928838951311,3.3083645443196006,2.8464419475655434,5.493133583021224,6.991260923845194,4.307116104868914,7.17852684144819,6.429463171036204,2.5530586766541825,2.272159800249688,2.034956304619226,3.508114856429463,5.418227215980025,1.6104868913857677,2.740324594257179,6.30461922596754,5.224719101123595,2.5593008739076155,3.870162297128589,2.6092384519350813,7.865168539325843,5.636704119850187,1.8414481897627966,2.016229712858926,6.173533083645444,5.280898876404494,3.0399500624219726,2.35330836454432,2.5593008739076155,7.428214731585518,4.544319600499376,2.9400749063670415,6.079900124843945,4.55056179775281,5.043695380774032,5.574282147315855,7.8027465667915115,3.108614232209738,4.781523096129837,5.468164794007491,6.928838951310862,7.428214731585518,4.725343320848939,3.4769038701622974,4.506866416978776,4.7315855181023725,3.033707865168539,7.365792759051186,4.818976279650437,3.6454431960049942,7.0536828963795255,3.1585518102372037,4.762796504369538,5.36828963795256,5.7553058676654185,6.991260923845194,5.093632958801498,7.303370786516854,7.240948813982522,5.293383270911361,4.176029962546816,2.3158551810237205,3.1960049937578026,7.865168539325843,5.062421972534332,4.375780274656679,2.1722846441947565,7.677902621722847,5.449438202247191,6.491885143570538,3.1585518102372037,4.962546816479401,4.737827715355805,7.0536828963795255,1.7852684144818978,3.6142322097378274,3.3021223470661676,4.019975031210986,7.17852684144819,2.565543071161049,6.491885143570538,5.842696629213483,5.436953807740325, +5.355805243445693,6.928838951310862,3.9887640449438204,6.866416978776529,5.0,5.0,1.941323345817728,4.775280898876405,2.565543071161049,4.188514357053683,4.856429463171036,2.8776529338327093,1.6292134831460674,1.9225967540574282,3.027465667915106,7.49063670411985,6.217228464419476,4.488139825218477,3.3333333333333335,2.865168539325843,5.524344569288389,6.991260923845194,4.332084893882647,7.240948813982522,6.429463171036204,2.578027465667915,2.303370786516854,2.0599250936329585,3.5393258426966296,5.443196004993759,1.6354556803995006,2.7715355805243447,6.30461922596754,5.249687890137328,2.578027465667915,3.888888888888889,2.6466916354556806,7.865168539325843,5.66167290886392,1.8601747815230962,2.0411985018726595,6.192259675405743,5.305867665418227,3.0711610486891385,2.3845193508114857,2.5905118601747814,7.49063670411985,4.575530586766542,2.977528089887641,6.104868913857677,4.581772784019975,5.074906367041199,5.599250936329588,7.8027465667915115,3.1335830212234708,4.800249687890138,5.493133583021224,6.991260923845194,7.428214731585518,4.750312109862672,3.495630461922597,4.525593008739076,4.762796504369538,3.058676654182272,7.365792759051186,4.843945068664169,3.6641697877652937,7.0536828963795255,3.183520599250936,4.787765293383271,5.399500624219725,5.786516853932584,6.991260923845194,5.118601747815231,7.303370786516854,7.240948813982522,5.312109862671661,4.213483146067416,2.340823970037453,3.227215980024969,7.927590511860175,5.087390761548065,4.406991260923846,2.1910112359550564,7.677902621722847,5.474406991260924,6.554307116104869,3.1897627965043696,4.987515605493134,4.769038701622971,7.0536828963795255,1.8102372034956304,3.6454431960049942,3.3270911360799,4.051186017478152,7.240948813982522,2.596754057428215,6.554307116104869,5.867665418227216,5.461922596754057, +5.3870162297128585,6.991260923845194,4.02621722846442,6.928838951310862,5.024968789013733,5.0187265917602994,1.9662921348314608,4.800249687890138,2.596754057428215,4.213483146067416,4.881398252184769,2.908863920099875,1.6541822721598003,1.9538077403245941,3.0524344569288386,7.553058676654182,6.242197253433209,4.519350811485642,3.3583021223470664,2.8901373283395753,5.549313358302123,7.0536828963795255,4.3508114856429465,7.240948813982522,6.491885143570538,2.6092384519350813,2.33458177278402,2.084893882646692,3.5705368289637955,5.468164794007491,1.6541822721598003,2.808988764044944,6.30461922596754,5.274656679151062,2.602996254681648,3.9138576779026217,2.6779026217228465,7.927590511860175,5.686641697877653,1.8851435705368291,2.066167290886392,6.217228464419476,5.337078651685393,3.108614232209738,2.4157303370786516,2.6154806491885143,7.49063670411985,4.612983770287141,3.0087390761548067,6.1360799001248445,4.606741573033708,5.1123595505617985,5.6242197253433215,7.865168539325843,3.15230961298377,4.825218476903871,5.524344569288389,6.991260923845194,7.49063670411985,4.781523096129837,3.5143570536828963,4.55056179775281,4.794007490636704,3.0836454431960054,7.428214731585518,4.8626716604244695,3.689138576779026,7.116104868913857,3.2084893882646695,4.812734082397004,5.430711610486892,5.81772784019975,7.0536828963795255,5.149812734082397,7.365792759051186,7.303370786516854,5.33083645443196,4.244694132334582,2.3657927590511862,3.2646691635455682,7.927590511860175,5.118601747815231,4.438202247191011,2.215980024968789,7.740324594257178,5.499375780274657,6.554307116104869,3.2209737827715355,5.012484394506866,4.800249687890138,7.116104868913857,1.8352059925093633,3.6766541822721597,3.352059925093633,4.082397003745319,7.240948813982522,2.634207240948814,6.554307116104869,5.892634207240949,5.48689138576779, +5.418227215980025,6.991260923845194,4.057428214731585,6.928838951310862,5.049937578027466,5.043695380774032,1.9850187265917605,4.825218476903871,2.6217228464419473,4.238451935081149,4.900124843945068,2.933832709113608,1.6791510611735332,1.9850187265917605,3.077403245942572,7.553058676654182,6.30461922596754,4.55056179775281,3.383270911360799,2.908863920099875,5.580524344569288,7.0536828963795255,4.375780274656679,7.303370786516854,6.491885143570538,2.640449438202247,2.3657927590511862,2.1098626716604243,3.6017478152309614,5.493133583021224,1.6791510611735332,2.84019975031211,6.367041198501872,5.293383270911361,2.6217228464419473,3.938826466916354,2.715355805243446,7.927590511860175,5.711610486891385,1.9038701622971288,2.091136079900125,6.235955056179775,5.3620474406991265,3.139825218476904,2.4406991260923845,2.640449438202247,7.553058676654182,4.644194756554308,3.0399500624219726,6.167290886392011,4.637952559300874,5.143570536828964,5.655430711610487,7.865168539325843,3.1772784019975036,4.843945068664169,5.555555555555556,7.0536828963795255,7.49063670411985,4.806491885143571,3.533083645443196,4.569288389513109,4.831460674157303,3.102372034956305,7.428214731585518,4.887640449438202,3.7078651685393256,7.116104868913857,3.233458177278402,4.837702871410737,5.461922596754057,5.855181023720349,7.0536828963795255,5.174781523096129,7.365792759051186,7.303370786516854,5.355805243445693,4.282147315855181,2.3907615480649187,3.295880149812734,7.990012484394507,5.149812734082397,4.475655430711611,2.2347066167290888,7.740324594257178,5.524344569288389,6.616729088639201,3.2521847690387014,5.0374531835206,4.831460674157303,7.116104868913857,1.8601747815230962,3.701622971285893,3.3770287141073654,4.119850187265917,7.303370786516854,2.66541822721598,6.616729088639201,5.917602996254682,5.511860174781523, +5.449438202247191,7.0536828963795255,4.094881398252185,6.928838951310862,5.074906367041199,5.068664169787765,2.009987515605493,4.850187265917603,2.6529338327091136,4.257178526841448,4.925093632958801,2.965043695380774,1.6978776529338326,2.016229712858926,3.102372034956305,7.615480649188515,6.30461922596754,4.581772784019975,3.408239700374532,2.933832709113608,5.611735330836455,7.116104868913857,4.400749063670412,7.303370786516854,6.554307116104869,2.66541822721598,2.397003745318352,2.134831460674157,3.6329588014981273,5.5181023720349565,1.704119850187266,2.8776529338327093,6.367041198501872,5.318352059925093,2.6466916354556806,3.9637952559300875,2.752808988764045,7.990012484394507,5.730337078651686,1.9225967540574282,2.1161048689138577,6.242197253433209,5.3870162297128585,3.17103620474407,2.471910112359551,2.671660424469413,7.553058676654182,4.675405742821473,3.077403245942572,6.198501872659176,4.66916354556804,5.174781523096129,5.68039950062422,7.927590511860175,3.202247191011236,4.868913857677903,5.580524344569288,7.0536828963795255,7.553058676654182,4.831460674157303,3.5518102372034956,4.588014981273409,4.8626716604244695,3.1273408239700373,7.428214731585518,4.906367041198502,3.732833957553059,7.116104868913857,3.258426966292135,4.8626716604244695,5.493133583021224,5.8863920099875156,7.0536828963795255,5.199750312109863,7.428214731585518,7.303370786516854,5.3745318352059925,4.313358302122348,2.4157303370786516,3.3333333333333335,7.990012484394507,5.181023720349563,4.506866416978776,2.259675405742821,7.8027465667915115,5.543071161048689,6.616729088639201,3.2833957553058677,5.062421972534332,4.868913857677903,7.17852684144819,1.8851435705368291,3.732833957553059,3.408239700374532,4.151061173533084,7.365792759051186,2.696629213483146,6.616729088639201,5.942571785268415,5.5305867665418225, +5.480649188514358,7.0536828963795255,4.1260923845193505,6.991260923845194,5.099875156054932,5.087390761548065,2.034956304619226,4.881398252184769,2.68414481897628,4.282147315855181,4.943820224719102,2.9962546816479403,1.7228464419475658,2.0474406991260925,3.1210986267166043,7.615480649188515,6.367041198501872,4.612983770287141,3.4332084893882646,2.9525593008739075,5.636704119850187,7.116104868913857,4.425717852684145,7.365792759051186,6.554307116104869,2.696629213483146,2.4219725343320846,2.15980024968789,3.6641697877652937,5.543071161048689,1.7290886392009988,2.908863920099875,6.367041198501872,5.337078651685393,2.671660424469413,3.982521847690387,2.7840199750312107,7.990012484394507,5.7553058676654185,1.9475655430711611,2.134831460674157,6.30461922596754,5.411985018726591,3.202247191011236,2.5031210986267167,2.696629213483146,7.615480649188515,4.712858926342073,3.108614232209738,6.223470661672909,4.694132334581773,5.212234706616729,5.705368289637952,7.927590511860175,3.227215980024969,4.887640449438202,5.611735330836455,7.116104868913857,7.553058676654182,4.8626716604244695,3.5705368289637955,4.612983770287141,4.893882646691636,3.1460674157303368,7.49063670411985,4.931335830212235,3.7515605493133584,7.17852684144819,3.2771535580524347,4.887640449438202,5.5181023720349565,5.917602996254682,7.116104868913857,5.230961298377029,7.428214731585518,7.365792759051186,5.393258426966292,4.3508114856429465,2.4406991260923845,3.3645443196004994,8.05243445692884,5.212234706616729,4.538077403245943,2.278401997503121,7.8027465667915115,5.568039950062421,6.616729088639201,3.3146067415730336,5.087390761548065,4.900124843945068,7.17852684144819,1.9101123595505618,3.764044943820225,3.4332084893882646,4.18227215980025,7.365792759051186,2.7340823970037453,6.679151061173534,5.967540574282147,5.555555555555556, +5.511860174781523,7.116104868913857,4.157303370786517,6.991260923845194,5.1248439450686645,5.1123595505617985,2.0536828963795255,4.906367041198502,2.715355805243446,4.307116104868914,4.9687890137328345,3.027465667915106,1.7478152309612984,2.0724094881398254,3.1460674157303368,7.677902621722847,6.367041198501872,4.644194756554308,3.4581772784019975,2.977528089887641,5.667915106117353,7.17852684144819,4.450686641697877,7.365792759051186,6.616729088639201,2.727840199750312,2.453183520599251,2.184769038701623,3.6953807740324596,5.568039950062421,1.7540574282147314,2.9400749063670415,6.429463171036204,5.3620474406991265,2.690387016229713,4.00749063670412,2.82147315855181,8.05243445692884,5.7802746566791505,1.9662921348314608,2.15980024968789,6.30461922596754,5.443196004993759,3.2397003745318353,2.5280898876404496,2.7215980024968793,7.615480649188515,4.7440699126092385,3.1460674157303368,6.242197253433209,4.725343320848939,5.243445692883895,5.730337078651686,7.990012484394507,3.2521847690387014,4.906367041198502,5.636704119850187,7.17852684144819,7.553058676654182,4.887640449438202,3.589263420724095,4.631710362047441,4.925093632958801,3.17103620474407,7.49063670411985,4.956304619225968,3.776529338327091,7.17852684144819,3.3021223470661676,4.912609238451935,5.549313358302123,5.948813982521848,7.116104868913857,5.2559300873907615,7.49063670411985,7.365792759051186,5.418227215980025,4.382022471910113,2.4656679151061174,3.4019975031210987,8.11485642946317,5.243445692883895,4.575530586766542,2.303370786516854,7.865168539325843,5.593008739076155,6.679151061173534,3.3458177278401995,5.118601747815231,4.931335830212235,7.240948813982522,1.9288389513108615,3.7952559300873907,3.4581772784019975,4.219725343320849,7.428214731585518,2.7652933832709112,6.679151061173534,5.998751560549313,5.580524344569288, +5.543071161048689,7.116104868913857,4.194756554307116,7.0536828963795255,5.149812734082397,5.1373283395755305,2.0786516853932584,4.931335830212235,2.740324594257179,4.325842696629214,4.987515605493134,3.0524344569288386,1.766541822721598,2.1036204744069913,3.17103620474407,7.677902621722847,6.429463171036204,4.675405742821473,3.4831460674157304,2.9962546816479403,5.69912609238452,7.17852684144819,4.475655430711611,7.428214731585518,6.616729088639201,2.752808988764045,2.4843945068664173,2.209737827715356,3.732833957553059,5.593008739076155,1.7790262172284643,2.977528089887641,6.429463171036204,5.380774032459426,2.715355805243446,4.032459425717852,2.852684144818976,8.05243445692884,5.805243445692884,1.9850187265917605,2.184769038701623,6.30461922596754,5.468164794007491,3.2709113607990012,2.5593008739076155,2.752808988764045,7.677902621722847,4.781523096129837,3.1772784019975036,6.30461922596754,4.750312109862672,5.280898876404494,5.7553058676654185,8.05243445692884,3.2709113607990012,4.931335830212235,5.667915106117353,7.17852684144819,7.615480649188515,4.912609238451935,3.607990012484395,4.65043695380774,4.956304619225968,3.1960049937578026,7.553058676654182,4.975031210986267,3.7952559300873907,7.17852684144819,3.3270911360799,4.937578027465668,5.580524344569288,5.980024968789014,7.17852684144819,5.280898876404494,7.49063670411985,7.365792759051186,5.436953807740325,4.419475655430712,2.4906367041198503,3.439450686641698,8.11485642946317,5.274656679151062,4.606741573033708,2.322097378277154,7.865168539325843,5.617977528089888,6.679151061173534,3.3770287141073654,5.143570536828964,4.962546816479401,7.240948813982522,1.9538077403245941,3.826466916354557,3.4831460674157304,4.250936329588015,7.49063670411985,2.8027465667915106,6.741573033707866,6.023720349563047,5.605493133583021, +5.574282147315855,7.17852684144819,4.225967540574282,7.0536828963795255,5.174781523096129,5.15605493133583,2.1036204744069913,4.956304619225968,2.7715355805243447,4.3508114856429465,5.0062421972534334,3.0836454431960054,1.7915106117353308,2.134831460674157,3.1960049937578026,7.677902621722847,6.429463171036204,4.70661672908864,3.508114856429463,3.0212234706616727,5.724094881398252,7.240948813982522,4.500624219725343,7.428214731585518,6.616729088639201,2.7840199750312107,2.515605493133583,2.2347066167290888,3.764044943820225,5.617977528089888,1.8039950062421974,3.0087390761548067,6.429463171036204,5.405742821473158,2.7340823970037453,4.051186017478152,2.8901373283395753,8.11485642946317,5.830212234706617,2.00374531835206,2.209737827715356,6.367041198501872,5.493133583021224,3.3021223470661676,2.5905118601747814,2.777777777777778,7.677902621722847,4.812734082397004,3.2084893882646695,6.30461922596754,4.781523096129837,5.312109862671661,5.786516853932584,8.05243445692884,3.295880149812734,4.950062421972534,5.692883895131087,7.240948813982522,7.615480649188515,4.943820224719102,3.6267166042446943,4.675405742821473,4.987515605493134,3.214731585518102,7.553058676654182,5.0,3.8202247191011236,7.240948813982522,3.352059925093633,4.962546816479401,5.611735330836455,6.0174781523096135,7.17852684144819,5.312109862671661,7.553058676654182,7.428214731585518,5.455680399500624,4.450686641697877,2.515605493133583,3.470661672908864,8.177278401997503,5.305867665418227,4.637952559300874,2.340823970037453,7.927590511860175,5.64294631710362,6.741573033707866,3.408239700374532,5.168539325842697,4.9937578027465666,7.303370786516854,1.978776529338327,3.857677902621723,3.5143570536828963,4.282147315855181,7.49063670411985,2.8339575530586765,6.741573033707866,6.048689138576779,5.6242197253433215, +5.599250936329588,7.17852684144819,4.257178526841448,7.116104868913857,5.199750312109863,5.181023720349563,2.122347066167291,4.987515605493134,2.8027465667915106,4.375780274656679,5.031210986267166,3.114856429463171,1.8102372034956304,2.1660424469413235,3.2209737827715355,7.740324594257178,6.491885143570538,4.737827715355805,3.5268414481897628,3.0399500624219726,5.7553058676654185,7.240948813982522,4.525593008739076,7.49063670411985,6.679151061173534,2.8152309612983775,2.546816479400749,2.259675405742821,3.7952559300873907,5.64294631710362,1.8289637952559301,3.0399500624219726,6.491885143570538,5.430711610486892,2.7590511860174782,4.0761548064918856,2.9213483146067416,8.11485642946317,5.855181023720349,2.0287141073657926,2.2347066167290888,6.367041198501872,5.524344569288389,3.3333333333333335,2.6217228464419473,2.8027465667915106,7.740324594257178,4.843945068664169,3.245942571785269,6.367041198501872,4.806491885143571,5.343320848938826,5.811485642946318,8.11485642946317,3.320848938826467,4.9687890137328345,5.724094881398252,7.240948813982522,7.677902621722847,4.9687890137328345,3.651685393258427,4.694132334581773,5.0187265917602994,3.2397003745318353,7.615480649188515,5.0187265917602994,3.8389513108614235,7.240948813982522,3.3770287141073654,4.987515605493134,5.64294631710362,6.048689138576779,7.17852684144819,5.337078651685393,7.553058676654182,7.428214731585518,5.480649188514358,4.488139825218477,2.5405742821473156,3.508114856429463,8.239700374531834,5.337078651685393,4.675405742821473,2.3657927590511862,7.927590511860175,5.667915106117353,6.741573033707866,3.439450686641698,5.19350811485643,5.031210986267166,7.303370786516854,2.00374531835206,3.888888888888889,3.5393258426966296,4.31960049937578,7.553058676654182,2.871410736579276,6.803995006242197,6.073657927590512,5.6491885143570535, +5.630461922596755,7.240948813982522,4.294631710362047,7.116104868913857,5.224719101123595,5.205992509363296,2.1473158551810236,5.012484394506866,2.8339575530586765,4.394506866416979,5.049937578027466,3.139825218476904,1.8352059925093633,2.1910112359550564,3.245942571785269,7.740324594257178,6.491885143570538,4.769038701622971,3.5518102372034956,3.0649188514357055,5.786516853932584,7.303370786516854,4.55056179775281,7.49063670411985,6.679151061173534,2.84019975031211,2.578027465667915,2.2846441947565546,3.826466916354557,5.667915106117353,1.8539325842696628,3.077403245942572,6.491885143570538,5.449438202247191,2.7840199750312107,4.1011235955056184,2.958801498127341,8.177278401997503,5.8739076154806495,2.0474406991260925,2.259675405742821,6.367041198501872,5.549313358302123,3.370786516853933,2.6466916354556806,2.8339575530586765,7.740324594257178,4.881398252184769,3.2771535580524347,6.367041198501872,4.837702871410737,5.380774032459426,5.836454431960051,8.11485642946317,3.3458177278401995,4.9937578027465666,5.749063670411985,7.303370786516854,7.677902621722847,4.9937578027465666,3.6704119850187267,4.712858926342073,5.049937578027466,3.258426966292135,7.615480649188515,5.043695380774032,3.8639200998751564,7.240948813982522,3.4019975031210987,5.012484394506866,5.674157303370786,6.079900124843945,7.240948813982522,5.3620474406991265,7.615480649188515,7.428214731585518,5.499375780274657,4.519350811485642,2.565543071161049,3.5393258426966296,8.239700374531834,5.36828963795256,4.70661672908864,2.3845193508114857,7.990012484394507,5.692883895131087,6.741573033707866,3.470661672908864,5.218476903870163,5.062421972534332,7.365792759051186,2.0287141073657926,3.920099875156055,3.564294631710362,4.3508114856429465,7.553058676654182,2.902621722846442,6.803995006242197,6.098626716604246,5.674157303370786, +5.66167290886392,7.303370786516854,4.325842696629214,7.17852684144819,5.249687890137328,5.224719101123595,2.1722846441947565,5.0374531835206,2.8589263420724094,4.419475655430712,5.074906367041199,3.17103620474407,1.8601747815230962,2.2222222222222223,3.2709113607990012,7.8027465667915115,6.554307116104869,4.800249687890138,3.576779026217228,3.0836454431960054,5.811485642946318,7.303370786516854,4.569288389513109,7.553058676654182,6.741573033707866,2.871410736579276,2.602996254681648,2.309612983770287,3.857677902621723,5.692883895131087,1.8789013732833957,3.108614232209738,6.491885143570538,5.474406991260924,2.8027465667915106,4.1260923845193505,2.990012484394507,8.177278401997503,5.8988764044943816,2.066167290886392,2.278401997503121,6.429463171036204,5.574282147315855,3.4019975031210987,2.6779026217228465,2.8589263420724094,7.8027465667915115,4.912609238451935,3.3146067415730336,6.429463171036204,4.868913857677903,5.411985018726591,5.861423220973783,8.177278401997503,3.370786516853933,5.012484394506866,5.7802746566791505,7.365792759051186,7.677902621722847,5.024968789013733,3.689138576779026,4.737827715355805,5.081148564294631,3.2833957553058677,7.677902621722847,5.068664169787765,3.882646691635456,7.303370786516854,3.4269662921348316,5.0374531835206,5.705368289637952,6.111111111111111,7.240948813982522,5.393258426966292,7.615480649188515,7.49063670411985,5.524344569288389,4.55056179775281,2.5905118601747814,3.576779026217228,8.302122347066168,5.399500624219725,4.737827715355805,2.4094881398252186,7.990012484394507,5.711610486891385,6.803995006242197,3.5018726591760303,5.243445692883895,5.093632958801498,7.365792759051186,2.0536828963795255,3.951310861423221,3.595505617977528,4.382022471910113,7.615480649188515,2.9400749063670415,6.866416978776529,6.123595505617978,5.69912609238452, +5.692883895131087,7.303370786516854,4.357053682896379,7.17852684144819,5.274656679151062,5.249687890137328,2.1910112359550564,5.062421972534332,2.8901373283395753,4.444444444444445,5.093632958801498,3.202247191011236,1.8789013732833957,2.253433208489388,3.295880149812734,7.8027465667915115,6.554307116104869,4.831460674157303,3.6017478152309614,3.102372034956305,5.842696629213483,7.365792759051186,4.594257178526841,7.553058676654182,6.741573033707866,2.902621722846442,2.634207240948814,2.33458177278402,3.888888888888889,5.711610486891385,1.9038701622971288,3.1460674157303368,6.554307116104869,5.493133583021224,2.8277153558052435,4.144818976279651,3.027465667915106,8.239700374531834,5.9238451935081144,2.091136079900125,2.303370786516854,6.429463171036204,5.599250936329588,3.4332084893882646,2.7091136079900124,2.8838951310861427,7.8027465667915115,4.943820224719102,3.3458177278401995,6.429463171036204,4.893882646691636,5.449438202247191,5.8863920099875156,8.177278401997503,3.3957553058676653,5.031210986267166,5.805243445692884,7.365792759051186,7.740324594257178,5.049937578027466,3.7078651685393256,4.7565543071161045,5.1123595505617985,3.3021223470661676,7.677902621722847,5.087390761548065,3.9076154806491883,7.303370786516854,3.451935081148564,5.062421972534332,5.736579275905119,6.1485642946317105,7.240948813982522,5.418227215980025,7.677902621722847,7.49063670411985,5.543071161048689,4.588014981273409,2.6154806491885143,3.6142322097378274,8.302122347066168,5.430711610486892,4.775280898876405,2.428214731585518,8.05243445692884,5.736579275905119,6.803995006242197,3.533083645443196,5.268414481897628,5.1248439450686645,7.365792759051186,2.0724094881398254,3.982521847690387,3.620474406991261,4.413233458177278,7.677902621722847,2.9712858926342074,6.866416978776529,6.1485642946317105,5.717852684144819, +5.724094881398252,7.365792759051186,4.394506866416979,7.240948813982522,5.299625468164794,5.274656679151062,2.215980024968789,5.087390761548065,2.9213483146067416,4.463171036204744,5.118601747815231,3.233458177278402,1.9038701622971288,2.2846441947565546,3.320848938826467,7.865168539325843,6.616729088639201,4.8626716604244695,3.6267166042446943,3.1273408239700373,5.8739076154806495,7.365792759051186,4.619225967540574,7.615480649188515,6.803995006242197,2.9275905118601746,2.66541822721598,2.359550561797753,3.920099875156055,5.736579275905119,1.9288389513108615,3.1772784019975036,6.554307116104869,5.5181023720349565,2.8464419475655434,4.169787765293384,3.058676654182272,8.239700374531834,5.948813982521848,2.1098626716604243,2.328339575530587,6.429463171036204,5.630461922596755,3.464419475655431,2.7340823970037453,2.9151061173533086,7.865168539325843,4.9812734082397006,3.3770287141073654,6.491885143570538,4.925093632958801,5.480649188514358,5.917602996254682,8.239700374531834,3.4144818976279647,5.056179775280899,5.836454431960051,7.428214731585518,7.740324594257178,5.074906367041199,3.7265917602996255,4.775280898876405,5.143570536828964,3.3270911360799,7.740324594257178,5.1123595505617985,3.926342072409488,7.303370786516854,3.4769038701622974,5.081148564294631,5.767790262172285,6.179775280898876,7.303370786516854,5.449438202247191,7.677902621722847,7.49063670411985,5.561797752808988,4.619225967540574,2.640449438202247,3.6454431960049942,8.3645443196005,5.461922596754057,4.806491885143571,2.453183520599251,8.05243445692884,5.761548064918852,6.866416978776529,3.564294631710362,5.293383270911361,5.15605493133583,7.428214731585518,2.097378277153558,4.013732833957553,3.6454431960049942,4.450686641697877,7.677902621722847,3.0024968789013733,6.928838951310862,6.173533083645444,5.742821473158552, +5.7553058676654185,7.365792759051186,4.425717852684145,7.240948813982522,5.324594257178527,5.293383270911361,2.2409488139825218,5.118601747815231,2.9525593008739075,4.488139825218477,5.1373283395755305,3.258426966292135,1.9288389513108615,2.3158551810237205,3.3458177278401995,7.865168539325843,6.616729088639201,4.893882646691636,3.651685393258427,3.1460674157303368,5.8988764044943816,7.428214731585518,4.644194756554308,7.615480649188515,6.803995006242197,2.958801498127341,2.696629213483146,2.3845193508114857,3.951310861423221,5.761548064918852,1.9538077403245941,3.2084893882646695,6.616729088639201,5.536828963795256,2.871410736579276,4.194756554307116,3.0961298377028714,8.302122347066168,5.97378277153558,2.128589263420724,2.35330836454432,6.491885143570538,5.655430711610487,3.5018726591760303,2.7652933832709112,2.9400749063670415,7.865168539325843,5.012484394506866,3.4144818976279647,6.491885143570538,4.950062421972534,5.5181023720349565,5.942571785268415,8.302122347066168,3.439450686641698,5.074906367041199,5.867665418227216,7.428214731585518,7.8027465667915115,5.106117353308365,3.745318352059925,4.800249687890138,5.181023720349563,3.352059925093633,7.740324594257178,5.131086142322098,3.951310861423221,7.365792759051186,3.5018726591760303,5.106117353308365,5.799001248439451,6.210986267166042,7.303370786516854,5.474406991260924,7.740324594257178,7.553058676654182,5.586766541822722,4.656679151061174,2.6591760299625467,3.682896379525593,8.426966292134832,5.493133583021224,4.837702871410737,2.471910112359551,8.11485642946317,5.786516853932584,6.866416978776529,3.595505617977528,5.318352059925093,5.19350811485643,7.428214731585518,2.122347066167291,4.044943820224719,3.6704119850187267,4.4818976279650435,7.740324594257178,3.0399500624219726,6.928838951310862,6.20474406991261,5.767790262172285, +5.786516853932584,7.428214731585518,4.463171036204744,7.240948813982522,5.34956304619226,5.318352059925093,2.259675405742821,5.143570536828964,2.977528089887641,4.51310861423221,5.15605493133583,3.2896379525593007,1.9475655430711611,2.340823970037453,3.370786516853933,7.927590511860175,6.679151061173534,4.925093632958801,3.6766541822721597,3.17103620474407,5.930087390761548,7.428214731585518,4.66916354556804,7.677902621722847,6.866416978776529,2.990012484394507,2.727840199750312,2.4094881398252186,3.982521847690387,5.786516853932584,1.978776529338327,3.245942571785269,6.616729088639201,5.561797752808988,2.8963795255930087,4.219725343320849,3.1273408239700373,8.302122347066168,5.998751560549313,2.1473158551810236,2.3782771535580522,6.491885143570538,5.68039950062422,3.533083645443196,2.7965043695380776,2.965043695380774,7.927590511860175,5.049937578027466,3.4456928838951315,6.491885143570538,4.9812734082397006,5.549313358302123,5.967540574282147,8.302122347066168,3.464419475655431,5.093632958801498,5.892634207240949,7.49063670411985,7.8027465667915115,5.131086142322098,3.764044943820225,4.818976279650437,5.212234706616729,3.370786516853933,7.8027465667915115,5.15605493133583,3.970037453183521,7.365792759051186,3.5205992509363297,5.131086142322098,5.830212234706617,6.242197253433209,7.365792759051186,5.499375780274657,7.740324594257178,7.553058676654182,5.605493133583021,4.687890137328339,2.68414481897628,3.714107365792759,8.426966292134832,5.524344569288389,4.875156054931336,2.4968789013732833,8.11485642946317,5.811485642946318,6.866416978776529,3.6267166042446943,5.343320848938826,5.224719101123595,7.49063670411985,2.1473158551810236,4.0761548064918856,3.701622971285893,4.51310861423221,7.8027465667915115,3.0711610486891385,6.991260923845194,6.229712858926342,5.786516853932584, +5.81772784019975,7.428214731585518,4.49438202247191,7.303370786516854,5.3745318352059925,5.337078651685393,2.2846441947565546,5.168539325842697,3.0087390761548067,4.531835205992509,5.181023720349563,3.320848938826467,1.9725343320848938,2.3720349563046192,3.3957553058676653,7.927590511860175,6.679151061173534,4.950062421972534,3.701622971285893,3.1897627965043696,5.961298377028713,7.49063670411985,4.694132334581773,7.677902621722847,6.866416978776529,3.0149812734082393,2.7590511860174782,2.4344569288389515,4.013732833957553,5.811485642946318,2.00374531835206,3.2771535580524347,6.616729088639201,5.586766541822722,2.9151061173533086,4.238451935081149,3.1647940074906367,8.3645443196005,6.023720349563047,2.1722846441947565,2.4032459425717856,6.554307116104869,5.711610486891385,3.564294631710362,2.8277153558052435,2.9962546816479403,7.927590511860175,5.081148564294631,3.4769038701622974,6.554307116104869,5.0062421972534334,5.580524344569288,5.992509363295881,8.3645443196005,3.4893882646691634,5.118601747815231,5.9238451935081144,7.553058676654182,7.8027465667915115,5.15605493133583,3.7827715355805243,4.837702871410737,5.243445692883895,3.3957553058676653,7.8027465667915115,5.181023720349563,3.9950062421972534,7.365792759051186,3.545568039950062,5.15605493133583,5.861423220973783,6.30461922596754,7.365792759051186,5.5305867665418225,7.8027465667915115,7.553058676654182,5.6242197253433215,4.725343320848939,2.7091136079900124,3.7515605493133584,8.489388264669165,5.555555555555556,4.906367041198502,2.515605493133583,8.177278401997503,5.836454431960051,6.928838951310862,3.6579275905118602,5.36828963795256,5.2559300873907615,7.49063670411985,2.1722846441947565,4.107365792759051,3.7265917602996255,4.55056179775281,7.8027465667915115,3.108614232209738,6.991260923845194,6.242197253433209,5.811485642946318, +5.842696629213483,7.49063670411985,4.525593008739076,7.303370786516854,5.405742821473158,5.3620474406991265,2.309612983770287,5.19350811485643,3.0399500624219726,4.556803995006242,5.199750312109863,3.352059925093633,1.9975031210986267,2.4032459425717856,3.420724094881398,7.990012484394507,6.741573033707866,4.9812734082397006,3.7265917602996255,3.214731585518102,5.986267166042447,7.49063670411985,4.719101123595506,7.740324594257178,6.928838951310862,3.046192259675406,2.7840199750312107,2.459425717852684,4.044943820224719,5.836454431960051,2.0287141073657926,3.3083645443196006,6.679151061173534,5.605493133583021,2.9400749063670415,4.263420724094882,3.1960049937578026,8.3645443196005,6.0424469413233455,2.1910112359550564,2.428214731585518,6.554307116104869,5.736579275905119,3.595505617977528,2.852684144818976,3.0212234706616727,7.990012484394507,5.1123595505617985,3.5143570536828963,6.554307116104869,5.0374531835206,5.617977528089888,6.0174781523096135,8.3645443196005,3.5143570536828963,5.1373283395755305,5.948813982521848,7.553058676654182,7.865168539325843,5.187265917602996,3.801498127340824,4.8626716604244695,5.274656679151062,3.4144818976279647,7.865168539325843,5.199750312109863,4.013732833957553,7.428214731585518,3.5705368289637955,5.181023720349563,5.8863920099875156,6.30461922596754,7.365792759051186,5.555555555555556,7.8027465667915115,7.615480649188515,5.6491885143570535,4.7565543071161045,2.7340823970037453,3.7827715355805243,8.551810237203496,5.586766541822722,4.937578027465668,2.5405742821473156,8.177278401997503,5.855181023720349,6.928838951310862,3.689138576779026,5.393258426966292,5.287141073657928,7.553058676654182,2.1972534332084894,4.138576779026217,3.7515605493133584,4.581772784019975,7.865168539325843,3.139825218476904,7.0536828963795255,6.30461922596754,5.836454431960051, +5.8739076154806495,7.49063670411985,4.563046192259676,7.365792759051186,5.430711610486892,5.3870162297128585,2.328339575530587,5.218476903870163,3.0711610486891385,4.581772784019975,5.224719101123595,3.3770287141073654,2.016229712858926,2.4344569288389515,3.4456928838951315,7.990012484394507,6.741573033707866,5.012484394506866,3.7515605493133584,3.233458177278402,6.0174781523096135,7.553058676654182,4.7440699126092385,7.740324594257178,6.928838951310862,3.077403245942572,2.8152309612983775,2.4843945068664173,4.082397003745319,5.861423220973783,2.0536828963795255,3.3458177278401995,6.679151061173534,5.630461922596755,2.958801498127341,4.288389513108614,3.233458177278402,8.426966292134832,6.067415730337078,2.209737827715356,2.446941323345818,6.554307116104869,5.761548064918852,3.6329588014981273,2.8838951310861427,3.046192259675406,7.990012484394507,5.149812734082397,3.545568039950062,6.616729088639201,5.068664169787765,5.6491885143570535,6.048689138576779,8.426966292134832,3.533083645443196,5.162297128589263,5.980024968789014,7.615480649188515,7.865168539325843,5.212234706616729,3.826466916354557,4.881398252184769,5.305867665418227,3.439450686641698,7.865168539325843,5.224719101123595,4.038701622971286,7.428214731585518,3.595505617977528,5.205992509363296,5.917602996254682,6.367041198501872,7.428214731585518,5.580524344569288,7.865168539325843,7.615480649188515,5.667915106117353,4.794007490636704,2.7590511860174782,3.8202247191011236,8.551810237203496,5.617977528089888,4.975031210986267,2.5593008739076155,8.239700374531834,5.880149812734083,6.991260923845194,3.7203495630461925,5.418227215980025,5.318352059925093,7.553058676654182,2.2222222222222223,4.169787765293384,3.776529338327091,4.612983770287141,7.865168539325843,3.1772784019975036,7.0536828963795255,6.30461922596754,5.861423220973783, +5.905118601747815,7.553058676654182,4.594257178526841,7.365792759051186,5.455680399500624,5.405742821473158,2.35330836454432,5.249687890137328,3.0961298377028714,4.600499375780275,5.243445692883895,3.408239700374532,2.0411985018726595,2.4656679151061174,3.470661672908864,8.05243445692884,6.803995006242197,5.043695380774032,3.776529338327091,3.258426966292135,6.048689138576779,7.553058676654182,4.769038701622971,7.8027465667915115,6.991260923845194,3.102372034956305,2.8464419475655434,2.5093632958801497,4.1136079900124844,5.8863920099875156,2.0786516853932584,3.3770287141073654,6.679151061173534,5.6491885143570535,2.9837702871410734,4.313358302122348,3.2646691635455682,8.426966292134832,6.092384519350812,2.2347066167290888,2.471910112359551,6.616729088639201,5.786516853932584,3.6641697877652937,2.9151061173533086,3.077403245942572,8.05243445692884,5.181023720349563,3.5830212234706615,6.616729088639201,5.093632958801498,5.686641697877653,6.073657927590512,8.426966292134832,3.5580524344569286,5.181023720349563,6.004993757802747,7.615480649188515,7.927590511860175,5.237203495630462,3.8451935081148565,4.900124843945068,5.337078651685393,3.464419475655431,7.927590511860175,5.243445692883895,4.057428214731585,7.428214731585518,3.620474406991261,5.230961298377029,5.948813982521848,6.367041198501872,7.428214731585518,5.611735330836455,7.865168539325843,7.615480649188515,5.686641697877653,4.825218476903871,2.7840199750312107,3.857677902621723,8.614232209737828,5.64294631710362,5.0062421972534334,2.5842696629213484,8.239700374531834,5.905118601747815,6.991260923845194,3.7515605493133584,5.443196004993759,5.34956304619226,7.615480649188515,2.2409488139825218,4.200998751560549,3.8077403245942576,4.65043695380774,7.927590511860175,3.2084893882646695,7.116104868913857,6.30461922596754,5.880149812734083, +5.936329588014981,7.553058676654182,4.6254681647940075,7.428214731585518,5.480649188514358,5.430711610486892,2.3782771535580522,5.274656679151062,3.1273408239700373,4.6254681647940075,5.268414481897628,3.439450686641698,2.066167290886392,2.4906367041198503,3.495630461922597,8.05243445692884,6.803995006242197,5.074906367041199,3.801498127340824,3.2771535580524347,6.073657927590512,7.615480649188515,4.787765293383271,7.8027465667915115,6.991260923845194,3.1335830212234708,2.8776529338327093,2.5343320848938826,4.144818976279651,5.9113607990012484,2.1036204744069913,3.4144818976279647,6.741573033707866,5.674157303370786,3.0087390761548067,4.332084893882647,3.3021223470661676,8.489388264669165,6.117353308364544,2.253433208489388,2.4968789013732833,6.616729088639201,5.81772784019975,3.6953807740324596,2.9400749063670415,3.102372034956305,8.05243445692884,5.212234706616729,3.6142322097378274,6.679151061173534,5.1248439450686645,5.717852684144819,6.098626716604246,8.489388264669165,3.5830212234706615,5.199750312109863,6.036204744069912,7.677902621722847,7.927590511860175,5.268414481897628,3.8639200998751564,4.925093632958801,5.36828963795256,3.4831460674157304,7.927590511860175,5.268414481897628,4.082397003745319,7.49063670411985,3.6454431960049942,5.2559300873907615,5.980024968789014,6.429463171036204,7.428214731585518,5.636704119850187,7.927590511860175,7.677902621722847,5.711610486891385,4.8626716604244695,2.808988764044944,3.888888888888889,8.614232209737828,5.674157303370786,5.043695380774032,2.602996254681648,8.302122347066168,5.930087390761548,6.991260923845194,3.7827715355805243,5.468164794007491,5.3870162297128585,7.615480649188515,2.2659176029962547,4.2322097378277155,3.83270911360799,4.681647940074906,7.990012484394507,3.245942571785269,7.116104868913857,6.367041198501872,5.905118601747815, +5.967540574282147,7.615480649188515,4.662921348314606,7.428214731585518,5.50561797752809,5.455680399500624,2.397003745318352,5.299625468164794,3.1585518102372037,4.65043695380774,5.287141073657928,3.464419475655431,2.084893882646692,2.521847690387016,3.5205992509363297,8.11485642946317,6.866416978776529,5.106117353308365,3.826466916354557,3.3021223470661676,6.104868913857677,7.615480649188515,4.812734082397004,7.8027465667915115,7.0536828963795255,3.1647940074906367,2.908863920099875,2.5593008739076155,4.176029962546816,5.936329588014981,2.128589263420724,3.4456928838951315,6.741573033707866,5.692883895131087,3.027465667915106,4.357053682896379,3.3333333333333335,8.489388264669165,6.142322097378277,2.272159800249688,2.521847690387016,6.616729088639201,5.842696629213483,3.732833957553059,2.9712858926342074,3.1273408239700373,8.11485642946317,5.249687890137328,3.6454431960049942,6.679151061173534,5.149812734082397,5.7553058676654185,6.123595505617978,8.551810237203496,3.607990012484395,5.224719101123595,6.061173533083646,7.740324594257178,7.927590511860175,5.293383270911361,3.882646691635456,4.943820224719102,5.399500624219725,3.508114856429463,7.990012484394507,5.293383270911361,4.1011235955056184,7.49063670411985,3.6704119850187267,5.280898876404494,6.01123595505618,6.429463171036204,7.49063670411985,5.66167290886392,7.927590511860175,7.677902621722847,5.730337078651686,4.893882646691636,2.8339575530586765,3.926342072409488,8.67665418227216,5.705368289637952,5.074906367041199,2.6279650436953808,8.302122347066168,5.955056179775282,7.0536828963795255,3.81398252184769,5.493133583021224,5.418227215980025,7.677902621722847,2.2908863920099876,4.263420724094882,3.857677902621723,4.712858926342073,7.990012484394507,3.2771535580524347,7.17852684144819,6.367041198501872,5.930087390761548, +5.998751560549313,7.615480649188515,4.694132334581773,7.49063670411985,5.5305867665418225,5.474406991260924,2.4219725343320846,5.324594257178527,3.183520599250936,4.66916354556804,5.305867665418227,3.495630461922597,2.1098626716604243,2.5530586766541825,3.545568039950062,8.11485642946317,6.866416978776529,5.1373283395755305,3.8514357053682895,3.320848938826467,6.1360799001248445,7.677902621722847,4.837702871410737,7.865168539325843,7.0536828963795255,3.1897627965043696,2.933832709113608,2.5842696629213484,4.207240948813983,5.961298377028713,2.153558052434457,3.4769038701622974,6.741573033707866,5.717852684144819,3.0524344569288386,4.382022471910113,3.370786516853933,8.551810237203496,6.167290886392011,2.2908863920099876,2.546816479400749,6.679151061173534,5.867665418227216,3.764044943820225,3.0024968789013733,3.1585518102372037,8.11485642946317,5.280898876404494,3.682896379525593,6.741573033707866,5.181023720349563,5.786516853932584,6.1485642946317105,8.551810237203496,3.6329588014981273,5.243445692883895,6.092384519350812,7.740324594257178,7.990012484394507,5.318352059925093,3.9013732833957557,4.962546816479401,5.430711610486892,3.5268414481897628,7.990012484394507,5.312109862671661,4.1260923845193505,7.553058676654182,3.6953807740324596,5.305867665418227,6.0424469413233455,6.491885143570538,7.49063670411985,5.692883895131087,7.990012484394507,7.677902621722847,5.749063670411985,4.931335830212235,2.8589263420724094,3.957553058676654,8.739076154806492,5.736579275905119,5.106117353308365,2.6466916354556806,8.3645443196005,5.980024968789014,7.0536828963795255,3.8451935081148565,5.5181023720349565,5.449438202247191,7.677902621722847,2.3158551810237205,4.294631710362047,3.888888888888889,4.7440699126092385,8.05243445692884,3.3083645443196006,7.17852684144819,6.429463171036204,5.955056179775282, +6.029962546816479,7.677902621722847,4.725343320848939,7.49063670411985,5.555555555555556,5.499375780274657,2.446941323345818,5.34956304619226,3.214731585518102,4.694132334581773,5.33083645443196,3.5268414481897628,2.134831460674157,2.5842696629213484,3.5705368289637955,8.177278401997503,6.928838951310862,5.168539325842697,3.870162297128589,3.3458177278401995,6.161048689138577,7.677902621722847,4.8626716604244695,7.865168539325843,7.0536828963795255,3.2209737827715355,2.965043695380774,2.6092384519350813,4.238451935081149,5.986267166042447,2.1785268414481895,3.5143570536828963,6.803995006242197,5.742821473158552,3.0711610486891385,4.400749063670412,3.4019975031210987,8.551810237203496,6.186017478152309,2.3158551810237205,2.571785268414482,6.679151061173534,5.8988764044943816,3.7952559300873907,3.033707865168539,3.183520599250936,8.177278401997503,5.312109862671661,3.714107365792759,6.741573033707866,5.212234706616729,5.81772784019975,6.179775280898876,8.614232209737828,3.6579275905118602,5.262172284644195,6.117353308364544,7.8027465667915115,7.990012484394507,5.34956304619226,3.920099875156055,4.987515605493134,5.461922596754057,3.5518102372034956,8.05243445692884,5.337078651685393,4.144818976279651,7.553058676654182,3.7203495630461925,5.33083645443196,6.073657927590512,6.491885143570538,7.553058676654182,5.717852684144819,7.990012484394507,7.740324594257178,5.774032459425719,4.962546816479401,2.8838951310861427,3.9950062421972534,8.739076154806492,5.767790262172285,5.143570536828964,2.671660424469413,8.3645443196005,6.004993757802747,7.116104868913857,3.8764044943820224,5.543071161048689,5.480649188514358,7.740324594257178,2.340823970037453,4.31960049937578,3.9138576779026217,4.781523096129837,8.11485642946317,3.3458177278401995,7.240948813982522,6.429463171036204,5.97378277153558, +6.061173533083646,7.677902621722847,4.762796504369538,7.49063670411985,5.580524344569288,5.524344569288389,2.4656679151061174,5.380774032459426,3.245942571785269,4.719101123595506,5.34956304619226,3.5580524344569286,2.153558052434457,2.6154806491885143,3.589263420724095,8.177278401997503,6.928838951310862,5.199750312109863,3.8951310861423223,3.3645443196004994,6.192259675405743,7.740324594257178,4.887640449438202,7.927590511860175,7.116104868913857,3.2521847690387014,2.9962546816479403,2.634207240948814,4.269662921348314,6.01123595505618,2.203495630461923,3.545568039950062,6.803995006242197,5.761548064918852,3.0961298377028714,4.425717852684145,3.439450686641698,8.614232209737828,6.210986267166042,2.33458177278402,2.596754057428215,6.679151061173534,5.9238451935081144,3.826466916354557,3.058676654182272,3.2084893882646695,8.177278401997503,5.34956304619226,3.7515605493133584,6.803995006242197,5.237203495630462,5.855181023720349,6.20474406991261,8.614232209737828,3.6766541822721597,5.287141073657928,6.1485642946317105,7.8027465667915115,8.05243445692884,5.3745318352059925,3.938826466916354,5.0062421972534334,5.493133583021224,3.5705368289637955,8.05243445692884,5.355805243445693,4.169787765293384,7.553058676654182,3.745318352059925,5.355805243445693,6.104868913857677,6.554307116104869,7.553058676654182,5.742821473158552,8.05243445692884,7.740324594257178,5.792759051186017,4.9937578027465666,2.908863920099875,4.02621722846442,8.801498127340825,5.799001248439451,5.174781523096129,2.690387016229713,8.426966292134832,6.023720349563047,7.116104868913857,3.9076154806491883,5.568039950062421,5.511860174781523,7.740324594257178,2.3657927590511862,4.3508114856429465,3.938826466916354,4.812734082397004,8.11485642946317,3.3770287141073654,7.240948813982522,6.429463171036204,5.998751560549313, +6.086142322097379,7.740324594257178,4.794007490636704,7.553058676654182,5.605493133583021,5.543071161048689,2.4906367041198503,5.405742821473158,3.2771535580524347,4.737827715355805,5.3745318352059925,3.5830212234706615,2.1785268414481895,2.640449438202247,3.6142322097378274,8.177278401997503,,,3.920099875156055,3.3895131086142323,6.223470661672909,7.740324594257178,4.912609238451935,7.927590511860175,7.116104868913857,3.2771535580524347,3.027465667915106,2.6591760299625467,4.300873907615481,6.036204744069912,2.2284644194756553,3.576779026217228,6.803995006242197,5.786516853932584,3.1210986267166043,4.450686641697877,3.470661672908864,8.614232209737828,6.235955056179775,2.35330836454432,2.6154806491885143,6.741573033707866,5.948813982521848,3.8639200998751564,3.089887640449438,3.2397003745318353,8.239700374531834,,3.7827715355805243,6.803995006242197,5.268414481897628,5.8863920099875156,,8.67665418227216,3.701622971285893,5.305867665418227,6.179775280898876,,8.05243445692884,5.399500624219725,3.957553058676654,5.024968789013733,5.5305867665418225,3.595505617977528,8.11485642946317,5.380774032459426,4.188514357053683,7.615480649188515,3.764044943820225,5.380774032459426,6.1360799001248445,6.554307116104869,7.553058676654182,5.774032459425719,8.05243445692884,7.740324594257178,5.811485642946318,5.031210986267166,2.933832709113608,4.063670411985019,,5.830212234706617,5.205992509363296,2.7091136079900124,,6.048689138576779,7.116104868913857,3.938826466916354,5.593008739076155,5.549313358302123,,2.3907615480649187,4.382022471910113,3.9637952559300875,4.843945068664169,,3.4144818976279647,7.240948813982522,6.491885143570538,6.023720349563047, +6.117353308364544,7.8027465667915115,4.831460674157303,7.553058676654182,5.630461922596755,5.568039950062421,2.515605493133583,5.430711610486892,3.3021223470661676,4.762796504369538,5.393258426966292,3.6142322097378274,2.203495630461923,2.671660424469413,3.639200998751561,8.239700374531834,,,3.9450686641697876,3.408239700374532,6.242197253433209,7.8027465667915115,4.937578027465668,7.990012484394507,7.17852684144819,3.3083645443196006,3.058676654182272,2.68414481897628,4.332084893882647,6.061173533083646,2.253433208489388,3.6142322097378274,6.866416978776529,5.805243445692884,3.139825218476904,4.475655430711611,3.508114856429463,8.67665418227216,6.242197253433209,2.3782771535580522,2.640449438202247,6.741573033707866,5.97378277153558,3.8951310861423223,3.1210986267166043,3.2646691635455682,8.239700374531834,,3.81398252184769,6.866416978776529,5.293383270911361,5.9238451935081144,,8.67665418227216,,5.324594257178527,6.20474406991261,,8.05243445692884,5.430711610486892,3.9762796504369535,5.049937578027466,5.561797752808988,3.620474406991261,8.11485642946317,5.405742821473158,4.213483146067416,7.615480649188515,3.7890137328339577,5.405742821473158,6.167290886392011,6.616729088639201,7.615480649188515,5.799001248439451,8.11485642946317,7.8027465667915115,5.836454431960051,5.062421972534332,,4.1011235955056184,,5.861423220973783,5.243445692883895,2.7340823970037453,,6.073657927590512,7.17852684144819,3.970037453183521,5.617977528089888,5.580524344569288,,2.4094881398252186,4.413233458177278,3.9950062421972534,4.881398252184769,,3.4456928838951315,7.303370786516854,6.491885143570538,6.048689138576779, +6.1485642946317105,7.8027465667915115,4.8626716604244695,7.615480649188515,5.655430711610487,5.593008739076155,2.5343320848938826,5.455680399500624,3.3333333333333335,4.787765293383271,5.418227215980025,3.6454431960049942,2.2222222222222223,2.702871410736579,3.6641697877652937,8.239700374531834,,,3.970037453183521,3.4269662921348316,6.30461922596754,7.8027465667915115,4.962546816479401,7.990012484394507,7.17852684144819,3.339575530586767,3.089887640449438,2.7091136079900124,4.3632958801498125,6.086142322097379,2.272159800249688,3.6454431960049942,6.866416978776529,5.830212234706617,3.1647940074906367,4.49438202247191,3.545568039950062,8.67665418227216,6.30461922596754,2.397003745318352,2.66541822721598,6.741573033707866,6.004993757802747,3.926342072409488,3.1460674157303368,3.2896379525593007,8.302122347066168,,,6.866416978776529,5.324594257178527,5.955056179775282,,8.739076154806492,,5.34956304619226,6.235955056179775,,8.11485642946317,5.455680399500624,4.001248439450687,5.068664169787765,5.593008739076155,3.639200998751561,8.177278401997503,5.424469413233458,4.2322097378277155,7.615480649188515,3.81398252184769,5.430711610486892,6.198501872659176,6.616729088639201,7.615480649188515,5.830212234706617,8.11485642946317,7.8027465667915115,5.855181023720349,5.099875156054932,,4.132334581772784,,5.892634207240949,5.274656679151062,2.752808988764045,,6.098626716604246,7.17852684144819,4.001248439450687,5.6491885143570535,5.611735330836455,,2.4344569288389515,4.444444444444445,4.019975031210986,4.912609238451935,,3.4831460674157304,7.303370786516854,6.554307116104869,6.067415730337078, +,7.865168539325843,4.893882646691636,,5.68039950062422,5.611735330836455,2.5593008739076155,,3.3645443196004994,4.806491885143571,5.436953807740325,3.6766541822721597,2.247191011235955,2.7340823970037453,3.689138576779026,8.302122347066168,,,3.9950062421972534,3.451935081148564,6.30461922596754,7.865168539325843,4.987515605493134,8.05243445692884,7.240948813982522,3.3645443196004994,3.114856429463171,2.7340823970037453,4.400749063670412,6.111111111111111,2.2971285892634206,3.682896379525593,6.866416978776529,5.848938826466916,3.183520599250936,4.519350811485642,3.576779026217228,8.739076154806492,6.30461922596754,2.4157303370786516,2.690387016229713,6.803995006242197,6.029962546816479,3.957553058676654,3.1772784019975036,3.3146067415730336,8.302122347066168,,,6.928838951310862,5.34956304619226,5.986267166042447,,8.801498127340825,,5.36828963795256,6.242197253433209,,8.11485642946317,5.480649188514358,4.019975031210986,5.087390761548065,5.6242197253433215,3.6641697877652937,8.177278401997503,5.449438202247191,4.257178526841448,7.677902621722847,3.8389513108614235,5.455680399500624,6.229712858926342,6.679151061173534,7.615480649188515,5.855181023720349,8.177278401997503,7.8027465667915115,5.880149812734083,5.131086142322098,,4.169787765293384,,5.9238451935081144,5.305867665418227,2.777777777777778,,6.123595505617978,7.240948813982522,4.032459425717852,5.674157303370786,5.64294631710362,,2.459425717852684,4.475655430711611,4.044943820224719,4.943820224719102,,3.5143570536828963,7.365792759051186,6.554307116104869,6.092384519350812, +,7.865168539325843,4.931335830212235,,5.705368289637952,5.636704119850187,2.5842696629213484,,3.3957553058676653,4.831460674157303,5.455680399500624,3.701622971285893,2.272159800249688,2.7652933832709112,3.714107365792759,,,,4.019975031210986,3.470661672908864,6.367041198501872,7.865168539325843,5.0062421972534334,,7.240948813982522,3.3957553058676653,3.1460674157303368,2.7590511860174782,4.431960049937578,6.1360799001248445,,3.714107365792759,6.928838951310862,5.8739076154806495,3.2084893882646695,4.544319600499376,3.6142322097378274,8.739076154806492,6.30461922596754,2.4406991260923845,2.715355805243446,6.803995006242197,6.054931335830212,3.9950062421972534,3.2084893882646695,3.3458177278401995,8.3645443196005,,,6.928838951310862,5.380774032459426,6.023720349563047,,8.801498127340825,,5.3870162297128585,6.30461922596754,,8.177278401997503,5.50561797752809,4.038701622971286,5.1123595505617985,5.655430711610487,3.682896379525593,8.239700374531834,5.468164794007491,4.275905118601748,7.677902621722847,3.8639200998751564,5.480649188514358,6.242197253433209,6.679151061173534,7.677902621722847,5.880149812734083,8.177278401997503,7.865168539325843,5.8988764044943816,5.168539325842697,,,,5.955056179775282,5.343320848938826,2.7965043695380776,,6.1485642946317105,7.240948813982522,4.063670411985019,5.69912609238452,5.674157303370786,,2.4843945068664173,4.506866416978776,4.069912609238452,4.9812734082397006,,3.5518102372034956,7.365792759051186,6.616729088639201,6.117353308364544, +,7.927590511860175,4.962546816479401,,5.730337078651686,5.655430711610487,2.602996254681648,,3.420724094881398,4.850187265917603,5.480649188514358,3.732833957553059,2.2908863920099876,2.790262172284644,3.7390761548064915,,,,4.044943820224719,3.495630461922597,6.367041198501872,7.927590511860175,5.031210986267166,,7.303370786516854,3.4269662921348316,3.1772784019975036,2.7840199750312107,4.463171036204744,,,3.745318352059925,6.928838951310862,5.8988764044943816,3.233458177278402,4.569288389513109,3.6454431960049942,8.801498127340825,6.367041198501872,2.459425717852684,2.740324594257179,6.866416978776529,6.086142322097379,4.02621722846442,3.2397003745318353,3.370786516853933,8.3645443196005,,,6.991260923845194,5.411985018726591,6.054931335830212,,8.863920099875156,,5.411985018726591,6.30461922596754,,8.177278401997503,5.536828963795256,4.057428214731585,5.131086142322098,5.686641697877653,3.7078651685393256,8.239700374531834,5.493133583021224,4.294631710362047,7.677902621722847,3.888888888888889,5.50561797752809,6.30461922596754,6.741573033707866,7.677902621722847,5.9113607990012484,8.239700374531834,7.865168539325843,5.917602996254682,5.199750312109863,,,,5.986267166042447,5.3745318352059925,2.82147315855181,,6.173533083645444,7.240948813982522,4.094881398252185,5.724094881398252,5.705368289637952,,2.5093632958801497,4.538077403245943,4.1011235955056184,5.012484394506866,,3.5830212234706615,7.428214731585518,,6.1360799001248445, +,7.927590511860175,4.9937578027465666,,5.7553058676654185,5.68039950062422,2.6279650436953808,,3.451935081148564,4.875156054931336,5.499375780274657,3.764044943820225,2.3158551810237205,2.82147315855181,3.764044943820225,,,,4.069912609238452,3.5143570536828963,6.367041198501872,7.990012484394507,5.056179775280899,,7.303370786516854,3.4581772784019975,3.2084893882646695,2.808988764044944,4.49438202247191,,,3.7827715355805243,6.928838951310862,5.917602996254682,3.2521847690387014,,3.682896379525593,8.801498127340825,6.367041198501872,2.478152309612984,2.7590511860174782,6.866416978776529,6.111111111111111,4.057428214731585,3.2646691635455682,3.3957553058676653,8.426966292134832,,,6.991260923845194,5.436953807740325,6.092384519350812,,8.863920099875156,,5.430711610486892,6.367041198501872,,8.239700374531834,5.561797752808988,4.0761548064918856,5.149812734082397,5.717852684144819,3.7265917602996255,8.302122347066168,5.5181023720349565,4.31960049937578,7.740324594257178,3.9138576779026217,5.5305867665418225,6.30461922596754,6.741573033707866,7.740324594257178,5.936329588014981,8.239700374531834,7.865168539325843,5.942571785268415,5.237203495630462,,,,6.0174781523096135,5.405742821473158,2.84019975031211,,6.192259675405743,7.303370786516854,4.1260923845193505,5.749063670411985,5.742821473158552,,2.5343320848938826,4.569288389513109,4.1260923845193505,5.043695380774032,,3.6142322097378274,7.428214731585518,,6.161048689138577, +,7.990012484394507,5.031210986267166,,5.7802746566791505,5.705368289637952,,,3.4831460674157304,4.900124843945068,5.524344569288389,3.7952559300873907,2.340823970037453,2.852684144818976,3.7890137328339577,,,,4.094881398252185,3.5393258426966296,6.429463171036204,7.990012484394507,5.081148564294631,,7.365792759051186,3.4831460674157304,3.2397003745318353,2.8339575530586765,4.525593008739076,,,3.81398252184769,6.991260923845194,,3.2771535580524347,,3.714107365792759,8.863920099875156,6.429463171036204,2.4968789013732833,2.7840199750312107,6.866416978776529,6.1360799001248445,4.0886392009987516,3.295880149812734,,8.426966292134832,,,7.0536828963795255,5.468164794007491,6.123595505617978,,8.926342072409488,,5.455680399500624,6.367041198501872,,8.239700374531834,,4.094881398252185,5.174781523096129,5.749063670411985,3.7515605493133584,8.302122347066168,5.536828963795256,4.33832709113608,7.740324594257178,3.938826466916354,5.555555555555556,,6.803995006242197,7.740324594257178,5.961298377028713,8.302122347066168,7.927590511860175,5.961298377028713,5.268414481897628,,,,6.048689138576779,5.443196004993759,2.865168539325843,,6.217228464419476,7.303370786516854,4.157303370786517,5.774032459425719,5.774032459425719,,2.5530586766541825,4.600499375780275,4.151061173533084,5.081148564294631,,3.651685393258427,,,6.186017478152309, +,,5.062421972534332,,5.805243445692884,,,,3.5143570536828963,4.918851435705368,5.543071161048689,3.8202247191011236,2.359550561797753,2.8838951310861427,3.81398252184769,,,,4.119850187265917,3.5580524344569286,6.429463171036204,8.05243445692884,5.106117353308365,,7.365792759051186,3.5143570536828963,3.2709113607990012,2.8589263420724094,4.556803995006242,,,3.8451935081148565,6.991260923845194,,3.295880149812734,,3.7515605493133584,8.863920099875156,6.429463171036204,2.521847690387016,2.808988764044944,6.928838951310862,6.161048689138577,4.1260923845193505,3.3270911360799,,8.489388264669165,,,7.0536828963795255,5.493133583021224,6.161048689138577,,,,5.474406991260924,6.429463171036204,,8.239700374531834,,4.1136079900124844,5.19350811485643,5.7802746566791505,3.776529338327091,8.3645443196005,5.561797752808988,4.3632958801498125,7.740324594257178,3.9637952559300875,5.580524344569288,,6.803995006242197,,5.992509363295881,8.302122347066168,7.927590511860175,5.980024968789014,5.305867665418227,,,,6.079900124843945,5.474406991260924,2.8838951310861427,,6.242197253433209,7.365792759051186,4.18227215980025,5.799001248439451,5.805243445692884,,2.578027465667915,4.631710362047441,4.18227215980025,5.1123595505617985,,3.682896379525593,,,6.210986267166042, +,,5.093632958801498,,5.830212234706617,,,,3.5393258426966296,4.943820224719102,5.568039950062421,3.8514357053682895,2.3845193508114857,2.908863920099875,3.8389513108614235,,,,4.144818976279651,3.5830212234706615,6.491885143570538,,5.131086142322098,,7.428214731585518,3.545568039950062,3.295880149812734,2.8838951310861427,4.588014981273409,,,3.882646691635456,6.991260923845194,,3.320848938826467,,,8.926342072409488,6.429463171036204,2.5405742821473156,2.8339575530586765,6.928838951310862,,,3.352059925093633,,8.489388264669165,,,7.116104868913857,5.524344569288389,6.192259675405743,,,,5.493133583021224,6.429463171036204,,8.302122347066168,,4.132334581772784,5.212234706616729,5.811485642946318,3.7952559300873907,8.3645443196005,5.580524344569288,4.382022471910113,7.8027465667915115,3.9887640449438204,5.605493133583021,,6.866416978776529,,6.0174781523096135,8.3645443196005,7.927590511860175,6.004993757802747,5.337078651685393,,,,6.111111111111111,5.50561797752809,2.908863920099875,,6.242197253433209,7.365792759051186,4.213483146067416,5.823970037453184,5.836454431960051,,2.602996254681648,4.662921348314606,4.207240948813983,5.143570536828964,,3.7203495630461925,,,6.229712858926342, +,,5.131086142322098,,5.855181023720349,,,,3.5705368289637955,4.9687890137328345,5.586766541822722,3.882646691635456,2.4094881398252186,2.9400749063670415,3.8639200998751564,,,,4.169787765293384,3.6017478152309614,6.491885143570538,,5.15605493133583,,7.428214731585518,3.5705368289637955,3.3270911360799,2.908863920099875,4.619225967540574,,,3.9138576779026217,7.0536828963795255,,3.3458177278401995,,,8.926342072409488,6.491885143570538,2.5593008739076155,2.8589263420724094,6.928838951310862,,,3.383270911360799,,8.551810237203496,,,7.116104868913857,,,,,,5.5181023720349565,6.491885143570538,,8.302122347066168,,4.151061173533084,5.237203495630462,5.842696629213483,3.8202247191011236,8.426966292134832,5.605493133583021,4.406991260923846,7.8027465667915115,4.00749063670412,5.630461922596755,,,,6.0424469413233455,8.3645443196005,7.990012484394507,6.023720349563047,5.3745318352059925,,,,,5.543071161048689,2.9275905118601746,,6.30461922596754,7.428214731585518,4.244694132334582,5.848938826466916,5.867665418227216,,2.6279650436953808,4.694132334581773,4.2322097378277155,5.174781523096129,,3.7515605493133584,,,6.242197253433209, +,,5.162297128589263,,,,,,3.6017478152309614,4.987515605493134,5.605493133583021,3.9076154806491883,2.428214731585518,2.9712858926342074,,,,,4.194756554307116,3.6267166042446943,6.554307116104869,,5.181023720349563,,7.49063670411985,3.6017478152309614,3.3583021223470664,2.933832709113608,4.65043695380774,,,,7.0536828963795255,,3.3645443196004994,,,8.98876404494382,,2.5842696629213484,2.8838951310861427,6.991260923845194,,,3.4144818976279647,,8.551810237203496,,,7.116104868913857,,,,,,5.536828963795256,6.491885143570538,,8.3645443196005,,4.176029962546816,5.2559300873907615,5.880149812734083,3.8389513108614235,8.426966292134832,5.6242197253433215,4.425717852684145,7.8027465667915115,4.032459425717852,,,,,6.073657927590512,8.426966292134832,7.990012484394507,6.0424469413233455,5.405742821473158,,,,,,2.9525593008739075,,,7.428214731585518,,5.8739076154806495,5.905118601747815,,,,4.257178526841448,5.212234706616729,,,,,6.30461922596754, +,,,,,,,,3.6329588014981273,5.012484394506866,5.630461922596755,3.938826466916354,2.453183520599251,3.0024968789013733,,,,,4.213483146067416,3.6454431960049942,6.554307116104869,,5.205992509363296,,7.49063670411985,3.6329588014981273,,2.958801498127341,4.681647940074906,,,,7.0536828963795255,,3.3895131086142323,,,8.98876404494382,,2.602996254681648,2.908863920099875,6.991260923845194,,,,,,,,7.17852684144819,,,,,,5.555555555555556,6.491885143570538,,8.3645443196005,,4.194756554307116,5.274656679151062,5.9113607990012484,3.8639200998751564,8.489388264669165,5.6491885143570535,4.450686641697877,,4.057428214731585,,,,,6.098626716604246,8.426966292134832,7.990012484394507,6.067415730337078,,,,,,,2.9712858926342074,,,7.428214731585518,,5.8988764044943816,5.936329588014981,,,,4.288389513108614,5.243445692883895,,,,,6.30461922596754, +,,,,,,,,3.6579275905118602,5.0374531835206,5.6491885143570535,,2.471910112359551,3.033707865168539,,,,,,3.6704119850187267,6.616729088639201,,5.224719101123595,,7.553058676654182,,,2.9837702871410734,4.712858926342073,,,,7.116104868913857,,3.408239700374532,,,9.051186017478152,,,2.9275905118601746,6.991260923845194,,,,,,,,7.17852684144819,,,,,,5.580524344569288,6.554307116104869,,,,4.213483146067416,5.299625468164794,5.942571785268415,3.888888888888889,8.489388264669165,,4.4694132334581775,,4.082397003745319,,,,,6.123595505617978,8.489388264669165,8.05243445692884,6.086142322097379,,,,,,,2.9962546816479403,,,7.49063670411985,,5.9238451935081144,5.967540574282147,,,,,5.274656679151062,,,,,6.30461922596754, +,,,,,,,,3.689138576779026,5.056179775280899,,,2.4968789013732833,3.058676654182272,,,,,,3.689138576779026,6.616729088639201,,5.249687890137328,,7.553058676654182,,,3.0087390761548067,,,,,7.116104868913857,,3.4332084893882646,,,9.051186017478152,,,2.9525593008739075,7.0536828963795255,,,,,,,,7.240948813982522,,,,,,,,,,,4.2322097378277155,5.318352059925093,5.97378277153558,3.9076154806491883,8.551810237203496,,4.49438202247191,,4.107365792759051,,,,,6.154806491885144,8.489388264669165,8.05243445692884,6.104868913857677,,,,,,,3.0149812734082393,,,7.49063670411985,,5.948813982521848,5.998751560549313,,,,,,,,,,6.367041198501872, +,,,,,,,,3.7203495630461925,,,,,3.089887640449438,,,,,,3.714107365792759,6.679151061173534,,5.274656679151062,,7.553058676654182,,,3.033707865168539,,,,,,,3.4581772784019975,,,9.113607990012484,,,2.977528089887641,,,,,,,,,7.240948813982522,,,,,,,,,,,4.250936329588015,5.337078651685393,6.004993757802747,3.9325842696629216,8.551810237203496,,,,4.132334581772784,,,,,6.179775280898876,8.551810237203496,8.05243445692884,6.129837702871411,,,,,,,3.0399500624219726,,,7.553058676654182,,5.97378277153558,6.029962546816479,,,,,,,,,,6.367041198501872, +,,,,,,,,,,,,,3.1210986267166043,,,,,,3.732833957553059,6.679151061173534,,5.299625468164794,,,,,3.058676654182272,,,,,,,,,,9.113607990012484,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.269662921348314,5.3620474406991265,6.036204744069912,3.951310861423221,8.614232209737828,,,,,,,,,6.210986267166042,8.551810237203496,8.11485642946317,6.1485642946317105,,,,,,,3.058676654182272,,,7.553058676654182,,,,,,,,,,,,,6.367041198501872, +,,,,,,,,,,,,,3.15230961298377,,,,,,3.7515605493133584,6.741573033707866,,5.324594257178527,,,,,3.0836454431960054,,,,,,,,,,9.176029962546817,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.288389513108614,5.380774032459426,6.067415730337078,3.9762796504369535,8.614232209737828,,,,,,,,,6.235955056179775,,8.11485642946317,6.167290886392011,,,,,,,3.077403245942572,,,7.553058676654182,,,,,,,,,,,,,6.429463171036204, +,,,,,,,,,,,,,,,,,,,,6.741573033707866,,,,,,,,,,,,,,,,,9.176029962546817,,,,,,,,,,,,,,,,,,,,,,,,5.399500624219725,6.098626716604246,,8.67665418227216,,,,,,,,,6.242197253433209,,8.11485642946317,6.192259675405743,,,,,,,3.102372034956305,,,7.615480649188515,,,,,,,,,,,,,6.429463171036204, +,,,,,,,,,,,,,,,,,,,,6.803995006242197,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5.424469413233458,,,,,,,,,,,,6.30461922596754,,,6.210986267166042,,,,,,,3.1210986267166043,,,7.615480649188515,,,,,,,,,,,,,, diff --git a/lessons/files/reading_files.ipynb b/lessons/files/reading_files.ipynb index 14894d9..b317f1a 100644 --- a/lessons/files/reading_files.ipynb +++ b/lessons/files/reading_files.ipynb @@ -5,7 +5,7 @@ "id": "1767a58b", "metadata": {}, "source": [ - "# **Reading Files**\n", + "# Reading Files\n", "\n", "## Prerequisites:\n", "- Variables\n", @@ -111,8 +111,8 @@ "id": "6e61007d", "metadata": {}, "source": [ - "
    \n", - "Read() and readline()\n", + "
    \n", + " Read() and readline()\n", "\n", "By default, the ``read()`` method returns the whole text, but you can also specify how many characters you want to return. \n", "\n", @@ -147,8 +147,8 @@ "id": "9cf0db2a", "metadata": {}, "source": [ - "
    \n", - "Using for loops to read a file\n", + "
    \n", + " Using for loops to read a file\n", "\n", "An easy way to extract information from a file is to use a ``for`` loop. The most simple case is to iterate line-by-line and print each line. \n", "\n", @@ -191,8 +191,10 @@ "id": "f110135e", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Print a certain number of lines \n", + "
    \n", + "
    Exercise: Print a certain number of lines \n", + "\n", + "---\n", "\n", "For the file \"spectrum.dat\", open using a ``with`` statement and print the first four lines.\n", "\n", @@ -206,8 +208,8 @@ "id": "ba982c79", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", ">```Python\n", ">with open(\"./practice_files/spectrum.dat\") as file:\n", @@ -285,8 +287,8 @@ "id": "1ba91256", "metadata": {}, "source": [ - "
    \n", - "Splitting a line\n", + "
    \n", + " Splitting a line\n", "\n", "Instead of splitting all the contents, we can iterate through line by line and split the line we are on using the delimiter \",\". \n", "\n", @@ -330,8 +332,8 @@ "id": "76859efa", "metadata": {}, "source": [ - "
    \n", - "Extracting and converting numerical data\n", + "
    \n", + " Extracting and converting numerical data\n", "\n", "As a default, information from files are imported as a string. Therefore, if you want to use numbers from your file, you need to convert it to numbers. The easiest way is to use the built-in Python ``float()`` function. But be careful! If there are letters or special characters in the string, you will receive an error. \n", "\n", @@ -358,9 +360,11 @@ "id": "828d3808", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Extract columns of data \n", - "
    \n", + "
    \n", + "
    Exercise: Extract columns of data \n", + "\n", + "---\n", + "\n", "The file 'measurements_2.csv' contains three columns of background data, corresponding to three different students. Write a code that extracts the data from each of the three columns and appends it to three lists. Then write a code that finds the average of each set of data.\n", "\n", " Hint 1: Once you have split each line, you can call items in a line using square brackets. The first item in a line can be called using ``line[0]``, the second using ``line[1]``, and so on. \n", @@ -376,8 +380,8 @@ "id": "3fa00d3c", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "
    \n", "\n", @@ -420,8 +424,10 @@ "id": "7bff0294", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Create a function to read a file \n", + "
    \n", + "
    Exercise: Create a function to read a file \n", + "\n", + "---\n", "\n", "Above, we have written code to open a single file and extract the data. If we have many files of data that we want to read, we don't want to write that out over and over again. \n", "\n", @@ -443,8 +449,8 @@ "id": "52258018", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "This is just turning our code from the previous exercise into a function. The function takes one argument (the file name), and will always output the first three columns of data as a three separate lists.\n", "\n", @@ -481,8 +487,8 @@ "id": "1228e25e", "metadata": {}, "source": [ - "
    \n", - " Click to view extension answer\n", + "
    \n", + " Click to view extension answer\n", "\n", "This code is more flexible than the previous one. Now, we can accept files with any number of columns, and we retrieve the data frp, a certain column, specifed with a second argument.\n", "\n", @@ -529,8 +535,8 @@ "id": "c1fd0ab0", "metadata": {}, "source": [ - "
    \n", - " Click to view advanced answer\n", + "
    \n", + " Click to view advanced answer\n", "\n", "In this code, we have written ``*columns`` as our arbitrary arguments. As our file only has 3 columns of data, we could put in 0, 1, or 2, as our arbitrary arguments. If we had more columns of data, we could call any number of those columns.\n", "\n", @@ -662,8 +668,8 @@ "id": "22973ad9", "metadata": {}, "source": [ - "
    \n", - "Identify a line containing a phrase\n", + "
    \n", + " Identify a line containing a phrase\n", "\n", "Here, if the first line is equal to ['nm', 'abs'] (which it is), the program will ``continue``, meaning the current loop ends and the next loop begins. Since the lines in the next loops are numbers, the code will go straight to the ``else`` statement and append to the relevant lists. \n", "\n", @@ -694,8 +700,8 @@ "id": "599796f0", "metadata": {}, "source": [ - "
    \n", - "Check if an entry is a number using .isdigit()\n", + "
    \n", + " Check if an entry is a number using .isdigit()\n", "\n", "In this example, we have added a ``for`` loop that iterates through the line, checking if each string item in the line contains numbers using the built-in Python function ``.isdigit()``. This will return True if all characters in the string are numbers, and False if any of those characters are not numbers. In this way, we can skip over any items which are not floats. \n", "\n", @@ -727,8 +733,8 @@ "id": "0df837a2", "metadata": {}, "source": [ - "
    \n", - "Use enumerate() to skip specific lines\n", + "
    \n", + " enumerate() to skip specific lines\n", "\n", "In this example, we enumerate the contents. This way, we can skip over any line we specify. In this case, the first line (index == 0) is skipped. If we also wanted to skip over the second line, we could use an ``or`` statement, e.g. ``if index == 0 or index == 1:``. \n", "\n", @@ -757,8 +763,8 @@ "id": "0de1d353", "metadata": {}, "source": [ - "
    \n", - "Use length of line\n", + "
    \n", + " Use length of line\n", "\n", "In some cases, the headers are a different length to the rest of the file.\n", "\n", @@ -793,9 +799,11 @@ "id": "860ec445", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Extract data from periodic table \n", - "
    \n", + "
    \n", + "
    Exercise: Extract data from periodic table \n", + "\n", + "---\n", + "\n", "Using the file 'periodic_table.csv', write code to write each element out in the following format:\n", "\n", " ``Element`` has the symbol ``symbol``. It has ``number`` protons and a mass of ``mass`` amu. \n", @@ -815,8 +823,8 @@ "id": "bdab5ff9", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "There are many ways to write this. The important thing is that our output does NOT include the headers as a phrase. This answer has done this by skipping the line starting with the string \"Name\". If you have achieved the same output a different way, that's fine! At the moment, it is more important to just solve the problem rather than look for the \"best\" way to solve it. \n", "\n", @@ -842,9 +850,11 @@ "id": "6a239074", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Using the CSV module \n", - "
    \n", + "
    \n", + "
    Exercise: Using the CSV module \n", + "\n", + "---\n", + "\n", "Using the CSV module and the file 'periodic_table.csv', write code to write each element out in the following format:\n", "\n", " Element: ``element``, Symbol: ``symbol``, Atomic Number: ``number``, Atomic Mass: ``mass``. \n", @@ -859,8 +869,8 @@ "id": "1ed1114b", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "Using the CSV module results in fewer lines of code.\n", "\n", diff --git a/lessons/files/spectrum.txt b/lessons/files/spectrum.txt index 33a9db2..6134c3e 100644 --- a/lessons/files/spectrum.txt +++ b/lessons/files/spectrum.txt @@ -9,3 +9,5 @@ nm &#&# abs 310 0.002 300 0.007 310 0.002 +300 0.007 +310 0.002 diff --git a/lessons/files/writing_files.ipynb b/lessons/files/writing_files.ipynb index fb555d3..113d24c 100644 --- a/lessons/files/writing_files.ipynb +++ b/lessons/files/writing_files.ipynb @@ -83,8 +83,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Writing data to a new file\n", + "
    \n", + " Writing data to a new file\n", "\n", "If the file you want to write to doesn't exist, Python will create it.\n", "\n", @@ -114,8 +114,8 @@ "id": "BVX99iEZ3Rc2" }, "source": [ - "
    \n", - "Writing data to an existing file\n", + "
    \n", + " Writing data to an existing file\n", "\n", "If the file you want to write to already exists, Python will erase the contents of the file (this is called truncation) and write the new contents in that space.\n", "\n", @@ -139,8 +139,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Writing using 'with' statements\n", + "
    \n", + " Writing using 'with' statements\n", "\n", "Just like when we are reading files, we can use a ``with`` statement to write to files. \n", "\n", @@ -159,9 +159,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Writing files \n", - "
    \n", + "
    \n", + "
    Exercise: Writing files \n", + "\n", + "---\n", + "\n", "Using a ``with`` statement and an f-string, create a code to write the following statement to a new text file using the given variables below:\n", "\n", ">Lanthanum, with the elemental symbol La, has 57 protons and a mass of 138.91 amu. \n", @@ -185,8 +187,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - " Click to reveal answer \n", + "
    \n", + " Click to reveal answer \n", "\n", "```Python\n", "element = \"Lanthanum\"\n", @@ -244,9 +246,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Write data to a file\n", - "
    \n", + "
    \n", + "
    Exercise: Write data to a file\n", + "\n", + "---\n", + "\n", "For the following list of random background noise, write each item to a text file on a new line. Include a header that describes what the data is.\n", "\n", "background = [1.48, 1.23, 1.39, 1.46, 1.31, 1.55, 1.25, 1.36, 1.44, 1.29, 1.58, 1.34, 1.41, 1.53, 1.27, 1.38, 1.52, 1.22, 1.33, 1.49, 1.24, 1.56, 1.26, 1.45, 1.51, 1.28, 1.35, 1.57, 1.43, 1.21]\n", @@ -258,8 +262,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "```Python\n", "background = [1.48, 1.23, 1.39, 1.46, 1.31, 1.55, 1.25, 1.36, 1.44, 1.29, 1.58, 1.34, 1.41, 1.53, 1.27, 1.38, 1.52, 1.22, 1.33, 1.49, 1.24, 1.56, 1.26, 1.45, 1.51, 1.28, 1.35, 1.57, 1.43, 1.21]\n", @@ -277,9 +281,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Debugging code \n", - "
    \n", + "
    \n", + "
    Exercise: Debugging code \n", + "\n", + "---\n", + "\n", "Below is a piece of code with numerous errors. Identify as many as possible. Try running the code and look at the error message to more quickly figure out what is wrong. When you are writing a code project, you will encounter lots of error messages, so it is good to get used to recognising them now.\n", "\n", ">```Python\n", @@ -300,8 +306,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "```Python\n", "data_points = [1.2, 5.6, 3.4, 0.5, 4.1, 3.2]\n", @@ -348,8 +354,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "CSV Structure\n", + "
    \n", + " CSV Structure\n", "\n", "In this example, we take two lines of data and write them to a CSV file. We use a ``for`` loop with the ``range()`` function, and then write to the file the value at the index i which we are iterating through using square brackets. \n", "\n", @@ -372,8 +378,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Using zip()\n", + "
    \n", + " Using zip()\n", "\n", "We don#t have to use the range() function. In the below example, the two lists are being associated item-wise using the function ``zip()``. \n", "\n", @@ -394,8 +400,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Zip() and the unpacking operator *\n", + "
    \n", + " Zip() and the unpacking operator *\n", "\n", "If we had lots and lots of lists that we want to write to the document, both ``range()`` and ``zip()`` seem to require lots of repetitive naming of lists. However, there are ways around this. \n", "\n", @@ -447,8 +453,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Using tab\n", + "
    \n", + " Using tab\n", "\n", "Just like with commas as shown above, you can separate items using tab. The special character for this is ``\\t``.\n", "\n", @@ -473,8 +479,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Using other delimiters\n", + "
    \n", + " Using other delimiters\n", "\n", "So far, we have used pretty standard delimiters that make sense to us intuitively, such as commas, spaces, tabs, or semicolons. But this does not have to be the case. You can use anything as a delimiter. You could use a certain word, a combination of letters and numbers, or other symbols. In the example below the string \"&#&#\" has been used as a delimiter. Although it looks strange, you could still read this file just as easily as using a tab, space, or comma, by writing ``.split(\"&#&#\")``.\n", "\n", @@ -497,9 +503,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Read, transform, write \n", - "
    \n", + "
    \n", + "
    Exercise: Read, transform, write \n", + "\n", + "---\n", + "\n", "You have 3 columns of random background data in the file \"measurements_2.csv\". After calibrating your instrument, you have realised that every data point needs to be increased by 4.35. Write a piece of code that reads the file, adds 4.35 to every item, and writes the new data into a new CSV file. Use ``zip()`` and the unpacking operator.\n", "\n", "Hint: When tackling an open-ended question like this, break the problem into chunks and do not get overwhelmed by the overall problem. Start with reading the file and storing the data, remembering that if we want to use the unpacking operator later on, we want to store the data in a nested list. \n", @@ -514,8 +522,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "This is one way of solving this problem. If you have used another way and it works, that's great!\n", "\n", @@ -618,11 +626,15 @@ "\n", "Ideal gas equation:\n", "\n", - "$V = \\frac{nRT}{p}$\n", - "\n", - "
    \n", - "\n", - "
    Click to view answer\n", + "$V = \\frac{nRT}{p}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Click to view answer\n", "\n", "```Python\n", "pressure_kPa = [1.00, 10.00, 50.00, 100.00] # kPa\n", @@ -662,9 +674,15 @@ "200.00 kPa
    \n", "500.00 kPa
    \n", "1000.00 kPa
    \n", - "5000.00 kPa
    \n", - "\n", - "
    Click here to view answer\n", + "5000.00 kPa
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Click to view answer\n", "\n", "This code is very similar to the one above. The only changes are changing ``\"w\"`` to ``\"a\"`` when opening our file, and removing the line inserting a header.\n", "\n", @@ -707,9 +725,15 @@ "source": [ "### Question 3\n", "\n", - "We have the coordinates of two hydrogen atoms in an XYZ file called \"hydrogen_atoms.xy\". Translate these coordinates +10 Angstroms in the x direction, -5 Angstroms in the y direction, and +1 Angstrom in the z direction. Then, create a new XYZ file to store the translated coordinates. Make sure it is stored in an XYZ format!\n", - "\n", - "
    Click here to view an answer\n", + "We have the coordinates of two hydrogen atoms in an XYZ file called \"hydrogen_atoms.xy\". Translate these coordinates +10 Angstroms in the x direction, -5 Angstroms in the y direction, and +1 Angstrom in the z direction. Then, create a new XYZ file to store the translated coordinates. Make sure it is stored in an XYZ format!\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Click here to view an answer\n", "\n", "```Python\n", "atoms = []\n", diff --git a/lessons/formatting_guide.md b/lessons/formatting_guide.md new file mode 100644 index 0000000..c545603 --- /dev/null +++ b/lessons/formatting_guide.md @@ -0,0 +1,140 @@ +# Formatting Guide +All of the following formatting works in BOTH raw Jupyter Book ipynb and as a built website. + +## Built-in Jupyter Books formatting + +Hashtags # dictate header levels. The more hashtags, the lower the header level. +Single asterisk * makes text *italic* +Double asterisk ** makes text **bold** +Ticks ` ` Makes text into code `code` +Three dashes --- on their own line inserts a line break +Single dollar signs $ $ makes things into $ maths\ using\ latex $ +Double dollar signs $$ $$ on a new line place the maths block into the centre +Tables are written by separating with | and headers separated with ---- + |Header 1 | Header 2 | Header 3 | + | ----- | ----- | ----- | + | Row 1 | Row 1 | Row 1 | + | Row 2 || Row 2 | Row 2 | +- Bullet points are written using - +1. Numbered lists written using 1., 2., etc + + + + +## Code + +```Python +All code between these ticks +Is formatted like Python code +var = "hello" +This has a transparent background +``` + +`Inline monospaced code can be written with a single tick` This has a dark highlighted background. ```Multiple ticks are the same``` + +>```Python +>Python formatted code with a dark background +>Can be written with three ticks and 'Python' on the first line +>And arrows > before every line + + + + +## Images + +Built-in Jupyter method: + ![Optional description of image. Image must include directory if in a folder](logo.png). Cannot adjust size. + +HTML method (allows for image sizing): + fishy + +The tag only takes +- src (soure location of image, filepath if not in same directory), +- alt (alternate text for an image), +- width (width in pixels), +- height (height in pixels), and +- class (further styles for the image, defined with CSS) attributes. Anything further requires a class (example below, defined using ). + + + + + +## Maths + +Written in LaTex inbetween $ signs. Double dollar signs $$ $$ create centred maths. +- \theta for a symbol +- \ to insert a small space +- \frac{}{} to insert a fraction, with the numerator in the first brackets and denominator in the second + + + + +## Clear examples menu + +
    + Title + +Content + +```Python +Code + +More code +``` + +Content. ``Inline code`` + +

    + + + + +## Green exercise box + +
    +
    Exercise: Write some code for... + +--- + +Question content. Question content. Question content. + +Question content. Question content. Question content. + +Useful information: + +$equation\ in\ latex$ + +The ``math`` function for $sin^-1$ is: ``asin()``. + +Hint: Here is a hint. + +
    +
    + + + + +## Answers box + +
    + Click to view answer + +Answer explanation, potentially. + +Can add a line break if you want. +--- +```Python +import answer + +Code answer. +This might be quite long. + +it is auto-for-matted +``` + +More answer explanation, potentially. ``inline code``. inline code inline code or print in a different style. + +

    \ No newline at end of file diff --git a/lessons/loops_functions/For_Loop_Lesson.ipynb b/lessons/loops_functions/For_Loop_Lesson.ipynb index 72ff864..c7352a2 100644 --- a/lessons/loops_functions/For_Loop_Lesson.ipynb +++ b/lessons/loops_functions/For_Loop_Lesson.ipynb @@ -100,8 +100,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Iterating to perform many maths operations\n", + "
    \n", + " Iterating to perform many maths operations\n", "\n", "``for`` loops can iterate through lists containing both strings and numbers. When iterating through lists of floats or integers, you can then perform maths operations on each item. You could then append it to a new list to use later.\n", "\n", @@ -136,8 +136,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Iterating through a string\n", + "
    \n", + " Iterating through a string\n", "\n", "``for`` loops can also iterate over items in a string.\n", "\n", @@ -157,8 +157,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Iterating using nested lists\n", + "
    \n", + " Iterating using nested lists\n", "\n", "You can also iterate over nested lists, however it is important to keep in mind that the nested list itself is the item you are referring to. You can refer to items within the nested list by using square brackets. Try out this code:\n", "\n", @@ -182,8 +182,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Combining loops and conditional statements\n", + "
    \n", + " Combining loops and conditional statements\n", "\n", "You can test a condition by using an `if` statement within your ``for`` loop. For example, to find outliers in your data.\n", "\n", @@ -211,11 +211,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "
    Task 1: Write a basic loop \n", - "
    \n", + "
    \n", + "
    Task 1: Write a basic loop \n", + "\n", + "---\n", "\n", - " Write a code that prints out each item in the following list, using a ``for`` loop. Then answer the following True/False questions.\n", + "Write a code that prints out each item in the following list, using a ``for`` loop. Then answer the following True/False questions.\n", "\n", " gas_list = ['Nitrogen', 'Oxygen', 'Fluorine'] \n", "\n", @@ -230,8 +231,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "Here is an example of the code you should have written:\n", "\n", @@ -251,9 +252,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "
    Task 2: Understanding a Loop \n", - "
    \n", + "
    \n", + "
    Task 2: Understanding a Loop \n", + "\n", + "---\n", + "\n", "In the lab you are making methyl benzoate using the scheme below, starting with 3 g of benzoic acid. Five scientists repeat the reaction, and get the following yields of product: \n", "\n", "2.5 g, 2.7 g, 3.1 g, 1.6 g, 4 g. \n", @@ -272,8 +275,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", ">```Python\n", ">product_mass_list = [2.5,2.7,3.1,1.6,4]\n", @@ -298,9 +301,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "
    Task 3: Understanding a Loop \n", - "
    \n", + "
    \n", + "
    Task 3: Understanding a Loop \n", + "\n", + "---\n", + "\n", "You have a series of temperature measurements from your reaction in degrees C and you want to print all of them out in Kelvin. One of your colleagues writes some code but it doesn't seem to be working. Can you identify the problem and fix the code?\n", "\n", ">```Python\n", @@ -323,8 +328,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "Remember that the items that you want to do each time you go around the for loop need to be indented. In the example the print statement is not indented and so is not executed each time, but only one the loop is finished. You can fix the code just by indenting the print statement with the tab key.\n", ">```Python\n", @@ -394,15 +399,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Examples using zip and enumerate" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Zipping a list and a nested list\n", + "
    \n", + " Zipping a list and a nested list\n", "\n", "The ``zip()`` function takes two or more lists and associates them element-wise with each other, assigning a temporary variable name to each item as it does so. In this way, we can access two lists and their contents at the same time. It is important that the two lists have the same number of entries, or this will not work.\n", "\n", @@ -430,8 +428,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Zipping more than 2 lists\n", + "
    \n", + " Zipping more than 2 lists\n", "\n", "You can zip more than just two lists together. Copy out and run this code:\n", "\n", @@ -452,8 +450,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Using enumerate to find a list index\n", + "
    \n", + " Using enumerate to find a list index\n", "\n", "You have a very long list of amino acids, and you want to find the position of the amino acid \"Proline\".\n", "\n", @@ -477,9 +475,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Compare near-identical lists \n", - "
    \n", + "
    \n", + "
    Exercise: Compare near-identical lists \n", + "\n", + "---\n", + "\n", "Two minerals in the same series have very similar formulas. Write a program to compare the two and identify where they differ. Also identify the index at which they differ.\n", "\n", "```Python\n", @@ -496,8 +496,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "You can do this by first zipping the two lists to compare element-wise, then appending both elements to another list in order to find the discrepancy. It is pretty obvious when using fairly short lists of strings, but imagine if you were using huge arrays of numbers - it would take a lot longer playing spot-the-difference with that!\n", "\n", @@ -569,8 +569,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Predicting range() output\n", + "
    \n", + " Predicting range() output\n", "\n", "Write out and run the following for loops. Make sure to look at what number it starts and ends at.\n", "\n", @@ -610,8 +610,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Creating a list using loops\n", + "
    \n", + " Creating a list using loops\n", "\n", "If you want to quickly create a list containing lots of numbers, you could use a ``for`` loop. In the following example, I am creating a list of the values of ml, the magnetic quantum number, for an f orbital. This takes values of -2 to 2.\n", "\n", @@ -632,8 +632,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Iterating the length of a list using len()\n", + "
    \n", + " Iterating the length of a list using len()\n", "\n", "You can use the built-in Python function ``len()`` to find the length of a list. You could then iterate for the length of the list.\n", "\n", @@ -656,8 +656,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Creating an empty nested list\n", + "
    \n", + " Creating an empty nested list\n", "\n", "In one of my projects I would like to create a list of empty coordinates to use later. I want the coordinate [0,0,0] repeated 1000 times. Instead of writing it out manually, I use a ``for`` loop. Copy out and run this code. Check the correct number of coordinates are being outputted, then change it to create a list of 1000 empty coordinates.\n", "\n", @@ -685,9 +685,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Task 1: Correct the error \n", - "
    \n", + "
    \n", + "
    Exercise: Task 1: Correct the error \n", + "\n", + "---\n", + "\n", "Try the following for loops. They will return an error, try to figure out why.\n", "\n", ">```Python\n", @@ -707,8 +709,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "The first example will not return any output, as it does not know it needs to count down. Add the number '-1' separated by a comma to the 'range()' function to correct it.\n", "\n", @@ -721,9 +723,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: List certain elements using ``range`` \n", - "
    \n", + "
    \n", + "
    Exercise: List certain elements using ``range`` \n", + "\n", + "---\n", + "\n", "In the neutral state, elements higher than Lanthanum (atomic number = 57) contain filled or partially-filled f orbitals. Quickly create a list of atomic numbers of all elements (up to and including Nobelium at 102) of elements containing f electrons. \n", "\n", "\n", @@ -734,8 +738,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "
    \n", "\n", @@ -783,8 +787,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Exhaustive multiplication - combining every item with every other item\n", + "
    \n", + " Exhaustive multiplication - combining every item with every other item\n", "\n", "Below is a piece of code with two lists. Every number in the first list is multiplied by every value in the second, exhausting every possibility. This is one of the easiest ways to visualise a nested ``for`` loop.\n", "\n", @@ -808,8 +812,8 @@ "metadata": {}, "source": [ "\n", - "
    \n", - "Identifying items repeated in two lists\n", + "
    \n", + " Identifying items repeated in two lists\n", "\n", "You have two lists and want to make sure than none are repeated from one list to the other. You could use nested lists to check every combination of th two lists.\n", "\n", @@ -832,8 +836,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Creating a list of coordinates\n", + "
    \n", + " Creating a list of coordinates\n", "\n", "Create a list of 2-dimensional coordinates for every point in a grid running from x = o to x = 2 and from y = 0 to y = 4.\n", "\n", @@ -900,8 +904,8 @@ "\n", "Run the two sets of code below and compare them.\n", "\n", - "#### ``continue``\n", ">```Python\n", + "># Continue\n", ">molecs = [\"H2O\", \"HCN\", \"CO2\", \"NH3\", \"CH3\"]\n", ">\n", ">for formula in molecs:\n", @@ -913,8 +917,8 @@ "\n", "
    \n", "\n", - "#### ``break``\n", ">```Python\n", + "># Break\n", ">molecs = [\"H2O\", \"HCN\", \"CO2\", \"NH3\", \"CH3\"]\n", ">\n", ">for formula in molecs:\n", @@ -924,7 +928,6 @@ ">\n", ">print(\"This represents the rest of the code continuing\")\n", "\n", - "\n", "
    \n", "\n", "In the ``continue`` statement, \"CO2\" is not printed, as the loop has already restarted onto the next iteration, which is to print \"NH3\". \n", @@ -936,8 +939,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Using continue\n", + "
    \n", + " Using continue\n", "\n", "To retrieve only molecules containing oxygen, this code uses a ``continue`` statement. \n", "\n", @@ -964,8 +967,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "Using break\n", + "
    \n", + " Using break\n", "\n", "To retrieve onlyt the first molecule that contains an oxygen atom, this code uses ``break``.\n", "\n", @@ -1010,9 +1013,15 @@ "h = 6.626e-34 # m^2kgs^-1\n", "c = 3.00e8 # ms^-1\n", "workfunction = 1.017e-18 # J\n", - "```\n", - "\n", - "
    Click to view an answer \n", + "```\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Click to view answer\n", "\n", "Remember that there could be multiple ways to appraoch the same question. Below is one solution.\n", "\n", @@ -1032,14 +1041,14 @@ "\n", "The output of this code is a bit difficult to read. Perhaps you could try instead appending to a list of wavelengths that do release an electron and a list of wavelengths that do not release an electron.\n", "\n", - "
    " + "

    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Qeustion 2\n", + "### Question 2\n", "\n", "Some IR data has been retrieved after a lab. Every peak retrieved by the system has been saved as a list of wavelengths (in cm-1) and a separate list of corresponding transmittance. \n", "\n", @@ -1050,9 +1059,15 @@ "```Python\n", "peak_shift = [3542.63, 3497.12, 3077.12, 3002.03, 2930.46, 2925.47, 2919.60, 2740.36, 1730.00, 1715.89, 1710.20, 1705.23, 1700.458, 1599.30, 1434.42, 1109.34, 808.34, 550.02, 428.43] # cm-1\n", "peak_transmittance = [66, 73, 41, 57, 95, 96, 97, 70, 38, 35, 97.2, 95.9, 96.1, 50, 59, 97.8, 99.0, 74, 66.0] # %\n", - "```\n", - "\n", - "
    Click here to view answer \n", + "```\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Click to view answer\n", "\n", "This is the perfect opportunity to use ``zip()``. Do not worry if your code looks a bit different.\n", "\n", @@ -1079,7 +1094,7 @@ "\n", "Try out this code. Does the output of this code match yours? This is another example of using logic operators in our answer.\n", "\n", - "
    " + "

    " ] }, { @@ -1129,7 +1144,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.9" + "version": "3.12.3" } }, "nbformat": 4, diff --git a/lessons/loops_functions/PyinC_while_loops_WIP.ipynb b/lessons/loops_functions/PyinC_while_loops_WIP.ipynb index f1529c6..9a54fd1 100644 --- a/lessons/loops_functions/PyinC_while_loops_WIP.ipynb +++ b/lessons/loops_functions/PyinC_while_loops_WIP.ipynb @@ -150,9 +150,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Incorrect password. 2 attempts left.\n", + "Incorrect password. 1 attempts left.\n", + "Too many failed attempts.\n" + ] + } + ], "source": [ "# Password example\n", "\n", diff --git a/lessons/loops_functions/conditional_statements.ipynb b/lessons/loops_functions/conditional_statements.ipynb index 29e665f..1b1221d 100644 --- a/lessons/loops_functions/conditional_statements.ipynb +++ b/lessons/loops_functions/conditional_statements.ipynb @@ -62,8 +62,8 @@ "id": "e0dbebd5", "metadata": {}, "source": [ - "
    \n", - "Using if \n", + "
    \n", + " Using if \n", "\n", "One way we can use `if` statements is in conjuction with comparisons. \n", "\n", @@ -93,9 +93,11 @@ "id": "2d12b05b", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Write a simple 'if' statement \n", - "
    \n", + "
    \n", + "
    Exercise: Write a simple 'if' statement \n", + "\n", + "---\n", + "\n", "A nickel surface has workfunction 5.08 eV. If an electron incident on the surface has energy greater or equal to this energy, an electron will be liberated from the surface. Write a conditional ('if') statement to test if a photon of energy 6.17 eV will liberate an electron, and print the energy,\n", "\n", "
    \n", @@ -107,8 +109,8 @@ "id": "76e675f7", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "```Python\n", "workfunction_Ni = 5.08 # eV\n", @@ -164,8 +166,8 @@ "id": "ee23bb99", "metadata": {}, "source": [ - "
    \n", - "Using if...else...\n", + "
    \n", + " Using if...else...\n", "\n", "We can use if...else... when we have only two outcomes we want to test. \n", "\n", @@ -185,8 +187,8 @@ "id": "ecba019b", "metadata": {}, "source": [ - "
    \n", - "Understanding if...elif...else... logic\n", + "
    \n", + " Understanding if...elif...else... logic\n", "\n", "When writing 'if...elif...' statements, it is important to remember that once a conditional statement has returned true, no further elif or else statements will be tested. \n", "\n", @@ -218,9 +220,11 @@ "id": "1eac36c7", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Predict if...elif...else logic \n", - "
    \n", + "
    \n", + "
    Exercise: Predict if...elif...else logic \n", + "\n", + "---\n", + "\n", "Look at each of the code snippets below and for each, predict which print() statements will execute. Write them our yourself and check you were correct.\n", "\n", "a)\n", @@ -264,8 +268,8 @@ "id": "e8acc105", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "a) Only the first print() statement is executed. Even though the `elif` statement is also True, this is not executed because the first condition has already been met. \n", "\n", @@ -317,8 +321,8 @@ "id": "71574d59", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "```Python\n", "peak_frequency = 3200 # cm-1\n", @@ -364,8 +368,8 @@ "id": "c210ea26", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "Below is a possible answer. Note that since this is done from superacid upwards, the first `elif` statement does not need the addition of ``elif pH > 0 and pH < 7:``, since it will only run if `pH <= 0` is False. However, if you were working from base downwards, you would have to specify that pH must be both larger than 0 and smaller than 7 to be marked as acidic.\n", "\n", diff --git a/lessons/loops_functions/functions_and_scope.ipynb b/lessons/loops_functions/functions_and_scope.ipynb index 66685f2..7565634 100644 --- a/lessons/loops_functions/functions_and_scope.ipynb +++ b/lessons/loops_functions/functions_and_scope.ipynb @@ -91,9 +91,6 @@ "- ``return`` indicates the end of the function, and must be one indent away from the margin (unless it is nested within another statement - more on that later). The real meaning of ``return`` is that the variable which comes after it (in this case, ``an_output``) is what the function will spit out at the end. In reality, this means you could have a ``return`` statement halfway down your function.\n", "- ``an_output`` is what the function will return at the end of its process. You can have multiple outputs (discussed later) separated by commas. \n", "\n", - "\n", - "### Example\n", - "\n", "Using this syntax, we will now turn the above code for adding masses into a function. \n", "\n", "```Python\n", @@ -169,7 +166,10 @@ "id": "49ccc08e", "metadata": {}, "source": [ - "
    Practice Question \n", + "
    \n", + "
    Exercise: Write a function to convert units \n", + "\n", + "---\n", "\n", "Write a function that will convert eV to J by multiplying by 1.602×10-19. Do this for:\n", "\n", @@ -181,9 +181,17 @@ "\n", " 2.2. Print each item in the list on a new line. Include units. \n", "\n", - "
    \n", - "\n", - "
    Click here to view answer for Part 1 \n", + "
    \n", + "

    " + ] + }, + { + "cell_type": "markdown", + "id": "64cc781b", + "metadata": {}, + "source": [ + "
    \n", + " Click to view answer for Part 1\n", "\n", "In part 1, we are creating a function to take a single variable as an argument and return a single variable. \n", "\n", @@ -200,10 +208,16 @@ "\n", "Instead of creating another variable to describe the new value in J, this piece of code executes the function within a ``print()`` statement. If we wanted to use this value again later, it would be better to store it in a relevantly named variable.\n", "\n", - "
    \n", - "
    \n", - "\n", - "
    Click here to view answer for Part 2 \n", + "

    " + ] + }, + { + "cell_type": "markdown", + "id": "14b129da", + "metadata": {}, + "source": [ + "
    \n", + " Click to view answer for Part 2\n", "\n", "In Part 2, we need to take the program we wrote above, and convert it to take a list as an argument, and also return a list.\n", "\n", @@ -231,7 +245,7 @@ "\n", "Try both. Although lists are better to use throughout the rest of a program, it is easier to look at when they have a new value on each line. \n", "\n", - "
    " + "

    " ] }, { @@ -350,8 +364,8 @@ "id": "3a226cf5", "metadata": {}, "source": [ - "
    \n", - "Returning multiple outputs\n", + "
    \n", + " Returning multiple outputs\n", "\n", "So far, our functions have only returned one variable. However, it is possible to return multiple values. \n", "\n", @@ -399,8 +413,8 @@ "id": "1893bde5", "metadata": {}, "source": [ - "
    \n", - "Using multiple return statements\n", + "
    \n", + " Using multiple return statements\n", "\n", "So far, all our functions have had one ``return`` statement, right at the end, but this is not a requirement. A function can have a return statement anywhere, and it can have more than one. This is usually encountered when functions contain if statements, where depending on whether the conditions are met, different sections of the function may execute. \n", "\n", @@ -432,9 +446,11 @@ "id": "1961efb0", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Returning two values \n", - "
    \n", + "
    \n", + "
    Exercise: Returning two values \n", + "\n", + "---\n", + "\n", "From a list of wavelengths, return the energy in J and the energy in eV in separate lists.\n", "\n", "$ E = \\frac{hc}{\\lambda} $\n", @@ -450,8 +466,8 @@ "id": "f22eb8bd", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", ">```Python\n", ">def energy_calc(wavelengths):\n", @@ -517,8 +533,8 @@ "id": "5ff6d78c", "metadata": {}, "source": [ - "
    \n", - "Positional Arguments\n", + "
    \n", + " Positional Arguments\n", "\n", "But be careful! The arguments you see above are called positional arguments, ``arg``, and the order in which you list them when you call your function matters! \n", "\n", @@ -541,8 +557,8 @@ "metadata": {}, "source": [ "\n", - "
    \n", - "Keyword Arguments\n", + "
    \n", + " Keyword Arguments\n", "\n", "A keyword argument, or ``kwarg`` is the alternative to positional arguments, and do not have to be called in a specific order. Instead, they are identifiable by a specific name which can be referenced when you call your function. \n", "\n", @@ -576,8 +592,8 @@ "id": "fb0c93f4", "metadata": {}, "source": [ - "
    \n", - "Positional-only arguments, ``, /``, and keyword-only arguments, ``* ,``\n", + "
    \n", + " Positional-only arguments, ``, /``, and keyword-only arguments, ``* ,``\n", "\n", "In the sections about positional and keyword arguments above, there is nothing in the function line itself that describes whether the arguments are positional or keyword. The way in which you call the function (and the order) is what defines it. In the first example, we treated both as positional, but in the second we treated both as keyword. \n", "\n", @@ -620,8 +636,8 @@ "id": "43dad2f7", "metadata": {}, "source": [ - "
    \n", - "Default/Optional Arguments\n", + "
    \n", + " Default/Optional Arguments\n", "\n", "Default arguments are keyword arguments whose values are assigned within the function. They are often also referred to as optional arguments. You set it by adding ``= value`` to the end of the argument in your function. This means that even if your function takes two arguments, if one is a default argument, you only need to call one, the other will take the default value, and you won't receive an error.\n", "\n", @@ -666,9 +682,11 @@ "id": "fdb290c9", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Using positional and keyword arguments \n", - "
    \n", + "
    \n", + "
    Exercise: Using positional and keyword arguments \n", + "\n", + "---\n", + "\n", "The cosine rule allows you to find the length of one side of a triangle, c, when you know the lengths of the other two sides, a and b, and one angle, $\\theta$. \n", "\n", "$ c = \\sqrt{a^2 + b^2 - 2ab cos(\\theta)} $\n", @@ -688,8 +706,8 @@ "id": "2dc6e4a2", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "Here is a potential answer. \n", "\n", @@ -714,9 +732,11 @@ "id": "5739b8a2", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Using a default argument \n", - "
    \n", + "
    \n", + "
    Exercise: Using a default argument \n", + "\n", + "---\n", + "\n", "Write a function which will output an atomic velocity from its mass and temperature. Set the default temperature to be 20°C. Use the relationship: \n", "\n", "$v = \\sqrt{\\frac{3k_bT}{m}} $\n", @@ -734,8 +754,8 @@ "id": "c0ec0856", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", ">```Python\n", ">def molecule_velocity(mass, temperature=20):\n", @@ -774,8 +794,8 @@ "id": "60b2325b", "metadata": {}, "source": [ - "
    \n", - "Arbitrary positional arguments: ``*args``\n", + "
    \n", + " Arbitrary positional arguments: ``*args``\n", "\n", "Up until this point, the number of arguments passed into the function has been fixed. Whether positional, keyword, or default, the function will only accept a certain number of arguments. But what if we do not know how many arguments we will need in advance? We can use arbitrary positional arguments ``*args`` and arbitrary keyword arguments ``**kwargs``. Note single asterisk for positional arguments and double asterisk for keyword arguments. This is defined in the function:\n", "\n", @@ -811,8 +831,8 @@ "id": "147d2fcd", "metadata": {}, "source": [ - "
    \n", - "Arbitrary keyword arguments: ``**kwargs``\n", + "
    \n", + " Arbitrary keyword arguments: ``**kwargs``\n", "\n", "Arbitrary keyword arguments are a bit more complicated than ``*args``, so feel free to skip this bit if you are a complete beginner. You can always come back later.\n", "\n", @@ -850,8 +870,8 @@ "id": "b42b4be6", "metadata": {}, "source": [ - "
    \n", - "Using the unpacking operator, *, when calling a function\n", + "
    \n", + " Using the unpacking operator, *, when calling a function\n", "\n", "The single asterisk operator `*` can be used on any iterable that Python provides (lists, tuples, strings, etc.), while the double asterisk operator, `**`, can only be used on dictionaries. When placed just before an iterable, `*` unpacks the items within the iterable to be separate objects. \n", "\n", @@ -1026,9 +1046,11 @@ "id": "17325532", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Write a docstring for a given function \n", - "
    \n", + "
    \n", + "
    Exercise: Write a docstring for a given function \n", + "\n", + "---\n", + "\n", "The following function takes a value of wavelength and converts it into energy in Joules and energy in eV using the equation $ E = \\frac{h \\ c}{\\lambda} $. Write a docstring for this function. \n", "\n", ">```Python\n", @@ -1059,8 +1081,8 @@ "id": "2d4ac768", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "\n", "\n", @@ -1129,8 +1151,8 @@ "id": "79c80e22", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "```Python\n", "def is_even(num):\n", @@ -1162,8 +1184,8 @@ "id": "9f7a2c5a", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "```Python\n", "def keep_evens(num_list):\n", @@ -1207,8 +1229,8 @@ "id": "6f470616", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "```Python\n", "atom_masses = {\n", @@ -1256,8 +1278,8 @@ "id": "ed462f17", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "```Python\n", "def say_hello():\n", @@ -1295,8 +1317,8 @@ "id": "f4126a6f", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "When thinking about writing a piece of code, it is important to break it down into simple chunks that you can get your mind around. How you achieve each block is not yet in consideration. For example, with this code, you might write. \n", "\n", @@ -1373,8 +1395,8 @@ "id": "7ac65955", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "```Python\n", "raw_data_Py = [\n", diff --git a/lessons/loops_functions/tut_import_mod.ipynb b/lessons/loops_functions/tut_import_mod.ipynb index 5ec97c4..4867aca 100644 --- a/lessons/loops_functions/tut_import_mod.ipynb +++ b/lessons/loops_functions/tut_import_mod.ipynb @@ -24,12 +24,73 @@ }, { "cell_type": "markdown", - "id": "1ef7b1b3", + "id": "4703b507", + "metadata": {}, + "source": [ + "## Learning Outcomes" + ] + }, + { + "cell_type": "markdown", + "id": "e8948a40", + "metadata": {}, + "source": [ + "- Importing a function\n", + "- Importing a module\n", + "- Importing a library" + ] + }, + { + "cell_type": "markdown", + "id": "e561f0bb", + "metadata": {}, + "source": [ + "## What are modules and libraries?" + ] + }, + { + "cell_type": "markdown", + "id": "21a29d39", "metadata": {}, "source": [ + "A module is a file consisting of Python code. A library is a collection of modules. \n", "\n", - "## Learning Outcomes\n", - " How to import external libraries into your code\n", + "Modules can define functions, variables, and classes, and can include runable code. Any Python file can be referenced as a module. \n", + "\n", + "This is extremely useful, as it means you do not have to write out complex functions in your program itself. You can store them externally, and just import them for use in your program. " + ] + }, + { + "cell_type": "markdown", + "id": "c465b64d", + "metadata": {}, + "source": [ + "## Accessing a module or library" + ] + }, + { + "cell_type": "markdown", + "id": "6ba6434e", + "metadata": {}, + "source": [ + "In order for your program to be able to access a module or library, they must be in a location that it can access. \n", + "\n", + "Built-in modules." + ] + }, + { + "cell_type": "markdown", + "id": "32cf2fd2", + "metadata": {}, + "source": [ + "## Importing a module or library" + ] + }, + { + "cell_type": "markdown", + "id": "1ef7b1b3", + "metadata": {}, + "source": [ "\n", "\n", "Sometimes, we wish to use prewritten libraries. For example the numpy libraries for data analysis. To do this we use the import command\n", @@ -57,7 +118,23 @@ " a = math.sqrt(4)\n", "\n", "\n", - "```\n", + "```\n" + ] + }, + { + "cell_type": "markdown", + "id": "ab496835", + "metadata": {}, + "source": [ + "## Using aliases" + ] + }, + { + "cell_type": "markdown", + "id": "44a0aa27", + "metadata": {}, + "source": [ + "## Using import *\n", "\n", "in some tutorials it will be suggested you use the \n", "```python \n", diff --git a/lessons/solving_problems/style-and-comments.ipynb b/lessons/solving_problems/style-and-comments.ipynb index fd23b63..ee4789a 100644 --- a/lessons/solving_problems/style-and-comments.ipynb +++ b/lessons/solving_problems/style-and-comments.ipynb @@ -13,7 +13,10 @@ "id": "dddb4951", "metadata": {}, "source": [ - "A foolish consistency is the hobgoblin of little minds " + "\"A foolish consistency is the hobgoblin of little minds\" \n", + " - Ralph Waldo Emerson \n", + "\n", + "In other words: Following the style guide is important for readability in your code, but you need to know when to be inconsistent and break the style guide - sometimes the style guide doesn't apply, and you need to use your best judgement in those cases. If applying the style guide makes your code less readable, you should break it. " ] }, { @@ -75,7 +78,9 @@ "- Clear and understandable to other speakers of the language\n", "- Write in English unless you are certain it will never be read by speakers of any other language than its written in\n", "\n", - "\n" + "Different ways of writing them. \n", + "- NumPy vs other ways\n", + "- Extensions\n" ] }, { @@ -151,6 +156,23 @@ "- Either all return statements should return something or none should. If even one return statement returns an object, any empty return statements should explicitly read `return None`." ] }, + { + "cell_type": "markdown", + "id": "c40ff1fd", + "metadata": {}, + "source": [ + "## Scientific Programming" + ] + }, + { + "cell_type": "markdown", + "id": "3972c683", + "metadata": {}, + "source": [ + "- Units\n", + "- " + ] + }, { "cell_type": "markdown", "id": "1458111d", diff --git a/lessons/variables/Comparisons.ipynb b/lessons/variables/Comparisons.ipynb index 15f9707..aa38a78 100644 --- a/lessons/variables/Comparisons.ipynb +++ b/lessons/variables/Comparisons.ipynb @@ -101,8 +101,8 @@ "id": "a84760ed", "metadata": {}, "source": [ - "
    \n", - "Comparing numbers: floats and integers\n", + "
    \n", + " Comparing numbers: floats and integers\n", "\n", "The most basic use for comparisons is numerically, using integers or floats. You can compare integer data types with float data types, but not with strings. \n", "\n", @@ -148,8 +148,8 @@ "id": "cf5fa523", "metadata": {}, "source": [ - "
    \n", - "Comparing other data types: strings and lists\n", + "
    \n", + " Comparing other data types: strings and lists\n", "\n", "As well as comparing numbers, you can use comparison operators on strings and lists.\n", "\n", @@ -190,8 +190,8 @@ "id": "c42c319f-594f-47a2-bb2f-535840c1ed80", "metadata": {}, "source": [ - "
    \n", - "Comparing different data types\n", + "
    \n", + " Comparing different data types\n", "\n", "Most different data types, even if they have the same contents, will always yield a ``==`` comparison of False. An exception is floats and integers, which can be compared.\n", "\n", @@ -214,8 +214,8 @@ "id": "71222469", "metadata": {}, "source": [ - "
    \n", - "Identifying identical objects using is\n", + "
    \n", + " Identifying identical objects using is\n", "\n", "The comparitor `==` identifies if two objects have the same contents (in the same order), but what if we wanted to distinguish if they are alsso exactly the same object (i.e. rather than just looking the same, they are actually the same 'behind the scenes')? For this, we can use ```is```:\n", "\n", @@ -242,8 +242,8 @@ "id": "d4dfcd32", "metadata": {}, "source": [ - "
    \n", - "Finding contents using in\n", + "
    \n", + " Finding contents using in\n", "\n", "``in`` has two uses - you will see it come back in another way when we do [for loops](../loops_functions/For_Loop_Lesson.ipynb). In this context, ``in`` checks if a certain object is contained within a string or list.\n", "\n", @@ -266,8 +266,8 @@ "id": "bcf9b010", "metadata": {}, "source": [ - "
    \n", - "Chaining together comparisons\n", + "
    \n", + " Chaining together comparisons\n", "\n", "You can also chain together these comparisons, but you need to be careful you don't get confused!\n", "\n", @@ -293,9 +293,11 @@ "id": "75f79025", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Obtain a True output\n", - "
    \n", + "
    \n", + "
    Exercise: Obtain a True output\n", + "\n", + "---\n", + "\n", "In the comparisons in the code below, replace each -- with different comparison operators to get a True output.

    \n", "\n", ">```Python\n", @@ -317,8 +319,8 @@ "id": "146885b4", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "```Python\n", "num_nitrogen = 7\n", @@ -341,8 +343,10 @@ "id": "bebc9cbb", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Test similarity \n", + "
    \n", + "
    Exercise: Test similarity \n", + "\n", + "---\n", "\n", "On the following two variables, use Python comparisons to test the following:\n", "\n", @@ -363,8 +367,8 @@ "id": "a67425ac", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "1. The two values are not the same. You can check this using:\n", " >```Python\n", @@ -420,8 +424,8 @@ "id": "c0b13b2c", "metadata": {}, "source": [ - "
    \n", - "Using and\n", + "
    \n", + " Using and\n", "\n", "When considering ``a and b``, where a and b are individual comparisons, a and b must both be True for the overall result to be True. \n", "\n", @@ -449,8 +453,8 @@ "id": "d954f269", "metadata": {}, "source": [ - "
    \n", - "Using or\n", + "
    \n", + " Using or\n", "\n", "When considering ``a or b``, where a and b are individual comparisons, only one of the two must be True for the whole statement to be True. If neither are True, the whole statement will be False.\n", "\n", @@ -482,8 +486,8 @@ "id": "6c93aafa", "metadata": {}, "source": [ - "
    \n", - "Using not\n", + "
    \n", + " Using not\n", "\n", "Finally, not is slightly different. It should be used before a comparison statement, i.e. (```not a == 2```), and 'inverts' the True or False behaviour. If a statement was True, `not` will make it False, or vice versa.\n", "\n", @@ -520,8 +524,8 @@ "id": "1c2b08e0-672b-46e7-b92e-ee9a35d69907", "metadata": {}, "source": [ - "
    \n", - "Understanding order of comparisons\n", + "
    \n", + " Understanding order of comparisons\n", "\n", "Watch out! Python evaluates operators according to a strict order: maths and comparison operators first, then logical operators (and, or, not). If you are getting error messages, try bracketing your 'not' and other logical operators to give them precedence. Try the following lines with and without the brackets and try to understand the order of operations.\n", "\n", @@ -540,9 +544,11 @@ "id": "ab2e19ee", "metadata": {}, "source": [ - "
    \n", - "
    Exercise: Logical outputs \n", - "
    \n", + "
    \n", + "
    Exercise: Logical outputs \n", + "\n", + "---\n", + "\n", "What is the logical output of this piece of code?\n", "

    \n", "\n", @@ -559,8 +565,8 @@ "id": "f8e5a7d6", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "The answer is True. Because each comparison is separated by `or`, only one of them has to be True for the overall output to be True. since the last comparison, `w == \"tungsten\"` is True, the overall output is True. \n", "\n", @@ -605,8 +611,8 @@ "id": "7673c9de", "metadata": {}, "source": [ - "
    \n", - " Click to view answer\n", + "
    \n", + " Click to view answer\n", "\n", "When working out logic, it is worth going through step by step. \n", "\n", diff --git a/lessons/variables/mathematical-operators.ipynb b/lessons/variables/mathematical-operators.ipynb index 4cb84e1..b7ed9d7 100644 --- a/lessons/variables/mathematical-operators.ipynb +++ b/lessons/variables/mathematical-operators.ipynb @@ -14,6 +14,7 @@ "## Learning outcomes\n", "\n", "- Develop familiarity with basic mathematical operations in Python\n", + "- Understand the consequences of doing maths on non-numerical data types\n", "- Understand how to access some additional, more complex mathematical operations\n", "\n", "## Prerequisites\n", @@ -56,37 +57,41 @@ "\n", "A single line of code may have many mathematical operations. In this event, Python will follow the standard order of operations for mathematical operations: you might know this as [BODMAS](https://en.wikipedia.org/wiki/Order_of_operations#Mnemonics). Use round brackets \"()\" in your sum to avoid ambiguity.\n", "\n", - "Maths can be done both with types numbers and with variable names, as long as the variable is of the correct type (integer or float). Storing numbers as variables becomes extremely useful when they are being used often, and when they are needed to a large number of significant figures. For example, instead of writing out π or Avogadro's number each time it is used, you can store it at the beginning and only call it by the name you have given it.\n", + "Maths can be done both with numbers and with variable names, as long as the variable is of the correct type (integer or float). Storing numbers as variables becomes extremely useful when they are being used often, and when they are needed to a large number of significant figures. For example, instead of writing out π or Avogadro's number each time it is used, you can store it at the beginning and only call it by the name you have given it.\n", "\n", - ">``` Python \n", - "> pi = 3.141592653589\n", - "> avogadro = 6.02214e23\n", - ">\n", - "> product = pi * avogadro * 4" + "``` Python \n", + "pi = 3.141592653589\n", + "avogadro = 6.02214e23\n", + "\n", + "product = pi * avogadro * 4\n", + "```\n", + "\n", + "The value of the variable `product` is now that of 3.14 × 6.022×10-23 × 4, which equals 7.567644313153783e+24 .\n", + "\n", + "Note that to represent standard form, Python uses the symbol `en` instead of ×10n." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - " Using maths in variables\n", + "
    \n", + "Using maths in variables\n", "\n", "You can do maths in a variable, which can be called inside a print statement.\n", "\n", - ">```Python\n", - "> mass_H = 1.008\n", - "> mass_O = 15.999\n", - ">\n", - "> mass_H2O = 2 * H + O\n", - "> \n", - "> print(\"The mass of water is: \" , mass_H2O) \n", + "```Python\n", + "mass_H = 1.008\n", + "mass_O = 15.999\n", "\n", + "mass_H2O = 2 * H + O\n", + "print(\"The mass of water is: \" , mass_H2O) \n", + "```\n", "\n", - "The output of this chunk of code is:
    \n", - "The mass of water is: 18.015\n", + "The output of this code is:
    \n", + "The mass of water is: 18.015\n", "\n", - "
    ☝ Note: Remember to separate objects in a print statement with commas.\n", + "Remember to separate objects in a print statement with commas.\n", "\n", "

    " ] @@ -95,20 +100,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - " Using maths inside a print() statement \n", + "
    \n", + " Using maths inside a print() statement \n", "\n", "You can do maths within the print statement.\n", "\n", - ">```Python\n", - "> mass_H = 1.008\n", - ">\n", - "> print(\"The mass of a hydrogen molecule is: \", 2 * mass_H)\n", + "```Python\n", + "mass_H = 1.008\n", + "print(\"The mass of a hydrogen molecule is: \", 2 * mass_H)\n", + "```\n", "\n", "The output of this code is:
    \n", - " The mass of a hydrogen molecule is: 2.016 \n", + " The mass of a hydrogen molecule is: 2.016 \n", "\n", - "☝ Note: The value 2.016 has been calculated, but is not stored as a variable, as in the previous example. If you wanted to do further maths with the number 2.016, it would be better to store it as a variable.\n", + "The value 2.016 has been calculated, but is not stored as a variable like it is in the previous example. If you wanted to do further maths with the number 2.016, it would be better to store it as a variable.\n", "\n", "

    " ] @@ -118,29 +123,30 @@ "metadata": {}, "source": [ "\n", - "
    \n", - " Maths in an f-string \n", + "
    \n", + " Maths in an f-string \n", "\n", "You can do maths inside f strings. Just like previously, we can store the maths inside a variable and then call it from the f string, or do the maths within the f string itself.\n", "\n", - "> ```Python\n", - "> mass_C = 12.008\n", - "> mass_H = 1.008\n", - ">\n", - "> mass_methane = mass_C + 4 * mass_H\n", - ">\n", - "> # Calling up a variable that has already been calculated\n", - "> print(f\"The mass of methane is: {mass_methane:.2f}\")\n", - ">\n", - "> # Doing maths inside an f string\n", - "> print(f\"The mass of ethane is: {2 * mass_C + 6 * mass_H:.5f}\")\n", + "```Python\n", + "mass_C = 12.008\n", + "mass_H = 1.008\n", + "mass_methane = mass_C + 4 * mass_H\n", + "\n", + "# Calling up a variable that has already been calculated\n", + "print(f\"The mass of methane is: {mass_methane:.2f}\")\n", + "\n", + "# Doing maths inside an f string\n", + "print(f\"The mass of ethane is: {2 * mass_C + 6 * mass_H:.5f}\")\n", + "```\n", "\n", "The output of this is:
    \n", - ">```\n", - ">The mass of methane is: 16.04 \n", - ">The mass of ethane is 30.06400\n", + "```text\n", + "The mass of methane is: 16.04 \n", + "The mass of ethane is 30.06400\n", + "```\n", "\n", - "☝ Note: The syntax :.5f indicates that the calculation should be given to 5 decimal places. The number can be changed to any number of desired significant figures.\n", + "The syntax :.5f indicates that the calculation should be given to 5 decimal places. The number can be changed to any number of desired significant figures.\n", "\n", "

    " ] @@ -149,9 +155,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "
    Exercise 1: Addition and Subtraction\n", - "
    \n", + "
    \n", + "
    Exercise 1: Addition and Subtraction\n", + "\n", + "---\n", + "\n", "Using variables to store the atomic masses of hydrogen, carbon, oxygen, and nitrogen, write a program to calculate the molecular masses of the following species.\n", "\n", "
      \n", @@ -176,8 +184,8 @@ "metadata": {}, "source": [ "\n", - "
      \n", - " Click to view answer\n", + "
      \n", + " Click to view answer\n", "\n", "Your code should look something like this:\n", "> ```Python\n", @@ -207,9 +215,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - "
      Exercise 2: Multiplication and Division \n", - "
      \n", + "
      \n", + "
      Exercise 2: Multiplication and Division \n", + "\n", + "---\n", + "\n", "The interaction potential between two isolated ions in water, Na+ (ionic radius = 116 pm) and Cl+ (ionic radius = 157 pm) is given by the following equation:\n", "\n", "$ V(r) = \\frac{q_{Na^+} \\ q_{Cl^+}}{4 \\ \\pi \\ \\epsilon \\ \\epsilon_{0} \\ r}\\ $\n", @@ -241,8 +251,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - " Click to view answer\n", + "
      \n", + " Click to view answer\n", "\n", "Your code should look something like this:\n", "```Python\n", @@ -271,9 +281,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - "
      Exercise 3: Exponents\n", - "
      \n", + "
      \n", + "
      Exercise 3: Exponents\n", + "\n", + "---\n", + "\n", "The equilibrium constant of an equation\n", "\n", "aA + bB β‡Œ cC + dD\n", @@ -298,8 +310,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - " Click to view answer\n", + "
      \n", + " Click to view answer\n", "\n", "You should have got the output:\n", " 7.9e4 \n", @@ -335,8 +347,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - " Error message: TypeError\n", + "
      \n", + " Error message: TypeError\n", "\n", "Many mathematical operations can only be performed on variables of the ``integer`` or ``float``, and cannot be performed on variables of the type ``string``, even if that string is a number. Often, this will result in an error message popping up when you try to run it.\n", "\n", @@ -360,8 +372,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - " String concatenation \n", + "
      \n", + " String concatenation \n", "\n", "Run the two print statements below. \n", "\n", @@ -397,9 +409,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - "
      Exercise: Maths errors \n", - "
      \n", + "
      \n", + "
      Exercise: Maths errors \n", + "\n", + "---\n", + "\n", "You are writing a program to calculate the mean of some data. Which of the below programs will result in an error, and why?\n", "\n", "a) \n", @@ -434,8 +448,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - " Click to view answer \n", + "
      \n", + " Click to view answer \n", "\n", "The answer is all three will result in error!\n", "\n", @@ -508,8 +522,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - "Importing a function from math\n", + "
      \n", + " Importing a function from math\n", "\n", "In this code, we want to import the function ``log10()`` to use when calculating pH from proton concentration using $ pH = -log_{10}[H^+]$\n", "\n", @@ -532,8 +546,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - "Importing pi and other constants\n", + "
      \n", + " Importing pi and other constants\n", "\n", "We can also import constants from ``math``, such as ``pi``, ``e``, and even ``inf``, infinity. \n", "\n", @@ -552,9 +566,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - "
      Exercise: Importing a function \n", - "
      \n", + "
      \n", + "
      Exercise: Importing a function \n", + "\n", + "---\n", + "\n", "Using the relation\n", "\n", "$ pH = -log_{10}[H^+]$\n", @@ -569,8 +585,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - " Click to view answer\n", + "
      \n", + " Click to view answer\n", "\n", "You should have got the output:\n", " 4.64 \n", @@ -610,8 +626,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - "Importing the entire 'math' module\n", + "
      \n", + " Importing the entire 'math' module\n", "\n", "For example with the module ``math``:\n", "\n", @@ -639,8 +655,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - "Importing other modules\n", + "
      \n", + " Importing other modules\n", "\n", "You can also import other modules and libraries, such as NumPy, SciPy, or MatPlotLib.pyplot. \n", "\n", @@ -653,9 +669,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - "
      Exercise: Import the module math and use multiple functions\n", - "
      \n", + "
      \n", + "
      Exercise: Import the module math and use multiple functions\n", + "\n", + "---\n", + "\n", "A right-angled triangle sits inside a circle, with its hypotenuse equal to the diameter of the circle. Write a program to calculate one of the angles, θ, of the triangle in degrees, given that the opposite edge of the triangle has length 2 cm and the circumference of the circle is 10 cm. Import the module ``math``.\n", "\n", "Useful information:\n", @@ -680,8 +698,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - " Click to view answer\n", + "
      \n", + " Click to view answer\n", "\n", "\n", "\n", @@ -730,8 +748,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - "Click to view answer
      \n", + "
      \n", + " Click to view answer
      \n", "\n", ">```Python\n", ">k_b = 1.38e-23\n", @@ -779,9 +797,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - "
      \n", - " Click to view answer
      \n", + "
      \n", + " Click to view answer
      \n", "\n", ">```Python\n", "> # Import all relevant libraries and functions at the beginning\n", @@ -851,8 +868,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - " Click to view answer
      \n", + "
      \n", + " Click to view answer
      \n", "\n", "Here is the same code with the mistakes corrected. Did you find them all or did you have to look at the answer?\n", "\n", From 880ebbfaf1128c1e8fe1d6c01df85d3060266b99 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Wed, 6 Aug 2025 17:11:08 +0100 Subject: [PATCH 36/94] argparse --- _toc.yml | 1 + lessons/common_libs/argparse.ipynb | 69 ++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 lessons/common_libs/argparse.ipynb diff --git a/_toc.yml b/_toc.yml index 8a8d564..f7d7a50 100644 --- a/_toc.yml +++ b/_toc.yml @@ -41,6 +41,7 @@ parts: - file: lessons/common_libs/Matplotlib_Documentation.ipynb - file: lessons/common_libs/Introduction_to_NumPy.ipynb - file: lessons/common_libs/NumPy_axes_operations.ipynb + - file: lessons/common_libs/argparse.ipynb - file: lessons/common_libs/intro_to_pandas.ipynb - file: lessons/advanced_libraries.md sections: diff --git a/lessons/common_libs/argparse.ipynb b/lessons/common_libs/argparse.ipynb new file mode 100644 index 0000000..afe31fc --- /dev/null +++ b/lessons/common_libs/argparse.ipynb @@ -0,0 +1,69 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "55ea9f7b", + "metadata": {}, + "source": [ + "# Argparse" + ] + }, + { + "cell_type": "markdown", + "id": "ecc867e9", + "metadata": {}, + "source": [ + "## Learning Outcomes\n", + "\n", + "- Use the argparse module to run programs from the command line" + ] + }, + { + "cell_type": "markdown", + "id": "71e8fec6", + "metadata": {}, + "source": [ + "## What is the command line?" + ] + }, + { + "cell_type": "markdown", + "id": "bf761254", + "metadata": {}, + "source": [ + "The command line is a text-based interface that allows you to communicate directly with the computer. \n", + "\n", + "Running code from the command line takes up less space than from a GUI." + ] + }, + { + "cell_type": "markdown", + "id": "6598bcf6", + "metadata": {}, + "source": [ + "## Using argparse" + ] + }, + { + "cell_type": "markdown", + "id": "c4dc6b50", + "metadata": {}, + "source": [ + "## Command line shortcuts ?" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 8cac158b919fd12cc8735372d36a9ffcc30786c7 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Thu, 7 Aug 2025 15:09:49 +0100 Subject: [PATCH 37/94] minor edits --- _toc.yml | 10 +- lessons/basics/python_introduction.ipynb | 148 ++++++- ...{notebook.md => using_jupyter_notebook.md} | 7 +- lessons/basics/write_run_python.md | 55 +-- lessons/files/data_record.csv | 200 ++++++++++ lessons/files/spectrum.txt | 4 + ...{For_Loop_Lesson.ipynb => for_loops.ipynb} | 0 ...hile_loops_WIP.ipynb => while_loops.ipynb} | 0 lessons/manipulating_variables.md | 2 +- lessons/solving_problems/command_line.ipynb | 25 ++ .../solving_problems/version_control.ipynb | 47 +++ ...ors.ipynb => mathematical_operators.ipynb} | 375 +++++++++--------- 12 files changed, 656 insertions(+), 217 deletions(-) rename lessons/basics/{notebook.md => using_jupyter_notebook.md} (99%) mode change 100755 => 100644 rename lessons/loops_functions/{For_Loop_Lesson.ipynb => for_loops.ipynb} (100%) rename lessons/loops_functions/{PyinC_while_loops_WIP.ipynb => while_loops.ipynb} (100%) create mode 100644 lessons/solving_problems/command_line.ipynb create mode 100644 lessons/solving_problems/version_control.ipynb rename lessons/variables/{mathematical-operators.ipynb => mathematical_operators.ipynb} (75%) diff --git a/_toc.yml b/_toc.yml index f7d7a50..529c0ab 100644 --- a/_toc.yml +++ b/_toc.yml @@ -9,18 +9,18 @@ parts: - file: lessons/basics/basics.md sections: - file: lessons/basics/write_run_python.md - - file: lessons/basics/notebook.md + - file: lessons/basics/using_jupyter_notebook.md - file: lessons/basics/python_introduction.ipynb - file: lessons/manipulating_variables.md sections: - file: lessons/variables/Variable_data_types.ipynb - - file: lessons/variables/mathematical-operators.ipynb + - file: lessons/variables/mathematical_operators.ipynb - file: lessons/variables/Comparisons.ipynb - file: lessons/organising_code.md sections: - file: lessons/loops_functions/conditional_statements.ipynb - - file: lessons/loops_functions/For_Loop_Lesson.ipynb - - file: lessons/loops_functions/PyinC_while_loops_WIP.ipynb + - file: lessons/loops_functions/for_loops.ipynb + - file: lessons/loops_functions/while_loops.ipynb - file: lessons/loops_functions/functions_and_scope.ipynb - file: lessons/loops_functions/tut_import_mod.ipynb - file: lessons/files.md @@ -33,6 +33,8 @@ parts: - file: lessons/solving_problems/errors.ipynb - file: lessons/solving_problems/debugging.ipynb - file: lessons/solving_problems/writing_a_program.ipynb + - file: lessons/solving_problems/version_control.ipynb + - file: lessons/solving_problems/command_line.ipynb - file: lessons/solving_problems/flowcharts.ipynb - file: lessons/solving_problems/style-and-comments.ipynb - file: lessons/common_libraries.md diff --git a/lessons/basics/python_introduction.ipynb b/lessons/basics/python_introduction.ipynb index eaf1e53..d710357 100644 --- a/lessons/basics/python_introduction.ipynb +++ b/lessons/basics/python_introduction.ipynb @@ -5,19 +5,153 @@ "id": "23173911", "metadata": {}, "source": [ - "# Introduction to Coding with Python\n", + "# Introduction to Coding with Python" + ] + }, + { + "cell_type": "markdown", + "id": "a8cf809d", + "metadata": {}, + "source": [ + "## Prerequisites" + ] + }, + { + "cell_type": "markdown", + "id": "d24f3449", + "metadata": {}, + "source": [ + "- [Writing and running a Python program](write_run_python.md)" + ] + }, + { + "cell_type": "markdown", + "id": "f7b40d83", + "metadata": {}, + "source": [ + "## What is Python" + ] + }, + { + "cell_type": "markdown", + "id": "badbe3ef", + "metadata": {}, + "source": [ + "Python is a high-level programming language. This means it is close to English, and a lot of the work being done to run the code is hidden from you as the programmer. This makes it very easy to use compared to some other languages. " + ] + }, + { + "cell_type": "markdown", + "id": "be0478b5", + "metadata": {}, + "source": [ + "## Syntax" + ] + }, + { + "cell_type": "markdown", + "id": "b42e3fd5", + "metadata": {}, + "source": [ + "- **Colours**. The majority of Python IDEs automatically highlight different kinds of Python objects for readability. Keywords, words that cannot be used as variable names (such as True, False, import, not, etc.), are highlighted in certain colours, while variable names and variable types are highlighted differently, and so on. This helps easily identify spelling errors and signpost what the code does. The specific colours depends on the IDE you use. Some of the different highlighting is shown below (in no usable order). Throughout the lessons you will learn what each word written below means and how they can be used.\n", + " ```Python\n", + " False, True\n", + " if, for, while, with, \n", + " and, or, not \n", + " import, def\n", + " print(), range(), enumerate(), zip()\n", + " float(), str(), int()\n", + " variable_1 = 23.5\n", + " variable_2 = \"this string\"\n", + " variable_3 = [1, 2, 3]\n", + " ```\n", + " Your IDE might highlight differently. \n", + "- Python is **case sensitive**, with the default being lowercase. Built-in Python functions are given in lowercase. For example, writing `PRINT(\"hello\")` instead of `print(\"hello\")` would return an error, as the function `print()` is case-sensitive, and must be given in lowercase.\n", + "\n", + "- Python uses **new lines** to complete a command. Two print statements on two separate lines will execute one after another. \n", + "- **Indented text** is an important distinction. When we move onto conditional statements and loops, the indentation defines which code belongs to which statement or loop. Therefore it is important to ensure your text is left-aligned. If you indent where Python is not expecting it, or do not indent where Python is expecting it, you will get an error message. The standard indentation is achieved using the `` key, equivalent to four spaces.\n", + "- **Speech marks** are used to define strings `\" \"` and `' '`. Double and single speech marks are equivalent. For readability, choose one and use them consistently." + ] + }, + { + "cell_type": "markdown", + "id": "3e42513c", + "metadata": {}, + "source": [ + "## Comments" + ] + }, + { + "cell_type": "markdown", + "id": "4b1858e8", + "metadata": {}, + "source": [ + "Python will attempt to execute any written text in the file. The exception to this is comments, which is used to provide context and description for any code that comes immediately after it. You indicate that a line is a comment using a hash `#`.\n", + "\n", + "```Python\n", + "# This is a comment line\n", + "\n", + "# This is a print statement\n", + "print(\"hello world\")\n", + "```\n", + "\n", + "You can also add comments at the end of a line. Use these sparingly, but they are very useful to define units. \n", + "\n", + "```Python\n", + "pressure = 12 # Pa\n", + "```\n", + "\n", + "If you need to give a little more description, you can use a block comment, defined using speech marks above and below the comment.\n", + "\n", + "```Python\n", + "\"\"\"\n", + "Calculate the mean. \n", + "Calculate the standard deviation.\n", + "Output a Gaussian curve.\n", + "\"\"\"\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "fbc6dd40", + "metadata": {}, + "source": [ + "## File management" + ] + }, + { + "cell_type": "markdown", + "id": "b3ced4ee", + "metadata": {}, + "source": [ + "When managing your Python files, here is some general advice:\n", + "\n", + "- Python files are plain text files with the extension `.py` on the end of the name. If you use Jupyter Notebook, you might also see `.ipynb` files, which can also run Python cells.\n", "\n", - "Covering:\n", - "- What Python is (a high-level programming language)\n", - "- Python syntax, highlighting, and comments (incl. Python is case sensitiev)\n", - "- Writing and running programs\n", - "- File management" + "- When naming your files, keep the names short but descriptive. Try not to name multiple files the same thing.\n", + "- Group your Python files in sub-directories (folders on your computer) to keep track of them better.\n", + "- Regularly save your work." ] } ], "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, "language_info": { - "name": "python" + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.3" } }, "nbformat": 4, diff --git a/lessons/basics/notebook.md b/lessons/basics/using_jupyter_notebook.md old mode 100755 new mode 100644 similarity index 99% rename from lessons/basics/notebook.md rename to lessons/basics/using_jupyter_notebook.md index 8989016..51344c7 --- a/lessons/basics/notebook.md +++ b/lessons/basics/using_jupyter_notebook.md @@ -1,11 +1,16 @@ # Opening and Using a Jupyter Notebook + ## Prerequisites None. + ## What is a Jupyter Notebook? -Some Python code is accompanied by text and images. This kind of code is stored in a file format called a _Jupyter Notebook_. You can recognise a Jupyter Notebook because the file name ends in `.ipynb`. +Some Python code is accompanied by text and images. This kind of code is stored in a file format called a _Jupyter Notebook_. You can recognise a Jupyter Notebook because the file name ends in `.ipynb` +. ## How to open a Jupyter Notebook If you don't already have a Jupyter Notebook file, you can download {Download}`this one<`example_notebook`.ipynb>`. + ## Instructions + ### Install Anaconda Anaconda is a bundle of programs which can run and edit Python code. Check whether your computer has the program _Anaconda Navigator_. If not, **download Anaconda [here](https://www.anaconda.com/download/success).** If you are not sure which installer to download, choose the one from your operating system (Windows, Mac, or Linux), and select "Graphical Installer" if possible. diff --git a/lessons/basics/write_run_python.md b/lessons/basics/write_run_python.md index bbdf90f..620ac17 100755 --- a/lessons/basics/write_run_python.md +++ b/lessons/basics/write_run_python.md @@ -12,33 +12,33 @@ The Python programming language can be written on many platforms. The most commo You can write such a file in any plain text editor (e.g. Notepad or TextEdit), but it is helpful to use an editor that can write and run your code in one same place. These are called *code editors*, or if they have more features, they are called an *Integrated Development Environment* (IDE). For this lesson, we will use an IDE called *Spyder*. -# Instructions +## Instructions -The first step is to install Python, there are various ways to do this listed below. We advise to use conda *via* the miniforge or Anaconda installations +The first step is to install Python, there are various ways to do this listed below. We advise to only install one, either conda *via* the miniforge or Anaconda installations. -## Installation +### Installation
      - Miniforge Installation + Miniforge Installation -

      Install Miniforge

      +

      Install Miniforge

      Miniforge is a minimal install of the *conda* and *mamba* Python package managers. It currently has no license restrictions on its use. Go to the Miniforge [repository](https://github.com/conda-forge/miniforge#install) and follow the instructions on how to install. -Once installed run the following command in a terminal to make sure Python is installed +Once installed run the following command in a terminal to make sure Python is installed: ```bash conda install python ``` -**Note** on Windows PCs it is necessary to open either *Miniforge Prompt* to run this command +**Note** on Windows PCs it is necessary to open *Miniforge Prompt* to run this command.

      - Anaconda Installation + Anaconda Installation

      Install Anaconda

      @@ -54,15 +54,13 @@ Once it is downloaded, **open the installer and follow the instructions**.
      - Basic Python Installation -
      -The simplest way to install Python is by itself + Basic Python Installation -Go to the Python [downloads](https://www.python.org/downloads/) and download the latest version. +The simplest way to install Python is by itself. Go to the Python [downloads](https://www.python.org/downloads/) and download the latest version. Once it is downloaded, **open the installer and follow the instructions**. -Python is notorious for what are called **dependency issues**. To reduce the risk of these if not using a package/environment manager such as conda you should make use of *virtual environments*. These are simple to use, for an explanation see [here](https://docs.python.org/3/library/venv.html) +Python is notorious for what are called **dependency issues**. To reduce the risk of these if not using a package/environment manager such as conda you should make use of *virtual environments*. These are simple to use, for an explanation see [here](https://docs.python.org/3/library/venv.html). To create one use the following command in a terminal ```bash @@ -73,7 +71,7 @@ To create one use the following command in a terminal -# Writing and running your Programme +## Writing and running your Programme As with installing Python there are many ways to write your program, from using a text editor to using an IDE. Below we give guidance on a couple of these methods. @@ -82,7 +80,7 @@ This is not an exhaustive list.

      -Text Editor and Command line + Text Editor and Command line
      Perhaps the simplest method is to write your Python code in a text editor and then run on the command line, though this lacks the power of an IDE environment to make your life easier. @@ -90,7 +88,7 @@ Open the text editor of your choice and **write the following in a new file:** ```print("Hello, world!")``` -Make sure it is saved, for example as *hello_world.py*. +Make sure it is saved, for example as *hello_world.py* Open the command line window and type the following: @@ -102,14 +100,16 @@ This will run your programme and print Hello World -to your screen +to your screen. + +For more information on using the command line, have a look at the lessons on [using the command line](../solving_problems/command_line.ipynb) and [argparse](../common_libs/argparse.ipynb). However, if you are a complete beginner, do not worry about this for now.

      - Spyder IDE + Spyder IDE

      Using the Spyder IDE

      @@ -131,7 +131,7 @@ This will open window that should look this: You may first see a pop-up suggesting to update Spyder. If so, click OK. -### Write a Python program +
      Write a Python program
      The left-hand pane is where you can write your program. **On line 8, paste the following text**: ```print("Hello, world!")``` @@ -144,7 +144,8 @@ This one-line program tells the computer to repeat the words "Hello, world!" to Next, **save the program by pressing the "Save" button in the top ribbon** (Shortcut: Ctrl + S): ![Top ribbon with the save button circled in red.](images/save.png) -### Run a Python program + +
      Run a Python program
      To run the program, **press the "Play" button in the top ribbon** (Shortcut: F5): ![Top ribbon with the play button circled in red.](images/run.png) @@ -158,7 +159,7 @@ Anything that the computer writes as a result of the program is called an *outpu
      - VScode IDE + VScode IDE

      Using the VScode IDE

      @@ -184,9 +185,9 @@ Click on ```New File...``` to create a new file. Type the file name ```hello_wor ![Window with input box for text.](images/code_filename.png) -VS code will then ask you where to save this file, select an appropriate directory. This will be your *work folder* +VS code will then ask you where to save this file, select an appropriate directory. This will be your *work folder*. - VS code might ask to install a Python extension, if it does **agree to this**. Once the extension is installed it will ask you to choose the Python intepreter, **choose the one you wish to use** + VS code might ask to install a Python extension - if it does, **agree to this**. Once the extension is installed it will ask you to choose the Python intepreter, **choose the one you wish to use**. This will depend on what you have installed. ![Window with text Select Python Interpreter](images/code_choose_int.png) Enter the code in the text window @@ -196,16 +197,16 @@ Enter the code in the text window ![Block of code with the line print("Hello, world!") written at the bottom.](images/hello_world_code.png) -Save this file, either by pressing ```ctrl-s``` or ```File->Save``` +Save this file, either by pressing ```ctrl-s``` or ```File->Save```. -To run click the play button in the top right +To run click the play button in the top right. -Anything that the computer writes as a result of the program is called an *output*. Read your output in the bottom pane +Anything that the computer writes as a result of the program is called an *output*. Read your output in the bottom pane.

      -# Advice +## Advice You should now be in a position to write Python programs, or open pre-existing ones using File-> Open (Shortcut: Ctrl+O) on Spyder. There are many other Python code editors that work very similarly, such as *PyCharm*. Some Python code does not come in Python program files. The most popular alternative is the Jupyter Notebook, which Spyder is unable to open. diff --git a/lessons/files/data_record.csv b/lessons/files/data_record.csv index 22b9631..3131237 100644 --- a/lessons/files/data_record.csv +++ b/lessons/files/data_record.csv @@ -298,3 +298,203 @@ ,,,,,,,,,,,,,3.15230961298377,,,,,,3.7515605493133584,6.741573033707866,,5.324594257178527,,,,,3.0836454431960054,,,,,,,,,,9.176029962546817,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.288389513108614,5.380774032459426,6.067415730337078,3.9762796504369535,8.614232209737828,,,,,,,,,6.235955056179775,,8.11485642946317,6.167290886392011,,,,,,,3.077403245942572,,,7.553058676654182,,,,,,,,,,,,,6.429463171036204, ,,,,,,,,,,,,,,,,,,,,6.741573033707866,,,,,,,,,,,,,,,,,9.176029962546817,,,,,,,,,,,,,,,,,,,,,,,,5.399500624219725,6.098626716604246,,8.67665418227216,,,,,,,,,6.242197253433209,,8.11485642946317,6.192259675405743,,,,,,,3.102372034956305,,,7.615480649188515,,,,,,,,,,,,,6.429463171036204, ,,,,,,,,,,,,,,,,,,,,6.803995006242197,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5.424469413233458,,,,,,,,,,,,6.30461922596754,,,6.210986267166042,,,,,,,3.1210986267166043,,,7.615480649188515,,,,,,,,,,,,,, +3.651685393258427,5.074906367041199,2.1161048689138577,5.305867665418227,3.589263420724095,3.7265917602996255,0.6554307116104868,3.3021223470661676,0.9051186017478152,2.908863920099875,3.6641697877652937,1.223470661672909,0.35268414481897625,0.24968789013732834,1.647940074906367,5.855181023720349,4.4818976279650435,2.7590511860174782,1.9600499375780276,1.6541822721598003,3.8951310861423223,5.224719101123595,2.9712858926342074,5.474406991260924,4.800249687890138,0.9488139825218477,0.6173533083645443,0.6616729088639202,1.7602996254681649,4.057428214731585,0.24781523096129837,0.8926342072409489,5.099875156054932,4.001248439450687,1.317103620474407,2.5842696629213484,0.717852684144819,6.179775280898876,4.313358302122348,0.7116104868913858,0.6928838951310862,4.956304619225968,3.8077403245942576,1.2359550561797754,0.7365792759051186,1.079900124843945,5.724094881398252,2.702871410736579,1.0923845193508115,4.444444444444445,2.9837702871410734,3.183520599250936,4.132334581772784,5.81772784019975,1.797752808988764,3.6267166042446943,3.9076154806491883,4.875156054931336,6.029962546816479,3.2397003745318353,2.4032459425717856,3.3645443196004994,2.9837702871410734,1.8102372034956304,5.6491885143570535,3.5830212234706615,2.446941323345818,5.855181023720349,1.8164794007490637,3.3957553058676653,3.6766541822721597,3.957553058676654,5.705368289637952,3.595505617977528,5.593008739076155,6.104868913857677,4.138576779026217,2.303370786516854,0.9550561797752809,1.2796504369538078,5.730337078651686,3.3645443196004994,2.5343320848938826,0.9800249687890138,5.930087390761548,4.1260923845193505,5.1248439450686645,1.4544319600499376,3.576779026217228,2.958801498127341,5.436953807740325,0.466916354556804,1.9101123595505618,1.8352059925093633,2.1972534332084894,5.031210986267166,0.6928838951310862,4.856429463171036,4.425717852684145,4.157303370786517, +3.682896379525593,5.1123595505617985,2.153558052434457,5.33083645443196,3.6142322097378274,3.745318352059925,0.6803995006242198,3.3270911360799,0.9363295880149812,2.933832709113608,3.682896379525593,1.2546816479400749,0.3757802746566792,0.27965043695380776,1.6729088639200997,5.880149812734083,4.51310861423221,2.790262172284644,1.9850187265917605,1.6791510611735332,3.920099875156055,5.262172284644195,2.9962546816479403,5.50561797752809,4.831460674157303,0.9737827715355806,0.6491885143570537,0.686641697877653,1.7915106117353308,4.082397003745319,0.2727840199750312,0.9300873907615481,5.1248439450686645,4.019975031210986,1.34207240948814,2.6092384519350813,0.7490636704119851,6.210986267166042,4.33832709113608,0.7303370786516854,0.717852684144819,4.975031210986267,3.8389513108614235,1.2671660424469413,0.7677902621722846,1.104868913857678,5.7553058676654185,2.7340823970037453,1.1235955056179776,4.475655430711611,3.0087390761548067,3.214731585518102,4.157303370786517,5.855181023720349,1.8164794007490637,3.651685393258427,3.9325842696629216,4.912609238451935,6.054931335830212,3.2709113607990012,2.4219725343320846,3.383270911360799,3.0149812734082393,1.8289637952559301,5.68039950062422,3.607990012484395,2.4656679151061174,5.880149812734083,1.8414481897627966,3.420724094881398,3.7078651685393256,3.9887640449438204,5.730337078651686,3.6267166042446943,5.6242197253433215,6.129837702871411,4.16354556803995,2.340823970037453,0.9800249687890138,1.3108614232209737,5.767790262172285,3.3895131086142323,2.571785268414482,0.9987515605493134,5.961298377028713,4.151061173533084,5.149812734082397,1.4856429463171037,3.6017478152309614,2.990012484394507,5.468164794007491,0.49063670411985016,1.941323345817728,1.8601747815230962,2.2347066167290888,5.068664169787765,0.7303370786516854,4.887640449438202,4.450686641697877,4.18227215980025, +3.714107365792759,5.143570536828964,2.184769038701623,5.3620474406991265,3.639200998751561,3.7702871410736583,0.7053682896379525,3.3583021223470664,0.9675405742821472,2.958801498127341,3.7078651685393256,1.2796504369538078,0.39825218476903873,0.3096129837702871,1.6978776529338326,5.9113607990012484,4.544319600499376,2.82147315855181,2.009987515605493,1.6978776529338326,3.951310861423221,5.293383270911361,3.0149812734082393,5.536828963795256,4.856429463171036,1.0049937578027466,0.6803995006242198,0.7116104868913858,1.8227215980024971,4.107365792759051,0.29712858926342073,0.9612983770287141,5.143570536828964,4.044943820224719,1.3670411985018727,2.634207240948814,0.7865168539325842,6.242197253433209,4.3632958801498125,0.7553058676654182,0.7428214731585518,5.0,3.8639200998751564,1.2983770287141074,0.7927590511860175,1.1298377028714106,5.786516853932584,2.7715355805243447,1.161048689138577,4.506866416978776,3.0399500624219726,3.245942571785269,4.188514357053683,5.892634207240949,1.8414481897627966,3.6704119850187267,3.9637952559300875,4.950062421972534,6.086142322097379,3.295880149812734,2.446941323345818,3.4019975031210987,3.046192259675406,1.8539325842696628,5.711610486891385,3.6329588014981273,2.4906367041198503,5.8988764044943816,1.8664169787765295,3.4456928838951315,3.7390761548064915,4.019975031210986,5.7553058676654185,3.651685393258427,5.655430711610487,6.1485642946317105,4.18227215980025,2.3720349563046192,1.0049937578027466,1.348314606741573,5.805243445692884,3.420724094881398,2.602996254681648,1.0237203495630463,5.992509363295881,4.176029962546816,5.174781523096129,1.5168539325842696,3.6267166042446943,3.0212234706616727,5.499375780274657,0.5149812734082396,1.9725343320848938,1.8851435705368291,2.2659176029962547,5.106117353308365,0.7615480649188515,4.918851435705368,4.475655430711611,4.207240948813983, +3.745318352059925,5.174781523096129,2.215980024968789,5.3870162297128585,3.6641697877652937,3.7952559300873907,0.7240948813982522,3.383270911360799,0.9987515605493134,2.977528089887641,3.7265917602996255,1.3108614232209737,0.4213483146067416,0.33957553058676654,1.7228464419475658,5.942571785268415,4.575530586766542,2.8464419475655434,2.034956304619226,1.7228464419475658,3.982521847690387,5.324594257178527,3.0399500624219726,5.568039950062421,4.887640449438202,1.0362047440699127,0.7053682896379525,0.7365792759051186,1.8539325842696628,4.132334581772784,0.32209737827715357,0.9987515605493134,5.168539325842697,4.069912609238452,1.3857677902621723,2.6591760299625467,0.8177278401997503,6.30461922596754,4.388264669163545,0.7740324594257179,0.7677902621722846,5.0187265917602994,3.888888888888889,1.3358302122347065,0.8239700374531835,1.161048689138577,5.81772784019975,2.8027465667915106,1.1922596754057428,4.538077403245943,3.0649188514357055,3.2833957553058677,4.213483146067416,5.930087390761548,1.8664169787765295,3.6953807740324596,3.9887640449438204,4.987515605493134,6.111111111111111,3.320848938826467,2.4656679151061174,3.4269662921348316,3.0836454431960054,1.8726591760299625,5.736579275905119,3.651685393258427,2.5093632958801497,5.9238451935081144,1.8913857677902621,3.470661672908864,3.7702871410736583,4.057428214731585,5.774032459425719,3.6766541822721597,5.686641697877653,6.167290886392011,4.200998751560549,2.4032459425717856,1.0299625468164793,1.3795255930087391,5.848938826466916,3.451935081148564,2.634207240948814,1.042446941323346,6.023720349563047,4.200998751560549,5.199750312109863,1.5480649188514357,3.651685393258427,3.0524344569288386,5.524344569288389,0.5387016229712859,2.00374531835206,1.9101123595505618,2.2971285892634206,5.149812734082397,0.7990012484394506,4.950062421972534,4.500624219725343,4.225967540574282, +3.776529338327091,5.212234706616729,2.253433208489388,5.418227215980025,3.689138576779026,3.81398252184769,0.7490636704119851,3.408239700374532,1.0237203495630463,3.0024968789013733,3.745318352059925,1.34207240948814,0.44382022471910115,0.36953807740324596,1.7415730337078652,5.97378277153558,4.606741573033708,2.8776529338327093,2.0599250936329585,1.7415730337078652,4.00749063670412,5.355805243445693,3.0649188514357055,5.599250936329588,4.918851435705368,1.0611735330836456,0.7365792759051186,0.7615480649188515,1.8851435705368291,4.157303370786517,0.3464419475655431,1.0299625468164793,5.187265917602996,4.0886392009987516,1.410736579275905,2.6779026217228465,0.8551810237203495,6.30461922596754,4.413233458177278,0.7927590511860175,0.7927590511860175,5.043695380774032,3.920099875156055,1.3670411985018727,0.8551810237203495,1.1860174781523096,5.848938826466916,2.8339575530586765,1.229712858926342,4.563046192259676,3.0961298377028714,3.3146067415730336,4.238451935081149,5.961298377028713,1.8913857677902621,3.714107365792759,4.019975031210986,5.024968789013733,6.1360799001248445,3.352059925093633,2.4843945068664173,3.4456928838951315,3.114856429463171,1.8976279650436954,5.767790262172285,3.6766541822721597,2.5343320848938826,5.942571785268415,1.916354556803995,3.495630461922597,3.801498127340824,4.0886392009987516,5.799001248439451,3.7078651685393256,5.717852684144819,6.192259675405743,4.225967540574282,2.4406991260923845,1.0549313358302121,1.4169787765293382,5.8863920099875156,3.4831460674157304,2.671660424469413,1.0674157303370786,6.054931335830212,4.225967540574282,5.224719101123595,1.5792759051186018,3.6766541822721597,3.089887640449438,5.555555555555556,0.5630461922596754,2.034956304619226,1.941323345817728,2.328339575530587,5.187265917602996,0.8302122347066168,4.975031210986267,4.531835205992509,4.250936329588015, +3.801498127340824,5.243445692883895,2.2846441947565546,5.443196004993759,3.714107365792759,3.8389513108614235,0.7740324594257179,3.4332084893882646,1.0549313358302121,3.027465667915106,3.7702871410736583,1.373283395755306,0.466916354556804,0.3995006242197253,1.766541822721598,5.998751560549313,4.637952559300874,2.908863920099875,2.084893882646692,1.766541822721598,4.038701622971286,5.3870162297128585,3.089887640449438,5.630461922596755,4.943820224719102,1.0923845193508115,0.7677902621722846,0.7865168539325842,1.916354556803995,4.18227215980025,0.3714107365792759,1.0611735330836456,5.212234706616729,4.1136079900124844,1.4294631710362047,2.702871410736579,0.8863920099875156,6.30461922596754,4.438202247191011,0.8114856429463172,0.8177278401997503,5.062421972534332,3.9450686641697876,1.3982521847690388,0.8801498127340824,1.2109862671660423,5.880149812734083,2.871410736579276,1.260923845193508,4.594257178526841,3.1210986267166043,3.352059925093633,4.263420724094882,5.998751560549313,1.916354556803995,3.732833957553059,4.051186017478152,5.062421972534332,6.161048689138577,3.3770287141073654,2.5031210986267167,3.464419475655431,3.1460674157303368,1.916354556803995,5.799001248439451,3.6953807740324596,2.5530586766541825,5.967540574282147,1.941323345817728,3.5205992509363297,3.83270911360799,4.119850187265917,5.823970037453184,3.732833957553059,5.749063670411985,6.210986267166042,4.244694132334582,2.471910112359551,1.079900124843945,1.4544319600499376,5.9238451935081144,3.5143570536828963,2.702871410736579,1.0861423220973783,6.086142322097379,4.244694132334582,5.249687890137328,1.6104868913857677,3.701622971285893,3.1210986267166043,5.586766541822722,0.5867665418227216,2.066167290886392,1.9662921348314608,2.3657927590511862,5.224719101123595,0.867665418227216,5.0062421972534334,4.556803995006242,4.275905118601748, +3.83270911360799,5.274656679151062,2.3158551810237205,5.474406991260924,3.7390761548064915,3.857677902621723,0.7927590511860175,3.4581772784019975,1.0861423220973783,3.046192259675406,3.7890137328339577,1.3982521847690388,0.4893882646691636,0.42946317103620474,1.7915106117353308,6.029962546816479,4.66916354556804,2.9400749063670415,2.1098626716604243,1.7852684144818978,4.069912609238452,5.418227215980025,3.114856429463171,5.66167290886392,4.975031210986267,1.1235955056179776,0.7990012484394506,0.8114856429463172,1.9475655430711611,4.207240948813983,0.39637952559300876,1.0986267166042447,5.230961298377029,4.132334581772784,1.4544319600499376,2.727840199750312,0.9238451935081149,6.367041198501872,4.456928838951311,0.8364544319600499,0.8426966292134832,5.087390761548065,3.970037453183521,1.4294631710362047,0.9113607990012486,1.2421972534332086,5.9113607990012484,2.902621722846442,1.2921348314606742,4.6254681647940075,3.15230961298377,3.383270911360799,4.288389513108614,6.036204744069912,1.9350811485642945,3.7578027465667914,4.0761548064918856,5.099875156054932,6.186017478152309,3.4019975031210987,2.521847690387016,3.4893882646691634,3.1772784019975036,1.941323345817728,5.830212234706617,3.7203495630461925,2.578027465667915,5.986267166042447,1.9662921348314608,3.545568039950062,3.8639200998751564,4.151061173533084,5.848938826466916,3.7578027465667914,5.7802746566791505,6.229712858926342,4.263420724094882,2.5093632958801497,1.104868913857678,1.4856429463171037,5.961298377028713,3.545568039950062,2.7340823970037453,1.1111111111111112,6.117353308364544,4.269662921348314,5.274656679151062,1.6416978776529338,3.7265917602996255,3.15230961298377,5.611735330836455,0.6104868913857677,2.097378277153558,1.9912609238451935,2.397003745318352,5.262172284644195,0.898876404494382,5.0374531835206,4.581772784019975,4.294631710362047, +3.8639200998751564,5.312109862671661,2.35330836454432,5.499375780274657,3.764044943820225,3.882646691635456,0.8177278401997503,3.4893882646691634,1.1173533083645444,3.0711610486891385,3.81398252184769,1.4294631710362047,0.5124843945068664,0.45942571785268416,1.8164794007490637,6.061173533083646,4.700374531835206,2.9712858926342074,2.128589263420724,1.8102372034956304,4.094881398252185,5.449438202247191,3.139825218476904,5.692883895131087,5.0062421972534334,1.1485642946317103,0.8302122347066168,0.8364544319600499,1.978776529338327,4.2322097378277155,0.4207240948813982,1.1298377028714106,5.2559300873907615,4.157303370786517,1.4794007490636705,2.746566791510612,0.9550561797752809,6.367041198501872,4.4818976279650435,0.8551810237203495,0.8614232209737829,5.106117353308365,3.9950062421972534,1.466916354556804,0.9425717852684146,1.2671660424469413,5.942571785268415,2.9400749063670415,1.3295880149812733,4.656679151061174,3.183520599250936,3.4144818976279647,4.31960049937578,6.067415730337078,1.9600499375780276,3.776529338327091,4.107365792759051,5.1373283395755305,6.210986267166042,3.4332084893882646,2.5405742821473156,3.508114856429463,3.2084893882646695,1.9662921348314608,5.861423220973783,3.745318352059925,2.596754057428215,6.01123595505618,1.9912609238451935,3.5705368289637955,3.8951310861423223,4.188514357053683,5.867665418227216,3.7890137328339577,5.811485642946318,6.242197253433209,4.288389513108614,2.5405742821473156,1.1298377028714106,1.523096129837703,6.004993757802747,3.576779026217228,2.7715355805243447,1.1298377028714106,6.1485642946317105,4.294631710362047,5.299625468164794,1.6729088639200997,3.7515605493133584,3.183520599250936,5.64294631710362,0.6367041198501873,2.128589263420724,2.0224719101123596,2.428214731585518,5.305867665418227,0.9363295880149812,5.068664169787765,4.606741573033708,4.31960049937578, +3.8951310861423223,5.343320848938826,2.3845193508114857,5.5305867665418225,3.7890137328339577,3.9076154806491883,0.8426966292134832,3.5143570536828963,1.1423220973782773,3.0961298377028714,3.83270911360799,1.4606741573033708,0.534956304619226,0.4893882646691636,1.8414481897627966,6.086142322097379,4.7315855181023725,3.0024968789013733,2.153558052434457,1.8289637952559301,4.1260923845193505,5.480649188514358,3.1647940074906367,5.724094881398252,5.0374531835206,1.1797752808988764,0.8614232209737829,0.8614232209737829,2.016229712858926,4.257178526841448,0.44569288389513106,1.161048689138577,5.274656679151062,4.176029962546816,1.4981273408239701,2.7715355805243447,0.9925093632958802,6.429463171036204,4.506866416978776,0.8739076154806492,0.8863920099875156,5.131086142322098,4.02621722846442,1.4981273408239701,0.9737827715355806,1.2921348314606742,5.97378277153558,2.9712858926342074,1.3607990012484397,4.681647940074906,3.2084893882646695,3.451935081148564,4.344569288389513,6.104868913857677,1.9850187265917605,3.7952559300873907,4.132334581772784,5.174781523096129,6.235955056179775,3.4581772784019975,2.5593008739076155,3.5268414481897628,3.2397003745318353,1.9850187265917605,5.892634207240949,3.764044943820225,2.6217228464419473,6.029962546816479,2.016229712858926,3.595505617977528,3.926342072409488,4.219725343320849,5.892634207240949,3.81398252184769,5.842696629213483,6.242197253433209,4.307116104868914,2.578027465667915,1.1548064918851435,1.554307116104869,6.0424469413233455,3.607990012484395,2.8027465667915106,1.1548064918851435,6.179775280898876,4.31960049937578,5.324594257178527,1.704119850187266,3.776529338327091,3.214731585518102,5.674157303370786,0.6616729088639202,2.15980024968789,2.0474406991260925,2.4656679151061174,5.343320848938826,0.9675405742821472,5.099875156054932,4.631710362047441,4.344569288389513, +3.926342072409488,5.3745318352059925,2.4157303370786516,5.555555555555556,3.81398252184769,3.926342072409488,0.8614232209737829,3.5393258426966296,1.1735330836454432,3.114856429463171,3.857677902621723,1.4918851435705367,0.5580524344569288,0.519350811485643,1.8664169787765295,6.117353308364544,4.762796504369538,3.033707865168539,2.1785268414481895,1.8476903870162298,4.157303370786517,5.511860174781523,3.1897627965043696,5.7553058676654185,5.062421972534332,1.2109862671660423,0.8863920099875156,0.8863920099875156,2.0474406991260925,4.282147315855181,0.4700374531835206,1.198501872659176,5.299625468164794,4.200998751560549,1.523096129837703,2.7965043695380776,1.0237203495630463,6.429463171036204,4.531835205992509,0.898876404494382,0.9113607990012486,5.149812734082397,4.051186017478152,1.529338327091136,0.9987515605493134,1.3233458177278403,6.004993757802747,3.0024968789013733,1.3982521847690388,4.712858926342073,3.2397003745318353,3.4831460674157304,4.369538077403246,6.142322097378277,2.009987515605493,3.8202247191011236,4.16354556803995,5.212234706616729,6.242197253433209,3.4831460674157304,2.578027465667915,3.5518102372034956,3.2709113607990012,2.009987515605493,5.9238451935081144,3.7890137328339577,2.640449438202247,6.054931335830212,2.0411985018726595,3.620474406991261,3.957553058676654,4.250936329588015,5.917602996254682,3.8451935081148565,5.8739076154806495,6.30461922596754,4.325842696629214,2.6092384519350813,1.1797752808988764,1.591760299625468,6.079900124843945,3.639200998751561,2.8339575530586765,1.1735330836454432,6.210986267166042,4.344569288389513,5.34956304619226,1.735330836454432,3.801498127340824,3.245942571785269,5.705368289637952,0.6803995006242198,2.1910112359550564,2.0724094881398254,2.4968789013732833,5.380774032459426,0.9987515605493134,5.131086142322098,4.656679151061174,4.369538077403246, +3.957553058676654,5.411985018726591,2.453183520599251,5.586766541822722,3.8389513108614235,3.951310861423221,0.8863920099875156,3.564294631710362,1.2047440699126093,3.139825218476904,3.8764044943820224,1.5168539325842696,0.5811485642946317,0.548689138576779,1.8913857677902621,6.1485642946317105,4.794007490636704,3.0649188514357055,2.203495630461923,1.8726591760299625,4.18227215980025,5.543071161048689,3.214731585518102,5.786516853932584,5.093632958801498,1.2359550561797754,0.9176029962546817,0.9113607990012486,2.0786516853932584,4.307116104868914,0.4950062421972534,1.229712858926342,5.318352059925093,4.225967540574282,1.5418227215980027,2.82147315855181,1.0611735330836456,6.491885143570538,4.556803995006242,0.9176029962546817,0.9363295880149812,5.174781523096129,4.0761548064918856,1.5605493133583022,1.0299625468164793,1.348314606741573,6.036204744069912,3.0399500624219726,1.4294631710362047,4.7440699126092385,3.2646691635455682,3.5205992509363297,4.394506866416979,6.173533083645444,2.034956304619226,3.8389513108614235,4.188514357053683,5.249687890137328,6.30461922596754,3.5143570536828963,2.596754057428215,3.5705368289637955,3.3021223470661676,2.0287141073657926,5.955056179775282,3.8077403245942576,2.66541822721598,6.073657927590512,2.0599250936329585,3.6454431960049942,3.982521847690387,4.282147315855181,5.942571785268415,3.870162297128589,5.905118601747815,6.30461922596754,4.3508114856429465,2.6466916354556806,1.2047440699126093,1.6229712858926344,6.117353308364544,3.6704119850187267,2.871410736579276,1.198501872659176,6.242197253433209,4.369538077403246,5.3745318352059925,1.766541822721598,3.826466916354557,3.2833957553058677,5.730337078651686,0.7053682896379525,2.2222222222222223,2.097378277153558,2.5280898876404496,5.424469413233458,1.0362047440699127,5.15605493133583,4.681647940074906,4.388264669163545, +3.9887640449438204,5.443196004993759,2.4843945068664173,5.611735330836455,3.8639200998751564,3.9762796504369535,0.9113607990012486,3.589263420724095,1.2359550561797754,3.1647940074906367,3.8951310861423223,1.5480649188514357,0.6036204744069913,0.5786516853932584,1.916354556803995,6.179775280898876,4.825218476903871,3.0961298377028714,2.2284644194756553,1.8913857677902621,4.213483146067416,5.574282147315855,3.233458177278402,5.81772784019975,5.1248439450686645,1.2671660424469413,0.9488139825218477,0.9363295880149812,2.1098626716604243,4.332084893882647,0.5199750312109862,1.2671660424469413,5.337078651685393,4.244694132334582,1.5667915106117354,2.84019975031211,1.0923845193508115,6.491885143570538,4.581772784019975,0.9363295880149812,0.9612983770287141,5.199750312109863,4.1011235955056184,1.5980024968789013,1.0611735330836456,1.373283395755306,6.067415730337078,3.0711610486891385,1.4606741573033708,4.775280898876405,3.295880149812734,3.5518102372034956,4.419475655430712,6.210986267166042,2.0599250936329585,3.857677902621723,4.219725343320849,5.287141073657928,6.30461922596754,3.5393258426966296,2.6217228464419473,3.589263420724095,3.3333333333333335,2.0536828963795255,5.986267166042447,3.83270911360799,2.68414481897628,6.098626716604246,2.084893882646692,3.6704119850187267,4.013732833957553,4.31960049937578,5.961298377028713,3.8951310861423223,5.936329588014981,6.30461922596754,4.369538077403246,2.6779026217228465,1.229712858926342,1.6604244694132335,6.154806491885144,3.701622971285893,2.902621722846442,1.2172284644194757,6.30461922596754,4.394506866416979,5.399500624219725,1.797752808988764,3.8514357053682895,3.3146067415730336,5.761548064918852,0.7303370786516854,2.253433208489388,2.128589263420724,2.565543071161049,5.461922596754057,1.0674157303370786,5.187265917602996,4.70661672908864,4.413233458177278, +4.019975031210986,5.474406991260924,2.521847690387016,5.64294631710362,3.888888888888889,3.9950062421972534,0.9300873907615481,3.620474406991261,1.260923845193508,3.183520599250936,3.920099875156055,1.5792759051186018,0.6242197253433208,0.6086142322097379,1.941323345817728,6.20474406991261,4.856429463171036,3.1273408239700373,2.253433208489388,1.916354556803995,4.244694132334582,5.605493133583021,3.258426966292135,5.848938826466916,5.149812734082397,1.2983770287141074,0.9800249687890138,0.9612983770287141,2.1410736579275906,4.357053682896379,0.5443196004993758,1.2983770287141074,5.3620474406991265,4.269662921348314,1.591760299625468,2.865168539325843,1.1298377028714106,6.554307116104869,4.606741573033708,0.9550561797752809,0.9862671660424469,5.218476903870163,4.132334581772784,1.6292134831460674,1.0861423220973783,1.404494382022472,6.098626716604246,3.102372034956305,1.4981273408239701,4.800249687890138,3.3270911360799,3.589263420724095,4.450686641697877,6.242197253433209,2.0786516853932584,3.882646691635456,4.244694132334582,5.324594257178527,6.367041198501872,3.564294631710362,2.640449438202247,3.6142322097378274,3.3645443196004994,2.0786516853932584,6.0174781523096135,3.857677902621723,2.7091136079900124,6.117353308364544,2.1098626716604243,3.6953807740324596,4.044943820224719,4.3508114856429465,5.986267166042447,3.926342072409488,5.967540574282147,6.367041198501872,4.388264669163545,2.715355805243446,1.2484394506866416,1.6978776529338326,6.198501872659176,3.732833957553059,2.933832709113608,1.2359550561797754,6.30461922596754,4.413233458177278,5.424469413233458,1.8227215980024971,3.8764044943820224,3.3458177278401995,5.792759051186017,0.7553058676654182,2.2846441947565546,2.153558052434457,2.596754057428215,5.499375780274657,1.104868913857678,5.218476903870163,4.737827715355805,4.438202247191011, +4.044943820224719,5.511860174781523,2.5530586766541825,5.667915106117353,3.9138576779026217,4.019975031210986,0.9550561797752809,3.6454431960049942,1.2921348314606742,3.2084893882646695,3.938826466916354,1.6042446941323347,0.6491885143570537,0.6367041198501873,1.9662921348314608,6.235955056179775,4.887640449438202,3.1585518102372037,2.278401997503121,1.9350811485642945,4.269662921348314,5.64294631710362,3.2833957553058677,5.880149812734083,5.181023720349563,1.3233458177278403,1.0112359550561798,0.9862671660424469,2.1722846441947565,4.382022471910113,0.5692883895131086,1.3295880149812733,5.380774032459426,4.288389513108614,1.6104868913857677,2.8901373283395753,1.16729088639201,6.554307116104869,4.6254681647940075,0.9800249687890138,1.0112359550561798,5.243445692883895,4.157303370786517,1.6604244694132335,1.1173533083645444,1.4294631710362047,6.129837702871411,3.139825218476904,1.529338327091136,4.831460674157303,3.352059925093633,3.620474406991261,4.475655430711611,6.30461922596754,2.1036204744069913,3.9013732833957557,4.275905118601748,5.3620474406991265,6.367041198501872,3.595505617977528,2.6591760299625467,3.6329588014981273,3.3957553058676653,2.097378277153558,6.048689138576779,3.8764044943820224,2.727840199750312,6.1360799001248445,2.134831460674157,3.7203495630461925,4.0761548064918856,4.382022471910113,6.01123595505618,3.951310861423221,5.998751560549313,6.367041198501872,4.413233458177278,2.746566791510612,1.2734082397003745,1.7290886392009988,6.235955056179775,3.764044943820225,2.9712858926342074,1.260923845193508,6.367041198501872,4.438202247191011,5.449438202247191,1.8539325842696628,3.9013732833957557,3.3770287141073654,5.81772784019975,0.7802746566791511,2.3158551810237205,2.1785268414481895,2.6279650436953808,5.536828963795256,1.136079900124844,5.249687890137328,4.762796504369538,4.463171036204744, +4.0761548064918856,5.543071161048689,2.5842696629213484,5.69912609238452,3.938826466916354,4.044943820224719,0.9800249687890138,3.6704119850187267,1.3233458177278403,3.233458177278402,3.9637952559300875,1.6354556803995006,0.6741573033707865,0.6679151061173533,1.9912609238451935,6.242197253433209,4.918851435705368,3.1897627965043696,2.303370786516854,1.9600499375780276,4.300873907615481,5.674157303370786,3.3083645443196006,5.9113607990012484,5.212234706616729,1.3545568039950062,1.0362047440699127,1.0112359550561798,2.203495630461923,4.406991260923846,0.5942571785268415,1.3670411985018727,5.405742821473158,4.313358302122348,1.6354556803995006,2.9151061173533086,1.198501872659176,6.616729088639201,4.65043695380774,0.9987515605493134,1.0299625468164793,5.262172284644195,4.18227215980025,1.6978776529338326,1.1485642946317103,1.4544319600499376,6.161048689138577,3.17103620474407,1.5605493133583022,4.8626716604244695,3.383270911360799,3.651685393258427,4.500624219725343,6.30461922596754,2.128589263420724,3.920099875156055,4.300873907615481,5.399500624219725,6.367041198501872,3.620474406991261,2.6779026217228465,3.651685393258427,3.4332084893882646,2.122347066167291,6.079900124843945,3.9013732833957557,2.752808988764045,6.161048689138577,2.15980024968789,3.745318352059925,4.107365792759051,4.413233458177278,6.036204744069912,3.9762796504369535,6.029962546816479,6.367041198501872,4.431960049937578,2.7840199750312107,1.2983770287141074,1.766541822721598,6.30461922596754,3.7952559300873907,3.0024968789013733,1.2796504369538078,6.367041198501872,4.463171036204744,5.480649188514358,1.8851435705368291,3.926342072409488,3.408239700374532,5.848938826466916,0.8052434456928839,2.3470661672908864,2.203495630461923,2.66541822721598,5.580524344569288,1.1735330836454432,5.280898876404494,4.787765293383271,4.4818976279650435, +4.107365792759051,5.574282147315855,2.6217228464419473,5.724094881398252,3.9637952559300875,4.063670411985019,0.9987515605493134,3.6953807740324596,1.3545568039950062,3.2521847690387014,3.982521847690387,1.6666666666666667,0.6928838951310862,0.6991260923845194,2.016229712858926,6.30461922596754,4.950062421972534,3.2209737827715355,2.328339575530587,1.978776529338327,4.332084893882647,5.705368289637952,3.3333333333333335,5.942571785268415,5.237203495630462,1.3857677902621723,1.0674157303370786,1.0362047440699127,2.2347066167290888,4.431960049937578,0.618601747815231,1.3982521847690388,5.424469413233458,4.332084893882647,1.6541822721598003,2.933832709113608,1.2359550561797754,6.616729088639201,4.675405742821473,1.017478152309613,1.0549313358302121,5.287141073657928,4.213483146067416,1.7290886392009988,1.1797752808988764,1.4856429463171037,6.192259675405743,3.202247191011236,1.5980024968789013,4.893882646691636,3.408239700374532,3.689138576779026,4.525593008739076,6.367041198501872,2.153558052434457,3.9450686641697876,4.332084893882647,5.436953807740325,6.429463171036204,3.6454431960049942,2.696629213483146,3.6766541822721597,3.464419475655431,2.1410736579275906,6.111111111111111,3.920099875156055,2.7715355805243447,6.179775280898876,2.184769038701623,3.7702871410736583,4.138576779026217,4.444444444444445,6.054931335830212,4.00749063670412,6.061173533083646,6.429463171036204,4.450686641697877,2.8152309612983775,1.3233458177278403,1.797752808988764,6.30461922596754,3.826466916354557,3.0399500624219726,1.3046192259675407,6.429463171036204,4.488139825218477,5.50561797752809,1.916354556803995,3.951310861423221,3.4456928838951315,5.880149812734083,0.8239700374531835,2.3782771535580522,2.2347066167290888,2.696629213483146,5.617977528089888,1.2047440699126093,5.312109862671661,4.812734082397004,4.506866416978776, +4.138576779026217,5.611735330836455,2.6529338327091136,5.7553058676654185,3.9887640449438204,4.0886392009987516,1.0237203495630463,3.7265917602996255,1.3795255930087391,3.2771535580524347,4.00749063670412,1.6978776529338326,0.717852684144819,0.7303370786516854,2.0411985018726595,6.30461922596754,4.9812734082397006,3.2521847690387014,2.35330836454432,2.00374531835206,4.357053682896379,5.736579275905119,3.3583021223470664,5.967540574282147,5.268414481897628,1.410736579275905,1.0986267166042447,1.0611735330836456,2.2659176029962547,4.456928838951311,0.6429463171036205,1.4294631710362047,5.449438202247191,4.357053682896379,1.6791510611735332,2.958801498127341,1.2671660424469413,6.679151061173534,4.700374531835206,1.042446941323346,1.079900124843945,5.305867665418227,4.238451935081149,1.7602996254681649,1.2047440699126093,1.5106117353308364,6.223470661672909,3.2397003745318353,1.6292134831460674,4.918851435705368,3.439450686641698,3.7203495630461925,4.55056179775281,6.367041198501872,2.1785268414481895,3.9637952559300875,4.3632958801498125,5.474406991260924,6.429463171036204,3.6766541822721597,2.715355805243446,3.6953807740324596,3.495630461922597,2.1660424469413235,6.1360799001248445,3.9450686641697876,2.7965043695380776,6.20474406991261,2.209737827715356,3.7952559300873907,4.169787765293384,4.4818976279650435,6.079900124843945,4.032459425717852,6.092384519350812,6.429463171036204,4.475655430711611,2.8464419475655434,1.348314606741573,1.8352059925093633,6.367041198501872,3.857677902621723,3.0711610486891385,1.3233458177278403,6.429463171036204,4.51310861423221,5.5305867665418225,1.9475655430711611,3.9762796504369535,3.4769038701622974,5.905118601747815,0.8489388264669163,2.4094881398252186,2.259675405742821,2.727840199750312,5.655430711610487,1.2359550561797754,5.337078651685393,4.837702871410737,4.531835205992509, +4.169787765293384,5.64294631710362,2.68414481897628,5.7802746566791505,4.013732833957553,4.1136079900124844,1.048689138576779,3.7515605493133584,1.410736579275905,3.3021223470661676,4.02621722846442,1.7228464419475658,0.7428214731585518,0.7553058676654182,2.066167290886392,6.367041198501872,5.012484394506866,3.2833957553058677,2.3782771535580522,2.0224719101123596,4.388264669163545,5.767790262172285,3.383270911360799,5.998751560549313,5.299625468164794,1.4419475655430714,1.1298377028714106,1.0861423220973783,2.2971285892634206,4.4818976279650435,0.6679151061173533,1.466916354556804,5.468164794007491,4.382022471910113,1.704119850187266,2.9837702871410734,1.3046192259675407,6.679151061173534,4.725343320848939,1.0611735330836456,1.104868913857678,5.33083645443196,4.263420724094882,1.7915106117353308,1.2359550561797754,1.5355805243445693,6.242197253433209,3.2709113607990012,1.6666666666666667,4.950062421972534,3.464419475655431,3.7578027465667914,4.581772784019975,6.429463171036204,2.1972534332084894,3.9887640449438204,4.388264669163545,5.511860174781523,6.491885143570538,3.701622971285893,2.7340823970037453,3.714107365792759,3.5268414481897628,2.184769038701623,6.167290886392011,3.9637952559300875,2.8152309612983775,6.223470661672909,2.2347066167290888,3.8202247191011236,4.200998751560549,4.51310861423221,6.104868913857677,4.057428214731585,6.123595505617978,6.429463171036204,4.49438202247191,2.8838951310861427,1.373283395755306,1.8726591760299625,6.367041198501872,3.888888888888889,3.102372034956305,1.348314606741573,6.491885143570538,4.538077403245943,5.555555555555556,1.978776529338327,4.001248439450687,3.508114856429463,5.936329588014981,0.8739076154806492,2.4406991260923845,2.2846441947565546,2.7590511860174782,5.69912609238452,1.2734082397003745,5.36828963795256,4.8626716604244695,4.556803995006242, +4.200998751560549,5.674157303370786,2.7215980024968793,5.811485642946318,4.038701622971286,4.132334581772784,1.0674157303370786,3.776529338327091,1.4419475655430714,3.320848938826467,4.044943820224719,1.7540574282147314,0.7615480649188515,0.7865168539325842,2.091136079900125,6.367041198501872,5.043695380774032,3.3146067415730336,2.4032459425717856,2.0474406991260925,4.419475655430712,5.799001248439451,3.408239700374532,6.029962546816479,5.324594257178527,1.4731585518102372,1.161048689138577,1.1111111111111112,2.328339575530587,4.506866416978776,0.6928838951310862,1.4981273408239701,5.493133583021224,4.400749063670412,1.7228464419475658,3.0087390761548067,1.3358302122347065,6.741573033707866,4.750312109862672,1.079900124843945,1.1298377028714106,5.34956304619226,4.288389513108614,1.8289637952559301,1.2671660424469413,1.5605493133583022,6.30461922596754,3.3083645443196006,1.6978776529338326,4.9812734082397006,3.495630461922597,3.7890137328339577,4.606741573033708,6.429463171036204,2.2222222222222223,4.00749063670412,4.419475655430712,5.549313358302123,6.491885143570538,3.7265917602996255,2.752808988764045,3.7390761548064915,3.5580524344569286,2.209737827715356,6.198501872659176,3.9887640449438204,2.84019975031211,6.242197253433209,2.259675405742821,3.8451935081148565,4.2322097378277155,4.544319600499376,6.123595505617978,4.0886392009987516,6.1485642946317105,6.491885143570538,4.519350811485642,2.9151061173533086,1.3982521847690388,1.9038701622971288,6.429463171036204,3.920099875156055,3.139825218476904,1.3670411985018727,6.491885143570538,4.563046192259676,5.580524344569288,2.009987515605493,4.02621722846442,3.5393258426966296,5.967540574282147,0.898876404494382,2.4656679151061174,2.3158551810237205,2.7965043695380776,5.736579275905119,1.3046192259675407,5.399500624219725,4.887640449438202,4.575530586766542, +4.2322097378277155,5.711610486891385,2.752808988764045,5.836454431960051,4.063670411985019,4.157303370786517,1.0923845193508115,3.801498127340824,1.4731585518102372,3.3458177278401995,4.069912609238452,1.7852684144818978,0.7865168539325842,0.8177278401997503,2.1161048689138577,6.429463171036204,5.074906367041199,3.3458177278401995,2.428214731585518,2.066167290886392,4.444444444444445,5.830212234706617,3.4332084893882646,6.061173533083646,5.355805243445693,1.4981273408239701,1.1922596754057428,1.136079900124844,2.3657927590511862,4.525593008739076,0.717852684144819,1.5355805243445693,5.511860174781523,4.425717852684145,1.7478152309612984,3.027465667915106,1.373283395755306,6.741573033707866,4.769038701622971,1.104868913857678,1.1548064918851435,5.3745318352059925,4.31960049937578,1.8601747815230962,1.2921348314606742,1.591760299625468,6.30461922596754,3.339575530586767,1.7290886392009988,5.012484394506866,3.5268414481897628,3.826466916354557,4.631710362047441,6.491885143570538,2.247191011235955,4.02621722846442,4.444444444444445,5.586766541822722,6.491885143570538,3.7578027465667914,2.7715355805243447,3.7578027465667914,3.589263420724095,2.2347066167290888,6.229712858926342,4.013732833957553,2.8589263420724094,6.242197253433209,2.2846441947565546,3.870162297128589,4.263420724094882,4.575530586766542,6.1485642946317105,4.1136079900124844,6.179775280898876,6.491885143570538,4.538077403245943,2.9525593008739075,1.4232209737827717,1.941323345817728,6.491885143570538,3.9450686641697876,3.17103620474407,1.3920099875156053,6.554307116104869,4.581772784019975,5.605493133583021,2.0411985018726595,4.057428214731585,3.5705368289637955,5.992509363295881,0.9238451935081149,2.4968789013732833,2.340823970037453,2.8277153558052435,5.774032459425719,1.34207240948814,5.430711610486892,4.912609238451935,4.600499375780275, +4.263420724094882,5.742821473158552,2.7840199750312107,5.867665418227216,4.0886392009987516,4.18227215980025,1.1173533083645444,3.826466916354557,1.4981273408239701,3.370786516853933,4.0886392009987516,1.8164794007490637,0.8114856429463172,0.8489388264669163,2.1410736579275906,6.429463171036204,5.106117353308365,3.3770287141073654,2.453183520599251,2.091136079900125,4.475655430711611,5.861423220973783,3.4581772784019975,6.092384519350812,5.3870162297128585,1.529338327091136,1.2172284644194757,1.161048689138577,2.397003745318352,4.55056179775281,0.7428214731585518,1.5667915106117354,5.5305867665418225,4.444444444444445,1.766541822721598,3.0524344569288386,1.404494382022472,6.803995006242197,4.794007490636704,1.1235955056179776,1.1735330836454432,5.393258426966292,4.344569288389513,1.8913857677902621,1.3233458177278403,1.616729088639201,6.367041198501872,3.370786516853933,1.766541822721598,5.0374531835206,3.5518102372034956,3.857677902621723,4.656679151061174,6.554307116104869,2.272159800249688,4.051186017478152,4.475655430711611,5.6242197253433215,6.554307116104869,3.7827715355805243,2.7965043695380776,3.776529338327091,3.620474406991261,2.253433208489388,6.242197253433209,4.032459425717852,2.8838951310861427,6.30461922596754,2.303370786516854,3.8951310861423223,4.294631710362047,4.612983770287141,6.173533083645444,4.138576779026217,6.210986267166042,6.491885143570538,4.556803995006242,2.9837702871410734,1.4481897627965044,1.9725343320848938,6.491885143570538,3.9762796504369535,3.202247191011236,1.410736579275905,6.554307116104869,4.606741573033708,5.630461922596755,2.0724094881398254,4.082397003745319,3.6017478152309614,6.023720349563047,0.9488139825218477,2.5280898876404496,2.3657927590511862,2.8589263420724094,5.811485642946318,1.373283395755306,5.461922596754057,4.943820224719102,4.6254681647940075, +4.288389513108614,5.774032459425719,2.82147315855181,5.892634207240949,4.1136079900124844,4.200998751560549,1.136079900124844,3.857677902621723,1.529338327091136,3.3895131086142323,4.1136079900124844,1.8414481897627966,0.8302122347066168,0.8801498127340824,2.1660424469413235,6.491885143570538,5.1373283395755305,3.408239700374532,2.471910112359551,2.1098626716604243,4.500624219725343,5.892634207240949,3.4769038701622974,6.123595505617978,5.418227215980025,1.5605493133583022,1.2484394506866416,1.1860174781523096,2.428214731585518,4.575530586766542,0.7677902621722846,1.5980024968789013,5.555555555555556,4.4694132334581775,1.7915106117353308,3.077403245942572,1.4419475655430714,6.803995006242197,4.818976279650437,1.1423220973782773,1.198501872659176,5.418227215980025,4.369538077403246,1.9225967540574282,1.3545568039950062,1.6416978776529338,6.367041198501872,3.408239700374532,1.797752808988764,5.068664169787765,3.5830212234706615,3.888888888888889,4.681647940074906,6.554307116104869,2.2971285892634206,4.069912609238452,4.500624219725343,5.66167290886392,6.554307116104869,3.8077403245942576,2.8152309612983775,3.801498127340824,3.651685393258427,2.278401997503121,6.30461922596754,4.057428214731585,2.902621722846442,6.30461922596754,2.328339575530587,3.920099875156055,4.325842696629214,4.644194756554308,6.198501872659176,4.169787765293384,6.242197253433209,6.554307116104869,4.581772784019975,3.0212234706616727,1.4731585518102372,2.009987515605493,6.554307116104869,4.00749063670412,3.2397003745318353,1.435705368289638,6.616729088639201,4.631710362047441,5.655430711610487,2.1036204744069913,4.107365792759051,3.639200998751561,6.054931335830212,0.9737827715355806,2.5593008739076155,2.3907615480649187,2.8963795255930087,5.855181023720349,1.410736579275905,5.493133583021224,4.9687890137328345,4.644194756554308, +4.31960049937578,5.805243445692884,2.852684144818976,5.9238451935081144,4.144818976279651,4.225967540574282,1.161048689138577,3.882646691635456,1.5605493133583022,3.4144818976279647,4.132334581772784,1.8726591760299625,0.8551810237203495,0.9051186017478152,2.1910112359550564,6.491885143570538,5.162297128589263,3.439450686641698,2.4968789013732833,2.128589263420724,4.531835205992509,5.9238451935081144,3.5018726591760303,6.154806491885144,5.443196004993759,1.585518102372035,1.2796504369538078,1.2109862671660423,2.459425717852684,4.600499375780275,0.7927590511860175,1.6354556803995006,5.574282147315855,4.488139825218477,1.8164794007490637,3.0961298377028714,1.4731585518102372,6.866416978776529,4.843945068664169,1.161048689138577,1.223470661672909,5.443196004993759,4.400749063670412,1.9600499375780276,1.3857677902621723,1.6729088639200997,6.429463171036204,3.439450686641698,1.8352059925093633,5.099875156054932,3.607990012484395,3.926342072409488,4.712858926342073,6.616729088639201,2.322097378277154,4.0886392009987516,4.531835205992509,5.69912609238452,6.616729088639201,3.8389513108614235,2.8339575530586765,3.8202247191011236,3.682896379525593,2.2971285892634206,6.30461922596754,4.0761548064918856,2.9275905118601746,6.30461922596754,2.35330836454432,3.9450686641697876,4.357053682896379,4.675405742821473,6.217228464419476,4.194756554307116,6.30461922596754,6.554307116104869,4.600499375780275,3.0524344569288386,1.4981273408239701,2.0411985018726595,6.554307116104869,4.038701622971286,3.2709113607990012,1.4544319600499376,6.616729088639201,4.656679151061174,5.68039950062422,2.134831460674157,4.132334581772784,3.6704119850187267,6.079900124843945,0.9925093632958802,2.5905118601747814,2.4219725343320846,2.9275905118601746,5.892634207240949,1.4419475655430714,5.5181023720349565,4.9937578027465666,4.66916354556804, +4.3508114856429465,5.842696629213483,2.8901373283395753,5.948813982521848,4.169787765293384,4.244694132334582,1.1860174781523096,3.9076154806491883,1.585518102372035,3.439450686641698,4.151061173533084,1.9038701622971288,0.8801498127340824,0.9363295880149812,2.209737827715356,6.554307116104869,5.19350811485643,3.470661672908864,2.521847690387016,2.153558052434457,4.563046192259676,5.955056179775282,3.5268414481897628,6.186017478152309,5.474406991260924,1.616729088639201,1.3108614232209737,1.2359550561797754,2.4906367041198503,4.6254681647940075,0.8177278401997503,1.6666666666666667,5.599250936329588,4.51310861423221,1.8352059925093633,3.1210986267166043,1.5106117353308364,6.866416978776529,4.868913857677903,1.1860174781523096,1.2484394506866416,5.461922596754057,4.425717852684145,1.9912609238451935,1.410736579275905,1.6978776529338326,6.429463171036204,3.470661672908864,1.8664169787765295,5.131086142322098,3.639200998751561,3.957553058676654,4.737827715355805,6.616729088639201,2.340823970037453,4.1136079900124844,4.556803995006242,5.736579275905119,6.616729088639201,3.8639200998751564,2.852684144818976,3.8389513108614235,3.714107365792759,2.322097378277154,6.367041198501872,4.1011235955056184,2.9463171036204745,6.367041198501872,2.3782771535580522,3.970037453183521,4.382022471910113,4.70661672908864,6.242197253433209,4.225967540574282,6.30461922596754,6.554307116104869,4.619225967540574,3.089887640449438,1.523096129837703,2.0786516853932584,6.616729088639201,4.069912609238452,3.3021223470661676,1.4794007490636705,6.679151061173534,4.681647940074906,5.705368289637952,2.1660424469413235,4.157303370786517,3.701622971285893,6.111111111111111,1.017478152309613,2.6217228464419473,2.446941323345818,2.958801498127341,5.930087390761548,1.4794007490636705,5.549313358302123,5.0187265917602994,4.694132334581773, +4.382022471910113,5.8739076154806495,2.9213483146067416,5.980024968789014,4.194756554307116,4.269662921348314,1.2047440699126093,3.9325842696629216,1.616729088639201,3.4581772784019975,4.176029962546816,1.9350811485642945,0.898876404494382,0.9675405742821472,2.2347066167290888,6.554307116104869,5.224719101123595,3.5018726591760303,2.546816479400749,2.1722846441947565,4.588014981273409,5.992509363295881,3.5518102372034956,6.217228464419476,5.50561797752809,1.647940074906367,1.34207240948814,1.260923845193508,2.521847690387016,4.65043695380774,0.8426966292134832,1.6978776529338326,5.617977528089888,4.538077403245943,1.8601747815230962,3.1460674157303368,1.5418227215980027,6.928838951310862,4.893882646691636,1.2047440699126093,1.2734082397003745,5.48689138576779,4.450686641697877,2.0224719101123596,1.4419475655430714,1.7228464419475658,6.491885143570538,3.508114856429463,1.8976279650436954,5.15605493133583,3.6641697877652937,3.9950062421972534,4.762796504369538,6.679151061173534,2.3657927590511862,4.132334581772784,4.588014981273409,5.774032459425719,6.616729088639201,3.888888888888889,2.871410736579276,3.8639200998751564,3.745318352059925,2.3470661672908864,6.367041198501872,4.1260923845193505,2.9712858926342074,6.367041198501872,2.4032459425717856,3.9950062421972534,4.413233458177278,4.7440699126092385,6.242197253433209,4.250936329588015,6.367041198501872,6.616729088639201,4.644194756554308,3.1210986267166043,1.5480649188514357,2.1161048689138577,6.679151061173534,4.1011235955056184,3.339575530586767,1.4981273408239701,6.679151061173534,4.70661672908864,5.730337078651686,2.1972534332084894,4.18227215980025,3.732833957553059,6.142322097378277,1.042446941323346,2.6529338327091136,2.471910112359551,2.9962546816479403,5.97378277153558,1.5106117353308364,5.580524344569288,5.043695380774032,4.719101123595506, +4.413233458177278,5.905118601747815,2.9525593008739075,6.004993757802747,4.219725343320849,4.294631710362047,1.229712858926342,3.957553058676654,1.647940074906367,3.4831460674157304,4.194756554307116,1.9600499375780276,0.9238451935081149,0.9987515605493134,2.259675405742821,6.616729088639201,5.2559300873907615,3.5268414481897628,2.571785268414482,2.1972534332084894,4.619225967540574,6.023720349563047,3.576779026217228,6.242197253433209,5.5305867665418225,1.6729088639200997,1.373283395755306,1.285892634207241,2.5530586766541825,4.675405742821473,0.867665418227216,1.735330836454432,5.64294631710362,4.556803995006242,1.8789013732833957,3.17103620474407,1.5792759051186018,6.928838951310862,4.918851435705368,1.223470661672909,1.2983770287141074,5.50561797752809,4.475655430711611,2.0536828963795255,1.4731585518102372,1.7540574282147314,6.491885143570538,3.5393258426966296,1.9350811485642945,5.187265917602996,3.6953807740324596,4.02621722846442,4.787765293383271,6.679151061173534,2.3907615480649187,4.151061173533084,4.612983770287141,5.811485642946318,6.679151061173534,3.920099875156055,2.8901373283395753,3.882646691635456,3.7827715355805243,2.3657927590511862,6.429463171036204,4.144818976279651,2.990012484394507,6.429463171036204,2.428214731585518,4.019975031210986,4.444444444444445,4.775280898876405,6.30461922596754,4.275905118601748,6.367041198501872,6.616729088639201,4.662921348314606,3.1585518102372037,1.5730337078651684,2.1473158551810236,6.679151061173534,4.132334581772784,3.370786516853933,1.523096129837703,6.741573033707866,4.7315855181023725,5.7553058676654185,2.2284644194756553,4.207240948813983,3.764044943820225,6.167290886392011,1.0674157303370786,2.68414481897628,2.4968789013732833,3.027465667915106,6.01123595505618,1.5418227215980027,5.611735330836455,5.068664169787765,4.737827715355805, +4.444444444444445,5.942571785268415,2.990012484394507,6.036204744069912,4.244694132334582,4.313358302122348,1.2546816479400749,3.9887640449438204,1.6791510611735332,3.508114856429463,4.219725343320849,1.9912609238451935,0.9488139825218477,1.0299625468164793,2.2846441947565546,6.616729088639201,5.287141073657928,3.5580524344569286,2.596754057428215,2.215980024968789,4.65043695380774,6.054931335830212,3.6017478152309614,6.30461922596754,5.561797752808988,1.704119850187266,1.3982521847690388,1.3108614232209737,2.5842696629213484,4.700374531835206,0.8926342072409489,1.766541822721598,5.66167290886392,4.581772784019975,1.9038701622971288,3.1897627965043696,1.6104868913857677,6.991260923845194,4.937578027465668,1.2484394506866416,1.3233458177278403,5.5305867665418225,4.506866416978776,2.091136079900125,1.4981273408239701,1.7790262172284643,6.554307116104869,3.5705368289637955,1.9662921348314608,5.218476903870163,3.7265917602996255,4.057428214731585,4.812734082397004,6.741573033707866,2.4157303370786516,4.176029962546816,4.644194756554308,5.848938826466916,6.679151061173534,3.9450686641697876,2.908863920099875,3.9013732833957557,3.81398252184769,2.3907615480649187,6.429463171036204,4.169787765293384,3.0149812734082393,6.429463171036204,2.453183520599251,4.044943820224719,4.475655430711611,4.806491885143571,6.30461922596754,4.307116104868914,6.429463171036204,6.616729088639201,4.681647940074906,3.1897627965043696,1.5980024968789013,2.184769038701623,6.741573033707866,4.16354556803995,3.4019975031210987,1.5418227215980027,6.741573033707866,4.750312109862672,5.7802746566791505,2.259675405742821,4.2322097378277155,3.801498127340824,6.198501872659176,1.0923845193508115,2.715355805243446,2.5280898876404496,3.058676654182272,6.048689138576779,1.5792759051186018,5.64294631710362,5.093632958801498,4.762796504369538, +4.475655430711611,5.97378277153558,3.0212234706616727,6.061173533083646,4.269662921348314,4.33832709113608,1.2734082397003745,4.013732833957553,1.704119850187266,3.5268414481897628,4.238451935081149,2.0224719101123596,0.9675405742821472,1.0549313358302121,2.309612983770287,6.616729088639201,5.318352059925093,3.589263420724095,2.6217228464419473,2.2409488139825218,4.675405742821473,6.086142322097379,3.6267166042446943,6.30461922596754,5.593008739076155,1.735330836454432,1.4294631710362047,1.3358302122347065,2.6154806491885143,4.725343320848939,0.9176029962546817,1.8039950062421974,5.686641697877653,4.600499375780275,1.9288389513108615,3.214731585518102,1.647940074906367,6.991260923845194,4.962546816479401,1.2671660424469413,1.34207240948814,5.549313358302123,4.531835205992509,2.122347066167291,1.529338327091136,1.8039950062421974,6.554307116104869,3.607990012484395,1.9975031210986267,5.249687890137328,3.7515605493133584,4.094881398252185,4.843945068664169,6.803995006242197,2.4406991260923845,4.194756554307116,4.675405742821473,5.8863920099875156,6.741573033707866,3.970037453183521,2.9275905118601746,3.926342072409488,3.8451935081148565,2.4094881398252186,6.491885143570538,4.188514357053683,3.033707865168539,6.429463171036204,2.478152309612984,4.069912609238452,4.506866416978776,4.837702871410737,6.367041198501872,4.332084893882647,6.429463171036204,6.679151061173534,4.70661672908864,3.227215980024969,1.6229712858926344,2.215980024968789,6.803995006242197,4.194756554307116,3.439450686641698,1.5667915106117354,6.803995006242197,4.775280898876405,5.805243445692884,2.2908863920099876,4.257178526841448,3.83270911360799,6.229712858926342,1.1173533083645444,2.746566791510612,2.5530586766541825,3.089887640449438,6.086142322097379,1.6104868913857677,5.674157303370786,5.118601747815231,4.787765293383271, +4.506866416978776,6.004993757802747,3.0524344569288386,6.092384519350812,4.294631710362047,4.3632958801498125,1.2983770287141074,4.038701622971286,1.735330836454432,3.5518102372034956,4.263420724094882,2.0474406991260925,0.9925093632958802,1.0861423220973783,2.33458177278402,6.679151061173534,5.34956304619226,3.620474406991261,2.6466916354556806,2.259675405742821,4.70661672908864,6.117353308364544,3.651685393258427,6.367041198501872,5.617977528089888,1.7602996254681649,1.4606741573033708,1.3607990012484397,2.6466916354556806,4.750312109862672,0.9425717852684146,1.8352059925093633,5.705368289637952,4.6254681647940075,1.9475655430711611,3.2397003745318353,1.6791510611735332,7.0536828963795255,4.987515605493134,1.285892634207241,1.3670411985018727,5.574282147315855,4.556803995006242,2.153558052434457,1.5605493133583022,1.8352059925093633,6.616729088639201,3.639200998751561,2.034956304619226,5.274656679151062,3.7827715355805243,4.1260923845193505,4.868913857677903,6.803995006242197,2.4656679151061174,4.213483146067416,4.700374531835206,5.9238451935081144,6.741573033707866,3.9950062421972534,2.9463171036204745,3.9450686641697876,3.8764044943820224,2.4344569288389515,6.491885143570538,4.213483146067416,3.058676654182272,6.491885143570538,2.5031210986267167,4.094881398252185,4.538077403245943,4.868913857677903,6.367041198501872,4.357053682896379,6.491885143570538,6.679151061173534,4.725343320848939,3.258426966292135,1.647940074906367,2.253433208489388,6.803995006242197,4.225967540574282,3.470661672908864,1.585518102372035,6.803995006242197,4.800249687890138,5.830212234706617,2.322097378277154,4.282147315855181,3.8639200998751564,6.242197253433209,1.136079900124844,2.777777777777778,2.578027465667915,3.1273408239700373,6.129837702871411,1.647940074906367,5.69912609238452,5.149812734082397,4.812734082397004, +4.538077403245943,6.0424469413233455,3.089887640449438,6.117353308364544,4.31960049937578,4.382022471910113,1.3233458177278403,4.063670411985019,1.766541822721598,3.576779026217228,4.282147315855181,2.0786516853932584,1.017478152309613,1.1173533083645444,2.359550561797753,6.679151061173534,5.380774032459426,3.651685393258427,2.671660424469413,2.2846441947565546,4.737827715355805,6.1485642946317105,3.6766541822721597,6.367041198501872,5.6491885143570535,1.7915106117353308,1.4918851435705367,1.3857677902621723,2.68414481897628,4.775280898876405,0.9675405742821472,1.8664169787765295,5.724094881398252,4.65043695380774,1.9725343320848938,3.2646691635455682,1.7166042446941323,7.0536828963795255,5.012484394506866,1.3046192259675407,1.3920099875156053,5.593008739076155,4.588014981273409,2.184769038701623,1.591760299625468,1.8601747815230962,6.616729088639201,3.6766541822721597,2.066167290886392,5.305867665418227,3.8077403245942576,4.16354556803995,4.893882646691636,6.866416978776529,2.4843945068664173,4.238451935081149,4.7315855181023725,5.961298377028713,6.741573033707866,4.02621722846442,2.9712858926342074,3.9637952559300875,3.9076154806491883,2.453183520599251,6.554307116104869,4.238451935081149,3.077403245942572,6.491885143570538,2.5280898876404496,4.1136079900124844,4.569288389513109,4.906367041198502,6.367041198501872,4.388264669163545,6.491885143570538,6.679151061173534,4.7440699126092385,3.2896379525593007,1.6729088639200997,2.2846441947565546,6.866416978776529,4.257178526841448,3.5018726591760303,1.6042446941323347,6.866416978776529,4.825218476903871,5.855181023720349,2.35330836454432,4.307116104868914,3.8951310861423223,6.30461922596754,1.161048689138577,2.808988764044944,2.6092384519350813,3.1585518102372037,6.167290886392011,1.6791510611735332,5.730337078651686,5.174781523096129,4.831460674157303, +4.563046192259676,6.073657927590512,3.1210986267166043,6.1485642946317105,4.344569288389513,4.406991260923846,1.348314606741573,4.0886392009987516,1.797752808988764,3.595505617977528,4.300873907615481,2.1098626716604243,1.0362047440699127,1.1485642946317103,2.3845193508114857,6.741573033707866,5.411985018726591,3.682896379525593,2.696629213483146,2.303370786516854,4.762796504369538,6.179775280898876,3.6953807740324596,6.429463171036204,5.68039950062422,1.8227215980024971,1.523096129837703,1.410736579275905,2.715355805243446,4.800249687890138,0.9925093632958802,1.9038701622971288,5.749063670411985,4.66916354556804,1.9975031210986267,3.2833957553058677,1.7478152309612984,7.116104868913857,5.0374531835206,1.3295880149812733,1.4169787765293382,5.617977528089888,4.612983770287141,2.2222222222222223,1.616729088639201,1.8851435705368291,6.679151061173534,3.7078651685393256,2.1036204744069913,5.337078651685393,3.8389513108614235,4.194756554307116,4.918851435705368,6.866416978776529,2.5093632958801497,4.257178526841448,4.7565543071161045,5.998751560549313,6.803995006242197,4.051186017478152,2.990012484394507,3.9887640449438204,3.938826466916354,2.478152309612984,6.554307116104869,4.257178526841448,3.102372034956305,6.491885143570538,2.546816479400749,4.138576779026217,4.600499375780275,4.937578027465668,6.429463171036204,4.413233458177278,6.554307116104869,6.741573033707866,4.769038701622971,3.3270911360799,1.6978776529338326,2.322097378277154,6.866416978776529,4.288389513108614,3.5393258426966296,1.6292134831460674,6.866416978776529,4.850187265917603,5.880149812734083,2.3845193508114857,4.332084893882647,3.926342072409488,6.30461922596754,1.1860174781523096,2.84019975031211,2.634207240948814,3.1897627965043696,6.20474406991261,1.7166042446941323,5.761548064918852,5.199750312109863,4.856429463171036, +4.594257178526841,6.104868913857677,3.15230961298377,6.173533083645444,4.369538077403246,4.431960049937578,1.3670411985018727,4.119850187265917,1.8227215980024971,3.620474406991261,4.325842696629214,2.1410736579275906,1.0611735330836456,1.1797752808988764,2.4094881398252186,6.741573033707866,5.443196004993759,3.714107365792759,2.7215980024968793,2.328339575530587,4.794007490636704,6.210986267166042,3.7203495630461925,6.429463171036204,5.705368289637952,1.8476903870162298,1.554307116104869,1.435705368289638,2.746566791510612,4.825218476903871,1.0112359550561798,1.9350811485642945,5.767790262172285,4.694132334581773,2.016229712858926,3.3083645443196006,1.7852684144818978,7.116104868913857,5.062421972534332,1.348314606741573,1.4419475655430714,5.636704119850187,4.637952559300874,2.253433208489388,1.647940074906367,1.916354556803995,6.679151061173534,3.7390761548064915,2.134831460674157,5.36828963795256,3.8639200998751564,4.2322097378277155,4.943820224719102,6.928838951310862,2.5343320848938826,4.282147315855181,4.787765293383271,6.036204744069912,6.803995006242197,4.0761548064918856,3.0087390761548067,4.00749063670412,3.970037453183521,2.5031210986267167,6.616729088639201,4.282147315855181,3.1210986267166043,6.554307116104869,2.571785268414482,4.16354556803995,4.631710362047441,4.9687890137328345,6.429463171036204,4.438202247191011,6.554307116104869,6.741573033707866,4.787765293383271,3.3583021223470664,1.7228464419475658,2.359550561797753,6.928838951310862,4.31960049937578,3.5705368289637955,1.647940074906367,6.928838951310862,4.875156054931336,5.905118601747815,2.4157303370786516,4.357053682896379,3.9637952559300875,6.367041198501872,1.2109862671660423,2.871410736579276,2.6591760299625467,3.227215980024969,6.242197253433209,1.7478152309612984,5.792759051186017,5.224719101123595,4.881398252184769, +4.6254681647940075,6.142322097378277,3.1897627965043696,6.20474406991261,4.394506866416979,4.450686641697877,1.3920099875156053,4.144818976279651,1.8539325842696628,3.6454431960049942,4.344569288389513,2.1660424469413235,1.079900124843945,1.2047440699126093,2.4344569288389515,6.803995006242197,5.474406991260924,3.745318352059925,2.746566791510612,2.3470661672908864,4.825218476903871,6.242197253433209,3.745318352059925,6.491885143570538,5.736579275905119,1.8789013732833957,1.5792759051186018,1.4606741573033708,2.777777777777778,4.850187265917603,1.0362047440699127,1.9662921348314608,5.792759051186017,4.712858926342073,2.0411985018726595,3.3333333333333335,1.8164794007490637,7.17852684144819,5.081148564294631,1.3670411985018727,1.466916354556804,5.66167290886392,4.662921348314606,2.2846441947565546,1.6791510611735332,1.941323345817728,6.741573033707866,3.776529338327091,2.1660424469413235,5.393258426966292,3.8951310861423223,4.263420724094882,4.9687890137328345,6.928838951310862,2.5593008739076155,4.300873907615481,4.812734082397004,6.073657927590512,6.866416978776529,4.107365792759051,3.027465667915106,4.02621722846442,4.001248439450687,2.521847690387016,6.616729088639201,4.300873907615481,3.1460674157303368,6.554307116104869,2.596754057428215,4.188514357053683,4.662921348314606,5.0,6.429463171036204,4.4694132334581775,6.616729088639201,6.741573033707866,4.812734082397004,3.3957553058676653,1.7478152309612984,2.3907615480649187,6.991260923845194,4.3508114856429465,3.6017478152309614,1.6729088639200997,6.928838951310862,4.893882646691636,5.930087390761548,2.446941323345818,4.382022471910113,3.9950062421972534,6.367041198501872,1.2359550561797754,2.902621722846442,2.68414481897628,3.258426966292135,6.30461922596754,1.7852684144818978,5.823970037453184,5.249687890137328,4.906367041198502, +4.656679151061174,6.173533083645444,3.2209737827715355,6.229712858926342,4.419475655430712,4.475655430711611,1.4169787765293382,4.169787765293384,1.8851435705368291,3.6641697877652937,4.369538077403246,2.1972534332084894,1.104868913857678,1.2359550561797754,2.459425717852684,6.803995006242197,5.50561797752809,3.776529338327091,2.7715355805243447,2.3720349563046192,4.850187265917603,6.30461922596754,3.7702871410736583,6.491885143570538,5.767790262172285,1.9101123595505618,1.6104868913857677,1.4856429463171037,2.808988764044944,4.875156054931336,1.0611735330836456,2.00374531835206,5.811485642946318,4.737827715355805,2.0599250936329585,3.3583021223470664,1.8539325842696628,7.17852684144819,5.106117353308365,1.3920099875156053,1.4856429463171037,5.686641697877653,4.694132334581773,2.3158551810237205,1.704119850187266,1.9662921348314608,6.741573033707866,3.8077403245942576,2.203495630461923,5.424469413233458,3.926342072409488,4.294631710362047,5.0,6.991260923845194,2.5842696629213484,4.31960049937578,4.843945068664169,6.111111111111111,6.866416978776529,4.132334581772784,3.046192259675406,4.051186017478152,4.032459425717852,2.546816479400749,6.679151061173534,4.325842696629214,3.1647940074906367,6.554307116104869,2.6217228464419473,4.213483146067416,4.694132334581773,5.0374531835206,6.491885143570538,4.49438202247191,6.616729088639201,6.803995006242197,4.831460674157303,3.4269662921348316,1.772784019975031,2.428214731585518,6.991260923845194,4.382022471910113,3.639200998751561,1.6916354556803994,6.991260923845194,4.918851435705368,5.955056179775282,2.478152309612984,4.406991260923846,4.02621722846442,6.429463171036204,1.260923845193508,2.933832709113608,2.715355805243446,3.2896379525593007,6.30461922596754,1.8164794007490637,5.855181023720349,5.274656679151062,4.925093632958801, +4.687890137328339,6.20474406991261,3.258426966292135,6.242197253433209,4.444444444444445,4.500624219725343,1.435705368289638,4.194756554307116,1.916354556803995,3.689138576779026,4.388264669163545,2.2284644194756553,1.1298377028714106,1.2671660424469413,2.4843945068664173,6.866416978776529,5.536828963795256,3.8077403245942576,2.7965043695380776,2.3907615480649187,4.881398252184769,6.30461922596754,3.7952559300873907,6.554307116104869,5.799001248439451,1.9350811485642945,1.6416978776529338,1.5106117353308364,2.84019975031211,4.900124843945068,1.0861423220973783,2.034956304619226,5.836454431960051,4.7565543071161045,2.084893882646692,3.3770287141073654,1.8851435705368291,7.240948813982522,5.131086142322098,1.410736579275905,1.5106117353308364,5.705368289637952,4.719101123595506,2.35330836454432,1.735330836454432,1.9975031210986267,6.803995006242197,3.8389513108614235,2.2347066167290888,5.455680399500624,3.951310861423221,4.332084893882647,5.024968789013733,7.0536828963795255,2.602996254681648,4.344569288389513,4.868913857677903,6.1485642946317105,6.866416978776529,4.157303370786517,3.0649188514357055,4.069912609238452,4.063670411985019,2.565543071161049,6.679151061173534,4.3508114856429465,3.1897627965043696,6.616729088639201,2.6466916354556806,4.238451935081149,4.725343320848939,5.068664169787765,6.491885143570538,4.519350811485642,6.679151061173534,6.803995006242197,4.850187265917603,3.464419475655431,1.797752808988764,2.459425717852684,7.0536828963795255,4.413233458177278,3.6704119850187267,1.7166042446941323,6.991260923845194,4.943820224719102,5.980024968789014,2.5093632958801497,4.431960049937578,4.057428214731585,6.429463171036204,1.285892634207241,2.965043695380774,2.740324594257179,3.3270911360799,6.367041198501872,1.8476903870162298,5.880149812734083,5.299625468164794,4.950062421972534, +4.719101123595506,6.242197253433209,3.2896379525593007,6.30461922596754,4.4694132334581775,4.519350811485642,1.4606741573033708,4.219725343320849,1.941323345817728,3.714107365792759,4.413233458177278,2.259675405742821,1.1485642946317103,1.2983770287141074,2.5093632958801497,6.866416978776529,5.568039950062421,3.8389513108614235,2.82147315855181,2.4157303370786516,4.912609238451935,6.367041198501872,3.8202247191011236,6.554307116104869,5.823970037453184,1.9662921348314608,1.6729088639200997,1.5355805243445693,2.871410736579276,4.925093632958801,1.1111111111111112,2.0724094881398254,5.855181023720349,4.781523096129837,2.1098626716604243,3.4019975031210987,1.9225967540574282,7.240948813982522,5.15605493133583,1.4294631710362047,1.5355805243445693,5.730337078651686,4.7440699126092385,2.3845193508114857,1.766541822721598,2.0224719101123596,6.803995006242197,3.8764044943820224,2.272159800249688,5.48689138576779,3.982521847690387,4.3632958801498125,5.049937578027466,7.0536828963795255,2.6279650436953808,4.3632958801498125,4.900124843945068,6.186017478152309,6.928838951310862,4.188514357053683,3.0836454431960054,4.0886392009987516,4.094881398252185,2.5905118601747814,6.741573033707866,4.369538077403246,3.2084893882646695,6.616729088639201,2.671660424469413,4.263420724094882,4.750312109862672,5.099875156054932,6.491885143570538,4.55056179775281,6.679151061173534,6.803995006242197,4.875156054931336,3.495630461922597,1.8227215980024971,2.4968789013732833,7.116104868913857,4.444444444444445,3.7078651685393256,1.735330836454432,7.0536828963795255,4.9687890137328345,6.01123595505618,2.5405742821473156,4.456928838951311,4.0886392009987516,6.491885143570538,1.3046192259675407,2.9962546816479403,2.7652933832709112,3.3583021223470664,6.429463171036204,1.8851435705368291,5.9113607990012484,5.324594257178527,4.975031210986267, +4.750312109862672,6.30461922596754,3.320848938826467,6.30461922596754,4.49438202247191,4.544319600499376,1.4856429463171037,4.250936329588015,1.9725343320848938,3.732833957553059,4.431960049937578,2.2846441947565546,1.1735330836454432,1.3295880149812733,2.5343320848938826,6.928838951310862,5.599250936329588,3.870162297128589,2.84019975031211,2.4344569288389515,4.937578027465668,6.367041198501872,3.8451935081148565,6.616729088639201,5.855181023720349,1.9975031210986267,1.704119850187266,1.5605493133583022,2.902621722846442,4.950062421972534,1.136079900124844,2.1036204744069913,5.880149812734083,4.806491885143571,2.128589263420724,3.4269662921348316,1.9600499375780276,7.303370786516854,5.181023720349563,1.4544319600499376,1.5605493133583022,5.749063670411985,4.775280898876405,2.4157303370786516,1.797752808988764,2.0474406991260925,6.866416978776529,3.9076154806491883,2.303370786516854,5.511860174781523,4.00749063670412,4.400749063670412,5.074906367041199,7.116104868913857,2.6529338327091136,4.382022471910113,4.931335830212235,6.223470661672909,6.928838951310862,4.213483146067416,3.102372034956305,4.1136079900124844,4.132334581772784,2.6092384519350813,6.741573033707866,4.394506866416979,3.227215980024969,6.616729088639201,2.696629213483146,4.288389513108614,4.781523096129837,5.131086142322098,6.554307116104869,4.575530586766542,6.741573033707866,6.866416978776529,4.893882646691636,3.533083645443196,1.8476903870162298,2.5343320848938826,7.116104868913857,4.475655430711611,3.7390761548064915,1.7602996254681649,7.0536828963795255,4.9937578027465666,6.036204744069912,2.571785268414482,4.4818976279650435,4.119850187265917,6.491885143570538,1.3295880149812733,3.027465667915106,2.790262172284644,3.3895131086142323,6.429463171036204,1.916354556803995,5.942571785268415,5.355805243445693,4.9937578027465666, +4.781523096129837,6.30461922596754,3.3583021223470664,6.367041198501872,4.519350811485642,4.563046192259676,1.5043695380774034,4.275905118601748,2.00374531835206,3.7578027465667914,4.450686641697877,2.3158551810237205,1.198501872659176,1.3545568039950062,2.5593008739076155,6.928838951310862,5.630461922596755,3.9013732833957557,2.865168539325843,2.453183520599251,4.9687890137328345,6.429463171036204,3.870162297128589,6.616729088639201,5.8863920099875156,2.0287141073657926,1.7290886392009988,1.585518102372035,2.933832709113608,4.975031210986267,1.161048689138577,2.134831460674157,5.8988764044943816,4.825218476903871,2.153558052434457,3.4456928838951315,1.9912609238451935,7.303370786516854,5.205992509363296,1.4731585518102372,1.585518102372035,5.774032459425719,4.800249687890138,2.446941323345818,1.8227215980024971,2.0786516853932584,6.866416978776529,3.938826466916354,2.33458177278402,5.543071161048689,4.038701622971286,4.431960049937578,5.099875156054932,7.116104868913857,2.6779026217228465,4.406991260923846,4.956304619225968,6.242197253433209,6.991260923845194,4.238451935081149,3.1273408239700373,4.132334581772784,4.16354556803995,2.634207240948814,6.803995006242197,4.413233458177278,3.2521847690387014,6.679151061173534,2.7215980024968793,4.313358302122348,4.812734082397004,5.168539325842697,6.554307116104869,4.606741573033708,6.741573033707866,6.866416978776529,4.912609238451935,3.564294631710362,1.8726591760299625,2.565543071161049,7.17852684144819,4.500624219725343,3.7702871410736583,1.7790262172284643,7.116104868913857,5.0187265917602994,6.061173533083646,2.602996254681648,4.506866416978776,4.157303370786517,6.491885143570538,1.3545568039950062,3.058676654182272,2.82147315855181,3.420724094881398,6.491885143570538,1.9538077403245941,5.97378277153558,5.380774032459426,5.0187265917602994, +4.806491885143571,6.367041198501872,3.3895131086142323,6.367041198501872,4.544319600499376,4.588014981273409,1.529338327091136,4.300873907615481,2.034956304619226,3.7827715355805243,4.475655430711611,2.3470661672908864,1.2172284644194757,1.3857677902621723,2.5842696629213484,6.991260923845194,5.66167290886392,3.9325842696629216,2.8901373283395753,2.478152309612984,5.0,6.429463171036204,3.8951310861423223,6.679151061173534,5.9113607990012484,2.0536828963795255,1.7602996254681649,1.6104868913857677,2.965043695380774,5.0,1.1860174781523096,2.1722846441947565,5.917602996254682,4.850187265917603,2.1722846441947565,3.470661672908864,2.0287141073657926,7.365792759051186,5.230961298377029,1.4918851435705367,1.6104868913857677,5.792759051186017,4.825218476903871,2.4843945068664173,1.8539325842696628,2.1036204744069913,6.928838951310862,3.9762796504369535,2.3720349563046192,5.574282147315855,4.063670411985019,4.4694132334581775,5.131086142322098,7.17852684144819,2.702871410736579,4.425717852684145,4.987515605493134,6.30461922596754,6.991260923845194,4.269662921348314,3.1460674157303368,4.151061173533084,4.194756554307116,2.6591760299625467,6.803995006242197,4.438202247191011,3.2709113607990012,6.679151061173534,2.746566791510612,4.33832709113608,4.843945068664169,5.199750312109863,6.616729088639201,4.631710362047441,6.803995006242197,6.866416978776529,4.937578027465668,3.6017478152309614,1.8976279650436954,2.602996254681648,7.17852684144819,4.531835205992509,3.8077403245942576,1.8039950062421974,7.116104868913857,5.043695380774032,6.086142322097379,2.634207240948814,4.531835205992509,4.188514357053683,6.554307116104869,1.3795255930087391,3.0836454431960054,2.8464419475655434,3.4581772784019975,6.491885143570538,1.9850187265917605,6.004993757802747,5.405742821473158,5.043695380774032, +4.837702871410737,6.367041198501872,3.420724094881398,6.367041198501872,4.569288389513109,4.612983770287141,1.554307116104869,4.325842696629214,2.0599250936329585,3.801498127340824,4.49438202247191,2.3720349563046192,1.2421972534332086,1.4169787765293382,2.6092384519350813,6.991260923845194,5.692883895131087,3.9637952559300875,2.9151061173533086,2.4968789013732833,5.024968789013733,6.491885143570538,3.9138576779026217,6.679151061173534,5.942571785268415,2.084893882646692,1.7915106117353308,1.6354556803995006,2.9962546816479403,5.024968789013733,1.2109862671660423,2.203495630461923,5.942571785268415,4.868913857677903,2.1972534332084894,3.495630461922597,2.0599250936329585,7.365792759051186,5.249687890137328,1.5106117353308364,1.6354556803995006,5.81772784019975,4.850187265917603,2.515605493133583,1.8851435705368291,2.128589263420724,6.928838951310862,4.00749063670412,2.4032459425717856,5.605493133583021,4.094881398252185,4.500624219725343,5.15605493133583,7.17852684144819,2.727840199750312,4.444444444444445,5.012484394506866,6.30461922596754,6.991260923845194,4.294631710362047,3.1647940074906367,4.176029962546816,4.225967540574282,2.6779026217228465,6.866416978776529,4.463171036204744,3.295880149812734,6.679151061173534,2.7715355805243447,4.3632958801498125,4.875156054931336,5.230961298377029,6.616729088639201,4.656679151061174,6.803995006242197,6.928838951310862,4.956304619225968,3.6329588014981273,1.9225967540574282,2.634207240948814,7.240948813982522,4.563046192259676,3.8389513108614235,1.8227215980024971,7.17852684144819,5.062421972534332,6.111111111111111,2.66541822721598,4.556803995006242,4.219725343320849,6.554307116104869,1.404494382022472,3.114856429463171,2.871410736579276,3.4893882646691634,6.554307116104869,2.0224719101123596,6.036204744069912,5.430711610486892,5.068664169787765, +4.868913857677903,6.429463171036204,3.4581772784019975,6.429463171036204,4.594257178526841,4.631710362047441,1.5730337078651684,4.357053682896379,2.091136079900125,3.826466916354557,4.519350811485642,2.4032459425717856,1.2671660424469413,1.4481897627965044,2.634207240948814,7.0536828963795255,5.724094881398252,3.9950062421972534,2.9400749063670415,2.521847690387016,5.056179775280899,6.491885143570538,3.938826466916354,6.741573033707866,5.97378277153558,2.1161048689138577,1.8227215980024971,1.6604244694132335,3.033707865168539,5.049937578027466,1.2359550561797754,2.2347066167290888,5.961298377028713,4.893882646691636,2.2222222222222223,3.5205992509363297,2.097378277153558,7.428214731585518,5.274656679151062,1.5355805243445693,1.6541822721598003,5.836454431960051,4.881398252184769,2.546816479400749,1.9101123595505618,2.15980024968789,6.991260923845194,4.044943820224719,2.4344569288389515,5.630461922596755,4.1260923845193505,4.531835205992509,5.181023720349563,7.240948813982522,2.746566791510612,4.4694132334581775,5.043695380774032,6.367041198501872,7.0536828963795255,4.31960049937578,3.183520599250936,4.194756554307116,4.257178526841448,2.702871410736579,6.866416978776529,4.4818976279650435,3.3146067415730336,6.741573033707866,2.790262172284644,4.388264669163545,4.906367041198502,5.262172284644195,6.616729088639201,4.687890137328339,6.803995006242197,6.928838951310862,4.975031210986267,3.6704119850187267,1.941323345817728,2.671660424469413,7.303370786516854,4.594257178526841,3.870162297128589,1.8476903870162298,7.17852684144819,5.087390761548065,6.1360799001248445,2.696629213483146,4.588014981273409,4.250936329588015,6.616729088639201,1.4294631710362047,3.1460674157303368,2.8963795255930087,3.5205992509363297,6.616729088639201,2.0536828963795255,6.061173533083646,5.455680399500624,5.087390761548065, +4.900124843945068,6.429463171036204,3.4893882646691634,6.429463171036204,4.619225967540574,4.656679151061174,1.5980024968789013,4.382022471910113,2.122347066167291,3.8451935081148565,4.538077403245943,2.4344569288389515,1.285892634207241,1.4731585518102372,2.6529338327091136,7.0536828963795255,5.7553058676654185,4.02621722846442,2.965043695380774,2.5405742821473156,5.087390761548065,6.554307116104869,3.9637952559300875,6.741573033707866,5.998751560549313,2.1410736579275906,1.8539325842696628,1.6853932584269664,3.0649188514357055,5.074906367041199,1.260923845193508,2.272159800249688,5.986267166042447,4.912609238451935,2.2409488139825218,3.5393258426966296,2.128589263420724,7.428214731585518,5.299625468164794,1.554307116104869,1.6791510611735332,5.861423220973783,4.906367041198502,2.578027465667915,1.941323345817728,2.184769038701623,6.991260923845194,4.0761548064918856,2.471910112359551,5.66167290886392,4.151061173533084,4.569288389513109,5.205992509363296,7.303370786516854,2.7715355805243447,4.488139825218477,5.068664169787765,6.429463171036204,7.0536828963795255,4.3508114856429465,3.202247191011236,4.213483146067416,4.288389513108614,2.7215980024968793,6.928838951310862,4.506866416978776,3.339575530586767,6.741573033707866,2.8152309612983775,4.413233458177278,4.937578027465668,5.299625468164794,6.679151061173534,4.712858926342073,6.866416978776529,6.928838951310862,5.0,3.701622971285893,1.9662921348314608,2.702871410736579,7.303370786516854,4.6254681647940075,3.9076154806491883,1.8664169787765295,7.240948813982522,5.1123595505617985,6.161048689138577,2.727840199750312,4.612983770287141,4.282147315855181,6.616729088639201,1.4481897627965044,3.1772784019975036,2.9275905118601746,3.5580524344569286,6.616729088639201,2.091136079900125,6.092384519350812,5.480649188514358,5.1123595505617985, +4.931335830212235,6.491885143570538,3.5205992509363297,6.491885143570538,4.644194756554308,4.681647940074906,1.6229712858926344,4.406991260923846,2.153558052434457,3.870162297128589,4.563046192259676,2.4656679151061174,1.3108614232209737,1.5043695380774034,2.6779026217228465,7.116104868913857,5.786516853932584,4.057428214731585,2.990012484394507,2.565543071161049,5.1123595505617985,6.554307116104869,3.9887640449438204,6.803995006242197,6.029962546816479,2.1722846441947565,1.8851435705368291,1.710362047440699,3.0961298377028714,5.099875156054932,1.285892634207241,2.303370786516854,6.004993757802747,4.937578027465668,2.2659176029962547,3.564294631710362,2.1660424469413235,7.49063670411985,5.324594257178527,1.5730337078651684,1.704119850187266,5.8863920099875156,4.931335830212235,2.6154806491885143,1.9725343320848938,2.209737827715356,7.0536828963795255,4.107365792759051,2.5031210986267167,5.692883895131087,4.18227215980025,4.600499375780275,5.230961298377029,7.303370786516854,2.7965043695380776,4.506866416978776,5.099875156054932,6.429463171036204,7.116104868913857,4.375780274656679,3.2209737827715355,4.238451935081149,4.31960049937578,2.746566791510612,6.928838951310862,4.525593008739076,3.3583021223470664,6.741573033707866,2.84019975031211,4.438202247191011,4.9687890137328345,5.33083645443196,6.679151061173534,4.737827715355805,6.866416978776529,6.991260923845194,5.0187265917602994,3.732833957553059,1.9912609238451935,2.740324594257179,7.365792759051186,4.656679151061174,3.938826466916354,1.8913857677902621,7.240948813982522,5.1373283395755305,6.186017478152309,2.7590511860174782,4.637952559300874,4.31960049937578,6.679151061173534,1.4731585518102372,3.2084893882646695,2.9525593008739075,3.589263420724095,6.679151061173534,2.122347066167291,6.123595505617978,5.50561797752809,5.1373283395755305, +4.962546816479401,6.491885143570538,3.5580524344569286,6.491885143570538,4.66916354556804,4.700374531835206,1.6416978776529338,4.431960049937578,2.1785268414481895,3.8951310861423223,4.581772784019975,2.4906367041198503,1.3358302122347065,1.5355805243445693,2.702871410736579,7.116104868913857,5.81772784019975,4.0886392009987516,3.0149812734082393,2.5842696629213484,5.143570536828964,6.616729088639201,4.013732833957553,6.803995006242197,6.061173533083646,2.203495630461923,1.9101123595505618,1.735330836454432,3.1273408239700373,5.118601747815231,1.3108614232209737,2.340823970037453,6.029962546816479,4.962546816479401,2.2846441947565546,3.589263420724095,2.1972534332084894,7.49063670411985,5.34956304619226,1.5980024968789013,1.7290886392009988,5.905118601747815,4.962546816479401,2.6466916354556806,2.00374531835206,2.2409488139825218,7.0536828963795255,4.144818976279651,2.5405742821473156,5.724094881398252,4.207240948813983,4.637952559300874,5.262172284644195,7.365792759051186,2.82147315855181,4.531835205992509,5.1248439450686645,6.491885143570538,7.116104868913857,4.400749063670412,3.2397003745318353,4.257178526841448,4.3508114856429465,2.7715355805243447,6.991260923845194,4.55056179775281,3.383270911360799,6.803995006242197,2.865168539325843,4.463171036204744,5.0,5.3620474406991265,6.679151061173534,4.769038701622971,6.928838951310862,6.991260923845194,5.0374531835206,3.7702871410736583,2.016229712858926,2.777777777777778,7.428214731585518,4.687890137328339,3.970037453183521,1.9101123595505618,7.303370786516854,5.162297128589263,6.210986267166042,2.790262172284644,4.662921348314606,4.3508114856429465,6.679151061173534,1.4981273408239701,3.2397003745318353,2.977528089887641,3.620474406991261,6.741573033707866,2.153558052434457,6.154806491885144,5.5305867665418225,5.162297128589263, +4.9937578027465666,6.554307116104869,3.589263420724095,6.554307116104869,4.694132334581773,4.725343320848939,1.6666666666666667,4.456928838951311,2.209737827715356,3.9138576779026217,4.600499375780275,2.521847690387016,1.3545568039950062,1.5667915106117354,2.727840199750312,7.17852684144819,5.848938826466916,4.119850187265917,3.0399500624219726,2.6092384519350813,5.174781523096129,6.616729088639201,4.038701622971286,6.866416978776529,6.086142322097379,2.2284644194756553,1.941323345817728,1.7602996254681649,3.1585518102372037,5.143570536828964,1.3358302122347065,2.3720349563046192,6.048689138576779,4.9812734082397006,2.309612983770287,3.6142322097378274,2.2347066167290888,7.553058676654182,5.3745318352059925,1.616729088639201,1.7540574282147314,5.930087390761548,4.987515605493134,2.6779026217228465,2.0287141073657926,2.2659176029962547,7.116104868913857,4.176029962546816,2.571785268414482,5.749063670411985,4.238451935081149,4.66916354556804,5.287141073657928,7.365792759051186,2.8464419475655434,4.55056179775281,5.15605493133583,6.491885143570538,7.116104868913857,4.431960049937578,3.258426966292135,4.275905118601748,4.382022471910113,2.790262172284644,6.991260923845194,4.575530586766542,3.4019975031210987,6.803995006242197,2.8901373283395753,4.488139825218477,5.031210986267166,5.393258426966292,6.741573033707866,4.794007490636704,6.928838951310862,6.991260923845194,5.062421972534332,3.801498127340824,2.0411985018726595,2.808988764044944,7.428214731585518,4.719101123595506,4.00749063670412,1.9350811485642945,7.303370786516854,5.187265917602996,6.235955056179775,2.82147315855181,4.687890137328339,4.382022471910113,6.741573033707866,1.523096129837703,3.2709113607990012,3.0087390761548067,3.6579275905118602,6.741573033707866,2.1910112359550564,6.186017478152309,5.561797752808988,5.181023720349563, +5.024968789013733,6.554307116104869,3.6267166042446943,6.554307116104869,4.719101123595506,4.750312109862672,1.6916354556803994,4.488139825218477,2.2409488139825218,3.938826466916354,4.6254681647940075,2.5530586766541825,1.3795255930087391,1.5980024968789013,2.752808988764045,7.17852684144819,5.880149812734083,4.151061173533084,3.0649188514357055,2.6279650436953808,5.199750312109863,6.679151061173534,4.063670411985019,6.866416978776529,6.117353308364544,2.259675405742821,1.9725343320848938,1.7852684144818978,3.1897627965043696,5.168539325842697,1.3607990012484397,2.4032459425717856,6.073657927590512,5.0062421972534334,2.33458177278402,3.6329588014981273,2.2659176029962547,7.553058676654182,5.393258426966292,1.6354556803995006,1.7790262172284643,5.948813982521848,5.012484394506866,2.715355805243446,2.0599250936329585,2.2908863920099876,7.116104868913857,4.207240948813983,2.602996254681648,5.7802746566791505,4.269662921348314,4.700374531835206,5.312109862671661,7.428214731585518,2.865168539325843,4.575530586766542,5.181023720349563,6.554307116104869,7.17852684144819,4.456928838951311,3.2771535580524347,4.300873907615481,4.413233458177278,2.8152309612983775,7.0536828963795255,4.594257178526841,3.4269662921348316,6.803995006242197,2.9151061173533086,4.51310861423221,5.062421972534332,5.424469413233458,6.741573033707866,4.818976279650437,6.991260923845194,7.0536828963795255,5.081148564294631,3.8389513108614235,2.066167290886392,2.8464419475655434,7.49063670411985,4.750312109862672,4.038701622971286,1.9538077403245941,7.365792759051186,5.212234706616729,6.242197253433209,2.852684144818976,4.712858926342073,4.413233458177278,6.741573033707866,1.5480649188514357,3.3021223470661676,3.033707865168539,3.689138576779026,6.803995006242197,2.2222222222222223,6.217228464419476,5.586766541822722,5.205992509363296, +5.056179775280899,6.616729088639201,3.6579275905118602,6.616729088639201,4.7440699126092385,4.769038701622971,1.710362047440699,4.51310861423221,2.272159800249688,3.9637952559300875,4.644194756554308,2.5842696629213484,1.404494382022472,1.6229712858926344,2.777777777777778,7.17852684144819,5.9113607990012484,4.18227215980025,3.089887640449438,2.6529338327091136,5.230961298377029,6.679151061173534,4.0886392009987516,6.928838951310862,6.1485642946317105,2.2908863920099876,2.00374531835206,1.8102372034956304,3.2209737827715355,5.19350811485643,1.3857677902621723,2.4406991260923845,6.092384519350812,5.024968789013733,2.35330836454432,3.6579275905118602,2.303370786516854,7.615480649188515,5.418227215980025,1.6541822721598003,1.8039950062421974,5.97378277153558,5.0374531835206,2.746566791510612,2.091136079900125,2.322097378277154,7.17852684144819,4.244694132334582,2.640449438202247,5.811485642946318,4.294631710362047,4.737827715355805,5.337078651685393,7.428214731585518,2.8901373283395753,4.594257178526841,5.212234706616729,6.616729088639201,7.17852684144819,4.4818976279650435,3.3021223470661676,4.31960049937578,4.444444444444445,2.8339575530586765,7.0536828963795255,4.619225967540574,3.4456928838951315,6.866416978776529,2.9400749063670415,4.538077403245943,5.093632958801498,5.461922596754057,6.803995006242197,4.850187265917603,6.991260923845194,7.0536828963795255,5.099875156054932,3.870162297128589,2.091136079900125,2.8776529338327093,7.49063670411985,4.781523096129837,4.069912609238452,1.9725343320848938,7.365792759051186,5.230961298377029,6.30461922596754,2.8838951310861427,4.737827715355805,4.444444444444445,6.803995006242197,1.5730337078651684,3.3333333333333335,3.058676654182272,3.7203495630461925,6.803995006242197,2.259675405742821,6.242197253433209,5.611735330836455,5.230961298377029, +5.081148564294631,6.616729088639201,3.689138576779026,6.616729088639201,4.775280898876405,4.794007490636704,1.735330836454432,4.538077403245943,2.2971285892634206,3.982521847690387,4.66916354556804,2.6092384519350813,1.4232209737827717,1.6541822721598003,2.8027465667915106,7.240948813982522,5.942571785268415,4.213483146067416,3.114856429463171,2.671660424469413,5.262172284644195,6.741573033707866,4.1136079900124844,6.928838951310862,6.179775280898876,2.3158551810237205,2.034956304619226,1.8352059925093633,3.2521847690387014,5.218476903870163,1.410736579275905,2.471910112359551,6.111111111111111,5.049937578027466,2.3782771535580522,3.682896379525593,2.33458177278402,7.615480649188515,5.443196004993759,1.6791510611735332,1.8227215980024971,5.992509363295881,5.068664169787765,2.777777777777778,2.1161048689138577,2.3470661672908864,7.17852684144819,4.275905118601748,2.671660424469413,5.842696629213483,4.325842696629214,4.769038701622971,5.3620474406991265,7.49063670411985,2.9151061173533086,4.612983770287141,5.243445692883895,6.616729088639201,7.240948813982522,4.51310861423221,3.320848938826467,4.33832709113608,4.4818976279650435,2.8589263420724094,7.116104868913857,4.637952559300874,3.470661672908864,6.866416978776529,2.965043695380774,4.563046192259676,5.118601747815231,5.493133583021224,6.803995006242197,4.875156054931336,7.0536828963795255,7.0536828963795255,5.1248439450686645,3.9076154806491883,2.1161048689138577,2.9151061173533086,7.553058676654182,4.812734082397004,4.107365792759051,1.9975031210986267,7.428214731585518,5.2559300873907615,6.30461922596754,2.9151061173533086,4.762796504369538,4.475655430711611,6.803995006242197,1.5980024968789013,3.3645443196004994,3.0836454431960054,3.7515605493133584,6.866416978776529,2.2908863920099876,6.30461922596754,5.636704119850187,5.2559300873907615, +5.1123595505617985,6.679151061173534,3.7265917602996255,6.679151061173534,4.800249687890138,4.818976279650437,1.7602996254681649,4.563046192259676,2.328339575530587,4.00749063670412,4.687890137328339,2.640449438202247,1.4481897627965044,1.6853932584269664,2.8277153558052435,7.240948813982522,5.97378277153558,4.238451935081149,3.139825218476904,2.696629213483146,5.287141073657928,6.741573033707866,4.132334581772784,6.991260923845194,6.20474406991261,2.3470661672908864,2.066167290886392,1.8601747815230962,3.2833957553058677,5.243445692883895,1.435705368289638,2.5031210986267167,6.1360799001248445,5.068664169787765,2.397003745318352,3.7078651685393256,2.3720349563046192,7.677902621722847,5.468164794007491,1.6978776529338326,1.8476903870162298,6.0174781523096135,5.093632958801498,2.808988764044944,2.1473158551810236,2.3720349563046192,7.240948813982522,4.307116104868914,2.7091136079900124,5.867665418227216,4.3508114856429465,4.806491885143571,5.393258426966292,7.553058676654182,2.9400749063670415,4.637952559300874,5.268414481897628,6.679151061173534,7.240948813982522,4.538077403245943,3.339575530586767,4.3632958801498125,4.51310861423221,2.8776529338327093,7.116104868913857,4.662921348314606,3.4893882646691634,6.866416978776529,2.990012484394507,4.588014981273409,5.149812734082397,5.524344569288389,6.803995006242197,4.900124843945068,7.0536828963795255,7.116104868913857,5.143570536828964,3.938826466916354,2.1410736579275906,2.9463171036204745,7.615480649188515,4.843945068664169,4.138576779026217,2.016229712858926,7.428214731585518,5.280898876404494,6.367041198501872,2.9463171036204745,4.787765293383271,4.51310861423221,6.866416978776529,1.616729088639201,3.3957553058676653,3.114856429463171,3.7890137328339577,6.928838951310862,2.328339575530587,6.30461922596754,5.66167290886392,5.274656679151062, +5.143570536828964,6.679151061173534,3.7578027465667914,6.679151061173534,4.825218476903871,4.837702871410737,1.7790262172284643,4.588014981273409,2.359550561797753,4.032459425717852,4.712858926342073,2.671660424469413,1.4731585518102372,1.7166042446941323,2.852684144818976,7.303370786516854,6.004993757802747,4.269662921348314,3.1647940074906367,2.715355805243446,5.318352059925093,6.803995006242197,4.157303370786517,6.991260923845194,6.235955056179775,2.3782771535580522,2.091136079900125,1.8851435705368291,3.3146067415730336,5.268414481897628,1.4606741573033708,2.5405742821473156,6.154806491885144,5.093632958801498,2.4219725343320846,3.7265917602996255,2.4032459425717856,7.677902621722847,5.493133583021224,1.7166042446941323,1.8726591760299625,6.036204744069912,5.118601747815231,2.8464419475655434,2.1785268414481895,2.4032459425717856,7.240948813982522,4.344569288389513,2.740324594257179,5.8988764044943816,4.382022471910113,4.837702871410737,5.418227215980025,7.553058676654182,2.965043695380774,4.656679151061174,5.299625468164794,6.679151061173534,7.303370786516854,4.563046192259676,3.3583021223470664,4.382022471910113,4.544319600499376,2.902621722846442,7.17852684144819,4.687890137328339,3.5143570536828963,6.928838951310862,3.0149812734082393,4.612983770287141,5.181023720349563,5.555555555555556,6.866416978776529,4.931335830212235,7.116104868913857,7.116104868913857,5.168539325842697,3.9762796504369535,2.1660424469413235,2.9837702871410734,7.615480649188515,4.875156054931336,4.169787765293384,2.0411985018726595,7.49063670411985,5.305867665418227,6.367041198501872,2.977528089887641,4.812734082397004,4.544319600499376,6.866416978776529,1.6416978776529338,3.4269662921348316,3.139825218476904,3.8202247191011236,6.928838951310862,2.359550561797753,6.367041198501872,5.686641697877653,5.299625468164794, +5.174781523096129,6.741573033707866,3.7890137328339577,6.679151061173534,4.850187265917603,4.8626716604244695,1.8039950062421974,4.619225967540574,2.3845193508114857,4.051186017478152,4.7315855181023725,2.702871410736579,1.4918851435705367,1.7478152309612984,2.8776529338327093,7.303370786516854,6.036204744069912,4.300873907615481,3.183520599250936,2.740324594257179,5.34956304619226,6.803995006242197,4.18227215980025,7.0536828963795255,6.242197253433209,2.4032459425717856,2.122347066167291,1.9101123595505618,3.3458177278401995,5.293383270911361,1.4856429463171037,2.571785268414482,6.179775280898876,5.118601747815231,2.446941323345818,3.7515605493133584,2.4406991260923845,7.740324594257178,5.5181023720349565,1.7415730337078652,1.8976279650436954,6.061173533083646,5.149812734082397,2.8776529338327093,2.209737827715356,2.428214731585518,7.303370786516854,4.375780274656679,2.7715355805243447,5.930087390761548,4.406991260923846,4.875156054931336,5.443196004993759,7.615480649188515,2.990012484394507,4.675405742821473,5.324594257178527,6.741573033707866,7.303370786516854,4.594257178526841,3.3770287141073654,4.400749063670412,4.575530586766542,2.9275905118601746,7.17852684144819,4.70661672908864,3.533083645443196,6.928838951310862,3.033707865168539,4.637952559300874,5.212234706616729,5.593008739076155,6.866416978776529,4.956304619225968,7.116104868913857,7.116104868913857,5.187265917602996,4.00749063670412,2.1910112359550564,3.0212234706616727,7.677902621722847,4.906367041198502,4.207240948813983,2.0599250936329585,7.49063670411985,5.33083645443196,6.367041198501872,3.0024968789013733,4.837702871410737,4.575530586766542,6.928838951310862,1.6666666666666667,3.4581772784019975,3.1647940074906367,3.8514357053682895,6.991260923845194,2.397003745318352,6.367041198501872,5.711610486891385,5.324594257178527, +5.205992509363296,6.803995006242197,3.826466916354557,6.741573033707866,4.875156054931336,4.887640449438202,1.8289637952559301,4.644194756554308,2.4157303370786516,4.0761548064918856,4.750312109862672,2.727840199750312,1.5168539325842696,1.772784019975031,2.902621722846442,7.365792759051186,6.067415730337078,4.332084893882647,3.2084893882646695,2.7590511860174782,5.3745318352059925,6.866416978776529,4.207240948813983,7.0536828963795255,6.30461922596754,2.4344569288389515,2.153558052434457,1.9350811485642945,3.383270911360799,5.318352059925093,1.5106117353308364,2.6092384519350813,6.198501872659176,5.1373283395755305,2.4656679151061174,3.776529338327091,2.471910112359551,7.740324594257178,5.543071161048689,1.7602996254681649,1.9225967540574282,6.079900124843945,5.174781523096129,2.908863920099875,2.2347066167290888,2.453183520599251,7.303370786516854,4.413233458177278,2.808988764044944,5.961298377028713,4.438202247191011,4.906367041198502,5.468164794007491,7.615480649188515,3.0087390761548067,4.700374531835206,5.355805243445693,6.803995006242197,7.303370786516854,4.619225967540574,3.3957553058676653,4.425717852684145,4.606741573033708,2.9463171036204745,7.240948813982522,4.7315855181023725,3.5580524344569286,6.991260923845194,3.058676654182272,4.662921348314606,5.243445692883895,5.6242197253433215,6.866416978776529,4.987515605493134,7.17852684144819,7.17852684144819,5.205992509363296,4.044943820224719,2.215980024968789,3.0524344569288386,7.740324594257178,4.937578027465668,4.238451935081149,2.084893882646692,7.553058676654182,5.355805243445693,6.429463171036204,3.033707865168539,4.8626716604244695,4.606741573033708,6.928838951310862,1.6916354556803994,3.4893882646691634,3.1897627965043696,3.888888888888889,7.0536828963795255,2.428214731585518,6.367041198501872,5.736579275905119,5.34956304619226, +5.237203495630462,6.803995006242197,3.857677902621723,6.741573033707866,4.900124843945068,4.906367041198502,1.8476903870162298,4.66916354556804,2.446941323345818,4.1011235955056184,4.775280898876405,2.7590511860174782,1.5418227215980027,1.8039950062421974,2.9275905118601746,7.365792759051186,6.092384519350812,4.3632958801498125,3.233458177278402,2.777777777777778,5.405742821473158,6.866416978776529,4.2322097378277155,7.116104868913857,6.30461922596754,2.4656679151061174,2.184769038701623,1.9600499375780276,3.4144818976279647,5.343320848938826,1.5355805243445693,2.640449438202247,6.223470661672909,5.162297128589263,2.4906367041198503,3.7952559300873907,2.5093632958801497,7.740324594257178,5.561797752808988,1.7790262172284643,1.9475655430711611,6.104868913857677,5.199750312109863,2.9400749063670415,2.2659176029962547,2.478152309612984,7.365792759051186,4.444444444444445,2.84019975031211,5.986267166042447,4.4694132334581775,4.937578027465668,5.493133583021224,7.677902621722847,3.033707865168539,4.719101123595506,5.380774032459426,6.803995006242197,7.365792759051186,4.644194756554308,3.4144818976279647,4.444444444444445,4.637952559300874,2.9712858926342074,7.240948813982522,4.750312109862672,3.576779026217228,6.991260923845194,3.0836454431960054,4.687890137328339,5.274656679151062,5.655430711610487,6.928838951310862,5.012484394506866,7.17852684144819,7.17852684144819,5.230961298377029,4.0761548064918856,2.2409488139825218,3.089887640449438,7.740324594257178,4.9687890137328345,4.269662921348314,2.1036204744069913,7.553058676654182,5.3745318352059925,6.429463171036204,3.0649188514357055,4.887640449438202,4.637952559300874,6.928838951310862,1.7166042446941323,3.5205992509363297,3.2209737827715355,3.920099875156055,7.0536828963795255,2.459425717852684,6.429463171036204,5.761548064918852,5.36828963795256, +5.268414481897628,6.866416978776529,3.888888888888889,6.803995006242197,4.925093632958801,4.931335830212235,1.8726591760299625,4.694132334581773,2.478152309612984,4.119850187265917,4.794007490636704,2.790262172284644,1.5605493133583022,1.8352059925093633,2.9525593008739075,7.428214731585518,6.123595505617978,4.394506866416979,3.258426966292135,2.8027465667915106,5.436953807740325,6.928838951310862,4.257178526841448,7.116104868913857,6.367041198501872,2.4906367041198503,2.215980024968789,1.9850187265917605,3.4456928838951315,5.36828963795256,1.5605493133583022,2.671660424469413,6.242197253433209,5.181023720349563,2.5093632958801497,3.8202247191011236,2.5405742821473156,7.8027465667915115,5.586766541822722,1.797752808988764,1.9662921348314608,6.129837702871411,5.224719101123595,2.977528089887641,2.2971285892634206,2.5093632958801497,7.365792759051186,4.475655430711611,2.871410736579276,6.0174781523096135,4.49438202247191,4.975031210986267,5.524344569288389,7.677902621722847,3.058676654182272,4.737827715355805,5.411985018726591,6.866416978776529,7.365792759051186,4.675405742821473,3.4332084893882646,4.463171036204744,4.66916354556804,2.990012484394507,7.303370786516854,4.775280898876405,3.6017478152309614,6.991260923845194,3.108614232209738,4.712858926342073,5.305867665418227,5.686641697877653,6.928838951310862,5.0374531835206,7.240948813982522,7.17852684144819,5.249687890137328,4.107365792759051,2.2659176029962547,3.1210986267166043,7.8027465667915115,5.0,4.307116104868914,2.128589263420724,7.615480649188515,5.399500624219725,6.491885143570538,3.0961298377028714,4.912609238451935,4.675405742821473,6.991260923845194,1.7415730337078652,3.5518102372034956,3.245942571785269,3.951310861423221,7.116104868913857,2.4968789013732833,6.429463171036204,5.792759051186017,5.393258426966292, +5.299625468164794,6.866416978776529,3.926342072409488,6.803995006242197,4.950062421972534,4.950062421972534,1.8976279650436954,4.719101123595506,2.5031210986267167,4.144818976279651,4.818976279650437,2.8152309612983775,1.585518102372035,1.8664169787765295,2.977528089887641,7.428214731585518,6.154806491885144,4.425717852684145,3.2833957553058677,2.82147315855181,5.461922596754057,6.928838951310862,4.282147315855181,7.17852684144819,6.367041198501872,2.521847690387016,2.2409488139825218,2.009987515605493,3.4769038701622974,5.393258426966292,1.585518102372035,2.7091136079900124,6.242197253433209,5.205992509363296,2.5343320848938826,3.8451935081148565,2.578027465667915,7.8027465667915115,5.611735330836455,1.8227215980024971,1.9912609238451935,6.1485642946317105,5.2559300873907615,3.0087390761548067,2.322097378277154,2.5343320848938826,7.428214731585518,4.51310861423221,2.908863920099875,6.048689138576779,4.525593008739076,5.0062421972534334,5.549313358302123,7.740324594257178,3.0836454431960054,4.762796504369538,5.436953807740325,6.866416978776529,7.428214731585518,4.700374531835206,3.451935081148564,4.488139825218477,4.700374531835206,3.0149812734082393,7.303370786516854,4.794007490636704,3.620474406991261,7.0536828963795255,3.1335830212234708,4.737827715355805,5.337078651685393,5.724094881398252,6.991260923845194,5.068664169787765,7.240948813982522,7.240948813982522,5.268414481897628,4.144818976279651,2.2908863920099876,3.1585518102372037,7.8027465667915115,5.031210986267166,4.33832709113608,2.1473158551810236,7.615480649188515,5.424469413233458,6.491885143570538,3.1273408239700373,4.937578027465668,4.70661672908864,6.991260923845194,1.7602996254681649,3.5830212234706615,3.2709113607990012,3.9887640449438204,7.17852684144819,2.5280898876404496,6.491885143570538,5.81772784019975,5.418227215980025, +5.324594257178527,6.928838951310862,3.957553058676654,6.866416978776529,4.975031210986267,4.975031210986267,1.916354556803995,4.750312109862672,2.5343320848938826,4.169787765293384,4.837702871410737,2.8464419475655434,1.6104868913857677,1.8976279650436954,3.0024968789013733,7.49063670411985,6.186017478152309,4.456928838951311,3.3083645443196006,2.8464419475655434,5.493133583021224,6.991260923845194,4.307116104868914,7.17852684144819,6.429463171036204,2.5530586766541825,2.272159800249688,2.034956304619226,3.508114856429463,5.418227215980025,1.6104868913857677,2.740324594257179,6.30461922596754,5.224719101123595,2.5593008739076155,3.870162297128589,2.6092384519350813,7.865168539325843,5.636704119850187,1.8414481897627966,2.016229712858926,6.173533083645444,5.280898876404494,3.0399500624219726,2.35330836454432,2.5593008739076155,7.428214731585518,4.544319600499376,2.9400749063670415,6.079900124843945,4.55056179775281,5.043695380774032,5.574282147315855,7.8027465667915115,3.108614232209738,4.781523096129837,5.468164794007491,6.928838951310862,7.428214731585518,4.725343320848939,3.4769038701622974,4.506866416978776,4.7315855181023725,3.033707865168539,7.365792759051186,4.818976279650437,3.6454431960049942,7.0536828963795255,3.1585518102372037,4.762796504369538,5.36828963795256,5.7553058676654185,6.991260923845194,5.093632958801498,7.303370786516854,7.240948813982522,5.293383270911361,4.176029962546816,2.3158551810237205,3.1960049937578026,7.865168539325843,5.062421972534332,4.375780274656679,2.1722846441947565,7.677902621722847,5.449438202247191,6.491885143570538,3.1585518102372037,4.962546816479401,4.737827715355805,7.0536828963795255,1.7852684144818978,3.6142322097378274,3.3021223470661676,4.019975031210986,7.17852684144819,2.565543071161049,6.491885143570538,5.842696629213483,5.436953807740325, +5.355805243445693,6.928838951310862,3.9887640449438204,6.866416978776529,5.0,5.0,1.941323345817728,4.775280898876405,2.565543071161049,4.188514357053683,4.856429463171036,2.8776529338327093,1.6292134831460674,1.9225967540574282,3.027465667915106,7.49063670411985,6.217228464419476,4.488139825218477,3.3333333333333335,2.865168539325843,5.524344569288389,6.991260923845194,4.332084893882647,7.240948813982522,6.429463171036204,2.578027465667915,2.303370786516854,2.0599250936329585,3.5393258426966296,5.443196004993759,1.6354556803995006,2.7715355805243447,6.30461922596754,5.249687890137328,2.578027465667915,3.888888888888889,2.6466916354556806,7.865168539325843,5.66167290886392,1.8601747815230962,2.0411985018726595,6.192259675405743,5.305867665418227,3.0711610486891385,2.3845193508114857,2.5905118601747814,7.49063670411985,4.575530586766542,2.977528089887641,6.104868913857677,4.581772784019975,5.074906367041199,5.599250936329588,7.8027465667915115,3.1335830212234708,4.800249687890138,5.493133583021224,6.991260923845194,7.428214731585518,4.750312109862672,3.495630461922597,4.525593008739076,4.762796504369538,3.058676654182272,7.365792759051186,4.843945068664169,3.6641697877652937,7.0536828963795255,3.183520599250936,4.787765293383271,5.399500624219725,5.786516853932584,6.991260923845194,5.118601747815231,7.303370786516854,7.240948813982522,5.312109862671661,4.213483146067416,2.340823970037453,3.227215980024969,7.927590511860175,5.087390761548065,4.406991260923846,2.1910112359550564,7.677902621722847,5.474406991260924,6.554307116104869,3.1897627965043696,4.987515605493134,4.769038701622971,7.0536828963795255,1.8102372034956304,3.6454431960049942,3.3270911360799,4.051186017478152,7.240948813982522,2.596754057428215,6.554307116104869,5.867665418227216,5.461922596754057, +5.3870162297128585,6.991260923845194,4.02621722846442,6.928838951310862,5.024968789013733,5.0187265917602994,1.9662921348314608,4.800249687890138,2.596754057428215,4.213483146067416,4.881398252184769,2.908863920099875,1.6541822721598003,1.9538077403245941,3.0524344569288386,7.553058676654182,6.242197253433209,4.519350811485642,3.3583021223470664,2.8901373283395753,5.549313358302123,7.0536828963795255,4.3508114856429465,7.240948813982522,6.491885143570538,2.6092384519350813,2.33458177278402,2.084893882646692,3.5705368289637955,5.468164794007491,1.6541822721598003,2.808988764044944,6.30461922596754,5.274656679151062,2.602996254681648,3.9138576779026217,2.6779026217228465,7.927590511860175,5.686641697877653,1.8851435705368291,2.066167290886392,6.217228464419476,5.337078651685393,3.108614232209738,2.4157303370786516,2.6154806491885143,7.49063670411985,4.612983770287141,3.0087390761548067,6.1360799001248445,4.606741573033708,5.1123595505617985,5.6242197253433215,7.865168539325843,3.15230961298377,4.825218476903871,5.524344569288389,6.991260923845194,7.49063670411985,4.781523096129837,3.5143570536828963,4.55056179775281,4.794007490636704,3.0836454431960054,7.428214731585518,4.8626716604244695,3.689138576779026,7.116104868913857,3.2084893882646695,4.812734082397004,5.430711610486892,5.81772784019975,7.0536828963795255,5.149812734082397,7.365792759051186,7.303370786516854,5.33083645443196,4.244694132334582,2.3657927590511862,3.2646691635455682,7.927590511860175,5.118601747815231,4.438202247191011,2.215980024968789,7.740324594257178,5.499375780274657,6.554307116104869,3.2209737827715355,5.012484394506866,4.800249687890138,7.116104868913857,1.8352059925093633,3.6766541822721597,3.352059925093633,4.082397003745319,7.240948813982522,2.634207240948814,6.554307116104869,5.892634207240949,5.48689138576779, +5.418227215980025,6.991260923845194,4.057428214731585,6.928838951310862,5.049937578027466,5.043695380774032,1.9850187265917605,4.825218476903871,2.6217228464419473,4.238451935081149,4.900124843945068,2.933832709113608,1.6791510611735332,1.9850187265917605,3.077403245942572,7.553058676654182,6.30461922596754,4.55056179775281,3.383270911360799,2.908863920099875,5.580524344569288,7.0536828963795255,4.375780274656679,7.303370786516854,6.491885143570538,2.640449438202247,2.3657927590511862,2.1098626716604243,3.6017478152309614,5.493133583021224,1.6791510611735332,2.84019975031211,6.367041198501872,5.293383270911361,2.6217228464419473,3.938826466916354,2.715355805243446,7.927590511860175,5.711610486891385,1.9038701622971288,2.091136079900125,6.235955056179775,5.3620474406991265,3.139825218476904,2.4406991260923845,2.640449438202247,7.553058676654182,4.644194756554308,3.0399500624219726,6.167290886392011,4.637952559300874,5.143570536828964,5.655430711610487,7.865168539325843,3.1772784019975036,4.843945068664169,5.555555555555556,7.0536828963795255,7.49063670411985,4.806491885143571,3.533083645443196,4.569288389513109,4.831460674157303,3.102372034956305,7.428214731585518,4.887640449438202,3.7078651685393256,7.116104868913857,3.233458177278402,4.837702871410737,5.461922596754057,5.855181023720349,7.0536828963795255,5.174781523096129,7.365792759051186,7.303370786516854,5.355805243445693,4.282147315855181,2.3907615480649187,3.295880149812734,7.990012484394507,5.149812734082397,4.475655430711611,2.2347066167290888,7.740324594257178,5.524344569288389,6.616729088639201,3.2521847690387014,5.0374531835206,4.831460674157303,7.116104868913857,1.8601747815230962,3.701622971285893,3.3770287141073654,4.119850187265917,7.303370786516854,2.66541822721598,6.616729088639201,5.917602996254682,5.511860174781523, +5.449438202247191,7.0536828963795255,4.094881398252185,6.928838951310862,5.074906367041199,5.068664169787765,2.009987515605493,4.850187265917603,2.6529338327091136,4.257178526841448,4.925093632958801,2.965043695380774,1.6978776529338326,2.016229712858926,3.102372034956305,7.615480649188515,6.30461922596754,4.581772784019975,3.408239700374532,2.933832709113608,5.611735330836455,7.116104868913857,4.400749063670412,7.303370786516854,6.554307116104869,2.66541822721598,2.397003745318352,2.134831460674157,3.6329588014981273,5.5181023720349565,1.704119850187266,2.8776529338327093,6.367041198501872,5.318352059925093,2.6466916354556806,3.9637952559300875,2.752808988764045,7.990012484394507,5.730337078651686,1.9225967540574282,2.1161048689138577,6.242197253433209,5.3870162297128585,3.17103620474407,2.471910112359551,2.671660424469413,7.553058676654182,4.675405742821473,3.077403245942572,6.198501872659176,4.66916354556804,5.174781523096129,5.68039950062422,7.927590511860175,3.202247191011236,4.868913857677903,5.580524344569288,7.0536828963795255,7.553058676654182,4.831460674157303,3.5518102372034956,4.588014981273409,4.8626716604244695,3.1273408239700373,7.428214731585518,4.906367041198502,3.732833957553059,7.116104868913857,3.258426966292135,4.8626716604244695,5.493133583021224,5.8863920099875156,7.0536828963795255,5.199750312109863,7.428214731585518,7.303370786516854,5.3745318352059925,4.313358302122348,2.4157303370786516,3.3333333333333335,7.990012484394507,5.181023720349563,4.506866416978776,2.259675405742821,7.8027465667915115,5.543071161048689,6.616729088639201,3.2833957553058677,5.062421972534332,4.868913857677903,7.17852684144819,1.8851435705368291,3.732833957553059,3.408239700374532,4.151061173533084,7.365792759051186,2.696629213483146,6.616729088639201,5.942571785268415,5.5305867665418225, +5.480649188514358,7.0536828963795255,4.1260923845193505,6.991260923845194,5.099875156054932,5.087390761548065,2.034956304619226,4.881398252184769,2.68414481897628,4.282147315855181,4.943820224719102,2.9962546816479403,1.7228464419475658,2.0474406991260925,3.1210986267166043,7.615480649188515,6.367041198501872,4.612983770287141,3.4332084893882646,2.9525593008739075,5.636704119850187,7.116104868913857,4.425717852684145,7.365792759051186,6.554307116104869,2.696629213483146,2.4219725343320846,2.15980024968789,3.6641697877652937,5.543071161048689,1.7290886392009988,2.908863920099875,6.367041198501872,5.337078651685393,2.671660424469413,3.982521847690387,2.7840199750312107,7.990012484394507,5.7553058676654185,1.9475655430711611,2.134831460674157,6.30461922596754,5.411985018726591,3.202247191011236,2.5031210986267167,2.696629213483146,7.615480649188515,4.712858926342073,3.108614232209738,6.223470661672909,4.694132334581773,5.212234706616729,5.705368289637952,7.927590511860175,3.227215980024969,4.887640449438202,5.611735330836455,7.116104868913857,7.553058676654182,4.8626716604244695,3.5705368289637955,4.612983770287141,4.893882646691636,3.1460674157303368,7.49063670411985,4.931335830212235,3.7515605493133584,7.17852684144819,3.2771535580524347,4.887640449438202,5.5181023720349565,5.917602996254682,7.116104868913857,5.230961298377029,7.428214731585518,7.365792759051186,5.393258426966292,4.3508114856429465,2.4406991260923845,3.3645443196004994,8.05243445692884,5.212234706616729,4.538077403245943,2.278401997503121,7.8027465667915115,5.568039950062421,6.616729088639201,3.3146067415730336,5.087390761548065,4.900124843945068,7.17852684144819,1.9101123595505618,3.764044943820225,3.4332084893882646,4.18227215980025,7.365792759051186,2.7340823970037453,6.679151061173534,5.967540574282147,5.555555555555556, +5.511860174781523,7.116104868913857,4.157303370786517,6.991260923845194,5.1248439450686645,5.1123595505617985,2.0536828963795255,4.906367041198502,2.715355805243446,4.307116104868914,4.9687890137328345,3.027465667915106,1.7478152309612984,2.0724094881398254,3.1460674157303368,7.677902621722847,6.367041198501872,4.644194756554308,3.4581772784019975,2.977528089887641,5.667915106117353,7.17852684144819,4.450686641697877,7.365792759051186,6.616729088639201,2.727840199750312,2.453183520599251,2.184769038701623,3.6953807740324596,5.568039950062421,1.7540574282147314,2.9400749063670415,6.429463171036204,5.3620474406991265,2.690387016229713,4.00749063670412,2.82147315855181,8.05243445692884,5.7802746566791505,1.9662921348314608,2.15980024968789,6.30461922596754,5.443196004993759,3.2397003745318353,2.5280898876404496,2.7215980024968793,7.615480649188515,4.7440699126092385,3.1460674157303368,6.242197253433209,4.725343320848939,5.243445692883895,5.730337078651686,7.990012484394507,3.2521847690387014,4.906367041198502,5.636704119850187,7.17852684144819,7.553058676654182,4.887640449438202,3.589263420724095,4.631710362047441,4.925093632958801,3.17103620474407,7.49063670411985,4.956304619225968,3.776529338327091,7.17852684144819,3.3021223470661676,4.912609238451935,5.549313358302123,5.948813982521848,7.116104868913857,5.2559300873907615,7.49063670411985,7.365792759051186,5.418227215980025,4.382022471910113,2.4656679151061174,3.4019975031210987,8.11485642946317,5.243445692883895,4.575530586766542,2.303370786516854,7.865168539325843,5.593008739076155,6.679151061173534,3.3458177278401995,5.118601747815231,4.931335830212235,7.240948813982522,1.9288389513108615,3.7952559300873907,3.4581772784019975,4.219725343320849,7.428214731585518,2.7652933832709112,6.679151061173534,5.998751560549313,5.580524344569288, +5.543071161048689,7.116104868913857,4.194756554307116,7.0536828963795255,5.149812734082397,5.1373283395755305,2.0786516853932584,4.931335830212235,2.740324594257179,4.325842696629214,4.987515605493134,3.0524344569288386,1.766541822721598,2.1036204744069913,3.17103620474407,7.677902621722847,6.429463171036204,4.675405742821473,3.4831460674157304,2.9962546816479403,5.69912609238452,7.17852684144819,4.475655430711611,7.428214731585518,6.616729088639201,2.752808988764045,2.4843945068664173,2.209737827715356,3.732833957553059,5.593008739076155,1.7790262172284643,2.977528089887641,6.429463171036204,5.380774032459426,2.715355805243446,4.032459425717852,2.852684144818976,8.05243445692884,5.805243445692884,1.9850187265917605,2.184769038701623,6.30461922596754,5.468164794007491,3.2709113607990012,2.5593008739076155,2.752808988764045,7.677902621722847,4.781523096129837,3.1772784019975036,6.30461922596754,4.750312109862672,5.280898876404494,5.7553058676654185,8.05243445692884,3.2709113607990012,4.931335830212235,5.667915106117353,7.17852684144819,7.615480649188515,4.912609238451935,3.607990012484395,4.65043695380774,4.956304619225968,3.1960049937578026,7.553058676654182,4.975031210986267,3.7952559300873907,7.17852684144819,3.3270911360799,4.937578027465668,5.580524344569288,5.980024968789014,7.17852684144819,5.280898876404494,7.49063670411985,7.365792759051186,5.436953807740325,4.419475655430712,2.4906367041198503,3.439450686641698,8.11485642946317,5.274656679151062,4.606741573033708,2.322097378277154,7.865168539325843,5.617977528089888,6.679151061173534,3.3770287141073654,5.143570536828964,4.962546816479401,7.240948813982522,1.9538077403245941,3.826466916354557,3.4831460674157304,4.250936329588015,7.49063670411985,2.8027465667915106,6.741573033707866,6.023720349563047,5.605493133583021, +5.574282147315855,7.17852684144819,4.225967540574282,7.0536828963795255,5.174781523096129,5.15605493133583,2.1036204744069913,4.956304619225968,2.7715355805243447,4.3508114856429465,5.0062421972534334,3.0836454431960054,1.7915106117353308,2.134831460674157,3.1960049937578026,7.677902621722847,6.429463171036204,4.70661672908864,3.508114856429463,3.0212234706616727,5.724094881398252,7.240948813982522,4.500624219725343,7.428214731585518,6.616729088639201,2.7840199750312107,2.515605493133583,2.2347066167290888,3.764044943820225,5.617977528089888,1.8039950062421974,3.0087390761548067,6.429463171036204,5.405742821473158,2.7340823970037453,4.051186017478152,2.8901373283395753,8.11485642946317,5.830212234706617,2.00374531835206,2.209737827715356,6.367041198501872,5.493133583021224,3.3021223470661676,2.5905118601747814,2.777777777777778,7.677902621722847,4.812734082397004,3.2084893882646695,6.30461922596754,4.781523096129837,5.312109862671661,5.786516853932584,8.05243445692884,3.295880149812734,4.950062421972534,5.692883895131087,7.240948813982522,7.615480649188515,4.943820224719102,3.6267166042446943,4.675405742821473,4.987515605493134,3.214731585518102,7.553058676654182,5.0,3.8202247191011236,7.240948813982522,3.352059925093633,4.962546816479401,5.611735330836455,6.0174781523096135,7.17852684144819,5.312109862671661,7.553058676654182,7.428214731585518,5.455680399500624,4.450686641697877,2.515605493133583,3.470661672908864,8.177278401997503,5.305867665418227,4.637952559300874,2.340823970037453,7.927590511860175,5.64294631710362,6.741573033707866,3.408239700374532,5.168539325842697,4.9937578027465666,7.303370786516854,1.978776529338327,3.857677902621723,3.5143570536828963,4.282147315855181,7.49063670411985,2.8339575530586765,6.741573033707866,6.048689138576779,5.6242197253433215, +5.599250936329588,7.17852684144819,4.257178526841448,7.116104868913857,5.199750312109863,5.181023720349563,2.122347066167291,4.987515605493134,2.8027465667915106,4.375780274656679,5.031210986267166,3.114856429463171,1.8102372034956304,2.1660424469413235,3.2209737827715355,7.740324594257178,6.491885143570538,4.737827715355805,3.5268414481897628,3.0399500624219726,5.7553058676654185,7.240948813982522,4.525593008739076,7.49063670411985,6.679151061173534,2.8152309612983775,2.546816479400749,2.259675405742821,3.7952559300873907,5.64294631710362,1.8289637952559301,3.0399500624219726,6.491885143570538,5.430711610486892,2.7590511860174782,4.0761548064918856,2.9213483146067416,8.11485642946317,5.855181023720349,2.0287141073657926,2.2347066167290888,6.367041198501872,5.524344569288389,3.3333333333333335,2.6217228464419473,2.8027465667915106,7.740324594257178,4.843945068664169,3.245942571785269,6.367041198501872,4.806491885143571,5.343320848938826,5.811485642946318,8.11485642946317,3.320848938826467,4.9687890137328345,5.724094881398252,7.240948813982522,7.677902621722847,4.9687890137328345,3.651685393258427,4.694132334581773,5.0187265917602994,3.2397003745318353,7.615480649188515,5.0187265917602994,3.8389513108614235,7.240948813982522,3.3770287141073654,4.987515605493134,5.64294631710362,6.048689138576779,7.17852684144819,5.337078651685393,7.553058676654182,7.428214731585518,5.480649188514358,4.488139825218477,2.5405742821473156,3.508114856429463,8.239700374531834,5.337078651685393,4.675405742821473,2.3657927590511862,7.927590511860175,5.667915106117353,6.741573033707866,3.439450686641698,5.19350811485643,5.031210986267166,7.303370786516854,2.00374531835206,3.888888888888889,3.5393258426966296,4.31960049937578,7.553058676654182,2.871410736579276,6.803995006242197,6.073657927590512,5.6491885143570535, +5.630461922596755,7.240948813982522,4.294631710362047,7.116104868913857,5.224719101123595,5.205992509363296,2.1473158551810236,5.012484394506866,2.8339575530586765,4.394506866416979,5.049937578027466,3.139825218476904,1.8352059925093633,2.1910112359550564,3.245942571785269,7.740324594257178,6.491885143570538,4.769038701622971,3.5518102372034956,3.0649188514357055,5.786516853932584,7.303370786516854,4.55056179775281,7.49063670411985,6.679151061173534,2.84019975031211,2.578027465667915,2.2846441947565546,3.826466916354557,5.667915106117353,1.8539325842696628,3.077403245942572,6.491885143570538,5.449438202247191,2.7840199750312107,4.1011235955056184,2.958801498127341,8.177278401997503,5.8739076154806495,2.0474406991260925,2.259675405742821,6.367041198501872,5.549313358302123,3.370786516853933,2.6466916354556806,2.8339575530586765,7.740324594257178,4.881398252184769,3.2771535580524347,6.367041198501872,4.837702871410737,5.380774032459426,5.836454431960051,8.11485642946317,3.3458177278401995,4.9937578027465666,5.749063670411985,7.303370786516854,7.677902621722847,4.9937578027465666,3.6704119850187267,4.712858926342073,5.049937578027466,3.258426966292135,7.615480649188515,5.043695380774032,3.8639200998751564,7.240948813982522,3.4019975031210987,5.012484394506866,5.674157303370786,6.079900124843945,7.240948813982522,5.3620474406991265,7.615480649188515,7.428214731585518,5.499375780274657,4.519350811485642,2.565543071161049,3.5393258426966296,8.239700374531834,5.36828963795256,4.70661672908864,2.3845193508114857,7.990012484394507,5.692883895131087,6.741573033707866,3.470661672908864,5.218476903870163,5.062421972534332,7.365792759051186,2.0287141073657926,3.920099875156055,3.564294631710362,4.3508114856429465,7.553058676654182,2.902621722846442,6.803995006242197,6.098626716604246,5.674157303370786, +5.66167290886392,7.303370786516854,4.325842696629214,7.17852684144819,5.249687890137328,5.224719101123595,2.1722846441947565,5.0374531835206,2.8589263420724094,4.419475655430712,5.074906367041199,3.17103620474407,1.8601747815230962,2.2222222222222223,3.2709113607990012,7.8027465667915115,6.554307116104869,4.800249687890138,3.576779026217228,3.0836454431960054,5.811485642946318,7.303370786516854,4.569288389513109,7.553058676654182,6.741573033707866,2.871410736579276,2.602996254681648,2.309612983770287,3.857677902621723,5.692883895131087,1.8789013732833957,3.108614232209738,6.491885143570538,5.474406991260924,2.8027465667915106,4.1260923845193505,2.990012484394507,8.177278401997503,5.8988764044943816,2.066167290886392,2.278401997503121,6.429463171036204,5.574282147315855,3.4019975031210987,2.6779026217228465,2.8589263420724094,7.8027465667915115,4.912609238451935,3.3146067415730336,6.429463171036204,4.868913857677903,5.411985018726591,5.861423220973783,8.177278401997503,3.370786516853933,5.012484394506866,5.7802746566791505,7.365792759051186,7.677902621722847,5.024968789013733,3.689138576779026,4.737827715355805,5.081148564294631,3.2833957553058677,7.677902621722847,5.068664169787765,3.882646691635456,7.303370786516854,3.4269662921348316,5.0374531835206,5.705368289637952,6.111111111111111,7.240948813982522,5.393258426966292,7.615480649188515,7.49063670411985,5.524344569288389,4.55056179775281,2.5905118601747814,3.576779026217228,8.302122347066168,5.399500624219725,4.737827715355805,2.4094881398252186,7.990012484394507,5.711610486891385,6.803995006242197,3.5018726591760303,5.243445692883895,5.093632958801498,7.365792759051186,2.0536828963795255,3.951310861423221,3.595505617977528,4.382022471910113,7.615480649188515,2.9400749063670415,6.866416978776529,6.123595505617978,5.69912609238452, +5.692883895131087,7.303370786516854,4.357053682896379,7.17852684144819,5.274656679151062,5.249687890137328,2.1910112359550564,5.062421972534332,2.8901373283395753,4.444444444444445,5.093632958801498,3.202247191011236,1.8789013732833957,2.253433208489388,3.295880149812734,7.8027465667915115,6.554307116104869,4.831460674157303,3.6017478152309614,3.102372034956305,5.842696629213483,7.365792759051186,4.594257178526841,7.553058676654182,6.741573033707866,2.902621722846442,2.634207240948814,2.33458177278402,3.888888888888889,5.711610486891385,1.9038701622971288,3.1460674157303368,6.554307116104869,5.493133583021224,2.8277153558052435,4.144818976279651,3.027465667915106,8.239700374531834,5.9238451935081144,2.091136079900125,2.303370786516854,6.429463171036204,5.599250936329588,3.4332084893882646,2.7091136079900124,2.8838951310861427,7.8027465667915115,4.943820224719102,3.3458177278401995,6.429463171036204,4.893882646691636,5.449438202247191,5.8863920099875156,8.177278401997503,3.3957553058676653,5.031210986267166,5.805243445692884,7.365792759051186,7.740324594257178,5.049937578027466,3.7078651685393256,4.7565543071161045,5.1123595505617985,3.3021223470661676,7.677902621722847,5.087390761548065,3.9076154806491883,7.303370786516854,3.451935081148564,5.062421972534332,5.736579275905119,6.1485642946317105,7.240948813982522,5.418227215980025,7.677902621722847,7.49063670411985,5.543071161048689,4.588014981273409,2.6154806491885143,3.6142322097378274,8.302122347066168,5.430711610486892,4.775280898876405,2.428214731585518,8.05243445692884,5.736579275905119,6.803995006242197,3.533083645443196,5.268414481897628,5.1248439450686645,7.365792759051186,2.0724094881398254,3.982521847690387,3.620474406991261,4.413233458177278,7.677902621722847,2.9712858926342074,6.866416978776529,6.1485642946317105,5.717852684144819, +5.724094881398252,7.365792759051186,4.394506866416979,7.240948813982522,5.299625468164794,5.274656679151062,2.215980024968789,5.087390761548065,2.9213483146067416,4.463171036204744,5.118601747815231,3.233458177278402,1.9038701622971288,2.2846441947565546,3.320848938826467,7.865168539325843,6.616729088639201,4.8626716604244695,3.6267166042446943,3.1273408239700373,5.8739076154806495,7.365792759051186,4.619225967540574,7.615480649188515,6.803995006242197,2.9275905118601746,2.66541822721598,2.359550561797753,3.920099875156055,5.736579275905119,1.9288389513108615,3.1772784019975036,6.554307116104869,5.5181023720349565,2.8464419475655434,4.169787765293384,3.058676654182272,8.239700374531834,5.948813982521848,2.1098626716604243,2.328339575530587,6.429463171036204,5.630461922596755,3.464419475655431,2.7340823970037453,2.9151061173533086,7.865168539325843,4.9812734082397006,3.3770287141073654,6.491885143570538,4.925093632958801,5.480649188514358,5.917602996254682,8.239700374531834,3.4144818976279647,5.056179775280899,5.836454431960051,7.428214731585518,7.740324594257178,5.074906367041199,3.7265917602996255,4.775280898876405,5.143570536828964,3.3270911360799,7.740324594257178,5.1123595505617985,3.926342072409488,7.303370786516854,3.4769038701622974,5.081148564294631,5.767790262172285,6.179775280898876,7.303370786516854,5.449438202247191,7.677902621722847,7.49063670411985,5.561797752808988,4.619225967540574,2.640449438202247,3.6454431960049942,8.3645443196005,5.461922596754057,4.806491885143571,2.453183520599251,8.05243445692884,5.761548064918852,6.866416978776529,3.564294631710362,5.293383270911361,5.15605493133583,7.428214731585518,2.097378277153558,4.013732833957553,3.6454431960049942,4.450686641697877,7.677902621722847,3.0024968789013733,6.928838951310862,6.173533083645444,5.742821473158552, +5.7553058676654185,7.365792759051186,4.425717852684145,7.240948813982522,5.324594257178527,5.293383270911361,2.2409488139825218,5.118601747815231,2.9525593008739075,4.488139825218477,5.1373283395755305,3.258426966292135,1.9288389513108615,2.3158551810237205,3.3458177278401995,7.865168539325843,6.616729088639201,4.893882646691636,3.651685393258427,3.1460674157303368,5.8988764044943816,7.428214731585518,4.644194756554308,7.615480649188515,6.803995006242197,2.958801498127341,2.696629213483146,2.3845193508114857,3.951310861423221,5.761548064918852,1.9538077403245941,3.2084893882646695,6.616729088639201,5.536828963795256,2.871410736579276,4.194756554307116,3.0961298377028714,8.302122347066168,5.97378277153558,2.128589263420724,2.35330836454432,6.491885143570538,5.655430711610487,3.5018726591760303,2.7652933832709112,2.9400749063670415,7.865168539325843,5.012484394506866,3.4144818976279647,6.491885143570538,4.950062421972534,5.5181023720349565,5.942571785268415,8.302122347066168,3.439450686641698,5.074906367041199,5.867665418227216,7.428214731585518,7.8027465667915115,5.106117353308365,3.745318352059925,4.800249687890138,5.181023720349563,3.352059925093633,7.740324594257178,5.131086142322098,3.951310861423221,7.365792759051186,3.5018726591760303,5.106117353308365,5.799001248439451,6.210986267166042,7.303370786516854,5.474406991260924,7.740324594257178,7.553058676654182,5.586766541822722,4.656679151061174,2.6591760299625467,3.682896379525593,8.426966292134832,5.493133583021224,4.837702871410737,2.471910112359551,8.11485642946317,5.786516853932584,6.866416978776529,3.595505617977528,5.318352059925093,5.19350811485643,7.428214731585518,2.122347066167291,4.044943820224719,3.6704119850187267,4.4818976279650435,7.740324594257178,3.0399500624219726,6.928838951310862,6.20474406991261,5.767790262172285, +5.786516853932584,7.428214731585518,4.463171036204744,7.240948813982522,5.34956304619226,5.318352059925093,2.259675405742821,5.143570536828964,2.977528089887641,4.51310861423221,5.15605493133583,3.2896379525593007,1.9475655430711611,2.340823970037453,3.370786516853933,7.927590511860175,6.679151061173534,4.925093632958801,3.6766541822721597,3.17103620474407,5.930087390761548,7.428214731585518,4.66916354556804,7.677902621722847,6.866416978776529,2.990012484394507,2.727840199750312,2.4094881398252186,3.982521847690387,5.786516853932584,1.978776529338327,3.245942571785269,6.616729088639201,5.561797752808988,2.8963795255930087,4.219725343320849,3.1273408239700373,8.302122347066168,5.998751560549313,2.1473158551810236,2.3782771535580522,6.491885143570538,5.68039950062422,3.533083645443196,2.7965043695380776,2.965043695380774,7.927590511860175,5.049937578027466,3.4456928838951315,6.491885143570538,4.9812734082397006,5.549313358302123,5.967540574282147,8.302122347066168,3.464419475655431,5.093632958801498,5.892634207240949,7.49063670411985,7.8027465667915115,5.131086142322098,3.764044943820225,4.818976279650437,5.212234706616729,3.370786516853933,7.8027465667915115,5.15605493133583,3.970037453183521,7.365792759051186,3.5205992509363297,5.131086142322098,5.830212234706617,6.242197253433209,7.365792759051186,5.499375780274657,7.740324594257178,7.553058676654182,5.605493133583021,4.687890137328339,2.68414481897628,3.714107365792759,8.426966292134832,5.524344569288389,4.875156054931336,2.4968789013732833,8.11485642946317,5.811485642946318,6.866416978776529,3.6267166042446943,5.343320848938826,5.224719101123595,7.49063670411985,2.1473158551810236,4.0761548064918856,3.701622971285893,4.51310861423221,7.8027465667915115,3.0711610486891385,6.991260923845194,6.229712858926342,5.786516853932584, +5.81772784019975,7.428214731585518,4.49438202247191,7.303370786516854,5.3745318352059925,5.337078651685393,2.2846441947565546,5.168539325842697,3.0087390761548067,4.531835205992509,5.181023720349563,3.320848938826467,1.9725343320848938,2.3720349563046192,3.3957553058676653,7.927590511860175,6.679151061173534,4.950062421972534,3.701622971285893,3.1897627965043696,5.961298377028713,7.49063670411985,4.694132334581773,7.677902621722847,6.866416978776529,3.0149812734082393,2.7590511860174782,2.4344569288389515,4.013732833957553,5.811485642946318,2.00374531835206,3.2771535580524347,6.616729088639201,5.586766541822722,2.9151061173533086,4.238451935081149,3.1647940074906367,8.3645443196005,6.023720349563047,2.1722846441947565,2.4032459425717856,6.554307116104869,5.711610486891385,3.564294631710362,2.8277153558052435,2.9962546816479403,7.927590511860175,5.081148564294631,3.4769038701622974,6.554307116104869,5.0062421972534334,5.580524344569288,5.992509363295881,8.3645443196005,3.4893882646691634,5.118601747815231,5.9238451935081144,7.553058676654182,7.8027465667915115,5.15605493133583,3.7827715355805243,4.837702871410737,5.243445692883895,3.3957553058676653,7.8027465667915115,5.181023720349563,3.9950062421972534,7.365792759051186,3.545568039950062,5.15605493133583,5.861423220973783,6.30461922596754,7.365792759051186,5.5305867665418225,7.8027465667915115,7.553058676654182,5.6242197253433215,4.725343320848939,2.7091136079900124,3.7515605493133584,8.489388264669165,5.555555555555556,4.906367041198502,2.515605493133583,8.177278401997503,5.836454431960051,6.928838951310862,3.6579275905118602,5.36828963795256,5.2559300873907615,7.49063670411985,2.1722846441947565,4.107365792759051,3.7265917602996255,4.55056179775281,7.8027465667915115,3.108614232209738,6.991260923845194,6.242197253433209,5.811485642946318, +5.842696629213483,7.49063670411985,4.525593008739076,7.303370786516854,5.405742821473158,5.3620474406991265,2.309612983770287,5.19350811485643,3.0399500624219726,4.556803995006242,5.199750312109863,3.352059925093633,1.9975031210986267,2.4032459425717856,3.420724094881398,7.990012484394507,6.741573033707866,4.9812734082397006,3.7265917602996255,3.214731585518102,5.986267166042447,7.49063670411985,4.719101123595506,7.740324594257178,6.928838951310862,3.046192259675406,2.7840199750312107,2.459425717852684,4.044943820224719,5.836454431960051,2.0287141073657926,3.3083645443196006,6.679151061173534,5.605493133583021,2.9400749063670415,4.263420724094882,3.1960049937578026,8.3645443196005,6.0424469413233455,2.1910112359550564,2.428214731585518,6.554307116104869,5.736579275905119,3.595505617977528,2.852684144818976,3.0212234706616727,7.990012484394507,5.1123595505617985,3.5143570536828963,6.554307116104869,5.0374531835206,5.617977528089888,6.0174781523096135,8.3645443196005,3.5143570536828963,5.1373283395755305,5.948813982521848,7.553058676654182,7.865168539325843,5.187265917602996,3.801498127340824,4.8626716604244695,5.274656679151062,3.4144818976279647,7.865168539325843,5.199750312109863,4.013732833957553,7.428214731585518,3.5705368289637955,5.181023720349563,5.8863920099875156,6.30461922596754,7.365792759051186,5.555555555555556,7.8027465667915115,7.615480649188515,5.6491885143570535,4.7565543071161045,2.7340823970037453,3.7827715355805243,8.551810237203496,5.586766541822722,4.937578027465668,2.5405742821473156,8.177278401997503,5.855181023720349,6.928838951310862,3.689138576779026,5.393258426966292,5.287141073657928,7.553058676654182,2.1972534332084894,4.138576779026217,3.7515605493133584,4.581772784019975,7.865168539325843,3.139825218476904,7.0536828963795255,6.30461922596754,5.836454431960051, +5.8739076154806495,7.49063670411985,4.563046192259676,7.365792759051186,5.430711610486892,5.3870162297128585,2.328339575530587,5.218476903870163,3.0711610486891385,4.581772784019975,5.224719101123595,3.3770287141073654,2.016229712858926,2.4344569288389515,3.4456928838951315,7.990012484394507,6.741573033707866,5.012484394506866,3.7515605493133584,3.233458177278402,6.0174781523096135,7.553058676654182,4.7440699126092385,7.740324594257178,6.928838951310862,3.077403245942572,2.8152309612983775,2.4843945068664173,4.082397003745319,5.861423220973783,2.0536828963795255,3.3458177278401995,6.679151061173534,5.630461922596755,2.958801498127341,4.288389513108614,3.233458177278402,8.426966292134832,6.067415730337078,2.209737827715356,2.446941323345818,6.554307116104869,5.761548064918852,3.6329588014981273,2.8838951310861427,3.046192259675406,7.990012484394507,5.149812734082397,3.545568039950062,6.616729088639201,5.068664169787765,5.6491885143570535,6.048689138576779,8.426966292134832,3.533083645443196,5.162297128589263,5.980024968789014,7.615480649188515,7.865168539325843,5.212234706616729,3.826466916354557,4.881398252184769,5.305867665418227,3.439450686641698,7.865168539325843,5.224719101123595,4.038701622971286,7.428214731585518,3.595505617977528,5.205992509363296,5.917602996254682,6.367041198501872,7.428214731585518,5.580524344569288,7.865168539325843,7.615480649188515,5.667915106117353,4.794007490636704,2.7590511860174782,3.8202247191011236,8.551810237203496,5.617977528089888,4.975031210986267,2.5593008739076155,8.239700374531834,5.880149812734083,6.991260923845194,3.7203495630461925,5.418227215980025,5.318352059925093,7.553058676654182,2.2222222222222223,4.169787765293384,3.776529338327091,4.612983770287141,7.865168539325843,3.1772784019975036,7.0536828963795255,6.30461922596754,5.861423220973783, +5.905118601747815,7.553058676654182,4.594257178526841,7.365792759051186,5.455680399500624,5.405742821473158,2.35330836454432,5.249687890137328,3.0961298377028714,4.600499375780275,5.243445692883895,3.408239700374532,2.0411985018726595,2.4656679151061174,3.470661672908864,8.05243445692884,6.803995006242197,5.043695380774032,3.776529338327091,3.258426966292135,6.048689138576779,7.553058676654182,4.769038701622971,7.8027465667915115,6.991260923845194,3.102372034956305,2.8464419475655434,2.5093632958801497,4.1136079900124844,5.8863920099875156,2.0786516853932584,3.3770287141073654,6.679151061173534,5.6491885143570535,2.9837702871410734,4.313358302122348,3.2646691635455682,8.426966292134832,6.092384519350812,2.2347066167290888,2.471910112359551,6.616729088639201,5.786516853932584,3.6641697877652937,2.9151061173533086,3.077403245942572,8.05243445692884,5.181023720349563,3.5830212234706615,6.616729088639201,5.093632958801498,5.686641697877653,6.073657927590512,8.426966292134832,3.5580524344569286,5.181023720349563,6.004993757802747,7.615480649188515,7.927590511860175,5.237203495630462,3.8451935081148565,4.900124843945068,5.337078651685393,3.464419475655431,7.927590511860175,5.243445692883895,4.057428214731585,7.428214731585518,3.620474406991261,5.230961298377029,5.948813982521848,6.367041198501872,7.428214731585518,5.611735330836455,7.865168539325843,7.615480649188515,5.686641697877653,4.825218476903871,2.7840199750312107,3.857677902621723,8.614232209737828,5.64294631710362,5.0062421972534334,2.5842696629213484,8.239700374531834,5.905118601747815,6.991260923845194,3.7515605493133584,5.443196004993759,5.34956304619226,7.615480649188515,2.2409488139825218,4.200998751560549,3.8077403245942576,4.65043695380774,7.927590511860175,3.2084893882646695,7.116104868913857,6.30461922596754,5.880149812734083, +5.936329588014981,7.553058676654182,4.6254681647940075,7.428214731585518,5.480649188514358,5.430711610486892,2.3782771535580522,5.274656679151062,3.1273408239700373,4.6254681647940075,5.268414481897628,3.439450686641698,2.066167290886392,2.4906367041198503,3.495630461922597,8.05243445692884,6.803995006242197,5.074906367041199,3.801498127340824,3.2771535580524347,6.073657927590512,7.615480649188515,4.787765293383271,7.8027465667915115,6.991260923845194,3.1335830212234708,2.8776529338327093,2.5343320848938826,4.144818976279651,5.9113607990012484,2.1036204744069913,3.4144818976279647,6.741573033707866,5.674157303370786,3.0087390761548067,4.332084893882647,3.3021223470661676,8.489388264669165,6.117353308364544,2.253433208489388,2.4968789013732833,6.616729088639201,5.81772784019975,3.6953807740324596,2.9400749063670415,3.102372034956305,8.05243445692884,5.212234706616729,3.6142322097378274,6.679151061173534,5.1248439450686645,5.717852684144819,6.098626716604246,8.489388264669165,3.5830212234706615,5.199750312109863,6.036204744069912,7.677902621722847,7.927590511860175,5.268414481897628,3.8639200998751564,4.925093632958801,5.36828963795256,3.4831460674157304,7.927590511860175,5.268414481897628,4.082397003745319,7.49063670411985,3.6454431960049942,5.2559300873907615,5.980024968789014,6.429463171036204,7.428214731585518,5.636704119850187,7.927590511860175,7.677902621722847,5.711610486891385,4.8626716604244695,2.808988764044944,3.888888888888889,8.614232209737828,5.674157303370786,5.043695380774032,2.602996254681648,8.302122347066168,5.930087390761548,6.991260923845194,3.7827715355805243,5.468164794007491,5.3870162297128585,7.615480649188515,2.2659176029962547,4.2322097378277155,3.83270911360799,4.681647940074906,7.990012484394507,3.245942571785269,7.116104868913857,6.367041198501872,5.905118601747815, +5.967540574282147,7.615480649188515,4.662921348314606,7.428214731585518,5.50561797752809,5.455680399500624,2.397003745318352,5.299625468164794,3.1585518102372037,4.65043695380774,5.287141073657928,3.464419475655431,2.084893882646692,2.521847690387016,3.5205992509363297,8.11485642946317,6.866416978776529,5.106117353308365,3.826466916354557,3.3021223470661676,6.104868913857677,7.615480649188515,4.812734082397004,7.8027465667915115,7.0536828963795255,3.1647940074906367,2.908863920099875,2.5593008739076155,4.176029962546816,5.936329588014981,2.128589263420724,3.4456928838951315,6.741573033707866,5.692883895131087,3.027465667915106,4.357053682896379,3.3333333333333335,8.489388264669165,6.142322097378277,2.272159800249688,2.521847690387016,6.616729088639201,5.842696629213483,3.732833957553059,2.9712858926342074,3.1273408239700373,8.11485642946317,5.249687890137328,3.6454431960049942,6.679151061173534,5.149812734082397,5.7553058676654185,6.123595505617978,8.551810237203496,3.607990012484395,5.224719101123595,6.061173533083646,7.740324594257178,7.927590511860175,5.293383270911361,3.882646691635456,4.943820224719102,5.399500624219725,3.508114856429463,7.990012484394507,5.293383270911361,4.1011235955056184,7.49063670411985,3.6704119850187267,5.280898876404494,6.01123595505618,6.429463171036204,7.49063670411985,5.66167290886392,7.927590511860175,7.677902621722847,5.730337078651686,4.893882646691636,2.8339575530586765,3.926342072409488,8.67665418227216,5.705368289637952,5.074906367041199,2.6279650436953808,8.302122347066168,5.955056179775282,7.0536828963795255,3.81398252184769,5.493133583021224,5.418227215980025,7.677902621722847,2.2908863920099876,4.263420724094882,3.857677902621723,4.712858926342073,7.990012484394507,3.2771535580524347,7.17852684144819,6.367041198501872,5.930087390761548, +5.998751560549313,7.615480649188515,4.694132334581773,7.49063670411985,5.5305867665418225,5.474406991260924,2.4219725343320846,5.324594257178527,3.183520599250936,4.66916354556804,5.305867665418227,3.495630461922597,2.1098626716604243,2.5530586766541825,3.545568039950062,8.11485642946317,6.866416978776529,5.1373283395755305,3.8514357053682895,3.320848938826467,6.1360799001248445,7.677902621722847,4.837702871410737,7.865168539325843,7.0536828963795255,3.1897627965043696,2.933832709113608,2.5842696629213484,4.207240948813983,5.961298377028713,2.153558052434457,3.4769038701622974,6.741573033707866,5.717852684144819,3.0524344569288386,4.382022471910113,3.370786516853933,8.551810237203496,6.167290886392011,2.2908863920099876,2.546816479400749,6.679151061173534,5.867665418227216,3.764044943820225,3.0024968789013733,3.1585518102372037,8.11485642946317,5.280898876404494,3.682896379525593,6.741573033707866,5.181023720349563,5.786516853932584,6.1485642946317105,8.551810237203496,3.6329588014981273,5.243445692883895,6.092384519350812,7.740324594257178,7.990012484394507,5.318352059925093,3.9013732833957557,4.962546816479401,5.430711610486892,3.5268414481897628,7.990012484394507,5.312109862671661,4.1260923845193505,7.553058676654182,3.6953807740324596,5.305867665418227,6.0424469413233455,6.491885143570538,7.49063670411985,5.692883895131087,7.990012484394507,7.677902621722847,5.749063670411985,4.931335830212235,2.8589263420724094,3.957553058676654,8.739076154806492,5.736579275905119,5.106117353308365,2.6466916354556806,8.3645443196005,5.980024968789014,7.0536828963795255,3.8451935081148565,5.5181023720349565,5.449438202247191,7.677902621722847,2.3158551810237205,4.294631710362047,3.888888888888889,4.7440699126092385,8.05243445692884,3.3083645443196006,7.17852684144819,6.429463171036204,5.955056179775282, +6.029962546816479,7.677902621722847,4.725343320848939,7.49063670411985,5.555555555555556,5.499375780274657,2.446941323345818,5.34956304619226,3.214731585518102,4.694132334581773,5.33083645443196,3.5268414481897628,2.134831460674157,2.5842696629213484,3.5705368289637955,8.177278401997503,6.928838951310862,5.168539325842697,3.870162297128589,3.3458177278401995,6.161048689138577,7.677902621722847,4.8626716604244695,7.865168539325843,7.0536828963795255,3.2209737827715355,2.965043695380774,2.6092384519350813,4.238451935081149,5.986267166042447,2.1785268414481895,3.5143570536828963,6.803995006242197,5.742821473158552,3.0711610486891385,4.400749063670412,3.4019975031210987,8.551810237203496,6.186017478152309,2.3158551810237205,2.571785268414482,6.679151061173534,5.8988764044943816,3.7952559300873907,3.033707865168539,3.183520599250936,8.177278401997503,5.312109862671661,3.714107365792759,6.741573033707866,5.212234706616729,5.81772784019975,6.179775280898876,8.614232209737828,3.6579275905118602,5.262172284644195,6.117353308364544,7.8027465667915115,7.990012484394507,5.34956304619226,3.920099875156055,4.987515605493134,5.461922596754057,3.5518102372034956,8.05243445692884,5.337078651685393,4.144818976279651,7.553058676654182,3.7203495630461925,5.33083645443196,6.073657927590512,6.491885143570538,7.553058676654182,5.717852684144819,7.990012484394507,7.740324594257178,5.774032459425719,4.962546816479401,2.8838951310861427,3.9950062421972534,8.739076154806492,5.767790262172285,5.143570536828964,2.671660424469413,8.3645443196005,6.004993757802747,7.116104868913857,3.8764044943820224,5.543071161048689,5.480649188514358,7.740324594257178,2.340823970037453,4.31960049937578,3.9138576779026217,4.781523096129837,8.11485642946317,3.3458177278401995,7.240948813982522,6.429463171036204,5.97378277153558, +6.061173533083646,7.677902621722847,4.762796504369538,7.49063670411985,5.580524344569288,5.524344569288389,2.4656679151061174,5.380774032459426,3.245942571785269,4.719101123595506,5.34956304619226,3.5580524344569286,2.153558052434457,2.6154806491885143,3.589263420724095,8.177278401997503,6.928838951310862,5.199750312109863,3.8951310861423223,3.3645443196004994,6.192259675405743,7.740324594257178,4.887640449438202,7.927590511860175,7.116104868913857,3.2521847690387014,2.9962546816479403,2.634207240948814,4.269662921348314,6.01123595505618,2.203495630461923,3.545568039950062,6.803995006242197,5.761548064918852,3.0961298377028714,4.425717852684145,3.439450686641698,8.614232209737828,6.210986267166042,2.33458177278402,2.596754057428215,6.679151061173534,5.9238451935081144,3.826466916354557,3.058676654182272,3.2084893882646695,8.177278401997503,5.34956304619226,3.7515605493133584,6.803995006242197,5.237203495630462,5.855181023720349,6.20474406991261,8.614232209737828,3.6766541822721597,5.287141073657928,6.1485642946317105,7.8027465667915115,8.05243445692884,5.3745318352059925,3.938826466916354,5.0062421972534334,5.493133583021224,3.5705368289637955,8.05243445692884,5.355805243445693,4.169787765293384,7.553058676654182,3.745318352059925,5.355805243445693,6.104868913857677,6.554307116104869,7.553058676654182,5.742821473158552,8.05243445692884,7.740324594257178,5.792759051186017,4.9937578027465666,2.908863920099875,4.02621722846442,8.801498127340825,5.799001248439451,5.174781523096129,2.690387016229713,8.426966292134832,6.023720349563047,7.116104868913857,3.9076154806491883,5.568039950062421,5.511860174781523,7.740324594257178,2.3657927590511862,4.3508114856429465,3.938826466916354,4.812734082397004,8.11485642946317,3.3770287141073654,7.240948813982522,6.429463171036204,5.998751560549313, +6.086142322097379,7.740324594257178,4.794007490636704,7.553058676654182,5.605493133583021,5.543071161048689,2.4906367041198503,5.405742821473158,3.2771535580524347,4.737827715355805,5.3745318352059925,3.5830212234706615,2.1785268414481895,2.640449438202247,3.6142322097378274,8.177278401997503,,,3.920099875156055,3.3895131086142323,6.223470661672909,7.740324594257178,4.912609238451935,7.927590511860175,7.116104868913857,3.2771535580524347,3.027465667915106,2.6591760299625467,4.300873907615481,6.036204744069912,2.2284644194756553,3.576779026217228,6.803995006242197,5.786516853932584,3.1210986267166043,4.450686641697877,3.470661672908864,8.614232209737828,6.235955056179775,2.35330836454432,2.6154806491885143,6.741573033707866,5.948813982521848,3.8639200998751564,3.089887640449438,3.2397003745318353,8.239700374531834,,3.7827715355805243,6.803995006242197,5.268414481897628,5.8863920099875156,,8.67665418227216,3.701622971285893,5.305867665418227,6.179775280898876,,8.05243445692884,5.399500624219725,3.957553058676654,5.024968789013733,5.5305867665418225,3.595505617977528,8.11485642946317,5.380774032459426,4.188514357053683,7.615480649188515,3.764044943820225,5.380774032459426,6.1360799001248445,6.554307116104869,7.553058676654182,5.774032459425719,8.05243445692884,7.740324594257178,5.811485642946318,5.031210986267166,2.933832709113608,4.063670411985019,,5.830212234706617,5.205992509363296,2.7091136079900124,,6.048689138576779,7.116104868913857,3.938826466916354,5.593008739076155,5.549313358302123,,2.3907615480649187,4.382022471910113,3.9637952559300875,4.843945068664169,,3.4144818976279647,7.240948813982522,6.491885143570538,6.023720349563047, +6.117353308364544,7.8027465667915115,4.831460674157303,7.553058676654182,5.630461922596755,5.568039950062421,2.515605493133583,5.430711610486892,3.3021223470661676,4.762796504369538,5.393258426966292,3.6142322097378274,2.203495630461923,2.671660424469413,3.639200998751561,8.239700374531834,,,3.9450686641697876,3.408239700374532,6.242197253433209,7.8027465667915115,4.937578027465668,7.990012484394507,7.17852684144819,3.3083645443196006,3.058676654182272,2.68414481897628,4.332084893882647,6.061173533083646,2.253433208489388,3.6142322097378274,6.866416978776529,5.805243445692884,3.139825218476904,4.475655430711611,3.508114856429463,8.67665418227216,6.242197253433209,2.3782771535580522,2.640449438202247,6.741573033707866,5.97378277153558,3.8951310861423223,3.1210986267166043,3.2646691635455682,8.239700374531834,,3.81398252184769,6.866416978776529,5.293383270911361,5.9238451935081144,,8.67665418227216,,5.324594257178527,6.20474406991261,,8.05243445692884,5.430711610486892,3.9762796504369535,5.049937578027466,5.561797752808988,3.620474406991261,8.11485642946317,5.405742821473158,4.213483146067416,7.615480649188515,3.7890137328339577,5.405742821473158,6.167290886392011,6.616729088639201,7.615480649188515,5.799001248439451,8.11485642946317,7.8027465667915115,5.836454431960051,5.062421972534332,,4.1011235955056184,,5.861423220973783,5.243445692883895,2.7340823970037453,,6.073657927590512,7.17852684144819,3.970037453183521,5.617977528089888,5.580524344569288,,2.4094881398252186,4.413233458177278,3.9950062421972534,4.881398252184769,,3.4456928838951315,7.303370786516854,6.491885143570538,6.048689138576779, +6.1485642946317105,7.8027465667915115,4.8626716604244695,7.615480649188515,5.655430711610487,5.593008739076155,2.5343320848938826,5.455680399500624,3.3333333333333335,4.787765293383271,5.418227215980025,3.6454431960049942,2.2222222222222223,2.702871410736579,3.6641697877652937,8.239700374531834,,,3.970037453183521,3.4269662921348316,6.30461922596754,7.8027465667915115,4.962546816479401,7.990012484394507,7.17852684144819,3.339575530586767,3.089887640449438,2.7091136079900124,4.3632958801498125,6.086142322097379,2.272159800249688,3.6454431960049942,6.866416978776529,5.830212234706617,3.1647940074906367,4.49438202247191,3.545568039950062,8.67665418227216,6.30461922596754,2.397003745318352,2.66541822721598,6.741573033707866,6.004993757802747,3.926342072409488,3.1460674157303368,3.2896379525593007,8.302122347066168,,,6.866416978776529,5.324594257178527,5.955056179775282,,8.739076154806492,,5.34956304619226,6.235955056179775,,8.11485642946317,5.455680399500624,4.001248439450687,5.068664169787765,5.593008739076155,3.639200998751561,8.177278401997503,5.424469413233458,4.2322097378277155,7.615480649188515,3.81398252184769,5.430711610486892,6.198501872659176,6.616729088639201,7.615480649188515,5.830212234706617,8.11485642946317,7.8027465667915115,5.855181023720349,5.099875156054932,,4.132334581772784,,5.892634207240949,5.274656679151062,2.752808988764045,,6.098626716604246,7.17852684144819,4.001248439450687,5.6491885143570535,5.611735330836455,,2.4344569288389515,4.444444444444445,4.019975031210986,4.912609238451935,,3.4831460674157304,7.303370786516854,6.554307116104869,6.067415730337078, +,7.865168539325843,4.893882646691636,,5.68039950062422,5.611735330836455,2.5593008739076155,,3.3645443196004994,4.806491885143571,5.436953807740325,3.6766541822721597,2.247191011235955,2.7340823970037453,3.689138576779026,8.302122347066168,,,3.9950062421972534,3.451935081148564,6.30461922596754,7.865168539325843,4.987515605493134,8.05243445692884,7.240948813982522,3.3645443196004994,3.114856429463171,2.7340823970037453,4.400749063670412,6.111111111111111,2.2971285892634206,3.682896379525593,6.866416978776529,5.848938826466916,3.183520599250936,4.519350811485642,3.576779026217228,8.739076154806492,6.30461922596754,2.4157303370786516,2.690387016229713,6.803995006242197,6.029962546816479,3.957553058676654,3.1772784019975036,3.3146067415730336,8.302122347066168,,,6.928838951310862,5.34956304619226,5.986267166042447,,8.801498127340825,,5.36828963795256,6.242197253433209,,8.11485642946317,5.480649188514358,4.019975031210986,5.087390761548065,5.6242197253433215,3.6641697877652937,8.177278401997503,5.449438202247191,4.257178526841448,7.677902621722847,3.8389513108614235,5.455680399500624,6.229712858926342,6.679151061173534,7.615480649188515,5.855181023720349,8.177278401997503,7.8027465667915115,5.880149812734083,5.131086142322098,,4.169787765293384,,5.9238451935081144,5.305867665418227,2.777777777777778,,6.123595505617978,7.240948813982522,4.032459425717852,5.674157303370786,5.64294631710362,,2.459425717852684,4.475655430711611,4.044943820224719,4.943820224719102,,3.5143570536828963,7.365792759051186,6.554307116104869,6.092384519350812, +,7.865168539325843,4.931335830212235,,5.705368289637952,5.636704119850187,2.5842696629213484,,3.3957553058676653,4.831460674157303,5.455680399500624,3.701622971285893,2.272159800249688,2.7652933832709112,3.714107365792759,,,,4.019975031210986,3.470661672908864,6.367041198501872,7.865168539325843,5.0062421972534334,,7.240948813982522,3.3957553058676653,3.1460674157303368,2.7590511860174782,4.431960049937578,6.1360799001248445,,3.714107365792759,6.928838951310862,5.8739076154806495,3.2084893882646695,4.544319600499376,3.6142322097378274,8.739076154806492,6.30461922596754,2.4406991260923845,2.715355805243446,6.803995006242197,6.054931335830212,3.9950062421972534,3.2084893882646695,3.3458177278401995,8.3645443196005,,,6.928838951310862,5.380774032459426,6.023720349563047,,8.801498127340825,,5.3870162297128585,6.30461922596754,,8.177278401997503,5.50561797752809,4.038701622971286,5.1123595505617985,5.655430711610487,3.682896379525593,8.239700374531834,5.468164794007491,4.275905118601748,7.677902621722847,3.8639200998751564,5.480649188514358,6.242197253433209,6.679151061173534,7.677902621722847,5.880149812734083,8.177278401997503,7.865168539325843,5.8988764044943816,5.168539325842697,,,,5.955056179775282,5.343320848938826,2.7965043695380776,,6.1485642946317105,7.240948813982522,4.063670411985019,5.69912609238452,5.674157303370786,,2.4843945068664173,4.506866416978776,4.069912609238452,4.9812734082397006,,3.5518102372034956,7.365792759051186,6.616729088639201,6.117353308364544, +,7.927590511860175,4.962546816479401,,5.730337078651686,5.655430711610487,2.602996254681648,,3.420724094881398,4.850187265917603,5.480649188514358,3.732833957553059,2.2908863920099876,2.790262172284644,3.7390761548064915,,,,4.044943820224719,3.495630461922597,6.367041198501872,7.927590511860175,5.031210986267166,,7.303370786516854,3.4269662921348316,3.1772784019975036,2.7840199750312107,4.463171036204744,,,3.745318352059925,6.928838951310862,5.8988764044943816,3.233458177278402,4.569288389513109,3.6454431960049942,8.801498127340825,6.367041198501872,2.459425717852684,2.740324594257179,6.866416978776529,6.086142322097379,4.02621722846442,3.2397003745318353,3.370786516853933,8.3645443196005,,,6.991260923845194,5.411985018726591,6.054931335830212,,8.863920099875156,,5.411985018726591,6.30461922596754,,8.177278401997503,5.536828963795256,4.057428214731585,5.131086142322098,5.686641697877653,3.7078651685393256,8.239700374531834,5.493133583021224,4.294631710362047,7.677902621722847,3.888888888888889,5.50561797752809,6.30461922596754,6.741573033707866,7.677902621722847,5.9113607990012484,8.239700374531834,7.865168539325843,5.917602996254682,5.199750312109863,,,,5.986267166042447,5.3745318352059925,2.82147315855181,,6.173533083645444,7.240948813982522,4.094881398252185,5.724094881398252,5.705368289637952,,2.5093632958801497,4.538077403245943,4.1011235955056184,5.012484394506866,,3.5830212234706615,7.428214731585518,,6.1360799001248445, +,7.927590511860175,4.9937578027465666,,5.7553058676654185,5.68039950062422,2.6279650436953808,,3.451935081148564,4.875156054931336,5.499375780274657,3.764044943820225,2.3158551810237205,2.82147315855181,3.764044943820225,,,,4.069912609238452,3.5143570536828963,6.367041198501872,7.990012484394507,5.056179775280899,,7.303370786516854,3.4581772784019975,3.2084893882646695,2.808988764044944,4.49438202247191,,,3.7827715355805243,6.928838951310862,5.917602996254682,3.2521847690387014,,3.682896379525593,8.801498127340825,6.367041198501872,2.478152309612984,2.7590511860174782,6.866416978776529,6.111111111111111,4.057428214731585,3.2646691635455682,3.3957553058676653,8.426966292134832,,,6.991260923845194,5.436953807740325,6.092384519350812,,8.863920099875156,,5.430711610486892,6.367041198501872,,8.239700374531834,5.561797752808988,4.0761548064918856,5.149812734082397,5.717852684144819,3.7265917602996255,8.302122347066168,5.5181023720349565,4.31960049937578,7.740324594257178,3.9138576779026217,5.5305867665418225,6.30461922596754,6.741573033707866,7.740324594257178,5.936329588014981,8.239700374531834,7.865168539325843,5.942571785268415,5.237203495630462,,,,6.0174781523096135,5.405742821473158,2.84019975031211,,6.192259675405743,7.303370786516854,4.1260923845193505,5.749063670411985,5.742821473158552,,2.5343320848938826,4.569288389513109,4.1260923845193505,5.043695380774032,,3.6142322097378274,7.428214731585518,,6.161048689138577, +,7.990012484394507,5.031210986267166,,5.7802746566791505,5.705368289637952,,,3.4831460674157304,4.900124843945068,5.524344569288389,3.7952559300873907,2.340823970037453,2.852684144818976,3.7890137328339577,,,,4.094881398252185,3.5393258426966296,6.429463171036204,7.990012484394507,5.081148564294631,,7.365792759051186,3.4831460674157304,3.2397003745318353,2.8339575530586765,4.525593008739076,,,3.81398252184769,6.991260923845194,,3.2771535580524347,,3.714107365792759,8.863920099875156,6.429463171036204,2.4968789013732833,2.7840199750312107,6.866416978776529,6.1360799001248445,4.0886392009987516,3.295880149812734,,8.426966292134832,,,7.0536828963795255,5.468164794007491,6.123595505617978,,8.926342072409488,,5.455680399500624,6.367041198501872,,8.239700374531834,,4.094881398252185,5.174781523096129,5.749063670411985,3.7515605493133584,8.302122347066168,5.536828963795256,4.33832709113608,7.740324594257178,3.938826466916354,5.555555555555556,,6.803995006242197,7.740324594257178,5.961298377028713,8.302122347066168,7.927590511860175,5.961298377028713,5.268414481897628,,,,6.048689138576779,5.443196004993759,2.865168539325843,,6.217228464419476,7.303370786516854,4.157303370786517,5.774032459425719,5.774032459425719,,2.5530586766541825,4.600499375780275,4.151061173533084,5.081148564294631,,3.651685393258427,,,6.186017478152309, +,,5.062421972534332,,5.805243445692884,,,,3.5143570536828963,4.918851435705368,5.543071161048689,3.8202247191011236,2.359550561797753,2.8838951310861427,3.81398252184769,,,,4.119850187265917,3.5580524344569286,6.429463171036204,8.05243445692884,5.106117353308365,,7.365792759051186,3.5143570536828963,3.2709113607990012,2.8589263420724094,4.556803995006242,,,3.8451935081148565,6.991260923845194,,3.295880149812734,,3.7515605493133584,8.863920099875156,6.429463171036204,2.521847690387016,2.808988764044944,6.928838951310862,6.161048689138577,4.1260923845193505,3.3270911360799,,8.489388264669165,,,7.0536828963795255,5.493133583021224,6.161048689138577,,,,5.474406991260924,6.429463171036204,,8.239700374531834,,4.1136079900124844,5.19350811485643,5.7802746566791505,3.776529338327091,8.3645443196005,5.561797752808988,4.3632958801498125,7.740324594257178,3.9637952559300875,5.580524344569288,,6.803995006242197,,5.992509363295881,8.302122347066168,7.927590511860175,5.980024968789014,5.305867665418227,,,,6.079900124843945,5.474406991260924,2.8838951310861427,,6.242197253433209,7.365792759051186,4.18227215980025,5.799001248439451,5.805243445692884,,2.578027465667915,4.631710362047441,4.18227215980025,5.1123595505617985,,3.682896379525593,,,6.210986267166042, +,,5.093632958801498,,5.830212234706617,,,,3.5393258426966296,4.943820224719102,5.568039950062421,3.8514357053682895,2.3845193508114857,2.908863920099875,3.8389513108614235,,,,4.144818976279651,3.5830212234706615,6.491885143570538,,5.131086142322098,,7.428214731585518,3.545568039950062,3.295880149812734,2.8838951310861427,4.588014981273409,,,3.882646691635456,6.991260923845194,,3.320848938826467,,,8.926342072409488,6.429463171036204,2.5405742821473156,2.8339575530586765,6.928838951310862,,,3.352059925093633,,8.489388264669165,,,7.116104868913857,5.524344569288389,6.192259675405743,,,,5.493133583021224,6.429463171036204,,8.302122347066168,,4.132334581772784,5.212234706616729,5.811485642946318,3.7952559300873907,8.3645443196005,5.580524344569288,4.382022471910113,7.8027465667915115,3.9887640449438204,5.605493133583021,,6.866416978776529,,6.0174781523096135,8.3645443196005,7.927590511860175,6.004993757802747,5.337078651685393,,,,6.111111111111111,5.50561797752809,2.908863920099875,,6.242197253433209,7.365792759051186,4.213483146067416,5.823970037453184,5.836454431960051,,2.602996254681648,4.662921348314606,4.207240948813983,5.143570536828964,,3.7203495630461925,,,6.229712858926342, +,,5.131086142322098,,5.855181023720349,,,,3.5705368289637955,4.9687890137328345,5.586766541822722,3.882646691635456,2.4094881398252186,2.9400749063670415,3.8639200998751564,,,,4.169787765293384,3.6017478152309614,6.491885143570538,,5.15605493133583,,7.428214731585518,3.5705368289637955,3.3270911360799,2.908863920099875,4.619225967540574,,,3.9138576779026217,7.0536828963795255,,3.3458177278401995,,,8.926342072409488,6.491885143570538,2.5593008739076155,2.8589263420724094,6.928838951310862,,,3.383270911360799,,8.551810237203496,,,7.116104868913857,,,,,,5.5181023720349565,6.491885143570538,,8.302122347066168,,4.151061173533084,5.237203495630462,5.842696629213483,3.8202247191011236,8.426966292134832,5.605493133583021,4.406991260923846,7.8027465667915115,4.00749063670412,5.630461922596755,,,,6.0424469413233455,8.3645443196005,7.990012484394507,6.023720349563047,5.3745318352059925,,,,,5.543071161048689,2.9275905118601746,,6.30461922596754,7.428214731585518,4.244694132334582,5.848938826466916,5.867665418227216,,2.6279650436953808,4.694132334581773,4.2322097378277155,5.174781523096129,,3.7515605493133584,,,6.242197253433209, +,,5.162297128589263,,,,,,3.6017478152309614,4.987515605493134,5.605493133583021,3.9076154806491883,2.428214731585518,2.9712858926342074,,,,,4.194756554307116,3.6267166042446943,6.554307116104869,,5.181023720349563,,7.49063670411985,3.6017478152309614,3.3583021223470664,2.933832709113608,4.65043695380774,,,,7.0536828963795255,,3.3645443196004994,,,8.98876404494382,,2.5842696629213484,2.8838951310861427,6.991260923845194,,,3.4144818976279647,,8.551810237203496,,,7.116104868913857,,,,,,5.536828963795256,6.491885143570538,,8.3645443196005,,4.176029962546816,5.2559300873907615,5.880149812734083,3.8389513108614235,8.426966292134832,5.6242197253433215,4.425717852684145,7.8027465667915115,4.032459425717852,,,,,6.073657927590512,8.426966292134832,7.990012484394507,6.0424469413233455,5.405742821473158,,,,,,2.9525593008739075,,,7.428214731585518,,5.8739076154806495,5.905118601747815,,,,4.257178526841448,5.212234706616729,,,,,6.30461922596754, +,,,,,,,,3.6329588014981273,5.012484394506866,5.630461922596755,3.938826466916354,2.453183520599251,3.0024968789013733,,,,,4.213483146067416,3.6454431960049942,6.554307116104869,,5.205992509363296,,7.49063670411985,3.6329588014981273,,2.958801498127341,4.681647940074906,,,,7.0536828963795255,,3.3895131086142323,,,8.98876404494382,,2.602996254681648,2.908863920099875,6.991260923845194,,,,,,,,7.17852684144819,,,,,,5.555555555555556,6.491885143570538,,8.3645443196005,,4.194756554307116,5.274656679151062,5.9113607990012484,3.8639200998751564,8.489388264669165,5.6491885143570535,4.450686641697877,,4.057428214731585,,,,,6.098626716604246,8.426966292134832,7.990012484394507,6.067415730337078,,,,,,,2.9712858926342074,,,7.428214731585518,,5.8988764044943816,5.936329588014981,,,,4.288389513108614,5.243445692883895,,,,,6.30461922596754, +,,,,,,,,3.6579275905118602,5.0374531835206,5.6491885143570535,,2.471910112359551,3.033707865168539,,,,,,3.6704119850187267,6.616729088639201,,5.224719101123595,,7.553058676654182,,,2.9837702871410734,4.712858926342073,,,,7.116104868913857,,3.408239700374532,,,9.051186017478152,,,2.9275905118601746,6.991260923845194,,,,,,,,7.17852684144819,,,,,,5.580524344569288,6.554307116104869,,,,4.213483146067416,5.299625468164794,5.942571785268415,3.888888888888889,8.489388264669165,,4.4694132334581775,,4.082397003745319,,,,,6.123595505617978,8.489388264669165,8.05243445692884,6.086142322097379,,,,,,,2.9962546816479403,,,7.49063670411985,,5.9238451935081144,5.967540574282147,,,,,5.274656679151062,,,,,6.30461922596754, +,,,,,,,,3.689138576779026,5.056179775280899,,,2.4968789013732833,3.058676654182272,,,,,,3.689138576779026,6.616729088639201,,5.249687890137328,,7.553058676654182,,,3.0087390761548067,,,,,7.116104868913857,,3.4332084893882646,,,9.051186017478152,,,2.9525593008739075,7.0536828963795255,,,,,,,,7.240948813982522,,,,,,,,,,,4.2322097378277155,5.318352059925093,5.97378277153558,3.9076154806491883,8.551810237203496,,4.49438202247191,,4.107365792759051,,,,,6.154806491885144,8.489388264669165,8.05243445692884,6.104868913857677,,,,,,,3.0149812734082393,,,7.49063670411985,,5.948813982521848,5.998751560549313,,,,,,,,,,6.367041198501872, +,,,,,,,,3.7203495630461925,,,,,3.089887640449438,,,,,,3.714107365792759,6.679151061173534,,5.274656679151062,,7.553058676654182,,,3.033707865168539,,,,,,,3.4581772784019975,,,9.113607990012484,,,2.977528089887641,,,,,,,,,7.240948813982522,,,,,,,,,,,4.250936329588015,5.337078651685393,6.004993757802747,3.9325842696629216,8.551810237203496,,,,4.132334581772784,,,,,6.179775280898876,8.551810237203496,8.05243445692884,6.129837702871411,,,,,,,3.0399500624219726,,,7.553058676654182,,5.97378277153558,6.029962546816479,,,,,,,,,,6.367041198501872, +,,,,,,,,,,,,,3.1210986267166043,,,,,,3.732833957553059,6.679151061173534,,5.299625468164794,,,,,3.058676654182272,,,,,,,,,,9.113607990012484,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.269662921348314,5.3620474406991265,6.036204744069912,3.951310861423221,8.614232209737828,,,,,,,,,6.210986267166042,8.551810237203496,8.11485642946317,6.1485642946317105,,,,,,,3.058676654182272,,,7.553058676654182,,,,,,,,,,,,,6.367041198501872, +,,,,,,,,,,,,,3.15230961298377,,,,,,3.7515605493133584,6.741573033707866,,5.324594257178527,,,,,3.0836454431960054,,,,,,,,,,9.176029962546817,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.288389513108614,5.380774032459426,6.067415730337078,3.9762796504369535,8.614232209737828,,,,,,,,,6.235955056179775,,8.11485642946317,6.167290886392011,,,,,,,3.077403245942572,,,7.553058676654182,,,,,,,,,,,,,6.429463171036204, +,,,,,,,,,,,,,,,,,,,,6.741573033707866,,,,,,,,,,,,,,,,,9.176029962546817,,,,,,,,,,,,,,,,,,,,,,,,5.399500624219725,6.098626716604246,,8.67665418227216,,,,,,,,,6.242197253433209,,8.11485642946317,6.192259675405743,,,,,,,3.102372034956305,,,7.615480649188515,,,,,,,,,,,,,6.429463171036204, +,,,,,,,,,,,,,,,,,,,,6.803995006242197,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5.424469413233458,,,,,,,,,,,,6.30461922596754,,,6.210986267166042,,,,,,,3.1210986267166043,,,7.615480649188515,,,,,,,,,,,,,, +3.651685393258427,5.074906367041199,2.1161048689138577,5.305867665418227,3.589263420724095,3.7265917602996255,0.6554307116104868,3.3021223470661676,0.9051186017478152,2.908863920099875,3.6641697877652937,1.223470661672909,0.35268414481897625,0.24968789013732834,1.647940074906367,5.855181023720349,4.4818976279650435,2.7590511860174782,1.9600499375780276,1.6541822721598003,3.8951310861423223,5.224719101123595,2.9712858926342074,5.474406991260924,4.800249687890138,0.9488139825218477,0.6173533083645443,0.6616729088639202,1.7602996254681649,4.057428214731585,0.24781523096129837,0.8926342072409489,5.099875156054932,4.001248439450687,1.317103620474407,2.5842696629213484,0.717852684144819,6.179775280898876,4.313358302122348,0.7116104868913858,0.6928838951310862,4.956304619225968,3.8077403245942576,1.2359550561797754,0.7365792759051186,1.079900124843945,5.724094881398252,2.702871410736579,1.0923845193508115,4.444444444444445,2.9837702871410734,3.183520599250936,4.132334581772784,5.81772784019975,1.797752808988764,3.6267166042446943,3.9076154806491883,4.875156054931336,6.029962546816479,3.2397003745318353,2.4032459425717856,3.3645443196004994,2.9837702871410734,1.8102372034956304,5.6491885143570535,3.5830212234706615,2.446941323345818,5.855181023720349,1.8164794007490637,3.3957553058676653,3.6766541822721597,3.957553058676654,5.705368289637952,3.595505617977528,5.593008739076155,6.104868913857677,4.138576779026217,2.303370786516854,0.9550561797752809,1.2796504369538078,5.730337078651686,3.3645443196004994,2.5343320848938826,0.9800249687890138,5.930087390761548,4.1260923845193505,5.1248439450686645,1.4544319600499376,3.576779026217228,2.958801498127341,5.436953807740325,0.466916354556804,1.9101123595505618,1.8352059925093633,2.1972534332084894,5.031210986267166,0.6928838951310862,4.856429463171036,4.425717852684145,4.157303370786517, +3.682896379525593,5.1123595505617985,2.153558052434457,5.33083645443196,3.6142322097378274,3.745318352059925,0.6803995006242198,3.3270911360799,0.9363295880149812,2.933832709113608,3.682896379525593,1.2546816479400749,0.3757802746566792,0.27965043695380776,1.6729088639200997,5.880149812734083,4.51310861423221,2.790262172284644,1.9850187265917605,1.6791510611735332,3.920099875156055,5.262172284644195,2.9962546816479403,5.50561797752809,4.831460674157303,0.9737827715355806,0.6491885143570537,0.686641697877653,1.7915106117353308,4.082397003745319,0.2727840199750312,0.9300873907615481,5.1248439450686645,4.019975031210986,1.34207240948814,2.6092384519350813,0.7490636704119851,6.210986267166042,4.33832709113608,0.7303370786516854,0.717852684144819,4.975031210986267,3.8389513108614235,1.2671660424469413,0.7677902621722846,1.104868913857678,5.7553058676654185,2.7340823970037453,1.1235955056179776,4.475655430711611,3.0087390761548067,3.214731585518102,4.157303370786517,5.855181023720349,1.8164794007490637,3.651685393258427,3.9325842696629216,4.912609238451935,6.054931335830212,3.2709113607990012,2.4219725343320846,3.383270911360799,3.0149812734082393,1.8289637952559301,5.68039950062422,3.607990012484395,2.4656679151061174,5.880149812734083,1.8414481897627966,3.420724094881398,3.7078651685393256,3.9887640449438204,5.730337078651686,3.6267166042446943,5.6242197253433215,6.129837702871411,4.16354556803995,2.340823970037453,0.9800249687890138,1.3108614232209737,5.767790262172285,3.3895131086142323,2.571785268414482,0.9987515605493134,5.961298377028713,4.151061173533084,5.149812734082397,1.4856429463171037,3.6017478152309614,2.990012484394507,5.468164794007491,0.49063670411985016,1.941323345817728,1.8601747815230962,2.2347066167290888,5.068664169787765,0.7303370786516854,4.887640449438202,4.450686641697877,4.18227215980025, +3.714107365792759,5.143570536828964,2.184769038701623,5.3620474406991265,3.639200998751561,3.7702871410736583,0.7053682896379525,3.3583021223470664,0.9675405742821472,2.958801498127341,3.7078651685393256,1.2796504369538078,0.39825218476903873,0.3096129837702871,1.6978776529338326,5.9113607990012484,4.544319600499376,2.82147315855181,2.009987515605493,1.6978776529338326,3.951310861423221,5.293383270911361,3.0149812734082393,5.536828963795256,4.856429463171036,1.0049937578027466,0.6803995006242198,0.7116104868913858,1.8227215980024971,4.107365792759051,0.29712858926342073,0.9612983770287141,5.143570536828964,4.044943820224719,1.3670411985018727,2.634207240948814,0.7865168539325842,6.242197253433209,4.3632958801498125,0.7553058676654182,0.7428214731585518,5.0,3.8639200998751564,1.2983770287141074,0.7927590511860175,1.1298377028714106,5.786516853932584,2.7715355805243447,1.161048689138577,4.506866416978776,3.0399500624219726,3.245942571785269,4.188514357053683,5.892634207240949,1.8414481897627966,3.6704119850187267,3.9637952559300875,4.950062421972534,6.086142322097379,3.295880149812734,2.446941323345818,3.4019975031210987,3.046192259675406,1.8539325842696628,5.711610486891385,3.6329588014981273,2.4906367041198503,5.8988764044943816,1.8664169787765295,3.4456928838951315,3.7390761548064915,4.019975031210986,5.7553058676654185,3.651685393258427,5.655430711610487,6.1485642946317105,4.18227215980025,2.3720349563046192,1.0049937578027466,1.348314606741573,5.805243445692884,3.420724094881398,2.602996254681648,1.0237203495630463,5.992509363295881,4.176029962546816,5.174781523096129,1.5168539325842696,3.6267166042446943,3.0212234706616727,5.499375780274657,0.5149812734082396,1.9725343320848938,1.8851435705368291,2.2659176029962547,5.106117353308365,0.7615480649188515,4.918851435705368,4.475655430711611,4.207240948813983, +3.745318352059925,5.174781523096129,2.215980024968789,5.3870162297128585,3.6641697877652937,3.7952559300873907,0.7240948813982522,3.383270911360799,0.9987515605493134,2.977528089887641,3.7265917602996255,1.3108614232209737,0.4213483146067416,0.33957553058676654,1.7228464419475658,5.942571785268415,4.575530586766542,2.8464419475655434,2.034956304619226,1.7228464419475658,3.982521847690387,5.324594257178527,3.0399500624219726,5.568039950062421,4.887640449438202,1.0362047440699127,0.7053682896379525,0.7365792759051186,1.8539325842696628,4.132334581772784,0.32209737827715357,0.9987515605493134,5.168539325842697,4.069912609238452,1.3857677902621723,2.6591760299625467,0.8177278401997503,6.30461922596754,4.388264669163545,0.7740324594257179,0.7677902621722846,5.0187265917602994,3.888888888888889,1.3358302122347065,0.8239700374531835,1.161048689138577,5.81772784019975,2.8027465667915106,1.1922596754057428,4.538077403245943,3.0649188514357055,3.2833957553058677,4.213483146067416,5.930087390761548,1.8664169787765295,3.6953807740324596,3.9887640449438204,4.987515605493134,6.111111111111111,3.320848938826467,2.4656679151061174,3.4269662921348316,3.0836454431960054,1.8726591760299625,5.736579275905119,3.651685393258427,2.5093632958801497,5.9238451935081144,1.8913857677902621,3.470661672908864,3.7702871410736583,4.057428214731585,5.774032459425719,3.6766541822721597,5.686641697877653,6.167290886392011,4.200998751560549,2.4032459425717856,1.0299625468164793,1.3795255930087391,5.848938826466916,3.451935081148564,2.634207240948814,1.042446941323346,6.023720349563047,4.200998751560549,5.199750312109863,1.5480649188514357,3.651685393258427,3.0524344569288386,5.524344569288389,0.5387016229712859,2.00374531835206,1.9101123595505618,2.2971285892634206,5.149812734082397,0.7990012484394506,4.950062421972534,4.500624219725343,4.225967540574282, +3.776529338327091,5.212234706616729,2.253433208489388,5.418227215980025,3.689138576779026,3.81398252184769,0.7490636704119851,3.408239700374532,1.0237203495630463,3.0024968789013733,3.745318352059925,1.34207240948814,0.44382022471910115,0.36953807740324596,1.7415730337078652,5.97378277153558,4.606741573033708,2.8776529338327093,2.0599250936329585,1.7415730337078652,4.00749063670412,5.355805243445693,3.0649188514357055,5.599250936329588,4.918851435705368,1.0611735330836456,0.7365792759051186,0.7615480649188515,1.8851435705368291,4.157303370786517,0.3464419475655431,1.0299625468164793,5.187265917602996,4.0886392009987516,1.410736579275905,2.6779026217228465,0.8551810237203495,6.30461922596754,4.413233458177278,0.7927590511860175,0.7927590511860175,5.043695380774032,3.920099875156055,1.3670411985018727,0.8551810237203495,1.1860174781523096,5.848938826466916,2.8339575530586765,1.229712858926342,4.563046192259676,3.0961298377028714,3.3146067415730336,4.238451935081149,5.961298377028713,1.8913857677902621,3.714107365792759,4.019975031210986,5.024968789013733,6.1360799001248445,3.352059925093633,2.4843945068664173,3.4456928838951315,3.114856429463171,1.8976279650436954,5.767790262172285,3.6766541822721597,2.5343320848938826,5.942571785268415,1.916354556803995,3.495630461922597,3.801498127340824,4.0886392009987516,5.799001248439451,3.7078651685393256,5.717852684144819,6.192259675405743,4.225967540574282,2.4406991260923845,1.0549313358302121,1.4169787765293382,5.8863920099875156,3.4831460674157304,2.671660424469413,1.0674157303370786,6.054931335830212,4.225967540574282,5.224719101123595,1.5792759051186018,3.6766541822721597,3.089887640449438,5.555555555555556,0.5630461922596754,2.034956304619226,1.941323345817728,2.328339575530587,5.187265917602996,0.8302122347066168,4.975031210986267,4.531835205992509,4.250936329588015, +3.801498127340824,5.243445692883895,2.2846441947565546,5.443196004993759,3.714107365792759,3.8389513108614235,0.7740324594257179,3.4332084893882646,1.0549313358302121,3.027465667915106,3.7702871410736583,1.373283395755306,0.466916354556804,0.3995006242197253,1.766541822721598,5.998751560549313,4.637952559300874,2.908863920099875,2.084893882646692,1.766541822721598,4.038701622971286,5.3870162297128585,3.089887640449438,5.630461922596755,4.943820224719102,1.0923845193508115,0.7677902621722846,0.7865168539325842,1.916354556803995,4.18227215980025,0.3714107365792759,1.0611735330836456,5.212234706616729,4.1136079900124844,1.4294631710362047,2.702871410736579,0.8863920099875156,6.30461922596754,4.438202247191011,0.8114856429463172,0.8177278401997503,5.062421972534332,3.9450686641697876,1.3982521847690388,0.8801498127340824,1.2109862671660423,5.880149812734083,2.871410736579276,1.260923845193508,4.594257178526841,3.1210986267166043,3.352059925093633,4.263420724094882,5.998751560549313,1.916354556803995,3.732833957553059,4.051186017478152,5.062421972534332,6.161048689138577,3.3770287141073654,2.5031210986267167,3.464419475655431,3.1460674157303368,1.916354556803995,5.799001248439451,3.6953807740324596,2.5530586766541825,5.967540574282147,1.941323345817728,3.5205992509363297,3.83270911360799,4.119850187265917,5.823970037453184,3.732833957553059,5.749063670411985,6.210986267166042,4.244694132334582,2.471910112359551,1.079900124843945,1.4544319600499376,5.9238451935081144,3.5143570536828963,2.702871410736579,1.0861423220973783,6.086142322097379,4.244694132334582,5.249687890137328,1.6104868913857677,3.701622971285893,3.1210986267166043,5.586766541822722,0.5867665418227216,2.066167290886392,1.9662921348314608,2.3657927590511862,5.224719101123595,0.867665418227216,5.0062421972534334,4.556803995006242,4.275905118601748, +3.83270911360799,5.274656679151062,2.3158551810237205,5.474406991260924,3.7390761548064915,3.857677902621723,0.7927590511860175,3.4581772784019975,1.0861423220973783,3.046192259675406,3.7890137328339577,1.3982521847690388,0.4893882646691636,0.42946317103620474,1.7915106117353308,6.029962546816479,4.66916354556804,2.9400749063670415,2.1098626716604243,1.7852684144818978,4.069912609238452,5.418227215980025,3.114856429463171,5.66167290886392,4.975031210986267,1.1235955056179776,0.7990012484394506,0.8114856429463172,1.9475655430711611,4.207240948813983,0.39637952559300876,1.0986267166042447,5.230961298377029,4.132334581772784,1.4544319600499376,2.727840199750312,0.9238451935081149,6.367041198501872,4.456928838951311,0.8364544319600499,0.8426966292134832,5.087390761548065,3.970037453183521,1.4294631710362047,0.9113607990012486,1.2421972534332086,5.9113607990012484,2.902621722846442,1.2921348314606742,4.6254681647940075,3.15230961298377,3.383270911360799,4.288389513108614,6.036204744069912,1.9350811485642945,3.7578027465667914,4.0761548064918856,5.099875156054932,6.186017478152309,3.4019975031210987,2.521847690387016,3.4893882646691634,3.1772784019975036,1.941323345817728,5.830212234706617,3.7203495630461925,2.578027465667915,5.986267166042447,1.9662921348314608,3.545568039950062,3.8639200998751564,4.151061173533084,5.848938826466916,3.7578027465667914,5.7802746566791505,6.229712858926342,4.263420724094882,2.5093632958801497,1.104868913857678,1.4856429463171037,5.961298377028713,3.545568039950062,2.7340823970037453,1.1111111111111112,6.117353308364544,4.269662921348314,5.274656679151062,1.6416978776529338,3.7265917602996255,3.15230961298377,5.611735330836455,0.6104868913857677,2.097378277153558,1.9912609238451935,2.397003745318352,5.262172284644195,0.898876404494382,5.0374531835206,4.581772784019975,4.294631710362047, +3.8639200998751564,5.312109862671661,2.35330836454432,5.499375780274657,3.764044943820225,3.882646691635456,0.8177278401997503,3.4893882646691634,1.1173533083645444,3.0711610486891385,3.81398252184769,1.4294631710362047,0.5124843945068664,0.45942571785268416,1.8164794007490637,6.061173533083646,4.700374531835206,2.9712858926342074,2.128589263420724,1.8102372034956304,4.094881398252185,5.449438202247191,3.139825218476904,5.692883895131087,5.0062421972534334,1.1485642946317103,0.8302122347066168,0.8364544319600499,1.978776529338327,4.2322097378277155,0.4207240948813982,1.1298377028714106,5.2559300873907615,4.157303370786517,1.4794007490636705,2.746566791510612,0.9550561797752809,6.367041198501872,4.4818976279650435,0.8551810237203495,0.8614232209737829,5.106117353308365,3.9950062421972534,1.466916354556804,0.9425717852684146,1.2671660424469413,5.942571785268415,2.9400749063670415,1.3295880149812733,4.656679151061174,3.183520599250936,3.4144818976279647,4.31960049937578,6.067415730337078,1.9600499375780276,3.776529338327091,4.107365792759051,5.1373283395755305,6.210986267166042,3.4332084893882646,2.5405742821473156,3.508114856429463,3.2084893882646695,1.9662921348314608,5.861423220973783,3.745318352059925,2.596754057428215,6.01123595505618,1.9912609238451935,3.5705368289637955,3.8951310861423223,4.188514357053683,5.867665418227216,3.7890137328339577,5.811485642946318,6.242197253433209,4.288389513108614,2.5405742821473156,1.1298377028714106,1.523096129837703,6.004993757802747,3.576779026217228,2.7715355805243447,1.1298377028714106,6.1485642946317105,4.294631710362047,5.299625468164794,1.6729088639200997,3.7515605493133584,3.183520599250936,5.64294631710362,0.6367041198501873,2.128589263420724,2.0224719101123596,2.428214731585518,5.305867665418227,0.9363295880149812,5.068664169787765,4.606741573033708,4.31960049937578, +3.8951310861423223,5.343320848938826,2.3845193508114857,5.5305867665418225,3.7890137328339577,3.9076154806491883,0.8426966292134832,3.5143570536828963,1.1423220973782773,3.0961298377028714,3.83270911360799,1.4606741573033708,0.534956304619226,0.4893882646691636,1.8414481897627966,6.086142322097379,4.7315855181023725,3.0024968789013733,2.153558052434457,1.8289637952559301,4.1260923845193505,5.480649188514358,3.1647940074906367,5.724094881398252,5.0374531835206,1.1797752808988764,0.8614232209737829,0.8614232209737829,2.016229712858926,4.257178526841448,0.44569288389513106,1.161048689138577,5.274656679151062,4.176029962546816,1.4981273408239701,2.7715355805243447,0.9925093632958802,6.429463171036204,4.506866416978776,0.8739076154806492,0.8863920099875156,5.131086142322098,4.02621722846442,1.4981273408239701,0.9737827715355806,1.2921348314606742,5.97378277153558,2.9712858926342074,1.3607990012484397,4.681647940074906,3.2084893882646695,3.451935081148564,4.344569288389513,6.104868913857677,1.9850187265917605,3.7952559300873907,4.132334581772784,5.174781523096129,6.235955056179775,3.4581772784019975,2.5593008739076155,3.5268414481897628,3.2397003745318353,1.9850187265917605,5.892634207240949,3.764044943820225,2.6217228464419473,6.029962546816479,2.016229712858926,3.595505617977528,3.926342072409488,4.219725343320849,5.892634207240949,3.81398252184769,5.842696629213483,6.242197253433209,4.307116104868914,2.578027465667915,1.1548064918851435,1.554307116104869,6.0424469413233455,3.607990012484395,2.8027465667915106,1.1548064918851435,6.179775280898876,4.31960049937578,5.324594257178527,1.704119850187266,3.776529338327091,3.214731585518102,5.674157303370786,0.6616729088639202,2.15980024968789,2.0474406991260925,2.4656679151061174,5.343320848938826,0.9675405742821472,5.099875156054932,4.631710362047441,4.344569288389513, +3.926342072409488,5.3745318352059925,2.4157303370786516,5.555555555555556,3.81398252184769,3.926342072409488,0.8614232209737829,3.5393258426966296,1.1735330836454432,3.114856429463171,3.857677902621723,1.4918851435705367,0.5580524344569288,0.519350811485643,1.8664169787765295,6.117353308364544,4.762796504369538,3.033707865168539,2.1785268414481895,1.8476903870162298,4.157303370786517,5.511860174781523,3.1897627965043696,5.7553058676654185,5.062421972534332,1.2109862671660423,0.8863920099875156,0.8863920099875156,2.0474406991260925,4.282147315855181,0.4700374531835206,1.198501872659176,5.299625468164794,4.200998751560549,1.523096129837703,2.7965043695380776,1.0237203495630463,6.429463171036204,4.531835205992509,0.898876404494382,0.9113607990012486,5.149812734082397,4.051186017478152,1.529338327091136,0.9987515605493134,1.3233458177278403,6.004993757802747,3.0024968789013733,1.3982521847690388,4.712858926342073,3.2397003745318353,3.4831460674157304,4.369538077403246,6.142322097378277,2.009987515605493,3.8202247191011236,4.16354556803995,5.212234706616729,6.242197253433209,3.4831460674157304,2.578027465667915,3.5518102372034956,3.2709113607990012,2.009987515605493,5.9238451935081144,3.7890137328339577,2.640449438202247,6.054931335830212,2.0411985018726595,3.620474406991261,3.957553058676654,4.250936329588015,5.917602996254682,3.8451935081148565,5.8739076154806495,6.30461922596754,4.325842696629214,2.6092384519350813,1.1797752808988764,1.591760299625468,6.079900124843945,3.639200998751561,2.8339575530586765,1.1735330836454432,6.210986267166042,4.344569288389513,5.34956304619226,1.735330836454432,3.801498127340824,3.245942571785269,5.705368289637952,0.6803995006242198,2.1910112359550564,2.0724094881398254,2.4968789013732833,5.380774032459426,0.9987515605493134,5.131086142322098,4.656679151061174,4.369538077403246, +3.957553058676654,5.411985018726591,2.453183520599251,5.586766541822722,3.8389513108614235,3.951310861423221,0.8863920099875156,3.564294631710362,1.2047440699126093,3.139825218476904,3.8764044943820224,1.5168539325842696,0.5811485642946317,0.548689138576779,1.8913857677902621,6.1485642946317105,4.794007490636704,3.0649188514357055,2.203495630461923,1.8726591760299625,4.18227215980025,5.543071161048689,3.214731585518102,5.786516853932584,5.093632958801498,1.2359550561797754,0.9176029962546817,0.9113607990012486,2.0786516853932584,4.307116104868914,0.4950062421972534,1.229712858926342,5.318352059925093,4.225967540574282,1.5418227215980027,2.82147315855181,1.0611735330836456,6.491885143570538,4.556803995006242,0.9176029962546817,0.9363295880149812,5.174781523096129,4.0761548064918856,1.5605493133583022,1.0299625468164793,1.348314606741573,6.036204744069912,3.0399500624219726,1.4294631710362047,4.7440699126092385,3.2646691635455682,3.5205992509363297,4.394506866416979,6.173533083645444,2.034956304619226,3.8389513108614235,4.188514357053683,5.249687890137328,6.30461922596754,3.5143570536828963,2.596754057428215,3.5705368289637955,3.3021223470661676,2.0287141073657926,5.955056179775282,3.8077403245942576,2.66541822721598,6.073657927590512,2.0599250936329585,3.6454431960049942,3.982521847690387,4.282147315855181,5.942571785268415,3.870162297128589,5.905118601747815,6.30461922596754,4.3508114856429465,2.6466916354556806,1.2047440699126093,1.6229712858926344,6.117353308364544,3.6704119850187267,2.871410736579276,1.198501872659176,6.242197253433209,4.369538077403246,5.3745318352059925,1.766541822721598,3.826466916354557,3.2833957553058677,5.730337078651686,0.7053682896379525,2.2222222222222223,2.097378277153558,2.5280898876404496,5.424469413233458,1.0362047440699127,5.15605493133583,4.681647940074906,4.388264669163545, +3.9887640449438204,5.443196004993759,2.4843945068664173,5.611735330836455,3.8639200998751564,3.9762796504369535,0.9113607990012486,3.589263420724095,1.2359550561797754,3.1647940074906367,3.8951310861423223,1.5480649188514357,0.6036204744069913,0.5786516853932584,1.916354556803995,6.179775280898876,4.825218476903871,3.0961298377028714,2.2284644194756553,1.8913857677902621,4.213483146067416,5.574282147315855,3.233458177278402,5.81772784019975,5.1248439450686645,1.2671660424469413,0.9488139825218477,0.9363295880149812,2.1098626716604243,4.332084893882647,0.5199750312109862,1.2671660424469413,5.337078651685393,4.244694132334582,1.5667915106117354,2.84019975031211,1.0923845193508115,6.491885143570538,4.581772784019975,0.9363295880149812,0.9612983770287141,5.199750312109863,4.1011235955056184,1.5980024968789013,1.0611735330836456,1.373283395755306,6.067415730337078,3.0711610486891385,1.4606741573033708,4.775280898876405,3.295880149812734,3.5518102372034956,4.419475655430712,6.210986267166042,2.0599250936329585,3.857677902621723,4.219725343320849,5.287141073657928,6.30461922596754,3.5393258426966296,2.6217228464419473,3.589263420724095,3.3333333333333335,2.0536828963795255,5.986267166042447,3.83270911360799,2.68414481897628,6.098626716604246,2.084893882646692,3.6704119850187267,4.013732833957553,4.31960049937578,5.961298377028713,3.8951310861423223,5.936329588014981,6.30461922596754,4.369538077403246,2.6779026217228465,1.229712858926342,1.6604244694132335,6.154806491885144,3.701622971285893,2.902621722846442,1.2172284644194757,6.30461922596754,4.394506866416979,5.399500624219725,1.797752808988764,3.8514357053682895,3.3146067415730336,5.761548064918852,0.7303370786516854,2.253433208489388,2.128589263420724,2.565543071161049,5.461922596754057,1.0674157303370786,5.187265917602996,4.70661672908864,4.413233458177278, +4.019975031210986,5.474406991260924,2.521847690387016,5.64294631710362,3.888888888888889,3.9950062421972534,0.9300873907615481,3.620474406991261,1.260923845193508,3.183520599250936,3.920099875156055,1.5792759051186018,0.6242197253433208,0.6086142322097379,1.941323345817728,6.20474406991261,4.856429463171036,3.1273408239700373,2.253433208489388,1.916354556803995,4.244694132334582,5.605493133583021,3.258426966292135,5.848938826466916,5.149812734082397,1.2983770287141074,0.9800249687890138,0.9612983770287141,2.1410736579275906,4.357053682896379,0.5443196004993758,1.2983770287141074,5.3620474406991265,4.269662921348314,1.591760299625468,2.865168539325843,1.1298377028714106,6.554307116104869,4.606741573033708,0.9550561797752809,0.9862671660424469,5.218476903870163,4.132334581772784,1.6292134831460674,1.0861423220973783,1.404494382022472,6.098626716604246,3.102372034956305,1.4981273408239701,4.800249687890138,3.3270911360799,3.589263420724095,4.450686641697877,6.242197253433209,2.0786516853932584,3.882646691635456,4.244694132334582,5.324594257178527,6.367041198501872,3.564294631710362,2.640449438202247,3.6142322097378274,3.3645443196004994,2.0786516853932584,6.0174781523096135,3.857677902621723,2.7091136079900124,6.117353308364544,2.1098626716604243,3.6953807740324596,4.044943820224719,4.3508114856429465,5.986267166042447,3.926342072409488,5.967540574282147,6.367041198501872,4.388264669163545,2.715355805243446,1.2484394506866416,1.6978776529338326,6.198501872659176,3.732833957553059,2.933832709113608,1.2359550561797754,6.30461922596754,4.413233458177278,5.424469413233458,1.8227215980024971,3.8764044943820224,3.3458177278401995,5.792759051186017,0.7553058676654182,2.2846441947565546,2.153558052434457,2.596754057428215,5.499375780274657,1.104868913857678,5.218476903870163,4.737827715355805,4.438202247191011, +4.044943820224719,5.511860174781523,2.5530586766541825,5.667915106117353,3.9138576779026217,4.019975031210986,0.9550561797752809,3.6454431960049942,1.2921348314606742,3.2084893882646695,3.938826466916354,1.6042446941323347,0.6491885143570537,0.6367041198501873,1.9662921348314608,6.235955056179775,4.887640449438202,3.1585518102372037,2.278401997503121,1.9350811485642945,4.269662921348314,5.64294631710362,3.2833957553058677,5.880149812734083,5.181023720349563,1.3233458177278403,1.0112359550561798,0.9862671660424469,2.1722846441947565,4.382022471910113,0.5692883895131086,1.3295880149812733,5.380774032459426,4.288389513108614,1.6104868913857677,2.8901373283395753,1.16729088639201,6.554307116104869,4.6254681647940075,0.9800249687890138,1.0112359550561798,5.243445692883895,4.157303370786517,1.6604244694132335,1.1173533083645444,1.4294631710362047,6.129837702871411,3.139825218476904,1.529338327091136,4.831460674157303,3.352059925093633,3.620474406991261,4.475655430711611,6.30461922596754,2.1036204744069913,3.9013732833957557,4.275905118601748,5.3620474406991265,6.367041198501872,3.595505617977528,2.6591760299625467,3.6329588014981273,3.3957553058676653,2.097378277153558,6.048689138576779,3.8764044943820224,2.727840199750312,6.1360799001248445,2.134831460674157,3.7203495630461925,4.0761548064918856,4.382022471910113,6.01123595505618,3.951310861423221,5.998751560549313,6.367041198501872,4.413233458177278,2.746566791510612,1.2734082397003745,1.7290886392009988,6.235955056179775,3.764044943820225,2.9712858926342074,1.260923845193508,6.367041198501872,4.438202247191011,5.449438202247191,1.8539325842696628,3.9013732833957557,3.3770287141073654,5.81772784019975,0.7802746566791511,2.3158551810237205,2.1785268414481895,2.6279650436953808,5.536828963795256,1.136079900124844,5.249687890137328,4.762796504369538,4.463171036204744, +4.0761548064918856,5.543071161048689,2.5842696629213484,5.69912609238452,3.938826466916354,4.044943820224719,0.9800249687890138,3.6704119850187267,1.3233458177278403,3.233458177278402,3.9637952559300875,1.6354556803995006,0.6741573033707865,0.6679151061173533,1.9912609238451935,6.242197253433209,4.918851435705368,3.1897627965043696,2.303370786516854,1.9600499375780276,4.300873907615481,5.674157303370786,3.3083645443196006,5.9113607990012484,5.212234706616729,1.3545568039950062,1.0362047440699127,1.0112359550561798,2.203495630461923,4.406991260923846,0.5942571785268415,1.3670411985018727,5.405742821473158,4.313358302122348,1.6354556803995006,2.9151061173533086,1.198501872659176,6.616729088639201,4.65043695380774,0.9987515605493134,1.0299625468164793,5.262172284644195,4.18227215980025,1.6978776529338326,1.1485642946317103,1.4544319600499376,6.161048689138577,3.17103620474407,1.5605493133583022,4.8626716604244695,3.383270911360799,3.651685393258427,4.500624219725343,6.30461922596754,2.128589263420724,3.920099875156055,4.300873907615481,5.399500624219725,6.367041198501872,3.620474406991261,2.6779026217228465,3.651685393258427,3.4332084893882646,2.122347066167291,6.079900124843945,3.9013732833957557,2.752808988764045,6.161048689138577,2.15980024968789,3.745318352059925,4.107365792759051,4.413233458177278,6.036204744069912,3.9762796504369535,6.029962546816479,6.367041198501872,4.431960049937578,2.7840199750312107,1.2983770287141074,1.766541822721598,6.30461922596754,3.7952559300873907,3.0024968789013733,1.2796504369538078,6.367041198501872,4.463171036204744,5.480649188514358,1.8851435705368291,3.926342072409488,3.408239700374532,5.848938826466916,0.8052434456928839,2.3470661672908864,2.203495630461923,2.66541822721598,5.580524344569288,1.1735330836454432,5.280898876404494,4.787765293383271,4.4818976279650435, +4.107365792759051,5.574282147315855,2.6217228464419473,5.724094881398252,3.9637952559300875,4.063670411985019,0.9987515605493134,3.6953807740324596,1.3545568039950062,3.2521847690387014,3.982521847690387,1.6666666666666667,0.6928838951310862,0.6991260923845194,2.016229712858926,6.30461922596754,4.950062421972534,3.2209737827715355,2.328339575530587,1.978776529338327,4.332084893882647,5.705368289637952,3.3333333333333335,5.942571785268415,5.237203495630462,1.3857677902621723,1.0674157303370786,1.0362047440699127,2.2347066167290888,4.431960049937578,0.618601747815231,1.3982521847690388,5.424469413233458,4.332084893882647,1.6541822721598003,2.933832709113608,1.2359550561797754,6.616729088639201,4.675405742821473,1.017478152309613,1.0549313358302121,5.287141073657928,4.213483146067416,1.7290886392009988,1.1797752808988764,1.4856429463171037,6.192259675405743,3.202247191011236,1.5980024968789013,4.893882646691636,3.408239700374532,3.689138576779026,4.525593008739076,6.367041198501872,2.153558052434457,3.9450686641697876,4.332084893882647,5.436953807740325,6.429463171036204,3.6454431960049942,2.696629213483146,3.6766541822721597,3.464419475655431,2.1410736579275906,6.111111111111111,3.920099875156055,2.7715355805243447,6.179775280898876,2.184769038701623,3.7702871410736583,4.138576779026217,4.444444444444445,6.054931335830212,4.00749063670412,6.061173533083646,6.429463171036204,4.450686641697877,2.8152309612983775,1.3233458177278403,1.797752808988764,6.30461922596754,3.826466916354557,3.0399500624219726,1.3046192259675407,6.429463171036204,4.488139825218477,5.50561797752809,1.916354556803995,3.951310861423221,3.4456928838951315,5.880149812734083,0.8239700374531835,2.3782771535580522,2.2347066167290888,2.696629213483146,5.617977528089888,1.2047440699126093,5.312109862671661,4.812734082397004,4.506866416978776, +4.138576779026217,5.611735330836455,2.6529338327091136,5.7553058676654185,3.9887640449438204,4.0886392009987516,1.0237203495630463,3.7265917602996255,1.3795255930087391,3.2771535580524347,4.00749063670412,1.6978776529338326,0.717852684144819,0.7303370786516854,2.0411985018726595,6.30461922596754,4.9812734082397006,3.2521847690387014,2.35330836454432,2.00374531835206,4.357053682896379,5.736579275905119,3.3583021223470664,5.967540574282147,5.268414481897628,1.410736579275905,1.0986267166042447,1.0611735330836456,2.2659176029962547,4.456928838951311,0.6429463171036205,1.4294631710362047,5.449438202247191,4.357053682896379,1.6791510611735332,2.958801498127341,1.2671660424469413,6.679151061173534,4.700374531835206,1.042446941323346,1.079900124843945,5.305867665418227,4.238451935081149,1.7602996254681649,1.2047440699126093,1.5106117353308364,6.223470661672909,3.2397003745318353,1.6292134831460674,4.918851435705368,3.439450686641698,3.7203495630461925,4.55056179775281,6.367041198501872,2.1785268414481895,3.9637952559300875,4.3632958801498125,5.474406991260924,6.429463171036204,3.6766541822721597,2.715355805243446,3.6953807740324596,3.495630461922597,2.1660424469413235,6.1360799001248445,3.9450686641697876,2.7965043695380776,6.20474406991261,2.209737827715356,3.7952559300873907,4.169787765293384,4.4818976279650435,6.079900124843945,4.032459425717852,6.092384519350812,6.429463171036204,4.475655430711611,2.8464419475655434,1.348314606741573,1.8352059925093633,6.367041198501872,3.857677902621723,3.0711610486891385,1.3233458177278403,6.429463171036204,4.51310861423221,5.5305867665418225,1.9475655430711611,3.9762796504369535,3.4769038701622974,5.905118601747815,0.8489388264669163,2.4094881398252186,2.259675405742821,2.727840199750312,5.655430711610487,1.2359550561797754,5.337078651685393,4.837702871410737,4.531835205992509, +4.169787765293384,5.64294631710362,2.68414481897628,5.7802746566791505,4.013732833957553,4.1136079900124844,1.048689138576779,3.7515605493133584,1.410736579275905,3.3021223470661676,4.02621722846442,1.7228464419475658,0.7428214731585518,0.7553058676654182,2.066167290886392,6.367041198501872,5.012484394506866,3.2833957553058677,2.3782771535580522,2.0224719101123596,4.388264669163545,5.767790262172285,3.383270911360799,5.998751560549313,5.299625468164794,1.4419475655430714,1.1298377028714106,1.0861423220973783,2.2971285892634206,4.4818976279650435,0.6679151061173533,1.466916354556804,5.468164794007491,4.382022471910113,1.704119850187266,2.9837702871410734,1.3046192259675407,6.679151061173534,4.725343320848939,1.0611735330836456,1.104868913857678,5.33083645443196,4.263420724094882,1.7915106117353308,1.2359550561797754,1.5355805243445693,6.242197253433209,3.2709113607990012,1.6666666666666667,4.950062421972534,3.464419475655431,3.7578027465667914,4.581772784019975,6.429463171036204,2.1972534332084894,3.9887640449438204,4.388264669163545,5.511860174781523,6.491885143570538,3.701622971285893,2.7340823970037453,3.714107365792759,3.5268414481897628,2.184769038701623,6.167290886392011,3.9637952559300875,2.8152309612983775,6.223470661672909,2.2347066167290888,3.8202247191011236,4.200998751560549,4.51310861423221,6.104868913857677,4.057428214731585,6.123595505617978,6.429463171036204,4.49438202247191,2.8838951310861427,1.373283395755306,1.8726591760299625,6.367041198501872,3.888888888888889,3.102372034956305,1.348314606741573,6.491885143570538,4.538077403245943,5.555555555555556,1.978776529338327,4.001248439450687,3.508114856429463,5.936329588014981,0.8739076154806492,2.4406991260923845,2.2846441947565546,2.7590511860174782,5.69912609238452,1.2734082397003745,5.36828963795256,4.8626716604244695,4.556803995006242, +4.200998751560549,5.674157303370786,2.7215980024968793,5.811485642946318,4.038701622971286,4.132334581772784,1.0674157303370786,3.776529338327091,1.4419475655430714,3.320848938826467,4.044943820224719,1.7540574282147314,0.7615480649188515,0.7865168539325842,2.091136079900125,6.367041198501872,5.043695380774032,3.3146067415730336,2.4032459425717856,2.0474406991260925,4.419475655430712,5.799001248439451,3.408239700374532,6.029962546816479,5.324594257178527,1.4731585518102372,1.161048689138577,1.1111111111111112,2.328339575530587,4.506866416978776,0.6928838951310862,1.4981273408239701,5.493133583021224,4.400749063670412,1.7228464419475658,3.0087390761548067,1.3358302122347065,6.741573033707866,4.750312109862672,1.079900124843945,1.1298377028714106,5.34956304619226,4.288389513108614,1.8289637952559301,1.2671660424469413,1.5605493133583022,6.30461922596754,3.3083645443196006,1.6978776529338326,4.9812734082397006,3.495630461922597,3.7890137328339577,4.606741573033708,6.429463171036204,2.2222222222222223,4.00749063670412,4.419475655430712,5.549313358302123,6.491885143570538,3.7265917602996255,2.752808988764045,3.7390761548064915,3.5580524344569286,2.209737827715356,6.198501872659176,3.9887640449438204,2.84019975031211,6.242197253433209,2.259675405742821,3.8451935081148565,4.2322097378277155,4.544319600499376,6.123595505617978,4.0886392009987516,6.1485642946317105,6.491885143570538,4.519350811485642,2.9151061173533086,1.3982521847690388,1.9038701622971288,6.429463171036204,3.920099875156055,3.139825218476904,1.3670411985018727,6.491885143570538,4.563046192259676,5.580524344569288,2.009987515605493,4.02621722846442,3.5393258426966296,5.967540574282147,0.898876404494382,2.4656679151061174,2.3158551810237205,2.7965043695380776,5.736579275905119,1.3046192259675407,5.399500624219725,4.887640449438202,4.575530586766542, +4.2322097378277155,5.711610486891385,2.752808988764045,5.836454431960051,4.063670411985019,4.157303370786517,1.0923845193508115,3.801498127340824,1.4731585518102372,3.3458177278401995,4.069912609238452,1.7852684144818978,0.7865168539325842,0.8177278401997503,2.1161048689138577,6.429463171036204,5.074906367041199,3.3458177278401995,2.428214731585518,2.066167290886392,4.444444444444445,5.830212234706617,3.4332084893882646,6.061173533083646,5.355805243445693,1.4981273408239701,1.1922596754057428,1.136079900124844,2.3657927590511862,4.525593008739076,0.717852684144819,1.5355805243445693,5.511860174781523,4.425717852684145,1.7478152309612984,3.027465667915106,1.373283395755306,6.741573033707866,4.769038701622971,1.104868913857678,1.1548064918851435,5.3745318352059925,4.31960049937578,1.8601747815230962,1.2921348314606742,1.591760299625468,6.30461922596754,3.339575530586767,1.7290886392009988,5.012484394506866,3.5268414481897628,3.826466916354557,4.631710362047441,6.491885143570538,2.247191011235955,4.02621722846442,4.444444444444445,5.586766541822722,6.491885143570538,3.7578027465667914,2.7715355805243447,3.7578027465667914,3.589263420724095,2.2347066167290888,6.229712858926342,4.013732833957553,2.8589263420724094,6.242197253433209,2.2846441947565546,3.870162297128589,4.263420724094882,4.575530586766542,6.1485642946317105,4.1136079900124844,6.179775280898876,6.491885143570538,4.538077403245943,2.9525593008739075,1.4232209737827717,1.941323345817728,6.491885143570538,3.9450686641697876,3.17103620474407,1.3920099875156053,6.554307116104869,4.581772784019975,5.605493133583021,2.0411985018726595,4.057428214731585,3.5705368289637955,5.992509363295881,0.9238451935081149,2.4968789013732833,2.340823970037453,2.8277153558052435,5.774032459425719,1.34207240948814,5.430711610486892,4.912609238451935,4.600499375780275, +4.263420724094882,5.742821473158552,2.7840199750312107,5.867665418227216,4.0886392009987516,4.18227215980025,1.1173533083645444,3.826466916354557,1.4981273408239701,3.370786516853933,4.0886392009987516,1.8164794007490637,0.8114856429463172,0.8489388264669163,2.1410736579275906,6.429463171036204,5.106117353308365,3.3770287141073654,2.453183520599251,2.091136079900125,4.475655430711611,5.861423220973783,3.4581772784019975,6.092384519350812,5.3870162297128585,1.529338327091136,1.2172284644194757,1.161048689138577,2.397003745318352,4.55056179775281,0.7428214731585518,1.5667915106117354,5.5305867665418225,4.444444444444445,1.766541822721598,3.0524344569288386,1.404494382022472,6.803995006242197,4.794007490636704,1.1235955056179776,1.1735330836454432,5.393258426966292,4.344569288389513,1.8913857677902621,1.3233458177278403,1.616729088639201,6.367041198501872,3.370786516853933,1.766541822721598,5.0374531835206,3.5518102372034956,3.857677902621723,4.656679151061174,6.554307116104869,2.272159800249688,4.051186017478152,4.475655430711611,5.6242197253433215,6.554307116104869,3.7827715355805243,2.7965043695380776,3.776529338327091,3.620474406991261,2.253433208489388,6.242197253433209,4.032459425717852,2.8838951310861427,6.30461922596754,2.303370786516854,3.8951310861423223,4.294631710362047,4.612983770287141,6.173533083645444,4.138576779026217,6.210986267166042,6.491885143570538,4.556803995006242,2.9837702871410734,1.4481897627965044,1.9725343320848938,6.491885143570538,3.9762796504369535,3.202247191011236,1.410736579275905,6.554307116104869,4.606741573033708,5.630461922596755,2.0724094881398254,4.082397003745319,3.6017478152309614,6.023720349563047,0.9488139825218477,2.5280898876404496,2.3657927590511862,2.8589263420724094,5.811485642946318,1.373283395755306,5.461922596754057,4.943820224719102,4.6254681647940075, +4.288389513108614,5.774032459425719,2.82147315855181,5.892634207240949,4.1136079900124844,4.200998751560549,1.136079900124844,3.857677902621723,1.529338327091136,3.3895131086142323,4.1136079900124844,1.8414481897627966,0.8302122347066168,0.8801498127340824,2.1660424469413235,6.491885143570538,5.1373283395755305,3.408239700374532,2.471910112359551,2.1098626716604243,4.500624219725343,5.892634207240949,3.4769038701622974,6.123595505617978,5.418227215980025,1.5605493133583022,1.2484394506866416,1.1860174781523096,2.428214731585518,4.575530586766542,0.7677902621722846,1.5980024968789013,5.555555555555556,4.4694132334581775,1.7915106117353308,3.077403245942572,1.4419475655430714,6.803995006242197,4.818976279650437,1.1423220973782773,1.198501872659176,5.418227215980025,4.369538077403246,1.9225967540574282,1.3545568039950062,1.6416978776529338,6.367041198501872,3.408239700374532,1.797752808988764,5.068664169787765,3.5830212234706615,3.888888888888889,4.681647940074906,6.554307116104869,2.2971285892634206,4.069912609238452,4.500624219725343,5.66167290886392,6.554307116104869,3.8077403245942576,2.8152309612983775,3.801498127340824,3.651685393258427,2.278401997503121,6.30461922596754,4.057428214731585,2.902621722846442,6.30461922596754,2.328339575530587,3.920099875156055,4.325842696629214,4.644194756554308,6.198501872659176,4.169787765293384,6.242197253433209,6.554307116104869,4.581772784019975,3.0212234706616727,1.4731585518102372,2.009987515605493,6.554307116104869,4.00749063670412,3.2397003745318353,1.435705368289638,6.616729088639201,4.631710362047441,5.655430711610487,2.1036204744069913,4.107365792759051,3.639200998751561,6.054931335830212,0.9737827715355806,2.5593008739076155,2.3907615480649187,2.8963795255930087,5.855181023720349,1.410736579275905,5.493133583021224,4.9687890137328345,4.644194756554308, +4.31960049937578,5.805243445692884,2.852684144818976,5.9238451935081144,4.144818976279651,4.225967540574282,1.161048689138577,3.882646691635456,1.5605493133583022,3.4144818976279647,4.132334581772784,1.8726591760299625,0.8551810237203495,0.9051186017478152,2.1910112359550564,6.491885143570538,5.162297128589263,3.439450686641698,2.4968789013732833,2.128589263420724,4.531835205992509,5.9238451935081144,3.5018726591760303,6.154806491885144,5.443196004993759,1.585518102372035,1.2796504369538078,1.2109862671660423,2.459425717852684,4.600499375780275,0.7927590511860175,1.6354556803995006,5.574282147315855,4.488139825218477,1.8164794007490637,3.0961298377028714,1.4731585518102372,6.866416978776529,4.843945068664169,1.161048689138577,1.223470661672909,5.443196004993759,4.400749063670412,1.9600499375780276,1.3857677902621723,1.6729088639200997,6.429463171036204,3.439450686641698,1.8352059925093633,5.099875156054932,3.607990012484395,3.926342072409488,4.712858926342073,6.616729088639201,2.322097378277154,4.0886392009987516,4.531835205992509,5.69912609238452,6.616729088639201,3.8389513108614235,2.8339575530586765,3.8202247191011236,3.682896379525593,2.2971285892634206,6.30461922596754,4.0761548064918856,2.9275905118601746,6.30461922596754,2.35330836454432,3.9450686641697876,4.357053682896379,4.675405742821473,6.217228464419476,4.194756554307116,6.30461922596754,6.554307116104869,4.600499375780275,3.0524344569288386,1.4981273408239701,2.0411985018726595,6.554307116104869,4.038701622971286,3.2709113607990012,1.4544319600499376,6.616729088639201,4.656679151061174,5.68039950062422,2.134831460674157,4.132334581772784,3.6704119850187267,6.079900124843945,0.9925093632958802,2.5905118601747814,2.4219725343320846,2.9275905118601746,5.892634207240949,1.4419475655430714,5.5181023720349565,4.9937578027465666,4.66916354556804, +4.3508114856429465,5.842696629213483,2.8901373283395753,5.948813982521848,4.169787765293384,4.244694132334582,1.1860174781523096,3.9076154806491883,1.585518102372035,3.439450686641698,4.151061173533084,1.9038701622971288,0.8801498127340824,0.9363295880149812,2.209737827715356,6.554307116104869,5.19350811485643,3.470661672908864,2.521847690387016,2.153558052434457,4.563046192259676,5.955056179775282,3.5268414481897628,6.186017478152309,5.474406991260924,1.616729088639201,1.3108614232209737,1.2359550561797754,2.4906367041198503,4.6254681647940075,0.8177278401997503,1.6666666666666667,5.599250936329588,4.51310861423221,1.8352059925093633,3.1210986267166043,1.5106117353308364,6.866416978776529,4.868913857677903,1.1860174781523096,1.2484394506866416,5.461922596754057,4.425717852684145,1.9912609238451935,1.410736579275905,1.6978776529338326,6.429463171036204,3.470661672908864,1.8664169787765295,5.131086142322098,3.639200998751561,3.957553058676654,4.737827715355805,6.616729088639201,2.340823970037453,4.1136079900124844,4.556803995006242,5.736579275905119,6.616729088639201,3.8639200998751564,2.852684144818976,3.8389513108614235,3.714107365792759,2.322097378277154,6.367041198501872,4.1011235955056184,2.9463171036204745,6.367041198501872,2.3782771535580522,3.970037453183521,4.382022471910113,4.70661672908864,6.242197253433209,4.225967540574282,6.30461922596754,6.554307116104869,4.619225967540574,3.089887640449438,1.523096129837703,2.0786516853932584,6.616729088639201,4.069912609238452,3.3021223470661676,1.4794007490636705,6.679151061173534,4.681647940074906,5.705368289637952,2.1660424469413235,4.157303370786517,3.701622971285893,6.111111111111111,1.017478152309613,2.6217228464419473,2.446941323345818,2.958801498127341,5.930087390761548,1.4794007490636705,5.549313358302123,5.0187265917602994,4.694132334581773, +4.382022471910113,5.8739076154806495,2.9213483146067416,5.980024968789014,4.194756554307116,4.269662921348314,1.2047440699126093,3.9325842696629216,1.616729088639201,3.4581772784019975,4.176029962546816,1.9350811485642945,0.898876404494382,0.9675405742821472,2.2347066167290888,6.554307116104869,5.224719101123595,3.5018726591760303,2.546816479400749,2.1722846441947565,4.588014981273409,5.992509363295881,3.5518102372034956,6.217228464419476,5.50561797752809,1.647940074906367,1.34207240948814,1.260923845193508,2.521847690387016,4.65043695380774,0.8426966292134832,1.6978776529338326,5.617977528089888,4.538077403245943,1.8601747815230962,3.1460674157303368,1.5418227215980027,6.928838951310862,4.893882646691636,1.2047440699126093,1.2734082397003745,5.48689138576779,4.450686641697877,2.0224719101123596,1.4419475655430714,1.7228464419475658,6.491885143570538,3.508114856429463,1.8976279650436954,5.15605493133583,3.6641697877652937,3.9950062421972534,4.762796504369538,6.679151061173534,2.3657927590511862,4.132334581772784,4.588014981273409,5.774032459425719,6.616729088639201,3.888888888888889,2.871410736579276,3.8639200998751564,3.745318352059925,2.3470661672908864,6.367041198501872,4.1260923845193505,2.9712858926342074,6.367041198501872,2.4032459425717856,3.9950062421972534,4.413233458177278,4.7440699126092385,6.242197253433209,4.250936329588015,6.367041198501872,6.616729088639201,4.644194756554308,3.1210986267166043,1.5480649188514357,2.1161048689138577,6.679151061173534,4.1011235955056184,3.339575530586767,1.4981273408239701,6.679151061173534,4.70661672908864,5.730337078651686,2.1972534332084894,4.18227215980025,3.732833957553059,6.142322097378277,1.042446941323346,2.6529338327091136,2.471910112359551,2.9962546816479403,5.97378277153558,1.5106117353308364,5.580524344569288,5.043695380774032,4.719101123595506, +4.413233458177278,5.905118601747815,2.9525593008739075,6.004993757802747,4.219725343320849,4.294631710362047,1.229712858926342,3.957553058676654,1.647940074906367,3.4831460674157304,4.194756554307116,1.9600499375780276,0.9238451935081149,0.9987515605493134,2.259675405742821,6.616729088639201,5.2559300873907615,3.5268414481897628,2.571785268414482,2.1972534332084894,4.619225967540574,6.023720349563047,3.576779026217228,6.242197253433209,5.5305867665418225,1.6729088639200997,1.373283395755306,1.285892634207241,2.5530586766541825,4.675405742821473,0.867665418227216,1.735330836454432,5.64294631710362,4.556803995006242,1.8789013732833957,3.17103620474407,1.5792759051186018,6.928838951310862,4.918851435705368,1.223470661672909,1.2983770287141074,5.50561797752809,4.475655430711611,2.0536828963795255,1.4731585518102372,1.7540574282147314,6.491885143570538,3.5393258426966296,1.9350811485642945,5.187265917602996,3.6953807740324596,4.02621722846442,4.787765293383271,6.679151061173534,2.3907615480649187,4.151061173533084,4.612983770287141,5.811485642946318,6.679151061173534,3.920099875156055,2.8901373283395753,3.882646691635456,3.7827715355805243,2.3657927590511862,6.429463171036204,4.144818976279651,2.990012484394507,6.429463171036204,2.428214731585518,4.019975031210986,4.444444444444445,4.775280898876405,6.30461922596754,4.275905118601748,6.367041198501872,6.616729088639201,4.662921348314606,3.1585518102372037,1.5730337078651684,2.1473158551810236,6.679151061173534,4.132334581772784,3.370786516853933,1.523096129837703,6.741573033707866,4.7315855181023725,5.7553058676654185,2.2284644194756553,4.207240948813983,3.764044943820225,6.167290886392011,1.0674157303370786,2.68414481897628,2.4968789013732833,3.027465667915106,6.01123595505618,1.5418227215980027,5.611735330836455,5.068664169787765,4.737827715355805, +4.444444444444445,5.942571785268415,2.990012484394507,6.036204744069912,4.244694132334582,4.313358302122348,1.2546816479400749,3.9887640449438204,1.6791510611735332,3.508114856429463,4.219725343320849,1.9912609238451935,0.9488139825218477,1.0299625468164793,2.2846441947565546,6.616729088639201,5.287141073657928,3.5580524344569286,2.596754057428215,2.215980024968789,4.65043695380774,6.054931335830212,3.6017478152309614,6.30461922596754,5.561797752808988,1.704119850187266,1.3982521847690388,1.3108614232209737,2.5842696629213484,4.700374531835206,0.8926342072409489,1.766541822721598,5.66167290886392,4.581772784019975,1.9038701622971288,3.1897627965043696,1.6104868913857677,6.991260923845194,4.937578027465668,1.2484394506866416,1.3233458177278403,5.5305867665418225,4.506866416978776,2.091136079900125,1.4981273408239701,1.7790262172284643,6.554307116104869,3.5705368289637955,1.9662921348314608,5.218476903870163,3.7265917602996255,4.057428214731585,4.812734082397004,6.741573033707866,2.4157303370786516,4.176029962546816,4.644194756554308,5.848938826466916,6.679151061173534,3.9450686641697876,2.908863920099875,3.9013732833957557,3.81398252184769,2.3907615480649187,6.429463171036204,4.169787765293384,3.0149812734082393,6.429463171036204,2.453183520599251,4.044943820224719,4.475655430711611,4.806491885143571,6.30461922596754,4.307116104868914,6.429463171036204,6.616729088639201,4.681647940074906,3.1897627965043696,1.5980024968789013,2.184769038701623,6.741573033707866,4.16354556803995,3.4019975031210987,1.5418227215980027,6.741573033707866,4.750312109862672,5.7802746566791505,2.259675405742821,4.2322097378277155,3.801498127340824,6.198501872659176,1.0923845193508115,2.715355805243446,2.5280898876404496,3.058676654182272,6.048689138576779,1.5792759051186018,5.64294631710362,5.093632958801498,4.762796504369538, +4.475655430711611,5.97378277153558,3.0212234706616727,6.061173533083646,4.269662921348314,4.33832709113608,1.2734082397003745,4.013732833957553,1.704119850187266,3.5268414481897628,4.238451935081149,2.0224719101123596,0.9675405742821472,1.0549313358302121,2.309612983770287,6.616729088639201,5.318352059925093,3.589263420724095,2.6217228464419473,2.2409488139825218,4.675405742821473,6.086142322097379,3.6267166042446943,6.30461922596754,5.593008739076155,1.735330836454432,1.4294631710362047,1.3358302122347065,2.6154806491885143,4.725343320848939,0.9176029962546817,1.8039950062421974,5.686641697877653,4.600499375780275,1.9288389513108615,3.214731585518102,1.647940074906367,6.991260923845194,4.962546816479401,1.2671660424469413,1.34207240948814,5.549313358302123,4.531835205992509,2.122347066167291,1.529338327091136,1.8039950062421974,6.554307116104869,3.607990012484395,1.9975031210986267,5.249687890137328,3.7515605493133584,4.094881398252185,4.843945068664169,6.803995006242197,2.4406991260923845,4.194756554307116,4.675405742821473,5.8863920099875156,6.741573033707866,3.970037453183521,2.9275905118601746,3.926342072409488,3.8451935081148565,2.4094881398252186,6.491885143570538,4.188514357053683,3.033707865168539,6.429463171036204,2.478152309612984,4.069912609238452,4.506866416978776,4.837702871410737,6.367041198501872,4.332084893882647,6.429463171036204,6.679151061173534,4.70661672908864,3.227215980024969,1.6229712858926344,2.215980024968789,6.803995006242197,4.194756554307116,3.439450686641698,1.5667915106117354,6.803995006242197,4.775280898876405,5.805243445692884,2.2908863920099876,4.257178526841448,3.83270911360799,6.229712858926342,1.1173533083645444,2.746566791510612,2.5530586766541825,3.089887640449438,6.086142322097379,1.6104868913857677,5.674157303370786,5.118601747815231,4.787765293383271, +4.506866416978776,6.004993757802747,3.0524344569288386,6.092384519350812,4.294631710362047,4.3632958801498125,1.2983770287141074,4.038701622971286,1.735330836454432,3.5518102372034956,4.263420724094882,2.0474406991260925,0.9925093632958802,1.0861423220973783,2.33458177278402,6.679151061173534,5.34956304619226,3.620474406991261,2.6466916354556806,2.259675405742821,4.70661672908864,6.117353308364544,3.651685393258427,6.367041198501872,5.617977528089888,1.7602996254681649,1.4606741573033708,1.3607990012484397,2.6466916354556806,4.750312109862672,0.9425717852684146,1.8352059925093633,5.705368289637952,4.6254681647940075,1.9475655430711611,3.2397003745318353,1.6791510611735332,7.0536828963795255,4.987515605493134,1.285892634207241,1.3670411985018727,5.574282147315855,4.556803995006242,2.153558052434457,1.5605493133583022,1.8352059925093633,6.616729088639201,3.639200998751561,2.034956304619226,5.274656679151062,3.7827715355805243,4.1260923845193505,4.868913857677903,6.803995006242197,2.4656679151061174,4.213483146067416,4.700374531835206,5.9238451935081144,6.741573033707866,3.9950062421972534,2.9463171036204745,3.9450686641697876,3.8764044943820224,2.4344569288389515,6.491885143570538,4.213483146067416,3.058676654182272,6.491885143570538,2.5031210986267167,4.094881398252185,4.538077403245943,4.868913857677903,6.367041198501872,4.357053682896379,6.491885143570538,6.679151061173534,4.725343320848939,3.258426966292135,1.647940074906367,2.253433208489388,6.803995006242197,4.225967540574282,3.470661672908864,1.585518102372035,6.803995006242197,4.800249687890138,5.830212234706617,2.322097378277154,4.282147315855181,3.8639200998751564,6.242197253433209,1.136079900124844,2.777777777777778,2.578027465667915,3.1273408239700373,6.129837702871411,1.647940074906367,5.69912609238452,5.149812734082397,4.812734082397004, +4.538077403245943,6.0424469413233455,3.089887640449438,6.117353308364544,4.31960049937578,4.382022471910113,1.3233458177278403,4.063670411985019,1.766541822721598,3.576779026217228,4.282147315855181,2.0786516853932584,1.017478152309613,1.1173533083645444,2.359550561797753,6.679151061173534,5.380774032459426,3.651685393258427,2.671660424469413,2.2846441947565546,4.737827715355805,6.1485642946317105,3.6766541822721597,6.367041198501872,5.6491885143570535,1.7915106117353308,1.4918851435705367,1.3857677902621723,2.68414481897628,4.775280898876405,0.9675405742821472,1.8664169787765295,5.724094881398252,4.65043695380774,1.9725343320848938,3.2646691635455682,1.7166042446941323,7.0536828963795255,5.012484394506866,1.3046192259675407,1.3920099875156053,5.593008739076155,4.588014981273409,2.184769038701623,1.591760299625468,1.8601747815230962,6.616729088639201,3.6766541822721597,2.066167290886392,5.305867665418227,3.8077403245942576,4.16354556803995,4.893882646691636,6.866416978776529,2.4843945068664173,4.238451935081149,4.7315855181023725,5.961298377028713,6.741573033707866,4.02621722846442,2.9712858926342074,3.9637952559300875,3.9076154806491883,2.453183520599251,6.554307116104869,4.238451935081149,3.077403245942572,6.491885143570538,2.5280898876404496,4.1136079900124844,4.569288389513109,4.906367041198502,6.367041198501872,4.388264669163545,6.491885143570538,6.679151061173534,4.7440699126092385,3.2896379525593007,1.6729088639200997,2.2846441947565546,6.866416978776529,4.257178526841448,3.5018726591760303,1.6042446941323347,6.866416978776529,4.825218476903871,5.855181023720349,2.35330836454432,4.307116104868914,3.8951310861423223,6.30461922596754,1.161048689138577,2.808988764044944,2.6092384519350813,3.1585518102372037,6.167290886392011,1.6791510611735332,5.730337078651686,5.174781523096129,4.831460674157303, +4.563046192259676,6.073657927590512,3.1210986267166043,6.1485642946317105,4.344569288389513,4.406991260923846,1.348314606741573,4.0886392009987516,1.797752808988764,3.595505617977528,4.300873907615481,2.1098626716604243,1.0362047440699127,1.1485642946317103,2.3845193508114857,6.741573033707866,5.411985018726591,3.682896379525593,2.696629213483146,2.303370786516854,4.762796504369538,6.179775280898876,3.6953807740324596,6.429463171036204,5.68039950062422,1.8227215980024971,1.523096129837703,1.410736579275905,2.715355805243446,4.800249687890138,0.9925093632958802,1.9038701622971288,5.749063670411985,4.66916354556804,1.9975031210986267,3.2833957553058677,1.7478152309612984,7.116104868913857,5.0374531835206,1.3295880149812733,1.4169787765293382,5.617977528089888,4.612983770287141,2.2222222222222223,1.616729088639201,1.8851435705368291,6.679151061173534,3.7078651685393256,2.1036204744069913,5.337078651685393,3.8389513108614235,4.194756554307116,4.918851435705368,6.866416978776529,2.5093632958801497,4.257178526841448,4.7565543071161045,5.998751560549313,6.803995006242197,4.051186017478152,2.990012484394507,3.9887640449438204,3.938826466916354,2.478152309612984,6.554307116104869,4.257178526841448,3.102372034956305,6.491885143570538,2.546816479400749,4.138576779026217,4.600499375780275,4.937578027465668,6.429463171036204,4.413233458177278,6.554307116104869,6.741573033707866,4.769038701622971,3.3270911360799,1.6978776529338326,2.322097378277154,6.866416978776529,4.288389513108614,3.5393258426966296,1.6292134831460674,6.866416978776529,4.850187265917603,5.880149812734083,2.3845193508114857,4.332084893882647,3.926342072409488,6.30461922596754,1.1860174781523096,2.84019975031211,2.634207240948814,3.1897627965043696,6.20474406991261,1.7166042446941323,5.761548064918852,5.199750312109863,4.856429463171036, +4.594257178526841,6.104868913857677,3.15230961298377,6.173533083645444,4.369538077403246,4.431960049937578,1.3670411985018727,4.119850187265917,1.8227215980024971,3.620474406991261,4.325842696629214,2.1410736579275906,1.0611735330836456,1.1797752808988764,2.4094881398252186,6.741573033707866,5.443196004993759,3.714107365792759,2.7215980024968793,2.328339575530587,4.794007490636704,6.210986267166042,3.7203495630461925,6.429463171036204,5.705368289637952,1.8476903870162298,1.554307116104869,1.435705368289638,2.746566791510612,4.825218476903871,1.0112359550561798,1.9350811485642945,5.767790262172285,4.694132334581773,2.016229712858926,3.3083645443196006,1.7852684144818978,7.116104868913857,5.062421972534332,1.348314606741573,1.4419475655430714,5.636704119850187,4.637952559300874,2.253433208489388,1.647940074906367,1.916354556803995,6.679151061173534,3.7390761548064915,2.134831460674157,5.36828963795256,3.8639200998751564,4.2322097378277155,4.943820224719102,6.928838951310862,2.5343320848938826,4.282147315855181,4.787765293383271,6.036204744069912,6.803995006242197,4.0761548064918856,3.0087390761548067,4.00749063670412,3.970037453183521,2.5031210986267167,6.616729088639201,4.282147315855181,3.1210986267166043,6.554307116104869,2.571785268414482,4.16354556803995,4.631710362047441,4.9687890137328345,6.429463171036204,4.438202247191011,6.554307116104869,6.741573033707866,4.787765293383271,3.3583021223470664,1.7228464419475658,2.359550561797753,6.928838951310862,4.31960049937578,3.5705368289637955,1.647940074906367,6.928838951310862,4.875156054931336,5.905118601747815,2.4157303370786516,4.357053682896379,3.9637952559300875,6.367041198501872,1.2109862671660423,2.871410736579276,2.6591760299625467,3.227215980024969,6.242197253433209,1.7478152309612984,5.792759051186017,5.224719101123595,4.881398252184769, +4.6254681647940075,6.142322097378277,3.1897627965043696,6.20474406991261,4.394506866416979,4.450686641697877,1.3920099875156053,4.144818976279651,1.8539325842696628,3.6454431960049942,4.344569288389513,2.1660424469413235,1.079900124843945,1.2047440699126093,2.4344569288389515,6.803995006242197,5.474406991260924,3.745318352059925,2.746566791510612,2.3470661672908864,4.825218476903871,6.242197253433209,3.745318352059925,6.491885143570538,5.736579275905119,1.8789013732833957,1.5792759051186018,1.4606741573033708,2.777777777777778,4.850187265917603,1.0362047440699127,1.9662921348314608,5.792759051186017,4.712858926342073,2.0411985018726595,3.3333333333333335,1.8164794007490637,7.17852684144819,5.081148564294631,1.3670411985018727,1.466916354556804,5.66167290886392,4.662921348314606,2.2846441947565546,1.6791510611735332,1.941323345817728,6.741573033707866,3.776529338327091,2.1660424469413235,5.393258426966292,3.8951310861423223,4.263420724094882,4.9687890137328345,6.928838951310862,2.5593008739076155,4.300873907615481,4.812734082397004,6.073657927590512,6.866416978776529,4.107365792759051,3.027465667915106,4.02621722846442,4.001248439450687,2.521847690387016,6.616729088639201,4.300873907615481,3.1460674157303368,6.554307116104869,2.596754057428215,4.188514357053683,4.662921348314606,5.0,6.429463171036204,4.4694132334581775,6.616729088639201,6.741573033707866,4.812734082397004,3.3957553058676653,1.7478152309612984,2.3907615480649187,6.991260923845194,4.3508114856429465,3.6017478152309614,1.6729088639200997,6.928838951310862,4.893882646691636,5.930087390761548,2.446941323345818,4.382022471910113,3.9950062421972534,6.367041198501872,1.2359550561797754,2.902621722846442,2.68414481897628,3.258426966292135,6.30461922596754,1.7852684144818978,5.823970037453184,5.249687890137328,4.906367041198502, +4.656679151061174,6.173533083645444,3.2209737827715355,6.229712858926342,4.419475655430712,4.475655430711611,1.4169787765293382,4.169787765293384,1.8851435705368291,3.6641697877652937,4.369538077403246,2.1972534332084894,1.104868913857678,1.2359550561797754,2.459425717852684,6.803995006242197,5.50561797752809,3.776529338327091,2.7715355805243447,2.3720349563046192,4.850187265917603,6.30461922596754,3.7702871410736583,6.491885143570538,5.767790262172285,1.9101123595505618,1.6104868913857677,1.4856429463171037,2.808988764044944,4.875156054931336,1.0611735330836456,2.00374531835206,5.811485642946318,4.737827715355805,2.0599250936329585,3.3583021223470664,1.8539325842696628,7.17852684144819,5.106117353308365,1.3920099875156053,1.4856429463171037,5.686641697877653,4.694132334581773,2.3158551810237205,1.704119850187266,1.9662921348314608,6.741573033707866,3.8077403245942576,2.203495630461923,5.424469413233458,3.926342072409488,4.294631710362047,5.0,6.991260923845194,2.5842696629213484,4.31960049937578,4.843945068664169,6.111111111111111,6.866416978776529,4.132334581772784,3.046192259675406,4.051186017478152,4.032459425717852,2.546816479400749,6.679151061173534,4.325842696629214,3.1647940074906367,6.554307116104869,2.6217228464419473,4.213483146067416,4.694132334581773,5.0374531835206,6.491885143570538,4.49438202247191,6.616729088639201,6.803995006242197,4.831460674157303,3.4269662921348316,1.772784019975031,2.428214731585518,6.991260923845194,4.382022471910113,3.639200998751561,1.6916354556803994,6.991260923845194,4.918851435705368,5.955056179775282,2.478152309612984,4.406991260923846,4.02621722846442,6.429463171036204,1.260923845193508,2.933832709113608,2.715355805243446,3.2896379525593007,6.30461922596754,1.8164794007490637,5.855181023720349,5.274656679151062,4.925093632958801, +4.687890137328339,6.20474406991261,3.258426966292135,6.242197253433209,4.444444444444445,4.500624219725343,1.435705368289638,4.194756554307116,1.916354556803995,3.689138576779026,4.388264669163545,2.2284644194756553,1.1298377028714106,1.2671660424469413,2.4843945068664173,6.866416978776529,5.536828963795256,3.8077403245942576,2.7965043695380776,2.3907615480649187,4.881398252184769,6.30461922596754,3.7952559300873907,6.554307116104869,5.799001248439451,1.9350811485642945,1.6416978776529338,1.5106117353308364,2.84019975031211,4.900124843945068,1.0861423220973783,2.034956304619226,5.836454431960051,4.7565543071161045,2.084893882646692,3.3770287141073654,1.8851435705368291,7.240948813982522,5.131086142322098,1.410736579275905,1.5106117353308364,5.705368289637952,4.719101123595506,2.35330836454432,1.735330836454432,1.9975031210986267,6.803995006242197,3.8389513108614235,2.2347066167290888,5.455680399500624,3.951310861423221,4.332084893882647,5.024968789013733,7.0536828963795255,2.602996254681648,4.344569288389513,4.868913857677903,6.1485642946317105,6.866416978776529,4.157303370786517,3.0649188514357055,4.069912609238452,4.063670411985019,2.565543071161049,6.679151061173534,4.3508114856429465,3.1897627965043696,6.616729088639201,2.6466916354556806,4.238451935081149,4.725343320848939,5.068664169787765,6.491885143570538,4.519350811485642,6.679151061173534,6.803995006242197,4.850187265917603,3.464419475655431,1.797752808988764,2.459425717852684,7.0536828963795255,4.413233458177278,3.6704119850187267,1.7166042446941323,6.991260923845194,4.943820224719102,5.980024968789014,2.5093632958801497,4.431960049937578,4.057428214731585,6.429463171036204,1.285892634207241,2.965043695380774,2.740324594257179,3.3270911360799,6.367041198501872,1.8476903870162298,5.880149812734083,5.299625468164794,4.950062421972534, +4.719101123595506,6.242197253433209,3.2896379525593007,6.30461922596754,4.4694132334581775,4.519350811485642,1.4606741573033708,4.219725343320849,1.941323345817728,3.714107365792759,4.413233458177278,2.259675405742821,1.1485642946317103,1.2983770287141074,2.5093632958801497,6.866416978776529,5.568039950062421,3.8389513108614235,2.82147315855181,2.4157303370786516,4.912609238451935,6.367041198501872,3.8202247191011236,6.554307116104869,5.823970037453184,1.9662921348314608,1.6729088639200997,1.5355805243445693,2.871410736579276,4.925093632958801,1.1111111111111112,2.0724094881398254,5.855181023720349,4.781523096129837,2.1098626716604243,3.4019975031210987,1.9225967540574282,7.240948813982522,5.15605493133583,1.4294631710362047,1.5355805243445693,5.730337078651686,4.7440699126092385,2.3845193508114857,1.766541822721598,2.0224719101123596,6.803995006242197,3.8764044943820224,2.272159800249688,5.48689138576779,3.982521847690387,4.3632958801498125,5.049937578027466,7.0536828963795255,2.6279650436953808,4.3632958801498125,4.900124843945068,6.186017478152309,6.928838951310862,4.188514357053683,3.0836454431960054,4.0886392009987516,4.094881398252185,2.5905118601747814,6.741573033707866,4.369538077403246,3.2084893882646695,6.616729088639201,2.671660424469413,4.263420724094882,4.750312109862672,5.099875156054932,6.491885143570538,4.55056179775281,6.679151061173534,6.803995006242197,4.875156054931336,3.495630461922597,1.8227215980024971,2.4968789013732833,7.116104868913857,4.444444444444445,3.7078651685393256,1.735330836454432,7.0536828963795255,4.9687890137328345,6.01123595505618,2.5405742821473156,4.456928838951311,4.0886392009987516,6.491885143570538,1.3046192259675407,2.9962546816479403,2.7652933832709112,3.3583021223470664,6.429463171036204,1.8851435705368291,5.9113607990012484,5.324594257178527,4.975031210986267, +4.750312109862672,6.30461922596754,3.320848938826467,6.30461922596754,4.49438202247191,4.544319600499376,1.4856429463171037,4.250936329588015,1.9725343320848938,3.732833957553059,4.431960049937578,2.2846441947565546,1.1735330836454432,1.3295880149812733,2.5343320848938826,6.928838951310862,5.599250936329588,3.870162297128589,2.84019975031211,2.4344569288389515,4.937578027465668,6.367041198501872,3.8451935081148565,6.616729088639201,5.855181023720349,1.9975031210986267,1.704119850187266,1.5605493133583022,2.902621722846442,4.950062421972534,1.136079900124844,2.1036204744069913,5.880149812734083,4.806491885143571,2.128589263420724,3.4269662921348316,1.9600499375780276,7.303370786516854,5.181023720349563,1.4544319600499376,1.5605493133583022,5.749063670411985,4.775280898876405,2.4157303370786516,1.797752808988764,2.0474406991260925,6.866416978776529,3.9076154806491883,2.303370786516854,5.511860174781523,4.00749063670412,4.400749063670412,5.074906367041199,7.116104868913857,2.6529338327091136,4.382022471910113,4.931335830212235,6.223470661672909,6.928838951310862,4.213483146067416,3.102372034956305,4.1136079900124844,4.132334581772784,2.6092384519350813,6.741573033707866,4.394506866416979,3.227215980024969,6.616729088639201,2.696629213483146,4.288389513108614,4.781523096129837,5.131086142322098,6.554307116104869,4.575530586766542,6.741573033707866,6.866416978776529,4.893882646691636,3.533083645443196,1.8476903870162298,2.5343320848938826,7.116104868913857,4.475655430711611,3.7390761548064915,1.7602996254681649,7.0536828963795255,4.9937578027465666,6.036204744069912,2.571785268414482,4.4818976279650435,4.119850187265917,6.491885143570538,1.3295880149812733,3.027465667915106,2.790262172284644,3.3895131086142323,6.429463171036204,1.916354556803995,5.942571785268415,5.355805243445693,4.9937578027465666, +4.781523096129837,6.30461922596754,3.3583021223470664,6.367041198501872,4.519350811485642,4.563046192259676,1.5043695380774034,4.275905118601748,2.00374531835206,3.7578027465667914,4.450686641697877,2.3158551810237205,1.198501872659176,1.3545568039950062,2.5593008739076155,6.928838951310862,5.630461922596755,3.9013732833957557,2.865168539325843,2.453183520599251,4.9687890137328345,6.429463171036204,3.870162297128589,6.616729088639201,5.8863920099875156,2.0287141073657926,1.7290886392009988,1.585518102372035,2.933832709113608,4.975031210986267,1.161048689138577,2.134831460674157,5.8988764044943816,4.825218476903871,2.153558052434457,3.4456928838951315,1.9912609238451935,7.303370786516854,5.205992509363296,1.4731585518102372,1.585518102372035,5.774032459425719,4.800249687890138,2.446941323345818,1.8227215980024971,2.0786516853932584,6.866416978776529,3.938826466916354,2.33458177278402,5.543071161048689,4.038701622971286,4.431960049937578,5.099875156054932,7.116104868913857,2.6779026217228465,4.406991260923846,4.956304619225968,6.242197253433209,6.991260923845194,4.238451935081149,3.1273408239700373,4.132334581772784,4.16354556803995,2.634207240948814,6.803995006242197,4.413233458177278,3.2521847690387014,6.679151061173534,2.7215980024968793,4.313358302122348,4.812734082397004,5.168539325842697,6.554307116104869,4.606741573033708,6.741573033707866,6.866416978776529,4.912609238451935,3.564294631710362,1.8726591760299625,2.565543071161049,7.17852684144819,4.500624219725343,3.7702871410736583,1.7790262172284643,7.116104868913857,5.0187265917602994,6.061173533083646,2.602996254681648,4.506866416978776,4.157303370786517,6.491885143570538,1.3545568039950062,3.058676654182272,2.82147315855181,3.420724094881398,6.491885143570538,1.9538077403245941,5.97378277153558,5.380774032459426,5.0187265917602994, +4.806491885143571,6.367041198501872,3.3895131086142323,6.367041198501872,4.544319600499376,4.588014981273409,1.529338327091136,4.300873907615481,2.034956304619226,3.7827715355805243,4.475655430711611,2.3470661672908864,1.2172284644194757,1.3857677902621723,2.5842696629213484,6.991260923845194,5.66167290886392,3.9325842696629216,2.8901373283395753,2.478152309612984,5.0,6.429463171036204,3.8951310861423223,6.679151061173534,5.9113607990012484,2.0536828963795255,1.7602996254681649,1.6104868913857677,2.965043695380774,5.0,1.1860174781523096,2.1722846441947565,5.917602996254682,4.850187265917603,2.1722846441947565,3.470661672908864,2.0287141073657926,7.365792759051186,5.230961298377029,1.4918851435705367,1.6104868913857677,5.792759051186017,4.825218476903871,2.4843945068664173,1.8539325842696628,2.1036204744069913,6.928838951310862,3.9762796504369535,2.3720349563046192,5.574282147315855,4.063670411985019,4.4694132334581775,5.131086142322098,7.17852684144819,2.702871410736579,4.425717852684145,4.987515605493134,6.30461922596754,6.991260923845194,4.269662921348314,3.1460674157303368,4.151061173533084,4.194756554307116,2.6591760299625467,6.803995006242197,4.438202247191011,3.2709113607990012,6.679151061173534,2.746566791510612,4.33832709113608,4.843945068664169,5.199750312109863,6.616729088639201,4.631710362047441,6.803995006242197,6.866416978776529,4.937578027465668,3.6017478152309614,1.8976279650436954,2.602996254681648,7.17852684144819,4.531835205992509,3.8077403245942576,1.8039950062421974,7.116104868913857,5.043695380774032,6.086142322097379,2.634207240948814,4.531835205992509,4.188514357053683,6.554307116104869,1.3795255930087391,3.0836454431960054,2.8464419475655434,3.4581772784019975,6.491885143570538,1.9850187265917605,6.004993757802747,5.405742821473158,5.043695380774032, +4.837702871410737,6.367041198501872,3.420724094881398,6.367041198501872,4.569288389513109,4.612983770287141,1.554307116104869,4.325842696629214,2.0599250936329585,3.801498127340824,4.49438202247191,2.3720349563046192,1.2421972534332086,1.4169787765293382,2.6092384519350813,6.991260923845194,5.692883895131087,3.9637952559300875,2.9151061173533086,2.4968789013732833,5.024968789013733,6.491885143570538,3.9138576779026217,6.679151061173534,5.942571785268415,2.084893882646692,1.7915106117353308,1.6354556803995006,2.9962546816479403,5.024968789013733,1.2109862671660423,2.203495630461923,5.942571785268415,4.868913857677903,2.1972534332084894,3.495630461922597,2.0599250936329585,7.365792759051186,5.249687890137328,1.5106117353308364,1.6354556803995006,5.81772784019975,4.850187265917603,2.515605493133583,1.8851435705368291,2.128589263420724,6.928838951310862,4.00749063670412,2.4032459425717856,5.605493133583021,4.094881398252185,4.500624219725343,5.15605493133583,7.17852684144819,2.727840199750312,4.444444444444445,5.012484394506866,6.30461922596754,6.991260923845194,4.294631710362047,3.1647940074906367,4.176029962546816,4.225967540574282,2.6779026217228465,6.866416978776529,4.463171036204744,3.295880149812734,6.679151061173534,2.7715355805243447,4.3632958801498125,4.875156054931336,5.230961298377029,6.616729088639201,4.656679151061174,6.803995006242197,6.928838951310862,4.956304619225968,3.6329588014981273,1.9225967540574282,2.634207240948814,7.240948813982522,4.563046192259676,3.8389513108614235,1.8227215980024971,7.17852684144819,5.062421972534332,6.111111111111111,2.66541822721598,4.556803995006242,4.219725343320849,6.554307116104869,1.404494382022472,3.114856429463171,2.871410736579276,3.4893882646691634,6.554307116104869,2.0224719101123596,6.036204744069912,5.430711610486892,5.068664169787765, +4.868913857677903,6.429463171036204,3.4581772784019975,6.429463171036204,4.594257178526841,4.631710362047441,1.5730337078651684,4.357053682896379,2.091136079900125,3.826466916354557,4.519350811485642,2.4032459425717856,1.2671660424469413,1.4481897627965044,2.634207240948814,7.0536828963795255,5.724094881398252,3.9950062421972534,2.9400749063670415,2.521847690387016,5.056179775280899,6.491885143570538,3.938826466916354,6.741573033707866,5.97378277153558,2.1161048689138577,1.8227215980024971,1.6604244694132335,3.033707865168539,5.049937578027466,1.2359550561797754,2.2347066167290888,5.961298377028713,4.893882646691636,2.2222222222222223,3.5205992509363297,2.097378277153558,7.428214731585518,5.274656679151062,1.5355805243445693,1.6541822721598003,5.836454431960051,4.881398252184769,2.546816479400749,1.9101123595505618,2.15980024968789,6.991260923845194,4.044943820224719,2.4344569288389515,5.630461922596755,4.1260923845193505,4.531835205992509,5.181023720349563,7.240948813982522,2.746566791510612,4.4694132334581775,5.043695380774032,6.367041198501872,7.0536828963795255,4.31960049937578,3.183520599250936,4.194756554307116,4.257178526841448,2.702871410736579,6.866416978776529,4.4818976279650435,3.3146067415730336,6.741573033707866,2.790262172284644,4.388264669163545,4.906367041198502,5.262172284644195,6.616729088639201,4.687890137328339,6.803995006242197,6.928838951310862,4.975031210986267,3.6704119850187267,1.941323345817728,2.671660424469413,7.303370786516854,4.594257178526841,3.870162297128589,1.8476903870162298,7.17852684144819,5.087390761548065,6.1360799001248445,2.696629213483146,4.588014981273409,4.250936329588015,6.616729088639201,1.4294631710362047,3.1460674157303368,2.8963795255930087,3.5205992509363297,6.616729088639201,2.0536828963795255,6.061173533083646,5.455680399500624,5.087390761548065, +4.900124843945068,6.429463171036204,3.4893882646691634,6.429463171036204,4.619225967540574,4.656679151061174,1.5980024968789013,4.382022471910113,2.122347066167291,3.8451935081148565,4.538077403245943,2.4344569288389515,1.285892634207241,1.4731585518102372,2.6529338327091136,7.0536828963795255,5.7553058676654185,4.02621722846442,2.965043695380774,2.5405742821473156,5.087390761548065,6.554307116104869,3.9637952559300875,6.741573033707866,5.998751560549313,2.1410736579275906,1.8539325842696628,1.6853932584269664,3.0649188514357055,5.074906367041199,1.260923845193508,2.272159800249688,5.986267166042447,4.912609238451935,2.2409488139825218,3.5393258426966296,2.128589263420724,7.428214731585518,5.299625468164794,1.554307116104869,1.6791510611735332,5.861423220973783,4.906367041198502,2.578027465667915,1.941323345817728,2.184769038701623,6.991260923845194,4.0761548064918856,2.471910112359551,5.66167290886392,4.151061173533084,4.569288389513109,5.205992509363296,7.303370786516854,2.7715355805243447,4.488139825218477,5.068664169787765,6.429463171036204,7.0536828963795255,4.3508114856429465,3.202247191011236,4.213483146067416,4.288389513108614,2.7215980024968793,6.928838951310862,4.506866416978776,3.339575530586767,6.741573033707866,2.8152309612983775,4.413233458177278,4.937578027465668,5.299625468164794,6.679151061173534,4.712858926342073,6.866416978776529,6.928838951310862,5.0,3.701622971285893,1.9662921348314608,2.702871410736579,7.303370786516854,4.6254681647940075,3.9076154806491883,1.8664169787765295,7.240948813982522,5.1123595505617985,6.161048689138577,2.727840199750312,4.612983770287141,4.282147315855181,6.616729088639201,1.4481897627965044,3.1772784019975036,2.9275905118601746,3.5580524344569286,6.616729088639201,2.091136079900125,6.092384519350812,5.480649188514358,5.1123595505617985, +4.931335830212235,6.491885143570538,3.5205992509363297,6.491885143570538,4.644194756554308,4.681647940074906,1.6229712858926344,4.406991260923846,2.153558052434457,3.870162297128589,4.563046192259676,2.4656679151061174,1.3108614232209737,1.5043695380774034,2.6779026217228465,7.116104868913857,5.786516853932584,4.057428214731585,2.990012484394507,2.565543071161049,5.1123595505617985,6.554307116104869,3.9887640449438204,6.803995006242197,6.029962546816479,2.1722846441947565,1.8851435705368291,1.710362047440699,3.0961298377028714,5.099875156054932,1.285892634207241,2.303370786516854,6.004993757802747,4.937578027465668,2.2659176029962547,3.564294631710362,2.1660424469413235,7.49063670411985,5.324594257178527,1.5730337078651684,1.704119850187266,5.8863920099875156,4.931335830212235,2.6154806491885143,1.9725343320848938,2.209737827715356,7.0536828963795255,4.107365792759051,2.5031210986267167,5.692883895131087,4.18227215980025,4.600499375780275,5.230961298377029,7.303370786516854,2.7965043695380776,4.506866416978776,5.099875156054932,6.429463171036204,7.116104868913857,4.375780274656679,3.2209737827715355,4.238451935081149,4.31960049937578,2.746566791510612,6.928838951310862,4.525593008739076,3.3583021223470664,6.741573033707866,2.84019975031211,4.438202247191011,4.9687890137328345,5.33083645443196,6.679151061173534,4.737827715355805,6.866416978776529,6.991260923845194,5.0187265917602994,3.732833957553059,1.9912609238451935,2.740324594257179,7.365792759051186,4.656679151061174,3.938826466916354,1.8913857677902621,7.240948813982522,5.1373283395755305,6.186017478152309,2.7590511860174782,4.637952559300874,4.31960049937578,6.679151061173534,1.4731585518102372,3.2084893882646695,2.9525593008739075,3.589263420724095,6.679151061173534,2.122347066167291,6.123595505617978,5.50561797752809,5.1373283395755305, +4.962546816479401,6.491885143570538,3.5580524344569286,6.491885143570538,4.66916354556804,4.700374531835206,1.6416978776529338,4.431960049937578,2.1785268414481895,3.8951310861423223,4.581772784019975,2.4906367041198503,1.3358302122347065,1.5355805243445693,2.702871410736579,7.116104868913857,5.81772784019975,4.0886392009987516,3.0149812734082393,2.5842696629213484,5.143570536828964,6.616729088639201,4.013732833957553,6.803995006242197,6.061173533083646,2.203495630461923,1.9101123595505618,1.735330836454432,3.1273408239700373,5.118601747815231,1.3108614232209737,2.340823970037453,6.029962546816479,4.962546816479401,2.2846441947565546,3.589263420724095,2.1972534332084894,7.49063670411985,5.34956304619226,1.5980024968789013,1.7290886392009988,5.905118601747815,4.962546816479401,2.6466916354556806,2.00374531835206,2.2409488139825218,7.0536828963795255,4.144818976279651,2.5405742821473156,5.724094881398252,4.207240948813983,4.637952559300874,5.262172284644195,7.365792759051186,2.82147315855181,4.531835205992509,5.1248439450686645,6.491885143570538,7.116104868913857,4.400749063670412,3.2397003745318353,4.257178526841448,4.3508114856429465,2.7715355805243447,6.991260923845194,4.55056179775281,3.383270911360799,6.803995006242197,2.865168539325843,4.463171036204744,5.0,5.3620474406991265,6.679151061173534,4.769038701622971,6.928838951310862,6.991260923845194,5.0374531835206,3.7702871410736583,2.016229712858926,2.777777777777778,7.428214731585518,4.687890137328339,3.970037453183521,1.9101123595505618,7.303370786516854,5.162297128589263,6.210986267166042,2.790262172284644,4.662921348314606,4.3508114856429465,6.679151061173534,1.4981273408239701,3.2397003745318353,2.977528089887641,3.620474406991261,6.741573033707866,2.153558052434457,6.154806491885144,5.5305867665418225,5.162297128589263, +4.9937578027465666,6.554307116104869,3.589263420724095,6.554307116104869,4.694132334581773,4.725343320848939,1.6666666666666667,4.456928838951311,2.209737827715356,3.9138576779026217,4.600499375780275,2.521847690387016,1.3545568039950062,1.5667915106117354,2.727840199750312,7.17852684144819,5.848938826466916,4.119850187265917,3.0399500624219726,2.6092384519350813,5.174781523096129,6.616729088639201,4.038701622971286,6.866416978776529,6.086142322097379,2.2284644194756553,1.941323345817728,1.7602996254681649,3.1585518102372037,5.143570536828964,1.3358302122347065,2.3720349563046192,6.048689138576779,4.9812734082397006,2.309612983770287,3.6142322097378274,2.2347066167290888,7.553058676654182,5.3745318352059925,1.616729088639201,1.7540574282147314,5.930087390761548,4.987515605493134,2.6779026217228465,2.0287141073657926,2.2659176029962547,7.116104868913857,4.176029962546816,2.571785268414482,5.749063670411985,4.238451935081149,4.66916354556804,5.287141073657928,7.365792759051186,2.8464419475655434,4.55056179775281,5.15605493133583,6.491885143570538,7.116104868913857,4.431960049937578,3.258426966292135,4.275905118601748,4.382022471910113,2.790262172284644,6.991260923845194,4.575530586766542,3.4019975031210987,6.803995006242197,2.8901373283395753,4.488139825218477,5.031210986267166,5.393258426966292,6.741573033707866,4.794007490636704,6.928838951310862,6.991260923845194,5.062421972534332,3.801498127340824,2.0411985018726595,2.808988764044944,7.428214731585518,4.719101123595506,4.00749063670412,1.9350811485642945,7.303370786516854,5.187265917602996,6.235955056179775,2.82147315855181,4.687890137328339,4.382022471910113,6.741573033707866,1.523096129837703,3.2709113607990012,3.0087390761548067,3.6579275905118602,6.741573033707866,2.1910112359550564,6.186017478152309,5.561797752808988,5.181023720349563, +5.024968789013733,6.554307116104869,3.6267166042446943,6.554307116104869,4.719101123595506,4.750312109862672,1.6916354556803994,4.488139825218477,2.2409488139825218,3.938826466916354,4.6254681647940075,2.5530586766541825,1.3795255930087391,1.5980024968789013,2.752808988764045,7.17852684144819,5.880149812734083,4.151061173533084,3.0649188514357055,2.6279650436953808,5.199750312109863,6.679151061173534,4.063670411985019,6.866416978776529,6.117353308364544,2.259675405742821,1.9725343320848938,1.7852684144818978,3.1897627965043696,5.168539325842697,1.3607990012484397,2.4032459425717856,6.073657927590512,5.0062421972534334,2.33458177278402,3.6329588014981273,2.2659176029962547,7.553058676654182,5.393258426966292,1.6354556803995006,1.7790262172284643,5.948813982521848,5.012484394506866,2.715355805243446,2.0599250936329585,2.2908863920099876,7.116104868913857,4.207240948813983,2.602996254681648,5.7802746566791505,4.269662921348314,4.700374531835206,5.312109862671661,7.428214731585518,2.865168539325843,4.575530586766542,5.181023720349563,6.554307116104869,7.17852684144819,4.456928838951311,3.2771535580524347,4.300873907615481,4.413233458177278,2.8152309612983775,7.0536828963795255,4.594257178526841,3.4269662921348316,6.803995006242197,2.9151061173533086,4.51310861423221,5.062421972534332,5.424469413233458,6.741573033707866,4.818976279650437,6.991260923845194,7.0536828963795255,5.081148564294631,3.8389513108614235,2.066167290886392,2.8464419475655434,7.49063670411985,4.750312109862672,4.038701622971286,1.9538077403245941,7.365792759051186,5.212234706616729,6.242197253433209,2.852684144818976,4.712858926342073,4.413233458177278,6.741573033707866,1.5480649188514357,3.3021223470661676,3.033707865168539,3.689138576779026,6.803995006242197,2.2222222222222223,6.217228464419476,5.586766541822722,5.205992509363296, +5.056179775280899,6.616729088639201,3.6579275905118602,6.616729088639201,4.7440699126092385,4.769038701622971,1.710362047440699,4.51310861423221,2.272159800249688,3.9637952559300875,4.644194756554308,2.5842696629213484,1.404494382022472,1.6229712858926344,2.777777777777778,7.17852684144819,5.9113607990012484,4.18227215980025,3.089887640449438,2.6529338327091136,5.230961298377029,6.679151061173534,4.0886392009987516,6.928838951310862,6.1485642946317105,2.2908863920099876,2.00374531835206,1.8102372034956304,3.2209737827715355,5.19350811485643,1.3857677902621723,2.4406991260923845,6.092384519350812,5.024968789013733,2.35330836454432,3.6579275905118602,2.303370786516854,7.615480649188515,5.418227215980025,1.6541822721598003,1.8039950062421974,5.97378277153558,5.0374531835206,2.746566791510612,2.091136079900125,2.322097378277154,7.17852684144819,4.244694132334582,2.640449438202247,5.811485642946318,4.294631710362047,4.737827715355805,5.337078651685393,7.428214731585518,2.8901373283395753,4.594257178526841,5.212234706616729,6.616729088639201,7.17852684144819,4.4818976279650435,3.3021223470661676,4.31960049937578,4.444444444444445,2.8339575530586765,7.0536828963795255,4.619225967540574,3.4456928838951315,6.866416978776529,2.9400749063670415,4.538077403245943,5.093632958801498,5.461922596754057,6.803995006242197,4.850187265917603,6.991260923845194,7.0536828963795255,5.099875156054932,3.870162297128589,2.091136079900125,2.8776529338327093,7.49063670411985,4.781523096129837,4.069912609238452,1.9725343320848938,7.365792759051186,5.230961298377029,6.30461922596754,2.8838951310861427,4.737827715355805,4.444444444444445,6.803995006242197,1.5730337078651684,3.3333333333333335,3.058676654182272,3.7203495630461925,6.803995006242197,2.259675405742821,6.242197253433209,5.611735330836455,5.230961298377029, +5.081148564294631,6.616729088639201,3.689138576779026,6.616729088639201,4.775280898876405,4.794007490636704,1.735330836454432,4.538077403245943,2.2971285892634206,3.982521847690387,4.66916354556804,2.6092384519350813,1.4232209737827717,1.6541822721598003,2.8027465667915106,7.240948813982522,5.942571785268415,4.213483146067416,3.114856429463171,2.671660424469413,5.262172284644195,6.741573033707866,4.1136079900124844,6.928838951310862,6.179775280898876,2.3158551810237205,2.034956304619226,1.8352059925093633,3.2521847690387014,5.218476903870163,1.410736579275905,2.471910112359551,6.111111111111111,5.049937578027466,2.3782771535580522,3.682896379525593,2.33458177278402,7.615480649188515,5.443196004993759,1.6791510611735332,1.8227215980024971,5.992509363295881,5.068664169787765,2.777777777777778,2.1161048689138577,2.3470661672908864,7.17852684144819,4.275905118601748,2.671660424469413,5.842696629213483,4.325842696629214,4.769038701622971,5.3620474406991265,7.49063670411985,2.9151061173533086,4.612983770287141,5.243445692883895,6.616729088639201,7.240948813982522,4.51310861423221,3.320848938826467,4.33832709113608,4.4818976279650435,2.8589263420724094,7.116104868913857,4.637952559300874,3.470661672908864,6.866416978776529,2.965043695380774,4.563046192259676,5.118601747815231,5.493133583021224,6.803995006242197,4.875156054931336,7.0536828963795255,7.0536828963795255,5.1248439450686645,3.9076154806491883,2.1161048689138577,2.9151061173533086,7.553058676654182,4.812734082397004,4.107365792759051,1.9975031210986267,7.428214731585518,5.2559300873907615,6.30461922596754,2.9151061173533086,4.762796504369538,4.475655430711611,6.803995006242197,1.5980024968789013,3.3645443196004994,3.0836454431960054,3.7515605493133584,6.866416978776529,2.2908863920099876,6.30461922596754,5.636704119850187,5.2559300873907615, +5.1123595505617985,6.679151061173534,3.7265917602996255,6.679151061173534,4.800249687890138,4.818976279650437,1.7602996254681649,4.563046192259676,2.328339575530587,4.00749063670412,4.687890137328339,2.640449438202247,1.4481897627965044,1.6853932584269664,2.8277153558052435,7.240948813982522,5.97378277153558,4.238451935081149,3.139825218476904,2.696629213483146,5.287141073657928,6.741573033707866,4.132334581772784,6.991260923845194,6.20474406991261,2.3470661672908864,2.066167290886392,1.8601747815230962,3.2833957553058677,5.243445692883895,1.435705368289638,2.5031210986267167,6.1360799001248445,5.068664169787765,2.397003745318352,3.7078651685393256,2.3720349563046192,7.677902621722847,5.468164794007491,1.6978776529338326,1.8476903870162298,6.0174781523096135,5.093632958801498,2.808988764044944,2.1473158551810236,2.3720349563046192,7.240948813982522,4.307116104868914,2.7091136079900124,5.867665418227216,4.3508114856429465,4.806491885143571,5.393258426966292,7.553058676654182,2.9400749063670415,4.637952559300874,5.268414481897628,6.679151061173534,7.240948813982522,4.538077403245943,3.339575530586767,4.3632958801498125,4.51310861423221,2.8776529338327093,7.116104868913857,4.662921348314606,3.4893882646691634,6.866416978776529,2.990012484394507,4.588014981273409,5.149812734082397,5.524344569288389,6.803995006242197,4.900124843945068,7.0536828963795255,7.116104868913857,5.143570536828964,3.938826466916354,2.1410736579275906,2.9463171036204745,7.615480649188515,4.843945068664169,4.138576779026217,2.016229712858926,7.428214731585518,5.280898876404494,6.367041198501872,2.9463171036204745,4.787765293383271,4.51310861423221,6.866416978776529,1.616729088639201,3.3957553058676653,3.114856429463171,3.7890137328339577,6.928838951310862,2.328339575530587,6.30461922596754,5.66167290886392,5.274656679151062, +5.143570536828964,6.679151061173534,3.7578027465667914,6.679151061173534,4.825218476903871,4.837702871410737,1.7790262172284643,4.588014981273409,2.359550561797753,4.032459425717852,4.712858926342073,2.671660424469413,1.4731585518102372,1.7166042446941323,2.852684144818976,7.303370786516854,6.004993757802747,4.269662921348314,3.1647940074906367,2.715355805243446,5.318352059925093,6.803995006242197,4.157303370786517,6.991260923845194,6.235955056179775,2.3782771535580522,2.091136079900125,1.8851435705368291,3.3146067415730336,5.268414481897628,1.4606741573033708,2.5405742821473156,6.154806491885144,5.093632958801498,2.4219725343320846,3.7265917602996255,2.4032459425717856,7.677902621722847,5.493133583021224,1.7166042446941323,1.8726591760299625,6.036204744069912,5.118601747815231,2.8464419475655434,2.1785268414481895,2.4032459425717856,7.240948813982522,4.344569288389513,2.740324594257179,5.8988764044943816,4.382022471910113,4.837702871410737,5.418227215980025,7.553058676654182,2.965043695380774,4.656679151061174,5.299625468164794,6.679151061173534,7.303370786516854,4.563046192259676,3.3583021223470664,4.382022471910113,4.544319600499376,2.902621722846442,7.17852684144819,4.687890137328339,3.5143570536828963,6.928838951310862,3.0149812734082393,4.612983770287141,5.181023720349563,5.555555555555556,6.866416978776529,4.931335830212235,7.116104868913857,7.116104868913857,5.168539325842697,3.9762796504369535,2.1660424469413235,2.9837702871410734,7.615480649188515,4.875156054931336,4.169787765293384,2.0411985018726595,7.49063670411985,5.305867665418227,6.367041198501872,2.977528089887641,4.812734082397004,4.544319600499376,6.866416978776529,1.6416978776529338,3.4269662921348316,3.139825218476904,3.8202247191011236,6.928838951310862,2.359550561797753,6.367041198501872,5.686641697877653,5.299625468164794, +5.174781523096129,6.741573033707866,3.7890137328339577,6.679151061173534,4.850187265917603,4.8626716604244695,1.8039950062421974,4.619225967540574,2.3845193508114857,4.051186017478152,4.7315855181023725,2.702871410736579,1.4918851435705367,1.7478152309612984,2.8776529338327093,7.303370786516854,6.036204744069912,4.300873907615481,3.183520599250936,2.740324594257179,5.34956304619226,6.803995006242197,4.18227215980025,7.0536828963795255,6.242197253433209,2.4032459425717856,2.122347066167291,1.9101123595505618,3.3458177278401995,5.293383270911361,1.4856429463171037,2.571785268414482,6.179775280898876,5.118601747815231,2.446941323345818,3.7515605493133584,2.4406991260923845,7.740324594257178,5.5181023720349565,1.7415730337078652,1.8976279650436954,6.061173533083646,5.149812734082397,2.8776529338327093,2.209737827715356,2.428214731585518,7.303370786516854,4.375780274656679,2.7715355805243447,5.930087390761548,4.406991260923846,4.875156054931336,5.443196004993759,7.615480649188515,2.990012484394507,4.675405742821473,5.324594257178527,6.741573033707866,7.303370786516854,4.594257178526841,3.3770287141073654,4.400749063670412,4.575530586766542,2.9275905118601746,7.17852684144819,4.70661672908864,3.533083645443196,6.928838951310862,3.033707865168539,4.637952559300874,5.212234706616729,5.593008739076155,6.866416978776529,4.956304619225968,7.116104868913857,7.116104868913857,5.187265917602996,4.00749063670412,2.1910112359550564,3.0212234706616727,7.677902621722847,4.906367041198502,4.207240948813983,2.0599250936329585,7.49063670411985,5.33083645443196,6.367041198501872,3.0024968789013733,4.837702871410737,4.575530586766542,6.928838951310862,1.6666666666666667,3.4581772784019975,3.1647940074906367,3.8514357053682895,6.991260923845194,2.397003745318352,6.367041198501872,5.711610486891385,5.324594257178527, +5.205992509363296,6.803995006242197,3.826466916354557,6.741573033707866,4.875156054931336,4.887640449438202,1.8289637952559301,4.644194756554308,2.4157303370786516,4.0761548064918856,4.750312109862672,2.727840199750312,1.5168539325842696,1.772784019975031,2.902621722846442,7.365792759051186,6.067415730337078,4.332084893882647,3.2084893882646695,2.7590511860174782,5.3745318352059925,6.866416978776529,4.207240948813983,7.0536828963795255,6.30461922596754,2.4344569288389515,2.153558052434457,1.9350811485642945,3.383270911360799,5.318352059925093,1.5106117353308364,2.6092384519350813,6.198501872659176,5.1373283395755305,2.4656679151061174,3.776529338327091,2.471910112359551,7.740324594257178,5.543071161048689,1.7602996254681649,1.9225967540574282,6.079900124843945,5.174781523096129,2.908863920099875,2.2347066167290888,2.453183520599251,7.303370786516854,4.413233458177278,2.808988764044944,5.961298377028713,4.438202247191011,4.906367041198502,5.468164794007491,7.615480649188515,3.0087390761548067,4.700374531835206,5.355805243445693,6.803995006242197,7.303370786516854,4.619225967540574,3.3957553058676653,4.425717852684145,4.606741573033708,2.9463171036204745,7.240948813982522,4.7315855181023725,3.5580524344569286,6.991260923845194,3.058676654182272,4.662921348314606,5.243445692883895,5.6242197253433215,6.866416978776529,4.987515605493134,7.17852684144819,7.17852684144819,5.205992509363296,4.044943820224719,2.215980024968789,3.0524344569288386,7.740324594257178,4.937578027465668,4.238451935081149,2.084893882646692,7.553058676654182,5.355805243445693,6.429463171036204,3.033707865168539,4.8626716604244695,4.606741573033708,6.928838951310862,1.6916354556803994,3.4893882646691634,3.1897627965043696,3.888888888888889,7.0536828963795255,2.428214731585518,6.367041198501872,5.736579275905119,5.34956304619226, +5.237203495630462,6.803995006242197,3.857677902621723,6.741573033707866,4.900124843945068,4.906367041198502,1.8476903870162298,4.66916354556804,2.446941323345818,4.1011235955056184,4.775280898876405,2.7590511860174782,1.5418227215980027,1.8039950062421974,2.9275905118601746,7.365792759051186,6.092384519350812,4.3632958801498125,3.233458177278402,2.777777777777778,5.405742821473158,6.866416978776529,4.2322097378277155,7.116104868913857,6.30461922596754,2.4656679151061174,2.184769038701623,1.9600499375780276,3.4144818976279647,5.343320848938826,1.5355805243445693,2.640449438202247,6.223470661672909,5.162297128589263,2.4906367041198503,3.7952559300873907,2.5093632958801497,7.740324594257178,5.561797752808988,1.7790262172284643,1.9475655430711611,6.104868913857677,5.199750312109863,2.9400749063670415,2.2659176029962547,2.478152309612984,7.365792759051186,4.444444444444445,2.84019975031211,5.986267166042447,4.4694132334581775,4.937578027465668,5.493133583021224,7.677902621722847,3.033707865168539,4.719101123595506,5.380774032459426,6.803995006242197,7.365792759051186,4.644194756554308,3.4144818976279647,4.444444444444445,4.637952559300874,2.9712858926342074,7.240948813982522,4.750312109862672,3.576779026217228,6.991260923845194,3.0836454431960054,4.687890137328339,5.274656679151062,5.655430711610487,6.928838951310862,5.012484394506866,7.17852684144819,7.17852684144819,5.230961298377029,4.0761548064918856,2.2409488139825218,3.089887640449438,7.740324594257178,4.9687890137328345,4.269662921348314,2.1036204744069913,7.553058676654182,5.3745318352059925,6.429463171036204,3.0649188514357055,4.887640449438202,4.637952559300874,6.928838951310862,1.7166042446941323,3.5205992509363297,3.2209737827715355,3.920099875156055,7.0536828963795255,2.459425717852684,6.429463171036204,5.761548064918852,5.36828963795256, +5.268414481897628,6.866416978776529,3.888888888888889,6.803995006242197,4.925093632958801,4.931335830212235,1.8726591760299625,4.694132334581773,2.478152309612984,4.119850187265917,4.794007490636704,2.790262172284644,1.5605493133583022,1.8352059925093633,2.9525593008739075,7.428214731585518,6.123595505617978,4.394506866416979,3.258426966292135,2.8027465667915106,5.436953807740325,6.928838951310862,4.257178526841448,7.116104868913857,6.367041198501872,2.4906367041198503,2.215980024968789,1.9850187265917605,3.4456928838951315,5.36828963795256,1.5605493133583022,2.671660424469413,6.242197253433209,5.181023720349563,2.5093632958801497,3.8202247191011236,2.5405742821473156,7.8027465667915115,5.586766541822722,1.797752808988764,1.9662921348314608,6.129837702871411,5.224719101123595,2.977528089887641,2.2971285892634206,2.5093632958801497,7.365792759051186,4.475655430711611,2.871410736579276,6.0174781523096135,4.49438202247191,4.975031210986267,5.524344569288389,7.677902621722847,3.058676654182272,4.737827715355805,5.411985018726591,6.866416978776529,7.365792759051186,4.675405742821473,3.4332084893882646,4.463171036204744,4.66916354556804,2.990012484394507,7.303370786516854,4.775280898876405,3.6017478152309614,6.991260923845194,3.108614232209738,4.712858926342073,5.305867665418227,5.686641697877653,6.928838951310862,5.0374531835206,7.240948813982522,7.17852684144819,5.249687890137328,4.107365792759051,2.2659176029962547,3.1210986267166043,7.8027465667915115,5.0,4.307116104868914,2.128589263420724,7.615480649188515,5.399500624219725,6.491885143570538,3.0961298377028714,4.912609238451935,4.675405742821473,6.991260923845194,1.7415730337078652,3.5518102372034956,3.245942571785269,3.951310861423221,7.116104868913857,2.4968789013732833,6.429463171036204,5.792759051186017,5.393258426966292, +5.299625468164794,6.866416978776529,3.926342072409488,6.803995006242197,4.950062421972534,4.950062421972534,1.8976279650436954,4.719101123595506,2.5031210986267167,4.144818976279651,4.818976279650437,2.8152309612983775,1.585518102372035,1.8664169787765295,2.977528089887641,7.428214731585518,6.154806491885144,4.425717852684145,3.2833957553058677,2.82147315855181,5.461922596754057,6.928838951310862,4.282147315855181,7.17852684144819,6.367041198501872,2.521847690387016,2.2409488139825218,2.009987515605493,3.4769038701622974,5.393258426966292,1.585518102372035,2.7091136079900124,6.242197253433209,5.205992509363296,2.5343320848938826,3.8451935081148565,2.578027465667915,7.8027465667915115,5.611735330836455,1.8227215980024971,1.9912609238451935,6.1485642946317105,5.2559300873907615,3.0087390761548067,2.322097378277154,2.5343320848938826,7.428214731585518,4.51310861423221,2.908863920099875,6.048689138576779,4.525593008739076,5.0062421972534334,5.549313358302123,7.740324594257178,3.0836454431960054,4.762796504369538,5.436953807740325,6.866416978776529,7.428214731585518,4.700374531835206,3.451935081148564,4.488139825218477,4.700374531835206,3.0149812734082393,7.303370786516854,4.794007490636704,3.620474406991261,7.0536828963795255,3.1335830212234708,4.737827715355805,5.337078651685393,5.724094881398252,6.991260923845194,5.068664169787765,7.240948813982522,7.240948813982522,5.268414481897628,4.144818976279651,2.2908863920099876,3.1585518102372037,7.8027465667915115,5.031210986267166,4.33832709113608,2.1473158551810236,7.615480649188515,5.424469413233458,6.491885143570538,3.1273408239700373,4.937578027465668,4.70661672908864,6.991260923845194,1.7602996254681649,3.5830212234706615,3.2709113607990012,3.9887640449438204,7.17852684144819,2.5280898876404496,6.491885143570538,5.81772784019975,5.418227215980025, +5.324594257178527,6.928838951310862,3.957553058676654,6.866416978776529,4.975031210986267,4.975031210986267,1.916354556803995,4.750312109862672,2.5343320848938826,4.169787765293384,4.837702871410737,2.8464419475655434,1.6104868913857677,1.8976279650436954,3.0024968789013733,7.49063670411985,6.186017478152309,4.456928838951311,3.3083645443196006,2.8464419475655434,5.493133583021224,6.991260923845194,4.307116104868914,7.17852684144819,6.429463171036204,2.5530586766541825,2.272159800249688,2.034956304619226,3.508114856429463,5.418227215980025,1.6104868913857677,2.740324594257179,6.30461922596754,5.224719101123595,2.5593008739076155,3.870162297128589,2.6092384519350813,7.865168539325843,5.636704119850187,1.8414481897627966,2.016229712858926,6.173533083645444,5.280898876404494,3.0399500624219726,2.35330836454432,2.5593008739076155,7.428214731585518,4.544319600499376,2.9400749063670415,6.079900124843945,4.55056179775281,5.043695380774032,5.574282147315855,7.8027465667915115,3.108614232209738,4.781523096129837,5.468164794007491,6.928838951310862,7.428214731585518,4.725343320848939,3.4769038701622974,4.506866416978776,4.7315855181023725,3.033707865168539,7.365792759051186,4.818976279650437,3.6454431960049942,7.0536828963795255,3.1585518102372037,4.762796504369538,5.36828963795256,5.7553058676654185,6.991260923845194,5.093632958801498,7.303370786516854,7.240948813982522,5.293383270911361,4.176029962546816,2.3158551810237205,3.1960049937578026,7.865168539325843,5.062421972534332,4.375780274656679,2.1722846441947565,7.677902621722847,5.449438202247191,6.491885143570538,3.1585518102372037,4.962546816479401,4.737827715355805,7.0536828963795255,1.7852684144818978,3.6142322097378274,3.3021223470661676,4.019975031210986,7.17852684144819,2.565543071161049,6.491885143570538,5.842696629213483,5.436953807740325, +5.355805243445693,6.928838951310862,3.9887640449438204,6.866416978776529,5.0,5.0,1.941323345817728,4.775280898876405,2.565543071161049,4.188514357053683,4.856429463171036,2.8776529338327093,1.6292134831460674,1.9225967540574282,3.027465667915106,7.49063670411985,6.217228464419476,4.488139825218477,3.3333333333333335,2.865168539325843,5.524344569288389,6.991260923845194,4.332084893882647,7.240948813982522,6.429463171036204,2.578027465667915,2.303370786516854,2.0599250936329585,3.5393258426966296,5.443196004993759,1.6354556803995006,2.7715355805243447,6.30461922596754,5.249687890137328,2.578027465667915,3.888888888888889,2.6466916354556806,7.865168539325843,5.66167290886392,1.8601747815230962,2.0411985018726595,6.192259675405743,5.305867665418227,3.0711610486891385,2.3845193508114857,2.5905118601747814,7.49063670411985,4.575530586766542,2.977528089887641,6.104868913857677,4.581772784019975,5.074906367041199,5.599250936329588,7.8027465667915115,3.1335830212234708,4.800249687890138,5.493133583021224,6.991260923845194,7.428214731585518,4.750312109862672,3.495630461922597,4.525593008739076,4.762796504369538,3.058676654182272,7.365792759051186,4.843945068664169,3.6641697877652937,7.0536828963795255,3.183520599250936,4.787765293383271,5.399500624219725,5.786516853932584,6.991260923845194,5.118601747815231,7.303370786516854,7.240948813982522,5.312109862671661,4.213483146067416,2.340823970037453,3.227215980024969,7.927590511860175,5.087390761548065,4.406991260923846,2.1910112359550564,7.677902621722847,5.474406991260924,6.554307116104869,3.1897627965043696,4.987515605493134,4.769038701622971,7.0536828963795255,1.8102372034956304,3.6454431960049942,3.3270911360799,4.051186017478152,7.240948813982522,2.596754057428215,6.554307116104869,5.867665418227216,5.461922596754057, +5.3870162297128585,6.991260923845194,4.02621722846442,6.928838951310862,5.024968789013733,5.0187265917602994,1.9662921348314608,4.800249687890138,2.596754057428215,4.213483146067416,4.881398252184769,2.908863920099875,1.6541822721598003,1.9538077403245941,3.0524344569288386,7.553058676654182,6.242197253433209,4.519350811485642,3.3583021223470664,2.8901373283395753,5.549313358302123,7.0536828963795255,4.3508114856429465,7.240948813982522,6.491885143570538,2.6092384519350813,2.33458177278402,2.084893882646692,3.5705368289637955,5.468164794007491,1.6541822721598003,2.808988764044944,6.30461922596754,5.274656679151062,2.602996254681648,3.9138576779026217,2.6779026217228465,7.927590511860175,5.686641697877653,1.8851435705368291,2.066167290886392,6.217228464419476,5.337078651685393,3.108614232209738,2.4157303370786516,2.6154806491885143,7.49063670411985,4.612983770287141,3.0087390761548067,6.1360799001248445,4.606741573033708,5.1123595505617985,5.6242197253433215,7.865168539325843,3.15230961298377,4.825218476903871,5.524344569288389,6.991260923845194,7.49063670411985,4.781523096129837,3.5143570536828963,4.55056179775281,4.794007490636704,3.0836454431960054,7.428214731585518,4.8626716604244695,3.689138576779026,7.116104868913857,3.2084893882646695,4.812734082397004,5.430711610486892,5.81772784019975,7.0536828963795255,5.149812734082397,7.365792759051186,7.303370786516854,5.33083645443196,4.244694132334582,2.3657927590511862,3.2646691635455682,7.927590511860175,5.118601747815231,4.438202247191011,2.215980024968789,7.740324594257178,5.499375780274657,6.554307116104869,3.2209737827715355,5.012484394506866,4.800249687890138,7.116104868913857,1.8352059925093633,3.6766541822721597,3.352059925093633,4.082397003745319,7.240948813982522,2.634207240948814,6.554307116104869,5.892634207240949,5.48689138576779, +5.418227215980025,6.991260923845194,4.057428214731585,6.928838951310862,5.049937578027466,5.043695380774032,1.9850187265917605,4.825218476903871,2.6217228464419473,4.238451935081149,4.900124843945068,2.933832709113608,1.6791510611735332,1.9850187265917605,3.077403245942572,7.553058676654182,6.30461922596754,4.55056179775281,3.383270911360799,2.908863920099875,5.580524344569288,7.0536828963795255,4.375780274656679,7.303370786516854,6.491885143570538,2.640449438202247,2.3657927590511862,2.1098626716604243,3.6017478152309614,5.493133583021224,1.6791510611735332,2.84019975031211,6.367041198501872,5.293383270911361,2.6217228464419473,3.938826466916354,2.715355805243446,7.927590511860175,5.711610486891385,1.9038701622971288,2.091136079900125,6.235955056179775,5.3620474406991265,3.139825218476904,2.4406991260923845,2.640449438202247,7.553058676654182,4.644194756554308,3.0399500624219726,6.167290886392011,4.637952559300874,5.143570536828964,5.655430711610487,7.865168539325843,3.1772784019975036,4.843945068664169,5.555555555555556,7.0536828963795255,7.49063670411985,4.806491885143571,3.533083645443196,4.569288389513109,4.831460674157303,3.102372034956305,7.428214731585518,4.887640449438202,3.7078651685393256,7.116104868913857,3.233458177278402,4.837702871410737,5.461922596754057,5.855181023720349,7.0536828963795255,5.174781523096129,7.365792759051186,7.303370786516854,5.355805243445693,4.282147315855181,2.3907615480649187,3.295880149812734,7.990012484394507,5.149812734082397,4.475655430711611,2.2347066167290888,7.740324594257178,5.524344569288389,6.616729088639201,3.2521847690387014,5.0374531835206,4.831460674157303,7.116104868913857,1.8601747815230962,3.701622971285893,3.3770287141073654,4.119850187265917,7.303370786516854,2.66541822721598,6.616729088639201,5.917602996254682,5.511860174781523, +5.449438202247191,7.0536828963795255,4.094881398252185,6.928838951310862,5.074906367041199,5.068664169787765,2.009987515605493,4.850187265917603,2.6529338327091136,4.257178526841448,4.925093632958801,2.965043695380774,1.6978776529338326,2.016229712858926,3.102372034956305,7.615480649188515,6.30461922596754,4.581772784019975,3.408239700374532,2.933832709113608,5.611735330836455,7.116104868913857,4.400749063670412,7.303370786516854,6.554307116104869,2.66541822721598,2.397003745318352,2.134831460674157,3.6329588014981273,5.5181023720349565,1.704119850187266,2.8776529338327093,6.367041198501872,5.318352059925093,2.6466916354556806,3.9637952559300875,2.752808988764045,7.990012484394507,5.730337078651686,1.9225967540574282,2.1161048689138577,6.242197253433209,5.3870162297128585,3.17103620474407,2.471910112359551,2.671660424469413,7.553058676654182,4.675405742821473,3.077403245942572,6.198501872659176,4.66916354556804,5.174781523096129,5.68039950062422,7.927590511860175,3.202247191011236,4.868913857677903,5.580524344569288,7.0536828963795255,7.553058676654182,4.831460674157303,3.5518102372034956,4.588014981273409,4.8626716604244695,3.1273408239700373,7.428214731585518,4.906367041198502,3.732833957553059,7.116104868913857,3.258426966292135,4.8626716604244695,5.493133583021224,5.8863920099875156,7.0536828963795255,5.199750312109863,7.428214731585518,7.303370786516854,5.3745318352059925,4.313358302122348,2.4157303370786516,3.3333333333333335,7.990012484394507,5.181023720349563,4.506866416978776,2.259675405742821,7.8027465667915115,5.543071161048689,6.616729088639201,3.2833957553058677,5.062421972534332,4.868913857677903,7.17852684144819,1.8851435705368291,3.732833957553059,3.408239700374532,4.151061173533084,7.365792759051186,2.696629213483146,6.616729088639201,5.942571785268415,5.5305867665418225, +5.480649188514358,7.0536828963795255,4.1260923845193505,6.991260923845194,5.099875156054932,5.087390761548065,2.034956304619226,4.881398252184769,2.68414481897628,4.282147315855181,4.943820224719102,2.9962546816479403,1.7228464419475658,2.0474406991260925,3.1210986267166043,7.615480649188515,6.367041198501872,4.612983770287141,3.4332084893882646,2.9525593008739075,5.636704119850187,7.116104868913857,4.425717852684145,7.365792759051186,6.554307116104869,2.696629213483146,2.4219725343320846,2.15980024968789,3.6641697877652937,5.543071161048689,1.7290886392009988,2.908863920099875,6.367041198501872,5.337078651685393,2.671660424469413,3.982521847690387,2.7840199750312107,7.990012484394507,5.7553058676654185,1.9475655430711611,2.134831460674157,6.30461922596754,5.411985018726591,3.202247191011236,2.5031210986267167,2.696629213483146,7.615480649188515,4.712858926342073,3.108614232209738,6.223470661672909,4.694132334581773,5.212234706616729,5.705368289637952,7.927590511860175,3.227215980024969,4.887640449438202,5.611735330836455,7.116104868913857,7.553058676654182,4.8626716604244695,3.5705368289637955,4.612983770287141,4.893882646691636,3.1460674157303368,7.49063670411985,4.931335830212235,3.7515605493133584,7.17852684144819,3.2771535580524347,4.887640449438202,5.5181023720349565,5.917602996254682,7.116104868913857,5.230961298377029,7.428214731585518,7.365792759051186,5.393258426966292,4.3508114856429465,2.4406991260923845,3.3645443196004994,8.05243445692884,5.212234706616729,4.538077403245943,2.278401997503121,7.8027465667915115,5.568039950062421,6.616729088639201,3.3146067415730336,5.087390761548065,4.900124843945068,7.17852684144819,1.9101123595505618,3.764044943820225,3.4332084893882646,4.18227215980025,7.365792759051186,2.7340823970037453,6.679151061173534,5.967540574282147,5.555555555555556, +5.511860174781523,7.116104868913857,4.157303370786517,6.991260923845194,5.1248439450686645,5.1123595505617985,2.0536828963795255,4.906367041198502,2.715355805243446,4.307116104868914,4.9687890137328345,3.027465667915106,1.7478152309612984,2.0724094881398254,3.1460674157303368,7.677902621722847,6.367041198501872,4.644194756554308,3.4581772784019975,2.977528089887641,5.667915106117353,7.17852684144819,4.450686641697877,7.365792759051186,6.616729088639201,2.727840199750312,2.453183520599251,2.184769038701623,3.6953807740324596,5.568039950062421,1.7540574282147314,2.9400749063670415,6.429463171036204,5.3620474406991265,2.690387016229713,4.00749063670412,2.82147315855181,8.05243445692884,5.7802746566791505,1.9662921348314608,2.15980024968789,6.30461922596754,5.443196004993759,3.2397003745318353,2.5280898876404496,2.7215980024968793,7.615480649188515,4.7440699126092385,3.1460674157303368,6.242197253433209,4.725343320848939,5.243445692883895,5.730337078651686,7.990012484394507,3.2521847690387014,4.906367041198502,5.636704119850187,7.17852684144819,7.553058676654182,4.887640449438202,3.589263420724095,4.631710362047441,4.925093632958801,3.17103620474407,7.49063670411985,4.956304619225968,3.776529338327091,7.17852684144819,3.3021223470661676,4.912609238451935,5.549313358302123,5.948813982521848,7.116104868913857,5.2559300873907615,7.49063670411985,7.365792759051186,5.418227215980025,4.382022471910113,2.4656679151061174,3.4019975031210987,8.11485642946317,5.243445692883895,4.575530586766542,2.303370786516854,7.865168539325843,5.593008739076155,6.679151061173534,3.3458177278401995,5.118601747815231,4.931335830212235,7.240948813982522,1.9288389513108615,3.7952559300873907,3.4581772784019975,4.219725343320849,7.428214731585518,2.7652933832709112,6.679151061173534,5.998751560549313,5.580524344569288, +5.543071161048689,7.116104868913857,4.194756554307116,7.0536828963795255,5.149812734082397,5.1373283395755305,2.0786516853932584,4.931335830212235,2.740324594257179,4.325842696629214,4.987515605493134,3.0524344569288386,1.766541822721598,2.1036204744069913,3.17103620474407,7.677902621722847,6.429463171036204,4.675405742821473,3.4831460674157304,2.9962546816479403,5.69912609238452,7.17852684144819,4.475655430711611,7.428214731585518,6.616729088639201,2.752808988764045,2.4843945068664173,2.209737827715356,3.732833957553059,5.593008739076155,1.7790262172284643,2.977528089887641,6.429463171036204,5.380774032459426,2.715355805243446,4.032459425717852,2.852684144818976,8.05243445692884,5.805243445692884,1.9850187265917605,2.184769038701623,6.30461922596754,5.468164794007491,3.2709113607990012,2.5593008739076155,2.752808988764045,7.677902621722847,4.781523096129837,3.1772784019975036,6.30461922596754,4.750312109862672,5.280898876404494,5.7553058676654185,8.05243445692884,3.2709113607990012,4.931335830212235,5.667915106117353,7.17852684144819,7.615480649188515,4.912609238451935,3.607990012484395,4.65043695380774,4.956304619225968,3.1960049937578026,7.553058676654182,4.975031210986267,3.7952559300873907,7.17852684144819,3.3270911360799,4.937578027465668,5.580524344569288,5.980024968789014,7.17852684144819,5.280898876404494,7.49063670411985,7.365792759051186,5.436953807740325,4.419475655430712,2.4906367041198503,3.439450686641698,8.11485642946317,5.274656679151062,4.606741573033708,2.322097378277154,7.865168539325843,5.617977528089888,6.679151061173534,3.3770287141073654,5.143570536828964,4.962546816479401,7.240948813982522,1.9538077403245941,3.826466916354557,3.4831460674157304,4.250936329588015,7.49063670411985,2.8027465667915106,6.741573033707866,6.023720349563047,5.605493133583021, +5.574282147315855,7.17852684144819,4.225967540574282,7.0536828963795255,5.174781523096129,5.15605493133583,2.1036204744069913,4.956304619225968,2.7715355805243447,4.3508114856429465,5.0062421972534334,3.0836454431960054,1.7915106117353308,2.134831460674157,3.1960049937578026,7.677902621722847,6.429463171036204,4.70661672908864,3.508114856429463,3.0212234706616727,5.724094881398252,7.240948813982522,4.500624219725343,7.428214731585518,6.616729088639201,2.7840199750312107,2.515605493133583,2.2347066167290888,3.764044943820225,5.617977528089888,1.8039950062421974,3.0087390761548067,6.429463171036204,5.405742821473158,2.7340823970037453,4.051186017478152,2.8901373283395753,8.11485642946317,5.830212234706617,2.00374531835206,2.209737827715356,6.367041198501872,5.493133583021224,3.3021223470661676,2.5905118601747814,2.777777777777778,7.677902621722847,4.812734082397004,3.2084893882646695,6.30461922596754,4.781523096129837,5.312109862671661,5.786516853932584,8.05243445692884,3.295880149812734,4.950062421972534,5.692883895131087,7.240948813982522,7.615480649188515,4.943820224719102,3.6267166042446943,4.675405742821473,4.987515605493134,3.214731585518102,7.553058676654182,5.0,3.8202247191011236,7.240948813982522,3.352059925093633,4.962546816479401,5.611735330836455,6.0174781523096135,7.17852684144819,5.312109862671661,7.553058676654182,7.428214731585518,5.455680399500624,4.450686641697877,2.515605493133583,3.470661672908864,8.177278401997503,5.305867665418227,4.637952559300874,2.340823970037453,7.927590511860175,5.64294631710362,6.741573033707866,3.408239700374532,5.168539325842697,4.9937578027465666,7.303370786516854,1.978776529338327,3.857677902621723,3.5143570536828963,4.282147315855181,7.49063670411985,2.8339575530586765,6.741573033707866,6.048689138576779,5.6242197253433215, +5.599250936329588,7.17852684144819,4.257178526841448,7.116104868913857,5.199750312109863,5.181023720349563,2.122347066167291,4.987515605493134,2.8027465667915106,4.375780274656679,5.031210986267166,3.114856429463171,1.8102372034956304,2.1660424469413235,3.2209737827715355,7.740324594257178,6.491885143570538,4.737827715355805,3.5268414481897628,3.0399500624219726,5.7553058676654185,7.240948813982522,4.525593008739076,7.49063670411985,6.679151061173534,2.8152309612983775,2.546816479400749,2.259675405742821,3.7952559300873907,5.64294631710362,1.8289637952559301,3.0399500624219726,6.491885143570538,5.430711610486892,2.7590511860174782,4.0761548064918856,2.9213483146067416,8.11485642946317,5.855181023720349,2.0287141073657926,2.2347066167290888,6.367041198501872,5.524344569288389,3.3333333333333335,2.6217228464419473,2.8027465667915106,7.740324594257178,4.843945068664169,3.245942571785269,6.367041198501872,4.806491885143571,5.343320848938826,5.811485642946318,8.11485642946317,3.320848938826467,4.9687890137328345,5.724094881398252,7.240948813982522,7.677902621722847,4.9687890137328345,3.651685393258427,4.694132334581773,5.0187265917602994,3.2397003745318353,7.615480649188515,5.0187265917602994,3.8389513108614235,7.240948813982522,3.3770287141073654,4.987515605493134,5.64294631710362,6.048689138576779,7.17852684144819,5.337078651685393,7.553058676654182,7.428214731585518,5.480649188514358,4.488139825218477,2.5405742821473156,3.508114856429463,8.239700374531834,5.337078651685393,4.675405742821473,2.3657927590511862,7.927590511860175,5.667915106117353,6.741573033707866,3.439450686641698,5.19350811485643,5.031210986267166,7.303370786516854,2.00374531835206,3.888888888888889,3.5393258426966296,4.31960049937578,7.553058676654182,2.871410736579276,6.803995006242197,6.073657927590512,5.6491885143570535, +5.630461922596755,7.240948813982522,4.294631710362047,7.116104868913857,5.224719101123595,5.205992509363296,2.1473158551810236,5.012484394506866,2.8339575530586765,4.394506866416979,5.049937578027466,3.139825218476904,1.8352059925093633,2.1910112359550564,3.245942571785269,7.740324594257178,6.491885143570538,4.769038701622971,3.5518102372034956,3.0649188514357055,5.786516853932584,7.303370786516854,4.55056179775281,7.49063670411985,6.679151061173534,2.84019975031211,2.578027465667915,2.2846441947565546,3.826466916354557,5.667915106117353,1.8539325842696628,3.077403245942572,6.491885143570538,5.449438202247191,2.7840199750312107,4.1011235955056184,2.958801498127341,8.177278401997503,5.8739076154806495,2.0474406991260925,2.259675405742821,6.367041198501872,5.549313358302123,3.370786516853933,2.6466916354556806,2.8339575530586765,7.740324594257178,4.881398252184769,3.2771535580524347,6.367041198501872,4.837702871410737,5.380774032459426,5.836454431960051,8.11485642946317,3.3458177278401995,4.9937578027465666,5.749063670411985,7.303370786516854,7.677902621722847,4.9937578027465666,3.6704119850187267,4.712858926342073,5.049937578027466,3.258426966292135,7.615480649188515,5.043695380774032,3.8639200998751564,7.240948813982522,3.4019975031210987,5.012484394506866,5.674157303370786,6.079900124843945,7.240948813982522,5.3620474406991265,7.615480649188515,7.428214731585518,5.499375780274657,4.519350811485642,2.565543071161049,3.5393258426966296,8.239700374531834,5.36828963795256,4.70661672908864,2.3845193508114857,7.990012484394507,5.692883895131087,6.741573033707866,3.470661672908864,5.218476903870163,5.062421972534332,7.365792759051186,2.0287141073657926,3.920099875156055,3.564294631710362,4.3508114856429465,7.553058676654182,2.902621722846442,6.803995006242197,6.098626716604246,5.674157303370786, +5.66167290886392,7.303370786516854,4.325842696629214,7.17852684144819,5.249687890137328,5.224719101123595,2.1722846441947565,5.0374531835206,2.8589263420724094,4.419475655430712,5.074906367041199,3.17103620474407,1.8601747815230962,2.2222222222222223,3.2709113607990012,7.8027465667915115,6.554307116104869,4.800249687890138,3.576779026217228,3.0836454431960054,5.811485642946318,7.303370786516854,4.569288389513109,7.553058676654182,6.741573033707866,2.871410736579276,2.602996254681648,2.309612983770287,3.857677902621723,5.692883895131087,1.8789013732833957,3.108614232209738,6.491885143570538,5.474406991260924,2.8027465667915106,4.1260923845193505,2.990012484394507,8.177278401997503,5.8988764044943816,2.066167290886392,2.278401997503121,6.429463171036204,5.574282147315855,3.4019975031210987,2.6779026217228465,2.8589263420724094,7.8027465667915115,4.912609238451935,3.3146067415730336,6.429463171036204,4.868913857677903,5.411985018726591,5.861423220973783,8.177278401997503,3.370786516853933,5.012484394506866,5.7802746566791505,7.365792759051186,7.677902621722847,5.024968789013733,3.689138576779026,4.737827715355805,5.081148564294631,3.2833957553058677,7.677902621722847,5.068664169787765,3.882646691635456,7.303370786516854,3.4269662921348316,5.0374531835206,5.705368289637952,6.111111111111111,7.240948813982522,5.393258426966292,7.615480649188515,7.49063670411985,5.524344569288389,4.55056179775281,2.5905118601747814,3.576779026217228,8.302122347066168,5.399500624219725,4.737827715355805,2.4094881398252186,7.990012484394507,5.711610486891385,6.803995006242197,3.5018726591760303,5.243445692883895,5.093632958801498,7.365792759051186,2.0536828963795255,3.951310861423221,3.595505617977528,4.382022471910113,7.615480649188515,2.9400749063670415,6.866416978776529,6.123595505617978,5.69912609238452, +5.692883895131087,7.303370786516854,4.357053682896379,7.17852684144819,5.274656679151062,5.249687890137328,2.1910112359550564,5.062421972534332,2.8901373283395753,4.444444444444445,5.093632958801498,3.202247191011236,1.8789013732833957,2.253433208489388,3.295880149812734,7.8027465667915115,6.554307116104869,4.831460674157303,3.6017478152309614,3.102372034956305,5.842696629213483,7.365792759051186,4.594257178526841,7.553058676654182,6.741573033707866,2.902621722846442,2.634207240948814,2.33458177278402,3.888888888888889,5.711610486891385,1.9038701622971288,3.1460674157303368,6.554307116104869,5.493133583021224,2.8277153558052435,4.144818976279651,3.027465667915106,8.239700374531834,5.9238451935081144,2.091136079900125,2.303370786516854,6.429463171036204,5.599250936329588,3.4332084893882646,2.7091136079900124,2.8838951310861427,7.8027465667915115,4.943820224719102,3.3458177278401995,6.429463171036204,4.893882646691636,5.449438202247191,5.8863920099875156,8.177278401997503,3.3957553058676653,5.031210986267166,5.805243445692884,7.365792759051186,7.740324594257178,5.049937578027466,3.7078651685393256,4.7565543071161045,5.1123595505617985,3.3021223470661676,7.677902621722847,5.087390761548065,3.9076154806491883,7.303370786516854,3.451935081148564,5.062421972534332,5.736579275905119,6.1485642946317105,7.240948813982522,5.418227215980025,7.677902621722847,7.49063670411985,5.543071161048689,4.588014981273409,2.6154806491885143,3.6142322097378274,8.302122347066168,5.430711610486892,4.775280898876405,2.428214731585518,8.05243445692884,5.736579275905119,6.803995006242197,3.533083645443196,5.268414481897628,5.1248439450686645,7.365792759051186,2.0724094881398254,3.982521847690387,3.620474406991261,4.413233458177278,7.677902621722847,2.9712858926342074,6.866416978776529,6.1485642946317105,5.717852684144819, +5.724094881398252,7.365792759051186,4.394506866416979,7.240948813982522,5.299625468164794,5.274656679151062,2.215980024968789,5.087390761548065,2.9213483146067416,4.463171036204744,5.118601747815231,3.233458177278402,1.9038701622971288,2.2846441947565546,3.320848938826467,7.865168539325843,6.616729088639201,4.8626716604244695,3.6267166042446943,3.1273408239700373,5.8739076154806495,7.365792759051186,4.619225967540574,7.615480649188515,6.803995006242197,2.9275905118601746,2.66541822721598,2.359550561797753,3.920099875156055,5.736579275905119,1.9288389513108615,3.1772784019975036,6.554307116104869,5.5181023720349565,2.8464419475655434,4.169787765293384,3.058676654182272,8.239700374531834,5.948813982521848,2.1098626716604243,2.328339575530587,6.429463171036204,5.630461922596755,3.464419475655431,2.7340823970037453,2.9151061173533086,7.865168539325843,4.9812734082397006,3.3770287141073654,6.491885143570538,4.925093632958801,5.480649188514358,5.917602996254682,8.239700374531834,3.4144818976279647,5.056179775280899,5.836454431960051,7.428214731585518,7.740324594257178,5.074906367041199,3.7265917602996255,4.775280898876405,5.143570536828964,3.3270911360799,7.740324594257178,5.1123595505617985,3.926342072409488,7.303370786516854,3.4769038701622974,5.081148564294631,5.767790262172285,6.179775280898876,7.303370786516854,5.449438202247191,7.677902621722847,7.49063670411985,5.561797752808988,4.619225967540574,2.640449438202247,3.6454431960049942,8.3645443196005,5.461922596754057,4.806491885143571,2.453183520599251,8.05243445692884,5.761548064918852,6.866416978776529,3.564294631710362,5.293383270911361,5.15605493133583,7.428214731585518,2.097378277153558,4.013732833957553,3.6454431960049942,4.450686641697877,7.677902621722847,3.0024968789013733,6.928838951310862,6.173533083645444,5.742821473158552, +5.7553058676654185,7.365792759051186,4.425717852684145,7.240948813982522,5.324594257178527,5.293383270911361,2.2409488139825218,5.118601747815231,2.9525593008739075,4.488139825218477,5.1373283395755305,3.258426966292135,1.9288389513108615,2.3158551810237205,3.3458177278401995,7.865168539325843,6.616729088639201,4.893882646691636,3.651685393258427,3.1460674157303368,5.8988764044943816,7.428214731585518,4.644194756554308,7.615480649188515,6.803995006242197,2.958801498127341,2.696629213483146,2.3845193508114857,3.951310861423221,5.761548064918852,1.9538077403245941,3.2084893882646695,6.616729088639201,5.536828963795256,2.871410736579276,4.194756554307116,3.0961298377028714,8.302122347066168,5.97378277153558,2.128589263420724,2.35330836454432,6.491885143570538,5.655430711610487,3.5018726591760303,2.7652933832709112,2.9400749063670415,7.865168539325843,5.012484394506866,3.4144818976279647,6.491885143570538,4.950062421972534,5.5181023720349565,5.942571785268415,8.302122347066168,3.439450686641698,5.074906367041199,5.867665418227216,7.428214731585518,7.8027465667915115,5.106117353308365,3.745318352059925,4.800249687890138,5.181023720349563,3.352059925093633,7.740324594257178,5.131086142322098,3.951310861423221,7.365792759051186,3.5018726591760303,5.106117353308365,5.799001248439451,6.210986267166042,7.303370786516854,5.474406991260924,7.740324594257178,7.553058676654182,5.586766541822722,4.656679151061174,2.6591760299625467,3.682896379525593,8.426966292134832,5.493133583021224,4.837702871410737,2.471910112359551,8.11485642946317,5.786516853932584,6.866416978776529,3.595505617977528,5.318352059925093,5.19350811485643,7.428214731585518,2.122347066167291,4.044943820224719,3.6704119850187267,4.4818976279650435,7.740324594257178,3.0399500624219726,6.928838951310862,6.20474406991261,5.767790262172285, +5.786516853932584,7.428214731585518,4.463171036204744,7.240948813982522,5.34956304619226,5.318352059925093,2.259675405742821,5.143570536828964,2.977528089887641,4.51310861423221,5.15605493133583,3.2896379525593007,1.9475655430711611,2.340823970037453,3.370786516853933,7.927590511860175,6.679151061173534,4.925093632958801,3.6766541822721597,3.17103620474407,5.930087390761548,7.428214731585518,4.66916354556804,7.677902621722847,6.866416978776529,2.990012484394507,2.727840199750312,2.4094881398252186,3.982521847690387,5.786516853932584,1.978776529338327,3.245942571785269,6.616729088639201,5.561797752808988,2.8963795255930087,4.219725343320849,3.1273408239700373,8.302122347066168,5.998751560549313,2.1473158551810236,2.3782771535580522,6.491885143570538,5.68039950062422,3.533083645443196,2.7965043695380776,2.965043695380774,7.927590511860175,5.049937578027466,3.4456928838951315,6.491885143570538,4.9812734082397006,5.549313358302123,5.967540574282147,8.302122347066168,3.464419475655431,5.093632958801498,5.892634207240949,7.49063670411985,7.8027465667915115,5.131086142322098,3.764044943820225,4.818976279650437,5.212234706616729,3.370786516853933,7.8027465667915115,5.15605493133583,3.970037453183521,7.365792759051186,3.5205992509363297,5.131086142322098,5.830212234706617,6.242197253433209,7.365792759051186,5.499375780274657,7.740324594257178,7.553058676654182,5.605493133583021,4.687890137328339,2.68414481897628,3.714107365792759,8.426966292134832,5.524344569288389,4.875156054931336,2.4968789013732833,8.11485642946317,5.811485642946318,6.866416978776529,3.6267166042446943,5.343320848938826,5.224719101123595,7.49063670411985,2.1473158551810236,4.0761548064918856,3.701622971285893,4.51310861423221,7.8027465667915115,3.0711610486891385,6.991260923845194,6.229712858926342,5.786516853932584, +5.81772784019975,7.428214731585518,4.49438202247191,7.303370786516854,5.3745318352059925,5.337078651685393,2.2846441947565546,5.168539325842697,3.0087390761548067,4.531835205992509,5.181023720349563,3.320848938826467,1.9725343320848938,2.3720349563046192,3.3957553058676653,7.927590511860175,6.679151061173534,4.950062421972534,3.701622971285893,3.1897627965043696,5.961298377028713,7.49063670411985,4.694132334581773,7.677902621722847,6.866416978776529,3.0149812734082393,2.7590511860174782,2.4344569288389515,4.013732833957553,5.811485642946318,2.00374531835206,3.2771535580524347,6.616729088639201,5.586766541822722,2.9151061173533086,4.238451935081149,3.1647940074906367,8.3645443196005,6.023720349563047,2.1722846441947565,2.4032459425717856,6.554307116104869,5.711610486891385,3.564294631710362,2.8277153558052435,2.9962546816479403,7.927590511860175,5.081148564294631,3.4769038701622974,6.554307116104869,5.0062421972534334,5.580524344569288,5.992509363295881,8.3645443196005,3.4893882646691634,5.118601747815231,5.9238451935081144,7.553058676654182,7.8027465667915115,5.15605493133583,3.7827715355805243,4.837702871410737,5.243445692883895,3.3957553058676653,7.8027465667915115,5.181023720349563,3.9950062421972534,7.365792759051186,3.545568039950062,5.15605493133583,5.861423220973783,6.30461922596754,7.365792759051186,5.5305867665418225,7.8027465667915115,7.553058676654182,5.6242197253433215,4.725343320848939,2.7091136079900124,3.7515605493133584,8.489388264669165,5.555555555555556,4.906367041198502,2.515605493133583,8.177278401997503,5.836454431960051,6.928838951310862,3.6579275905118602,5.36828963795256,5.2559300873907615,7.49063670411985,2.1722846441947565,4.107365792759051,3.7265917602996255,4.55056179775281,7.8027465667915115,3.108614232209738,6.991260923845194,6.242197253433209,5.811485642946318, +5.842696629213483,7.49063670411985,4.525593008739076,7.303370786516854,5.405742821473158,5.3620474406991265,2.309612983770287,5.19350811485643,3.0399500624219726,4.556803995006242,5.199750312109863,3.352059925093633,1.9975031210986267,2.4032459425717856,3.420724094881398,7.990012484394507,6.741573033707866,4.9812734082397006,3.7265917602996255,3.214731585518102,5.986267166042447,7.49063670411985,4.719101123595506,7.740324594257178,6.928838951310862,3.046192259675406,2.7840199750312107,2.459425717852684,4.044943820224719,5.836454431960051,2.0287141073657926,3.3083645443196006,6.679151061173534,5.605493133583021,2.9400749063670415,4.263420724094882,3.1960049937578026,8.3645443196005,6.0424469413233455,2.1910112359550564,2.428214731585518,6.554307116104869,5.736579275905119,3.595505617977528,2.852684144818976,3.0212234706616727,7.990012484394507,5.1123595505617985,3.5143570536828963,6.554307116104869,5.0374531835206,5.617977528089888,6.0174781523096135,8.3645443196005,3.5143570536828963,5.1373283395755305,5.948813982521848,7.553058676654182,7.865168539325843,5.187265917602996,3.801498127340824,4.8626716604244695,5.274656679151062,3.4144818976279647,7.865168539325843,5.199750312109863,4.013732833957553,7.428214731585518,3.5705368289637955,5.181023720349563,5.8863920099875156,6.30461922596754,7.365792759051186,5.555555555555556,7.8027465667915115,7.615480649188515,5.6491885143570535,4.7565543071161045,2.7340823970037453,3.7827715355805243,8.551810237203496,5.586766541822722,4.937578027465668,2.5405742821473156,8.177278401997503,5.855181023720349,6.928838951310862,3.689138576779026,5.393258426966292,5.287141073657928,7.553058676654182,2.1972534332084894,4.138576779026217,3.7515605493133584,4.581772784019975,7.865168539325843,3.139825218476904,7.0536828963795255,6.30461922596754,5.836454431960051, +5.8739076154806495,7.49063670411985,4.563046192259676,7.365792759051186,5.430711610486892,5.3870162297128585,2.328339575530587,5.218476903870163,3.0711610486891385,4.581772784019975,5.224719101123595,3.3770287141073654,2.016229712858926,2.4344569288389515,3.4456928838951315,7.990012484394507,6.741573033707866,5.012484394506866,3.7515605493133584,3.233458177278402,6.0174781523096135,7.553058676654182,4.7440699126092385,7.740324594257178,6.928838951310862,3.077403245942572,2.8152309612983775,2.4843945068664173,4.082397003745319,5.861423220973783,2.0536828963795255,3.3458177278401995,6.679151061173534,5.630461922596755,2.958801498127341,4.288389513108614,3.233458177278402,8.426966292134832,6.067415730337078,2.209737827715356,2.446941323345818,6.554307116104869,5.761548064918852,3.6329588014981273,2.8838951310861427,3.046192259675406,7.990012484394507,5.149812734082397,3.545568039950062,6.616729088639201,5.068664169787765,5.6491885143570535,6.048689138576779,8.426966292134832,3.533083645443196,5.162297128589263,5.980024968789014,7.615480649188515,7.865168539325843,5.212234706616729,3.826466916354557,4.881398252184769,5.305867665418227,3.439450686641698,7.865168539325843,5.224719101123595,4.038701622971286,7.428214731585518,3.595505617977528,5.205992509363296,5.917602996254682,6.367041198501872,7.428214731585518,5.580524344569288,7.865168539325843,7.615480649188515,5.667915106117353,4.794007490636704,2.7590511860174782,3.8202247191011236,8.551810237203496,5.617977528089888,4.975031210986267,2.5593008739076155,8.239700374531834,5.880149812734083,6.991260923845194,3.7203495630461925,5.418227215980025,5.318352059925093,7.553058676654182,2.2222222222222223,4.169787765293384,3.776529338327091,4.612983770287141,7.865168539325843,3.1772784019975036,7.0536828963795255,6.30461922596754,5.861423220973783, +5.905118601747815,7.553058676654182,4.594257178526841,7.365792759051186,5.455680399500624,5.405742821473158,2.35330836454432,5.249687890137328,3.0961298377028714,4.600499375780275,5.243445692883895,3.408239700374532,2.0411985018726595,2.4656679151061174,3.470661672908864,8.05243445692884,6.803995006242197,5.043695380774032,3.776529338327091,3.258426966292135,6.048689138576779,7.553058676654182,4.769038701622971,7.8027465667915115,6.991260923845194,3.102372034956305,2.8464419475655434,2.5093632958801497,4.1136079900124844,5.8863920099875156,2.0786516853932584,3.3770287141073654,6.679151061173534,5.6491885143570535,2.9837702871410734,4.313358302122348,3.2646691635455682,8.426966292134832,6.092384519350812,2.2347066167290888,2.471910112359551,6.616729088639201,5.786516853932584,3.6641697877652937,2.9151061173533086,3.077403245942572,8.05243445692884,5.181023720349563,3.5830212234706615,6.616729088639201,5.093632958801498,5.686641697877653,6.073657927590512,8.426966292134832,3.5580524344569286,5.181023720349563,6.004993757802747,7.615480649188515,7.927590511860175,5.237203495630462,3.8451935081148565,4.900124843945068,5.337078651685393,3.464419475655431,7.927590511860175,5.243445692883895,4.057428214731585,7.428214731585518,3.620474406991261,5.230961298377029,5.948813982521848,6.367041198501872,7.428214731585518,5.611735330836455,7.865168539325843,7.615480649188515,5.686641697877653,4.825218476903871,2.7840199750312107,3.857677902621723,8.614232209737828,5.64294631710362,5.0062421972534334,2.5842696629213484,8.239700374531834,5.905118601747815,6.991260923845194,3.7515605493133584,5.443196004993759,5.34956304619226,7.615480649188515,2.2409488139825218,4.200998751560549,3.8077403245942576,4.65043695380774,7.927590511860175,3.2084893882646695,7.116104868913857,6.30461922596754,5.880149812734083, +5.936329588014981,7.553058676654182,4.6254681647940075,7.428214731585518,5.480649188514358,5.430711610486892,2.3782771535580522,5.274656679151062,3.1273408239700373,4.6254681647940075,5.268414481897628,3.439450686641698,2.066167290886392,2.4906367041198503,3.495630461922597,8.05243445692884,6.803995006242197,5.074906367041199,3.801498127340824,3.2771535580524347,6.073657927590512,7.615480649188515,4.787765293383271,7.8027465667915115,6.991260923845194,3.1335830212234708,2.8776529338327093,2.5343320848938826,4.144818976279651,5.9113607990012484,2.1036204744069913,3.4144818976279647,6.741573033707866,5.674157303370786,3.0087390761548067,4.332084893882647,3.3021223470661676,8.489388264669165,6.117353308364544,2.253433208489388,2.4968789013732833,6.616729088639201,5.81772784019975,3.6953807740324596,2.9400749063670415,3.102372034956305,8.05243445692884,5.212234706616729,3.6142322097378274,6.679151061173534,5.1248439450686645,5.717852684144819,6.098626716604246,8.489388264669165,3.5830212234706615,5.199750312109863,6.036204744069912,7.677902621722847,7.927590511860175,5.268414481897628,3.8639200998751564,4.925093632958801,5.36828963795256,3.4831460674157304,7.927590511860175,5.268414481897628,4.082397003745319,7.49063670411985,3.6454431960049942,5.2559300873907615,5.980024968789014,6.429463171036204,7.428214731585518,5.636704119850187,7.927590511860175,7.677902621722847,5.711610486891385,4.8626716604244695,2.808988764044944,3.888888888888889,8.614232209737828,5.674157303370786,5.043695380774032,2.602996254681648,8.302122347066168,5.930087390761548,6.991260923845194,3.7827715355805243,5.468164794007491,5.3870162297128585,7.615480649188515,2.2659176029962547,4.2322097378277155,3.83270911360799,4.681647940074906,7.990012484394507,3.245942571785269,7.116104868913857,6.367041198501872,5.905118601747815, +5.967540574282147,7.615480649188515,4.662921348314606,7.428214731585518,5.50561797752809,5.455680399500624,2.397003745318352,5.299625468164794,3.1585518102372037,4.65043695380774,5.287141073657928,3.464419475655431,2.084893882646692,2.521847690387016,3.5205992509363297,8.11485642946317,6.866416978776529,5.106117353308365,3.826466916354557,3.3021223470661676,6.104868913857677,7.615480649188515,4.812734082397004,7.8027465667915115,7.0536828963795255,3.1647940074906367,2.908863920099875,2.5593008739076155,4.176029962546816,5.936329588014981,2.128589263420724,3.4456928838951315,6.741573033707866,5.692883895131087,3.027465667915106,4.357053682896379,3.3333333333333335,8.489388264669165,6.142322097378277,2.272159800249688,2.521847690387016,6.616729088639201,5.842696629213483,3.732833957553059,2.9712858926342074,3.1273408239700373,8.11485642946317,5.249687890137328,3.6454431960049942,6.679151061173534,5.149812734082397,5.7553058676654185,6.123595505617978,8.551810237203496,3.607990012484395,5.224719101123595,6.061173533083646,7.740324594257178,7.927590511860175,5.293383270911361,3.882646691635456,4.943820224719102,5.399500624219725,3.508114856429463,7.990012484394507,5.293383270911361,4.1011235955056184,7.49063670411985,3.6704119850187267,5.280898876404494,6.01123595505618,6.429463171036204,7.49063670411985,5.66167290886392,7.927590511860175,7.677902621722847,5.730337078651686,4.893882646691636,2.8339575530586765,3.926342072409488,8.67665418227216,5.705368289637952,5.074906367041199,2.6279650436953808,8.302122347066168,5.955056179775282,7.0536828963795255,3.81398252184769,5.493133583021224,5.418227215980025,7.677902621722847,2.2908863920099876,4.263420724094882,3.857677902621723,4.712858926342073,7.990012484394507,3.2771535580524347,7.17852684144819,6.367041198501872,5.930087390761548, +5.998751560549313,7.615480649188515,4.694132334581773,7.49063670411985,5.5305867665418225,5.474406991260924,2.4219725343320846,5.324594257178527,3.183520599250936,4.66916354556804,5.305867665418227,3.495630461922597,2.1098626716604243,2.5530586766541825,3.545568039950062,8.11485642946317,6.866416978776529,5.1373283395755305,3.8514357053682895,3.320848938826467,6.1360799001248445,7.677902621722847,4.837702871410737,7.865168539325843,7.0536828963795255,3.1897627965043696,2.933832709113608,2.5842696629213484,4.207240948813983,5.961298377028713,2.153558052434457,3.4769038701622974,6.741573033707866,5.717852684144819,3.0524344569288386,4.382022471910113,3.370786516853933,8.551810237203496,6.167290886392011,2.2908863920099876,2.546816479400749,6.679151061173534,5.867665418227216,3.764044943820225,3.0024968789013733,3.1585518102372037,8.11485642946317,5.280898876404494,3.682896379525593,6.741573033707866,5.181023720349563,5.786516853932584,6.1485642946317105,8.551810237203496,3.6329588014981273,5.243445692883895,6.092384519350812,7.740324594257178,7.990012484394507,5.318352059925093,3.9013732833957557,4.962546816479401,5.430711610486892,3.5268414481897628,7.990012484394507,5.312109862671661,4.1260923845193505,7.553058676654182,3.6953807740324596,5.305867665418227,6.0424469413233455,6.491885143570538,7.49063670411985,5.692883895131087,7.990012484394507,7.677902621722847,5.749063670411985,4.931335830212235,2.8589263420724094,3.957553058676654,8.739076154806492,5.736579275905119,5.106117353308365,2.6466916354556806,8.3645443196005,5.980024968789014,7.0536828963795255,3.8451935081148565,5.5181023720349565,5.449438202247191,7.677902621722847,2.3158551810237205,4.294631710362047,3.888888888888889,4.7440699126092385,8.05243445692884,3.3083645443196006,7.17852684144819,6.429463171036204,5.955056179775282, +6.029962546816479,7.677902621722847,4.725343320848939,7.49063670411985,5.555555555555556,5.499375780274657,2.446941323345818,5.34956304619226,3.214731585518102,4.694132334581773,5.33083645443196,3.5268414481897628,2.134831460674157,2.5842696629213484,3.5705368289637955,8.177278401997503,6.928838951310862,5.168539325842697,3.870162297128589,3.3458177278401995,6.161048689138577,7.677902621722847,4.8626716604244695,7.865168539325843,7.0536828963795255,3.2209737827715355,2.965043695380774,2.6092384519350813,4.238451935081149,5.986267166042447,2.1785268414481895,3.5143570536828963,6.803995006242197,5.742821473158552,3.0711610486891385,4.400749063670412,3.4019975031210987,8.551810237203496,6.186017478152309,2.3158551810237205,2.571785268414482,6.679151061173534,5.8988764044943816,3.7952559300873907,3.033707865168539,3.183520599250936,8.177278401997503,5.312109862671661,3.714107365792759,6.741573033707866,5.212234706616729,5.81772784019975,6.179775280898876,8.614232209737828,3.6579275905118602,5.262172284644195,6.117353308364544,7.8027465667915115,7.990012484394507,5.34956304619226,3.920099875156055,4.987515605493134,5.461922596754057,3.5518102372034956,8.05243445692884,5.337078651685393,4.144818976279651,7.553058676654182,3.7203495630461925,5.33083645443196,6.073657927590512,6.491885143570538,7.553058676654182,5.717852684144819,7.990012484394507,7.740324594257178,5.774032459425719,4.962546816479401,2.8838951310861427,3.9950062421972534,8.739076154806492,5.767790262172285,5.143570536828964,2.671660424469413,8.3645443196005,6.004993757802747,7.116104868913857,3.8764044943820224,5.543071161048689,5.480649188514358,7.740324594257178,2.340823970037453,4.31960049937578,3.9138576779026217,4.781523096129837,8.11485642946317,3.3458177278401995,7.240948813982522,6.429463171036204,5.97378277153558, +6.061173533083646,7.677902621722847,4.762796504369538,7.49063670411985,5.580524344569288,5.524344569288389,2.4656679151061174,5.380774032459426,3.245942571785269,4.719101123595506,5.34956304619226,3.5580524344569286,2.153558052434457,2.6154806491885143,3.589263420724095,8.177278401997503,6.928838951310862,5.199750312109863,3.8951310861423223,3.3645443196004994,6.192259675405743,7.740324594257178,4.887640449438202,7.927590511860175,7.116104868913857,3.2521847690387014,2.9962546816479403,2.634207240948814,4.269662921348314,6.01123595505618,2.203495630461923,3.545568039950062,6.803995006242197,5.761548064918852,3.0961298377028714,4.425717852684145,3.439450686641698,8.614232209737828,6.210986267166042,2.33458177278402,2.596754057428215,6.679151061173534,5.9238451935081144,3.826466916354557,3.058676654182272,3.2084893882646695,8.177278401997503,5.34956304619226,3.7515605493133584,6.803995006242197,5.237203495630462,5.855181023720349,6.20474406991261,8.614232209737828,3.6766541822721597,5.287141073657928,6.1485642946317105,7.8027465667915115,8.05243445692884,5.3745318352059925,3.938826466916354,5.0062421972534334,5.493133583021224,3.5705368289637955,8.05243445692884,5.355805243445693,4.169787765293384,7.553058676654182,3.745318352059925,5.355805243445693,6.104868913857677,6.554307116104869,7.553058676654182,5.742821473158552,8.05243445692884,7.740324594257178,5.792759051186017,4.9937578027465666,2.908863920099875,4.02621722846442,8.801498127340825,5.799001248439451,5.174781523096129,2.690387016229713,8.426966292134832,6.023720349563047,7.116104868913857,3.9076154806491883,5.568039950062421,5.511860174781523,7.740324594257178,2.3657927590511862,4.3508114856429465,3.938826466916354,4.812734082397004,8.11485642946317,3.3770287141073654,7.240948813982522,6.429463171036204,5.998751560549313, +6.086142322097379,7.740324594257178,4.794007490636704,7.553058676654182,5.605493133583021,5.543071161048689,2.4906367041198503,5.405742821473158,3.2771535580524347,4.737827715355805,5.3745318352059925,3.5830212234706615,2.1785268414481895,2.640449438202247,3.6142322097378274,8.177278401997503,,,3.920099875156055,3.3895131086142323,6.223470661672909,7.740324594257178,4.912609238451935,7.927590511860175,7.116104868913857,3.2771535580524347,3.027465667915106,2.6591760299625467,4.300873907615481,6.036204744069912,2.2284644194756553,3.576779026217228,6.803995006242197,5.786516853932584,3.1210986267166043,4.450686641697877,3.470661672908864,8.614232209737828,6.235955056179775,2.35330836454432,2.6154806491885143,6.741573033707866,5.948813982521848,3.8639200998751564,3.089887640449438,3.2397003745318353,8.239700374531834,,3.7827715355805243,6.803995006242197,5.268414481897628,5.8863920099875156,,8.67665418227216,3.701622971285893,5.305867665418227,6.179775280898876,,8.05243445692884,5.399500624219725,3.957553058676654,5.024968789013733,5.5305867665418225,3.595505617977528,8.11485642946317,5.380774032459426,4.188514357053683,7.615480649188515,3.764044943820225,5.380774032459426,6.1360799001248445,6.554307116104869,7.553058676654182,5.774032459425719,8.05243445692884,7.740324594257178,5.811485642946318,5.031210986267166,2.933832709113608,4.063670411985019,,5.830212234706617,5.205992509363296,2.7091136079900124,,6.048689138576779,7.116104868913857,3.938826466916354,5.593008739076155,5.549313358302123,,2.3907615480649187,4.382022471910113,3.9637952559300875,4.843945068664169,,3.4144818976279647,7.240948813982522,6.491885143570538,6.023720349563047, +6.117353308364544,7.8027465667915115,4.831460674157303,7.553058676654182,5.630461922596755,5.568039950062421,2.515605493133583,5.430711610486892,3.3021223470661676,4.762796504369538,5.393258426966292,3.6142322097378274,2.203495630461923,2.671660424469413,3.639200998751561,8.239700374531834,,,3.9450686641697876,3.408239700374532,6.242197253433209,7.8027465667915115,4.937578027465668,7.990012484394507,7.17852684144819,3.3083645443196006,3.058676654182272,2.68414481897628,4.332084893882647,6.061173533083646,2.253433208489388,3.6142322097378274,6.866416978776529,5.805243445692884,3.139825218476904,4.475655430711611,3.508114856429463,8.67665418227216,6.242197253433209,2.3782771535580522,2.640449438202247,6.741573033707866,5.97378277153558,3.8951310861423223,3.1210986267166043,3.2646691635455682,8.239700374531834,,3.81398252184769,6.866416978776529,5.293383270911361,5.9238451935081144,,8.67665418227216,,5.324594257178527,6.20474406991261,,8.05243445692884,5.430711610486892,3.9762796504369535,5.049937578027466,5.561797752808988,3.620474406991261,8.11485642946317,5.405742821473158,4.213483146067416,7.615480649188515,3.7890137328339577,5.405742821473158,6.167290886392011,6.616729088639201,7.615480649188515,5.799001248439451,8.11485642946317,7.8027465667915115,5.836454431960051,5.062421972534332,,4.1011235955056184,,5.861423220973783,5.243445692883895,2.7340823970037453,,6.073657927590512,7.17852684144819,3.970037453183521,5.617977528089888,5.580524344569288,,2.4094881398252186,4.413233458177278,3.9950062421972534,4.881398252184769,,3.4456928838951315,7.303370786516854,6.491885143570538,6.048689138576779, +6.1485642946317105,7.8027465667915115,4.8626716604244695,7.615480649188515,5.655430711610487,5.593008739076155,2.5343320848938826,5.455680399500624,3.3333333333333335,4.787765293383271,5.418227215980025,3.6454431960049942,2.2222222222222223,2.702871410736579,3.6641697877652937,8.239700374531834,,,3.970037453183521,3.4269662921348316,6.30461922596754,7.8027465667915115,4.962546816479401,7.990012484394507,7.17852684144819,3.339575530586767,3.089887640449438,2.7091136079900124,4.3632958801498125,6.086142322097379,2.272159800249688,3.6454431960049942,6.866416978776529,5.830212234706617,3.1647940074906367,4.49438202247191,3.545568039950062,8.67665418227216,6.30461922596754,2.397003745318352,2.66541822721598,6.741573033707866,6.004993757802747,3.926342072409488,3.1460674157303368,3.2896379525593007,8.302122347066168,,,6.866416978776529,5.324594257178527,5.955056179775282,,8.739076154806492,,5.34956304619226,6.235955056179775,,8.11485642946317,5.455680399500624,4.001248439450687,5.068664169787765,5.593008739076155,3.639200998751561,8.177278401997503,5.424469413233458,4.2322097378277155,7.615480649188515,3.81398252184769,5.430711610486892,6.198501872659176,6.616729088639201,7.615480649188515,5.830212234706617,8.11485642946317,7.8027465667915115,5.855181023720349,5.099875156054932,,4.132334581772784,,5.892634207240949,5.274656679151062,2.752808988764045,,6.098626716604246,7.17852684144819,4.001248439450687,5.6491885143570535,5.611735330836455,,2.4344569288389515,4.444444444444445,4.019975031210986,4.912609238451935,,3.4831460674157304,7.303370786516854,6.554307116104869,6.067415730337078, +,7.865168539325843,4.893882646691636,,5.68039950062422,5.611735330836455,2.5593008739076155,,3.3645443196004994,4.806491885143571,5.436953807740325,3.6766541822721597,2.247191011235955,2.7340823970037453,3.689138576779026,8.302122347066168,,,3.9950062421972534,3.451935081148564,6.30461922596754,7.865168539325843,4.987515605493134,8.05243445692884,7.240948813982522,3.3645443196004994,3.114856429463171,2.7340823970037453,4.400749063670412,6.111111111111111,2.2971285892634206,3.682896379525593,6.866416978776529,5.848938826466916,3.183520599250936,4.519350811485642,3.576779026217228,8.739076154806492,6.30461922596754,2.4157303370786516,2.690387016229713,6.803995006242197,6.029962546816479,3.957553058676654,3.1772784019975036,3.3146067415730336,8.302122347066168,,,6.928838951310862,5.34956304619226,5.986267166042447,,8.801498127340825,,5.36828963795256,6.242197253433209,,8.11485642946317,5.480649188514358,4.019975031210986,5.087390761548065,5.6242197253433215,3.6641697877652937,8.177278401997503,5.449438202247191,4.257178526841448,7.677902621722847,3.8389513108614235,5.455680399500624,6.229712858926342,6.679151061173534,7.615480649188515,5.855181023720349,8.177278401997503,7.8027465667915115,5.880149812734083,5.131086142322098,,4.169787765293384,,5.9238451935081144,5.305867665418227,2.777777777777778,,6.123595505617978,7.240948813982522,4.032459425717852,5.674157303370786,5.64294631710362,,2.459425717852684,4.475655430711611,4.044943820224719,4.943820224719102,,3.5143570536828963,7.365792759051186,6.554307116104869,6.092384519350812, +,7.865168539325843,4.931335830212235,,5.705368289637952,5.636704119850187,2.5842696629213484,,3.3957553058676653,4.831460674157303,5.455680399500624,3.701622971285893,2.272159800249688,2.7652933832709112,3.714107365792759,,,,4.019975031210986,3.470661672908864,6.367041198501872,7.865168539325843,5.0062421972534334,,7.240948813982522,3.3957553058676653,3.1460674157303368,2.7590511860174782,4.431960049937578,6.1360799001248445,,3.714107365792759,6.928838951310862,5.8739076154806495,3.2084893882646695,4.544319600499376,3.6142322097378274,8.739076154806492,6.30461922596754,2.4406991260923845,2.715355805243446,6.803995006242197,6.054931335830212,3.9950062421972534,3.2084893882646695,3.3458177278401995,8.3645443196005,,,6.928838951310862,5.380774032459426,6.023720349563047,,8.801498127340825,,5.3870162297128585,6.30461922596754,,8.177278401997503,5.50561797752809,4.038701622971286,5.1123595505617985,5.655430711610487,3.682896379525593,8.239700374531834,5.468164794007491,4.275905118601748,7.677902621722847,3.8639200998751564,5.480649188514358,6.242197253433209,6.679151061173534,7.677902621722847,5.880149812734083,8.177278401997503,7.865168539325843,5.8988764044943816,5.168539325842697,,,,5.955056179775282,5.343320848938826,2.7965043695380776,,6.1485642946317105,7.240948813982522,4.063670411985019,5.69912609238452,5.674157303370786,,2.4843945068664173,4.506866416978776,4.069912609238452,4.9812734082397006,,3.5518102372034956,7.365792759051186,6.616729088639201,6.117353308364544, +,7.927590511860175,4.962546816479401,,5.730337078651686,5.655430711610487,2.602996254681648,,3.420724094881398,4.850187265917603,5.480649188514358,3.732833957553059,2.2908863920099876,2.790262172284644,3.7390761548064915,,,,4.044943820224719,3.495630461922597,6.367041198501872,7.927590511860175,5.031210986267166,,7.303370786516854,3.4269662921348316,3.1772784019975036,2.7840199750312107,4.463171036204744,,,3.745318352059925,6.928838951310862,5.8988764044943816,3.233458177278402,4.569288389513109,3.6454431960049942,8.801498127340825,6.367041198501872,2.459425717852684,2.740324594257179,6.866416978776529,6.086142322097379,4.02621722846442,3.2397003745318353,3.370786516853933,8.3645443196005,,,6.991260923845194,5.411985018726591,6.054931335830212,,8.863920099875156,,5.411985018726591,6.30461922596754,,8.177278401997503,5.536828963795256,4.057428214731585,5.131086142322098,5.686641697877653,3.7078651685393256,8.239700374531834,5.493133583021224,4.294631710362047,7.677902621722847,3.888888888888889,5.50561797752809,6.30461922596754,6.741573033707866,7.677902621722847,5.9113607990012484,8.239700374531834,7.865168539325843,5.917602996254682,5.199750312109863,,,,5.986267166042447,5.3745318352059925,2.82147315855181,,6.173533083645444,7.240948813982522,4.094881398252185,5.724094881398252,5.705368289637952,,2.5093632958801497,4.538077403245943,4.1011235955056184,5.012484394506866,,3.5830212234706615,7.428214731585518,,6.1360799001248445, +,7.927590511860175,4.9937578027465666,,5.7553058676654185,5.68039950062422,2.6279650436953808,,3.451935081148564,4.875156054931336,5.499375780274657,3.764044943820225,2.3158551810237205,2.82147315855181,3.764044943820225,,,,4.069912609238452,3.5143570536828963,6.367041198501872,7.990012484394507,5.056179775280899,,7.303370786516854,3.4581772784019975,3.2084893882646695,2.808988764044944,4.49438202247191,,,3.7827715355805243,6.928838951310862,5.917602996254682,3.2521847690387014,,3.682896379525593,8.801498127340825,6.367041198501872,2.478152309612984,2.7590511860174782,6.866416978776529,6.111111111111111,4.057428214731585,3.2646691635455682,3.3957553058676653,8.426966292134832,,,6.991260923845194,5.436953807740325,6.092384519350812,,8.863920099875156,,5.430711610486892,6.367041198501872,,8.239700374531834,5.561797752808988,4.0761548064918856,5.149812734082397,5.717852684144819,3.7265917602996255,8.302122347066168,5.5181023720349565,4.31960049937578,7.740324594257178,3.9138576779026217,5.5305867665418225,6.30461922596754,6.741573033707866,7.740324594257178,5.936329588014981,8.239700374531834,7.865168539325843,5.942571785268415,5.237203495630462,,,,6.0174781523096135,5.405742821473158,2.84019975031211,,6.192259675405743,7.303370786516854,4.1260923845193505,5.749063670411985,5.742821473158552,,2.5343320848938826,4.569288389513109,4.1260923845193505,5.043695380774032,,3.6142322097378274,7.428214731585518,,6.161048689138577, +,7.990012484394507,5.031210986267166,,5.7802746566791505,5.705368289637952,,,3.4831460674157304,4.900124843945068,5.524344569288389,3.7952559300873907,2.340823970037453,2.852684144818976,3.7890137328339577,,,,4.094881398252185,3.5393258426966296,6.429463171036204,7.990012484394507,5.081148564294631,,7.365792759051186,3.4831460674157304,3.2397003745318353,2.8339575530586765,4.525593008739076,,,3.81398252184769,6.991260923845194,,3.2771535580524347,,3.714107365792759,8.863920099875156,6.429463171036204,2.4968789013732833,2.7840199750312107,6.866416978776529,6.1360799001248445,4.0886392009987516,3.295880149812734,,8.426966292134832,,,7.0536828963795255,5.468164794007491,6.123595505617978,,8.926342072409488,,5.455680399500624,6.367041198501872,,8.239700374531834,,4.094881398252185,5.174781523096129,5.749063670411985,3.7515605493133584,8.302122347066168,5.536828963795256,4.33832709113608,7.740324594257178,3.938826466916354,5.555555555555556,,6.803995006242197,7.740324594257178,5.961298377028713,8.302122347066168,7.927590511860175,5.961298377028713,5.268414481897628,,,,6.048689138576779,5.443196004993759,2.865168539325843,,6.217228464419476,7.303370786516854,4.157303370786517,5.774032459425719,5.774032459425719,,2.5530586766541825,4.600499375780275,4.151061173533084,5.081148564294631,,3.651685393258427,,,6.186017478152309, +,,5.062421972534332,,5.805243445692884,,,,3.5143570536828963,4.918851435705368,5.543071161048689,3.8202247191011236,2.359550561797753,2.8838951310861427,3.81398252184769,,,,4.119850187265917,3.5580524344569286,6.429463171036204,8.05243445692884,5.106117353308365,,7.365792759051186,3.5143570536828963,3.2709113607990012,2.8589263420724094,4.556803995006242,,,3.8451935081148565,6.991260923845194,,3.295880149812734,,3.7515605493133584,8.863920099875156,6.429463171036204,2.521847690387016,2.808988764044944,6.928838951310862,6.161048689138577,4.1260923845193505,3.3270911360799,,8.489388264669165,,,7.0536828963795255,5.493133583021224,6.161048689138577,,,,5.474406991260924,6.429463171036204,,8.239700374531834,,4.1136079900124844,5.19350811485643,5.7802746566791505,3.776529338327091,8.3645443196005,5.561797752808988,4.3632958801498125,7.740324594257178,3.9637952559300875,5.580524344569288,,6.803995006242197,,5.992509363295881,8.302122347066168,7.927590511860175,5.980024968789014,5.305867665418227,,,,6.079900124843945,5.474406991260924,2.8838951310861427,,6.242197253433209,7.365792759051186,4.18227215980025,5.799001248439451,5.805243445692884,,2.578027465667915,4.631710362047441,4.18227215980025,5.1123595505617985,,3.682896379525593,,,6.210986267166042, +,,5.093632958801498,,5.830212234706617,,,,3.5393258426966296,4.943820224719102,5.568039950062421,3.8514357053682895,2.3845193508114857,2.908863920099875,3.8389513108614235,,,,4.144818976279651,3.5830212234706615,6.491885143570538,,5.131086142322098,,7.428214731585518,3.545568039950062,3.295880149812734,2.8838951310861427,4.588014981273409,,,3.882646691635456,6.991260923845194,,3.320848938826467,,,8.926342072409488,6.429463171036204,2.5405742821473156,2.8339575530586765,6.928838951310862,,,3.352059925093633,,8.489388264669165,,,7.116104868913857,5.524344569288389,6.192259675405743,,,,5.493133583021224,6.429463171036204,,8.302122347066168,,4.132334581772784,5.212234706616729,5.811485642946318,3.7952559300873907,8.3645443196005,5.580524344569288,4.382022471910113,7.8027465667915115,3.9887640449438204,5.605493133583021,,6.866416978776529,,6.0174781523096135,8.3645443196005,7.927590511860175,6.004993757802747,5.337078651685393,,,,6.111111111111111,5.50561797752809,2.908863920099875,,6.242197253433209,7.365792759051186,4.213483146067416,5.823970037453184,5.836454431960051,,2.602996254681648,4.662921348314606,4.207240948813983,5.143570536828964,,3.7203495630461925,,,6.229712858926342, +,,5.131086142322098,,5.855181023720349,,,,3.5705368289637955,4.9687890137328345,5.586766541822722,3.882646691635456,2.4094881398252186,2.9400749063670415,3.8639200998751564,,,,4.169787765293384,3.6017478152309614,6.491885143570538,,5.15605493133583,,7.428214731585518,3.5705368289637955,3.3270911360799,2.908863920099875,4.619225967540574,,,3.9138576779026217,7.0536828963795255,,3.3458177278401995,,,8.926342072409488,6.491885143570538,2.5593008739076155,2.8589263420724094,6.928838951310862,,,3.383270911360799,,8.551810237203496,,,7.116104868913857,,,,,,5.5181023720349565,6.491885143570538,,8.302122347066168,,4.151061173533084,5.237203495630462,5.842696629213483,3.8202247191011236,8.426966292134832,5.605493133583021,4.406991260923846,7.8027465667915115,4.00749063670412,5.630461922596755,,,,6.0424469413233455,8.3645443196005,7.990012484394507,6.023720349563047,5.3745318352059925,,,,,5.543071161048689,2.9275905118601746,,6.30461922596754,7.428214731585518,4.244694132334582,5.848938826466916,5.867665418227216,,2.6279650436953808,4.694132334581773,4.2322097378277155,5.174781523096129,,3.7515605493133584,,,6.242197253433209, +,,5.162297128589263,,,,,,3.6017478152309614,4.987515605493134,5.605493133583021,3.9076154806491883,2.428214731585518,2.9712858926342074,,,,,4.194756554307116,3.6267166042446943,6.554307116104869,,5.181023720349563,,7.49063670411985,3.6017478152309614,3.3583021223470664,2.933832709113608,4.65043695380774,,,,7.0536828963795255,,3.3645443196004994,,,8.98876404494382,,2.5842696629213484,2.8838951310861427,6.991260923845194,,,3.4144818976279647,,8.551810237203496,,,7.116104868913857,,,,,,5.536828963795256,6.491885143570538,,8.3645443196005,,4.176029962546816,5.2559300873907615,5.880149812734083,3.8389513108614235,8.426966292134832,5.6242197253433215,4.425717852684145,7.8027465667915115,4.032459425717852,,,,,6.073657927590512,8.426966292134832,7.990012484394507,6.0424469413233455,5.405742821473158,,,,,,2.9525593008739075,,,7.428214731585518,,5.8739076154806495,5.905118601747815,,,,4.257178526841448,5.212234706616729,,,,,6.30461922596754, +,,,,,,,,3.6329588014981273,5.012484394506866,5.630461922596755,3.938826466916354,2.453183520599251,3.0024968789013733,,,,,4.213483146067416,3.6454431960049942,6.554307116104869,,5.205992509363296,,7.49063670411985,3.6329588014981273,,2.958801498127341,4.681647940074906,,,,7.0536828963795255,,3.3895131086142323,,,8.98876404494382,,2.602996254681648,2.908863920099875,6.991260923845194,,,,,,,,7.17852684144819,,,,,,5.555555555555556,6.491885143570538,,8.3645443196005,,4.194756554307116,5.274656679151062,5.9113607990012484,3.8639200998751564,8.489388264669165,5.6491885143570535,4.450686641697877,,4.057428214731585,,,,,6.098626716604246,8.426966292134832,7.990012484394507,6.067415730337078,,,,,,,2.9712858926342074,,,7.428214731585518,,5.8988764044943816,5.936329588014981,,,,4.288389513108614,5.243445692883895,,,,,6.30461922596754, +,,,,,,,,3.6579275905118602,5.0374531835206,5.6491885143570535,,2.471910112359551,3.033707865168539,,,,,,3.6704119850187267,6.616729088639201,,5.224719101123595,,7.553058676654182,,,2.9837702871410734,4.712858926342073,,,,7.116104868913857,,3.408239700374532,,,9.051186017478152,,,2.9275905118601746,6.991260923845194,,,,,,,,7.17852684144819,,,,,,5.580524344569288,6.554307116104869,,,,4.213483146067416,5.299625468164794,5.942571785268415,3.888888888888889,8.489388264669165,,4.4694132334581775,,4.082397003745319,,,,,6.123595505617978,8.489388264669165,8.05243445692884,6.086142322097379,,,,,,,2.9962546816479403,,,7.49063670411985,,5.9238451935081144,5.967540574282147,,,,,5.274656679151062,,,,,6.30461922596754, +,,,,,,,,3.689138576779026,5.056179775280899,,,2.4968789013732833,3.058676654182272,,,,,,3.689138576779026,6.616729088639201,,5.249687890137328,,7.553058676654182,,,3.0087390761548067,,,,,7.116104868913857,,3.4332084893882646,,,9.051186017478152,,,2.9525593008739075,7.0536828963795255,,,,,,,,7.240948813982522,,,,,,,,,,,4.2322097378277155,5.318352059925093,5.97378277153558,3.9076154806491883,8.551810237203496,,4.49438202247191,,4.107365792759051,,,,,6.154806491885144,8.489388264669165,8.05243445692884,6.104868913857677,,,,,,,3.0149812734082393,,,7.49063670411985,,5.948813982521848,5.998751560549313,,,,,,,,,,6.367041198501872, +,,,,,,,,3.7203495630461925,,,,,3.089887640449438,,,,,,3.714107365792759,6.679151061173534,,5.274656679151062,,7.553058676654182,,,3.033707865168539,,,,,,,3.4581772784019975,,,9.113607990012484,,,2.977528089887641,,,,,,,,,7.240948813982522,,,,,,,,,,,4.250936329588015,5.337078651685393,6.004993757802747,3.9325842696629216,8.551810237203496,,,,4.132334581772784,,,,,6.179775280898876,8.551810237203496,8.05243445692884,6.129837702871411,,,,,,,3.0399500624219726,,,7.553058676654182,,5.97378277153558,6.029962546816479,,,,,,,,,,6.367041198501872, +,,,,,,,,,,,,,3.1210986267166043,,,,,,3.732833957553059,6.679151061173534,,5.299625468164794,,,,,3.058676654182272,,,,,,,,,,9.113607990012484,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.269662921348314,5.3620474406991265,6.036204744069912,3.951310861423221,8.614232209737828,,,,,,,,,6.210986267166042,8.551810237203496,8.11485642946317,6.1485642946317105,,,,,,,3.058676654182272,,,7.553058676654182,,,,,,,,,,,,,6.367041198501872, +,,,,,,,,,,,,,3.15230961298377,,,,,,3.7515605493133584,6.741573033707866,,5.324594257178527,,,,,3.0836454431960054,,,,,,,,,,9.176029962546817,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.288389513108614,5.380774032459426,6.067415730337078,3.9762796504369535,8.614232209737828,,,,,,,,,6.235955056179775,,8.11485642946317,6.167290886392011,,,,,,,3.077403245942572,,,7.553058676654182,,,,,,,,,,,,,6.429463171036204, +,,,,,,,,,,,,,,,,,,,,6.741573033707866,,,,,,,,,,,,,,,,,9.176029962546817,,,,,,,,,,,,,,,,,,,,,,,,5.399500624219725,6.098626716604246,,8.67665418227216,,,,,,,,,6.242197253433209,,8.11485642946317,6.192259675405743,,,,,,,3.102372034956305,,,7.615480649188515,,,,,,,,,,,,,6.429463171036204, +,,,,,,,,,,,,,,,,,,,,6.803995006242197,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5.424469413233458,,,,,,,,,,,,6.30461922596754,,,6.210986267166042,,,,,,,3.1210986267166043,,,7.615480649188515,,,,,,,,,,,,,, diff --git a/lessons/files/spectrum.txt b/lessons/files/spectrum.txt index 6134c3e..2eb0d97 100644 --- a/lessons/files/spectrum.txt +++ b/lessons/files/spectrum.txt @@ -11,3 +11,7 @@ nm &#&# abs 310 0.002 300 0.007 310 0.002 +300 0.007 +310 0.002 +300 0.007 +310 0.002 diff --git a/lessons/loops_functions/For_Loop_Lesson.ipynb b/lessons/loops_functions/for_loops.ipynb similarity index 100% rename from lessons/loops_functions/For_Loop_Lesson.ipynb rename to lessons/loops_functions/for_loops.ipynb diff --git a/lessons/loops_functions/PyinC_while_loops_WIP.ipynb b/lessons/loops_functions/while_loops.ipynb similarity index 100% rename from lessons/loops_functions/PyinC_while_loops_WIP.ipynb rename to lessons/loops_functions/while_loops.ipynb diff --git a/lessons/manipulating_variables.md b/lessons/manipulating_variables.md index f588326..8fce525 100644 --- a/lessons/manipulating_variables.md +++ b/lessons/manipulating_variables.md @@ -1,3 +1,3 @@ # Manipulating Variables -These lessons introduce different types of variables used in Python, and how to manipulate them. +These lessons introduce different types of variables used in Python, and how to manipulate them using maths and comparison operators. It will also introduce you to the Boolean operators `or`, `and`, and `not`. diff --git a/lessons/solving_problems/command_line.ipynb b/lessons/solving_problems/command_line.ipynb new file mode 100644 index 0000000..8e66cf7 --- /dev/null +++ b/lessons/solving_problems/command_line.ipynb @@ -0,0 +1,25 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "cc5b6b2f", + "metadata": {}, + "source": [ + "# Using the Command Line" + ] + }, + { + "cell_type": "markdown", + "id": "0507345b", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/lessons/solving_problems/version_control.ipynb b/lessons/solving_problems/version_control.ipynb new file mode 100644 index 0000000..fc80f7a --- /dev/null +++ b/lessons/solving_problems/version_control.ipynb @@ -0,0 +1,47 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f582127a", + "metadata": {}, + "source": [ + "# Version Control" + ] + }, + { + "cell_type": "markdown", + "id": "edba83c4", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "\n", + "- Files and file management\n", + "- Writing a program" + ] + }, + { + "cell_type": "markdown", + "id": "87f4693d", + "metadata": {}, + "source": [ + "## Contents\n", + "\n", + "- Saving many separate files with versions (code_V1.py, code_V2.py etc)\n", + "- What is version control using Git, motivation\n", + "- Description of main branch, commits, working branches, sync\n", + "- How to view past versions\n", + "- Tutorial with images how to do this in VSCode/Spyder.\n", + "- How to \n", + "- Potential issues and debugging them\n", + "- More advanced version control (directories, forks, clone, pull/push, stage etc ?)" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/lessons/variables/mathematical-operators.ipynb b/lessons/variables/mathematical_operators.ipynb similarity index 75% rename from lessons/variables/mathematical-operators.ipynb rename to lessons/variables/mathematical_operators.ipynb index b7ed9d7..28dfe46 100644 --- a/lessons/variables/mathematical-operators.ipynb +++ b/lessons/variables/mathematical_operators.ipynb @@ -13,9 +13,9 @@ "source": [ "## Learning outcomes\n", "\n", - "- Develop familiarity with basic mathematical operations in Python\n", - "- Understand the consequences of doing maths on non-numerical data types\n", - "- Understand how to access some additional, more complex mathematical operations\n", + "- Develop familiarity with basic mathematical operations in Python.\n", + "- Understand the consequences of doing maths on non-numerical data types.\n", + "- Understand how to access some additional, more complex mathematical operations.\n", "\n", "## Prerequisites\n", "\n", @@ -51,11 +51,11 @@ "The modulo and floored division operations may be new to you. \n", "- Modulo computes the remainder from the division of two numbers. For example, ``5 % 2`` returns ``1``, and ``19 % 4`` returns ``3``. \n", "- Floored division is the partner to modulo, and returns only the integer part of the division. For example. ``5 // 2`` returns ``2``, and ``19 // 4`` returns ``4``. \n", - "- Other, more complicated operations are typically also available through Python libraries \n", + "- Other, more complicated operations are also available through Python libraries.\n", "\n", "Importantly, Python can only perform maths on variables of the data type ``integer`` or ``float``. Maths performed on strings or lists will result in strange outcomes (see below for some examples).\n", "\n", - "A single line of code may have many mathematical operations. In this event, Python will follow the standard order of operations for mathematical operations: you might know this as [BODMAS](https://en.wikipedia.org/wiki/Order_of_operations#Mnemonics). Use round brackets \"()\" in your sum to avoid ambiguity.\n", + "A single line of code may have many mathematical operations. In this event, Python will follow the standard order of mathematical operations: you might know this as [BODMAS](https://en.wikipedia.org/wiki/Order_of_operations#Mnemonics). Use round brackets \"()\" in your sum to avoid ambiguity.\n", "\n", "Maths can be done both with numbers and with variable names, as long as the variable is of the correct type (integer or float). Storing numbers as variables becomes extremely useful when they are being used often, and when they are needed to a large number of significant figures. For example, instead of writing out π or Avogadro's number each time it is used, you can store it at the beginning and only call it by the name you have given it.\n", "\n", @@ -81,17 +81,17 @@ "You can do maths in a variable, which can be called inside a print statement.\n", "\n", "```Python\n", - "mass_H = 1.008\n", - "mass_O = 15.999\n", + "mass_H = 1.008 # g mol-1\n", + "mass_O = 15.999 # g mol-1\n", "\n", "mass_H2O = 2 * H + O\n", - "print(\"The mass of water is: \" , mass_H2O) \n", + "print(\"The mass of water is: \" , mass_H2O, \" g mol-1\") \n", "```\n", "\n", "The output of this code is:
      \n", - "The mass of water is: 18.015\n", + "The mass of water is: 18.015 g mol-1\n", "\n", - "Remember to separate objects in a print statement with commas.\n", + "Remember to separate objects in a print statement with commas, and always provide units for an output!\n", "\n", "

      " ] @@ -106,12 +106,12 @@ "You can do maths within the print statement.\n", "\n", "```Python\n", - "mass_H = 1.008\n", - "print(\"The mass of a hydrogen molecule is: \", 2 * mass_H)\n", + "mass_H = 1.008 # g mol-1\n", + "print(\"The mass of a hydrogen molecule is: \", 2 * mass_H, \" g mol-1\")\n", "```\n", "\n", "The output of this code is:
      \n", - " The mass of a hydrogen molecule is: 2.016 \n", + " The mass of a hydrogen molecule is: 2.016 g mol-1 \n", "\n", "The value 2.016 has been calculated, but is not stored as a variable like it is in the previous example. If you wanted to do further maths with the number 2.016, it would be better to store it as a variable.\n", "\n", @@ -129,24 +129,24 @@ "You can do maths inside f strings. Just like previously, we can store the maths inside a variable and then call it from the f string, or do the maths within the f string itself.\n", "\n", "```Python\n", - "mass_C = 12.008\n", - "mass_H = 1.008\n", + "mass_C = 12.008 # g mol-1\n", + "mass_H = 1.008 # g mol-1\n", "mass_methane = mass_C + 4 * mass_H\n", "\n", "# Calling up a variable that has already been calculated\n", - "print(f\"The mass of methane is: {mass_methane:.2f}\")\n", + "print(f\"The mass of methane is: {mass_methane:.2f} g mol-1\")\n", "\n", "# Doing maths inside an f string\n", - "print(f\"The mass of ethane is: {2 * mass_C + 6 * mass_H:.5f}\")\n", + "print(f\"The mass of ethane is: {2 * mass_C + 6 * mass_H:.5f} g mol-1\")\n", "```\n", "\n", "The output of this is:
      \n", "```text\n", - "The mass of methane is: 16.04 \n", - "The mass of ethane is 30.06400\n", + "The mass of methane is: 16.04 g mol-1\n", + "The mass of ethane is 30.06400 g mol-1\n", "```\n", "\n", - "The syntax :.5f indicates that the calculation should be given to 5 decimal places. The number can be changed to any number of desired significant figures.\n", + "The syntax :.5f indicates that the calculation should be given to 5 decimal places. The number can be changed to any number of desired decimal places.\n", "\n", "

      " ] @@ -188,23 +188,25 @@ " Click to view answer\n", "\n", "Your code should look something like this:\n", - "> ```Python\n", - "> H = 1.008\n", - "> C = 12.011\n", - "> O = 15.999\n", - "> N = 14.007\n", - ">\n", - ">print(\"The mass of ethanol is: \" , 2 * C + 6 * H + O )\n", - ">\n", - "> mass_cyclahexanone = 6 * C + 10 * H + O\n", - "> print(\"The mass of cyclahexanone is: \" , mass_cyclahexanone)\n", - "> \n", - "> print(f\"The mass of nitrobenzene is: {6 * C + H * 5 + N + 2 * O} \")\n", + "\n", + "```Python\n", + "H = 1.008 # g mol-1\n", + "C = 12.011 # g mol-1\n", + "O = 15.999 # g mol-1\n", + "N = 14.007 # g mol-1\n", + "\n", + "print(\"The mass of ethanol is: \" , 2 * C + 6 * H + O, \" g mol-1\" )\n", + "\n", + "mass_cyclahexanone = 6 * C + 10 * H + O\n", + "print(\"The mass of cyclahexanone is: \" , mass_cyclahexanone, \"g mol-1\")\n", + " \n", + "print(f\"The mass of nitrobenzene is: {6 * C + H * 5 + N + 2 * O} g mol-1\")\n", + "```\n", "\n", "You should have got the output:
      \n", - " The mass of ethanol is: 46.069
      \n", - "The mass of cyclahexanone is: 98.145
      \n", - "The mass of nitrobenzene is: 123.111
      \n", + " The mass of ethanol is: 46.069 g mol-1
      \n", + "The mass of cyclahexanone is: 98.145 g mol-1
      \n", + "The mass of nitrobenzene is: 123.111 g mol-1
      \n", "\n", "We only have to define the masses once, and they can be reused for all three sums.\n", "\n", @@ -224,7 +226,7 @@ "\n", "$ V(r) = \\frac{q_{Na^+} \\ q_{Cl^+}}{4 \\ \\pi \\ \\epsilon \\ \\epsilon_{0} \\ r}\\ $\n", "\n", - "Where $q_{Na^+}$ and $q_{Cl^+}$ are the relative charges on the ions (eqivalent to Β± the charge on an electron, 1.602-19 Coulombs), $r$ is the distance between ionic nuclei (sum of ionic radii) in m, $\\epsilon$ is the relative permittivity ($\\epsilon$ = 78.7 Fm-1 in water), and $\\epsilon_0$ is the permittivity of free space ($\\epsilon_0$ = 8.85Γ—10-12 Fm-1).\n", + "Where $q_{Na^+}$ and $q_{Cl^+}$ are the relative charges on the ions (eqivalent to Β± the charge on an electron, 1.602×10-19 Coulombs), $r$ is the distance between ionic nuclei (sum of ionic radii given above) in m, $\\epsilon$ is the relative permittivity ($\\epsilon$ = 78.7 Fm-1 in water), and $\\epsilon_0$ is the permittivity of free space ($\\epsilon_0$ = 8.85Γ—10-12 Fm-1).\n", "\n", " By copying out and completing the code below, calculate the interaction potential of a sodium and chlorine ion in water using the above equation.\n", "\n", @@ -241,8 +243,6 @@ ">\n", "> print(interaction_potential)\n", "\n", - "Which would result in the output 21.\n", - "\n", "
      \n", "
      " ] @@ -258,21 +258,22 @@ "```Python\n", "q_Na = 1.602e-19 # Coulombs \n", "q_Cl = -1.602e-19 # Coulombs\n", - "pi = 3.1415 \n", - "e = 78.7 # Fm^-1\n", - "e_0 = 8.85e-12 # Fm^-1\n", + "e = 78.7 # F m-1\n", + "e_0 = 8.85e-12 # F m-1\n", "r = 116e-12 + 167e-12 # m\n", + "pi = 3.1415 \n", "\n", "interaction_potential = (q_Na*q_Cl)/(4 * pi * e * e_0 *r)\n", "\n", "print(interaction_potential , \" J\")\n", "```\n", "\n", - "\n", "You should have got the output:\n", "``` -1.036e-20 J```\n", "\n", - "
      Once we have defined each of the constants, it becomes very easy to use them again later in the code. One thing to always remember is to put units on your outputs!\n", + "In this sum, we have used round brackets to avoid ambiguity with the top and bottom of the fraction. \n", + "\n", + "Once we have defined each of the constants, it becomes very easy to use them again later in the code. One thing to always remember is to put units on your outputs! \n", "\n", "

      \n" ] @@ -320,7 +321,7 @@ "\n", "Think further: Double the value of SO3. What happens to the answer? What if we had lots of different concentrations we wanted to find the equilibrium constant for; how could we store the information to use later, or to plot in a graph? What if we wanted to identify what concentrations of reagents lead to the reverse reaction being favoured (equilibrium constant less than 1)? What if we wanted to do all of this at once, in one program? \n", "\n", - "We will learn how to do more powerful and complex analysis later on, using lists, for loops, and if statements in a few lesson's time. \n", + "We will learn how to do more powerful and complex analysis later on, using lists, `for` loops, and `if` statements in a few lesson's time. \n", "\n", "

      " ] @@ -336,7 +337,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In Python, you need to be careful with variable types. As alluded to in the introduction, using the wrong data type can lead to numerous unintended and suprising consequences. It can be made obvious with an error message when you try to run your code (e.g. TypeError or ValueError messages), or it could just output an incorrect answer without an error message (e.g. with string concatenation).\n", + "In Python, you need to be careful with variable types. As alluded to in the introduction, using the wrong data type can lead to numerous unintended consequences. It can be made obvious with an error message when you try to run your code (e.g. TypeError or ValueError messages), or it could just output an incorrect answer without an error message (e.g. with string concatenation).\n", "\n", "If you are getting errors in your code, it is often useful to check the data type of your variables using the function ``type()``.\n", "\n", @@ -359,7 +360,7 @@ "\n", "The code above results in the error: ``TypeError: unsupported operand type(s) for /: 'str' and 'int'``. \n", "\n", - "This is a TypeError, which is raised when an operation is performed on an unsupported data type. Python is telling us When we put the number 3 in speech marks, we are telling Python that this is just plain text, not a number. To Python, it is as incomprehensible as writing ``answer = sausage / 2``. \n", + "This is a TypeError, which is raised when an operation is performed on an unsupported data type. When we put the number 3 in speech marks, we are telling Python that this is just plain text, not a number. To Python, it is as incomprehensible as writing ``answer = sausage / 2``. \n", "\n", "If we do accidentally try to use division on a string, the error message straightaway tells us what has gone wrong.\n", "\n", @@ -377,30 +378,27 @@ "\n", "Run the two print statements below. \n", "\n", - ">```Python\n", - ">\n", - ">print(\"3\" + \"1\")\n", - ">print(\"3\" * 5)\n", - ">\n", + "```Python\n", + "print(\"3\" + \"1\")\n", + "print(\"3\" * 5)\n", + "```\n", "\n", "Instead of the mathematical answers 4 and 15, you get this:
      \n", "31
      \n", "33333
      \n", "\n", - "Instead of adding the numbers together, Python has added the two strings together, or multiplied the same one multiple times. This is called concatenation, and is an operation that can be performed not just on strings, but also other data types, like lists:\n", + "Instead of adding the numbers together, Python has added the two strings together in the first instance, or multiplied the same one multiple times in the second instance. This is called concatenation, and is an operation that can be performed not just on strings, but also other data types, like lists:\n", "\n", - ">```Python\n", - ">\n", - ">print([1, 2, 3] + [2, 2, 2])\n", - ">print([1, 2, 3] * 3)\n", - ">\n", + "```Python\n", + "print([1, 2, 3] + [2, 2, 2])\n", + "print([1, 2, 3] * 3)\n", + "```\n", "\n", "Which results in:
      \n", "[1, 2, 3, 2, 2, 2]
      \n", "[1, 2, 3, 1, 2, 3, 1, 2, 3]
      \n", "\n", "The most important thing to realise here is that this is an error, but not one that is raised by Python. Python will not shout at you that something has gone wrong, and the printed line on your screen doesn't give any indication that something is wrong. If you aren't careful, you might print an output that looks right, but is in fact a mistake borne from unintentional concatenation.\n", - "However, it is not always this simple. \n", "\n", "

      " ] @@ -451,7 +449,7 @@ "
      \n", " Click to view answer \n", "\n", - "The answer is all three will result in error!\n", + "The answer is all three will result in error! Try for yourself to confirm!\n", "\n", "a) This will not produce an error message, but that does not mean there is not an error present. Due to maths order of operations, this code will produce the answer ``19.93``, which is clearly not a correct mean. To avoid ambiguity, the top of the fraction should be in round brackets (). It is important to only use round brackets in a sum, because other kinds of brackets are used to define other data types and would result in TypeErrors.\n", "\n", @@ -495,7 +493,9 @@ "source": [ "As mentioned previously, some mathematical functions are not native to Python. We must import them from another module or library in order to use them. One of the most basic and useful is the built-in Python module ``math`` (documentation can be found [here](https://docs.python.org/3/library/math.html)).\n", "\n", - "Quick note on terminology: a module is a file containing the functions we want to import. A library is a collection of modules. " + "Quick note on terminology: a module is a file containing the functions we want to import. A library is a collection of modules. More information on importing modules can be found in the [importing modules lesson](../loops_functions/tut_import_mod.ipynb), although this is not necessary to understand this section of the lesson.\n", + "\n", + "It is always important to look up the documentation of the functions you are importing to use, as some can only take specific inputs. For example, in ``math``, the value of pi is called without using brackets (just ``math.pi`` will call the correct value), and trigonometric functions will do their calculations using radians, not degrees!" ] }, { @@ -512,8 +512,9 @@ "To access a specific function, we must `import` it `from` the module. Below, we import the base 10 logarithm function, `log10()`\n", "(more information on importing modules will be found in [later lessons](/lessons/loops_functions/tut_import_mod.ipynb)):\n", "\n", - "> ```Python\n", - "> from module import function\n", + "```Python\n", + "from module import function\n", + "```\n", "\n", "The function can then be used throughout the rest of the program. \n" ] @@ -525,17 +526,18 @@ "
      \n", " Importing a function from math\n", "\n", - "In this code, we want to import the function ``log10()`` to use when calculating pH from proton concentration using $ pH = -log_{10}[H^+]$\n", + "In this code, we want to import the function ``log10()`` to use when calculating pH from proton concentration using $ pH = -log_{10}[H^+]$.\n", "\n", - "> ```Python\n", - "> from math import log10\n", - ">\n", - "> conc_H = 1.0e-7\n", - ">\n", - "> pH = log10(conc_H)\n", - "> pH *= -1\n", - ">\n", - "> print(pH)\n", + "```Python\n", + "from math import log10\n", + "\n", + "conc_H = 1.0e-7\n", + "\n", + "pH = log10(conc_H)\n", + "pH *= -1\n", + "\n", + "print(pH)\n", + "```\n", "\n", "The `*=` simply means to take the previous variable also called `pH` and multiply it by -1. Only the new value of pH can be called now, so only use this if you will no longer need to call the previous value of pH. Similarly, you can use `+=`, `-=`, and `/=`.\n", "\n", @@ -553,11 +555,12 @@ "\n", "We import constants in the same way we import functions. The only difference is in how we use them. Constants are not the same as functions, and therefore do not need brackets.\n", "\n", - "> ```Python\n", - "> from math import pi\n", - ">\n", - "> circle_area = 4**2 * pi\n", - "> print(circle_area)\n", + "```Python\n", + "from math import pi\n", + "\n", + "circle_area = 4**2 * pi\n", + "print(circle_area)\n", + "```\n", "\n", "

      " ] @@ -589,7 +592,7 @@ " Click to view answer\n", "\n", "You should have got the output:\n", - " 4.64 \n", + " pH = 4.64 \n", "\n", "Think further: Is this solution acidic or basic? We can work that out quite easily, but what if we had hundreds of values for hundreds of different solutions and wanted to identify only which ones were acidic? Later lessons will give you the tools to be able to do this.\n", "\n", @@ -609,17 +612,19 @@ "source": [ "You can also import the entire library, giving you access to all the functions within it. You do this by writing simply:\n", "\n", - "`import module`\n", + "```Python\n", + "import module\n", + "```\n", "\n", "If you import the entire library, you can then call their functions in the following way:\n", "\n", - "`python answer = module.function(input)`\n", - "\n", - "Which tells us that we are referencing a function from that module. \n", - "\n", + "```Python\n", + "answer = module.function()\n", + "```\n", "\n", + "Which tells us that we are referencing a function from the module named just below the full-stop (in this case, the module is called 'module'). Referencing the module we are calling the function from is necessary because you often import lots of different modules and libraries, and you want to prevent errors caused by multiple functions having the same name.\n", "\n", - "There are lots of libraries and modules which you can import, which serve different purposes, such as the module ``NumPy`` (more information can be found in the [numpy lesson](../common_libs/Introduction_to_NumPy.ipynb)), and the graphing library [matplotlib.pyplot](../common_libs/python-in-chem_pyplot_basics_SM.ipynb). " + "There are lots of libraries and modules which you can import, which serve different purposes, such as the scientific module [NumPy](../common_libs/Introduction_to_NumPy.ipynb), and the graphing library [matplotlib.pyplot](../common_libs/python-in-chem_pyplot_basics_SM.ipynb). " ] }, { @@ -631,22 +636,21 @@ "\n", "For example with the module ``math``:\n", "\n", - "> ```Python\n", - "> import math\n", - ">\n", - "> # Calculate area of a circle using pi\n", - "> radius = 4\n", - "> circle_area = radius**2 * math.pi\n", - "> \n", - "> # Calculate e^6\n", - "> exp_answer = math.exp(6)\n", - ">\n", - "> # Calculate cosine of 10 in radians\n", - "> trig_ans = math.cos(10)\n", + "```Python\n", + "import math\n", "\n", - "The `math.` part is very important if you are importing an entire library (not just a specific function). Without it, Python won't know you are trying to call a function from the math module - it will think you have forgotten to define your own function! It gets especially confusing if you are importing many different libraries and modules, some of whom might use the same function name for a slightly different purpose. Python needs to know which one you are referring to!\n", + "# Calculate area of a circle using pi\n", + "radius = 4\n", + "circle_area = radius**2 * math.pi\n", + " \n", + "# Calculate e^6\n", + "exp_answer = math.exp(6)\n", "\n", - "It is always important to look up the documentation of the functions you are importing, as some can only take specific inputs. For example, in ``math``, the value of pi is called without using brackets (just ``math.pi`` will call the correct value), and trigonometric functions will do their calculations using radians, not degrees!\n", + "# Calculate cosine of 10 in radians\n", + "trig_ans = math.cos(10)\n", + "```\n", + "\n", + "The `math.` part is very important if you are importing an entire library (not just a specific function). Without it, Python won't know you are trying to call a function from the math module - it will think you have forgotten to define your own function! It gets especially confusing if you are importing many different libraries and modules, some of whom might use the same function name for a slightly different purpose. Python needs to know which one you are referring to!\n", "\n", "

      " ] @@ -660,7 +664,17 @@ "\n", "You can also import other modules and libraries, such as NumPy, SciPy, or MatPlotLib.pyplot. \n", "\n", - "For longer \n", + "For libraries with longer names, you can give them an **alias** which you can refer to instead of their full name. For example:\n", + "\n", + "```Python\n", + "import numpy as np\n", + "\n", + "# Calculate the numpy cosine of 0.78\n", + "ans = np.cos(0.78)\n", + "print(ans)\n", + "```\n", + "\n", + "This is not recommended for modules with an already short name, such as `math`. If you give your modules extremely short names, you may well end up with other variables having the same name, causing errors!\n", "\n", "

      " ] @@ -674,19 +688,19 @@ "\n", "---\n", "\n", - "A right-angled triangle sits inside a circle, with its hypotenuse equal to the diameter of the circle. Write a program to calculate one of the angles, θ, of the triangle in degrees, given that the opposite edge of the triangle has length 2 cm and the circumference of the circle is 10 cm. Import the module ``math``.\n", + "A right-angled triangle sits inside a circle, with its hypotenuse equal to the diameter of the circle. \n", + "\n", + "Write a program to calculate one of the angles, θ, of the triangle in degrees, given that the opposite edge of the triangle has length 2 cm and the circumference of the circle is 10 cm. Import the module ``math``.\n", "\n", "Useful information:\n", "\n", "$circle \\ diameter = \\frac{circumference}{\\pi}$ \n", "\n", - "$\\theta = sin^-1(\\frac{length\\ of\\ triangle\\ edge\\ opposite\\ \\theta}{length\\ of\\ triangle\\ hypotenuse})$\n", - "\n", - "The ``math`` function for $sin^-1$ is: ``asin()``.\n", + "$\\theta = sin^{-1}(\\frac{length\\ of\\ triangle\\ edge\\ opposite\\ \\theta}{length\\ of\\ triangle\\ hypotenuse})$\n", "\n", - "The ``math`` function ``degrees()`` converts any value inside the brackets to degrees.\n", + "The ``math`` function for $sin^{-1}$ is: ``asin()``.\n", "\n", - "The ``math`` function ``radians()`` converts any value inside the brackets to radians.\n", + "The ``math`` function ``degrees()`` converts any value inside the brackets to degrees from radians.\n", "\n", "Hint: The answer you should get is 38.9°.\n", "\n", @@ -701,15 +715,14 @@ "
      \n", " Click to view answer\n", "\n", - "\n", - "\n", "```Python\n", "import math\n", "\n", "circumference = 10 # cm\n", + "opposite_side = 2 # cm\n", + "\n", "diameter = 10 / math.pi # cm\n", "hypotenuse = diameter # cm\n", - "opposite_side = 2 # cm\n", "\n", "theta_rads = math.asin(opposite_side/hypotenuse)\n", "theta_degrees = math.degrees(theta_rads)\n", @@ -717,6 +730,8 @@ "print(theta_degrees)\n", "```\n", "\n", + "Since we know that the diameter and hypotenuse are equal to each other, we can easily set the variable 'hypotenuse', which will change when a new diameter is calculated. Note that we have used the function `math.degrees()` to convert our answer into degrees from radians. \n", + "\n", "
      " ] }, @@ -751,15 +766,16 @@ "
      \n", " Click to view answer
      \n", "\n", - ">```Python\n", - ">k_b = 1.38e-23\n", - ">T = 293\n", - ">m = 4.6e-26\n", - ">\n", - ">v = ((3 * k_b * T) / m) ** (1 / 2)\n", - ">print(f'velocity = {v:.1f} m/s')\n", + "```Python\n", + "k_b = 1.38e-23\n", + "T = 293\n", + "m = 4.6e-26\n", "\n", - "You should have got the output:\n", + "v = ((3 * k_b * T) / m) ** (1 / 2)\n", + "print(f'velocity = {v:.1f} m/s')\n", + "```\n", + "\n", + "You should have got the output:
      \n", " velocity = 513.5 m/s \n", "\n", "Remember there are many different ways of writing the same piece of code. Don't worry about finding the 'best' solution at this point. As long as it works, you have succeeded!\n", @@ -779,15 +795,15 @@ "K_a = \\frac{[\\textrm{H}^+]^2}{N - [\\textrm{H}^+]}.\n", "$$\n", "\n", - "This can be rearranged to the form $ax^2 + bx + c = 0$ and solved using the quadratic formula.\n", + "This can be rearranged to the form $ax^2 + bx + c = 0$ and the value [H+] solved using the quadratic formula.\n", "\n", "$$\n", "[\\textrm{H}^+]^2 + K_a[\\textrm{H}^+] - K_aN = 0.\n", "$$\n", "\n", - "Calculate the concentration of H+ ions when $K_a$ = 1.8 ×10-4 and $N$ = 0.1 M. What pH is this?\n", + "Write a program to calculate the concentration of H+ ions when $K_a$ = 1.8 ×10-4 and $N$ = 0.1 M. What pH is this?\n", "\n", - " Useful:
      \n", + "Useful:
      \n", "$\n", "x = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}.\n", "$" @@ -800,30 +816,33 @@ "
      \n", " Click to view answer
      \n", "\n", - ">```Python\n", - "> # Import all relevant libraries and functions at the beginning\n", - ">from math import log10\n", - ">\n", - "> # Define the variables we know\n", - "> K_a = 1.8e-4\n", - "> N = 0.1\n", - ">\n", - "> # Assign a, b, and c by comparing the two forms\n", - ">a = 1\n", - ">b = K_a\n", - ">c = -K_a * N\n", - ">\n", - "> # Calculate the two potential answers of the quadratic formula\n", - "> # To perform a square root, we are raising to the power of 1/2\n", - ">H_conc_plus = (-b + (b ** 2 - 4 * a * c) ** (1 / 2)) / (2 * a)\n", - ">H_conc_minus = (-b - (b ** 2 - 4 * a * c) ** (1 / 2)) / (2 * a)\n", - ">\n", - "> print(f'H_conc_plus = {H_conc_plus:.5f} M')\n", - "> print(f'H_conc_minus = {H_conc_minus:.5f} M')\n", - "> \n", - "> # Find and print the pH\n", - "> pH = log10(H_conc_plus) * -1\n", - "> print(f'pH = {pH:.2f}')\n", + "```Python\n", + "# Import all relevant libraries and functions at the beginning\n", + "from math import log10\n", + "\n", + "# Define the variables we know\n", + "K_a = 1.8e-4\n", + "N = 0.1\n", + "\n", + "# Assign a, b, and c by comparing the two forms\n", + "a = 1\n", + "b = K_a\n", + "c = -K_a * N\n", + "\n", + "# Calculate the two potential answers of the quadratic formula\n", + "# To perform a square root, we are raising to the power of 1/2\n", + "H_conc_plus = (-b + (b ** 2 - 4 * a * c) ** (1 / 2)) / (2 * a)\n", + "H_conc_minus = (-b - (b ** 2 - 4 * a * c) ** (1 / 2)) / (2 * a)\n", + "\n", + "print(f'H_conc_plus = {H_conc_plus:.5f} M')\n", + "print(f'H_conc_minus = {H_conc_minus:.5f} M')\n", + " \n", + "# Find and print the pH\n", + "pH = log10(H_conc_plus) * -1\n", + "print(f'pH = {pH:.2f}')\n", + "```\n", + "\n", + "---\n", "\n", "You should have got the output:
      \n", " H_conc_plus = 0.00415 M
      \n", @@ -836,7 +855,7 @@ "\n", "When we are doing complicated maths, it is good to leave comments describing what is happening to make it easier for someone else to come along and edit it. Or for yourself when you come back to look at it after a long time!\n", "\n", - " Think further: Writing out the maths for the quadratic formula takes quite a long time, and it is easy to make a mistake. If we wanted to do multiple calculations with it, we would only want to write it out once. We could do this by defining our own function (covered later in the course), which would allow us to perform the calculation using only a shorthand, such as solve_quadratic().\n", + " Think further: Writing out the maths for the quadratic formula takes quite a long time, and it is easy to make a mistake. If we wanted to do multiple calculations with it, we would only want to write it out once. We could do this by defining our own function (covered later in the course), which would allow us to perform the calculation using only a shorthand, such as solve_quadratic(a, b, c).\n", "\n", "
      " ] @@ -847,21 +866,22 @@ "source": [ "### Question 3\n", "\n", - "The code below will not work. Identify why and correct it so that it does work. Run it yourself, and keep looking at your error message to figure out what is wrong. You should get an output of `4.86cm`.\n", + "The code below will not work. Identify why and correct it so that it does work. Run it yourself, and keep looking at your error message to figure out what is wrong. You should get an output of `4.86 cm`.\n", "\n", - ">```Python\n", - "># Find the length, x, of one side of a triangle using the cosine rule\n", - ">\n", - "> math\n", - ">\n", - ">side_b = \"7\" # cm\n", - ">side_c = 5 cm\n", - ">angle_A = 44 # degrees\n", - ">\n", - ">x = side_b^2 + side_C**2 - (2 * side_b side_c * cos(angle_A)\n", - ">x *= 1/2\n", - ">\n", - ">print(x \"cm\")" + "```Python\n", + "# Find the length, x, of one side of a triangle using the cosine rule\n", + " \n", + "math\n", + "\n", + "side_b = \"7\" # cm\n", + "side_c = 5 cm\n", + "angle_A = 44 # degrees\n", + "\n", + "x = side_b^2 + side_C**2 - (2 * side_b side_c * cos(angle_A)\n", + "x *= 1/2\n", + "\n", + "print(x \" cm\")\n", + "```" ] }, { @@ -873,19 +893,20 @@ "\n", "Here is the same code with the mistakes corrected. Did you find them all or did you have to look at the answer?\n", "\n", - ">```Python\n", - "># Find the length, x, of one side of a triangle using the cosine rule\n", - ">\n", - ">import math\n", - ">\n", - ">side_b = 7 # cm\n", - ">side_c = 5 # cm\n", - ">angle_A = math.radians(44) # radians\n", - ">\n", - ">x = side_b**2 + side_c**2 - (2 * side_b * side_c * math.cos(angle_A))\n", - ">x **= 1/2\n", - ">\n", - ">print(x , \"cm\")\n", + "```Python\n", + "# Find the length, x, of one side of a triangle using the cosine rule\n", + "\n", + "import math\n", + "\n", + "side_b = 7 # cm\n", + "side_c = 5 # cm\n", + "angle_A = math.radians(44) # radians\n", + "\n", + "x = side_b**2 + side_c**2 - (2 * side_b * side_c * math.cos(angle_A))\n", + "x **= 1/2\n", + "\n", + "print(x , \" cm\")\n", + "```\n", "\n", "Here are a list of the errors and their corrections, in the order they appear.\n", "- You must `import math`, not just write `math`.\n", @@ -898,7 +919,7 @@ "- 'Cos' is a function from the module 'math'. Therefore, to use it we should do `math.cos(angle_A)`, not just `cos(angle_A)`. The function also only takes angles in radians, so make sure your input here is in radians, not degrees!\n", "- The sum is missing a closing bracket. All opened brackets must be closed in Python.\n", "- When doing the square root of `x`, the maths operator for exponents in this case should be `**=`, not `*=`.\n", - "- There should be a comma between `x` and `\"cm\"` in the print statement.\n", + "- There should be a comma between `x` and `\" cm\"` in the print statement.\n", "\n", "You can see the importance of correct syntax!\n", "\n", @@ -912,17 +933,17 @@ "## Learning outcomes\n", "\n", "- Develop familiarity with basic mathematical operations in Python, including `+`, `-`, `*`, `/`. \n", - "- Understand how to access some additiona, more complex mathematical function using the `numpy` module. \n", + "- Understand how to access some additional, more complex mathematical function using the `math` module. \n", "\n", "## Summary \n", "\n", "- Python's basic maths uses the symbols `+`,`-`,`*`,`/`, `**`.\n", - "- Use `%`, \"modulo\", to find the remainder of a division, and ``//``, \"floored division\"\" to return the integer part of a division.\n", - "- Use order of operations (BODMAS/BIDMAS/PEMDAS) to ensure Python does the correct sum.\n", + "- Use `%`, \"modulo\", to find the remainder of a division, and ``//``, \"floored division\" to return the integer part of a division.\n", + "- Use order of operations (BODMAS/BIDMAS/PEMDAS) to ensure Python does the correct sum. Use round brackets (not any other type of brackets) to remove ambiguity.\n", "- Assign your sum a variable to be able to call that value forward later. \n", - "- Inside an f string, use `:.3f` to print your answer to 3 decimal places. Changing the number changes the number of significant figures produced in the answer.\n", + "- Inside an f string, use `:.3f` to print your answer to 3 decimal places. Changing the number changes the number of decimal places produced in the answer.\n", "- Use `+=`, `-=`, `*=`, etc. to change the value of a variable.\n", - "- For more complex functions, import them from a library such as `numpy` or `math`. If you import the whole library, you must reference the library using `library.function()`, like in the sum `ans = math.sin(1)`. \n", + "- For more complex functions, import them from a library or module such as `numpy` or `math`. If you import the whole library, you must reference the library using `modulename.function()`, like in the sum `answer = math.sin(1)`. \n", "- Make sure to place the lines of code importing any functions or libraries at the beginning of the program." ] } From ac735254a2a4b5982803cbaae9bbdc5a1354cc8c Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Fri, 8 Aug 2025 09:26:57 +0100 Subject: [PATCH 38/94] Minor typos and wording --- lessons/basics/python_introduction.ipynb | 5 +++-- lessons/variables/mathematical_operators.ipynb | 12 ++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/lessons/basics/python_introduction.ipynb b/lessons/basics/python_introduction.ipynb index d710357..72bc970 100644 --- a/lessons/basics/python_introduction.ipynb +++ b/lessons/basics/python_introduction.ipynb @@ -86,7 +86,7 @@ "id": "4b1858e8", "metadata": {}, "source": [ - "Python will attempt to execute any written text in the file. The exception to this is comments, which is used to provide context and description for any code that comes immediately after it. You indicate that a line is a comment using a hash `#`.\n", + "Python will attempt to execute any written text in the file. The exception to this are comments, which is used to provide context and description for any code that comes immediately after it. You indicate that a line is a comment using a hash `#`.\n", "\n", "```Python\n", "# This is a comment line\n", @@ -131,7 +131,8 @@ "\n", "- When naming your files, keep the names short but descriptive. Try not to name multiple files the same thing.\n", "- Group your Python files in sub-directories (folders on your computer) to keep track of them better.\n", - "- Regularly save your work." + "- Regularly save your work.\n", + "- Version control is your friend" ] } ], diff --git a/lessons/variables/mathematical_operators.ipynb b/lessons/variables/mathematical_operators.ipynb index 28dfe46..d19fe68 100644 --- a/lessons/variables/mathematical_operators.ipynb +++ b/lessons/variables/mathematical_operators.ipynb @@ -55,7 +55,7 @@ "\n", "Importantly, Python can only perform maths on variables of the data type ``integer`` or ``float``. Maths performed on strings or lists will result in strange outcomes (see below for some examples).\n", "\n", - "A single line of code may have many mathematical operations. In this event, Python will follow the standard order of mathematical operations: you might know this as [BODMAS](https://en.wikipedia.org/wiki/Order_of_operations#Mnemonics). Use round brackets \"()\" in your sum to avoid ambiguity.\n", + "A single line of code may have many mathematical operations. In this event, Python will follow the standard order of mathematical operations: you might know this as [BODMAS](https://en.wikipedia.org/wiki/Order_of_operations#Mnemonics). Use round brackets \"()\" when coding your formulas to avoid ambiguity.\n", "\n", "Maths can be done both with numbers and with variable names, as long as the variable is of the correct type (integer or float). Storing numbers as variables becomes extremely useful when they are being used often, and when they are needed to a large number of significant figures. For example, instead of writing out π or Avogadro's number each time it is used, you can store it at the beginning and only call it by the name you have given it.\n", "\n", @@ -126,7 +126,7 @@ "
      \n", " Maths in an f-string \n", "\n", - "You can do maths inside f strings. Just like previously, we can store the maths inside a variable and then call it from the f string, or do the maths within the f string itself.\n", + "You can do maths inside f-strings. Just like previously, we can store the maths inside a variable and then call it from the f-string, or do the maths within the f-string itself.\n", "\n", "```Python\n", "mass_C = 12.008 # g mol-1\n", @@ -351,7 +351,7 @@ "
      \n", " Error message: TypeError\n", "\n", - "Many mathematical operations can only be performed on variables of the ``integer`` or ``float``, and cannot be performed on variables of the type ``string``, even if that string is a number. Often, this will result in an error message popping up when you try to run it.\n", + "Many mathematical operations can only be performed on variables of the ``integer`` or ``float`` type, and cannot be performed on variables of the ``string`` type, even if that string is a number. Often, this will result in an error message popping up when you try to run it. Or, potentially worse, no error but unexpected behaviour.\n", "\n", ">```Python\n", ">\n", @@ -940,10 +940,10 @@ "- Python's basic maths uses the symbols `+`,`-`,`*`,`/`, `**`.\n", "- Use `%`, \"modulo\", to find the remainder of a division, and ``//``, \"floored division\" to return the integer part of a division.\n", "- Use order of operations (BODMAS/BIDMAS/PEMDAS) to ensure Python does the correct sum. Use round brackets (not any other type of brackets) to remove ambiguity.\n", - "- Assign your sum a variable to be able to call that value forward later. \n", - "- Inside an f string, use `:.3f` to print your answer to 3 decimal places. Changing the number changes the number of decimal places produced in the answer.\n", + "- Assign your calculatioon a variable to be able to call that value forward later. \n", + "- Inside an f string, use `:.3f` to print your answer to 3 decimal places. Changing the number changes the number of decimal places displayed in the answer.\n", "- Use `+=`, `-=`, `*=`, etc. to change the value of a variable.\n", - "- For more complex functions, import them from a library or module such as `numpy` or `math`. If you import the whole library, you must reference the library using `modulename.function()`, like in the sum `answer = math.sin(1)`. \n", + "- For more complex functions, import them from a library or module such as `numpy` or `math`. If you import the whole library, you must reference the library using `modulename.function()`, like in the calculation `answer = math.sin(1)`. \n", "- Make sure to place the lines of code importing any functions or libraries at the beginning of the program." ] } From f47e70f8de003f7291c0aed884307b5d8a57046f Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Fri, 8 Aug 2025 09:31:50 +0100 Subject: [PATCH 39/94] edits --- .../conditional_statements.ipynb | 136 ++++++----- lessons/loops_functions/for_loops.ipynb | 215 +++++++++-------- lessons/variables/Comparisons.ipynb | 228 ++++++++++-------- 3 files changed, 314 insertions(+), 265 deletions(-) diff --git a/lessons/loops_functions/conditional_statements.ipynb b/lessons/loops_functions/conditional_statements.ipynb index 1b1221d..ea90b7c 100644 --- a/lessons/loops_functions/conditional_statements.ipynb +++ b/lessons/loops_functions/conditional_statements.ipynb @@ -15,7 +15,8 @@ "source": [ "### Learning Outcomes\n", "\n", - "- To see how we can build statements and scripts that can do different tasks when we give them different inputs." + "- To build statements and scripts that can do different tasks when given different inputs.\n", + "- To use comparison operators in `if` statements." ] }, { @@ -25,10 +26,10 @@ "source": [ "### Prerequisites\n", "\n", - "- Variables\n", - "- Data types\n", - "- Mathematical operators\n", - "- Comparisons and logic" + "- [Variables](../variables/Variable_data_types.ipynb) \n", + "- [Data types](../variables/Variable_data_types.ipynb)\n", + "- [Mathematical operators](../variables/mathematical_operators.ipynb)\n", + "- [Comparisons and logic](../variables/Comparisons.ipynb)" ] }, { @@ -36,7 +37,7 @@ "id": "9510c118", "metadata": {}, "source": [ - "## ``if`` statements" + "## 'if' statements" ] }, { @@ -48,7 +49,7 @@ "\n", "To ensure an action is only executed under a certain condition, we use ``if statements``. These require a specific syntax.\n", "\n", - ">```\n", + ">```text\n", ">if condition:\n", "> what to do if condition is True\n", "\n", @@ -65,25 +66,27 @@ "
      \n", " Using if \n", "\n", - "One way we can use `if` statements is in conjuction with comparisons. \n", + "The main way we can use `if` statements is in conjuction with comparisons. \n", "\n", - ">```Python\n", - ">x = \"CH4\"\n", - ">y = \"CH4\"\n", - ">if x == y:\n", - "> ### This part of the code is indented, and is run if the if statement is true\n", - "> print(\"Yes, these are the same formula\")\n", + "```Python\n", + "x = \"CH4\"\n", + "y = \"CH4\"\n", + "if x == y:\n", + " # This part of the code is indented, and is run if the if statement is true\n", + " print(\"Yes, these are the same formula\")\n", + "```\n", "\n", "Running this code, we get the output `Yes, these are the same formula`. If we were to then change one of the variables:\n", "\n", - ">```Python\n", - ">x = \"CH4\"\n", - ">y = \"NH3\"\n", - ">if x == y:\n", - "> print(\"Yes, these are the same formula\")\n", - ">print(\"The indentation has ended, this code line is always run\")\n", + "```Python\n", + "x = \"CH4\"\n", + "y = \"NH3\"\n", + "if x == y:\n", + " print(\"Yes, these are the same formula\")\n", + "print(\"The indentation has ended, this code line is always run\")\n", + "```\n", "\n", - "The code skips straight to the new line and prints only the second statement. This is because x == y is False. \n", + "The code skips straight to the new line and prints only the second statement. This is because `x == y` is False. \n", "\n", "

      " ] @@ -98,7 +101,7 @@ "\n", "---\n", "\n", - "A nickel surface has workfunction 5.08 eV. If an electron incident on the surface has energy greater or equal to this energy, an electron will be liberated from the surface. Write a conditional ('if') statement to test if a photon of energy 6.17 eV will liberate an electron, and print the energy,\n", + "A nickel surface has workfunction 5.08 eV. If a photon incident on the surface has energy greater or equal to this energy, an electron will be liberated from the surface. Write a conditional ('if') statement to test if a photon of energy 6.17 eV will liberate an electron, and print the energy, and a sentence explaining if an electron has been released.\n", "\n", "
      \n", "
      " @@ -120,7 +123,7 @@ " print(f\"The photon has energy {photon_energy} eV, and will release an electron from the nickel surface\")\n", "```\n", "\n", - "Don't forget the colon after the conditional statement, or to indent the `print()` line.\n", + "Don't forget the colon after the conditional statement, and to indent the `print()` line.\n", "\n", "

      " ] @@ -138,17 +141,17 @@ "id": "5d5db013", "metadata": {}, "source": [ - "What if we want to have multiple different categories and multiple different outcomes? We can use ```if... else``` if we want to do one thing if a statement is true, and then something else for for all other possibilities. \n", + "What if we want to have multiple different categories and multiple different outcomes? We can use ```if... else``` if we want to do one thing if a statement is true, and then something else for all other possibilities. \n", "\n", - ">```\n", + ">```text\n", ">if condition:\n", "> what to do if condition is True\n", ">else:\n", "> what to do if condition is False\n", "\n", - "Alternatively, if we have more than two decisions to make, we can use ```if... elif... else```, with ```elif``` statements acting like other if statements that are checked if they are true. `Elif` is short for 'else if', and if only run if the first condition is not met but a second one is. For example:\n", + "Alternatively, if we have more than two decisions to make, we can use ```if... elif... else```, with ```elif``` statements acting like further 'if' statements that are only checked if all the statements above are False. `Elif` is short for 'else if', and if only run if the condition above is not met. For example:\n", "\n", - ">```\n", + ">```text\n", ">if condition:\n", "> what to do if condition is True\n", ">elif other_condition:\n", @@ -156,8 +159,7 @@ ">else final_condition:\n", "> what to do if all previous conditions are False\n", "\n", - "\n", - "

      Note!
      \n", + "
      Note!
      \n", "You can put in as many conditions as you like, but be careful, conditional statements are strictly ordered. If the first ``if`` block is True, only that code block will run, and further ``elif`` statements are ignored, even if they would be True!" ] }, @@ -171,13 +173,13 @@ "\n", "We can use if...else... when we have only two outcomes we want to test. \n", "\n", - ">```Python\n", - ">x = \"CH4\"\n", - ">if x == \"CH4\":\n", - "> print(\"This compound is methane\")\n", - ">else:\n", - "> print(\"This compound is not methane\")\n", - "\n", + "```Python\n", + "x = \"CH4\"\n", + "if x == \"CH4\":\n", + " print(\"This compound is methane\")\n", + "else:\n", + " print(\"This compound is not methane\")\n", + "```\n", "\n", "

      " ] @@ -194,21 +196,25 @@ "\n", "This is demonstrated in the code below:\n", "\n", - ">```Python\n", - ">wavelength = 4.82e-8\n", - ">\n", - ">if wavelength < 1e-11:\n", - "> print(\"This is a gamma wave\")\n", - ">elif wavelength < 1e-8:\n", - "> print(\"This is an x-ray\")\n", - ">elif wavelength < 3.8e-7:\n", - "> print(\"This is a UV ray\")\n", - ">elif wavelength < 7.4e-7:\n", - "> print(\"This is in the visible range\")\n", - ">elif wavelength < 1e-3:\n", - "> print(\"This is infrared\")\n", - ">else:\n", - "> print(\"This is a radiowave\")\n", + "```Python\n", + "wavelength = 4.82e-8\n", + "\n", + "if wavelength < 1e-11:\n", + " print(\"This is a gamma wave\")\n", + "elif wavelength < 1e-8:\n", + " print(\"This is an x-ray\")\n", + "elif wavelength < 3.8e-7:\n", + " print(\"This is a UV ray\")\n", + "elif wavelength < 7.4e-7:\n", + " print(\"This is in the visible range\")\n", + "elif wavelength < 1e-3:\n", + " print(\"This is infrared\")\n", + "else:\n", + " print(\"This is a radiowave\")\n", + "```\n", + "\n", + "The output is:
      \n", + "`This is a UV ray`\n", "\n", "Even though all comparisons after \"This is a UV ray\" are also True, no other statements are printed. If you wanted to test every single comparison, you would have to use multiple `if` statements. \n", "\n", @@ -225,7 +231,7 @@ "\n", "---\n", "\n", - "Look at each of the code snippets below and for each, predict which print() statements will execute. Write them our yourself and check you were correct.\n", + "Look at each of the code snippets below and for each, predict which print() statements will execute. Write them out yourself and check you were correct.\n", "\n", "a)\n", ">```Python\n", @@ -270,7 +276,7 @@ "source": [ "
      \n", " Click to view answer\n", - "\n", + "
      \n", "a) Only the first print() statement is executed. Even though the `elif` statement is also True, this is not executed because the first condition has already been met. \n", "\n", "b) The first `if` condition is False, so the program moved on to check the `elif` statement. The first `elif` statement is True, so that print() statement is executed, but the second `elif` statement and the `else` statement are ignored. \n", @@ -287,7 +293,7 @@ "source": [ "### Visualising ``if`` statements using flowcharts\n", "\n", - "``if`` statements can be complex, and abstract. They can be visualised using a flowchart. [Further information on flowcharts and how to use them can be found here.](..lessons/solving_problems/flowcharts.ipynb). \n", + "``if`` statements can be complex, and abstract. They can be visualised using a flowchart. Further information on flowcharts and how to use them can be found [here](..lessons/solving_problems/flowcharts.ipynb). \n", "\n", "If statements can be summarised by the following flowchart:\n", "\n", @@ -311,7 +317,7 @@ "source": [ "### Question 1\n", "\n", - "When doing IR spectroscopy, a peak with low % absorbance corresponds to a strong spike on the spectrum. When analysing a particular spectrum, any peaks with absorbance greater than 95% are indistinguishable from background noise, and are ignored. \n", + "When doing IR spectroscopy, a peak with low % transmittance corresponds to a strong spike on the spectrum (the compound strngly absorbing light). When analysing a particular spectrum, any peaks with transmittance greater than 95% are indistinguishable from background noise, and are ignored. \n", "\n", "Write a Python conditional statement that will print whether our peak is background noise or not." ] @@ -326,14 +332,14 @@ "\n", "```Python\n", "peak_frequency = 3200 # cm-1\n", - "peak_absorbance = 97 # %\n", + "peak_transmittance = 97 # %\n", "\n", - "if peak_absorbance >= 95:\n", - " print(f\"The peak at {peak_frequency} cm-1 has an absorbance of {peak_absorbance}% and can be considered background noise.\")\n", - "elif peak_absorbance < 0 or peak_absorbance >100:\n", + "if peak_transmittance >= 95 and peak_transmittance <= 100:\n", + " print(f\"The peak at {peak_frequency} cm-1 has an absorbance of {peak_transmittance}% and can be considered background noise.\")\n", + "elif peak_transmittance < 0 or peak_transmittance >100:\n", " print(\"Peak absorbance cannot be less than zero or greater than 100. There may be an error in your instrument.\")\n", "else:\n", - " print(f\"The peak at {peak_frequency} cm-1 has an absorbance of {peak_absorbance}%\")\n", + " print(f\"The peak at {peak_frequency} cm-1 has an absorbance of {peak_transmittance}%\")\n", "```\n", "\n", "

      " @@ -346,14 +352,14 @@ "source": [ "### Question 2\n", "\n", - "Using your code to calculate the pH of a solution from concentration of H+ ions (example shown below), add a ``if`` statement which will print whether the pH is basic, acidic, or a superacid (pH < 0 ). Test for each of the following values of `H_conc`:\n", + "Using your code to calculate the pH of a solution from concentration of H+ ions (from the [mathematical operators](../variables/mathematical_operators.ipynb) lesson, example shown below), add an ``if`` statement which will print whether the pH is basic, acidic, or a superacid (pH < 0 ). Test for each of the following values of `H_conc`:\n", "\n", "H_conc = 1.0e-10
      \n", "H_conc = 1.0e-7
      \n", "H_conc = 1.0e-3
      \n", "H_conc = 1.0e12
      \n", "\n", - "> ```Python\n", + ">```Python\n", "> # Calculate pH of a solution from [H+]\n", "> H_conc = 1.0e12\n", ">\n", @@ -412,7 +418,8 @@ "source": [ "## Learning Outcomes\n", "\n", - "- How to use ```if...elif...else``` statements to do certain tasks only if certain comparisons or statements are the case." + "- How to use ```if...elif...else``` statements to do certain tasks only if certain comparisons or statements are the case.\n", + "- Utilising comparisons in `if` statements." ] }, { @@ -425,7 +432,8 @@ "- ``if...elif...else`` is used to create code that only executes if a certain condition is met.\n", "- Syntax is important. Use a colon after every `if`/`elif`/`else` condition, and indent any following code that should execute if that condition is met.\n", "- When an `if` statement is True, `elif` and `else` statements directly following it will not execute.\n", - "- Use multiple `if` statements if you want every statement checked. Consider how you can minimise the number of `if` statements to have a more efficient and less cluttered code. " + "- Use multiple `if` statements if you want every statement checked. Consider how you can minimise the number of `if` statements to have a more efficient and less cluttered code. \n", + "- Use [flowcharts](../solving_problems/flowcharts.ipynb) to visualise your conditional statements." ] } ], diff --git a/lessons/loops_functions/for_loops.ipynb b/lessons/loops_functions/for_loops.ipynb index c7352a2..5333bf7 100644 --- a/lessons/loops_functions/for_loops.ipynb +++ b/lessons/loops_functions/for_loops.ipynb @@ -9,12 +9,12 @@ "# The `for` loop\n", "\n", "## Learning Outcomes\n", - "- Iterate using a ``for`` loop\n", - "- Iterate through a list\n", - "- Understand ``zip()`` and ``enumerate`\n", - "- Iterate using the ``range()`` function\n", - "- Use nested loops\n", - "- Understand ``continue`` and ``break``\n", + "- Iterate using a ``for`` loop.\n", + "- Iterate through a list.\n", + "- Understand ``zip()`` and ``enumerate`.\n", + "- Iterate using the ``range()`` function.\n", + "- Use nested loops.\n", + "- Understand ``continue`` and ``break``.\n", "\n", "## Prerequisites:\n", "- [Variables](/lessons/variables/Variable_data_types.ipynb)\n", @@ -39,10 +39,10 @@ "> do action\n", "\n", "- `for` indicates that we will begin a loop.\n", - "- `number` is a new variable we are defining, describing the items within the list of numbers. For each loop, it will redefine to refer to the next item in the list.\n", - "- `in list_of_numbers` indicates that we want to repeat the action in the loop once per element in the list `list_of_numbers`.\n", + "- `number` is a new variable we are defining, describing the items within the list of numbers. For each loop, it will automatically redefine to refer to the next item in the list.\n", + "- `in list_of_numbers` indicates that we want to repeat the action in the loop once per item in the list `list_of_numbers`.\n", "- `:` signals the beginning of the loop.\n", - "- The action within the loop are indented with the ```` key. All lines of code indented just below the ``for`` line gets repeated within the loop. When the code is no longer indented, the loop is over. You can write code of any length within a ``for `` loop as long as you respect its indentation.\n", + "- The actions within the loop are indented with the ```` key. All lines of code indented just below the ``for`` line gets repeated within the loop. When the code is no longer indented, the loop is over. You can write code of any length within a ``for `` loop as long as you respect its indentation.\n", "\n", "Here is an example:" ] @@ -81,10 +81,10 @@ "\n", "- `for` indicates that we will begin a loop.\n", "- `mol` is a new variable we are defining, describing the items within the list of molecules.\n", - "- `in molecules` indicates that we want to do repeat the operations in the loop once per element in the list `molecules`.\n", + "- `in molecules` indicates that we want to do repeat the operations in the loop once per molecule in the list `molecules`.\n", "- `:` signals the beginning of the loop.\n", "\n", - "We print the contents of the `mol` variable to the screen. \n", + "We print the contents of the `mol` variable to the screen:\n", "\n", "`print(mol)`\n", "\n", @@ -160,18 +160,19 @@ "
      \n", " Iterating using nested lists\n", "\n", - "You can also iterate over nested lists, however it is important to keep in mind that the nested list itself is the item you are referring to. You can refer to items within the nested list by using square brackets. Try out this code:\n", + "You can also iterate over nested lists, however it is important to keep in mind that the nested list itself is the item you are referring to. You can refer to items within the nested list by using square brackets, or nested loops (more on that later). Try out this code:\n", "\n", - ">```Python\n", - ">bimolecular_atom_masses = [[1.008, 1.008], [12.011, 15.999], [15.999, 15.999]]\n", - ">molecule_mass = []\n", - ">\n", - ">for molecule in bimolecular_atom_masses:\n", - "> total_mass = molecule[0] + molecule[1]\n", - "> print(total_mass)\n", - "> molecule_mass.append(total_mass)\n", - ">\n", - ">print(molecule_mass)\n", + "```Python\n", + "bimolecular_atom_masses = [[1.008, 1.008], [12.011, 15.999], [15.999, 15.999]]\n", + "molecule_mass = []\n", + "\n", + "for molecule in bimolecular_atom_masses:\n", + " total_mass = molecule[0] + molecule[1]\n", + " print(total_mass)\n", + " molecule_mass.append(total_mass)\n", + "\n", + "print(molecule_mass)\n", + "```\n", "\n", "In this program, each nested list in ``bimolecular_atom_masses`` is assigned the temporary variable name ``molecule``. To refer to an item within this nested list, you must refer to it as ``molecule[0]`` or ``molecule[1]``, where the square bracketted number refers to the item's position within the list. Remember that Python is zero-indexed, so the first item in a list is called '0', the second item is called '1' and so on. \n", "\n", @@ -212,13 +213,13 @@ "metadata": {}, "source": [ "
      \n", - "
      Task 1: Write a basic loop \n", + "
      Exercise 1: Write a basic loop \n", "\n", "---\n", "\n", "Write a code that prints out each item in the following list, using a ``for`` loop. Then answer the following True/False questions.\n", "\n", - " gas_list = ['Nitrogen', 'Oxygen', 'Fluorine'] \n", + " gas_list = ['Nitrogen', 'Oxygen', 'Neon'] \n", "\n", "1. The loop will print the name of each gas on the same line. \n", "2. The variable ``gas_list`` does not change on each loop.\n", @@ -236,10 +237,11 @@ "\n", "Here is an example of the code you should have written:\n", "\n", - ">``` Python\n", - ">gas_list = ['Nitrogen', 'Oxygen', 'Fluorine']\n", - ">for gas in gas_list:\n", - "> print(gas)\n", + "``` Python\n", + "gas_list = ['Nitrogen', 'Oxygen', 'Neon']\n", + "for gas in gas_list:\n", + " print(gas)\n", + "```\n", "\n", "1. False. Each gas name will be printed on a separate line.\n", "2. True. The variable ``gas_list`` is the same throughout the loop.\n", @@ -253,13 +255,13 @@ "metadata": {}, "source": [ "
      \n", - "
      Task 2: Understanding a Loop \n", + "
      Exercise 2: Understanding a Loop \n", "\n", "---\n", "\n", "In the lab you are making methyl benzoate using the scheme below, starting with 3 g of benzoic acid. Five scientists repeat the reaction, and get the following yields of product: \n", "\n", - "2.5 g, 2.7 g, 3.1 g, 1.6 g, 4 g. \n", + "Product yields: 2.5 g, 2.7 g, 3.1 g, 1.6 g, 4 g. \n", "\n", "\"The\n", "\n", @@ -268,6 +270,8 @@ "- Percentage yield is between 50 % and 100 % - print that the yield is good. \n", "- Percentage yield is over 100% - print a statement that the product is likely impure.\n", "\n", + "The theoretical yield is equal to the starting mass ÷ 122, then × 136.\n", + "\n", "

      " ] }, @@ -278,21 +282,24 @@ "
      \n", " Click to view answer\n", "\n", - ">```Python\n", - ">product_mass_list = [2.5,2.7,3.1,1.6,4]\n", - ">starting_mass = 3 # grams\n", - ">\n", - ">theoretical_yield = (starting_mass/122)*136\n", - ">\n", - ">for product_mass in product_mass_list:\n", - "> percent_yield = (product_mass / theoretical_yield) * 100\n", - "> print(f\"Percent yield: {percent_yield:.0f}%\")\n", - "> if percent_yield < 50:\n", - "> print(\"Poor yield\")\n", - "> elif percent_yield >= 50 and percent_yield < 100:\n", - "> print(\"Good yield\")\n", - "> elif percent_yield >= 100:\n", - "> print(\"Likely Impure\")\n", + "```Python\n", + "product_mass_list = [2.5,2.7,3.1,1.6,4]\n", + "starting_mass = 3 # grams\n", + "\n", + "theoretical_yield = (starting_mass/122)*136\n", + "\n", + "for product_mass in product_mass_list:\n", + " percent_yield = (product_mass / theoretical_yield) * 100\n", + " print(f\"Percent yield: {percent_yield:.0f}%\")\n", + " if percent_yield < 50:\n", + " print(\"Poor yield\")\n", + " elif percent_yield >= 50 and percent_yield < 100:\n", + " print(\"Good yield\")\n", + " elif percent_yield >= 100:\n", + " print(\"Likely Impure\")\n", + "```\n", + "\n", + "Note the use of `:.0f` to give the percentage to no decimal places.\n", "\n", "

      " ] @@ -302,7 +309,7 @@ "metadata": {}, "source": [ "
      \n", - "
      Task 3: Understanding a Loop \n", + "
      Exercise 3: Debugging a loop\n", "\n", "---\n", "\n", @@ -331,12 +338,14 @@ "
      \n", " Click to view answer\n", "\n", - "Remember that the items that you want to do each time you go around the for loop need to be indented. In the example the print statement is not indented and so is not executed each time, but only one the loop is finished. You can fix the code just by indenting the print statement with the tab key.\n", - ">```Python\n", - ">temperature_measurements = [27.3, 28.1, 26.9, 27.5, 28.0]\n", - ">for temperature_C in temperature_measurements:\n", - "> temperature_K = temperature_C + 273.15\n", - "> print(f\"Temperature: {temperature_K}Β°C\")\n", + "Remember that code you want to do each time the for loop repeats need to be indented. In the example the print statement is not indented and so is not executed each time, but only once when the loop is finished. You can fix the code just by indenting the print statement with the tab key.\n", + "\n", + "```Python\n", + "temperature_measurements = [27.3, 28.1, 26.9, 27.5, 28.0]\n", + "for temperature_C in temperature_measurements:\n", + " temperature_K = temperature_C + 273.15\n", + " print(f\"Temperature: {temperature_K}Β°C\")\n", + "```\n", "\n", "

      " ] @@ -358,7 +367,7 @@ "The first is ``zip()``. This function takes multiple lists and associates them element-wise. Elements from each list can then be called. It is like being able to call multiple lists within one ``for`` loop.\n", "\n", ">```Python\n", - ">atom_names = [\"H\", \"He,\", \"Li\", \"Be\"]\n", + ">atom_names = [\"H\", \"He\", \"Li\", \"Be\"]\n", ">atom_masses = [1.008, 4.003, 6.94, 9.012]\n", ">\n", ">for name, mass in zip(atom_names, atom_masses):\n", @@ -366,7 +375,7 @@ "\n", "The result is:
      \n", "The mass of H is 1.008
      \n", - "The mass of He, is 4.003
      \n", + "The mass of He is 4.003
      \n", "The mass of Li is 6.94
      \n", "The mass of Be is 9.012
      \n", "\n", @@ -380,7 +389,7 @@ "Here is an example:\n", "\n", ">```Python\n", - ">atom_names = [\"H\",\"He\", \"Li\",\"Be\"]\n", + ">atom_names = [\"H\", \"He\", \"Li\", \"Be\"]\n", ">\n", ">for index, atom in enumerate(atom_names):\n", "> print(atom, \"is at position\" , index, \"in the list\")\n", @@ -406,18 +415,20 @@ "\n", "Run the code below.\n", "\n", - ">```Python\n", - ">molecules = [\"H2O\", \"CO2\", \"HCN\"]\n", - ">masses = [[1.008, 1.008, 12.011] , [12.011, 15.999, 15.999], [1.008, 12.011, 14.007]]\n", - ">\n", - "># Assigns the temporary variable name 'molec' to each string in the list 'molecules'\n", - "># Assigns the temporary variable name 'mass' to each list within the list 'masses'\n", - ">for molec, mass in zip(molecules, masses):\n", - "> # Use square brackets to access items in the nested list\n", - "> molecular_mass = mass[0] + mass[1] + mass[2]\n", - "> print(f\"Molecular mass of {molec} is {molecular_mass:.3f}\")\n", - ">\n", - ">print(\"This is the end of the loop.\")\n", + "```Python\n", + "molecules = [\"H2O\", \"CO2\", \"HCN\"]\n", + "masses = [[1.008, 1.008, 12.011] , [12.011, 15.999, 15.999], [1.008, 12.011, 14.007]]\n", + "\n", + "# Assigns the temporary variable name 'molec' to each string in the list 'molecules'\n", + "# Assigns the temporary variable name 'mass' to each list within the list 'masses'\n", + "for mol, mass in zip(molecules, masses):\n", + " \n", + " # Use square brackets to access items in the nested list\n", + " molecular_mass = mass[0] + mass[1] + mass[2]\n", + " print(f\"Molecular mass of {mol} is {molecular_mass:.3f}\")\n", + "\n", + "print(\"This is the end of the loop.\")\n", + "```\n", "\n", "You will see that for each string within the list `molecules` and for each list within the list `masses`, we can call both items at the same time. For nested lists, we can call entries within the nested lists using square brackets. Remember that due to Python's zero-indexing, the first item in the nested list has to be called with the number '0' and so on. \n", "\n", @@ -433,13 +444,14 @@ "\n", "You can zip more than just two lists together. Copy out and run this code:\n", "\n", - ">```Python\n", - ">atom_names = [\"H\", \"He,\", \"Li\", \"Be\"]\n", - ">atom_masses = [1.008, 4.003, 6.94, 9.012]\n", - ">atom_proton_number = [1, 2, 3, 4]\n", - ">\n", - ">for name, mass, proton_number in zip(atom_names, atom_masses, atom_proton_number):\n", - "> print(f\"The mass of {name} is {mass}. It has {proton_number} protons.\")\n", + "```Python\n", + "atom_names = [\"H\", \"He,\", \"Li\", \"Be\"]\n", + "atom_masses = [1.008, 4.003, 6.94, 9.012]\n", + "atom_proton_number = [1, 2, 3, 4]\n", + "\n", + "for name, mass, proton_number in zip(atom_names, atom_masses, atom_proton_number):\n", + " print(f\"The mass of {name} is {mass}. It has {proton_number} protons.\")\n", + "```\n", "\n", "Here, we have associated 3 lists element-wise, and are able to refer to all three temporary variables within the loop.\n", "\n", @@ -455,18 +467,19 @@ "\n", "You have a very long list of amino acids, and you want to find the position of the amino acid \"Proline\".\n", "\n", - ">```Python\n", - ">natural_amino_acids = [\"Alanine\", \"Arginine\", \"Asparagine\", \"Aspartic acid\", \"Cysteine\", \"Glutamic acid\", \"Glutamine\", \"Glycine\", \"Histidine\", \"Isoleucine\", \"Leucine\", \"Lysine\", \"Methionine\", \"Phenylalanine\", \"Proline\", \"Serine\", \"Threonine\", \"Tryptophan\", \"Tyrosine\", \"Valine\"]\n", - ">\n", - ">for index, amino_acid in enumerate(natural_amino_acids):\n", - "> if amino_acid == \"Proline\":\n", - "> print(f\"Proline is at position {index} in the list.\")\n", + "```Python\n", + "natural_amino_acids = [\"Alanine\", \"Arginine\", \"Asparagine\", \"Aspartic acid\", \"Cysteine\", \"Glutamic acid\", \"Glutamine\", \"Glycine\", \"Histidine\", \"Isoleucine\", \"Leucine\", \"Lysine\", \"Methionine\", \"Phenylalanine\", \"Proline\", \"Serine\", \"Threonine\", \"Tryptophan\", \"Tyrosine\", \"Valine\"]\n", + "\n", + "for index, amino_acid in enumerate(natural_amino_acids):\n", + " if amino_acid == \"Proline\":\n", + " print(f\"Proline is at position {index} in the list.\")\n", + "```\n", "\n", "The code will output: \n", "\n", " Proline is at position 14 in the list \n", "\n", - "If you then had another list of corresponding masses, you could then identify which mass belonged to proline and set it as a useful variable. For example, from a the list of masses called ``amino_acid_masses`` you could retrieve and define the variable ``mass_proline = amino_acid_masses[14]``.\n", + "If you had another list of corresponding masses, you could then identify which mass belonged to proline and set it as a useful variable. For example, from a the list of masses called ``amino_acid_masses`` you could retrieve and define the variable ``mass_proline = amino_acid_masses[14]``.\n", "\n", "

      " ] @@ -534,25 +547,21 @@ "source": [ "## Iterating using ``range()``\n", "\n", - "Instead of using lists we can also iterate using the built-in Python function ``range()``. Instead of iterating through a list, this allows you to iterate a loop a set number of times, from 0 upwards. We often use `i` or `x` as the variable representing the number in the range.\n", + "Instead of using lists we can also iterate using the built-in Python function ``range()``. This allows you to iterate a loop a set number of times, from 0 upwards. We often use `i` or `x` as the variable representing the number in the range.\n", + "\n", + "Try running the following piece of code:\n", + "\n", + ">```Python\n", + ">for i in range(3):\n", + "> print(i)\n", + "\n", + "It will print the following:\n", + "```text\n", + "0\n", + "1\n", + "2\n", + "```\n", "\n", - "Try running the following piece of code:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for i in range(3):\n", - " print(i)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ "You will notice it has printed ``0``,``1``,``2``, but not any further than that. This is because Python uses something called 0-indexing, which has been mentioned in the variable types lesson. Python will print 3 numbers starting from 0. This means if you want to print up to and including the number 3, you have to put ``range(4)``.\n", "\n", "The ``range()`` function is also able to count from one specified number to another specified number in integer jumps. When we are providing more than one modifier to the function, we must input them in the following way:\n", @@ -579,14 +588,14 @@ " print(\"Count: \", x)\n", "```\n", "\n", - "The code above will first print `Count: 2`, and then print every integer number up to and including `Count: 9`. It will not print the number 10. This is because of Python's zero-indexing. It does print 8 numbers overall. \n", + "The code above will first print `Count: 2`, and then print every integer number up to and including `Count: 9`. It will not print the number 10. This is because of Python's zero-indexing. It prints 8 numbers overall. \n", "\n", "```Python\n", "for x in range (10,-1,-1):\n", " print(\"Count: \", x)\n", "```\n", "\n", - "The code above will first pring `Code: 10`, and then count backwards in integer numbers down to `Count: 0`. It will not print the number -1. \n", + "The code above will first print `Code: 10`, and then count backwards in integer numbers down to `Count: 0`. It will not print the number -1. \n", "\n", "```Python\n", "for x in range(3,9,2):\n", @@ -595,13 +604,13 @@ "\n", "This code will print the following:\n", "\n", - "```\n", + "```text\n", "Count in twos: 3\n", "Count in twos: 5\n", "Count in twos: 7\n", "```\n", "\n", - "It starts ar the number 3 and counts upwards in twos. The final number we have given in in the code is the number 9, however because of Python's zero-indexing, this really corresponds to the number 8, and so the loop stops after only 3 iterations and does not print 'CountL 9'.\n", + "It starts at the number 3 and counts upwards in twos. The final number we have given in in the code is the number 9, however because of Python's zero-indexing, this really corresponds to the number 8, and so the loop stops after only three iterations and does not print 'Count: 9'.\n", "\n", "

      " ] diff --git a/lessons/variables/Comparisons.ipynb b/lessons/variables/Comparisons.ipynb index aa38a78..a939828 100644 --- a/lessons/variables/Comparisons.ipynb +++ b/lessons/variables/Comparisons.ipynb @@ -91,9 +91,9 @@ "\n", "Although both the greater than (\">\") and less than (\"<\") mathematical operations are identical to those used in standard mathematical notation, the greater than or equal to operation (\"β‰₯\") is written with two characters, ```>=```. This is the same for the is not equal to (\"≠\") symbol, written instead as `!=`, or the is equal to symbol, written as `==`.\n", "\n", - "Be especially careful with `==`. We know from our understanding of [variables](Variable_data_types.ipynb) that ```=``` is used in python to assign values to variable names, and so we cannot use it here, hence using double equal signs.\n", + "Be especially careful with `==`. We know from our understanding of [variables](Variable_data_types.ipynb) that ```=``` is used in Python to assign values to variable names, and so we cannot use it here, hence using double equal signs.\n", "\n", - "Comparison operators work for both numerical [data types](Variable_data_types.ipynb) in Python - integers and floats. " + "Comparison operators work for both numerical [data types](Variable_data_types.ipynb) in Python (integers and floats), but also work for some non-numerical data types (such as strings and lists). " ] }, { @@ -104,20 +104,23 @@ "
      \n", " Comparing numbers: floats and integers\n", "\n", - "The most basic use for comparisons is numerically, using integers or floats. You can compare integer data types with float data types, but not with strings. \n", + "The most basic use for comparisons is numerically, using integers or floats. You can compare integers to floats. \n", "\n", - "> ```Python\n", - "> 4 < 2\n", + "```Python\n", + "4 < 2\n", + "```\n", "\n", "Returns ``False``\n", "\n", - "> ```Python\n", - "> 5.1 >= 3.6 \n", + "```Python\n", + "5.1 >= 3.6 \n", + "```\n", "\n", "Returns ``True``\n", "\n", - ">```Python\n", - "> 4 == 4.0\n", + "```Python\n", + "4 == 4.0\n", + "``` \n", "\n", "Returns ``True``\n", "\n", @@ -125,20 +128,22 @@ "\n", "If we have a very long piece of code where we are doing lots of maths, we probably won't know the exact value stored inside every variable, especially if its a long float, so instead we can refer to it by its variable name.\n", "\n", - ">```Python\n", - ">num_1 = 53.09127281\n", - ">\n", - ">num_1 > 10\n", + "```Python\n", + "num_1 = 53.09127281\n", + "\n", + "num_1 > 10\n", + "```\n", "\n", "Returns ``True``\n", "\n", - ">```Python\n", - ">num_1 = 53.09127281\n", - ">num_2 = 53.0928382\n", - ">\n", - ">num_1 == num_2\n", + "```Python\n", + "num_1 = 53.09127281\n", + "num_2 = 53.09283821\n", "\n", - "Returns ``True``\n", + "num_1 == num_2\n", + "```\n", + "\n", + "Returns ``False``\n", "\n", "

      " ] @@ -153,32 +158,37 @@ "\n", "As well as comparing numbers, you can use comparison operators on strings and lists.\n", "\n", - "Note that all parts of the string (including order of characters) and all parts of a list (including the order of elements and data type) need to be identical for the ```==``` operation to return 'True'. \n", + "Note that all parts of the string (including order of characters) and all parts of a list (including the order of elements and data type) need to be identical for the ```==``` operation to return True. \n", "\n", "The operators `>`, `<`, `>=`, and `<=` comment only on the length of the list.\n", "\n", - "> ```Python\n", - "> \"CH4\" == \"CH4\"\n", + "```Python\n", + "\"CH4\" == \"CH4\"\n", + "```\n", "\n", - "Returns ``True``\n", + "Returns ``True``.\n", "\n", - ">```Python\n", - "> \"NH3\" == \"H3N\"\n", + "```Python\n", + "\"NH3\" == \"H3N\"\n", + "```\n", "\n", "Returns ``False``. The numerals are not in the same order.\n", "\n", - "> ```Python\n", - "> [\"2\", 3, 4] == [\"2\", 3, 4.0]\n", + "```Python\n", + "[\"2\", 3, 4] == [\"2\", 3, 4.0]\n", + "```\n", "\n", "Returns ``True``. All items in the two lists are equivalent.\n", "\n", - ">```Python\n", - "> [\"helium\" , \"neon\" , \"argon\"] == [\"helium\" , \"argon\" , \"neon\"]\n", + "```Python\n", + "[\"helium\" , \"neon\" , \"argon\"] == [\"helium\" , \"argon\" , \"neon\"]\n", + "```\n", "\n", "Returns ``False``. The items in the lists are in a different order.\n", "\n", - ">```Python\n", - "> [\"helium\" , \"neon\" , \"argon\"] == [\"helium\",\"neon\",\"argon\"]\n", + "```Python\n", + "[\"helium\" , \"neon\" , \"argon\"] == [\"helium\",\"neon\",\"argon\"]\n", + "```\n", "\n", "Returns ``True``. The items in the lists are the same, and in the same order.\n", "\n", @@ -195,13 +205,15 @@ "\n", "Most different data types, even if they have the same contents, will always yield a ``==`` comparison of False. An exception is floats and integers, which can be compared.\n", "\n", - ">```Python\n", - ">\"5\" == 5\n", + "```Python\n", + "\"5\" == 5\n", + "```\n", "\n", "Returns ``False``. They are two different data types. The first is a string, the second is an integer. \n", "\n", - ">```Python\n", - ">5 == 5.0\n", + "```Python\n", + "5 == 5.0\n", + "```\n", "\n", "Returns ``True``. Floats and integers can be compared.\n", "\n", @@ -217,20 +229,23 @@ "
      \n", " Identifying identical objects using is\n", "\n", - "The comparitor `==` identifies if two objects have the same contents (in the same order), but what if we wanted to distinguish if they are alsso exactly the same object (i.e. rather than just looking the same, they are actually the same 'behind the scenes')? For this, we can use ```is```:\n", + "The comparitor `==` identifies if two objects have the same contents (in the same order), but what if we wanted to distinguish if they are also exactly the same object (i.e. rather than just looking the same, they are actually the same 'behind the scenes')? For this, we can use ```is```:\n", "\n", - "> ```Python\n", - ">x = [\"N\", \"H\", 3] \n", - ">y = [\"N\", \"H\", 3]\n", - ">x is y\n", + "```Python\n", + "x = [\"N\", \"H\", 3] \n", + "y = [\"N\", \"H\", 3]\n", + "x is y\n", + "```\n", "\n", "Returns ``False``. Although these two lists contain the same chemical formula in the same order, they have been assigned to two different variables, and are currently two separate instances of variables that happen to look the same. They are not the same object according to Python. \n", "\n", "However:\n", "\n", - ">```Python\n", - ">x = y\n", - ">x is y\n", + "```Python\n", + "y = [\"N\", \"H\", 3]\n", + "x = y\n", + "x is y\n", + "```\n", "\n", "Returns ``True``. We have specifically reassigned the variable x to the value of y, and so now the ``is`` comparison is True. \n", "\n", @@ -247,14 +262,16 @@ "\n", "``in`` has two uses - you will see it come back in another way when we do [for loops](../loops_functions/For_Loop_Lesson.ipynb). In this context, ``in`` checks if a certain object is contained within a string or list.\n", "\n", - ">```Python\n", - "> \"O\" in \"H2O\"\n", + "```Python\n", + "\"O\" in \"H2O\"\n", + "```\n", "\n", "Returns ```True```\n", "\n", - ">```Python\n", - "> masses = [1.008, 12.011, 15.999]\n", - "> 14.007 in masses\n", + "```Python\n", + "masses = [1.008, 12.011, 15.999]\n", + "14.007 in masses\n", + "```\n", "\n", "Returns ``False``\n", "\n", @@ -271,17 +288,19 @@ "\n", "You can also chain together these comparisons, but you need to be careful you don't get confused!\n", "\n", - ">```Python\n", - "> a = 1\n", - "> b = 2\n", - "> c = 3\n", - ">\n", - "> a != b != c\n", + "```Python\n", + "a = 1\n", + "b = 2\n", + "c = 3\n", + "\n", + "a != b != c\n", + "```\n", "\n", "Returns ``True`` because none of those values are the same. However, it is NOT checking the comparison between a and c. You could run the following:\n", "\n", - ">```Python\n", - ">3 != 2 != 3\n", + "```Python\n", + "3 != 2 != 3\n", + "```\n", "\n", "Which would return ``True``, because it is only comparing the adjacent numbers. \n", "\n", @@ -298,7 +317,7 @@ "\n", "---\n", "\n", - "In the comparisons in the code below, replace each -- with different comparison operators to get a True output.

      \n", + "In the comparisons in the code below, replace each dash with different comparison operators to get a True output.
      \n", "\n", ">```Python\n", ">num_nitrogen = 7\n", @@ -371,8 +390,9 @@ " Click to view answer\n", "\n", "1. The two values are not the same. You can check this using:\n", - " >```Python\n", - " > rydberg_1 == rydberg_2\n", + " ```Python\n", + " rydberg_1 == rydberg_2\n", + " ```\n", " Which will return ``False``.\n", "\n", "2. ``rydberg_2`` is larger. You can test this by using either ``<`` or ``>``.\n", @@ -429,17 +449,19 @@ "\n", "When considering ``a and b``, where a and b are individual comparisons, a and b must both be True for the overall result to be True. \n", "\n", - "> ```Python\n", - "> z = 2\n", - ">\n", - "> z < 3 and z > 1\n", + "```Python\n", + "z = 2\n", + "\n", + "z < 3 and z > 1\n", + "```\n", "\n", "The first part of the statement ``z < 3`` is True, and the second part ``z > 1`` is also True. Since both parts are True, the overall result will output ``True``.\n", "\n", "However, if the test was instead:\n", "\n", - "> ```Python \n", - ">z < 3 and z != 2\n", + "```Python \n", + "z < 3 and z != 2\n", + "```\n", "\n", "The output would be ``False``, since the second statement ``z != 2`` is now False. A True and a False outputs a False. \n", "\n", @@ -458,24 +480,27 @@ "\n", "When considering ``a or b``, where a and b are individual comparisons, only one of the two must be True for the whole statement to be True. If neither are True, the whole statement will be False.\n", "\n", - ">```Python\n", - "> z = 2\n", - "> \n", - "> z < 3 or z > 0.1\n", + "```Python\n", + "z = 2\n", + " \n", + "z < 3 or z > 0.1\n", + "```\n", "\n", "Returns ``True`` as both statements are True. \n", "\n", "The test:\n", "\n", - "> ```Python\n", - "> z < 3 or z !=2\n", + "```Python\n", + "z < 3 or z !=2\n", + "```\n", "\n", - "Also returns ``True``, even though the second statement is False. Once one of the two statements needs to be True to return True. \n", + "Also returns ``True``, even though the second statement is False. Only one of the two statements needs to be True to return True. \n", "\n", "In order to get an output ``False``, both statements must be False:\n", "\n", - ">```Python\n", - ">z > 3 or z != 2\n", + "```Python\n", + "z > 3 or z != 2\n", + "```\n", "\n", "

      \n", "\n" @@ -489,30 +514,34 @@ "
      \n", " Using not\n", "\n", - "Finally, not is slightly different. It should be used before a comparison statement, i.e. (```not a == 2```), and 'inverts' the True or False behaviour. If a statement was True, `not` will make it False, or vice versa.\n", + "Finally, `not` is slightly different. It should be used before a comparison statement, i.e. (```not a == 2```), and 'inverts' the True or False behaviour. If a statement was True, `not` will make it False, or vice versa.\n", "\n", - ">```Python\n", - "> not True\n", + "```Python\n", + "not True\n", + "```\n", "\n", "Returns ``False``, and vice versa.\n", "\n", - "> ```Python\n", - ">z = 2\n", - ">not z <= 2\n", + "```Python\n", + "z = 2\n", + "not z <= 2\n", + "```\n", "\n", "Returns ``False``, as the comparison is True.\n", "\n", - ">```Python\n", - ">z = 2\n", - ">not z > 3 or z != 2\n", + "```Python\n", + "z = 2\n", + "not z > 3 or z != 2\n", + "```\n", "\n", "Returns ``True``, as the output from the ``or`` statement is False. \n", "\n", - ">```Python\n", - "># Checking a perovskite does not contain chromium\n", - ">perovskite = \"CH3NH3PbBr3\"\n", - ">\n", - ">\"Cr\" not in perovskite\n", + "```Python\n", + "# Checking a perovskite does not contain chromium\n", + "perovskite = \"CH3NH3PbBr3\"\n", + "\n", + "\"Cr\" not in perovskite\n", + "```\n", "\n", "Returns ``True``.\n", "\n", @@ -529,12 +558,15 @@ "\n", "Watch out! Python evaluates operators according to a strict order: maths and comparison operators first, then logical operators (and, or, not). If you are getting error messages, try bracketing your 'not' and other logical operators to give them precedence. Try the following lines with and without the brackets and try to understand the order of operations.\n", "\n", - ">```Python\n", - "> False == (not True)\n", - ">\n", - "> (True or False) == False\n", - ">\n", - "> True == (True and False) == False\n", + "```Python\n", + "False == (not True)\n", + "\n", + "(True or False) == False\n", + "\n", + "True == (True and False) == False\n", + "```\n", + "\n", + "Make sure to use round brackets when clarifying the order of operations. Other types of brackets are used to define other data types and may result in errors.\n", "\n", "

      " ] @@ -578,7 +610,7 @@ "id": "0a5899ad-5b4a-439b-bd47-df83a6d37136", "metadata": {}, "source": [ - "## Practice Questions" + "## Further Practice" ] }, { @@ -586,7 +618,7 @@ "id": "64410c65", "metadata": {}, "source": [ - "### Practice 1" + "### Question 1" ] }, { @@ -618,7 +650,7 @@ "\n", "``a < b`` is True. ``b <= c`` is True. Therefore ``a < b <= c`` is True. \n", "\n", - "The variable `d` is set as `a < c`. `a < c` is True, therefore `d = True`. Therefore, in the second statement, since d is True, the comparison `d == False ` is False.\n", + "The variable `d` is set as `a < c`. `a < c` is True, therefore `d = True`. Therefore, in the second statement, since d is True, the comparison `d == False` is False.\n", "\n", "When using an `and` statement, both statements must be True to return True. Since the first statement is True and the second is False, the overall output is `False`.\n", "\n", @@ -670,7 +702,7 @@ "| not | If the Boolean value of the instance is True, the program will return False. Essentially inverts the logic. | ``not y`` |\n", "\n", "- You can chain statements together, but be careful to work in order and obey the order Python evaluates operators.\n", - "- Python evaluates operators in the order: maths and comparisons, then logic. You can clarify your intentions by using brackets. " + "- Python evaluates operators in the order: maths and comparisons, then logic. You can clarify your intentions by using round brackets. " ] } ], From e7ed178bf061d688f6b07eafd6f7bfefcc4721ea Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Fri, 8 Aug 2025 12:41:10 +0100 Subject: [PATCH 40/94] Fixed headers --- lessons/files/files_file_types.ipynb | 4 ++-- lessons/loops_functions/conditional_statements.ipynb | 4 ++-- lessons/variables/Comparisons.ipynb | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lessons/files/files_file_types.ipynb b/lessons/files/files_file_types.ipynb index 5bb08e7..b4d0196 100644 --- a/lessons/files/files_file_types.ipynb +++ b/lessons/files/files_file_types.ipynb @@ -13,7 +13,7 @@ "id": "e6f7959c", "metadata": {}, "source": [ - "### Prerequisites\n", + "## Prerequisites\n", "- None (?)" ] }, @@ -22,7 +22,7 @@ "id": "f3748d53", "metadata": {}, "source": [ - "### Learning Outcomes\n", + "## Learning Outcomes\n", "- File Types\n", "- Organising your files" ] diff --git a/lessons/loops_functions/conditional_statements.ipynb b/lessons/loops_functions/conditional_statements.ipynb index ea90b7c..412db23 100644 --- a/lessons/loops_functions/conditional_statements.ipynb +++ b/lessons/loops_functions/conditional_statements.ipynb @@ -13,7 +13,7 @@ "id": "87bc9c8a", "metadata": {}, "source": [ - "### Learning Outcomes\n", + "## Learning Outcomes\n", "\n", "- To build statements and scripts that can do different tasks when given different inputs.\n", "- To use comparison operators in `if` statements." @@ -24,7 +24,7 @@ "id": "3ad88990", "metadata": {}, "source": [ - "### Prerequisites\n", + "## Prerequisites\n", "\n", "- [Variables](../variables/Variable_data_types.ipynb) \n", "- [Data types](../variables/Variable_data_types.ipynb)\n", diff --git a/lessons/variables/Comparisons.ipynb b/lessons/variables/Comparisons.ipynb index a939828..0aa6fc4 100644 --- a/lessons/variables/Comparisons.ipynb +++ b/lessons/variables/Comparisons.ipynb @@ -13,7 +13,7 @@ "id": "63b3ed50-5670-4fcb-9cd4-81e0a50b650e", "metadata": {}, "source": [ - "### Learning Objectives" + "## Learning Objectives" ] }, { @@ -30,7 +30,7 @@ "id": "27111d44-d8ba-4393-bb63-7a1521a4a956", "metadata": {}, "source": [ - "### Prerequisites" + "## Prerequisites" ] }, { From 62c5a69acf0fd8fcf5a4c5d9b99f1714deb5c02c Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Fri, 8 Aug 2025 12:45:34 +0100 Subject: [PATCH 41/94] updated image for code in anaconda --- lessons/basics/images/SVG/navigator_code.svg | 72 ++++++++++++++++++ .../basics/images/SVG/navigator_spyder.svg | 15 ++++ lessons/basics/images/navigator_code.png | Bin 108707 -> 122477 bytes lessons/basics/write_run_python.md | 5 +- 4 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 lessons/basics/images/SVG/navigator_code.svg create mode 100644 lessons/basics/images/SVG/navigator_spyder.svg diff --git a/lessons/basics/images/SVG/navigator_code.svg b/lessons/basics/images/SVG/navigator_code.svg new file mode 100644 index 0000000..caf92cf --- /dev/null +++ b/lessons/basics/images/SVG/navigator_code.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + diff --git a/lessons/basics/images/SVG/navigator_spyder.svg b/lessons/basics/images/SVG/navigator_spyder.svg new file mode 100644 index 0000000..1ec6a9c --- /dev/null +++ b/lessons/basics/images/SVG/navigator_spyder.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/lessons/basics/images/navigator_code.png b/lessons/basics/images/navigator_code.png index 1b4c2d4b34500a1787f9d3a34897a14ee02cd6f0..cb92eacf012855aeb148d656793d968d1b43ca5e 100644 GIT binary patch literal 122477 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%0A|%su29(;RB!Xc^D#Wp*K@FjAr^m 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
      fST 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ℜXliy~6 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 LhR`h4u!;OXF$rVV diff --git a/lessons/basics/write_run_python.md b/lessons/basics/write_run_python.md index 620ac17..498678e 100755 --- a/lessons/basics/write_run_python.md +++ b/lessons/basics/write_run_python.md @@ -173,9 +173,12 @@ If using Anaconda **Search for the program _Anaconda Navigator_ and open it**. A ![Window showing six logos for different programs. A red arrow points to the "Launch" button below the VS Code logo.](images/navigator_code.png) Scroll until you find the right button and **press the "Launch" under VS code.** + Otherwise find the VScode launch button on your desktop or program list and **click it.** -This will open window that should look this: +Or if on the command line type **```code .```** + +This will open a window that should look this: ![Window separated into two panes and with a side ribbon with many options.](images/code_clean.png) From 1e72231fbff9d246e8ee618215a0c65fd487ea88 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Fri, 8 Aug 2025 13:17:33 +0100 Subject: [PATCH 42/94] Moved file into folder --- lessons/{ => common_libs}/common_libraries.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lessons/{ => common_libs}/common_libraries.md (100%) diff --git a/lessons/common_libraries.md b/lessons/common_libs/common_libraries.md similarity index 100% rename from lessons/common_libraries.md rename to lessons/common_libs/common_libraries.md From fd0662faf2e6b784433e27a6c5c9569fdfbc5d90 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Fri, 8 Aug 2025 13:18:13 +0100 Subject: [PATCH 43/94] Created short explanation of how to install a library --- _toc.yml | 2 +- lessons/basics/write_run_python.md | 2 + lessons/common_libs/common_libraries.md | 50 +++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 1 deletion(-) diff --git a/_toc.yml b/_toc.yml index 529c0ab..2d2eea3 100644 --- a/_toc.yml +++ b/_toc.yml @@ -37,7 +37,7 @@ parts: - file: lessons/solving_problems/command_line.ipynb - file: lessons/solving_problems/flowcharts.ipynb - file: lessons/solving_problems/style-and-comments.ipynb - - file: lessons/common_libraries.md + - file: lessons/common_libs/common_libraries.md sections: - file: lessons/common_libs/python-in-chem_pyplot_basics_SM.ipynb - file: lessons/common_libs/Matplotlib_Documentation.ipynb diff --git a/lessons/basics/write_run_python.md b/lessons/basics/write_run_python.md index 498678e..a8a026f 100755 --- a/lessons/basics/write_run_python.md +++ b/lessons/basics/write_run_python.md @@ -56,6 +56,8 @@ Once it is downloaded, **open the installer and follow the instructions**.

      Basic Python Installation +

      Install Python

      + The simplest way to install Python is by itself. Go to the Python [downloads](https://www.python.org/downloads/) and download the latest version. Once it is downloaded, **open the installer and follow the instructions**. diff --git a/lessons/common_libs/common_libraries.md b/lessons/common_libs/common_libraries.md index 79506dc..a64fe9b 100644 --- a/lessons/common_libs/common_libraries.md +++ b/lessons/common_libs/common_libraries.md @@ -1,3 +1,53 @@ # Common Libraries This section will introduce you to three commonly used libraries - NumPy, Matplotlib, and Pandas. It also covers how to read the documnetation of libraries like these. + +Depending on how you installed Python you may or may not have these libraries installed. Below we explain how you can install them + +## Installing Python Libraries + +
      + Miniforge Installation + +

      Using Miniforge

      + +If you installed Python using Miniforge then you have the *conda* and *mamba* package managers installed. Note that they can be used interchangably + +To install a package type the following in your terminal + +```bash +conda install +``` +For example to install *Numpy* +```bash +conda install numpy +``` + +

      + + +
      + Anaconda Installation + +

      Using Anaconda

      + +If you installed Python using Anaconda then you have the conda package manager installed, but you will also have Anaconda Navigator installed. You can use this to manage libraries. + + +

      + + +
      + Basic Python Installation + +

      Using Python

      + +If you installed Python using the basic method then you won't have conda instead you can use *pip* which is Python's own library manager. + +To install a package type the following in your terminal + +```bash +pip install numpy +``` + +

      \ No newline at end of file From 9b0ea0fc624f86740f29b0291477dd876a2375b6 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Fri, 8 Aug 2025 14:10:12 +0100 Subject: [PATCH 44/94] Expanded Navigator instructions for package management --- lessons/common_libs/common_libraries.md | 17 +++++ lessons/common_libs/images/navi_environ_1.png | Bin 0 -> 122317 bytes lessons/common_libs/images/navi_environ_2.png | Bin 0 -> 164753 bytes .../common_libs/images/navi_not_installed.png | Bin 0 -> 3606 bytes .../images/navi_not_installed_list.png | Bin 0 -> 14237 bytes .../common_libs/images/svg/navi_environ_1.svg | 66 ++++++++++++++++++ 6 files changed, 83 insertions(+) create mode 100644 lessons/common_libs/images/navi_environ_1.png create mode 100644 lessons/common_libs/images/navi_environ_2.png create mode 100644 lessons/common_libs/images/navi_not_installed.png create mode 100644 lessons/common_libs/images/navi_not_installed_list.png create mode 100644 lessons/common_libs/images/svg/navi_environ_1.svg diff --git a/lessons/common_libs/common_libraries.md b/lessons/common_libs/common_libraries.md index a64fe9b..984a69e 100644 --- a/lessons/common_libs/common_libraries.md +++ b/lessons/common_libs/common_libraries.md @@ -33,6 +33,23 @@ conda install numpy If you installed Python using Anaconda then you have the conda package manager installed, but you will also have Anaconda Navigator installed. You can use this to manage libraries. +**Search for the program _Anaconda Navigator_ and open it**. After a few seconds, you should see a window like this appear: + +![Window showing six logos for different programs. A red arrow points to the "Environment" button.](images/navi_environ_1.png) + +This will then show you which packages are installed in the current *environment*. + +![Window showing three sections, in the third section a list of installed libraries is shown.](images/navi_environ_2.png) + +Got to the dropdown in the top right which says installed. Select 'Not Installed' + +![Window showing three controls, one is a drop down with 'Not Installed' selected](images/navi_not_installed.png) + +The list will change to show libraries that can be installed. Find the one that you want and check it. A search box allows you to search the package list + +![Window showing three controls, one is a drop down with 'Not Installed' selected](images/navi_not_installed_list.png) + +

      diff --git a/lessons/common_libs/images/navi_environ_1.png b/lessons/common_libs/images/navi_environ_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2907d75923b22e959e4ca79f4544802825c9160f GIT binary patch literal 122317 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 C;B0^Z literal 0 HcmV?d00001 diff --git a/lessons/common_libs/images/navi_environ_2.png b/lessons/common_libs/images/navi_environ_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a4bacddb775a48d90bf7b29e7e53f360132aaf7e GIT binary patch literal 164753 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 pLc`afhVuQ8(+fF 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 PxEKRnBb}_%ws-#nh&anX literal 0 HcmV?d00001 diff --git a/lessons/common_libs/images/navi_not_installed.png b/lessons/common_libs/images/navi_not_installed.png new file mode 100644 index 0000000000000000000000000000000000000000..502f8ceab418bc0b43ca2cb89e8fa0d37fd4d39e GIT binary patch literal 3606 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 LG!%=Tng{+bB;(^L literal 0 HcmV?d00001 diff --git a/lessons/common_libs/images/svg/navi_environ_1.svg b/lessons/common_libs/images/svg/navi_environ_1.svg new file mode 100644 index 0000000..e70cde5 --- /dev/null +++ b/lessons/common_libs/images/svg/navi_environ_1.svg @@ -0,0 +1,66 @@ + + + + + + + + + + From 73cdf0cc4f3357768aa1bdbeada581df04c200ea Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Fri, 8 Aug 2025 15:36:03 +0100 Subject: [PATCH 45/94] typo --- lessons/common_libs/common_libraries.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lessons/common_libs/common_libraries.md b/lessons/common_libs/common_libraries.md index 984a69e..46c2210 100644 --- a/lessons/common_libs/common_libraries.md +++ b/lessons/common_libs/common_libraries.md @@ -1,6 +1,6 @@ # Common Libraries -This section will introduce you to three commonly used libraries - NumPy, Matplotlib, and Pandas. It also covers how to read the documnetation of libraries like these. +This section will introduce you to three commonly used libraries - NumPy, Matplotlib, and Pandas. It also covers how to read the documentation of libraries like these. Depending on how you installed Python you may or may not have these libraries installed. Below we explain how you can install them From 81c2c0359fd85b65ddbf00ef34c48800299d304b Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 18 Aug 2025 13:42:14 +0100 Subject: [PATCH 46/94] Some minor corrections to math_opers --- .../variables/mathematical_operators.ipynb | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/lessons/variables/mathematical_operators.ipynb b/lessons/variables/mathematical_operators.ipynb index d19fe68..92a20f9 100644 --- a/lessons/variables/mathematical_operators.ipynb +++ b/lessons/variables/mathematical_operators.ipynb @@ -57,7 +57,7 @@ "\n", "A single line of code may have many mathematical operations. In this event, Python will follow the standard order of mathematical operations: you might know this as [BODMAS](https://en.wikipedia.org/wiki/Order_of_operations#Mnemonics). Use round brackets \"()\" when coding your formulas to avoid ambiguity.\n", "\n", - "Maths can be done both with numbers and with variable names, as long as the variable is of the correct type (integer or float). Storing numbers as variables becomes extremely useful when they are being used often, and when they are needed to a large number of significant figures. For example, instead of writing out π or Avogadro's number each time it is used, you can store it at the beginning and only call it by the name you have given it.\n", + "Maths can be done both with numbers and with variable, as long as the variable is of the correct type (integer or float). Storing numbers as variables becomes extremely useful when they are being used often, and when they are needed to a large number of significant figures. For example, instead of writing out π or Avogadro's number each time it is used, you can store it at the beginning and only call it by the name you have given it.\n", "\n", "``` Python \n", "pi = 3.141592653589\n", @@ -76,9 +76,9 @@ "metadata": {}, "source": [ "
        \n", - "Using maths in variables\n", + "Assigning variables using maths\n", "\n", - "You can do maths in a variable, which can be called inside a print statement.\n", + "You can perform a mathematical calculation and assign it to a variable, which can be called inside a print statement.\n", "\n", "```Python\n", "mass_H = 1.008 # g mol-1\n", @@ -103,7 +103,7 @@ "
        \n", " Using maths inside a print() statement \n", "\n", - "You can do maths within the print statement.\n", + "You can do mathematical calculations within the print statement.\n", "\n", "```Python\n", "mass_H = 1.008 # g mol-1\n", @@ -113,7 +113,7 @@ "The output of this code is:
        \n", " The mass of a hydrogen molecule is: 2.016 g mol-1 \n", "\n", - "The value 2.016 has been calculated, but is not stored as a variable like it is in the previous example. If you wanted to do further maths with the number 2.016, it would be better to store it as a variable.\n", + "The value 2.016 has been calculated, but is not stored as a variable like it is in the previous example. If you wanted to do further calculations with the number 2.016, it would be better to store it as a variable.\n", "\n", "

        " ] @@ -126,7 +126,7 @@ "
        \n", " Maths in an f-string \n", "\n", - "You can do maths inside f-strings. Just like previously, we can store the maths inside a variable and then call it from the f-string, or do the maths within the f-string itself.\n", + "You can do mathematical calculations inside f-strings. Just like previously, we can store the results inside a variable and then call it from the f-string, or do the calculation within the f-string itself.\n", "\n", "```Python\n", "mass_C = 12.008 # g mol-1\n", @@ -341,7 +341,12 @@ "\n", "If you are getting errors in your code, it is often useful to check the data type of your variables using the function ``type()``.\n", "\n", - "If your variables are the wrong data types, you can convert between data types (as long as they are in the correct format) using the functions ``float()``, ``int()``, and ``str()``. " + "If your variables are the wrong data types, you can convert between data types (as long as they are in the correct format) using the functions ``float()``, ``int()``, and ``str()``. This is referred to as casting, e.g. casting an integer to a float variable.\n", + "\n", + "```python\n", + " int_var = 1 #This declares an integer of 1\n", + " float_var = float(int_var) #This casts the intger, 1, to a float, 1.0,\n", + "```" ] }, { @@ -398,7 +403,7 @@ "[1, 2, 3, 2, 2, 2]
        \n", "[1, 2, 3, 1, 2, 3, 1, 2, 3]
        \n", "\n", - "The most important thing to realise here is that this is an error, but not one that is raised by Python. Python will not shout at you that something has gone wrong, and the printed line on your screen doesn't give any indication that something is wrong. If you aren't careful, you might print an output that looks right, but is in fact a mistake borne from unintentional concatenation.\n", + "The most important thing to realise here is that this is *not* an error in the behaviour of Python. So Python will not shout at you that something has gone wrong, and the printed line on your screen doesn't give any indication that something is wrong. If you aren't careful, you might print an output that looks right, but is in fact a mistake borne from unintentional concatenation.\n", "\n", "

        " ] @@ -491,7 +496,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As mentioned previously, some mathematical functions are not native to Python. We must import them from another module or library in order to use them. One of the most basic and useful is the built-in Python module ``math`` (documentation can be found [here](https://docs.python.org/3/library/math.html)).\n", + "As mentioned previously, some mathematical functions are not native to Python. We must import them from another module or library in order to use them. One of the most basic and useful is the built-in Python module ``math`` (documentation can be found [here](https://docs.python.org/3/library/math.html)) or ``cmath`` if dealing with complex numbers.\n", "\n", "Quick note on terminology: a module is a file containing the functions we want to import. A library is a collection of modules. More information on importing modules can be found in the [importing modules lesson](../loops_functions/tut_import_mod.ipynb), although this is not necessary to understand this section of the lesson.\n", "\n", @@ -622,7 +627,7 @@ "answer = module.function()\n", "```\n", "\n", - "Which tells us that we are referencing a function from the module named just below the full-stop (in this case, the module is called 'module'). Referencing the module we are calling the function from is necessary because you often import lots of different modules and libraries, and you want to prevent errors caused by multiple functions having the same name.\n", + "Which tells us that we are referencing a function from the module named just after the full-stop (in this case, the module is called 'module'). Referencing the module we are calling the function from is necessary because you often import lots of different modules and libraries, and you want to prevent errors caused by multiple different functions having the same name.\n", "\n", "There are lots of libraries and modules which you can import, which serve different purposes, such as the scientific module [NumPy](../common_libs/Introduction_to_NumPy.ipynb), and the graphing library [matplotlib.pyplot](../common_libs/python-in-chem_pyplot_basics_SM.ipynb). " ] @@ -748,7 +753,7 @@ "source": [ "### Question 1\n", "\n", - "Find the velocity, $v$, of a N2 molecule with a mass, $m$ of 4.6×10-26 kg at a temperature, $T$, of 293 K, given the following equation,\n", + "Find the velocity, $v$, of a N2 molecule with a mass, $m$, of 4.6×10-26 kg at a temperature, $T$, of 293 K, given the following equation,\n", "\n", "$$\n", "v = \\sqrt{\\frac{3k_bT}{m}}, \n", From 22177f1cd83e18deaaeea95d2b6dbcf9dafd1ca9 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 18 Aug 2025 13:51:38 +0100 Subject: [PATCH 47/94] minor fixes and typos to conditional lesson --- lessons/loops_functions/conditional_statements.ipynb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lessons/loops_functions/conditional_statements.ipynb b/lessons/loops_functions/conditional_statements.ipynb index 412db23..746eec5 100644 --- a/lessons/loops_functions/conditional_statements.ipynb +++ b/lessons/loops_functions/conditional_statements.ipynb @@ -53,7 +53,7 @@ ">if condition:\n", "> what to do if condition is True\n", "\n", - "When the condition is True, Python will go on to run the code which is indented. Indentation is how Python knows what is part of the ``if`` statement, and what is the rest of the code. Often, programs that run Python will automatically insert indentation after the ``if condition:`` (not forgetting the colon!), but you can also use the 'tab' key to insert the correct indentation (which as a standard is 4 spaces). If there is no colon and no indentation, errors can occur.\n", + "When the condition is True, Python will go on to run the code which is indented. Indentation is how Python knows what is part of the ``if`` statement, and what is the rest of the code. Often, programs in which you write Python will automatically insert indentation after the ``if condition:`` (not forgetting the colon!), but you can also use the 'tab' key to insert the correct indentation (which as a standard is 4 spaces). If there is no colon and no indentation, errors can occur.\n", "\n", "If the condition is False, the indented code is ignored, and Python continues onto whatever the next non-indented lines are." ] @@ -72,7 +72,7 @@ "x = \"CH4\"\n", "y = \"CH4\"\n", "if x == y:\n", - " # This part of the code is indented, and is run if the if statement is true\n", + " # This part of the code is indented, and is run only if the if statement is true\n", " print(\"Yes, these are the same formula\")\n", "```\n", "\n", @@ -149,7 +149,7 @@ ">else:\n", "> what to do if condition is False\n", "\n", - "Alternatively, if we have more than two decisions to make, we can use ```if... elif... else```, with ```elif``` statements acting like further 'if' statements that are only checked if all the statements above are False. `Elif` is short for 'else if', and if only run if the condition above is not met. For example:\n", + "Alternatively, if we have more than two decisions to make, we can use ```if... elif... else```, with ```elif``` statements acting like further 'if' statements that are only checked if all the statements above are False. `Elif` is short for 'else if', and will only be checked if the condition above is not met. For example:\n", "\n", ">```text\n", ">if condition:\n", @@ -297,7 +297,7 @@ "\n", "If statements can be summarised by the following flowchart:\n", "\n", - "\"if-statements-flowchart\"\n", + "\"if-statements-flowchart\"\n", "\n", "You can see that if the first statement is True, the code completely skips the ``elif`` and ``else`` statements, which are not checked. \n" ] From 5ad5157858747afbefd0556f1416d12778d892bf Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 18 Aug 2025 14:49:00 +0100 Subject: [PATCH 48/94] Swapped enumerate and zipped to try and show why zipped might be useful Make enumerate less of an afterthought --- lessons/loops_functions/for_loops.ipynb | 133 +++++++++++++++--------- 1 file changed, 85 insertions(+), 48 deletions(-) diff --git a/lessons/loops_functions/for_loops.ipynb b/lessons/loops_functions/for_loops.ipynb index 5333bf7..461df81 100644 --- a/lessons/loops_functions/for_loops.ipynb +++ b/lessons/loops_functions/for_loops.ipynb @@ -354,24 +354,75 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Using ``zip()`` and ``enumerate()``\n" + "## Using ``enumerate()``\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "``zip()`` and ``enumerate()`` are two built-in Python functions which gives lists a bit more functionality, especially within loops. It is very important you understand their purpose and syntax.\n", + "### ``Enumerate``\n", "\n", - "### ``Zip()``\n", - "The first is ``zip()``. This function takes multiple lists and associates them element-wise. Elements from each list can then be called. It is like being able to call multiple lists within one ``for`` loop.\n", + "Each entry in a list has two things associated with them, the index of the entry and the value of the entry. Sometimes it is useful to know the index. Python allows us to find out the index while we iterate through a list using ``enumerate``\n", + "\n", + "The ``enumerate()`` function assigns each element of a list a number, from 0 upwards, as the index which can then be referred to within the list. This is a good way of identifying where in a list a certain item is. The basic syntax of ``enumerate()`` is ``for i, j in list:``, where `i` is a temporary variable referring to the index number that is being assigned, and `j` is the item within the list.\n", + "\n", + "Here is an example:\n", + "\n", + ">```Python\n", + ">atom_names = [\"H\", \"He\", \"Li\", \"Be\"]\n", + ">\n", + ">for index, atom in enumerate(atom_names):\n", + "> print(atom, \"is at position\" , index, \"in the list\")\n", + "\n", + "Resulting in the following output:\n", + "\n", + " H is at position 0 in the list
        \n", + "He is at position 1 in the list
        \n", + "Li is at position 2 in the list
        \n", + "Be is at position 3 in the list
        \n", + "\n", + "Note that H is at position 0, not 1. This goes back to Python's 0-indexing, where ordered items are assigned values starting from 0, not 1. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
        \n", + " Using enumerate to find a list index\n", + "\n", + "You have a very long list of amino acids, and you want to find the position of the amino acid \"Proline\".\n", + "\n", + "```Python\n", + "natural_amino_acids = [\"Alanine\", \"Arginine\", \"Asparagine\", \"Aspartic acid\", \"Cysteine\", \"Glutamic acid\", \"Glutamine\", \"Glycine\", \"Histidine\", \"Isoleucine\", \"Leucine\", \"Lysine\", \"Methionine\", \"Phenylalanine\", \"Proline\", \"Serine\", \"Threonine\", \"Tryptophan\", \"Tyrosine\", \"Valine\"]\n", + "\n", + "for index, amino_acid in enumerate(natural_amino_acids):\n", + " if amino_acid == \"Proline\":\n", + " print(f\"Proline is at position {index} in the list.\")\n", + "```\n", + "\n", + "The code will output: \n", + "\n", + " Proline is at position 14 in the list \n", + "\n", + "If you had another list of corresponding masses, you could then identify which mass belonged to proline and set it as a useful variable. For example, from a the list of masses called ``amino_acid_masses`` you could retrieve and define the variable ``mass_proline = amino_acid_masses[14]``.\n", + "\n", + "

        " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```Enumerate``` is also useful for iterating through two lists.\n", "\n", ">```Python\n", ">atom_names = [\"H\", \"He\", \"Li\", \"Be\"]\n", ">atom_masses = [1.008, 4.003, 6.94, 9.012]\n", ">\n", - ">for name, mass in zip(atom_names, atom_masses):\n", - "> print(f\"The mass of {name} is {mass}\")\n", + ">for index, atom in enumerate(atom_names):\n", + "> print(f\"The mass of {atom} is {atom_masses[index]}\")\n", "\n", "The result is:
        \n", "The mass of H is 1.008
        \n", @@ -379,29 +430,41 @@ "The mass of Li is 6.94
        \n", "The mass of Be is 9.012
        \n", "\n", - "``name`` is the temporary variable for items in the list ``atom_names``, and ``mass`` is the temporary variable for items in the list ``atom_masses``. Within the ``for`` loop, both temporary variables can be called. When the next loop begins, both temporary variables move on to the next item in each list. \n", - "\n", - "\n", - "### ``Enumerate``\n", + "It is of course possible to have more complicated relationships betwen the index of two arrays. An example would be where a range of values is needed from the second list, rather than just a single point.\n", "\n", - "The ``enumerate()`` function assigns each element of a list a number, from 0 upwards, which can then be referred to. This is a good way of identifying where in a list a certain item is. The basic syntax of ``enumerate()`` is ``for i, j in list:``, where `i` is a temporary variable referring to the index number that is being assigned, and `j` is the item within the list.\n", + "However, if the relationship is direct then Python offers a simplet alternative ```zip```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using ``zip()``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``zip()`` is a built-in Python functions which gives lists a bit more functionality, especially within loops. It is very important you understand their purpose and syntax.\n", "\n", - "Here is an example:\n", + "### ``Zip()``\n", + "This function takes multiple lists and associates them element-wise. Elements from each list can then be called. It is like being able to call multiple lists within one ``for`` loop.\n", "\n", ">```Python\n", ">atom_names = [\"H\", \"He\", \"Li\", \"Be\"]\n", + ">atom_masses = [1.008, 4.003, 6.94, 9.012]\n", ">\n", - ">for index, atom in enumerate(atom_names):\n", - "> print(atom, \"is at position\" , index, \"in the list\")\n", - "\n", - "Resulting in the following output:\n", + ">for name, mass in zip(atom_names, atom_masses):\n", + "> print(f\"The mass of {name} is {mass}\")\n", "\n", - " H is at position 0 in the list
        \n", - "He is at position 1 in the list
        \n", - "Li is at position 2 in the list
        \n", - "Be is at position 3 in the list
        \n", + "The result is:
        \n", + "The mass of H is 1.008
        \n", + "The mass of He is 4.003
        \n", + "The mass of Li is 6.94
        \n", + "The mass of Be is 9.012
        \n", "\n", - "Note that H is at position 0, not 1. This goes back to Python's 0-indexing, where ordered items are assigned values starting from 0, not 1. " + "``name`` is the temporary variable for items in the list ``atom_names``, and ``mass`` is the temporary variable for items in the list ``atom_masses``. Within the ``for`` loop, both temporary variables can be called. When the next loop begins, both temporary variables move on to the next item in each list. " ] }, { @@ -458,32 +521,6 @@ "

        " ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
        \n", - " Using enumerate to find a list index\n", - "\n", - "You have a very long list of amino acids, and you want to find the position of the amino acid \"Proline\".\n", - "\n", - "```Python\n", - "natural_amino_acids = [\"Alanine\", \"Arginine\", \"Asparagine\", \"Aspartic acid\", \"Cysteine\", \"Glutamic acid\", \"Glutamine\", \"Glycine\", \"Histidine\", \"Isoleucine\", \"Leucine\", \"Lysine\", \"Methionine\", \"Phenylalanine\", \"Proline\", \"Serine\", \"Threonine\", \"Tryptophan\", \"Tyrosine\", \"Valine\"]\n", - "\n", - "for index, amino_acid in enumerate(natural_amino_acids):\n", - " if amino_acid == \"Proline\":\n", - " print(f\"Proline is at position {index} in the list.\")\n", - "```\n", - "\n", - "The code will output: \n", - "\n", - " Proline is at position 14 in the list \n", - "\n", - "If you had another list of corresponding masses, you could then identify which mass belonged to proline and set it as a useful variable. For example, from a the list of masses called ``amino_acid_masses`` you could retrieve and define the variable ``mass_proline = amino_acid_masses[14]``.\n", - "\n", - "

        " - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -979,7 +1016,7 @@ "
        \n", " Using break\n", "\n", - "To retrieve onlyt the first molecule that contains an oxygen atom, this code uses ``break``.\n", + "To retrieve only the first molecule that contains an oxygen atom, this code uses ``break``.\n", "\n", "```Python\n", "molecules = [\"HCN\", \"NH3\", \"H2O\", \"CO2\"]\n", From a20141b6a3add386da25ec379b48d2720ff72d78 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 18 Aug 2025 14:52:41 +0100 Subject: [PATCH 49/94] moved flowchart image into image folder --- .../{ => images}/if-statements-flowchart.jpg | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename lessons/loops_functions/{ => images}/if-statements-flowchart.jpg (100%) diff --git a/lessons/loops_functions/if-statements-flowchart.jpg b/lessons/loops_functions/images/if-statements-flowchart.jpg similarity index 100% rename from lessons/loops_functions/if-statements-flowchart.jpg rename to lessons/loops_functions/images/if-statements-flowchart.jpg From 76a7e5df41b0234908942693c1842ae1d41bd1db Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 18 Aug 2025 14:52:48 +0100 Subject: [PATCH 50/94] point image to correct place --- lessons/loops_functions/conditional_statements.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lessons/loops_functions/conditional_statements.ipynb b/lessons/loops_functions/conditional_statements.ipynb index 746eec5..c527763 100644 --- a/lessons/loops_functions/conditional_statements.ipynb +++ b/lessons/loops_functions/conditional_statements.ipynb @@ -297,7 +297,7 @@ "\n", "If statements can be summarised by the following flowchart:\n", "\n", - "\"if-statements-flowchart\"\n", + "\"if-statements-flowchart\"\n", "\n", "You can see that if the first statement is True, the code completely skips the ``elif`` and ``else`` statements, which are not checked. \n" ] From 4c9953f543fd4748575f90fc6432708f89ffffe0 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 18 Aug 2025 14:56:31 +0100 Subject: [PATCH 51/94] moved other images Possibly breaking something? --- ...ckCake-Overwhelmed with paperwork_1744290627.jpg | Bin .../{ => images}/methyl_benzoate.png | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename lessons/loops_functions/{ => images}/StockCake-Overwhelmed with paperwork_1744290627.jpg (100%) rename lessons/loops_functions/{ => images}/methyl_benzoate.png (100%) diff --git a/lessons/loops_functions/StockCake-Overwhelmed with paperwork_1744290627.jpg b/lessons/loops_functions/images/StockCake-Overwhelmed with paperwork_1744290627.jpg similarity index 100% rename from lessons/loops_functions/StockCake-Overwhelmed with paperwork_1744290627.jpg rename to lessons/loops_functions/images/StockCake-Overwhelmed with paperwork_1744290627.jpg diff --git a/lessons/loops_functions/methyl_benzoate.png b/lessons/loops_functions/images/methyl_benzoate.png similarity index 100% rename from lessons/loops_functions/methyl_benzoate.png rename to lessons/loops_functions/images/methyl_benzoate.png From d83b61192968b562a9e23fe04008bd9aa467aa49 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 18 Aug 2025 14:58:10 +0100 Subject: [PATCH 52/94] fixed benzoate link --- notebooks/For_Loop_Lesson.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notebooks/For_Loop_Lesson.ipynb b/notebooks/For_Loop_Lesson.ipynb index 9a5398a..9209aa3 100644 --- a/notebooks/For_Loop_Lesson.ipynb +++ b/notebooks/For_Loop_Lesson.ipynb @@ -118,7 +118,7 @@ "\n", "In the lab you are making methyl benzoate according using the scheme below. Five scientists repeat the reaction starting with 3 g of benzoic acid and get of 2.5 g, 2.7 g, 3.1 g, 1.6 g and 4 g of product\n", "\n", - "\n", + "\n", "\n", "Lets use your understanding of for loops to quickly work out the yields for each person" ] From 7146c18a5015d898e992b617d3fb59445722a4b9 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 18 Aug 2025 15:00:53 +0100 Subject: [PATCH 53/94] really fixed image link --- lessons/loops_functions/for_loops.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lessons/loops_functions/for_loops.ipynb b/lessons/loops_functions/for_loops.ipynb index 461df81..9e84c3b 100644 --- a/lessons/loops_functions/for_loops.ipynb +++ b/lessons/loops_functions/for_loops.ipynb @@ -263,7 +263,7 @@ "\n", "Product yields: 2.5 g, 2.7 g, 3.1 g, 1.6 g, 4 g. \n", "\n", - "\"The\n", + "\"The\n", "\n", "Use your understanding of ``for`` loops to work out the percentage yields for each person. Use an `if` statement within the loop to test the following conditions:\n", "- Percentage yield is smaller than 50 % - print a statement that the yield is poor. \n", From e37e319cfc1d759a4b43b2a8d9e6197e660faf0c Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 18 Aug 2025 15:18:19 +0100 Subject: [PATCH 54/94] Tweaks to while --- lessons/loops_functions/while_loops.ipynb | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/lessons/loops_functions/while_loops.ipynb b/lessons/loops_functions/while_loops.ipynb index 9a54fd1..bbfe581 100644 --- a/lessons/loops_functions/while_loops.ipynb +++ b/lessons/loops_functions/while_loops.ipynb @@ -23,7 +23,7 @@ "\n", "## The `while` Loop\n", "\n", - "A `while` loop is similar to a [`for` loop](./For_Loop_Lesson.ipynb), with the main difference being it will continuosly loop while a condition is `True`. A ``for`` loop is used when you know how many times you need to iterate, and a ``while`` loop is for when you do not know how many times you need to iterate. In general, if it is possible to do it with a ``for`` loop, try to do it that way, as ``while`` loops have the potential for infinite looping if they are not properly controlled (discussed in more detail in the next section).\n", + "A `while` loop is similar to a [`for` loop](./For_Loop_Lesson.ipynb), with the main difference being it will continuosly loop while a condition is `True`. A ``for`` loop is used when you know how many times you need to iterate, and a ``while`` loop is for when you do not know how many times you need to iterate. In general, if you could use a ``for`` loop, try to do it that way, as ``while`` loops have the potential for infinite looping to occur if they are not properly controlled (discussed in more detail in the next section).\n", "\n", "In general `while` loops take the structure:\n", "\n", @@ -111,7 +111,9 @@ "\n", "In this example, `count` is never exactly equal to 0: it counts down from 5, to 3, 1, -1, and continues down. As a result, the condition `count != 0` is never `False`, and the loop will run forever.\n", "\n", - "If this happens, you need to force stop your program. Look for a little square, it usually represents stopping the program while it is still running. If the program runs for too long without stopping, it could crash your computer." + "If this happens, you need to force stop your program. How to do this varies depeneding on how you run the instrument. In an IDE Look for a little square (the stop button), it usually represents stopping the program while it is still running. In a terminal press `ctrl+c` to force stop. \n", + "\n", + "If the program runs for too long without stopping, it could crash your computer." ] }, { @@ -235,6 +237,15 @@ "\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise\n", + "\n", + "Can you rewrite the code to need no break statements at all?" + ] + }, { "cell_type": "markdown", "metadata": {}, From 66d421d0ff52012eca7669545582737a6572072f Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 18 Aug 2025 15:34:47 +0100 Subject: [PATCH 55/94] minor tweaks functions --- .../loops_functions/functions_and_scope.ipynb | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/lessons/loops_functions/functions_and_scope.ipynb b/lessons/loops_functions/functions_and_scope.ipynb index 7565634..9eb60c3 100644 --- a/lessons/loops_functions/functions_and_scope.ipynb +++ b/lessons/loops_functions/functions_and_scope.ipynb @@ -85,11 +85,11 @@ "\n", "- ``def`` indicates that we are about to define a new function. \n", "- ``function_name()`` is what we name it. This is the name that we will use to call our function later on.\n", - "- ``(an_input)`` is the variable that the function will act on, known as the function's argument. It could be a number, string, list, etc., but whatever it is, we need to make sure that we treat it like the correct variable type throughout the main code block. \n", + "- ``(an_input)`` The variables in the parenthese are the function's argument. These are the inputs that the function will act on. The could be numbers, strings, lists, etc., but whatever they is, we need to make sure that we treat them like the correct variable type throughout the main code block. \n", "- ``:`` indicates the start of the code that will run whenever we call our function.\n", - "- ``Code block`` is a placeholder indicating the main body of the code. This could be maths, reading from a file, or many other things. The main body of the code is indented using the ```` key, just like with 'if', 'for, and 'while'. All the code belonging to this function must be indented and directly below the line ``def function_name():``. You can use 'if', 'for' and 'while' within this code block, but they must respect the first indent.\n", - "- ``return`` indicates the end of the function, and must be one indent away from the margin (unless it is nested within another statement - more on that later). The real meaning of ``return`` is that the variable which comes after it (in this case, ``an_output``) is what the function will spit out at the end. In reality, this means you could have a ``return`` statement halfway down your function.\n", - "- ``an_output`` is what the function will return at the end of its process. You can have multiple outputs (discussed later) separated by commas. \n", + "- ``Code block`` is a placeholder indicating the main body of the code. This could be a calculation, reading from a file, or many other things. The main body of the code is indented using the ```` key, just like with 'if', 'for, and 'while'. All the code belonging to this function must be indented and directly below the line ``def function_name():``. You can use 'if', 'for' and 'while' within this code block, but they must respect the first indent.\n", + "- ``return`` indicates the end of the function, and must be one indent away from the margin (unless it is nested within another statement - more on that later). The real meaning of ``return`` is that the variables which comes after it (in this case, ``an_output``) are what the function will spit out (or return) at the end. In reality, this means you could have a ``return`` statement halfway down your function.\n", + "- ``an_output`` is what this function will return at the end of its process. You can have multiple outputs (discussed later) separated by commas. \n", "\n", "Using this syntax, we will now turn the above code for adding masses into a function. \n", "\n", @@ -101,7 +101,7 @@ " return total_mass\n", "```\n", "\n", - "The function's argument (what we are putting in) has been named ``list_of_atoms``, instead of the more specific ``ethene_atom_masses``. This is because we want this function to be general, to apply not only to a list of atoms in ethene, but also to other lists containing the masses of atoms in propene, butene, benzenehexacarboxylic acid, and so on. \n", + "The function's argument (which we are putting in) has been named ``list_of_atoms``, instead of the more specific ``ethene_atom_masses``. This is because we want this function to be general, to apply not only to a list of atoms in ethene, but also to other lists containing the masses of atoms in propene, butene, benzenehexacarboxylic acid, and so on. \n", "\n", "Another thing you will notice is that the variable ``list_of_atoms`` is treated like a list even though it is never explicitly defined as such. When you call your function (discussed in the next section), you must make sure your input is the correct variable type.\n" ] @@ -261,9 +261,9 @@ "id": "cffc10a9", "metadata": {}, "source": [ - "In Python, the word 'scope' refers to the area in which a variable or function name is valid. For example, if you define a variable at the top of one Python file, you cannot retrieve that variable from another Python file, but you can refer to it from anywhere within the program it belongs to. It is a global variable.\n", + "In Python, the word 'scope' refers to the parts of the program in which a variable or function name is valid. For example, if you define a variable at the top of one Python file, you cannot retrieve that variable from another Python file, but you can refer to it from anywhere within the program it belongs to. It is a global variable.\n", "\n", - "Within a function, there is what is called a 'local scope'. This means that variables created within the function cannot be referred to outside the program unless it has been specified to by ``return``, and assigned a new variable name. They are local variables.\n", + "Within a function, there is what is called a 'local scope'. This means that variables created within the function cannot be referred to outside the function unless it has been specified to by ``return``, and assigned a new variable name. They are local variables.\n", "\n", "Here is an example, using the above function ``add_atomic_masses``. \n", "\n", @@ -287,7 +287,22 @@ " return pressure_mmHg\n", "```\n", "\n", - "The only thing to be mindful of when doing this is to keep track of your variables! If you start changing them around, or copy and paste a function from one program into another, your variables might result in errors!" + "The thing to be mindful of when doing this is to keep track of your variables! If you start changing them around, or copy and paste a function from one program into another, your variables might result in errors! It is also possible to reuse a variable inside the function without wanting to.\n", + "\n", + "```python\n", + "scount = 5\n", + "\n", + "def sum_list(list_to_sum):\n", + " for entry in list_to_sum:\n", + " scount = scount + entry\n", + " \n", + " return scount\n", + "\n", + "mylist = [1,2,3,4,5]\n", + "\n", + "mysum = sum_list(mylist)\n", + "```\n", + "In this example it is likely that the variable scount is meant to start at 0, but is likely to start at 5, giving the wrong answer" ] }, { From 91e71f632b2b5f05bb77f316dea13578b7f230bf Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 18 Aug 2025 15:35:10 +0100 Subject: [PATCH 56/94] more minor --- lessons/loops_functions/functions_and_scope.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lessons/loops_functions/functions_and_scope.ipynb b/lessons/loops_functions/functions_and_scope.ipynb index 9eb60c3..8f9c343 100644 --- a/lessons/loops_functions/functions_and_scope.ipynb +++ b/lessons/loops_functions/functions_and_scope.ipynb @@ -414,7 +414,7 @@ " print(mass)\n", " ```\n", "\n", - " Will return: (1.008, 14.007) , a tuple. This is not a data type you, as a beginner, will often use. \n", + " Will return: (1.008, 14.007), a tuple. This is not a data type you, as a beginner, will often use. \n", "- If you only want one of the returned variables, you can put a double underscore ``__`` to indicate that you will not retrieve that answer: ``min_mass, __ = minmax(masses)``. \n", " The function is 'throwing away' the second value. This is useful if you want to test or use only one aspect of the function, or if one of the returned variables takes up a lot of storage space, making your program slow.\n", "\n", @@ -536,7 +536,7 @@ ">mols_aspirin = no_mols(mass_aspirin, Mr_aspirin)\n", ">print(mols_aspirin , \"mols of aspirin\")\n", "\n", - "Which will output 0.008215011267887077 mols of aspirin , which you can check on a calculator. \n", + "Which will output 0.008215011267887077 mols of aspirin, which you can check on a calculator. \n", "\n", "Your arguments do not have to be the same variable type, you could have a number and a list, as long as you treat them as that variable type in your function. You can add as many arguments as you like, but be aware it might make your function hard to use if you add too many. \n", "\n", From b97fd71349bfcf689f5e86d0aa22231edbe05250 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 18 Aug 2025 15:49:03 +0100 Subject: [PATCH 57/94] Filled in worked code example --- .../solving_problems/writing_a_program.ipynb | 634 +++++++++++++++++- 1 file changed, 629 insertions(+), 5 deletions(-) diff --git a/lessons/solving_problems/writing_a_program.ipynb b/lessons/solving_problems/writing_a_program.ipynb index abdb242..208bba6 100644 --- a/lessons/solving_problems/writing_a_program.ipynb +++ b/lessons/solving_problems/writing_a_program.ipynb @@ -52,19 +52,25 @@ "\n", "We will create a program to calculate the mean and standard deviation of a set of numbers. We will therefore need the following equations:\n", "\n", - "For the mean: $$ = \\frac{1}{N}(x_1 + x_2 + x_3 + ...+x_n)= \\frac{1}{N}\\sum(x_i) $$\n", + "For the mean: \n", + "\n", + "$$ = \\frac{1}{N}(x_1 + x_2 + x_3 + ...+x_n)= \\frac{1}{N}\\sum(x_i) $$\n", "\n", "So the mean is the sum of N numbers from $x_1$ to $x_n$\n", "\n", - "The Population has variance: $$ v(x,x)=<(x-\\bar{x})^2> = \\frac{1}{N}\\sum((x_i -\\bar{x})^2) $$\n", + "The Population has variance: \n", + "\n", + "$$ v(x,x)=<(x-\\bar{x})^2> = \\frac{1}{N}\\sum((x_i -\\bar{x})^2) $$\n", "\n", "The variance is the sum of the squared differences of N numbers from $x_1$ to $x_n$\n", "\n", - "For the standard deviation: $$\\sigma(\\bar{x}) = \\sqrt{v(x,x)}$$\n", + "For the standard deviation: \n", + "\n", + "$$\\sigma(\\bar{x}) = \\sqrt{v(x,x)}$$\n", "\n", "The standard deviation is the square root of the variance.\n", "\n", - "We will take this equations and turn them into a working programme" + "We will take these equations and turn them into a working programme" ] }, { @@ -127,12 +133,630 @@ "This is a very sparse barebones outline. But the key points are covered" ] }, + { + "cell_type": "markdown", + "id": "09b68ff1", + "metadata": {}, + "source": [ + "### Outline 2" + ] + }, + { + "cell_type": "markdown", + "id": "9117c860", + "metadata": {}, + "source": [ + "\n", + "We will now fill in our outline with some more detail. We will not add any code yet, we first work out what is going to happen.\n", + "\n", + "The main part of the programme is going to be under the Do calculation comment. So we will next look at that.\n", + "\n", + "Lets expanded it, we know the aim of this programme is to calculate the mean, variance and standard deviation of a population\n", + "\n", + "```python\n", + "# Do calculations on data\n", + "## Calculate Mean\n", + "\n", + "## Calculate Variance\n", + "\n", + "## Calculate std\n", + "\n", + "```\n", + "Next lets think of how we will calculate the mean.\n", + "\n", + "$$ = \\frac{1}{N}(x_1 + x_2 + x_3 + ...+x_n)= \\frac{1}{N}\\sum(x_i) $$\n", + "\n", + "So we need to sum our numbers and then divide them by how many they are. Let us make that clear in our outline\n", + "\n", + "```python\n", + "# Do calculations on data\n", + "## Calculate Mean\n", + " ## Sum up all the numbers - get sum\n", + " ##divide the sum by the number of values - get mean\n", + "\n", + "## Calculate Variance\n", + "\n", + "## Calculate std\n", + "\n", + "```\n" + ] + }, { "cell_type": "markdown", "id": "e981dc68", "metadata": {}, "source": [ - "ABSTRACTNING, SPLITTING INTO PARTS" + "Next how do we calculate the variance?\n", + "\n", + "$$ v(x,x)=<(x-\\bar{x})^2> = \\frac{1}{N}\\sum((x_i -\\bar{x})^2) $$\n", + "\n", + "So, for each number we take its difference from the mean, square that difference and then sum all the difference. Finally we divide this summed squared difference by the number of values. We will add that to our outline\n", + "\n", + "```python\n", + "# Do calculations on data\n", + "## Calculate Mean\n", + " ## Sum up all the numbers - get sum\n", + " ##divide the sum by the number of values - get mean\n", + "\n", + "## Calculate Variance\n", + " ## For each number\n", + " ## take difference from the mean - get diff\n", + " ## square that diff - get square diff\n", + " ## add to total square diff - get total diff\n", + " ## divide the total diff by the number of values - get variance\n", + " \n", + "## Calculate std\n", + "\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "c76cb806", + "metadata": {}, + "source": [ + "Finally, for the calculations how do we get the standard deviation?\n", + "\n", + "$$\\sigma(\\bar{x}) = \\sqrt{v(x,x)}$$\n", + "\n", + "So we just need to take the square root of the variance. Lets add this to the outline\n", + "\n", + "```python\n", + "# Do calculations on data\n", + "## Calculate Mean\n", + " ## Sum up all the numbers - get sum\n", + " ##divide the sum by the number of values - get mean\n", + "\n", + "## Calculate Variance\n", + " ## For each number\n", + " ## take difference from the mean - get diff\n", + " ## square that diff - get square diff\n", + " ## add to total square diff - get total diff\n", + " ## divide the total diff by the number of values - get variance\n", + " \n", + "## Calculate std\n", + " ## Take square root of variance - get std\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "030a16b4", + "metadata": {}, + "source": [ + "We can now go back and fill in the rest of our outline.\n", + "\n", + "For the imports, we now know we need to import the math library as we need the square root function\n", + "\n", + "```python\n", + "# Start and import any libraries\n", + "## Import math library for square root\n", + "\n", + "```\n", + "For the variables we don't know what we'll need just yet\n", + "\n", + "For inputting data we know we will need a list of numbers from somewhere\n", + "\n", + "```python\n", + "# Input data to work with\n", + "## Get list of numbers\n", + "\n", + "```\n", + "For the output of results, we need to put the values of the mean, variance and standard deviation somewhere\n", + "\n", + "```python\n", + "# Output the results\n", + "## Print out mean, variance and standard deviation\n", + "```\n", + "\n", + "Putting that all together gives us a final outline.\n", + "Note that we have done **no coding yet**, we have just laid out a plan to help us code\n", + "\n", + "```python\n", + "\n", + "# Start and import any libraries\n", + "## Import math library for square root\n", + "\n", + "# Set up key variables needed later\n", + "\n", + "# Input data to work with\n", + "## Get list of numbers\n", + "\n", + "# Do calculations on data\n", + "## Calculate Mean\n", + " ## Sum up all the numbers - get sum\n", + " ##divide the sum by the number of values - get mean\n", + "\n", + "## Calculate Variance\n", + " ## For each number\n", + " ## take difference from the mean - get diff\n", + " ## square that diff - get square diff\n", + " ## add to total square diff - get total diff\n", + " ## divide the total diff by the number of values - get variance\n", + " \n", + "## Calculate std\n", + " ## Take square root of variance - get std\n", + "\n", + "\n", + "# Output the results\n", + "## Print out mean, variance and standard deviation\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "a7e7ef37", + "metadata": {}, + "source": [ + "## Coding" + ] + }, + { + "cell_type": "markdown", + "id": "fd576aab", + "metadata": {}, + "source": [ + "We will now start out coding.\n", + "\n", + "We need to import the square root function\n", + "\n", + "```python\n", + "from math import sqrt\n", + "```\n", + "So we add that into our outline\n", + "\n", + "We need to input our data. We shall create a list. \n", + "In the real world these numbers could be loaded from a data file or from the command line. But it is **always** quicker and easier when setting up a programme and debugging to hard code a simple example. Later when we are sure the code works we can extend it.\n", + "\n", + "```python\n", + "print(\"Load Numbers\")\n", + "nums = [1,2,3,4,5,6,7,8,9,10]\n", + "print(\"Loaded\")\n", + "```\n", + "We add this into our outline under the ```Get list of numbers``` comment. **Note** we have added print statements so that when we run this programme we know what is happening.\n", + "\n", + "Once we have finished writing the code many of the statments can be commented out or removed.\n", + "\n", + "We will also add the following:\n", + "```python\n", + "print(nums)\n", + "```\n", + "so we can check the numbers have loaded correctly.\n", + "\n", + "Run the code so far in the box below. Be sure it is working correctly.\n", + "\n", + "The output should be:\n", + "\n", + "Load Numbers\n", + "\n", + "Loaded\n", + "\n", + "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ffec55e2", + "metadata": {}, + "outputs": [], + "source": [ + "# Start and import any libraries\n", + "## Import math library for square root\n", + "\n", + "\n", + "# Set up key variables needed later\n", + "\n", + "# Input data to work with\n", + "## Get list of numbers\n", + "\n", + "# Do calculations on data\n", + "## Calculate Mean\n", + " ## Sum up all the numbers - get sum\n", + " ##divide the sum by the number of values - get mean\n", + "\n", + "## Calculate Variance\n", + " ## For each number\n", + " ## take difference from the mean - get diff\n", + " ## square that diff - get square diff\n", + " ## add to total square diff - get total diff\n", + " ## divide the total diff by the number of values - get variance\n", + " \n", + "## Calculate std\n", + " ## Take square root of variance - get std\n", + "\n", + "\n", + "# Output the results\n", + "## Print out mean, variance and standard deviation" + ] + }, + { + "cell_type": "markdown", + "id": "99f466f5", + "metadata": {}, + "source": [ + "Now we calculate the mean. This means first calculating the sum of the numbers we have loaded\n", + "\n", + "The fact that we have to sum tells us that we need a loop\n", + "\n", + "So we will create a loop in which to calculate the mean.\n", + "But first we will add the following code below the ``sum up all numbers comment`` (watch out for your indent). Then **run and test**\n", + "```python\n", + "for x in nums:\n", + " print(x)\n", + "```\n", + "When we run this we should get all the numbers printed out one by one. Doing simple tests like this as we construct our code means we can trust our results and we should spot errors sooner\n", + "\n", + "We will now add the following after the ```print(x)``` command, this will add the value of x into the variable mean remembering to indent so it is included in the loop\n", + "```python\n", + "mean = mean + x\n", + "print(mean)\n", + "```\n", + "**Run this**\n", + "\n", + "You should get an error that `mean` is not definied. So we need to remember to define mean before we use it. Currently we are asking the program to add a number to itself before it has a value, this is clearly wrong.\n", + "\n", + "We need to define mean before using it. More subtly we must set it to 0 when we start, this is not a syntax issue, we could start it with any value we like. **Think** about why it must start at 0 for a sum?\n", + "\n", + "We can place the line ``` mean = 0 ``` in two different places in our code. It can either go inside the for loop before the `mean = mean + x` line or it can go above the for loop. Try both positions and then consider which is the correct place.\n", + "\n", + "**Run and test** it. You should get the final mean value to be 55. Currently this is the sum, we know from earlier that it should be 55. So far our code is correct" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0b064da7", + "metadata": {}, + "outputs": [], + "source": [ + "# Start and import any libraries\n", + "## Import math library for square root\n", + "from math import sqrt\n", + "\n", + "# Set up key variables needed later\n", + "\n", + "# Input data to work with\n", + "## Get list of numbers\n", + "print(\"Load Numbers\")\n", + "nums = [1,2,3,4,5,6,7,8,9,10]\n", + "print(\"Loaded\")\n", + "print(nums)\n", + "# Do calculations on data\n", + "## Calculate Mean\n", + " ## Sum up all the numbers - get sum\n", + " ##divide the sum by the number of values - get mean\n", + "\n", + "## Calculate Variance\n", + " ## For each number\n", + " ## take difference from the mean - get diff\n", + " ## square that diff - get square diff\n", + " ## add to total square diff - get total diff\n", + " ## divide the total diff by the number of values - get variance\n", + " \n", + "## Calculate std\n", + " ## Take square root of variance - get std\n", + "\n", + "\n", + "# Output the results\n", + "## Print out mean, variance and standard deviation" + ] + }, + { + "cell_type": "markdown", + "id": "eb036109", + "metadata": {}, + "source": [ + "The final step in the calculation of the mean is to divide it by the number of elements. So now after the loop (so we reduce the indent by one) we need the following lines\n", + "```python\n", + "n_points = len(nums)\n", + "mean = mean / n_points\n", + "print(\"The mean is \", mean)\n", + "```\n", + "The first line gets the length of the list using a function built into Python called `len()`. We could also calculate this by counting how many times we go around the loop\n", + "We do this division outside the loop - why? What would we calculate if we did it inside the loop?\n", + "\n", + "We now have a program that will calculate the mean for a given list of numbers." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "73964114", + "metadata": {}, + "outputs": [], + "source": [ + "# Start and import any libraries\n", + "## Import math library for square root\n", + "from math import sqrt\n", + "\n", + "# Set up key variables needed later\n", + "mean = 0\n", + "\n", + "# Input data to work with\n", + "## Get list of numbers\n", + "print(\"Load Numbers\")\n", + "nums = [1,2,3,4,5,6,7,8,9,10]\n", + "print(\"Loaded\")\n", + "print(nums)\n", + "# Do calculations on data\n", + "## Calculate Mean\n", + " ## Sum up all the numbers - get sum\n", + "for x in nums:\n", + " print(x)\n", + " mean = mean + x\n", + " print(mean)\n", + " ##divide the sum by the number of values - get mean\n", + "\n", + "n_points = len(nums)\n", + "mean = mean / n_points\n", + "print(\"The mean is \", mean)\n", + "\n", + "## Calculate Variance\n", + " ## For each number\n", + " ## take difference from the mean - get diff\n", + " ## square that diff - get square diff\n", + " ## add to total square diff - get total diff\n", + " ## divide the total diff by the number of values - get variance\n", + " \n", + "## Calculate std\n", + " ## Take square root of variance - get std\n", + "\n", + "\n", + "# Output the results\n", + "## Print out mean, variance and standard deviation" + ] + }, + { + "cell_type": "markdown", + "id": "bf5ce6cc", + "metadata": {}, + "source": [ + "Next we need to calculate the standard deviation. This means another for loop to calculate the squared difference from the mean.\n", + "Again any time we know we need to sum a list of numbers there must be a loop\n", + "```python\n", + "var = 0\n", + "for x in nums:\n", + " var = var + ((x-mean)*(x-mean))\n", + " print(var)\n", + " \n", + "var = var /n_points\n", + "print(\"The variance is \",var)\n", + "```\n", + "In this case we take the square by multiplying two values together, we could also use the power operator \\*\\*. For simple powers taking the square this way can be more efficient.\n", + "Note that we have defined the var varible and set to zero\n", + "We have also removed some of the earlier print statements we used for checking our code.\n", + "\n", + "**Run and test** you should get a value of 8.25. Again this agrees with the value we expect that we calculated earlier. Our code is doing what we want" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aa1e885d", + "metadata": {}, + "outputs": [], + "source": [ + "# Start and import any libraries\n", + "## Import math library for square root\n", + "from math import sqrt\n", + "\n", + "# Set up key variables needed later\n", + "mean = 0\n", + "\n", + "# Input data to work with\n", + "## Get list of numbers\n", + "print(\"Load Numbers\")\n", + "nums = [1,2,3,4,5,6,7,8,9,10]\n", + "print(\"Loaded\")\n", + "\n", + "# Do calculations on data\n", + "## Calculate Mean\n", + " ## Sum up all the numbers - get sum\n", + "for x in nums:\n", + " mean = mean + x\n", + " ##divide the sum by the number of values - get mean\n", + "\n", + "n_points = len(nums)\n", + "mean = mean / n_points\n", + "print(\"The mean is \", mean)\n", + "\n", + "## Calculate Variance\n", + " ## For each number\n", + " ## take difference from the mean - get diff\n", + " ## square that diff - get square diff\n", + " ## add to total square diff - get total diff \n", + "\n", + " ## divide the total diff by the number of values - get variance\n", + " \n", + "## Calculate std\n", + " ## Take square root of variance - get std\n", + "\n", + "\n", + "# Output the results\n", + "## Print out mean, variance and standard deviation" + ] + }, + { + "cell_type": "markdown", + "id": "3402195e", + "metadata": {}, + "source": [ + "Our last step in the calculation is to take the square root of the variance to get the standard deviation\n", + "```python\n", + "std = sqrt(var)\n", + "print(\"Standard Deviation \",std)\n", + "```\n", + "**Run and test** the value of the standard deviation should be 2.87 exactly as we expect.\n", + "\n", + "We have outline and constructed a programme that calculates the sum, the mean, the variance and the standard deviation of a dataset.\n", + "\n", + "We have tested it part as we went so we are happy everything is working correctly.\n", + "\n", + "**So that is our first program**\n", + "\n", + "\n", + "The final step is just to move the print statements into the output section of code (if we want)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "24d8ade7", + "metadata": {}, + "outputs": [], + "source": [ + "# Start and import any libraries\n", + "## Import math library for square root\n", + "from math import sqrt\n", + "\n", + "# Set up key variables needed later\n", + "mean = 0\n", + "var = 0\n", + "\n", + "# Input data to work with\n", + "## Get list of numbers\n", + "print(\"Load Numbers\")\n", + "nums = [1,2,3,4,5,6,7,8,9,10]\n", + "print(\"Loaded\")\n", + "\n", + "# Do calculations on data\n", + "## Calculate Mean\n", + " ## Sum up all the numbers - get sum\n", + "for x in nums:\n", + " mean = mean + x\n", + " ##divide the sum by the number of values - get mean\n", + "\n", + "n_points = len(nums)\n", + "mean = mean / n_points\n", + "\n", + "\n", + "## Calculate Variance\n", + " ## For each number\n", + " ## take difference from the mean - get diff\n", + " ## square that diff - get square diff\n", + " ## add to total square diff - get total diff\n", + "\n", + "for x in nums:\n", + " var = var + ((x-mean)*(x-mean))\n", + "\n", + " ## divide the total diff by the number of values - get variance\n", + "var = var /n_points\n", + "\n", + " \n", + " \n", + "## Calculate std\n", + " ## Take square root of variance - get std\n", + "\n", + "\n", + "# Output the results\n", + "## Print out mean, variance and standard deviation\n", + "print(\"The mean is \", mean)\n", + "print(\"The variance is \",var)" + ] + }, + { + "cell_type": "markdown", + "id": "79f54723", + "metadata": {}, + "source": [ + "## Final Programme\n", + "\n", + "```python\n", + "# Start and import any libraries\n", + "## Import math library for square root\n", + "from math import sqrt\n", + "\n", + "# Set up key variables needed later\n", + "mean = 0\n", + "var = 0\n", + "\n", + "# Input data to work with\n", + "## Get list of numbers\n", + "print(\"Load Numbers\")\n", + "nums = [1,2,3,4,5,6,7,8,9,10]\n", + "print(\"Loaded\")\n", + "\n", + "# Do calculations on data\n", + "## Calculate Mean\n", + " ## Sum up all the numbers - get sum\n", + "for x in nums:\n", + " mean = mean + x\n", + " ##divide the sum by the number of values - get mean\n", + "\n", + "n_points = len(nums)\n", + "mean = mean / n_points\n", + "\n", + "\n", + "## Calculate Variance\n", + " ## For each number\n", + " ## take difference from the mean - get diff\n", + " ## square that diff - get square diff\n", + " ## add to total square diff - get total diff\n", + "\n", + "for x in nums:\n", + " var = var + ((x-mean)*(x-mean))\n", + "\n", + " ## divide the total diff by the number of values - get variance\n", + "var = var /n_points\n", + "\n", + " \n", + " \n", + "## Calculate std\n", + " ## Take square root of variance - get std\n", + "std = sqrt(var)\n", + "\n", + "\n", + "# Output the results\n", + "## Print out mean, variance and standard deviation\n", + "print(\"The mean is \", mean)\n", + "print(\"The variance is \",var)\n", + "print(\"Standard Deviation \",std)\n", + "\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "919003d3", + "metadata": {}, + "source": [ + "Though our program works it could be improved.\n", + "\n", + "Try to alter the code in the following ways\n", + "\n", + "* Improve the commenting of the code\n", + "* Improve the formatting of the outputs print statements \n", + "* Add functions\n", + " - For loading data\n", + " - For Mean\n", + " - For variance\n", + " - For standard deviation\n", + " - For outputting the results\n", + "* Alter the programme so it calculates the sample variance and standard deviation rather than population (N-1)\n", + "* **Advanced** - Improve the efficiency by calculating the variance and the mean in a single loop, the equation to do that is below\n", + " \n", + " $$v(x,x) = \\sum{(x_i - \\bar{x})^2} = \\frac{\\sum{x_i^2}-\\frac{1}{N}(\\sum{x_i})^2}{N} $$\n" ] } ], From 4b08e256612f2d309b6cd4f654ce1b075de14f73 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 18 Aug 2025 15:51:55 +0100 Subject: [PATCH 58/94] Added good function practise --- lessons/loops_functions/functions_and_scope.ipynb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lessons/loops_functions/functions_and_scope.ipynb b/lessons/loops_functions/functions_and_scope.ipynb index 8f9c343..23700e4 100644 --- a/lessons/loops_functions/functions_and_scope.ipynb +++ b/lessons/loops_functions/functions_and_scope.ipynb @@ -1498,7 +1498,15 @@ " - Arbitrary keyword arguments, ``**kwargs``. Allows an arbitrary number of keyword arguments to be called. You can convert the dictionary to a list using the function '.items()'. ``def my_function(**argument)``.\n", "- Functions can call themselves. This is called recursion. \n", "- Avoid defining functions within functions. Instead, define it separately and call that function from inside the first function. \n", - "- Use docstrings to explain to the user the purpose of the function, the arguments, its returns, limitations, and any other information needed to use it effectively. " + "- Use docstrings to explain to the user the purpose of the function, the arguments, its returns, limitations, and any other information needed to use it effectively. \n", + "\n", + "### Good Practise with Functions\n", + "\n", + "When using functions the following is good advice on how to use them:\n", + "\n", + "- Declare all functions at the begining of the programme, don't scatter the declarations throughout the programme, it breaks the flow and makes it hard to understand\n", + "- Don't declare a function within a function. This is an unusal coding style, which is only necessary in a few specialist cases\n", + "- Pass values into function through the arguments, don't rely on variable scope" ] }, { From 7e95ab909545fa4bcd26c174aac69b8ecdf3c483 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Mon, 18 Aug 2025 16:48:25 +0100 Subject: [PATCH 59/94] Matplotlib updates --- _toc.yml | 2 +- .../common_libs/images/single_line_fig.png | Bin 0 -> 90963 bytes lessons/common_libs/matplotlib_lesson.ipynb | 144 +++++ ...M.ipynb => matplotlib_pyplot_basics.ipynb} | 128 +++-- lessons/loops_functions/for_loops.ipynb | 128 ++++- .../loops_functions/functions_and_scope.ipynb | 506 ++++++++++-------- 6 files changed, 624 insertions(+), 284 deletions(-) create mode 100644 lessons/common_libs/images/single_line_fig.png create mode 100644 lessons/common_libs/matplotlib_lesson.ipynb rename lessons/common_libs/{python-in-chem_pyplot_basics_SM.ipynb => matplotlib_pyplot_basics.ipynb} (91%) diff --git a/_toc.yml b/_toc.yml index 2d2eea3..c23401b 100644 --- a/_toc.yml +++ b/_toc.yml @@ -39,7 +39,7 @@ parts: - file: lessons/solving_problems/style-and-comments.ipynb - file: lessons/common_libs/common_libraries.md sections: - - file: lessons/common_libs/python-in-chem_pyplot_basics_SM.ipynb + - file: lessons/common_libs/matplotlib_pyplot_basics.ipynb - file: lessons/common_libs/Matplotlib_Documentation.ipynb - file: lessons/common_libs/Introduction_to_NumPy.ipynb - file: lessons/common_libs/NumPy_axes_operations.ipynb diff --git a/lessons/common_libs/images/single_line_fig.png b/lessons/common_libs/images/single_line_fig.png new file mode 100644 index 0000000000000000000000000000000000000000..330ef2e9ac1ef46170d907771ae780c03439afbe GIT binary patch literal 90963 zcmZs@2Ut^E*DZ|4V;3xlNVNr#F4DV-0s(0up%+C%4@e2U*g1fT1QMk8lF)kx3q?AF zPADQI^bVoJzk=s|zwh4r@8^MJ?_{sN>X>7WIadO-G?eL2v!14-qoaqaJcQBFoxsx3 z9k)Mu99((M?#K^bjyS`VAJApDu}_1Ozb)^p->0L?3qG^^^cXll^+LtKnU3zF3+?a7 zh{aWRI=X`t=)?PPchk9HH+ML4`(U{}V(s3^QygbZj%Z)Ha6$Xq$o;@4J5AZg&XiZ+ zigsOk1Ok7T+Zvgez+9L1>SVjqR(VlvKXa&Hu3;?gFJN#5LauR7S@iS6o* z3i5(-Xx3<#VN%-+gywgeqG7i45EF6N&)tM?xQIZ^`2L?Y2;s^hxIS-N{z z_gy-=hrFCWSWV;mod2qmBe0z~FK1Y6hi_?lEMj~Uhm1)0jGrmbU_A;CE(uv%b0L$- z5l?IQ7nAdAATMhgELM+H7!*8ANlDcWY;HFWzPDU|(cVn6`{Y=#+@N0r`ILkjsCNFG zs+*+2PGFIxS^~qKVRH1*6yBfw2z!eFr*k;MowUc8urC*rC|TxM3};$$_Z2Y*Y`m^= z9p0w|l2RD3Diwz!IaM?-_Vb4esI5Dn@Q++|i{s>7-`b!^g-?dH`O;&WnD;1g(he%j z0m)8PW5<~2?xB`8kI?-Cmwhi*Ib*7rZqH6PgMr(hrP!{f&eR`qKvz}$9SV2#5ZqLg z-}I`aZd{9vGK$~b^^Viu3fjR=9uM3Zk6;VTYRrE#YFENh-rByHm{6>BH>W~aqJ)%{ zPh4rzXwD})VMiOE&+!s_d&&$eetp*U&NUltkxGsWx0nrITrG6adBw1B8@BN3BGV+c z(d0&%TJrD8yJXJWo!`uYz^4hmTk?7e0QvQYJ_4l)kzTi=#6Vn|F<_5TwFIUvE z1HD+>47U0hKh53RKEfk@%XDQs%1(ve)wMl+nh`o#4|K0m7j(>hTTP3PmD*33x)v;vecP*KmS3WH%zpE=Wd zhmH>Md-*8cdA$4CGchw4d19YGR>$0>OH?Zz(L3Q>g9w$nhqiHMQ&m-kIXZeIJV9qV zFt@CEkVnlpznVFHHOurUc%D*hwZOP4(eA4ENle_&%<@^}dgBeB<@FN7o$*^p#Xd&H%#^Ysq(`x@Aug*bDhQ5Q)P;r^xkgOn zn6`K(?Hm8)FeHlHXytAQ7=Qcf^7MrXu9o-G4 z;HMvxllQOXHJ}&?9_v6fQ9aldAnwO@oc!xnCA7tKWSc zp#c{eFJ59~)baQBJ>NdkmAgy&iC&k1}pFC$@Eg15uYJ$csRwi z*>xb_+^&&~LzN+oik~BP^R~;5=J98E4yPW~Ir{LkA9FmU0d5_ZFxDtGo?xjlIGyU;+^K+I{&^%B*IQm z&Aue-id*#ahT92m7?3cznCV>WlpT{+wI*x#D3~j}2D( zg$hNRuc~Bc8E8z~-p3&)>&X#geDeMX6N?bu#2*KH99Z4@S+{*RCwax~qZm%bZ<713 zAlwc&-N%~(0DuT!>fCxCX91F#6%INu6|8$lp+@N?9CU0qq{qP+Y*_ZxUX_d~B z%}iMo!(it|Z@Fo_hcsd_*`?w!tvrapLQ-f&H;zeX|AgNYqmb&Y+lo=R$#h8)hBPmD zFmFhnZB~`8tatSBiSli;93ThrR2U1^6}`x4_zI74af~!{)3~jN;5O4{>S~O ze%ws~FTd>P685vU?{4Fb<4Ug5-E+T&KTDUc8qX|vA;w+f6nz4~* zvL45M5XbU~Rjh0{jJ-cKzhzH8?+XrfsZYAJ)+zZ#_@GlAE(cYKMr4cohNPI)wCg-g z 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 R%d^I$7&=~SwtfAcV;sH3qVI?t_t$1_)fMjT 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 literal 0 HcmV?d00001 diff --git a/lessons/common_libs/matplotlib_lesson.ipynb b/lessons/common_libs/matplotlib_lesson.ipynb new file mode 100644 index 0000000..20e910a --- /dev/null +++ b/lessons/common_libs/matplotlib_lesson.ipynb @@ -0,0 +1,144 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "3cb57363", + "metadata": {}, + "source": [ + "# Introduction to MatPlotLib.PyPlot" + ] + }, + { + "cell_type": "markdown", + "id": "22bbd2c0", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "\n", + "- Variables\n", + "- Lists\n", + "- Loops\n", + "- Functions" + ] + }, + { + "cell_type": "markdown", + "id": "be9c3359", + "metadata": {}, + "source": [ + "## Learning Outcomes\n", + "\n", + "- " + ] + }, + { + "cell_type": "markdown", + "id": "71d76ed1", + "metadata": {}, + "source": [ + "## Interface" + ] + }, + { + "cell_type": "markdown", + "id": "aca73d16", + "metadata": {}, + "source": [ + "MatPlotLib is a comprehensive library for creating static, animated, and interactive visualisations. Within MatPlotLib, the module PyPlot provides a fairly intuitive way of plotting, and is able to open interactive figures on your screen.\n", + "\n", + "There are two different ways of using the library: an explicit or \"Axes\" interface, and an implicit \"pyplot\" interface. The explicit interfaces defines each figure step by step and builds the visualisation step-by-step, with every step explicitly defined. The implicit method keeps track of the last Figure and Axes created and adds aditional content to the object it thinks the user wants. \n", + "\n", + "If you are only plotting simple figures, the implicit method is sufficient, however if you wish to create multiple figures, you may run into problems trying to refer to the correct figure, and should use the explicit method. Be aware that many online examples will use the two methods interchangeably, and in some cases, at the same time. Have a look on the MatPlotLib website for more information on the [two interfaces](https://matplotlib.org/stable/users/explain/figure/api_interfaces.html).\n", + "\n", + "To use matplotlib.pyplot simply import it. It is usually imported using the alias `plt`. \n", + "\n", + "```Python\n", + "import matplotlib.pyplot as plt\n", + "```\n", + "\n", + "When a figure is generated, it will appear in a separate window, and can be manipulated. " + ] + }, + { + "cell_type": "markdown", + "id": "fa4bd04c", + "metadata": {}, + "source": [ + "## Plotting a single figure (implicit)" + ] + }, + { + "cell_type": "markdown", + "id": "62590338", + "metadata": {}, + "source": [ + "The most basic way of producing a line graph is using the pyplot function `plot`. Below is an example and the output from running it. " + ] + }, + { + "cell_type": "markdown", + "id": "5c83c9d2", + "metadata": {}, + "source": [ + "```Python\n", + "import matplotlib.pyplot as plt\n", + "\n", + "x = [1,2,3,4,5,6,7,8,9,10]\n", + "y = [1,4,9,16,25,36,49,64,81,100]\n", + "\n", + "plt.plot(x, y, color=\"pink\")\n", + "plt.show() \n", + "```\n", + "\n", + "\"single" + ] + }, + { + "cell_type": "markdown", + "id": "0b31fb6a", + "metadata": {}, + "source": [ + "Let's go through step by step.\n", + "\n", + "- First we import the module pyplot and assign it the alias `plt`." + ] + }, + { + "cell_type": "markdown", + "id": "4c147a83", + "metadata": {}, + "source": [ + "## Design elements" + ] + }, + { + "cell_type": "markdown", + "id": "6bb5c959", + "metadata": {}, + "source": [ + "## Adding labels" + ] + }, + { + "cell_type": "markdown", + "id": "f5671336", + "metadata": {}, + "source": [ + "## Plotting multiple figures (explicit)" + ] + }, + { + "cell_type": "markdown", + "id": "e41c1c1d", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/lessons/common_libs/python-in-chem_pyplot_basics_SM.ipynb b/lessons/common_libs/matplotlib_pyplot_basics.ipynb similarity index 91% rename from lessons/common_libs/python-in-chem_pyplot_basics_SM.ipynb rename to lessons/common_libs/matplotlib_pyplot_basics.ipynb index 84c169b..6cbe468 100644 --- a/lessons/common_libs/python-in-chem_pyplot_basics_SM.ipynb +++ b/lessons/common_libs/matplotlib_pyplot_basics.ipynb @@ -10,37 +10,111 @@ "tags": [] }, "source": [ - "# Matplotlib Pyplot Basics\n", - "\n", - "
        \n", - "\n", - "## Pre-requesites\n", + "# Matplotlib Pyplot" + ] + }, + { + "cell_type": "markdown", + "id": "fc5145a2", + "metadata": {}, + "source": [ + "## Prerequisites\n", "\n", "- Variables\n", "- Lists\n", - "- ...\n", - "- ...\n", - "- ...\n", - "- ...\n", - "\n", - "
        \n", - "\n", + "- Loops\n", + "- Functions" + ] + }, + { + "cell_type": "markdown", + "id": "3f51056a", + "metadata": {}, + "source": [ "## Learning Outcomes\n", "\n", "- Plot scatter and line plots of lists of data\n", "- Include axis labels\n", - "- Modify some of the appearances of the plots \n", + "- Modify some of the appearances of the plots " + ] + }, + { + "cell_type": "markdown", + "id": "a025f666", + "metadata": {}, + "source": [ + "## Matplotlib and Pyplot" + ] + }, + { + "cell_type": "markdown", + "id": "7d81fd03", + "metadata": {}, + "source": [ + "MatPlotLib is a comprehensive library for creating static, animated, and interactive visualisations. Within MatPlotLib, the widely-used module PyPlot provides a fairly intuitive way of plotting, and is able to open interactive figures on your screen.\n", "\n", - "One of the important applications of Python is to create high quality visualisations such as graphs. There are multiple libraries that can be used for producing plots, but one of the most widely used in chemistry is `matplotlib`.\n", + "There are two different ways of using the library: an explicit or \"Axes\" interface, and an implicit \"pyplot\" interface. The explicit interfaces defines each figure step by step and builds the visualisation step-by-step, with every step explicitly defined. The implicit method keeps track of the last Figure and Axes created and adds aditional content to the object it thinks the user wants. \n", "\n", + "If you are only plotting simple figures, the implicit method is sufficient, however if you wish to create multiple figures, you may run into problems trying to refer to the correct figure, and should use the explicit method. Be aware that many online examples will use the two methods interchangeably, and in some cases, at the same time. Have a look on the MatPlotLib website for more information on the [two interfaces](https://matplotlib.org/stable/users/explain/figure/api_interfaces.html).\n", "\n", - "The library `matplotlib` has multiple modules. The module of interest here is `pyplot` and its primary function is generating data plots. This module has a widely used alias, `plt`, and can be imported using the following line of code.\n", + "To use matplotlib.pyplot simply import it. It is usually imported using the alias `plt`. \n", "\n", - "`import matplotlib.pyplot as plt`\n", + "```Python\n", + "import matplotlib.pyplot as plt\n", + "```\n", "\n", - "### Line plots\n", + "When a figure is generated, it will appear in a separate window, and can be manipulated. " + ] + }, + { + "cell_type": "markdown", + "id": "486161f1", + "metadata": {}, + "source": [ + "## Simple line and scatter plots\n", + "\n", + "One of the most important commands within the `pyplot` module is `plt.plot(x,y)`. This command instructs Python to produce a line plot of data contained in the list with variable name `x` on the horizontal axis and the data contained in the list with variable name `y` on the vertical axis. Each point is then connected with a straight line. " + ] + }, + { + "cell_type": "markdown", + "id": "95867e69", + "metadata": {}, + "source": [ + "```Python\n", + "import matplotlib.pyplot as plt\n", + "\n", + "x = [1,2,3,4,5,6,7,8,9,10]\n", + "y = [1,4,9,16,25,36,49,64,81,100]\n", + "\n", + "plt.plot(x, y, color=\"pink\")\n", + "plt.show() \n", + "```\n", + "\n", + "\"single" + ] + }, + { + "cell_type": "markdown", + "id": "b14bff49", + "metadata": {}, + "source": [ + "Let's go through step by step.\n", + "\n", + "- First we import the module pyplot and assign it the alias `plt`. You can do this in two ways, but they are equivalent:\n", + " 1. `import matplotlib.pyplot as plt`\n", + " 2. `from matplotlib import pyplot as plt`\n", + "\n", + "- Next we have defined the data we are plotting. This is two lists, of x and y data. \n", + "\n", + "- We call the function using `plt.plot(x, y)`. \n", + " - This creates a figure and automatically sizes the axes. \n", + " - The first two arguments of the function are the x and y data. If you only provide one list of data, it will automatically assign the x axis integer values from 0 upwards. \n", + " - There are numerous keyword arguments that you can put here to affect design. This includes `color`, `linewidth`, `marker`, `linestyle`, and `markersize`. Be aware that 'colour' is smelled the US way. \n", "\n", - "One of the most important commands within the `pyplot` module is `plt.plot(x,y)`. This command instructs Python to produce a line plot of data contained in the list with variable name `x` on the horizontal axis and the data contained in the list with variable name `y` on the vertical axis." + "- `plt.show()` prints all created figures to your screen. In most IDEs this is required, but be aware that some IDEs (e.g. Jupyter) will automatically print the figure without needing this line. \n", + "\n", + "If you wanted to create a scatter graph instead of a line graph, you can easily do this by replacing `plt.plot()` with `plt.scatter()`." ] }, { @@ -80,7 +154,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "33eee2a9-87e2-4392-b5ac-17b797f550d9", "metadata": { "slideshow": { @@ -93,7 +167,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ "
        " ] @@ -105,7 +179,6 @@ } ], "source": [ - "\n", "import matplotlib.pyplot as plt\n", "\n", "group = [13,14,15,16,17,18]\n", @@ -126,7 +199,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ "
        " ] @@ -166,16 +239,7 @@ "The axis labels are strings inside the brackets, between speech marks in the same way strings are used in the `print()` function.\n", "\n", "The command `plt.show()` instructs pyplot to display the graph. \n", - "(SM: this seems overly simplistic but i'm not completely sure the difference between interactive and non-interactive mode. \n", - "\n", - "
        \n", - "\n", - "### Scatter plots\n", - "\n", - "Another option instead if a line plot is to use a scatter plot. For this option in `pyplot` use the command:\n", - "`plt.scatter(x,y)`\n", - "where `x` is the variable name of the list to be plotted on the x-axis, and `y` the variable name of the list to be plotted on the y-axis.\n", - "\n" + "(SM: this seems overly simplistic but i'm not completely sure the difference between interactive and non-interactive mode. " ] }, { diff --git a/lessons/loops_functions/for_loops.ipynb b/lessons/loops_functions/for_loops.ipynb index 5333bf7..a654495 100644 --- a/lessons/loops_functions/for_loops.ipynb +++ b/lessons/loops_functions/for_loops.ipynb @@ -622,10 +622,10 @@ "
        \n", " Creating a list using loops\n", "\n", - "If you want to quickly create a list containing lots of numbers, you could use a ``for`` loop. In the following example, I am creating a list of the values of ml, the magnetic quantum number, for an f orbital. This takes values of -2 to 2.\n", + "If you want to quickly create a list containing lots of numbers, you could use a ``for`` loop. In the following example, we are creating a list of the values of ml, the magnetic quantum number, for an f orbital. This takes values of -2 to 2.\n", "\n", "```Python\n", - "# ml values of a d orbital\n", + "# ml values of an f orbital\n", "ml_d_orbital = []\n", "\n", "for i in range(-2, 3, 1):\n", @@ -668,7 +668,7 @@ "
        \n", " Creating an empty nested list\n", "\n", - "In one of my projects I would like to create a list of empty coordinates to use later. I want the coordinate [0,0,0] repeated 1000 times. Instead of writing it out manually, I use a ``for`` loop. Copy out and run this code. Check the correct number of coordinates are being outputted, then change it to create a list of 1000 empty coordinates.\n", + "In a certain projects you may need to create a list of empty coordinates to use later. In this case, the coordinate [0,0,0] repeated 1000 times. Instead of writing it out manually, you can use a ``for`` loop. Copy out and run this code. Check the correct number of coordinates are being outputted, then change it to create a list of 1000 empty coordinates.\n", "\n", "```Python\n", "coordinates = []\n", @@ -683,7 +683,7 @@ "The output is:
        \n", " [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] \n", "\n", - "For the purposes of testing that my program will work, I have used the number '10', however when I want to run it for real, I can make this number as large as I want.\n", + "For the purposes of testing that the program will work, you can use the number '10' and count it by hand. However, you can make this number as large as you want. Change `range(10)` to `range(1000)` to see this in action.\n", "\n", "If you have not seen the syntax ``[0]*3``, all it means is to create a list comprised of '0' three times. It is a quicker way of creating large lists of the same number. \n", "\n", @@ -695,7 +695,7 @@ "metadata": {}, "source": [ "
        \n", - "
        Exercise: Task 1: Correct the error \n", + "
        Exercise: Correct the error \n", "\n", "---\n", "\n", @@ -752,14 +752,15 @@ "\n", "
        \n", "\n", - ">``` Python\n", - "># Empty list of atomic weights for all elements with f electrons in the neutral state\n", - ">f_electrons = []\n", - ">\n", - ">for i in range(58, 103):\n", - "> f_electrons.append(i)\n", - ">\n", - ">print(f_electrons)\n", + "``` Python\n", + "# Empty list of atomic weights for all elements with f electrons in the neutral state\n", + "f_electrons = []\n", + "\n", + "for i in range(58, 103):\n", + " f_electrons.append(i)\n", + "\n", + "print(f_electrons)\n", + "```\n", "\n", "First we create an empty list. The element Cerium, just after Lanthanum, is the first element with f electrons, so it is the start of the range. Nobelium, with atomic number 102, is the last element, however because of Python's 0-indexing, we must set the final value as 103, not 102. The output of this is a list of elemental atomic numbers:\n", "\n", @@ -787,7 +788,7 @@ " print(j)\n", "```\n", "\n", - "The inner code ``for j in range(1,4)`` runs three times, counting from 1 to 3 (remember 0-indexing!). It does this the number of times dictated by the outer loop ``for i in range(4)``. Every time this outer loop starts, it has been signposted by the print() phrase. \n", + "The inner code ``for j in range(1,4):`` runs three times, counting from 1 to 3 (remember 0-indexing!). It does this the number of times dictated by the outer loop ``for i in range(4)``. Every time this outer loop starts, it has been signposted by the print() phrase. \n", "\n", "If you are struggling to understand nested loops, have a look at the [flowcharts](../solving_problems/flowcharts.ipynb) lesson." ] @@ -824,7 +825,7 @@ "
        \n", " Identifying items repeated in two lists\n", "\n", - "You have two lists and want to make sure than none are repeated from one list to the other. You could use nested lists to check every combination of th two lists.\n", + "You have two lists and want to make sure than none are repeated from one list to the other. You could use nested lists to check every combination of the two lists.\n", "\n", "```Python\n", "molecs1 = [\"H2O\", \"HCN\", \"CO2\", \"NH3\"]\n", @@ -899,6 +900,76 @@ "

        \n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
        \n", + "
        Exercise: Nested loops and nested lists \n", + "\n", + "---\n", + "\n", + "Write a program that adds up each molecule's mass from a nested list of their atomic masses, given below. \n", + "\n", + "Since the nested lists are different lengths, you cannot use square brackets to retrieve items as we did above, or you will receive indexing errors. Instead, iterate through the larger list, then through the smaller lists, to obtain your masses. \n", + "\n", + "\n", + "molecules = [\"H2O\", \"H2\", \"C2H4\", \"NaOH\", \"CH3OH\"]
        \n", + "atom_masses = [[1.008, 1.008, 15.999], [1.008, 1.008], [12.011, 1.008, 1.008, 12.011, 1.008, 1.008], [22.989, 15.999, 1.008], [12.011, 1.008, 1.008, 1.008, 15.999]]\n", + "
        \n", + "\n", + "
        " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
        \n", + " Click to view answer\n", + "\n", + "
        \n", + "\n", + "``` Python\n", + "molecules = [\"H2O\", \"H2\", \"C2H4\", \"NaOH\", \"CH3OH\"] \n", + "atom_masses = [[1.008, 1.008, 15.999], [1.008, 1.008], [12.011, 1.008, 1.008, 12.011, 1.008, 1.008], [22.989, 15.999, 1.008], [12.011, 1.008, 1.008, 1.008, 15.999]]\n", + "\n", + "# An empty list to store the molecular masses\n", + "molecule_masses = []\n", + "\n", + "# Loop through each molecule's atomic masses and calculate the total mass\n", + "for molecule in atom_masses:\n", + " mass = 0\n", + " # Loop through each atom's mass in the molecule\n", + " for atom_mass in molecule:\n", + " mass += atom_mass\n", + " mass = round(mass, 3)\n", + " # This occurs after the inner loop, so it gives the total mass of the molecule\n", + " molecule_masses.append(mass)\n", + "\n", + "print(f\"Molecules: {molecules}\")\n", + "print(f\"Molecular masses / g mol-1: {molecule_masses}\")\n", + "```\n", + "\n", + "---\n", + "\n", + "Let's talk through this code step by step:\n", + "\n", + "- The first thing we do is define an empty list that will hold the masses of each molecule. \n", + "\n", + "- The outer loop `for molecule in atom_masses:` will loop through each nested list. The temporary variable name `molecule` will first take the value of [1.008, 1.008, 15.999], then on the next loop will become [1.008, 1.008], and so on. Each time this loop moves on to a new list, the value of `mass` will reset to 0.\n", + "\n", + "- The inner loop `for atom_mass in molecule:` will loop through each mass in the list stored by the temporary variable `molecule`, each time adding it to the mass variable. This loop is effectively doing `mass = 0 + 1.008 + 1.008 + 15.999` for the first molecule, and then resetting to 0 to do the same for the second molecule. \n", + "\n", + "- The mass calculated for each molecule is appended to our empty list of masses in the *outer* loop (indented only once). If it did this wthin the inner loop (indented twice), then every single calculation of the mass would be added to the list. Try running it with this line indented twice to see the outcome. \n", + "\n", + "- Finally, our molecules and their corresponding masses are printed to the console. If we wanted to peint them out item-wise, we could use another `for` loop and `zip()` the two lists together. Another option could be to zip them together in the outer loop and place our print function within there. \n", + "\n", + "The built-in function `round()` is used here to ensure every mass is given to 3 decimal places. The function takes two arguments (things placed within the brackets of the function): the variable you want to round, and the number of decimal places you want to round it to. \n", + "\n", + "

        " + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -907,9 +978,9 @@ "\n", "One way we can have more control over our loops is by using the Python commands ``continue`` and ``break``.\n", "\n", - "``continue`` is used to end the current iteration of the loop, and continue on to the next iteration.\n", + "``continue`` is used to end the current iteration of the loop, and *continue* on to the next iteration.\n", "\n", - "``break`` is used to end the current loop.\n", + "``break`` is used to *end* the entire loop.\n", "\n", "Run the two sets of code below and compare them.\n", "\n", @@ -979,7 +1050,7 @@ "
        \n", " Using break\n", "\n", - "To retrieve onlyt the first molecule that contains an oxygen atom, this code uses ``break``.\n", + "To retrieve only the first molecule that contains an oxygen atom, this code uses ``break``.\n", "\n", "```Python\n", "molecules = [\"HCN\", \"NH3\", \"H2O\", \"CO2\"]\n", @@ -1019,6 +1090,7 @@ "\n", "```Python\n", "wavelengths = [276, 59, 0.5, 1183, 52, 0.002, 127, 474] # nm\n", + "\n", "h = 6.626e-34 # m^2kgs^-1\n", "c = 3.00e8 # ms^-1\n", "workfunction = 1.017e-18 # J\n", @@ -1048,7 +1120,7 @@ " print(value, \"nm will NOT release an electron\")\n", "```\n", "\n", - "The output of this code is a bit difficult to read. Perhaps you could try instead appending to a list of wavelengths that do release an electron and a list of wavelengths that do not release an electron.\n", + "The output of this code works, but is a bit difficult to read. Perhaps you could try instead appending to a list of wavelengths that do release an electron and a list of wavelengths that do not release an electron.\n", "\n", "

        " ] @@ -1085,7 +1157,7 @@ "peak_shift = [3542.63, 3497.12, 3077.12, 3002.03, 2930.46, 2925.47, 2919.60, 2740.36, 1730.00, 1715.89, 1710.20, 1705.23, 1700.458, 1599.30, 1434.42, 1109.34, 808.34, 550.02, 428.43] # cm-1\n", "peak_transmittance = [66, 73, 41, 57, 95, 96, 97, 70, 38, 35, 97.2, 95.9, 96.1, 50, 59, 97.8, 99.0, 74, 66.0] # %\n", "\n", - "# Empty lists of the data we want to keep from the above lists\n", + "# Empty lists of the major peaks we want to keep\n", "maj_peak_shift = []\n", "maj_peak_transmittance = []\n", "\n", @@ -1096,12 +1168,26 @@ " print(f\"{shift} cm-1, {transmittance} %\")\n", " maj_peak_shift.append(shift)\n", " maj_peak_transmittance.append(transmittance)\n", + " else:\n", + " continue\n", " \n", "print(maj_peak_shift)\n", "print(maj_peak_transmittance)\n", "```\n", "\n", - "Try out this code. Does the output of this code match yours? This is another example of using logic operators in our answer.\n", + "Try out this code. Does the output of this code match yours? \n", + "\n", + "Let's talk through it step by step.\n", + "\n", + "- First we have defined out lists of data, and our empty lists to contain our major peaks.\n", + "\n", + "- With a `for` loop, we have xipped the two lists together. Values in the list `peak_shift` are given the temporary variable name `shift` and values in the list `peak_transmittance` are given the temporary variable name `transmittance`. \n", + "\n", + "- With an `if` statement, we are checking that two comparisons are *both* true using the logical operator `and`. For each loop, we must ensure that the shift is greater than 1500 AND the transmittance is less than 95.\n", + "\n", + "- The lines of indented code just after the `if` statement will only run *if* both comparisons above are True. The peak wavenumber and its transmittance are printed, and both numbers appended to separate lists. \n", + "\n", + "- The `else:` statement contains the indented word `continue` and nothing else. If either of the comparisons in the `if` statement are False, the code will simply *continue* onto the next loop. \n", "\n", "

        " ] diff --git a/lessons/loops_functions/functions_and_scope.ipynb b/lessons/loops_functions/functions_and_scope.ipynb index 7565634..cbe307a 100644 --- a/lessons/loops_functions/functions_and_scope.ipynb +++ b/lessons/loops_functions/functions_and_scope.ipynb @@ -9,20 +9,18 @@ "\n", "## Prerequisites\n", "\n", - "- Variables and Data Types\n", - "- Mathematical Operators\n", - "- Conditional Execution\n", - "- Loops\n", + "- [Variables and Data Types](../variables/Variable_data_types.ipynb)\n", + "- [Mathematical Operators](../variables/mathematical_operators.ipynb)\n", + "- [Conditional Statements](../loops_functions/conditional_statements.ipynb)\n", + "- [For Loops](../loops_functions/for_loops.ipynb)\n", "- Lists, Dictionaries and Tuples\n", "\n", "## Learning Objectives\n", "\n", - "- To learn how to re-run code which will be used often\n", - "- To understand the purpose of a function\n", - "- Understanding how function arguments work\n", - "- Understanding how functions return information\n", - " \n", - " \n" + "- To understand the purpose of a function, how they are written, and how they are called.\n", + "- To define your own functions, and use them in your code.\n", + "- To understand function arguments and return statements.\n", + "- To write and use a docstring. " ] }, { @@ -38,11 +36,11 @@ "id": "9989ffd4", "metadata": {}, "source": [ - "We have already seen a number of functions in Python, although you might not have realised that that's what they were. For example the built-in functions, ``print()``, ``range()``, ``type()``, ``len()``, as well as some those from other modules like ``math``, including ``math.cos()`` and ``math.log10()``. Each of these functions do a specific task which would take a long time to write out by hand in your program. Each function takes one or multiple inputs, which you place inside the brackets (like ``print(\"hello\")``, where in this case the string ``\"hello\"`` is the input, and the output would be the word 'hello'). You don't need to write a script explaining to the computer how to translate the input and put it onto your screen, because it is already linked to the word ``print()``, which runs all that code automatically once typed. \n", + "We have already seen a number of functions in Python, although you might not have realised that that's what they were. For example, the built-in functions, ``print()``, ``range()``, ``type()``, ``len()``, as well as some those from the module ``math``, including ``math.cos()`` and ``math.log10()``. Each of these functions do a specific task which would take a long time to write out by hand in your program. Each function takes one or multiple inputs (known as **arguments**), which you place inside the brackets (like ``print(\"hello\")``, where in this case the string ``\"hello\"`` is the argument, and word 'hello' is returned on your console). You don't need to write a script explaining to the computer how to translate the input and put it onto your screen, because it is already linked to the word ``print()``, which runs all that code automatically once typed. \n", "\n", "Long story short, functions save time.\n", "\n", - "This is relevant to us because we will probably use the same lines of code over and over again. For example, the code below takes a list of atomic masses and iterates through it, adding each individual atom mass to output the total molecule's mass.\n", + "This is relevant because we will want to use the same lines of code over and over again. For example, the code below takes a list of atomic masses and iterates through it, adding each individual atom mass to output the total molecule's mass.\n", "\n", "```Python\n", "ethene_atom_masses = [12.011, 12.011, 1.008, 1.008, 1.008, 1.008]\n", @@ -55,7 +53,7 @@ "print(total_mass)\n", "```\n", "\n", - "It well to add up the numbers in the list, and if we're just doing this once, will serve perfectly fine. However, if you had another list you needed to add up this way, you would need to write this expression again. If you had 100 lists, you could be spending a lot of time writing just these few lines of code.\n", + "It works to add up the numbers in the list, and if we're just doing it only once, it will serve perfectly fine. However, if you had another list you needed to add up this way, you would need to write this expression again. If you had 100 lists, you could be spending a lot of time writing just these few lines of code.\n", "\n", "This is where functions come in. \n", "\n", @@ -78,14 +76,14 @@ "Defining functions, like the rest of Python, always takes a specific syntax. This is:\n", "\n", "```Python\n", - "def function_name(an_input):\n", - " Code block, e.g. doing maths on an_input\n", + "def function_name(an_argument):\n", + " Code block, e.g. doing maths on an_argument\n", " return an_output\n", "```\n", "\n", "- ``def`` indicates that we are about to define a new function. \n", - "- ``function_name()`` is what we name it. This is the name that we will use to call our function later on.\n", - "- ``(an_input)`` is the variable that the function will act on, known as the function's argument. It could be a number, string, list, etc., but whatever it is, we need to make sure that we treat it like the correct variable type throughout the main code block. \n", + "- ``function_name()`` is what we will use to call our function later on.\n", + "- ``(an_argument)`` is the variable that the function will act on, known as the function's argument. It could be a number, string, list, etc., but whatever it is, we need to make sure that we treat it like the correct variable type throughout the main code block. \n", "- ``:`` indicates the start of the code that will run whenever we call our function.\n", "- ``Code block`` is a placeholder indicating the main body of the code. This could be maths, reading from a file, or many other things. The main body of the code is indented using the ```` key, just like with 'if', 'for, and 'while'. All the code belonging to this function must be indented and directly below the line ``def function_name():``. You can use 'if', 'for' and 'while' within this code block, but they must respect the first indent.\n", "- ``return`` indicates the end of the function, and must be one indent away from the margin (unless it is nested within another statement - more on that later). The real meaning of ``return`` is that the variable which comes after it (in this case, ``an_output``) is what the function will spit out at the end. In reality, this means you could have a ``return`` statement halfway down your function.\n", @@ -101,7 +99,7 @@ " return total_mass\n", "```\n", "\n", - "The function's argument (what we are putting in) has been named ``list_of_atoms``, instead of the more specific ``ethene_atom_masses``. This is because we want this function to be general, to apply not only to a list of atoms in ethene, but also to other lists containing the masses of atoms in propene, butene, benzenehexacarboxylic acid, and so on. \n", + "The function's argument (what we are putting in) has been named ``list_of_atoms``, instead of the more specific ``ethene_atom_masses``. This is because we want this function to be general, to apply not only to a list of atoms in ethene, but also to other lists containing the masses of atoms in other molecules.\n", "\n", "Another thing you will notice is that the variable ``list_of_atoms`` is treated like a list even though it is never explicitly defined as such. When you call your function (discussed in the next section), you must make sure your input is the correct variable type.\n" ] @@ -126,9 +124,12 @@ ">\n", ">formaldehyde_mass = add_atomic_masses(formaldehyde_atom_masses)\n", ">\n", - ">print(formaldehyde_mass)\n", + ">print(formaldehyde_mass, \"g mol-1\")\n", "\n", - "An important thing to note is that you can only reference variables from within your function definition if they appear on the ``return`` line.\n", + "The output of this is:
        \n", + "`30.025999999999996 g mol-1`\n", + "\n", + "An important thing to note is that you can only reference variables from within your function definition if they appear on the ``return`` line. In this case, we can only access `total_mass` (which has been renamed to `formaldehyde_mass`). If `total_mass` did not appear on the return line we would not be able to refer to it. \n", "\n", "This would work exactly the same with another list of atoms, for example:\n", "\n", @@ -195,18 +196,19 @@ "\n", "In part 1, we are creating a function to take a single variable as an argument and return a single variable. \n", "\n", - ">```Python\n", - ">eV_value = 4.08 # eV\n", - ">\n", - ">def convert_eV_J(value_eV):\n", - "> value_J = value_eV * 1.602e-19\n", - "> return value_J\n", - ">\n", - ">print(convert_eV_J(eV_value), \"J\")\n", + "```Python\n", + "eV_value = 4.08 # eV\n", + "\n", + "def convert_eV_J(value_eV):\n", + " value_J = value_eV * 1.602e-19\n", + " return value_J\n", + "\n", + "print(convert_eV_J(eV_value), \"J\")\n", + "```\n", "\n", "You should have got the output: 6.53616e-19 J .\n", "\n", - "Instead of creating another variable to describe the new value in J, this piece of code executes the function within a ``print()`` statement. If we wanted to use this value again later, it would be better to store it in a relevantly named variable.\n", + "Instead of creating another variable to describe the new value in Joules, this piece of code executes the function within a ``print()`` statement. If we wanted to use this value again later, it would be better to store it in a relevantly named variable.\n", "\n", "

        " ] @@ -221,27 +223,30 @@ "\n", "In Part 2, we need to take the program we wrote above, and convert it to take a list as an argument, and also return a list.\n", "\n", - ">```Python\n", - ">metal_workfunctions = [4.08, 5.0, 4.07, 2.9, 4.81, 2.1, 5.0, 4.7, 5.1, 4.5] # eV\n", - ">\n", - "># Converts a list in eV to a list in J\n", - ">def convert_eV_J(list_value_eV):\n", - "> list_value_J = []\n", - "> for value in list_value_eV:\n", - "> value_J = value * 1.602e-19\n", - "> list_value_J.append(value_J)\n", - "> return list_value_J\n", + "```Python\n", + "metal_workfunctions = [4.08, 5.0, 4.07, 2.9, 4.81, 2.1, 5.0, 4.7, 5.1, 4.5] # eV\n", + "\n", + "# Converts a list in eV to a list in J\n", + "def convert_eV_J(list_value_eV):\n", + " list_value_J = []\n", + " for value in list_value_eV:\n", + " value_J = value * 1.602e-19\n", + " list_value_J.append(value_J)\n", + " return list_value_J\n", + "```\n", "\n", "Once you have this, you can then either print the whole list in a similar way to Part 1:\n", "\n", - ">```Python\n", - ">print(convert_eV_J(metal_workfunctions))\n", + "```Python\n", + "print(convert_eV_J(metal_workfunctions))\n", + "```\n", "\n", "Or you can print each value on a new line:\n", "\n", - ">```Python\n", - ">for num in convert_eV_J(metal_workfunctions):\n", - "> print(num, \"J\")\n", + "```Python\n", + "for num in convert_eV_J(metal_workfunctions):\n", + " print(num, \"J\")\n", + "```\n", "\n", "Try both. Although lists are better to use throughout the rest of a program, it is easier to look at when they have a new value on each line. \n", "\n", @@ -263,7 +268,7 @@ "source": [ "In Python, the word 'scope' refers to the area in which a variable or function name is valid. For example, if you define a variable at the top of one Python file, you cannot retrieve that variable from another Python file, but you can refer to it from anywhere within the program it belongs to. It is a global variable.\n", "\n", - "Within a function, there is what is called a 'local scope'. This means that variables created within the function cannot be referred to outside the program unless it has been specified to by ``return``, and assigned a new variable name. They are local variables.\n", + "Within a function, there is what is called a 'local scope'. This means that variables created within the function cannot be referred to in the rest of the program unless it has been specified to by ``return``, and assigned a new variable name. They are local variables.\n", "\n", "Here is an example, using the above function ``add_atomic_masses``. \n", "\n", @@ -277,7 +282,7 @@ "\n", "``total_mass`` is a name we gave to our output when defining our function, but if we then try to print it outside the function, Python will return a 'name not defined' error. The name ``total_mass`` belongs to the local scope of the function, and therefore the name cannot be referred to in the rest of the program. However, we can refer to it indirectly and reassign it a new variable name (in this case ``water_mass``).\n", "\n", - "Thinking in reverse, a function does however have access to variables which have not been given to them explicitly as arguments. For example, below is a function which converts pressure in bar to pressuer in mmHg. The conversion rate is 1 bar to 750.062 mmHg, which is stored in a variable before the function. The function is still completely valid, and will work just as well as any of the other examples. \n", + "Thinking in reverse, a function does however have access to variables which have not been given to them explicitly as arguments. For example, below is a function which converts pressure in bar to pressure in mmHg. The conversion rate is 1 bar to 750.062 mmHg, which is stored in a variable before the function. The function is still completely valid, and will work just as well as any of the other examples. \n", "\n", "```Python\n", "bar_mmHg_conversion = 750.062\n", @@ -297,7 +302,7 @@ "source": [ "## More complex functions\n", "\n", - "So far we have covered basic functions, but there are more complex facets to function writing. Some of these complex facets are not often used, especially by beginners, so do not feel you have to memorise all of them. The most important aspects are: empty arguments and return, multiple return conditions, and multiple arguments. \n", + "So far we have covered basic functions, but there are more complex facets to function writing. Some of these complex facets are not often used, especially by beginners, so do not feel you have to memorise all of them. The most important aspects are: empty arguments and return, multiple return conditions, and multiple positional arguments. \n", "\n", "\n", "\n" @@ -338,7 +343,7 @@ "id": "98cbe94f", "metadata": {}, "source": [ - "The function ``write_message()`` has been called later on in the code simply by putting ``write.message()``, at which point the message will be printed to the screen. This is the simplest kind of function - no arguments and no returned variables, and it only does one thing. Therefore, these often have limited uses. Keep in mind, however, that some functions can take no arguments but return a variable, and vice versa. It is important to use the correct syntax depending on the function.\n", + "The function ``write_message()`` has been called later on in the code simply by typing ``write_message()`` on a new line, at which point the message will be printed to the screen. This is the simplest kind of function - no arguments and no returned variables, and it only does one thing. Therefore, these often have limited uses. Keep in mind, however, that some functions can take no arguments but return a variable, and vice versa. It is important to use the correct syntax depending on the function.\n", "\n", "Note also, that even though the function takes no argument, you must still supply empty brackets in order to use it. " ] @@ -371,18 +376,18 @@ "\n", "This is a function which returns both the maximum and the mininum of a list of numbers:\n", "\n", - ">```Python \n", - ">def minmax(number_list):\n", - "> min_value = min(number_list)\n", - "> max_value = max(number_list)\n", - "> return min_value, max_value\n", - ">\n", - ">masses = [1.008, 12.011, 14.007, 6.94]\n", - ">\n", - ">min_mass, max_mass = minmax(masses)\n", - ">\n", - ">print(min_mass)\n", - ">print(max_mass)\n", + "```Python \n", + "def minmax(number_list):\n", + " min_value = min(number_list)\n", + " max_value = max(number_list)\n", + " return min_value, max_value\n", + "\n", + "masses = [1.008, 12.011, 14.007, 6.94]\n", + "\n", + "min_mass, max_mass = minmax(masses)\n", + "print(min_mass)\n", + "print(max_mass)\n", + "```\n", "\n", "This returns:\n", "
        \n", @@ -403,8 +408,6 @@ "- If you only want one of the returned variables, you can put a double underscore ``__`` to indicate that you will not retrieve that answer: ``min_mass, __ = minmax(masses)``. \n", " The function is 'throwing away' the second value. This is useful if you want to test or use only one aspect of the function, or if one of the returned variables takes up a lot of storage space, making your program slow.\n", "\n", - "But that's not all! Not only can a function return more than one statement, it can also have more than one return statement. \n", - "\n", "

        " ] }, @@ -416,19 +419,20 @@ "
        \n", " Using multiple return statements\n", "\n", - "So far, all our functions have had one ``return`` statement, right at the end, but this is not a requirement. A function can have a return statement anywhere, and it can have more than one. This is usually encountered when functions contain if statements, where depending on whether the conditions are met, different sections of the function may execute. \n", + "So far, all our functions have had one ``return`` statement, right at the end, but this is not a requirement. A function can have a return statement anywhere, and it can have more than one. This is usually encountered when functions contain `if` statements, where depending on whether the conditions are met, different sections of the function may execute. \n", "\n", "The below function checks if a given elemental symbool is a noble gas or not using [Boolean logic](../variables/Comparisons.ipynb). There are three different possible return values in the above function, depending on the input.\n", "\n", - ">```Python \n", - ">def is_noble_gas(symbol):\n", - "> if type(symbol) is not str or len(symbol) > 2:\n", - "> print(\"Input must be a 1 or 2 character elemental symbol\")\n", - "> return None\n", - "> elif symbol in [\"He\",\"Ne\",\"Ar\",\"Kr\",\"Xe\", \"Rn\", \"Og\"]:\n", - "> return True\n", - "> else:\n", - "> return False\n", + "```Python \n", + "def is_noble_gas(symbol):\n", + " if type(symbol) is not str or len(symbol) > 2:\n", + " print(\"Input must be a 1 or 2 character elemental symbol\")\n", + " return None\n", + " elif symbol in [\"He\", \"Ne\", \"Ar\", \"Kr\", \"Xe\", \"Rn\", \"Og\"]:\n", + " return True\n", + " else:\n", + " return False\n", + "```\n", "\n", "The first conditional statement confirms that a symbol of no more than two characters has been passed to the function as a string. There are more sophisticated ways to handle this sort of error, but these are outside the scope of this lesson. The key thing here is that based on this test, we can have the function return `None` rather than True or False, if an incompatible input is supplied. \n", "\n", @@ -436,7 +440,7 @@ "\n", "The last statement is ``else:``. Now that we have eliminated every other option, the inputted symbol cannot be a noble gas. \n", "\n", - "However, it is important to recognise limitations. This code would not flag the first ``if`` statement for strings with integers ``\"10\"``, empty strings ``\"\"``, or made-up symbols ``\"TM\"``. You could fix this by adjusting the comparative statement to exclude strings of length 0, and add an 'elif' statement checking that the given symbol is within a list containing all the symbols of the periodic table. It is also quite common to store the periodic table in a dictionary, where the key:value pairs are element_name:element_mass. \n", + "However, it is important to recognise limitations. This code would not flag the first ``if`` statement for strings with integers ``\"10\"``, empty strings ``\"\"``, or made-up symbols ``\"TM\"``. You could fix this by adjusting the comparative statement to exclude strings of length 0, and add an 'elif' statement checking that the given symbol is within a list containing all the symbols of the periodic table. It is also quite common to store the periodic table in a dictionary, where the key:value pairs are element_name:element_mass. Return to the [variables lesson](../variables/Variable_data_types.ipynb) for revision on dictionaries. \n", "\n", "

        " ] @@ -451,12 +455,16 @@ "\n", "---\n", "\n", - "From a list of wavelengths, return the energy in J and the energy in eV in separate lists.\n", + "Write a program that returns both the energy in J and the energy in eV in separate lists, taking a list of wavelengths as an argument.\n", "\n", "$ E = \\frac{hc}{\\lambda} $\n", "\n", "Remember: To convert from J to eV you must divide by 1.602 $\\times$ 10-19.\n", "\n", + "\n", + "wavelengths_light = [276, 59, 0.5, 1183, 52, 0.002, 127, 474] # nm\n", + "\n", + "\n", "
        \n", "
      " ] @@ -469,24 +477,34 @@ "
      \n", " Click to view answer\n", "\n", - ">```Python\n", - ">def energy_calc(wavelengths):\n", - "> h = 6.626e-34 # m^2kgs^-1\n", - "> c = 3.00e8 # ms^-1\n", - "> E_J = []\n", - "> E_eV = []\n", - "> for value in wavelengths:\n", - "> energy_J = (h * c) / (value * 1e-9) # J\n", - "> E_J.append(energy_J)\n", - "> energy_eV = energy_J / 1.602e-19\n", - "> E_eV.append(energy_eV)\n", - "> return E_J, E_eV\n", - ">\n", - ">wavelengths_light = [276, 59, 0.5, 1183, 52, 0.002, 127, 474] # nm\n", - ">\n", - ">energy_light_J, energy_light_eV = energy_calc(wavelengths_light)\n", - ">print(f\"The energies in J are: {energy_light_J}\")\n", - ">print(f\"The energies in eV are: {energy_light_eV}\")\n", + "```Python\n", + "def energy_calc(wavelengths):\n", + " # Constants\n", + " h = 6.626e-34 # m^2kgs^-1\n", + " c = 3.00e8 # ms^-1\n", + " \n", + " # Empty lists of energies\n", + " E_J = []\n", + " E_eV = []\n", + "\n", + " # Iterate through wavelength list, calculate energies in J and eV and append to our lists. \n", + " for value in wavelengths:\n", + " energy_J = (h * c) / (value * 1e-9) # J\n", + " energy_eV = energy_J / 1.602e-19 # eV\n", + " E_J.append(energy_J)\n", + " E_eV.append(energy_eV)\n", + " \n", + " # Return 2 values. \n", + " return E_J, E_eV\n", + "\n", + "wavelengths_light = [276, 59, 0.5, 1183, 52, 0.002, 127, 474] # nm\n", + "\n", + "energy_light_J, energy_light_eV = energy_calc(wavelengths_light)\n", + "print(f\"The energies in J are: {energy_light_J}\")\n", + "print(f\"The energies in eV are: {energy_light_eV}\")\n", + "```\n", + "\n", + "In this code, we are defining our constants h and c within the function. This means if you want to copy this function to a new program, you do not need to worry about ensuring the correct variables are defined in the program. It also prevents name clashes (there might, for some reason, be a different variable also called `c` in another program). \n", "\n", "

      " ] @@ -504,28 +522,34 @@ "id": "2d2ff6b0", "metadata": {}, "source": [ - "Your function can also take multiple arguments. You simply add them into the brackets of your function name, separated by a comma. \n", + "Your function can also take multiple arguments. You simply add them into the brackets of your function name, separated by a comma, and call them in the same way. \n", + "\n", + "```Python\n", + "def my_function(argument_1, argument_2):\n", + " Code block\n", + " return an_answer\n", "\n", - " answer = my_function(20.10, 2003) \n", + "answer = my_function(20.10, 2003)\n", + "```\n", "\n", "Here is an example of a function to calculate the number of mols from a given mass and molecular mass.\n", "\n", ">```Python\n", - ">def no_mols(mass, Mr):\n", - "> n_mols = mass / Mr\n", + ">def no_mols(mass, molar_mass):\n", + "> n_mols = mass / molar_mass\n", "> return n_mols\n", ">\n", - ">mass_aspirin = 1.48 # g\n", - ">Mr_aspirin = 180.158 # g mol-1\n", + ">aspirin_mass = 1.48 # g\n", + ">aspirin_molar_mass = 180.158 # g mol-1\n", ">\n", - ">mols_aspirin = no_mols(mass_aspirin, Mr_aspirin)\n", + ">mols_aspirin = no_mols(aspirin_mass, aspirin_molar_mass)\n", ">print(mols_aspirin , \"mols of aspirin\")\n", "\n", - "Which will output 0.008215011267887077 mols of aspirin , which you can check on a calculator. \n", + "Which will output 0.008215011267887077 mols of aspirin, which you can check on a calculator. \n", "\n", "Your arguments do not have to be the same variable type, you could have a number and a list, as long as you treat them as that variable type in your function. You can add as many arguments as you like, but be aware it might make your function hard to use if you add too many. \n", "\n", - "Furthermore, you need to make sure you input the right number of arguments when calling your function. If your function expects 2 arguments but only receives one, you will get a missing argument error message, and similarly if you put in too many arguments you will get a function expects 'x' arguments but 'y' were given error." + "Furthermore, you need to make sure you input the right number of arguments when calling your function. If your function expects two arguments but only receives one, you will get a missing argument error message, and similarly if you put in too many arguments you will get a function expects 'x' arguments but 'y' were given error." ] }, { @@ -540,13 +564,14 @@ "\n", "Try calling the following using the above function:\n", "\n", - ">```Python\n", - ">mols_aspirin = no_mols(Mr_aspirin , mass_aspirin)\n", - ">print(mols_aspirin, \"mols of aspirin\")\n", + "```Python\n", + "mols_aspirin = no_mols(aspirin_molar_mass , aspirin_mass)\n", + "print(mols_aspirin, \"mols of aspirin\")\n", + "```\n", "\n", - "It will result in the output 121.72837837837837 mols of aspirin. Not the right answer!\n", + "It will result in the output 121.72837837837837 mols of aspirin. Not the right answer! \n", "\n", - "Positional arguments are passed into the function in the order they are listed when defining the function (in this case, ``mass`` first, then ``Mr``). If you put in 'Mr_aspirin' first, then 'mass_aspirin' when you call the function, then 'Mr_aspirin' will take the place of ``mass`` within the function, and 'mass_aspirin' will take the place of ``Mr`` within the function, resulting in the wrong division. \n", + "Positional arguments are passed into the function in the order they are listed when defining the function (in this case, ``mass`` first, then ``molar_mass``). If you put in 'aspirin_molar_mass' first, then 'aspirin_mass' when you call the function, then 'aspirin_molar_mass' will take the place of ``mass`` within the function, and 'aspirin_mass' will take the place of ``molar_mass`` within the function, resulting in the wrong division. \n", "\n", "

      " ] @@ -560,119 +585,90 @@ "
      \n", " Keyword Arguments\n", "\n", - "A keyword argument, or ``kwarg`` is the alternative to positional arguments, and do not have to be called in a specific order. Instead, they are identifiable by a specific name which can be referenced when you call your function. \n", + "A keyword argument, or ``kwarg`` is the alternative to positional arguments, and do not have to be called in a specific order. Instead, they are identifiable by the name given when defining the functino, which must be referenced when calling the function. \n", + "\n", + "```text\n", + "def my_function(kwarg_1, kwarg_2):\n", + " Code block\n", + " return an_answer\n", "\n", - " answer = my_function(kwarg_2 = 2006, kwarg_1 = 3.01) \n", + "answer = my_function(kwarg_2 = 2006, kwarg_1 = 3.01)\n", + "```\n", "\n", "Be aware that nothing has actually changed in the function itself, it is just how the arguments are treated that makes them positional or keyword arguments. Using our example of calculating mols:\n", "\n", - ">```Python\n", - ">def no_mols(mass, Mr):\n", - "> \"\"\"kwargs: mass, Mr \"\"\"\n", - "> n_mols = mass / Mr\n", - "> return n_mols\n", - ">\n", - "> # Calculate number of mols of aspirin\n", - ">mass_aspirin = 1.48 # g\n", - ">Mr_aspirin = 180.158 # g mol-1\n", - ">\n", - "># Keyword Argument\n", - ">mols_aspirin = no_mols(Mr = Mr_aspirin, mass = mass_aspirin)\n", - ">print(mols_aspirin, \"mols of aspirin\")\n", + "```Python\n", + "def no_mols(mass, molar_mass):\n", + " \"\"\"kwargs: mass, molar_mass \"\"\"\n", + " n_mols = mass / molar_mass\n", + " return n_mols\n", + "\n", + "# Calculate number of mols of aspirin\n", + "aspirin_mass = 1.48 # g\n", + "aspirin_molar_mass = 180.158 # g mol-1\n", + "\n", + "# Keyword Argument\n", + "mols_aspirin = no_mols(molar_mass = aspirin_molar_mass, mass = aspirin_mass)\n", + "print(mols_aspirin, \"mols of aspirin\")\n", + "```\n", "\n", - "Even though we have put ``Mr_aspirin`` and ``mass_aspirin`` in a different order to how it is in the function, the code still outputs the correct answer: 0.008215011267887077 mols of aspirin .\n", + "Even though we have put ``aspirin_molar_mass`` and ``aspirin_mass`` in a different order than how it is in the function, the code still outputs the correct answer: 0.008215011267887077 mols of aspirin.\n", "\n", - "Warning! If you are using both positional an keyword arguments (for example if the function takes many arguments), all the positional arguments must come before the keyword arguments.\n", + "Warning! If you are using both positional and keyword arguments (for example if the function takes many arguments), all the positional arguments must come before the keyword arguments.\n", "\n", "

      " ] }, { "cell_type": "markdown", - "id": "fb0c93f4", + "id": "43dad2f7", "metadata": {}, "source": [ "
      \n", - " Positional-only arguments, ``, /``, and keyword-only arguments, ``* ,``\n", - "\n", - "In the sections about positional and keyword arguments above, there is nothing in the function line itself that describes whether the arguments are positional or keyword. The way in which you call the function (and the order) is what defines it. In the first example, we treated both as positional, but in the second we treated both as keyword. \n", - "\n", - "But there is a way of forcing the function to only take positional or only take keyword arguments. If you then try to treat the input differently, it will raise an error. \n", - "\n", - "- ``, /`` after the argument makes it positional-only\n", - "- ``* ,`` before the argument makes it keyword-only\n", - "\n", - "For example in:\n", - "\n", - "def my_function(argument_1, /, *, argument_2):\n", - "\n", - "``argument_1`` is positional only, and ``argument_2`` is keyword-only.\n", - "\n", - "Using our mols example from above\n", - "\n", - ">```Python\n", - ">def no_mols(mass, /, *, Mr):\n", - "> n_mols = mass / Mr\n", - "> return n_mols\n", - ">\n", - ">Mr_aspirin = 180.158 # g mol-1\n", - ">\n", - ">mols_aspirin = no_mols(Mr_aspirin, mass_aspirin = 1.48)\n", - ">print(mols_aspirin, \"mols of aspirin\")\n", - "\n", - "Here, we received an error. We are trying to use ``Mr_aspirin`` as a positional argument and ``mass_aspirin`` as a keyword argument. However, the function takes ``Mr`` as a keyword argument, and ``mass`` as a positinoal argument - the other way around than we have tried to call it. If we try it the correct way around: \n", - "\n", - " mols_aspirin = no_mols(mass_aspirin, Mr = 180.158) \n", + " Default/Optional Arguments\n", "\n", - "We will get the correct output.\n", + "Default arguments are keyword arguments whose values are assigned within the function. They are often also referred to as optional arguments. You set it by adding ``=\"value\"`` to the end of the argument in your function. This means that even if your function takes two arguments, if one is a default argument, you only need to call one, the other will take the default value, and you won't receive an error.\n", "\n", - "Be aware: you can only use ``, /`` and ``*,`` once each in each function argument line. \n", + "```\n", + "def my_function(arg_1, default_argument=2000):\n", + " Code Block\n", + " return an_answer\n", "\n", - "

      " - ] - }, - { - "cell_type": "markdown", - "id": "43dad2f7", - "metadata": {}, - "source": [ - "
      \n", - " Default/Optional Arguments\n", + "answer = my_function(18.08)\n", + "```\n", "\n", - "Default arguments are keyword arguments whose values are assigned within the function. They are often also referred to as optional arguments. You set it by adding ``= value`` to the end of the argument in your function. This means that even if your function takes two arguments, if one is a default argument, you only need to call one, the other will take the default value, and you won't receive an error.\n", + "For example, if you know that throughout your program you will mostly be using ``aspirin_molar_mass``, you can set that as the default value to save time.\n", "\n", - "``def my_function(date, year=2000):``\n", + "```Python\n", + "def no_mols(mass, molar_mass=180.158):\n", + " n_mols = mass / molar_mass\n", + " return n_mols\n", "\n", - "For example, if you know that throughout your program you will mostly be using ``Mr_aspirin``, you can set that as the default value to save time.\n", + "aspirin_mass = 1.48 # g\n", "\n", - ">```Python\n", - ">def no_mols(mass, Mr=180.158):\n", - "> n_mols = mass / Mr\n", - "> return n_mols\n", - ">\n", - ">mass_aspirin = 1.48 # g\n", - ">\n", - ">mols_aspirin = no_mols(mass_aspirin)\n", - ">print(mols_aspirin, \"mols of aspirin\")\n", + "mols_aspirin = no_mols(aspirin_mass)\n", + "print(mols_aspirin, \"mols of aspirin\")\n", + "```\n", "\n", - "When we've called the function, we have only specified one argument (``mass_aspirin``). The other argument is automatically taken as 180.158.\n", + "When we've called the function, we have only specified one argument (``aspirin_mass``). The other argument is automatically taken as 180.158 g mol-1.\n", "\n", "You can also set a default value to ``None``. None is a data type of its own (NoneType), and describes the absence of a value. \n", "\n", - ">```Python\n", - ">def no_mols(mass, Mr=None):\n", - "> if Mr is None:\n", - "> print(\"You must have a molecular mass\")\n", - "> return\n", - "> n_mols = mass / Mr\n", - "> return n_mols\n", - ">\n", - ">mass_aspirin = 1.48 # g\n", - ">no_mols(mass_aspirin)\n", + "```Python\n", + "def no_mols(mass, molar_mass=None):\n", + " if molar_mass is None:\n", + " print(\"You must have a molecular mass\")\n", + " return\n", + " n_mols = mass / molar_mass\n", + " return n_mols\n", + "\n", + "aspirin_mass = 1.48 # g\n", + "no_mols(aspirin_mass)\n", + "```\n", "\n", - "Here, we are expecting that someone might forget the argument 'Mr', so we have added the optional argument 'None' to ensure we do not get errors down the line. You probably will not have much use of None as a beginner.\n", + "Here, we are expecting that someone might forget the argument 'molar_mass', so we have added the optional argument 'None' to ensure we do not get errors down the line. You probably will not have much use of None as a beginner.\n", "\n", - " Warning! When using positional, keyword, and default arguments, they must be defined in a strict order within your function. This is: positional arguments first, then keyword arguments, and then all your default arguments at the end. When you call your function, you first specify your positional arguments, then your keyword arguments, and then any default arguments you wish to change. \n", + " Warning! When using positional, keyword, and default arguments, they must be defined in a strict order within your function. Positional arguments first, then keyword arguments, and then all your default arguments at the end. When you call your function, you must first specify your positional arguments, then your keyword arguments, and then any default arguments you wish to change. \n", "\n", "

      " ] @@ -691,7 +687,7 @@ "\n", "$ c = \\sqrt{a^2 + b^2 - 2ab cos(\\theta)} $\n", "\n", - "Write a function which will output the length of the final side of a triangle in cm, taking a positional argument of 'side_a', a positional-only argument of 'side_b', and a keyword-only argument of 'angle'. \n", + "Write a function which will output the length of the final side of a triangle in cm, taking a positional argument of 'side_a' and 'side_b', and a keyword argument of 'angle'. \n", "\n", "Test your program works by using side_a = 3 cm, side_b = 4 cm, and the known angle = 15°, which should result in side_c = 1.35 cm.\n", "\n", @@ -711,16 +707,17 @@ "\n", "Here is a potential answer. \n", "\n", - ">```Python\n", - ">import math\n", - ">\n", - ">def triangle_side(side_a, side_b, /, *, angle):\n", - "> angle = math.radians(angle)\n", - "> answer = side_a**2 + side_b**2 - (2 * side_a * side_b * math.cos(angle))\n", - "> answer **= 1/2\n", - "> return answer\n", - ">\n", - ">print(triangle_side(3, 4, angle = 15), \"cm\")\n", + "```Python\n", + "import math\n", + "\n", + "def triangle_side(side_a, side_b, angle):\n", + " angle = math.radians(angle)\n", + " answer = side_a**2 + side_b**2 - (2 * side_a * side_b * math.cos(angle))\n", + " answer **= 1/2\n", + " return answer\n", + "\n", + "print(triangle_side(3, 4, angle = 15), \"cm\")\n", + "```\n", "\n", "Remember! When writing your code you always start by importing relevant modules/libraries, then define all your functions, then write the rest of your code. \n", "\n", @@ -768,7 +765,9 @@ ">velocity_answer = molecule_velocity(mass_N2)\n", ">print(velocity_answer, \"ms-1\")\n", "\n", - "The correct answer should be ``513.52 ms-1``\n", + "The correct answer should be ``513.52 ms-1``.\n", + "\n", + "Notice that the default argument for temperature is given in Celsius, then is converted to Kelvin inside the function. This is an interesting point in usability. When writing a function, you want it to be as easy to use as possible. If you know the user will usually have their temperatures in Celsius, then it is up to you as a programmer to make the function easy to use in Celsius. \n", "\n", "

      " ] @@ -786,7 +785,52 @@ "id": "e5639ed7", "metadata": {}, "source": [ - "There are some kinds of function arguments that are more complex, and less often used. These include arbitrary arguments. " + "There are some kinds of function arguments that are more complex, and less often used. If you are a beginner, you probably won't have a reason to use these, and you might want to consider moving straight onto the next section." + ] + }, + { + "cell_type": "markdown", + "id": "fb0c93f4", + "metadata": {}, + "source": [ + "
      \n", + " Positional-only arguments, ``, /``, and keyword-only arguments, ``* ,``\n", + "\n", + "In the sections about positional and keyword arguments above, there is nothing in the function line itself that describes whether the arguments are positional or keyword. The way in which you call the function (and the order) is what defines it. In the first example, we treated both as positional, but in the second we treated both as keyword. \n", + "\n", + "But there is a way of forcing the function to only take positional or only take keyword arguments. If you then try to treat the input differently, it will raise an error. \n", + "\n", + "- ``, /`` after the argument makes it positional-only\n", + "- ``* ,`` before the argument makes it keyword-only\n", + "\n", + "For example in:\n", + "\n", + "def my_function(argument_1, /, *, argument_2):\n", + "\n", + "``argument_1`` is positional only, and ``argument_2`` is keyword-only.\n", + "\n", + "Using our mols example from above\n", + "\n", + "```Python\n", + "def no_mols(mass, /, *, molar_mass):\n", + " n_mols = mass / molar_mass\n", + " return n_mols\n", + "\n", + "aspirin_molar_mass = 180.158 # g mol-1\n", + "\n", + "mols_aspirin = no_mols(aspirin_molar_mass, aspirin_mass = 1.48)\n", + "print(mols_aspirin, \"mols of aspirin\")\n", + "```\n", + "\n", + "Here, we received an error. We are trying to use ``aspirin_molar_mass`` as a positional argument and ``aspirin_mass`` as a keyword argument. However, the function takes ``molar_mass`` as a keyword argument, and ``mass`` as a positional argument - the other way around than we have tried to call it. If we try it the correct way around: \n", + "\n", + " mols_aspirin = no_mols(aspirin_mass, molar_mass = 180.158) \n", + "\n", + "We will get the correct output.\n", + "\n", + "Be aware: you can only use ``, /`` and ``*,`` once each in each function argument line. \n", + "\n", + "

      " ] }, { @@ -797,20 +841,21 @@ "
      \n", " Arbitrary positional arguments: ``*args``\n", "\n", - "Up until this point, the number of arguments passed into the function has been fixed. Whether positional, keyword, or default, the function will only accept a certain number of arguments. But what if we do not know how many arguments we will need in advance? We can use arbitrary positional arguments ``*args`` and arbitrary keyword arguments ``**kwargs``. Note single asterisk for positional arguments and double asterisk for keyword arguments. This is defined in the function:\n", + "Up until this point, the number of arguments passed into the function has been fixed. Whether positional, keyword, or default, the function will only accept a certain number of arguments. But what if we do not know how many arguments we will need in advance? We can use arbitrary positional arguments ``*args`` and arbitrary keyword arguments ``**kwargs``. Note single asterisk for positional arguments and double asterisk for keyword arguments. This is defined in the function in the following way:\n", "\n", "``def my_function(*date, year=2000):``\n", "\n", "Our above code for calculating the number of mols has been adjusted so that it can take an arbitrary number of masses (each of the type float).\n", "\n", - ">```Python\n", - ">def no_mols(*masses, Mr = 180.158):\n", - "> for mass in masses:\n", - "> n = mass / Mr\n", - "> print(n, \"mols\")\n", - "> return\n", - ">\n", - ">no_mols(1.48, 1.01, 0.62, 0.21, 0.06)\n", + "```Python\n", + "def no_mols(*masses, molar_mass=180.158):\n", + " for mass in masses:\n", + " n = mass / molar_mass\n", + " print(n, \"mols\")\n", + " return\n", + "\n", + "no_mols(1.48, 1.01, 0.62, 0.21, 0.06)\n", + "```\n", "\n", "The output of this is:\n", "\n", @@ -822,7 +867,7 @@ "\n", "The arbitrary argument ``*masses`` represents every mass given when we call the function. Since we have multiple of these, we must iterate through the collection of masses using a ``for`` loop and calculate the number of mols for each. \n", "\n", - "The real meaning of arbitrary positional arguments is that the arbitrary number of arguments you are putting into the function are stored as a tuple, but you don't really need to know this for it to work.\n", + "The real meaning of arbitrary positional arguments is that the arbitrary number of arguments you are putting into the function are stored as a tuple, which you then iterate through in the function, but you don't really need to know this for it to work.\n", "

      " ] }, @@ -834,18 +879,19 @@ "
      \n", " Arbitrary keyword arguments: ``**kwargs``\n", "\n", - "Arbitrary keyword arguments are a bit more complicated than ``*args``, so feel free to skip this bit if you are a complete beginner. You can always come back later.\n", + "Arbitrary keyword arguments are a bit more complicated than ``*args``. \n", "\n", "Essentially, while ``*args`` stores the input as a tuple, ``**args`` stores it as a dictionary. This means there are a number of things that need to happen. Have a look at our code, where ``**masses`` is now an arbitrary keyword argument (note that ``**kwargs`` comes after ``args``, ``kwargs``, and ``*args`` in the function).\n", "\n", - ">```Python\n", - ">def no_mols(Mr = 180.158, **masses):\n", - "> for name, mass in masses.items(): \n", - "> n_mols = mass / Mr\n", - "> print(name, \"has\" , n_mols, \"mols\")\n", - "> return\n", - ">\n", - ">no_mols(mass1 = 1.48, mass2 = 1.01, mass3 = 0.62)\n", + "```Python\n", + "def no_mols(molar_mass = 180.158, **masses):\n", + " for name, mass in masses.items(): \n", + " n_mols = mass / molar_mass\n", + " print(name, \"has\" , n_mols, \"mols\")\n", + " return\n", + "\n", + "no_mols(mass1 = 1.48, mass2 = 1.01, mass3 = 0.62)\n", + "```\n", "\n", "Which returns: \n", "\n", @@ -873,20 +919,20 @@ "
      \n", " Using the unpacking operator, *, when calling a function\n", "\n", - "The single asterisk operator `*` can be used on any iterable that Python provides (lists, tuples, strings, etc.), while the double asterisk operator, `**`, can only be used on dictionaries. When placed just before an iterable, `*` unpacks the items within the iterable to be separate objects. \n", + "The single asterisk unpacking operator `*` can be used on any iterable that Python provides (lists, tuples, strings, etc.), while the double asterisk operator, `**`, can only be used on dictionaries. When placed just before an iterable, `*` unpacks the items within the iterable to be separate objects. \n", "\n", "For example, in a list of integers, the unpacking operator will unpack them into separate variables. \n", "\n", "```Python\n", "my_list = [2, 3, 5, 7, 11]\n", "\n", - "print(my_list)\n", - "print(*my_list)\n", + "print(\"A list: \", my_list)\n", + "print(\"Separate variables: \", *my_list)\n", "```\n", "\n", "Returns the following:\n", "\n", - "```\n", + "```Text\n", "A list: [2, 3, 5, 7, 11]\n", "Separate variables: 2 3 5 7 11\n", "```\n", @@ -1004,7 +1050,7 @@ "For more complicated functions, you must use a multi-line docstring. For example:\n", "\n", "```Python\n", - "def no_mols(mass, Mr=180.158):\n", + "def no_mols(mass, molar_mass=180.158):\n", " \"\"\"\n", " Calculate the number of mols.\n", "\n", @@ -1013,7 +1059,7 @@ " mass : Float\n", " The mass of the substance\n", " Units: g\n", - " Mr : Float\n", + " molar_mass : Float\n", " The molecular weight of the substance\n", " Units: gmol-1\n", " Default: aspirin == 180.158\n", @@ -1024,7 +1070,7 @@ " The number of mols of the substance\n", " Units: mols\n", " \"\"\"\n", - " n_mols = mass / Mr\n", + " n_mols = mass / molar_mass\n", " return n_mols\n", "```\n", "\n", From c2062db17d47b78cd9f1201cace73f2073081ca3 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Tue, 19 Aug 2025 10:15:40 +0100 Subject: [PATCH 60/94] Clean up of images --- .../basics/{ => downloads}/example_notebook.ipynb | 0 lessons/basics/{ => images}/code_cell.png | Bin lessons/basics/{ => images}/example_notebook.png | Bin lessons/basics/{ => images}/jupyterlab.png | Bin lessons/basics/{ => images}/markdown_button.png | Bin .../basics/{ => images}/navigator_jupyterlab.png | Bin lessons/basics/{ => images}/raw_markdown.png | Bin lessons/basics/{ => images}/run_button.png | Bin lessons/basics/{ => images}/top_bar.png | Bin lessons/basics/{ => images}/water.png | Bin 10 files changed, 0 insertions(+), 0 deletions(-) rename lessons/basics/{ => downloads}/example_notebook.ipynb (100%) rename lessons/basics/{ => images}/code_cell.png (100%) rename lessons/basics/{ => images}/example_notebook.png (100%) rename lessons/basics/{ => images}/jupyterlab.png (100%) rename lessons/basics/{ => images}/markdown_button.png (100%) rename lessons/basics/{ => images}/navigator_jupyterlab.png (100%) rename lessons/basics/{ => images}/raw_markdown.png (100%) rename lessons/basics/{ => images}/run_button.png (100%) rename lessons/basics/{ => images}/top_bar.png (100%) rename lessons/basics/{ => images}/water.png (100%) diff --git a/lessons/basics/example_notebook.ipynb b/lessons/basics/downloads/example_notebook.ipynb similarity index 100% rename from lessons/basics/example_notebook.ipynb rename to lessons/basics/downloads/example_notebook.ipynb diff --git a/lessons/basics/code_cell.png b/lessons/basics/images/code_cell.png similarity index 100% rename from lessons/basics/code_cell.png rename to lessons/basics/images/code_cell.png diff --git a/lessons/basics/example_notebook.png b/lessons/basics/images/example_notebook.png similarity index 100% rename from lessons/basics/example_notebook.png rename to lessons/basics/images/example_notebook.png diff --git a/lessons/basics/jupyterlab.png b/lessons/basics/images/jupyterlab.png similarity index 100% rename from lessons/basics/jupyterlab.png rename to lessons/basics/images/jupyterlab.png diff --git a/lessons/basics/markdown_button.png b/lessons/basics/images/markdown_button.png similarity index 100% rename from lessons/basics/markdown_button.png rename to lessons/basics/images/markdown_button.png diff --git a/lessons/basics/navigator_jupyterlab.png b/lessons/basics/images/navigator_jupyterlab.png similarity index 100% rename from lessons/basics/navigator_jupyterlab.png rename to lessons/basics/images/navigator_jupyterlab.png diff --git a/lessons/basics/raw_markdown.png b/lessons/basics/images/raw_markdown.png similarity index 100% rename from lessons/basics/raw_markdown.png rename to lessons/basics/images/raw_markdown.png diff --git a/lessons/basics/run_button.png b/lessons/basics/images/run_button.png similarity index 100% rename from lessons/basics/run_button.png rename to lessons/basics/images/run_button.png diff --git a/lessons/basics/top_bar.png b/lessons/basics/images/top_bar.png similarity index 100% rename from lessons/basics/top_bar.png rename to lessons/basics/images/top_bar.png diff --git a/lessons/basics/water.png b/lessons/basics/images/water.png similarity index 100% rename from lessons/basics/water.png rename to lessons/basics/images/water.png From e7493c7df0395426a516f4007ca80b06f8b62bd6 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Tue, 19 Aug 2025 10:16:08 +0100 Subject: [PATCH 61/94] Tidied up jupyter using and added prerequiste links to while loops --- lessons/basics/using_jupyter_notebook.md | 44 +++++++++++++++-------- lessons/loops_functions/while_loops.ipynb | 8 ++--- 2 files changed, 33 insertions(+), 19 deletions(-) diff --git a/lessons/basics/using_jupyter_notebook.md b/lessons/basics/using_jupyter_notebook.md index 51344c7..ef4a039 100644 --- a/lessons/basics/using_jupyter_notebook.md +++ b/lessons/basics/using_jupyter_notebook.md @@ -1,35 +1,49 @@ # Opening and Using a Jupyter Notebook ## Prerequisites -None. +- [A Python installation](/lessons/basics/write_run_python.md) ## What is a Jupyter Notebook? -Some Python code is accompanied by text and images. This kind of code is stored in a file format called a _Jupyter Notebook_. You can recognise a Jupyter Notebook because the file name ends in `.ipynb` +Some Python code is accompanied by a mixture of text and images in what is called a workbook. This kind of code is stored in a file format called a _Jupyter Notebook_. You can recognise a Jupyter Notebook because the file name ends in `.ipynb` . ## How to open a Jupyter Notebook -If you don't already have a Jupyter Notebook file, you can download {Download}`this one<`example_notebook`.ipynb>`. +If you don't already have a Jupyter Notebook file, you can download [download one](/lessons/basics/downloads/example_notebook.ipynb) ## Instructions -### Install Anaconda -Anaconda is a bundle of programs which can run and edit Python code. Check whether your computer has the program _Anaconda Navigator_. If not, **download Anaconda [here](https://www.anaconda.com/download/success).** If you are not sure which installer to download, choose the one from your operating system (Windows, Mac, or Linux), and select "Graphical Installer" if possible. +If you installed Python using [Anaconda](/lessons/basics/write_run_python.md#installation) then Jupyter will have already been installed. If you used a different method you might need to install it. -Once it is downloaded, **open the installer and follow the instructions**. +If you used conda then use the following command: + +```bash +conda install conda-forge::jupyter +``` + +if you made a basic Python install then use pip: +```bash +pip install jupyter +``` ### Open JupyterLab -**Search for the program _Anaconda Navigator_ and open it**. After a few seconds, you should see a window like this appear: +If using Anaconda **Search for the program _Anaconda Navigator_ and open it**. After a few seconds, you should see a window like this appear: + +![Window showing six logos for different programs. A red arrow points to the "Launch" button below the top right logo.](/lessons/basics/images/navigator_jupyterlab.png) -![Window showing six logos for different programs. A red arrow points to the "Launch" button below the top right logo.](navigator_jupyterlab.png) +**Press the "Launch" under JupyterLab.** -**Press the "Launch" under JupyterLab.** This will open a tab on your default web browser which should look like this: +Otherwise from a terminal type: +```bash +jupyter lab +``` +This will open a tab on your default web browser which should look like this: -![Window showing a folder navigation menu on the left and a Python 3 logo on the right.](jupyterlab.png) +![Window showing a folder navigation menu on the left and a Python 3 logo on the right.](/lessons/basics/images/jupyterlab.png) Look at the address bar at the top of your browser. It should read `localhost` followed by some numbers. This means that you are not actually accessing the internet, despite being on a web browser. The page is generated locally by your computer, so you don't need an internet connection to work on your Jupyter Notebook. **In the sidebar on the left, search through your folders for your `.ipynb` file and double-click on it.** If you just downloaded this file, it might be in your _Downloads_ folder. Your screen should now show this: -![Screenshot of a Jupyter Notebook.](example_notebook.png) +![Screenshot of a Jupyter Notebook.](/lessons/basics/images/example_notebook.png) You have just opened the Jupyter Notebook. @@ -40,21 +54,21 @@ There are two important kinds of cells: _Markdown_ and _Code_. You can tell what kind a cell is by looking at the top ribbon: -![Top bar of the Jupyter Notebook with the word "Markdown" circled in red.](top_bar.png) +![Top bar of the Jupyter Notebook with the word "Markdown" circled in red.](/lessons/basics/images/top_bar.png) ### Markdown cells Markdown cells can contain formatted text and images. To change this content, **double-click on the cell**. This will show you the unformatted text, which has been written using a language called "Markdown": -![A box of raw Markdown text.](raw_markdown.png) +![A box of raw Markdown text.](/lessons/basics/images/raw_markdown.png) To make the text appear formatted again, make sure that the cell is selected, and **click on the "Run" button in the top ribbon** (Shortcut: Shift + Enter): -![Top bar of the Jupyter Notebook with the "run" triangle circled in red.](run_button.png) +![Top bar of the Jupyter Notebook with the "run" triangle circled in red.](/lessons/basics/images/run_button.png) ### Code cells Code cells contain programming code; in this caseβ€”Python. **Select the code cell, and run it, just like you ran the Markdown cell.** The result should look like this: -![Code cell showing "print(753+247)", and below, the result: 1000.](code_cell.png) +![Code cell showing "print(753+247)", and below, the result: 1000.](/lessons/basics/images/code_cell.png) Observe how the output of the Python code (the number 1000) is printed below the cell. Additionally, a new empty code cell was created below, to let you continue writing code. diff --git a/lessons/loops_functions/while_loops.ipynb b/lessons/loops_functions/while_loops.ipynb index bbfe581..8060454 100644 --- a/lessons/loops_functions/while_loops.ipynb +++ b/lessons/loops_functions/while_loops.ipynb @@ -16,10 +16,10 @@ "- Know how to control iterations in a loop\n", "\n", "## Prerequisites: \n", - "- boolean variables\n", - "- comparisons\n", - "- `if` statements\n", - "- `for` loops\n", + "- [boolean variables](/lessons/variables/Variable_data_types.ipynb)\n", + "- [comparisons](/lessons/variables/Comparisons.ipynb)\n", + "- [`if` statements](/lessons/loops_functions/conditional_statements.ipynb)\n", + "- [`for` loops](/lessons/loops_functions/for_loops.ipynb)\n", "\n", "## The `while` Loop\n", "\n", From cde1b538b6c41f69b41a6d5899824638aeaa32c5 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Tue, 19 Aug 2025 10:27:56 +0100 Subject: [PATCH 62/94] Fixed download format --- lessons/basics/using_jupyter_notebook.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lessons/basics/using_jupyter_notebook.md b/lessons/basics/using_jupyter_notebook.md index ef4a039..064f6c4 100644 --- a/lessons/basics/using_jupyter_notebook.md +++ b/lessons/basics/using_jupyter_notebook.md @@ -7,7 +7,7 @@ Some Python code is accompanied by a mixture of text and images in what is called a workbook. This kind of code is stored in a file format called a _Jupyter Notebook_. You can recognise a Jupyter Notebook because the file name ends in `.ipynb` . ## How to open a Jupyter Notebook -If you don't already have a Jupyter Notebook file, you can download [download one](/lessons/basics/downloads/example_notebook.ipynb) +If you don't already have a Jupyter Notebook file, you can {download}`download a text file<./downloads/example_notebook.ipynb>`. ## Instructions From fc69735c7b8aec1822534a8df4cbb59a40510feb Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Wed, 20 Aug 2025 17:38:23 +0100 Subject: [PATCH 63/94] Finished matplotlib pyplot lesson. --- .../common_libs/cyclic_voltammetry_data.csv | 163 +++ .../common_libs/images/cyclic_voltammetry.png | Bin 0 -> 187423 bytes .../images/cyclic_voltammetry_example.png | Bin 0 -> 156368 bytes lessons/common_libs/images/graph_legend.png | Bin 0 -> 176197 bytes .../images/graph_style_example.png | Bin 0 -> 196296 bytes lessons/common_libs/images/label_examples.png | Bin 0 -> 120451 bytes lessons/common_libs/images/line_styles.png | Bin 0 -> 100559 bytes lessons/common_libs/images/radii_line.png | Bin 0 -> 98812 bytes lessons/common_libs/images/radii_scatter.png | Bin 0 -> 102834 bytes lessons/common_libs/images/tex_example.png | Bin 0 -> 19889 bytes lessons/common_libs/matplotlib_lesson.ipynb | 144 --- .../matplotlib_pyplot_basics.ipynb | 1106 +++++++++++++---- lessons/files/data_record.csv | 100 ++ lessons/files/spectrum.txt | 2 + 14 files changed, 1131 insertions(+), 384 deletions(-) create mode 100644 lessons/common_libs/cyclic_voltammetry_data.csv create mode 100644 lessons/common_libs/images/cyclic_voltammetry.png create mode 100644 lessons/common_libs/images/cyclic_voltammetry_example.png create mode 100644 lessons/common_libs/images/graph_legend.png create mode 100644 lessons/common_libs/images/graph_style_example.png create mode 100644 lessons/common_libs/images/label_examples.png create mode 100644 lessons/common_libs/images/line_styles.png create mode 100644 lessons/common_libs/images/radii_line.png create mode 100644 lessons/common_libs/images/radii_scatter.png create mode 100644 lessons/common_libs/images/tex_example.png delete mode 100644 lessons/common_libs/matplotlib_lesson.ipynb diff --git a/lessons/common_libs/cyclic_voltammetry_data.csv b/lessons/common_libs/cyclic_voltammetry_data.csv new file mode 100644 index 0000000..0428ff3 --- /dev/null +++ b/lessons/common_libs/cyclic_voltammetry_data.csv @@ -0,0 +1,163 @@ +# Cyclic Voltammetry of 5mM ferrocene in 0.1 M TBAPF6/MeCN +# Scan rate = 0.02 +# Voltage, micro Amps +0.199940681,-0.8834517 +0.20994091,-0.776574612 +0.219940662,-0.710948706 +0.229940891,-0.66344738 +0.23994112,-0.629072189 +0.249941349,-0.590946674 +0.259941578,-0.561571121 +0.269941807,-0.536570549 +0.279941559,-0.513445139 +0.289941788,-0.484069586 +0.299942017,-0.456569195 +0.309942245,-0.429694653 +0.319942474,-0.405318737 +0.329942703,-0.367193222 +0.339942455,-0.327161312 +0.349942684,-0.279785514 +0.359942913,-0.219972134 +0.369943142,-0.143033504 +0.379943371,-0.040156841 +0.3899436,0.099532843 +0.399943352,0.294223309 +0.409943581,0.571539879 +0.41994381,0.965545893 +0.429944038,1.537179708 +0.439944267,2.044937372 +0.449944496,3.509740829 +0.459944725,5.125391483 +0.469944477,7.372300625 +0.479944706,10.37484646 +0.489944935,14.32990551 +0.499945164,19.31935787 +0.509945393,25.45351982 +0.519945621,32.58488178 +0.529945374,40.69125652 +0.539945602,49.54762459 +0.549945831,58.96651745 +0.55994606,68.65417957 +0.569946289,78.3605814 +0.579946518,87.79821396 +0.58994627,96.69210911 +0.599946499,104.4859648 +0.609946728,110.9673262 +0.619946957,115.7048941 +0.629947186,118.4236765 +0.639947414,118.9674377 +0.649947643,117.5174236 +0.659947395,114.4111156 +0.669947624,110.3048086 +0.679947853,105.7547331 +0.689948082,101.2859344 +0.699948311,96.90461159 +0.70994854,92.79830456 +0.719948292,89.11697865 +0.729948521,85.8669281 +0.73994875,82.7981472 +0.749948978,80.12933731 +0.759949207,77.65431404 +0.769949436,75.42302608 +0.779949188,73.42300415 +0.789949417,71.58546448 +0.799949646,69.90418434 +0.809949875,68.3416605 +0.819950104,66.91038609 +0.829950333,65.62912464 +0.839950085,64.39161301 +0.849950314,63.24160099 +0.859950542,62.14783192 +0.869950771,61.1790657 +0.879951,60.23528576 +0.889951229,59.33527946 +0.899951458,58.49776268 +0.90995121,57.7039957 +0.919951439,56.93523884 +0.929951668,56.22899532 +0.939951897,55.57897091 +0.949952126,54.88522053 +0.959952354,54.34145927 +0.969952106,53.73518467 +0.979952335,53.16643715 +0.989952564,52.64143944 +0.999952793,52.12266445 +0.989952564,51.31640434 +0.979952335,50.55389404 +0.969952106,49.92263317 +0.959952354,49.34136868 +0.949952126,48.77886772 +0.939951897,48.28510284 +0.929951668,47.67885208 +0.919951439,47.24760056 +0.90995121,46.73509598 +0.899951458,46.29757404 +0.889951229,45.81632614 +0.879951,45.37882805 +0.869950771,45.04132271 +0.859950542,44.57881451 +0.849950314,44.24755573 +0.839950085,43.79754066 +0.829950333,43.47879887 +0.819950104,43.12252998 +0.809949875,42.7475214 +0.799949646,42.40376949 +0.789949417,42.05377102 +0.779949188,41.69125557 +0.769949436,41.31624699 +0.759949207,40.91625214 +0.749948978,40.52250385 +0.73994875,40.04747868 +0.729948521,39.52248096 +0.719948292,38.94746304 +0.70994854,38.20371628 +0.699948311,37.2474432 +0.689948082,36.04743481 +0.679947853,34.44116116 +0.669947624,32.30986595 +0.659947395,29.42857742 +0.649947643,25.77850819 +0.639947414,21.20344639 +0.629947186,15.57211876 +0.619946957,8.872008324 +0.609946728,1.409387589 +0.599946499,-6.840729713 +0.58994627,-15.45960903 +0.579946518,-24.35350418 +0.569946289,-32.99738169 +0.55994606,-41.26626253 +0.549945831,-48.72887135 +0.539945602,-55.27272224 +0.529945374,-60.50405502 +0.519945621,-64.30411339 +0.509945393,-66.52914286 +0.499945164,-67.14789867 +0.489944935,-66.29788876 +0.479944706,-64.2291069 +0.469944477,-61.70407534 +0.459944725,-58.82902145 +0.449944496,-55.49772978 +0.439944267,-52.0226717 +0.429944038,-48.77886772 +0.41994381,-45.72257996 +0.409943581,-43.03503036 +0.399943352,-40.55999517 +0.3899436,-38.4037137 +0.379943371,-36.40993834 +0.369943142,-34.64115858 +0.359942913,-33.04737806 +0.349942684,-31.61611557 +0.339942455,-30.35984039 +0.329942703,-29.15357351 +0.319942474,-28.07230949 +0.309942245,-27.05979347 +0.299942017,-26.12227201 +0.289941788,-25.32225847 +0.279941559,-24.56600666 +0.269941807,-23.85349274 +0.259941578,-23.18472862 +0.249941349,-22.62847424 +0.23994112,-22.02845812 +0.229940891,-21.53470516 +0.219940662,-21.10345364 +0.20994091,-20.70344687 diff --git a/lessons/common_libs/images/cyclic_voltammetry.png b/lessons/common_libs/images/cyclic_voltammetry.png new file mode 100644 index 0000000000000000000000000000000000000000..9b50da113a6fa16705f01376af29cc4fae266a7a GIT binary patch literal 187423 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

      5p6 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 Kq8~YV?f(GPz>Bm1 literal 0 HcmV?d00001 diff --git a/lessons/common_libs/images/graph_legend.png b/lessons/common_libs/images/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..664801ceddd3e7334b6798ea485adcf1a087a764 GIT binary patch literal 176197 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 z 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 Ye=S98T1zLocmMzZ07*qoM6N<$f*(lW9{>OV literal 0 HcmV?d00001 diff --git a/lessons/common_libs/images/graph_style_example.png b/lessons/common_libs/images/graph_style_example.png new file mode 100644 index 0000000000000000000000000000000000000000..b97ec4d966904081c903c1332d44868a367f9455 GIT binary patch literal 196296 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

      _P9jP2f@dnRfNzxB=UQLHOh>T~^4 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%0A`{T?-V*7Ijqe#Yul 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 literal 0 HcmV?d00001 diff --git a/lessons/common_libs/images/tex_example.png b/lessons/common_libs/images/tex_example.png new file mode 100644 index 0000000000000000000000000000000000000000..b78a894e5c3f568e72c50b0227acfabb4690fad0 GIT binary patch literal 19889 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 z" - ] - }, - { - "cell_type": "markdown", - "id": "0b31fb6a", - "metadata": {}, - "source": [ - "Let's go through step by step.\n", - "\n", - "- First we import the module pyplot and assign it the alias `plt`." - ] - }, - { - "cell_type": "markdown", - "id": "4c147a83", - "metadata": {}, - "source": [ - "## Design elements" - ] - }, - { - "cell_type": "markdown", - "id": "6bb5c959", - "metadata": {}, - "source": [ - "## Adding labels" - ] - }, - { - "cell_type": "markdown", - "id": "f5671336", - "metadata": {}, - "source": [ - "## Plotting multiple figures (explicit)" - ] - }, - { - "cell_type": "markdown", - "id": "e41c1c1d", - "metadata": {}, - "source": [] - } - ], - "metadata": { - "language_info": { - "name": "python" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/lessons/common_libs/matplotlib_pyplot_basics.ipynb b/lessons/common_libs/matplotlib_pyplot_basics.ipynb index 6cbe468..bbbf0c5 100644 --- a/lessons/common_libs/matplotlib_pyplot_basics.ipynb +++ b/lessons/common_libs/matplotlib_pyplot_basics.ipynb @@ -23,7 +23,8 @@ "- Variables\n", "- Lists\n", "- Loops\n", - "- Functions" + "- Functions\n", + "- Files and reading files" ] }, { @@ -35,7 +36,8 @@ "\n", "- Plot scatter and line plots of lists of data\n", "- Include axis labels\n", - "- Modify some of the appearances of the plots " + "- Modify the appearances of the plots\n", + "- Be able to save your plot to a specifed directory" ] }, { @@ -51,18 +53,20 @@ "id": "7d81fd03", "metadata": {}, "source": [ - "MatPlotLib is a comprehensive library for creating static, animated, and interactive visualisations. Within MatPlotLib, the widely-used module PyPlot provides a fairly intuitive way of plotting, and is able to open interactive figures on your screen.\n", + "Matplotlib is a comprehensive library for creating static, animated, and interactive visualisations. Within Matplotlib, the widely-used module Pyplot provides a fairly intuitive way of plotting, and is able to open interactive figures on your screen.\n", "\n", - "There are two different ways of using the library: an explicit or \"Axes\" interface, and an implicit \"pyplot\" interface. The explicit interfaces defines each figure step by step and builds the visualisation step-by-step, with every step explicitly defined. The implicit method keeps track of the last Figure and Axes created and adds aditional content to the object it thinks the user wants. \n", + "There are two different ways of using the library: an explicit or \"Axes\" interface, and an implicit \"pyplot\" interface. The explicit interfaces defines each figure *explicitly* and builds the visualisation step-by-step. The implicit method keeps track of the last Figure and Axes created and adds aditional content to the object it thinks the user wants. If you are only plotting simple figures, the implicit method is sufficient, however if you wish to create multiple figures, you may run into problems trying to refer to the correct figure, and should use the explicit method. Be aware that many online examples will use the two methods interchangeably, and in some cases, at the same time. Have a look on the Matplotlib website for more information on the [two interfaces](https://matplotlib.org/stable/users/explain/figure/api_interfaces.html).\n", "\n", - "If you are only plotting simple figures, the implicit method is sufficient, however if you wish to create multiple figures, you may run into problems trying to refer to the correct figure, and should use the explicit method. Be aware that many online examples will use the two methods interchangeably, and in some cases, at the same time. Have a look on the MatPlotLib website for more information on the [two interfaces](https://matplotlib.org/stable/users/explain/figure/api_interfaces.html).\n", + "For a discussion on explicit versus implicit interfaces, look to the end of the lesson. **The rest of the lesson will only use the implicit interface**.\n", "\n", "To use matplotlib.pyplot simply import it. It is usually imported using the alias `plt`. \n", "\n", "```Python\n", - "import matplotlib.pyplot as plt\n", + "from matplotlib import pyplot as plt\n", "```\n", "\n", + "This is importing the module `pyplot` from the library `matplotlib` and assigning it the alias `plt`. From here on, pyplot functions can be called using `plt.`. \n", + "\n", "When a figure is generated, it will appear in a separate window, and can be manipulated. " ] }, @@ -82,7 +86,7 @@ "metadata": {}, "source": [ "```Python\n", - "import matplotlib.pyplot as plt\n", + "from matplotlib import pyplot as plt\n", "\n", "x = [1,2,3,4,5,6,7,8,9,10]\n", "y = [1,4,9,16,25,36,49,64,81,100]\n", @@ -91,7 +95,9 @@ "plt.show() \n", "```\n", "\n", - "\"single" + "The output is an interactive window with the graph on it. \n", + "\n", + "\"single" ] }, { @@ -99,18 +105,18 @@ "id": "b14bff49", "metadata": {}, "source": [ - "Let's go through step by step.\n", + "Going through step by step:\n", "\n", "- First we import the module pyplot and assign it the alias `plt`. You can do this in two ways, but they are equivalent:\n", + " 1. `from matplotlib import pyplot as plt`\n", " 1. `import matplotlib.pyplot as plt`\n", - " 2. `from matplotlib import pyplot as plt`\n", "\n", "- Next we have defined the data we are plotting. This is two lists, of x and y data. \n", "\n", "- We call the function using `plt.plot(x, y)`. \n", " - This creates a figure and automatically sizes the axes. \n", " - The first two arguments of the function are the x and y data. If you only provide one list of data, it will automatically assign the x axis integer values from 0 upwards. \n", - " - There are numerous keyword arguments that you can put here to affect design. This includes `color`, `linewidth`, `marker`, `linestyle`, and `markersize`. Be aware that 'colour' is smelled the US way. \n", + " - There are numerous keyword arguments that you can put here to affect design (discussed in the next section). This includes `color`, `linewidth`, `marker`, `linestyle`, and `markersize`. Be aware that 'color' is spelled the US way. \n", "\n", "- `plt.show()` prints all created figures to your screen. In most IDEs this is required, but be aware that some IDEs (e.g. Jupyter) will automatically print the figure without needing this line. \n", "\n", @@ -119,396 +125,1016 @@ }, { "cell_type": "markdown", - "id": "b22a7fac-c022-4a7f-93d1-9995bb2b488e", - "metadata": { - "slideshow": { - "slide_type": "" - }, - "tags": [ - "instructions" - ] - }, + "id": "3108958e", + "metadata": {}, "source": [ - "### Activity 1 Plotting a line graph\n", - "\n", - "\n", - "The code below implements `pyplot` to plot a line graph of the following atomic radii data.\n", - "\n", - "**Table 1** Atomic radii of second row p-block elements\n", + "

      " ] }, { - "cell_type": "code", - "execution_count": null, - "id": "33eee2a9-87e2-4392-b5ac-17b797f550d9", - "metadata": { - "slideshow": { - "slide_type": "" - }, - "tags": [ - "student" - ] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
      " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "cell_type": "markdown", + "id": "6d349e7a", + "metadata": {}, "source": [ - "import matplotlib.pyplot as plt\n", + "
      \n", + " Click to view answer\n", + "\n", + "As we want to plot a line graph, we use the function `plt.plot()`. \n", + "\n", + "```Python\n", + "from matplotlib import pyplot as plt\n", "\n", "group = [13,14,15,16,17,18]\n", - "#radii = []\n", "radii = [88,77,74,73,71,71]\n", "\n", "plt.plot(group,radii)\n", - "plt.xlabel(\"horizontal axis title\")\n", - "plt.ylabel(\"vertical axis title\")\n", - "plt.show()" + "plt.show()\n", + "```\n", + "The result is a line graph that looks like this:\n", + "\n", + "\n", + "\n", + "

      " ] }, { - "cell_type": "code", - "execution_count": 3, - "id": "cfd6e7b2", + "cell_type": "markdown", + "id": "05e4ae0e", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
      " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], "source": [ - "#Possible answer to Activity 1\n", + "
      \n", + "
      Exercise: Plot a scatter graph \n", "\n", - "import matplotlib.pyplot as plt\n", + "---\n", "\n", - "group = [13,14,15,16,17,18]\n", - "radii = [88,77,74,73,71,71]\n", + "Using the list of radii data for period 3, use Matplotlib.Pyplot to plot a scatter graph showing how atomic radii contract along a period.\n", "\n", - "plt.plot(group,radii)\n", - "plt.xlabel(\"Group\")\n", - "plt.ylabel(\"Atomic radii / pm\")\n", - "plt.show()" + ">```Python\n", + ">element = [\"Al\", \"Si\", \"P\", \"S\", \"Cl\", \"Ar\"]\n", + ">group = [13,14,15,16,17,18]\n", + ">radii = [125,118,110,104,99,98]\n", + "\n", + "
      \n", + "
      " ] }, { "cell_type": "markdown", - "id": "217704b2-aeb8-4db0-9a1d-f3e81947b2de", - "metadata": { - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, + "id": "bf6a0e5f", + "metadata": {}, "source": [ - "The commands `plt.xlabel(\" \")` and `plt.ylabel(\" \")` are used to include labels for the horizontal and vertical axes, respectively.\n", + "
      \n", + " Click to view answer\n", + "\n", + "As we want to plot a scatter graph, we use the funtion `plt.scatter()`.\n", + "\n", + "```Python\n", + "from matplotlib import pyplot as plt\n", + "\n", + "group = [13,14,15,16,17,18]\n", + "radii = [125,118,110,104,99,98]\n", + "\n", + "plt.scatter(group,radii)\n", + "plt.show()\n", + "```\n", + "\n", + "This results in a plot that looks like this:\n", "\n", - "The axis labels are strings inside the brackets, between speech marks in the same way strings are used in the `print()` function.\n", + "\n", "\n", - "The command `plt.show()` instructs pyplot to display the graph. \n", - "(SM: this seems overly simplistic but i'm not completely sure the difference between interactive and non-interactive mode. " + "

      " ] }, { "cell_type": "markdown", - "id": "a641c831-ce97-4bd8-9c8b-1169eb369b71", - "metadata": { - "slideshow": { - "slide_type": "" - }, - "tags": [ - "instructions" - ] - }, + "id": "20eeb005", + "metadata": {}, "source": [ - "### Activity 2 Plotting a scatter graph\n", + "## Customising your plot (labels and design)" + ] + }, + { + "cell_type": "markdown", + "id": "fb5c802a", + "metadata": {}, + "source": [ + "There are numerous ways to improve your plot, mainly by making it look actually scientific. Below are various useful functions, from labels to design to mathematics which you can add to your graph. The Matplotlib documentation for all Pyplot functions can be found [here](https://matplotlib.org/stable/api/pyplot_summary.html), and an explanation as to the anatomy of a figure (what are labels, markers, legend, ticks, etc.) can be found [here](https://matplotlib.org/stable/users/explain/quick_start.html#parts-of-a-figure). \n", + "\n", + "But **be careful**. This lesson gives all functions in their *implicit* forms. The matplotlib documentation gives them in their *explicit* forms. For a discussion on implicit versus explicit in Matplotlib, look at the last section in this lesson." + ] + }, + { + "cell_type": "markdown", + "id": "3b361396", + "metadata": {}, + "source": [ + "
      \n", + " Styling a line or scatter points \n", + "\n", + "The most basic adjustments you can make to your line or scatter plot is by using keyword arguments. For line styles, these are given by the Matplotlib `Lines2D` styles (a full description can be found [here](https://matplotlib.org/stable/api/_as_gen/matplotlib.lines.Line2D.html)).\n", + "\n", + "```Python\n", + "from matplotlib import pyplot as plt\n", + "\n", + "x = [1,2,3,4,5,6,7,8,9,10]\n", + "y = [1,4,9,16,25,36,49,64,81,100]\n", + "\n", + "plt.plot(x, y, color=\"red\", linestyle=\"--\", linewidth=2, marker=\"o\", markersize=5, alpha=0.5)\n", + "\n", + "plt.show()\n", + "```\n", + "\n", + "This plot is the output:\n", + "\n", + "\n", "\n", + "Run the above code and look at the resulting plot with and without the keyword arguments.\n", "\n", - "Table 2 contains the atomic radii of the third row p-block elements. hydrides. In the cell below complete the code to generate a sactter plot of this data, with group on the horizontal axis and atomic radii on the vertical axis.\n", + "- `color` changes the colour of the line. It can take certain named colours, such as `\"red\"`, `\"green\"`, and `\"papayawhip\"`, etc., or hex code colours, such as `\"#880808\"`. If you do not use the `color` keyword, the line will take a default colour, usually blue. A full list of Matplotlib supported colours can be found [here](https://matplotlib.org/stable/gallery/color/named_colors.html).\n", "\n", - "(*Hint:* it is not necessary to write the code from scratch. It is perfectly acceptable to copy the code from activity 1 and modify it to include the desired data.)\n", + "- `linestyle` changes the style of the line. Without the keyword, this defaults to a solid line. Other inputs could be `\"-\"` (solid), `\"--\"` (dashed), `\":\"` (dotted), `\"-.\"` (dashed-dotted), or `\"\"`/`\"None\"` (draws nothing). \n", "\n", - "
      \n", + "- `linewidth` changes the thickness of our line. The default is 1. \n", "\n", - "**Table 2** Atomic radii of third row p-block elements\n", + "- `marker` changes the marker at each plotted point. By default in a line diagram these would be `\"None\"`, however in a scatter plot these are a dot by default. Other kinds of marker could be `\"x\"` (a cross), `\"s\"` (a square), `\"D\"` (a diamond), or `\"v\"` (a downwards triangle). The full list of available markers can be found [here](https://matplotlib.org/stable/api/markers_api.html#module-matplotlib.markers).\n", "\n", - "|Element |\tGroup\t| Atomic radii / pm |\n", - "|---|---|---|\n", - "|$\\text{Al}$|\t13\t|$125$|\n", - "|$\\text{Si}$|\t14\t|$118$|\n", - "|$\\text{P}$|\t15\t|$110$|\n", - "|$\\text{S}$|\t16\t|$104$|\n", - "|$\\text{Cl}$|\t17\t|$99$|\n", - "|$\\text{Ar}$|\t18\t|$98$|\n" + "- `markersize` changes the size of the marker. The default can be changed, but is usually around 5. \n", + "\n", + "- `alpha` changes transparency, where 1 is solid and 0 is totally transparent. In this case, it will change the transparency of both the line and the marker. \n", + "\n", + "

      " ] }, { - "cell_type": "code", - "execution_count": null, - "id": "89b96bae-bc5a-43f3-a966-9385d2ee8fbc", - "metadata": { - "slideshow": { - "slide_type": "" - }, - "tags": [ - "student" - ] - }, - "outputs": [], + "cell_type": "markdown", + "id": "8ca84e3a", + "metadata": {}, "source": [ + "
      \n", + " Adding labels to your graph \n", "\n", - "import matplotlib.pyplot as plt\n", + "As with all science, it is important that your graph is showing useful information. A figure with no labels has no meaning. Below are the functions to add labels to your plot. Remember units!\n", "\n", - "group = \n", - "radii = \n", - "\n" + "| Label | Description | Function | Example |\n", + "| -- | --- | --- | --- |\n", + "| Title | Add a title to the top of the figure | `title()` | `plt.title(\"Graph Title\")` |\n", + "| x-axis label | Labels the x axis | `xlabel()` | `plt.xlabel(\"x axis / unit\")` |\n", + "| y-axis label | Labels the y axis | `ylabel()` | `plt.ylabel(\"y axis / unit\")` |\n", + "| Legend | Adds a legend. More information on legend design can be found [here](https://matplotlib.org/stable/users/explain/axes/legend_guide.html). | `legend()` | `plt.legend([\"y = x^2\"])` |\n", + "\n", + "Here is an example of code adding some labels onto the figure. \n", + "\n", + "```Python\n", + "from matplotlib import pyplot as plt\n", + "\n", + "x = [1,2,3,4,5,6,7,8,9,10]\n", + "y = [1,4,9,16,25,36,49,64,81,100]\n", + "\n", + "plt.plot(x, y, color=\"#880808\", linestyle=\"--\", marker=\"o\", linewidth=2, markersize=5, alpha=0.5)\n", + "\n", + "plt.title(\"Quadratic Function\")\n", + "plt.xlabel(\"x-axis\", color=\"navy\", fontweight=\"bold\")\n", + "plt.ylabel(\"y-axis\", color=\"pink\", font=\"comic sans ms\")\n", + "plt.legend([\"y = x^2\"])\n", + "\n", + "plt.show() \n", + "```\n", + "\n", + "\n", + "\n", + "This example includes examples of the design elements you can add to text. This should not be taken as style advice. In reality, you should be consistent between all labels and style choices.\n", + "\n", + "Some of the basic labelling styles you can add are:\n", + "\n", + "- `color` sets the text colour. This can be a certain colour `color=\"palegoldenrod\"`, or a hex code `color=\"#c4a998\"`. A full list of Matplotlib supported colours can be found [here](https://matplotlib.org/stable/gallery/color/named_colors.html).\n", + "\n", + "- `weight` or `fontweight` sets the thickness of the font. This can be `\"normal\"`, `\"heavy\"`, `\"bold\"`, `\"light\"`, `\"ultrabold\"`, or `\"ultralight\"`.\n", + "\n", + "- `style` or `fontstyle` sets the style of the font. This can be `\"normal\"`, `\"italic\"`, or `\"oblique\"` (which is similar to italic).\n", + "\n", + "- `font` or `name` or `fontname` sets the type of font. Matplotlib supports many basic fonts.\n", + "\n", + "- `size` or `fontsize` sets the text size. This could be size in pixels, `\"100px\"`, or relative to the current/default fontsize `\"smaller\"`, `\"x-large\"`.\n", + "\n", + "- `alpha` sets transparency, taking values from 0 to 1.\n", + "\n", + "- `backgroundcolor` highlights behind the text, and can also be assigned either by certain names or by a hex code.\n", + "\n", + "A full list of these design keywords can be found [here](https://matplotlib.org/stable/users/explain/text/text_props.html).\n", + "\n", + "

      " ] }, { - "cell_type": "code", - "execution_count": null, - "id": "abe65330", - "metadata": { - "slideshow": { - "slide_type": "" - }, - "tags": [ - "solution" - ] - }, - "outputs": [], + "cell_type": "markdown", + "id": "52ef1731", + "metadata": {}, "source": [ - "#Possible answer to Activity 2\n", + "
      \n", + " Adding ticks, gridlines, and setting limits to your graph\n", "\n", - "import matplotlib.pyplot as plt\n", + "In addition to line styles and labels, there are a number of graphical design elements that can really improve the look of a graph.\n", "\n", - "group = [13,14,15,16,17,18]\n", - "radii = [125,118,110,104,99,98]\n", + "By default, a Matplotlib generated graph will contain auto-generated major ticks at auto-generated intervals, no grid squares, and limits just above and below the values of data. You can customise these to suit your purpose. \n", "\n", - "plt.scatter(group,radii)\n", - "plt.xlabel(\"Group\")\n", - "plt.ylabel(\"Atomic radii / pm\")\n", - "plt.show()\n" + "| Element | Description | Function | Example |\n", + "| -- | --- | --- | --- |\n", + "| Legend | Adds a legend. More information on legend design can be found [here](https://matplotlib.org/stable/users/explain/axes/legend_guide.html) | `legend()` | `plt.legend([\"y = x^2\"])` |\n", + "| Grid squares | Adds grid squares on either \"major\" ticks, \"minor\" ticks, or \"both\". Add design with Line2D properties. | `grid()` | `plt.grid(True, \"minor\", color=\"grey\")` |\n", + "| x-axis ticks | Manually changes ticks on the x-axis, add minor ticks with a kwarg (separately) | `xticks()` | `plt.xticks([0, 2, 4, 6, 8, 10]` |\n", + "| y-axis ticks | Manually changes ticks on the y-axis, add minor ticks with a kwarg (separately) | `yticks()` | `plt.yticks([0, 2, 4, 6, 8, 10]` |\n", + "| x-axis limits | Manually sets the first and last number on the x-axis | `xlim()` | `plt.xlim(0, 10)` |\n", + "| y-axis limits | Manually sets the first and last number on the y-axis | `ylim()` | `plt.ylim(0, 100)` |\n", + "\n", + "Here is an example of our quadratic function plot customised with gridlines, ticks, and limits.\n", + "\n", + "```Python\n", + "from matplotlib import pyplot as plt\n", + "import numpy as np\n", + "\n", + "x = [1,2,3,4,5,6,7,8,9,10]\n", + "y = [1,4,9,16,25,36,49,64,81,100]\n", + "\n", + "plt.plot(x, y, color=\"#880808\", linestyle=\"--\", marker=\"o\", linewidth=2, markersize=5, alpha=0.5)\n", + "\n", + "plt.title(\"Quadratic Function\")\n", + "plt.xlabel(\"x-axis\", color=\"navy\", fontweight=\"bold\")\n", + "plt.ylabel(\"y-axis\", color=\"pink\", font=\"comic sans ms\")\n", + "plt.legend([\"y = x^2\"])\n", + "\n", + "# Set the limits of the x and y axes\n", + "plt.xlim(0, 10)\n", + "plt.ylim(0, 100)\n", + "\n", + "# Major ticks\n", + "plt.xticks([0, 2, 4, 6, 8, 10])\n", + "plt.yticks([0, 20, 40, 60, 80, 100])\n", + "\n", + "# Minor ticks (using numpy 'arange' to quicky generate ticks)\n", + "plt.xticks(np.arange(0, 10, 0.2), minor=True)\n", + "plt.yticks(np.arange(0,100,2), minor=True)\n", + "\n", + "# Major grid lines are blue\n", + "plt.grid(True, \"major\", color=\"blue\", alpha=0.5)\n", + "\n", + "# Minor grid lines are grey\n", + "plt.grid(True, \"minor\", color=\"grey\", alpha=0.5)\n", + "\n", + "plt.show() \n", + "```\n", + "\n", + "This produces the following graph (styles and colours are to demonstrate technique and should not be considered guidance):\n", + "\n", + "\n", + "\n", + "Walking through these additional bits of code:\n", + "\n", + "- `plt.xlim(0,10)` sets the left boundary of the x-axis to 0 and the right boundary to 10. The same is done for `plt.ylim(0, 100)`, but with the bottom boundary being 0 and the top 100. \n", + "\n", + "- `plt.xticks([0, 2, 4, 6, 8, 10])` and `plt.yticks([0, 20, 40, 60, 80, 100])` mark the numbers at which major ticks appear. These are the longer lines on the axes, marked with numbers. \n", + "\n", + "- `plt.xticks(np.arange(0, 10, 0.2), minor=True)` and `plt.yticks(np.arange(0,100,2), minor=True)` mark the positions at which minor ticks appear. These are the shorter lines on the axes, not marked by numbers. This data should be given in a list or an array (arrays are basically powerful NumPy lists), and the function `np.arange()` (documentation [here](https://numpy.org/doc/stable/reference/generated/numpy.arange.html)) is a very quick way to produce them. All it does is create an array from the first number to the second number in steps of the third number, for example `no.arange(0,10,0.2)` creates an array of numbers from 0 to 10 in steps of 0.2.\n", + "\n", + "- `plt.grid(True, \"major\", color=\"blue\", alpha=0.5)` sets the major grid lines to be blue, and `plt.grid(True, \"minor\", color=\"grey\", alpha=0.5)` sets the minor grid lines to be grey. The `grid()` function can take any `Line2DStyle`, discussed above. If you wanted to set both major and minor grid lines to the same style, you could use the keyword \"both\" instead of \"major\" or \"minor\" and use only one line. \n", + "\n", + "Remember that a good scientific figure is consistent, labelled, contains units, and is easily readable. You should not have a mix of fonts, sizes, or a hodgepodge of colour, unless the colour helps in understanding the diagram. \n", + "\n", + "

      " ] }, { "cell_type": "markdown", - "id": "a55c01ba-3804-4026-b278-faf4fdad8b78", + "id": "7a77c39f", "metadata": {}, "source": [ - "### Plotting multiple datasets\n", + "
      \n", + " Inserting symbols, exponents and maths using LaTeX\n", + "\n", + "When displaying strings on plots generated using `matplotlib`, such as axis labels and legends, you may notice that you have not been able to add formatting. This is because strings are displayed in plain text. Missing formatting is important when labelling scientific data, particularly for units or chemical formulas.\n", "\n", - "To plot multiple sets of data on the same graph you include more than one of the\n", - "`plt.plot()` and/or the `plt.scatter()` commands.\n", + "As an example, look at this code and the plot it has generated and compare the formatting of the title vs the legend:\n", "\n", - "As multiple sets of data are to be plotted a legend should be included to indicate what each series represents. In the same `plt.plot()`/`plt.scatter()` code, after specifying the data to be plotted on the horizontal and vertical axes within the brackets, a comma should be added and then the option `label=(\"\")` used. A string can then be included between the speech marks to label the series. For example, to plot a scatter graph of the lists `x` and `y` with the series name `Series A` you would use the following command:\n", - "`plt.scatter(x,y, label=\"Series A\")`\n", + "```Python\n", + "from matplotlib import pyplot as plt\n", "\n", - "By default, the legend option is not turned on in `matplotlib`. To show the legends you need to include the line `plt.legend()`.\n" + "x = [1,2,3,4,5,6,7,8,9,10]\n", + "y = [1,4,9,16,25,36,49,64,81,100]\n", + "\n", + "plt.plot(x, y, color=\"#880808\", linestyle=\"--\", marker=\"o\", linewidth=2, markersize=5, alpha=0.5)\n", + "\n", + "plt.title(\"Quadratic Function $y = x^2$\")\n", + "plt.legend([\"y = x^2\"])\n", + "\n", + "plt.show() \n", + "```\n", + "\n", + "\n", + "\n", + "The title equation is correctly formatted using LaTeX, a document formatting system useful for mathematical and scientific notation.\n", + "\n", + "To insert LaTeX formatting, you must surround your text with the dollar sign, `$`. LaTeX can be very complicated, so below is a short summary of useful information. \n", + "\n", + "- To insert LaTeX, surround symbols or maths with a dollar sign: `$math$`.\n", + "\n", + "- Insert superscript using `^` and subscripts using `_`, e.g. `$dm^3$` or `$H_2O$` for $dm^3$ or $H_2O$. By default, this will only place the first character following the ^ or _ into the super- or subscript. To format multiple characters, use curly brackets {}. e.g. `$cm^{-1}$` or `$C_{80}$` to get $cm^{-1}$ and $C_{80}$ respectively. \n", + "\n", + "- Insert Greek symbols using `\\`. E.g. `$\\lambda$` for $\\lambda$ or `$\\Lambda$` for $\\Lambda$, where capitalising the first letter of the name makes the symbol capital too. \n", + "\n", + "- Other symbols can also be inserted using `\\`. For example, `$\\rightarrow$` for $\\rightarrow$, `$\\times$` for $\\times$, `$\\rightleftharpoons$` for $\\rightleftharpoons$, and many more.\n", + "\n", + "- A small gap can be inserted by writing `\\`. This is useful for units such as `$mol \\ dm^{-3}$`, which now renders with a gap, $mol \\ dm^{-3}$. Without the backslash, the two units would be right next to each other. \n", + "\n", + "- Fractions can be inserted by writing `$\\frac{numerator}{denominator}$` which renders as $\\frac{numerator}{denominator}$.\n", + "\n", + "

      " ] }, { "cell_type": "markdown", - "id": "221e04f1", + "id": "b6469fc8", "metadata": {}, "source": [ - "### Activity 3 Plotting multiple datasets and including legends\n", + "
      \n", + "
      Exercise: Create a formatted plot \n", + "\n", + "--- \n", "\n", - "Complete the code in the cell below to generate a plot that contains the atomic radii of both the second and third row elements of the p-block. Remember to include a legend." + "For the following data create a formatted line graph with the following design elements:\n", + "\n", + "- A dark blue solid line, with hexagonal markers of size 3.\n", + "\n", + "- The title \"A Quadratic Function\" in bold.\n", + "- Axes titles \"x-axis\" and \"y-axis\" in bold. \n", + "- Major ticks every integer on the x-axis, and every 10 on the y-axis. Make the numbers on the major ticks in extra small font. \n", + "- 10 minor ticks between each major tick.\n", + "- Grey gridlines, where gridlines on the major ticks are twice as thick as on the minor axis.\n", + "- The x-axis runs from -11 to 11, and the y-axis from -10 to 110.\n", + "\n", + ">```Python\n", + ">x = [-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n", + ">y = [100, 81, 64, 49, 36, 25, 16, 9, 4, 1, 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]\n", + "\n", + "**Hints**:\n", + "\n", + "1. A hexagonal marker is indicated with the symbol `\"h\"` or `\"H\"` (depending on orientation).\n", + "1. The size of numbers on the axes can be adjusted within the `plt.xticks()` function using the keyword argument `size=\"\"`.\n", + "1. Use the NumPy function `np.arange()` to generate an array (list-like object) containing the axes ticks. The function `np.arange(0,10,1)` will generate an array of numbers starting with 0 and going up in steps of 1 up to (but not including) 10 i.e. [0,1,2,...8,9]. To get the tick to show, you must go past the number you want it to stop at. \n", + "1. Python draws the graph in the order you write the code lines. Therefore, setting limits should be the last thing you do. This is because setting ticks auto-scales the axes, and if you set limits before that, it will then overwrite the scale.\n", + "\n", + "
      \n", + "
      " ] }, { - "cell_type": "code", - "execution_count": null, - "id": "67345c3a", + "cell_type": "markdown", + "id": "51048860", "metadata": {}, - "outputs": [], "source": [ + "\n", + "
      \n", + " Click to view answer\n", + "\n", + "```Python\n", "import matplotlib.pyplot as plt\n", + "import numpy as np\n", "\n", - "group = []\n", - "radii_2nd_period = []\n", - "\n" + "x = [-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n", + "y = [100, 81, 64, 49, 36, 25, 16, 9, 4, 1, 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]\n", + "\n", + "# Line and markers\n", + "plt.plot(x, y, marker=\"h\", markersize=3, linestyle=\"-\", color=\"navy\")\n", + "\n", + "# Labels\n", + "plt.title(\"A Quadratic Function\", weight=\"bold\") # Insert title\n", + "plt.xlabel(\"x-axis\", weight=\"bold\") # x-axis label\n", + "plt.ylabel(\"y-axis\", weight=\"bold\") # y-axis label\n", + "\n", + "# Ticks\n", + "## Major ticks\n", + "plt.xticks(np.arange(-12, 12, 1), size=\"x-small\") # Major ticks on x-axis, numbers made small\n", + "plt.yticks(np.arange(-50, 120, 10), size=\"x-small\") # Major ticks on y-axis, numbers made small\n", + "## Minor ticks\n", + "plt.xticks(np.arange(-12, 12, 0.1), minor=True) # Minor ticks on x-axis\n", + "plt.yticks(np.arange(-50, 120, 1), minor=True) # Minor ticks on y-axis\n", + "\n", + "# Grid\n", + "plt.grid(True, which=\"major\", color=\"grey\", linewidth=1) # Major grid lines\n", + "plt.grid(True, which=\"minor\", color=\"grey\", linewidth=0.5) # Minor grid lines\n", + "\n", + "# Limits\n", + "plt.xlim(-11, 11) # Set x-axis limits\n", + "plt.ylim(-10, 110) # Set y-axis limits\n", + "\n", + "plt.show()\n", + "```\n", + "\n", + "

      " ] }, { - "cell_type": "code", - "execution_count": null, - "id": "4b45182f", + "cell_type": "markdown", + "id": "a55c01ba-3804-4026-b278-faf4fdad8b78", "metadata": {}, - "outputs": [], "source": [ - "#Possible answer to Activity 3\n", + "## Plotting multiple datasets on the same graph" + ] + }, + { + "cell_type": "markdown", + "id": "7c814dd9", + "metadata": {}, + "source": [ + "To plot multiple sets of data on the same graph you include more than one of the `plt.plot()` and/or the `plt.scatter()` commands.\n", "\n", - "import matplotlib.pyplot as plt\n", + "As multiple sets of data are to be plotted a legend should be included to indicate what each series represents. In the same `plt.plot()`/`plt.scatter()` code, after specifying the data to be plotted on the horizontal and vertical axes within the brackets, a comma should be added and then the option `label=\"\"` used, which should describe the data. For example: `plt.scatter(x,y, label=\"Quadratic\"). \n", + "\n", + "To display the legend, add the line `plt.legend()`, and a legend will be automatically generated. \n", + "\n", + "```Python\n", + "from matplotlib import pyplot as plt\n", + "\n", + "x = [0,1,2,3,4,5,6,7,8,9,10]\n", + "y_linear = [0,1,2,3,4,5,6,7,8,9,10]\n", + "y_quadratic = [0,1,4,9,16,25,36,49,64,81,100]\n", + "y_cubic = [0,1,8,27,64,125,216,343,512,729,1000]\n", + "\n", + "plt.plot(x, y_linear, color=\"green\", label=\"Linear $y = x$\")\n", + "plt.plot(x, y_quadratic, color=\"red\", label=\"Quadratic $y = x^2$\")\n", + "plt.plot(x, y_cubic, color=\"blue\", label=\"Cubic $y = x^3$\")\n", + "\n", + "plt.legend()\n", + "\n", + "plt.title(\"Quadratic and Cubic Functions\")\n", + "\n", + "plt.show()\n", + "```\n", "\n", + "\n", + "\n", + "Other ways to use and customise a legend can be found in [here](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.legend.html)." + ] + }, + { + "cell_type": "markdown", + "id": "b9b814d4", + "metadata": {}, + "source": [ + "
      \n", + "
      Exercise: Plotting two series on the same graph and using a legend \n", + "\n", + "---\n", + "\n", + "Using Matplotlib.Pyplot, plot both the radii data from the 2nd period and the 3rd period of the periodic table onto the same graph. \n", + "\n", + "Include a correctly formatted legend.\n", + "\n", + "```Python\n", "group = [13,14,15,16,17,18]\n", "radii_2nd_period = [88,77,74,73,71,71]\n", "radii_3rd_period = [125,118,110,104,99,98]\n", + "```\n", + "\n", + "
      \n", + "
      " + ] + }, + { + "cell_type": "markdown", + "id": "e66dbc7b", + "metadata": {}, + "source": [ + "
      \n", + " Click to view answer\n", + "\n", + "\n", + "```Python\n", + "import matplotlib.pyplot as plt\n", + "\n", + "group = [13, 14, 15, 16, 17, 18]\n", + "radii_2nd_period = [88, 77, 74, 73, 71, 71]\n", + "radii_3rd_period = [125, 118, 110, 104, 99, 98]\n", "\n", "plt.scatter(group,radii_2nd_period, label=\"2nd Period\")\n", "plt.scatter(group,radii_3rd_period, label=\"3rd Period\")\n", "plt.xlabel(\"Group\")\n", "plt.ylabel(\"Atomic radii / pm\")\n", "plt.legend()\n", - "plt.show()" + "plt.show()\n", + "```\n", + "

      " + ] + }, + { + "cell_type": "markdown", + "id": "630154f7", + "metadata": {}, + "source": [ + "## Exporting plots as image files" ] }, { "cell_type": "markdown", - "id": "abef10e9", + "id": "2cd1f585", "metadata": {}, "source": [ - "## Further customisation options\n", + "Once you have successfully created graphs with Python, you need to be able to save them for later use or to include them in other resources.\n", + "\n", + "`matplotlib` has a command for this:\n", + "\n", + "```Python\n", + "plt.savefig(\"file_name.png\")\n", + "```\n", "\n", - "### Changing the colour on graphs\n", + "`\"file_name.png\"` is the name you choose for the saved graph. It will be saved in a `.png` format either in the same directory as your program is in, or in the root directory. To be sure your file ends up in the place you want it, you can specify a full directory. For a reminder on files and directories, look back at the [files and file types lesson](lessons/files/files_file_types.ipynb). Make sure you know where your image is being saved.\n", "\n", - "There are many options within `matplotlib` to modify the appearance of a graph. For example, you may want to change the colour of lines or data points in your graph. This may not seem like an important aspect of coding, but this can be useful if you are creating multiple charts for reports or presentations, and you want consistency between them. \n", + "It is also possible to save a graph as a PDF file by changing the `.png` extension to `.pdf`.\n", "\n", - "`matplotlib` chooses default colours for plotting multiple datasets: the first `plt.plot()`/`plt.scatter()` routine will use the colour blue, the second will use orange, and so on.\n", + "Note the `plt.savefig()` command must go *before* the `plt.show()` command. If you do not do this, then the saved image file will be blank. \n", "\n", - "Changing the colour of a line or scatter plot in Python requires a small addition to the `plt.plot()` or `plt.scatter()` routines. This command is `color=\"\"`, where this is preceeded by a comma (similar to the syntax of `label=\"\"` command in the same routines). \n", + "If you save two graphs with the same name in the same directory, the previous plot will be written over by the newer plot. Give all your plots meaningful names to avoid this." + ] + }, + { + "cell_type": "markdown", + "id": "e0b87083", + "metadata": {}, + "source": [ + "
      \n", + "
      Exercise: Export a plot as an image \n", + "\n", + "---\n", "\n", - "Note that the syntax in `matplotlib` uses the American spelling for β€˜color’, instead of the British spelling.\n", + "Take the following code generating some functions and add a line of code that will save the figure as an image somewhere on your device. This could be a directory labelled \"Images\" or \"Plots\", for example. \n", "\n", - "For example, if you wanted to change the colour of the scatter plots from blue to red in the completed code from activity 3 the entire line would appear\n", + "```Python\n", + "from matplotlib import pyplot as plt\n", "\n", - " plt.scatter(group,radii_2nd_period, label=\"2nd Period\", color=\"red\")\n", + "x = [0,1,2,3,4,5,6,7,8,9,10]\n", + "y_linear = [0,1,2,3,4,5,6,7,8,9,10]\n", + "y_quadratic = [0,1,4,9,16,25,36,49,64,81,100]\n", + "y_cubic = [0,1,8,27,64,125,216,343,512,729,1000]\n", "\n", - "This will however change the next plotted series to the default blue, so to fully customise you would need to state the colours for each series.\n", + "plt.plot(x, y_linear, color=\"green\", label=\"Linear $y = x$\")\n", + "plt.plot(x, y_quadratic, color=\"red\", label=\"Quadratic $y = x^2$\")\n", + "plt.plot(x, y_cubic, color=\"blue\", label=\"Cubic $y = x^3$\")\n", + "plt.legend()\n", + "plt.title(\"Linear, Quadratic and Cubic Functions\")\n", + "plt.show()\n", + "```\n", "\n", - "Most of the common colours you could name are included in `matplotlib`. For a full list of the available colours you can check the [Matplotlib documentation]." + "
      \n", + "
      " ] }, { "cell_type": "markdown", - "id": "d4c09ef7", + "id": "384901ce", "metadata": {}, "source": [ - "### Gridlines\n", + "
      \n", + " Click to view answer\n", "\n", - "There are instances where you may want to include gridlines on your plots. To include major grdilines you would use the command:\n", + "```Python\n", + "from matplotlib import pyplot as plt\n", "\n", - " plt.grid()\n", + "x = [0,1,2,3,4,5,6,7,8,9,10]\n", + "y_linear = [0,1,2,3,4,5,6,7,8,9,10]\n", + "y_quadratic = [0,1,4,9,16,25,36,49,64,81,100]\n", + "y_cubic = [0,1,8,27,64,125,216,343,512,729,1000]\n", "\n", - "If you wanted to include major gridlines and minor gridlines you would use the two following commands:\n", + "plt.plot(x, y_linear, color=\"green\", label=\"Linear $y = x$\")\n", + "plt.plot(x, y_quadratic, color=\"red\", label=\"Quadratic $y = x^2$\")\n", + "plt.plot(x, y_cubic, color=\"blue\", label=\"Cubic $y = x^3$\")\n", + "plt.legend()\n", + "plt.title(\"Linear, Quadratic and Cubic Functions\")\n", + "pls.savefig(\"C:/Users/Lilly/Plot-Images/functions_plot.png\")\n", + "plt.show()\n", + "```\n", "\n", - " plt.grid(which='both')\n", - " plt.minorticks_on()\n", + "

      " + ] + }, + { + "cell_type": "markdown", + "id": "45f73e90", + "metadata": {}, + "source": [ + "## Implicit and Explicit methods" + ] + }, + { + "cell_type": "markdown", + "id": "aa20c375", + "metadata": {}, + "source": [ + "As hinted at earlier, Matplotlib has [two main interfaces](https://matplotlib.org/stable/users/explain/figure/api_interfaces.html#api-interfaces): the implicit \"pyplot\" interface which is functions based, and the explicit \"Axes\" interface which is object-based.\n", "\n", - "Where the second command turns on the minor ticks on both axis, and the 'both' in the plt.grid() command indicates both the minor and major gridlines. Further options can be found in the Matplotlib documentation (https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.grid.html)" + "- The implicit interface only keeps track of the last Figure and Axes created, and adds design elements automatically to the object it thinks the user wants. This uses fewer lines of code.\n", + "\n", + "- The explicit interface defines each Figure or Axes object and design elements must be added to that object *explicitly*, building the visualisation step by step. This uses more lines of code, but results in less confusion for a long program with many outputs." ] }, { "cell_type": "markdown", - "id": "630154f7", + "id": "c209380d", "metadata": {}, "source": [ - "### Exporting plots as image files\n", + "| Implicit form | Explicit form |\n", + "| --- | --- |\n", + "| Pyplot interface, functions based | Axes interface, object-based |\n", + "| Elements are automatically applied to the figure Python thinks you are working on. | You define each figure and call their specific names when adding elements. |\n", + "| Fewer lines of code needed. | More lines of code needed. |\n", + "| Useful if you only want to produce one figure, but may cause issues with multiple. | Better if you are producing multiple figures. |\n", + "| Figure is generated automatically with `plt.plot()`. | Figure is generated using `fig_name = plt.figure()` and subsequent plots added using `fig_name, ax = subplots()`, where ax is a variable describing the set of axes onto which things will be plotted. |\n", + "| Design elements are called using `plt.` alias, as in `plt.title(\"Plot Title\")`. | Design elements are called using the variable describing the axis you want to apply the design elements to, often called `ax`, as in `ax.set_title(\"Plot Title\")`. |\n", + "| Design functions are not preceded by the word 'set', as in `plt.title()`, `plt.xlabel`, etc. | Design functions are usually preceded by the word 'set', as in `ax.set_title()`, `ax.set_xlabel`, etc. |" + ] + }, + { + "cell_type": "markdown", + "id": "e1eb3220", + "metadata": {}, + "source": [ + "We have already seen above how the implicit form of Matplotlib.Pyplot works. Here, we will explain how the explicit form works.\n", "\n", - "Once you have successfully created graphs with Python, you need to be able to save them for later use or to include them in other resources.\n", + "```Python\n", + "fig = plt.figure()\n", + "ax = fig.subplots()\n", + "ax.plot([1,2,3,4], [1,4,9,16])\n", + "plt.show()\n", + "```\n", "\n", - "`matplotlib` has a command for this:\n", + "- In the first line, `fig = plt.figure()`, a blank figure is created. The figure is like the backing for your plot, an empty canvas onto which you can put diagrams and plots. You can put multiple plots onto the same figure. You can also resize your figure to the dimensions you want. The figure is assigned the variable name `fig`. \n", "\n", - " plt.savefig(\"file_name.png\")\n", + "- In the second line, `ax = fig.subplots()`, a set of axes is added onto the figure. The axes are given the variable name `ax`.\n", "\n", - "Here, `\"file_name.png\"` is the name you choose for the saved graph. It will be saved in a `.png` format.\n", + "- In the third line, `ax.plot([1,2,3,4], [1,4,9,16])`, those data points are plotted onto the axes named `ax`. \n", "\n", - "It is also possible to save a graph as a PDF file by changing the `.png` extension in the previous routine to `.pdf`.\n", + "- Finally, the plot is displayed to the screen using `plt.show()`.\n", "\n", - "Note the `plt.savefig()` command must go *before* the `plt.show()` command. If you do not do this, then the saved image file will be blank. \n", + "Design elements can be added to the axes in a similar way as implicitly, except the function names are generally preceded by the word `set`, and refer to the ax variable name, not plt. For example, `ax.set_title(\"Plot Title\")`" + ] + }, + { + "cell_type": "markdown", + "id": "386b1667", + "metadata": {}, + "source": [ + "## Additional Matplotlib capabilities." + ] + }, + { + "cell_type": "markdown", + "id": "ef5bf941", + "metadata": {}, + "source": [ + "There are many other capabilities that may be of use to you. Here are some links to potentially useful MarPlotLib documentation. \n", "\n", + "- Adding [multiple subplots to the same figure](https://matplotlib.org/stable/users/explain/axes/index.html).\n", + "- Make a plot with [log scaling on the y axis](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.semilogy.html). Similar functions exist for the x axis, and to make both axes scale logarithmically.\n", + "- Adding [error bars](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.errorbar.html).\n", + "- Creating a [bar graph](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.bar.html).\n", + "- Creating a [pie chart](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.pie.html).\n", + "- Creating a [3D plot](https://matplotlib.org/stable/gallery/mplot3d/index.html). \n", + "- Creating a [stem plot](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.stem.html).\n", "\n", + "A full list of matplotlib.pyplot functions can be found in the documentation [here](https://matplotlib.org/stable/api/pyplot_summary.html). " + ] + }, + { + "cell_type": "markdown", + "id": "5acc0b74", + "metadata": {}, + "source": [ + "## Further Practice" + ] + }, + { + "cell_type": "markdown", + "id": "a53a40ba", + "metadata": {}, + "source": [ + "### Question 1" + ] + }, + { + "cell_type": "markdown", + "id": "c1034573", + "metadata": {}, + "source": [ + "Write a function that will take plot x and y data according to a pre-set design, display it to the screen, and save it to a specified file. The function should allow the user to assign a title, a filename or filepath, and names for the x and y axes. The title, filename, and axes labels should take logical default values. Don't forget a dosctring!\n", + "\n", + "Here is some data you can use to test your code:\n", + "\n", + "```\n", + "gaussian_x = [-3.0, -2.5, -2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0]\n", + "gaussian_y = [0.01, 0.04, 0.14, 0.32, 0.61, 0.88, 1.0, 0.88, 0.61, 0.32, 0.14, 0.04, 0.01]\n", + "```\n", "\n", - "$$$$ SM - This is how it works in jupyterlab, not sure how it will work elsewhere $$$$" + "In you can't remember how to do this, look back at the [functions lesson](../loops_functions/functions_and_scope.ipynb) to revise functions, default arguments, and docstrings. " ] }, { "cell_type": "markdown", - "id": "d6857f12", + "id": "150a90b7", "metadata": {}, "source": [ - "### Superscripts and subscripts on plots\n", + "
      \n", + " Click to view answer\n", "\n", - "When displaying strings on plots generated using `matplotlib`, such as axis labels and legends, you may noticed that you have not been able to add formatting, this is because strings are displayed in plain text. This missing formatting is important when labelling scientific data, particularly for units or chemical formulas.\n", + "The code below takes two positional arguments, and four default arguments. It will create a line plot formatted in a specific style, and the user can specify the title, filename/path, and x and y labels.\n", "\n", - "As an example, consider the line of code to label the y axis with the concentration of some reaction species, [A], with the incorrect formatting for the units of concentration. \n", + "```Python\n", + "import matplotlib.pyplot as plt\n", "\n", - " plt.ylabel(\"[A]/mol dm-3\")\n", - " \n", - "To correctly display the β€˜$-3$’ in superscript you can use the `pyplot` command:\n", "\n", - " plt.ylabel(\"[A]/mol dm$^{-3}$\")\n", - " \n", - "In this command:\n", + "def plot_line(x, y, title=\"My Plot\", filename=\"my_plot.png\", x_label=\"x-axis\", y_label=\"y-axis\"):\n", + " \"\"\"\n", + " Plot a formatted line graph with specified x and y data, display plot and save it as an image.\n", + "\n", + " Parameters:\n", + " ============\n", + " x : list\n", + " x-axis data\n", + " y : list\n", + " y-axis data\n", + " title : str, optional\n", + " Title of the plot (default is \"My Plot\")\n", + " filename : str, optional\n", + " Name of the file to save the plot (default is \"my_plot.png\").\n", + " You can specify a full path if you want to save it in a specific directory.\n", + " x_label : str, optional\n", + " Label for the x-axis (default is \"x-axis\")\n", + " y_label : str, optional \n", + " Label for the y-axis (default is \"y-axis\")\n", + "\n", + " Returns:\n", + " ========\n", + " None\n", + " \"\"\"\n", + "\n", + " # Plot line\n", + " plt.plot(x, y, marker=\"h\", markersize=3, linestyle=\"-\", color=\"navy\")\n", + "\n", + " # Set labels\n", + " plt.title(title, weight=\"bold\") # Insert title\n", + " plt.xlabel(x_label, weight=\"bold\") # x-axis label\n", + " plt.ylabel(y_label, weight=\"bold\") # y-axis label\n", + "\n", + " # Add grid\n", + " plt.grid(True, which=\"major\", color=\"grey\", linewidth=1) # Major grid lines\n", + " plt.grid(True, which=\"minor\", color=\"grey\", linewidth=0.5) # Minor grid lines\n", + "\n", + " # Allow automatic minor ticks to be generated\n", + " plt.minorticks_on()\n", "\n", - "* the first and second dollar signs, `$`, indicate the start and end of and the text you want to be formatted (the dollar signs will not be printed in the string)\n", - "* the curly braces, `{}`, contain the text you want to apply formatting to\n", - "* the caret, `^`, goes before the curly braces and is used to indicate the text within the braces should be a superscript.\n", + " # Limits and ticks are set automatically based on data\n", "\n", + " # Save and display the figure\n", + " plt.savefig(filename)\n", + " plt.show()\n", + " return\n", "\n", - "Another common formatting option you will need is subscript. This is especially important when it comes to chemical formulas. Subscripts use a similar syntax to superscripts, but use an underscore `_` instead of the caret `^`.\n", "\n", - "So if in the above example A was nitrogen dioxide you would use the following command:\n", - " \n", - " plt.ylabel(\"[NO$_{2}$]/mol dm$^{-3}$\")\n" + "gaussian_x = [-3.0, -2.5, -2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0]\n", + "gaussian_y = [0.01, 0.04, 0.14, 0.32, 0.61, 0.88, 1.0, 0.88, 0.61, 0.32, 0.14, 0.04, 0.01]\n", + "\n", + "plot_line(gaussian_x, gaussian_y, title=\"Gaussian Plot\", filename=\"./code/images/gaussian_plot.png\")\n", + "```\n", + "\n", + "In this plot design, we have used the Pyplot function `minorticks_on()` which automatically generates minor ticks. Since we have not specified tick locations, Matplotlib automatically generates them.\n", + "\n", + "The function is called just using `plot_line()`.\n", + "\n", + "Don't forget to add a docstring to describe what your function does! \n", + "\n", + "

      " ] }, { "cell_type": "markdown", - "id": "0f09f12d", + "id": "5b863325", "metadata": {}, "source": [ - "## Todo\n", + "### Question 2" + ] + }, + { + "cell_type": "markdown", + "id": "693c5072", + "metadata": {}, + "source": [ + "Cyclic voltammetry (CV) is an electrochemical technique which measures the current in an electrochemical cell against voltage, first a forward scan from low voltage to high voltage, followed by a reverse scan. A cyclic voltammogram is the plot generated from each measurement of current against voltage. The shape of the cyclic voltammogram can tell you whether the reaction at the electrode is electrochemically reversible, irreversible, or quasi-irreversible. \n", + "\n", + "Use Pyplot and the function from the previous question to plot a cyclic voltammetry curve from \"cyclic_voltammetry_data.csv\".\n", + "\n", + "You should get a voltammogram that looks something like this (make sure to relabel the title and axes appropriately!):\n", + "\n", + "\n", "\n", - "Add more activities related to the options above" + "**Hint**: Make sure to open the CSV file and look at the headers to figure out how to parse them. They may also give you information that you should label on your plot." ] }, { - "cell_type": "code", - "execution_count": null, - "id": "c96f413a", + "cell_type": "markdown", + "id": "0d1fc051", "metadata": {}, - "outputs": [], - "source": [] + "source": [ + "
      \n", + " Click to view answer\n", + "\n", + "Your cyclic voltammogram should look something like this:\n", + "\n", + "\n", + "\n", + "Our code can use the function we defined in the previous question to generate this plot. We first import Pyplot, then define our function, then we can insert the code that reads our CSV file, extracts the data, and calls the function to plot our cyclic voltammogram.\n", + "\n", + "```Python\n", + "from matplotlib import pyplot as plt\n", + "\n", + "\n", + "def plot_line(x, y, title=\"My Plot\", filename=\"my_plot.png\", x_label=\"x-axis\", y_label=\"y-axis\"):\n", + " \"\"\"\n", + " Plot a formatted line graph with specified x and y data, display plot and save it as an image.\n", + "\n", + " Parameters:\n", + " ============\n", + " x : list\n", + " x-axis data\n", + " y : list\n", + " y-axis data\n", + " title : str, optional\n", + " Title of the plot (default is \"My Plot\")\n", + " filename : str, optional\n", + " Name of the file to save the plot (default is \"my_plot.png\").\n", + " You can specify a full path if you want to save it in a specific directory.\n", + " x_label : str, optional\n", + " Label for the x-axis (default is \"x-axis\")\n", + " y_label : str, optional\n", + " Label for the y-axis (default is \"y-axis\")\n", + "\n", + " Returns:\n", + " ========\n", + " None\n", + " \"\"\"\n", + "\n", + " # Plot line\n", + " plt.plot(x, y, marker=\"h\", markersize=3, linestyle=\"-\", color=\"navy\")\n", + "\n", + " # Set labels\n", + " plt.title(title) # Insert title\n", + " plt.xlabel(x_label) # x-axis label\n", + " plt.ylabel(y_label) # y-axis label\n", + "\n", + " # Add grid\n", + " plt.grid(True, which=\"major\", color=\"grey\", linewidth=1) # Major grid lines\n", + " plt.grid(True, which=\"minor\", color=\"grey\", linewidth=0.5) # Minor grid lines\n", + "\n", + " # Allow automatic minor ticks to be generated\n", + " plt.minorticks_on()\n", + "\n", + " # Limits and ticks are set automatically based on data\n", + "\n", + " # Save and display the figure\n", + " plt.savefig(filename)\n", + " plt.show()\n", + " return\n", + "\n", + "\n", + "# Read data from CSV file and save to lists\n", + "with open(\"cyclic_voltammetry_data.csv\", \"r\") as file:\n", + " x_data = []\n", + " y_data = []\n", + " file = file.read()\n", + " content = file.split(\"\\n\")\n", + " for line in content:\n", + " if line[0] == \"#\": # Skip header line\n", + " continue\n", + " else:\n", + " line = line.split(\",\")\n", + " x_data.append(float(line[0]))\n", + " y_data.append(float(line[1]))\n", + "\n", + "# Plot the data\n", + "plot_line(\n", + " x_data,\n", + " y_data,\n", + " title=\"Cyclic Voltammetry of 5 mM ferrocene in 0.1 M TBAPF$_6$/MeCN\",\n", + " filename=\"cyclic_voltammetry_plot.png\",\n", + " x_label=\"Voltage (V)\",\n", + " y_label=\"Current ($\\mu$A)\",\n", + ")\n", + "\n", + "```\n", + "\n", + "Make sure you have specified the correct file directory to access the CSV file!\n", + "\n", + "You may notice in this solution that when we call the function `plot_line`, the arguments are stacked vertically. This is a style chosen because otherwise the line becomes very long and difficult to read. Readability and consistency is very important when programming in Python, and so there is a style guide called Pep8 which guides the best practice when writing Python code. Have a look at the [Python style guide lesson](../solving_problems/style-and-comments.ipynb) for a summary of the best style practices. \n", + "\n", + "

      " + ] + }, + { + "cell_type": "markdown", + "id": "537b8740", + "metadata": {}, + "source": [ + "## Summary" + ] + }, + { + "cell_type": "markdown", + "id": "562e5e23", + "metadata": {}, + "source": [ + "- Import Matplotlib.Pyplot using the command: `from matplotlib import pyplot as plt`. \n", + "- Generate a line graph using `plt.plot(x, y)`, where x and y are lists (or numpy arrays) of corresponding x and y coordinates. \n", + "- Generate a scatter graph using `plt.scatter(x, y)`, where x and y are lists (or numpy arrays) of corresponding x and y coordinates.\n", + "- Use `plt.show()` to display your plot. \n", + "- Add labels using `plt.title(\"Plot Title\")`, `plt.xlabel(\"x-axis title\")`, `plt.ylabel(\"y-axis label\")` and `plt.legend(\"Legend\")`. \n", + "- Add graph styles using `plt.grid()`, `plt.xticks()`, `plt.yticks()`, and set minor ticks either using `plt.minorticks_on()` or `plt.xticks([0,1,2,...,100], minor=True)`. Set axis limits using `plt.xlim()` or `plt.ylim()`.\n", + "- Use LaTeX to format strings into scientific notation.\n", + " - Insert LaTeX by surrounding the items with dollar signs `$`.\n", + " - Insert superscript using `$cm^{-1}$` and subscript using `$C_{80}$`.\n", + " - Insert Greek letters using backslash, e.g. `$\\pi$` ($\\pi$) or `$\\Pi$` ($\\Pi$).\n", + " - Insert other symbols using a backslash, e.g. `$\\rightarrow$` for $\\rightarrow$, `$\\times$` for $\\times$, `$\\rightleftharpoons$` for $\\rightleftharpoons$\n", + " - Insert a small gap using a backslash, e.g. `$mol \\ dm^{-3}$` to create a gap between 'mol' and 'dm', $mol \\ dm^{-3}$\n", + " - Add fractions using `$\\frac{numerator}{denominator}$`, $\\frac{numerator}{denominator}$.\n", + "\n", + "- Use more than one `plt.plot()` or `plt.scatter()` line to plot multiple datasets on the same axis. \n", + " - Add labels to each `plt.plot()` to auto-generate a legend. E.g. `plt.plot(x, y, label=\"Data Series A\")`\n", + "\n", + "- The implicit interface only keeps track of the last figure and axis created. It requires fewer lines of code, and elements are added using `plt.` and the function.\n", + "- The explicit interface requires a specifc figure and axis to be called to add design elements. It requires more lines of code, elements are added using `ax.` (where ax is often the variable name given to a certain axis), and functions are usually preceded by `set_`.\n", + "\n", + "- Save your files using `plt.savefig()`.\n", + "- Understand the difference between Matplotlib's implicit form (used throughout the lesson), and its explicit form." + ] + }, + { + "cell_type": "markdown", + "id": "a15b9887", + "metadata": {}, + "source": [ + "## Useful Matplotlib links" + ] + }, + { + "cell_type": "markdown", + "id": "4d269fbb", + "metadata": {}, + "source": [ + "List of [Matplotlib.Pyplot functions](https://matplotlib.org/stable/api/pyplot_summary.html)\n", + "\n", + "Styles:\n", + "\n", + "- [Line2DStyles](https://matplotlib.org/stable/api/_as_gen/matplotlib.lines.Line2D.html)\n", + "\n", + "- [Supported colours](https://matplotlib.org/stable/gallery/color/named_colors.html)\n", + "\n", + "- [Text styles](https://matplotlib.org/stable/users/explain/text/text_props.html)\n", + "\n", + "Graph elements:\n", + "\n", + "- [Using and designing a legend](https://matplotlib.org/stable/users/explain/axes/legend_guide.html)\n", + "\n", + "- [List of possible markers](https://matplotlib.org/stable/api/markers_api.html#module-matplotlib.markers)\n", + "\n", + "- [Adding multiple subplots to the same figure](https://matplotlib.org/stable/users/explain/axes/index.html). This adds multiple plots side-by-side on the same figure, and is usually accessed using Matplotlib's explicit interface.\n", + "\n", + "- Plot with [log scaling on the y axis](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.semilogy.html). Similar functions exist for the x axis, and to make both axes scale logarithmically.\n", + "\n", + "- Adding [error bars](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.errorbar.html).\n", + "\n", + "Plot types:\n", + "\n", + "- Creating a [bar graph](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.bar.html).\n", + "\n", + "- Creating a [pie chart](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.pie.html).\n", + "\n", + "- Creating a [3D plot](https://matplotlib.org/stable/gallery/mplot3d/index.html). \n", + "\n", + "- Creating a [stem plot](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.stem.html).\n", + "\n" + ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "base", "language": "python", "name": "python3" }, @@ -522,7 +1148,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.12.3" } }, "nbformat": 4, diff --git a/lessons/files/data_record.csv b/lessons/files/data_record.csv index 3131237..ff2607f 100644 --- a/lessons/files/data_record.csv +++ b/lessons/files/data_record.csv @@ -498,3 +498,103 @@ ,,,,,,,,,,,,,3.15230961298377,,,,,,3.7515605493133584,6.741573033707866,,5.324594257178527,,,,,3.0836454431960054,,,,,,,,,,9.176029962546817,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.288389513108614,5.380774032459426,6.067415730337078,3.9762796504369535,8.614232209737828,,,,,,,,,6.235955056179775,,8.11485642946317,6.167290886392011,,,,,,,3.077403245942572,,,7.553058676654182,,,,,,,,,,,,,6.429463171036204, ,,,,,,,,,,,,,,,,,,,,6.741573033707866,,,,,,,,,,,,,,,,,9.176029962546817,,,,,,,,,,,,,,,,,,,,,,,,5.399500624219725,6.098626716604246,,8.67665418227216,,,,,,,,,6.242197253433209,,8.11485642946317,6.192259675405743,,,,,,,3.102372034956305,,,7.615480649188515,,,,,,,,,,,,,6.429463171036204, ,,,,,,,,,,,,,,,,,,,,6.803995006242197,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5.424469413233458,,,,,,,,,,,,6.30461922596754,,,6.210986267166042,,,,,,,3.1210986267166043,,,7.615480649188515,,,,,,,,,,,,,, +3.651685393258427,5.074906367041199,2.1161048689138577,5.305867665418227,3.589263420724095,3.7265917602996255,0.6554307116104868,3.3021223470661676,0.9051186017478152,2.908863920099875,3.6641697877652937,1.223470661672909,0.35268414481897625,0.24968789013732834,1.647940074906367,5.855181023720349,4.4818976279650435,2.7590511860174782,1.9600499375780276,1.6541822721598003,3.8951310861423223,5.224719101123595,2.9712858926342074,5.474406991260924,4.800249687890138,0.9488139825218477,0.6173533083645443,0.6616729088639202,1.7602996254681649,4.057428214731585,0.24781523096129837,0.8926342072409489,5.099875156054932,4.001248439450687,1.317103620474407,2.5842696629213484,0.717852684144819,6.179775280898876,4.313358302122348,0.7116104868913858,0.6928838951310862,4.956304619225968,3.8077403245942576,1.2359550561797754,0.7365792759051186,1.079900124843945,5.724094881398252,2.702871410736579,1.0923845193508115,4.444444444444445,2.9837702871410734,3.183520599250936,4.132334581772784,5.81772784019975,1.797752808988764,3.6267166042446943,3.9076154806491883,4.875156054931336,6.029962546816479,3.2397003745318353,2.4032459425717856,3.3645443196004994,2.9837702871410734,1.8102372034956304,5.6491885143570535,3.5830212234706615,2.446941323345818,5.855181023720349,1.8164794007490637,3.3957553058676653,3.6766541822721597,3.957553058676654,5.705368289637952,3.595505617977528,5.593008739076155,6.104868913857677,4.138576779026217,2.303370786516854,0.9550561797752809,1.2796504369538078,5.730337078651686,3.3645443196004994,2.5343320848938826,0.9800249687890138,5.930087390761548,4.1260923845193505,5.1248439450686645,1.4544319600499376,3.576779026217228,2.958801498127341,5.436953807740325,0.466916354556804,1.9101123595505618,1.8352059925093633,2.1972534332084894,5.031210986267166,0.6928838951310862,4.856429463171036,4.425717852684145,4.157303370786517, +3.682896379525593,5.1123595505617985,2.153558052434457,5.33083645443196,3.6142322097378274,3.745318352059925,0.6803995006242198,3.3270911360799,0.9363295880149812,2.933832709113608,3.682896379525593,1.2546816479400749,0.3757802746566792,0.27965043695380776,1.6729088639200997,5.880149812734083,4.51310861423221,2.790262172284644,1.9850187265917605,1.6791510611735332,3.920099875156055,5.262172284644195,2.9962546816479403,5.50561797752809,4.831460674157303,0.9737827715355806,0.6491885143570537,0.686641697877653,1.7915106117353308,4.082397003745319,0.2727840199750312,0.9300873907615481,5.1248439450686645,4.019975031210986,1.34207240948814,2.6092384519350813,0.7490636704119851,6.210986267166042,4.33832709113608,0.7303370786516854,0.717852684144819,4.975031210986267,3.8389513108614235,1.2671660424469413,0.7677902621722846,1.104868913857678,5.7553058676654185,2.7340823970037453,1.1235955056179776,4.475655430711611,3.0087390761548067,3.214731585518102,4.157303370786517,5.855181023720349,1.8164794007490637,3.651685393258427,3.9325842696629216,4.912609238451935,6.054931335830212,3.2709113607990012,2.4219725343320846,3.383270911360799,3.0149812734082393,1.8289637952559301,5.68039950062422,3.607990012484395,2.4656679151061174,5.880149812734083,1.8414481897627966,3.420724094881398,3.7078651685393256,3.9887640449438204,5.730337078651686,3.6267166042446943,5.6242197253433215,6.129837702871411,4.16354556803995,2.340823970037453,0.9800249687890138,1.3108614232209737,5.767790262172285,3.3895131086142323,2.571785268414482,0.9987515605493134,5.961298377028713,4.151061173533084,5.149812734082397,1.4856429463171037,3.6017478152309614,2.990012484394507,5.468164794007491,0.49063670411985016,1.941323345817728,1.8601747815230962,2.2347066167290888,5.068664169787765,0.7303370786516854,4.887640449438202,4.450686641697877,4.18227215980025, +3.714107365792759,5.143570536828964,2.184769038701623,5.3620474406991265,3.639200998751561,3.7702871410736583,0.7053682896379525,3.3583021223470664,0.9675405742821472,2.958801498127341,3.7078651685393256,1.2796504369538078,0.39825218476903873,0.3096129837702871,1.6978776529338326,5.9113607990012484,4.544319600499376,2.82147315855181,2.009987515605493,1.6978776529338326,3.951310861423221,5.293383270911361,3.0149812734082393,5.536828963795256,4.856429463171036,1.0049937578027466,0.6803995006242198,0.7116104868913858,1.8227215980024971,4.107365792759051,0.29712858926342073,0.9612983770287141,5.143570536828964,4.044943820224719,1.3670411985018727,2.634207240948814,0.7865168539325842,6.242197253433209,4.3632958801498125,0.7553058676654182,0.7428214731585518,5.0,3.8639200998751564,1.2983770287141074,0.7927590511860175,1.1298377028714106,5.786516853932584,2.7715355805243447,1.161048689138577,4.506866416978776,3.0399500624219726,3.245942571785269,4.188514357053683,5.892634207240949,1.8414481897627966,3.6704119850187267,3.9637952559300875,4.950062421972534,6.086142322097379,3.295880149812734,2.446941323345818,3.4019975031210987,3.046192259675406,1.8539325842696628,5.711610486891385,3.6329588014981273,2.4906367041198503,5.8988764044943816,1.8664169787765295,3.4456928838951315,3.7390761548064915,4.019975031210986,5.7553058676654185,3.651685393258427,5.655430711610487,6.1485642946317105,4.18227215980025,2.3720349563046192,1.0049937578027466,1.348314606741573,5.805243445692884,3.420724094881398,2.602996254681648,1.0237203495630463,5.992509363295881,4.176029962546816,5.174781523096129,1.5168539325842696,3.6267166042446943,3.0212234706616727,5.499375780274657,0.5149812734082396,1.9725343320848938,1.8851435705368291,2.2659176029962547,5.106117353308365,0.7615480649188515,4.918851435705368,4.475655430711611,4.207240948813983, +3.745318352059925,5.174781523096129,2.215980024968789,5.3870162297128585,3.6641697877652937,3.7952559300873907,0.7240948813982522,3.383270911360799,0.9987515605493134,2.977528089887641,3.7265917602996255,1.3108614232209737,0.4213483146067416,0.33957553058676654,1.7228464419475658,5.942571785268415,4.575530586766542,2.8464419475655434,2.034956304619226,1.7228464419475658,3.982521847690387,5.324594257178527,3.0399500624219726,5.568039950062421,4.887640449438202,1.0362047440699127,0.7053682896379525,0.7365792759051186,1.8539325842696628,4.132334581772784,0.32209737827715357,0.9987515605493134,5.168539325842697,4.069912609238452,1.3857677902621723,2.6591760299625467,0.8177278401997503,6.30461922596754,4.388264669163545,0.7740324594257179,0.7677902621722846,5.0187265917602994,3.888888888888889,1.3358302122347065,0.8239700374531835,1.161048689138577,5.81772784019975,2.8027465667915106,1.1922596754057428,4.538077403245943,3.0649188514357055,3.2833957553058677,4.213483146067416,5.930087390761548,1.8664169787765295,3.6953807740324596,3.9887640449438204,4.987515605493134,6.111111111111111,3.320848938826467,2.4656679151061174,3.4269662921348316,3.0836454431960054,1.8726591760299625,5.736579275905119,3.651685393258427,2.5093632958801497,5.9238451935081144,1.8913857677902621,3.470661672908864,3.7702871410736583,4.057428214731585,5.774032459425719,3.6766541822721597,5.686641697877653,6.167290886392011,4.200998751560549,2.4032459425717856,1.0299625468164793,1.3795255930087391,5.848938826466916,3.451935081148564,2.634207240948814,1.042446941323346,6.023720349563047,4.200998751560549,5.199750312109863,1.5480649188514357,3.651685393258427,3.0524344569288386,5.524344569288389,0.5387016229712859,2.00374531835206,1.9101123595505618,2.2971285892634206,5.149812734082397,0.7990012484394506,4.950062421972534,4.500624219725343,4.225967540574282, +3.776529338327091,5.212234706616729,2.253433208489388,5.418227215980025,3.689138576779026,3.81398252184769,0.7490636704119851,3.408239700374532,1.0237203495630463,3.0024968789013733,3.745318352059925,1.34207240948814,0.44382022471910115,0.36953807740324596,1.7415730337078652,5.97378277153558,4.606741573033708,2.8776529338327093,2.0599250936329585,1.7415730337078652,4.00749063670412,5.355805243445693,3.0649188514357055,5.599250936329588,4.918851435705368,1.0611735330836456,0.7365792759051186,0.7615480649188515,1.8851435705368291,4.157303370786517,0.3464419475655431,1.0299625468164793,5.187265917602996,4.0886392009987516,1.410736579275905,2.6779026217228465,0.8551810237203495,6.30461922596754,4.413233458177278,0.7927590511860175,0.7927590511860175,5.043695380774032,3.920099875156055,1.3670411985018727,0.8551810237203495,1.1860174781523096,5.848938826466916,2.8339575530586765,1.229712858926342,4.563046192259676,3.0961298377028714,3.3146067415730336,4.238451935081149,5.961298377028713,1.8913857677902621,3.714107365792759,4.019975031210986,5.024968789013733,6.1360799001248445,3.352059925093633,2.4843945068664173,3.4456928838951315,3.114856429463171,1.8976279650436954,5.767790262172285,3.6766541822721597,2.5343320848938826,5.942571785268415,1.916354556803995,3.495630461922597,3.801498127340824,4.0886392009987516,5.799001248439451,3.7078651685393256,5.717852684144819,6.192259675405743,4.225967540574282,2.4406991260923845,1.0549313358302121,1.4169787765293382,5.8863920099875156,3.4831460674157304,2.671660424469413,1.0674157303370786,6.054931335830212,4.225967540574282,5.224719101123595,1.5792759051186018,3.6766541822721597,3.089887640449438,5.555555555555556,0.5630461922596754,2.034956304619226,1.941323345817728,2.328339575530587,5.187265917602996,0.8302122347066168,4.975031210986267,4.531835205992509,4.250936329588015, +3.801498127340824,5.243445692883895,2.2846441947565546,5.443196004993759,3.714107365792759,3.8389513108614235,0.7740324594257179,3.4332084893882646,1.0549313358302121,3.027465667915106,3.7702871410736583,1.373283395755306,0.466916354556804,0.3995006242197253,1.766541822721598,5.998751560549313,4.637952559300874,2.908863920099875,2.084893882646692,1.766541822721598,4.038701622971286,5.3870162297128585,3.089887640449438,5.630461922596755,4.943820224719102,1.0923845193508115,0.7677902621722846,0.7865168539325842,1.916354556803995,4.18227215980025,0.3714107365792759,1.0611735330836456,5.212234706616729,4.1136079900124844,1.4294631710362047,2.702871410736579,0.8863920099875156,6.30461922596754,4.438202247191011,0.8114856429463172,0.8177278401997503,5.062421972534332,3.9450686641697876,1.3982521847690388,0.8801498127340824,1.2109862671660423,5.880149812734083,2.871410736579276,1.260923845193508,4.594257178526841,3.1210986267166043,3.352059925093633,4.263420724094882,5.998751560549313,1.916354556803995,3.732833957553059,4.051186017478152,5.062421972534332,6.161048689138577,3.3770287141073654,2.5031210986267167,3.464419475655431,3.1460674157303368,1.916354556803995,5.799001248439451,3.6953807740324596,2.5530586766541825,5.967540574282147,1.941323345817728,3.5205992509363297,3.83270911360799,4.119850187265917,5.823970037453184,3.732833957553059,5.749063670411985,6.210986267166042,4.244694132334582,2.471910112359551,1.079900124843945,1.4544319600499376,5.9238451935081144,3.5143570536828963,2.702871410736579,1.0861423220973783,6.086142322097379,4.244694132334582,5.249687890137328,1.6104868913857677,3.701622971285893,3.1210986267166043,5.586766541822722,0.5867665418227216,2.066167290886392,1.9662921348314608,2.3657927590511862,5.224719101123595,0.867665418227216,5.0062421972534334,4.556803995006242,4.275905118601748, +3.83270911360799,5.274656679151062,2.3158551810237205,5.474406991260924,3.7390761548064915,3.857677902621723,0.7927590511860175,3.4581772784019975,1.0861423220973783,3.046192259675406,3.7890137328339577,1.3982521847690388,0.4893882646691636,0.42946317103620474,1.7915106117353308,6.029962546816479,4.66916354556804,2.9400749063670415,2.1098626716604243,1.7852684144818978,4.069912609238452,5.418227215980025,3.114856429463171,5.66167290886392,4.975031210986267,1.1235955056179776,0.7990012484394506,0.8114856429463172,1.9475655430711611,4.207240948813983,0.39637952559300876,1.0986267166042447,5.230961298377029,4.132334581772784,1.4544319600499376,2.727840199750312,0.9238451935081149,6.367041198501872,4.456928838951311,0.8364544319600499,0.8426966292134832,5.087390761548065,3.970037453183521,1.4294631710362047,0.9113607990012486,1.2421972534332086,5.9113607990012484,2.902621722846442,1.2921348314606742,4.6254681647940075,3.15230961298377,3.383270911360799,4.288389513108614,6.036204744069912,1.9350811485642945,3.7578027465667914,4.0761548064918856,5.099875156054932,6.186017478152309,3.4019975031210987,2.521847690387016,3.4893882646691634,3.1772784019975036,1.941323345817728,5.830212234706617,3.7203495630461925,2.578027465667915,5.986267166042447,1.9662921348314608,3.545568039950062,3.8639200998751564,4.151061173533084,5.848938826466916,3.7578027465667914,5.7802746566791505,6.229712858926342,4.263420724094882,2.5093632958801497,1.104868913857678,1.4856429463171037,5.961298377028713,3.545568039950062,2.7340823970037453,1.1111111111111112,6.117353308364544,4.269662921348314,5.274656679151062,1.6416978776529338,3.7265917602996255,3.15230961298377,5.611735330836455,0.6104868913857677,2.097378277153558,1.9912609238451935,2.397003745318352,5.262172284644195,0.898876404494382,5.0374531835206,4.581772784019975,4.294631710362047, +3.8639200998751564,5.312109862671661,2.35330836454432,5.499375780274657,3.764044943820225,3.882646691635456,0.8177278401997503,3.4893882646691634,1.1173533083645444,3.0711610486891385,3.81398252184769,1.4294631710362047,0.5124843945068664,0.45942571785268416,1.8164794007490637,6.061173533083646,4.700374531835206,2.9712858926342074,2.128589263420724,1.8102372034956304,4.094881398252185,5.449438202247191,3.139825218476904,5.692883895131087,5.0062421972534334,1.1485642946317103,0.8302122347066168,0.8364544319600499,1.978776529338327,4.2322097378277155,0.4207240948813982,1.1298377028714106,5.2559300873907615,4.157303370786517,1.4794007490636705,2.746566791510612,0.9550561797752809,6.367041198501872,4.4818976279650435,0.8551810237203495,0.8614232209737829,5.106117353308365,3.9950062421972534,1.466916354556804,0.9425717852684146,1.2671660424469413,5.942571785268415,2.9400749063670415,1.3295880149812733,4.656679151061174,3.183520599250936,3.4144818976279647,4.31960049937578,6.067415730337078,1.9600499375780276,3.776529338327091,4.107365792759051,5.1373283395755305,6.210986267166042,3.4332084893882646,2.5405742821473156,3.508114856429463,3.2084893882646695,1.9662921348314608,5.861423220973783,3.745318352059925,2.596754057428215,6.01123595505618,1.9912609238451935,3.5705368289637955,3.8951310861423223,4.188514357053683,5.867665418227216,3.7890137328339577,5.811485642946318,6.242197253433209,4.288389513108614,2.5405742821473156,1.1298377028714106,1.523096129837703,6.004993757802747,3.576779026217228,2.7715355805243447,1.1298377028714106,6.1485642946317105,4.294631710362047,5.299625468164794,1.6729088639200997,3.7515605493133584,3.183520599250936,5.64294631710362,0.6367041198501873,2.128589263420724,2.0224719101123596,2.428214731585518,5.305867665418227,0.9363295880149812,5.068664169787765,4.606741573033708,4.31960049937578, +3.8951310861423223,5.343320848938826,2.3845193508114857,5.5305867665418225,3.7890137328339577,3.9076154806491883,0.8426966292134832,3.5143570536828963,1.1423220973782773,3.0961298377028714,3.83270911360799,1.4606741573033708,0.534956304619226,0.4893882646691636,1.8414481897627966,6.086142322097379,4.7315855181023725,3.0024968789013733,2.153558052434457,1.8289637952559301,4.1260923845193505,5.480649188514358,3.1647940074906367,5.724094881398252,5.0374531835206,1.1797752808988764,0.8614232209737829,0.8614232209737829,2.016229712858926,4.257178526841448,0.44569288389513106,1.161048689138577,5.274656679151062,4.176029962546816,1.4981273408239701,2.7715355805243447,0.9925093632958802,6.429463171036204,4.506866416978776,0.8739076154806492,0.8863920099875156,5.131086142322098,4.02621722846442,1.4981273408239701,0.9737827715355806,1.2921348314606742,5.97378277153558,2.9712858926342074,1.3607990012484397,4.681647940074906,3.2084893882646695,3.451935081148564,4.344569288389513,6.104868913857677,1.9850187265917605,3.7952559300873907,4.132334581772784,5.174781523096129,6.235955056179775,3.4581772784019975,2.5593008739076155,3.5268414481897628,3.2397003745318353,1.9850187265917605,5.892634207240949,3.764044943820225,2.6217228464419473,6.029962546816479,2.016229712858926,3.595505617977528,3.926342072409488,4.219725343320849,5.892634207240949,3.81398252184769,5.842696629213483,6.242197253433209,4.307116104868914,2.578027465667915,1.1548064918851435,1.554307116104869,6.0424469413233455,3.607990012484395,2.8027465667915106,1.1548064918851435,6.179775280898876,4.31960049937578,5.324594257178527,1.704119850187266,3.776529338327091,3.214731585518102,5.674157303370786,0.6616729088639202,2.15980024968789,2.0474406991260925,2.4656679151061174,5.343320848938826,0.9675405742821472,5.099875156054932,4.631710362047441,4.344569288389513, +3.926342072409488,5.3745318352059925,2.4157303370786516,5.555555555555556,3.81398252184769,3.926342072409488,0.8614232209737829,3.5393258426966296,1.1735330836454432,3.114856429463171,3.857677902621723,1.4918851435705367,0.5580524344569288,0.519350811485643,1.8664169787765295,6.117353308364544,4.762796504369538,3.033707865168539,2.1785268414481895,1.8476903870162298,4.157303370786517,5.511860174781523,3.1897627965043696,5.7553058676654185,5.062421972534332,1.2109862671660423,0.8863920099875156,0.8863920099875156,2.0474406991260925,4.282147315855181,0.4700374531835206,1.198501872659176,5.299625468164794,4.200998751560549,1.523096129837703,2.7965043695380776,1.0237203495630463,6.429463171036204,4.531835205992509,0.898876404494382,0.9113607990012486,5.149812734082397,4.051186017478152,1.529338327091136,0.9987515605493134,1.3233458177278403,6.004993757802747,3.0024968789013733,1.3982521847690388,4.712858926342073,3.2397003745318353,3.4831460674157304,4.369538077403246,6.142322097378277,2.009987515605493,3.8202247191011236,4.16354556803995,5.212234706616729,6.242197253433209,3.4831460674157304,2.578027465667915,3.5518102372034956,3.2709113607990012,2.009987515605493,5.9238451935081144,3.7890137328339577,2.640449438202247,6.054931335830212,2.0411985018726595,3.620474406991261,3.957553058676654,4.250936329588015,5.917602996254682,3.8451935081148565,5.8739076154806495,6.30461922596754,4.325842696629214,2.6092384519350813,1.1797752808988764,1.591760299625468,6.079900124843945,3.639200998751561,2.8339575530586765,1.1735330836454432,6.210986267166042,4.344569288389513,5.34956304619226,1.735330836454432,3.801498127340824,3.245942571785269,5.705368289637952,0.6803995006242198,2.1910112359550564,2.0724094881398254,2.4968789013732833,5.380774032459426,0.9987515605493134,5.131086142322098,4.656679151061174,4.369538077403246, +3.957553058676654,5.411985018726591,2.453183520599251,5.586766541822722,3.8389513108614235,3.951310861423221,0.8863920099875156,3.564294631710362,1.2047440699126093,3.139825218476904,3.8764044943820224,1.5168539325842696,0.5811485642946317,0.548689138576779,1.8913857677902621,6.1485642946317105,4.794007490636704,3.0649188514357055,2.203495630461923,1.8726591760299625,4.18227215980025,5.543071161048689,3.214731585518102,5.786516853932584,5.093632958801498,1.2359550561797754,0.9176029962546817,0.9113607990012486,2.0786516853932584,4.307116104868914,0.4950062421972534,1.229712858926342,5.318352059925093,4.225967540574282,1.5418227215980027,2.82147315855181,1.0611735330836456,6.491885143570538,4.556803995006242,0.9176029962546817,0.9363295880149812,5.174781523096129,4.0761548064918856,1.5605493133583022,1.0299625468164793,1.348314606741573,6.036204744069912,3.0399500624219726,1.4294631710362047,4.7440699126092385,3.2646691635455682,3.5205992509363297,4.394506866416979,6.173533083645444,2.034956304619226,3.8389513108614235,4.188514357053683,5.249687890137328,6.30461922596754,3.5143570536828963,2.596754057428215,3.5705368289637955,3.3021223470661676,2.0287141073657926,5.955056179775282,3.8077403245942576,2.66541822721598,6.073657927590512,2.0599250936329585,3.6454431960049942,3.982521847690387,4.282147315855181,5.942571785268415,3.870162297128589,5.905118601747815,6.30461922596754,4.3508114856429465,2.6466916354556806,1.2047440699126093,1.6229712858926344,6.117353308364544,3.6704119850187267,2.871410736579276,1.198501872659176,6.242197253433209,4.369538077403246,5.3745318352059925,1.766541822721598,3.826466916354557,3.2833957553058677,5.730337078651686,0.7053682896379525,2.2222222222222223,2.097378277153558,2.5280898876404496,5.424469413233458,1.0362047440699127,5.15605493133583,4.681647940074906,4.388264669163545, +3.9887640449438204,5.443196004993759,2.4843945068664173,5.611735330836455,3.8639200998751564,3.9762796504369535,0.9113607990012486,3.589263420724095,1.2359550561797754,3.1647940074906367,3.8951310861423223,1.5480649188514357,0.6036204744069913,0.5786516853932584,1.916354556803995,6.179775280898876,4.825218476903871,3.0961298377028714,2.2284644194756553,1.8913857677902621,4.213483146067416,5.574282147315855,3.233458177278402,5.81772784019975,5.1248439450686645,1.2671660424469413,0.9488139825218477,0.9363295880149812,2.1098626716604243,4.332084893882647,0.5199750312109862,1.2671660424469413,5.337078651685393,4.244694132334582,1.5667915106117354,2.84019975031211,1.0923845193508115,6.491885143570538,4.581772784019975,0.9363295880149812,0.9612983770287141,5.199750312109863,4.1011235955056184,1.5980024968789013,1.0611735330836456,1.373283395755306,6.067415730337078,3.0711610486891385,1.4606741573033708,4.775280898876405,3.295880149812734,3.5518102372034956,4.419475655430712,6.210986267166042,2.0599250936329585,3.857677902621723,4.219725343320849,5.287141073657928,6.30461922596754,3.5393258426966296,2.6217228464419473,3.589263420724095,3.3333333333333335,2.0536828963795255,5.986267166042447,3.83270911360799,2.68414481897628,6.098626716604246,2.084893882646692,3.6704119850187267,4.013732833957553,4.31960049937578,5.961298377028713,3.8951310861423223,5.936329588014981,6.30461922596754,4.369538077403246,2.6779026217228465,1.229712858926342,1.6604244694132335,6.154806491885144,3.701622971285893,2.902621722846442,1.2172284644194757,6.30461922596754,4.394506866416979,5.399500624219725,1.797752808988764,3.8514357053682895,3.3146067415730336,5.761548064918852,0.7303370786516854,2.253433208489388,2.128589263420724,2.565543071161049,5.461922596754057,1.0674157303370786,5.187265917602996,4.70661672908864,4.413233458177278, +4.019975031210986,5.474406991260924,2.521847690387016,5.64294631710362,3.888888888888889,3.9950062421972534,0.9300873907615481,3.620474406991261,1.260923845193508,3.183520599250936,3.920099875156055,1.5792759051186018,0.6242197253433208,0.6086142322097379,1.941323345817728,6.20474406991261,4.856429463171036,3.1273408239700373,2.253433208489388,1.916354556803995,4.244694132334582,5.605493133583021,3.258426966292135,5.848938826466916,5.149812734082397,1.2983770287141074,0.9800249687890138,0.9612983770287141,2.1410736579275906,4.357053682896379,0.5443196004993758,1.2983770287141074,5.3620474406991265,4.269662921348314,1.591760299625468,2.865168539325843,1.1298377028714106,6.554307116104869,4.606741573033708,0.9550561797752809,0.9862671660424469,5.218476903870163,4.132334581772784,1.6292134831460674,1.0861423220973783,1.404494382022472,6.098626716604246,3.102372034956305,1.4981273408239701,4.800249687890138,3.3270911360799,3.589263420724095,4.450686641697877,6.242197253433209,2.0786516853932584,3.882646691635456,4.244694132334582,5.324594257178527,6.367041198501872,3.564294631710362,2.640449438202247,3.6142322097378274,3.3645443196004994,2.0786516853932584,6.0174781523096135,3.857677902621723,2.7091136079900124,6.117353308364544,2.1098626716604243,3.6953807740324596,4.044943820224719,4.3508114856429465,5.986267166042447,3.926342072409488,5.967540574282147,6.367041198501872,4.388264669163545,2.715355805243446,1.2484394506866416,1.6978776529338326,6.198501872659176,3.732833957553059,2.933832709113608,1.2359550561797754,6.30461922596754,4.413233458177278,5.424469413233458,1.8227215980024971,3.8764044943820224,3.3458177278401995,5.792759051186017,0.7553058676654182,2.2846441947565546,2.153558052434457,2.596754057428215,5.499375780274657,1.104868913857678,5.218476903870163,4.737827715355805,4.438202247191011, +4.044943820224719,5.511860174781523,2.5530586766541825,5.667915106117353,3.9138576779026217,4.019975031210986,0.9550561797752809,3.6454431960049942,1.2921348314606742,3.2084893882646695,3.938826466916354,1.6042446941323347,0.6491885143570537,0.6367041198501873,1.9662921348314608,6.235955056179775,4.887640449438202,3.1585518102372037,2.278401997503121,1.9350811485642945,4.269662921348314,5.64294631710362,3.2833957553058677,5.880149812734083,5.181023720349563,1.3233458177278403,1.0112359550561798,0.9862671660424469,2.1722846441947565,4.382022471910113,0.5692883895131086,1.3295880149812733,5.380774032459426,4.288389513108614,1.6104868913857677,2.8901373283395753,1.16729088639201,6.554307116104869,4.6254681647940075,0.9800249687890138,1.0112359550561798,5.243445692883895,4.157303370786517,1.6604244694132335,1.1173533083645444,1.4294631710362047,6.129837702871411,3.139825218476904,1.529338327091136,4.831460674157303,3.352059925093633,3.620474406991261,4.475655430711611,6.30461922596754,2.1036204744069913,3.9013732833957557,4.275905118601748,5.3620474406991265,6.367041198501872,3.595505617977528,2.6591760299625467,3.6329588014981273,3.3957553058676653,2.097378277153558,6.048689138576779,3.8764044943820224,2.727840199750312,6.1360799001248445,2.134831460674157,3.7203495630461925,4.0761548064918856,4.382022471910113,6.01123595505618,3.951310861423221,5.998751560549313,6.367041198501872,4.413233458177278,2.746566791510612,1.2734082397003745,1.7290886392009988,6.235955056179775,3.764044943820225,2.9712858926342074,1.260923845193508,6.367041198501872,4.438202247191011,5.449438202247191,1.8539325842696628,3.9013732833957557,3.3770287141073654,5.81772784019975,0.7802746566791511,2.3158551810237205,2.1785268414481895,2.6279650436953808,5.536828963795256,1.136079900124844,5.249687890137328,4.762796504369538,4.463171036204744, +4.0761548064918856,5.543071161048689,2.5842696629213484,5.69912609238452,3.938826466916354,4.044943820224719,0.9800249687890138,3.6704119850187267,1.3233458177278403,3.233458177278402,3.9637952559300875,1.6354556803995006,0.6741573033707865,0.6679151061173533,1.9912609238451935,6.242197253433209,4.918851435705368,3.1897627965043696,2.303370786516854,1.9600499375780276,4.300873907615481,5.674157303370786,3.3083645443196006,5.9113607990012484,5.212234706616729,1.3545568039950062,1.0362047440699127,1.0112359550561798,2.203495630461923,4.406991260923846,0.5942571785268415,1.3670411985018727,5.405742821473158,4.313358302122348,1.6354556803995006,2.9151061173533086,1.198501872659176,6.616729088639201,4.65043695380774,0.9987515605493134,1.0299625468164793,5.262172284644195,4.18227215980025,1.6978776529338326,1.1485642946317103,1.4544319600499376,6.161048689138577,3.17103620474407,1.5605493133583022,4.8626716604244695,3.383270911360799,3.651685393258427,4.500624219725343,6.30461922596754,2.128589263420724,3.920099875156055,4.300873907615481,5.399500624219725,6.367041198501872,3.620474406991261,2.6779026217228465,3.651685393258427,3.4332084893882646,2.122347066167291,6.079900124843945,3.9013732833957557,2.752808988764045,6.161048689138577,2.15980024968789,3.745318352059925,4.107365792759051,4.413233458177278,6.036204744069912,3.9762796504369535,6.029962546816479,6.367041198501872,4.431960049937578,2.7840199750312107,1.2983770287141074,1.766541822721598,6.30461922596754,3.7952559300873907,3.0024968789013733,1.2796504369538078,6.367041198501872,4.463171036204744,5.480649188514358,1.8851435705368291,3.926342072409488,3.408239700374532,5.848938826466916,0.8052434456928839,2.3470661672908864,2.203495630461923,2.66541822721598,5.580524344569288,1.1735330836454432,5.280898876404494,4.787765293383271,4.4818976279650435, +4.107365792759051,5.574282147315855,2.6217228464419473,5.724094881398252,3.9637952559300875,4.063670411985019,0.9987515605493134,3.6953807740324596,1.3545568039950062,3.2521847690387014,3.982521847690387,1.6666666666666667,0.6928838951310862,0.6991260923845194,2.016229712858926,6.30461922596754,4.950062421972534,3.2209737827715355,2.328339575530587,1.978776529338327,4.332084893882647,5.705368289637952,3.3333333333333335,5.942571785268415,5.237203495630462,1.3857677902621723,1.0674157303370786,1.0362047440699127,2.2347066167290888,4.431960049937578,0.618601747815231,1.3982521847690388,5.424469413233458,4.332084893882647,1.6541822721598003,2.933832709113608,1.2359550561797754,6.616729088639201,4.675405742821473,1.017478152309613,1.0549313358302121,5.287141073657928,4.213483146067416,1.7290886392009988,1.1797752808988764,1.4856429463171037,6.192259675405743,3.202247191011236,1.5980024968789013,4.893882646691636,3.408239700374532,3.689138576779026,4.525593008739076,6.367041198501872,2.153558052434457,3.9450686641697876,4.332084893882647,5.436953807740325,6.429463171036204,3.6454431960049942,2.696629213483146,3.6766541822721597,3.464419475655431,2.1410736579275906,6.111111111111111,3.920099875156055,2.7715355805243447,6.179775280898876,2.184769038701623,3.7702871410736583,4.138576779026217,4.444444444444445,6.054931335830212,4.00749063670412,6.061173533083646,6.429463171036204,4.450686641697877,2.8152309612983775,1.3233458177278403,1.797752808988764,6.30461922596754,3.826466916354557,3.0399500624219726,1.3046192259675407,6.429463171036204,4.488139825218477,5.50561797752809,1.916354556803995,3.951310861423221,3.4456928838951315,5.880149812734083,0.8239700374531835,2.3782771535580522,2.2347066167290888,2.696629213483146,5.617977528089888,1.2047440699126093,5.312109862671661,4.812734082397004,4.506866416978776, +4.138576779026217,5.611735330836455,2.6529338327091136,5.7553058676654185,3.9887640449438204,4.0886392009987516,1.0237203495630463,3.7265917602996255,1.3795255930087391,3.2771535580524347,4.00749063670412,1.6978776529338326,0.717852684144819,0.7303370786516854,2.0411985018726595,6.30461922596754,4.9812734082397006,3.2521847690387014,2.35330836454432,2.00374531835206,4.357053682896379,5.736579275905119,3.3583021223470664,5.967540574282147,5.268414481897628,1.410736579275905,1.0986267166042447,1.0611735330836456,2.2659176029962547,4.456928838951311,0.6429463171036205,1.4294631710362047,5.449438202247191,4.357053682896379,1.6791510611735332,2.958801498127341,1.2671660424469413,6.679151061173534,4.700374531835206,1.042446941323346,1.079900124843945,5.305867665418227,4.238451935081149,1.7602996254681649,1.2047440699126093,1.5106117353308364,6.223470661672909,3.2397003745318353,1.6292134831460674,4.918851435705368,3.439450686641698,3.7203495630461925,4.55056179775281,6.367041198501872,2.1785268414481895,3.9637952559300875,4.3632958801498125,5.474406991260924,6.429463171036204,3.6766541822721597,2.715355805243446,3.6953807740324596,3.495630461922597,2.1660424469413235,6.1360799001248445,3.9450686641697876,2.7965043695380776,6.20474406991261,2.209737827715356,3.7952559300873907,4.169787765293384,4.4818976279650435,6.079900124843945,4.032459425717852,6.092384519350812,6.429463171036204,4.475655430711611,2.8464419475655434,1.348314606741573,1.8352059925093633,6.367041198501872,3.857677902621723,3.0711610486891385,1.3233458177278403,6.429463171036204,4.51310861423221,5.5305867665418225,1.9475655430711611,3.9762796504369535,3.4769038701622974,5.905118601747815,0.8489388264669163,2.4094881398252186,2.259675405742821,2.727840199750312,5.655430711610487,1.2359550561797754,5.337078651685393,4.837702871410737,4.531835205992509, +4.169787765293384,5.64294631710362,2.68414481897628,5.7802746566791505,4.013732833957553,4.1136079900124844,1.048689138576779,3.7515605493133584,1.410736579275905,3.3021223470661676,4.02621722846442,1.7228464419475658,0.7428214731585518,0.7553058676654182,2.066167290886392,6.367041198501872,5.012484394506866,3.2833957553058677,2.3782771535580522,2.0224719101123596,4.388264669163545,5.767790262172285,3.383270911360799,5.998751560549313,5.299625468164794,1.4419475655430714,1.1298377028714106,1.0861423220973783,2.2971285892634206,4.4818976279650435,0.6679151061173533,1.466916354556804,5.468164794007491,4.382022471910113,1.704119850187266,2.9837702871410734,1.3046192259675407,6.679151061173534,4.725343320848939,1.0611735330836456,1.104868913857678,5.33083645443196,4.263420724094882,1.7915106117353308,1.2359550561797754,1.5355805243445693,6.242197253433209,3.2709113607990012,1.6666666666666667,4.950062421972534,3.464419475655431,3.7578027465667914,4.581772784019975,6.429463171036204,2.1972534332084894,3.9887640449438204,4.388264669163545,5.511860174781523,6.491885143570538,3.701622971285893,2.7340823970037453,3.714107365792759,3.5268414481897628,2.184769038701623,6.167290886392011,3.9637952559300875,2.8152309612983775,6.223470661672909,2.2347066167290888,3.8202247191011236,4.200998751560549,4.51310861423221,6.104868913857677,4.057428214731585,6.123595505617978,6.429463171036204,4.49438202247191,2.8838951310861427,1.373283395755306,1.8726591760299625,6.367041198501872,3.888888888888889,3.102372034956305,1.348314606741573,6.491885143570538,4.538077403245943,5.555555555555556,1.978776529338327,4.001248439450687,3.508114856429463,5.936329588014981,0.8739076154806492,2.4406991260923845,2.2846441947565546,2.7590511860174782,5.69912609238452,1.2734082397003745,5.36828963795256,4.8626716604244695,4.556803995006242, +4.200998751560549,5.674157303370786,2.7215980024968793,5.811485642946318,4.038701622971286,4.132334581772784,1.0674157303370786,3.776529338327091,1.4419475655430714,3.320848938826467,4.044943820224719,1.7540574282147314,0.7615480649188515,0.7865168539325842,2.091136079900125,6.367041198501872,5.043695380774032,3.3146067415730336,2.4032459425717856,2.0474406991260925,4.419475655430712,5.799001248439451,3.408239700374532,6.029962546816479,5.324594257178527,1.4731585518102372,1.161048689138577,1.1111111111111112,2.328339575530587,4.506866416978776,0.6928838951310862,1.4981273408239701,5.493133583021224,4.400749063670412,1.7228464419475658,3.0087390761548067,1.3358302122347065,6.741573033707866,4.750312109862672,1.079900124843945,1.1298377028714106,5.34956304619226,4.288389513108614,1.8289637952559301,1.2671660424469413,1.5605493133583022,6.30461922596754,3.3083645443196006,1.6978776529338326,4.9812734082397006,3.495630461922597,3.7890137328339577,4.606741573033708,6.429463171036204,2.2222222222222223,4.00749063670412,4.419475655430712,5.549313358302123,6.491885143570538,3.7265917602996255,2.752808988764045,3.7390761548064915,3.5580524344569286,2.209737827715356,6.198501872659176,3.9887640449438204,2.84019975031211,6.242197253433209,2.259675405742821,3.8451935081148565,4.2322097378277155,4.544319600499376,6.123595505617978,4.0886392009987516,6.1485642946317105,6.491885143570538,4.519350811485642,2.9151061173533086,1.3982521847690388,1.9038701622971288,6.429463171036204,3.920099875156055,3.139825218476904,1.3670411985018727,6.491885143570538,4.563046192259676,5.580524344569288,2.009987515605493,4.02621722846442,3.5393258426966296,5.967540574282147,0.898876404494382,2.4656679151061174,2.3158551810237205,2.7965043695380776,5.736579275905119,1.3046192259675407,5.399500624219725,4.887640449438202,4.575530586766542, +4.2322097378277155,5.711610486891385,2.752808988764045,5.836454431960051,4.063670411985019,4.157303370786517,1.0923845193508115,3.801498127340824,1.4731585518102372,3.3458177278401995,4.069912609238452,1.7852684144818978,0.7865168539325842,0.8177278401997503,2.1161048689138577,6.429463171036204,5.074906367041199,3.3458177278401995,2.428214731585518,2.066167290886392,4.444444444444445,5.830212234706617,3.4332084893882646,6.061173533083646,5.355805243445693,1.4981273408239701,1.1922596754057428,1.136079900124844,2.3657927590511862,4.525593008739076,0.717852684144819,1.5355805243445693,5.511860174781523,4.425717852684145,1.7478152309612984,3.027465667915106,1.373283395755306,6.741573033707866,4.769038701622971,1.104868913857678,1.1548064918851435,5.3745318352059925,4.31960049937578,1.8601747815230962,1.2921348314606742,1.591760299625468,6.30461922596754,3.339575530586767,1.7290886392009988,5.012484394506866,3.5268414481897628,3.826466916354557,4.631710362047441,6.491885143570538,2.247191011235955,4.02621722846442,4.444444444444445,5.586766541822722,6.491885143570538,3.7578027465667914,2.7715355805243447,3.7578027465667914,3.589263420724095,2.2347066167290888,6.229712858926342,4.013732833957553,2.8589263420724094,6.242197253433209,2.2846441947565546,3.870162297128589,4.263420724094882,4.575530586766542,6.1485642946317105,4.1136079900124844,6.179775280898876,6.491885143570538,4.538077403245943,2.9525593008739075,1.4232209737827717,1.941323345817728,6.491885143570538,3.9450686641697876,3.17103620474407,1.3920099875156053,6.554307116104869,4.581772784019975,5.605493133583021,2.0411985018726595,4.057428214731585,3.5705368289637955,5.992509363295881,0.9238451935081149,2.4968789013732833,2.340823970037453,2.8277153558052435,5.774032459425719,1.34207240948814,5.430711610486892,4.912609238451935,4.600499375780275, +4.263420724094882,5.742821473158552,2.7840199750312107,5.867665418227216,4.0886392009987516,4.18227215980025,1.1173533083645444,3.826466916354557,1.4981273408239701,3.370786516853933,4.0886392009987516,1.8164794007490637,0.8114856429463172,0.8489388264669163,2.1410736579275906,6.429463171036204,5.106117353308365,3.3770287141073654,2.453183520599251,2.091136079900125,4.475655430711611,5.861423220973783,3.4581772784019975,6.092384519350812,5.3870162297128585,1.529338327091136,1.2172284644194757,1.161048689138577,2.397003745318352,4.55056179775281,0.7428214731585518,1.5667915106117354,5.5305867665418225,4.444444444444445,1.766541822721598,3.0524344569288386,1.404494382022472,6.803995006242197,4.794007490636704,1.1235955056179776,1.1735330836454432,5.393258426966292,4.344569288389513,1.8913857677902621,1.3233458177278403,1.616729088639201,6.367041198501872,3.370786516853933,1.766541822721598,5.0374531835206,3.5518102372034956,3.857677902621723,4.656679151061174,6.554307116104869,2.272159800249688,4.051186017478152,4.475655430711611,5.6242197253433215,6.554307116104869,3.7827715355805243,2.7965043695380776,3.776529338327091,3.620474406991261,2.253433208489388,6.242197253433209,4.032459425717852,2.8838951310861427,6.30461922596754,2.303370786516854,3.8951310861423223,4.294631710362047,4.612983770287141,6.173533083645444,4.138576779026217,6.210986267166042,6.491885143570538,4.556803995006242,2.9837702871410734,1.4481897627965044,1.9725343320848938,6.491885143570538,3.9762796504369535,3.202247191011236,1.410736579275905,6.554307116104869,4.606741573033708,5.630461922596755,2.0724094881398254,4.082397003745319,3.6017478152309614,6.023720349563047,0.9488139825218477,2.5280898876404496,2.3657927590511862,2.8589263420724094,5.811485642946318,1.373283395755306,5.461922596754057,4.943820224719102,4.6254681647940075, +4.288389513108614,5.774032459425719,2.82147315855181,5.892634207240949,4.1136079900124844,4.200998751560549,1.136079900124844,3.857677902621723,1.529338327091136,3.3895131086142323,4.1136079900124844,1.8414481897627966,0.8302122347066168,0.8801498127340824,2.1660424469413235,6.491885143570538,5.1373283395755305,3.408239700374532,2.471910112359551,2.1098626716604243,4.500624219725343,5.892634207240949,3.4769038701622974,6.123595505617978,5.418227215980025,1.5605493133583022,1.2484394506866416,1.1860174781523096,2.428214731585518,4.575530586766542,0.7677902621722846,1.5980024968789013,5.555555555555556,4.4694132334581775,1.7915106117353308,3.077403245942572,1.4419475655430714,6.803995006242197,4.818976279650437,1.1423220973782773,1.198501872659176,5.418227215980025,4.369538077403246,1.9225967540574282,1.3545568039950062,1.6416978776529338,6.367041198501872,3.408239700374532,1.797752808988764,5.068664169787765,3.5830212234706615,3.888888888888889,4.681647940074906,6.554307116104869,2.2971285892634206,4.069912609238452,4.500624219725343,5.66167290886392,6.554307116104869,3.8077403245942576,2.8152309612983775,3.801498127340824,3.651685393258427,2.278401997503121,6.30461922596754,4.057428214731585,2.902621722846442,6.30461922596754,2.328339575530587,3.920099875156055,4.325842696629214,4.644194756554308,6.198501872659176,4.169787765293384,6.242197253433209,6.554307116104869,4.581772784019975,3.0212234706616727,1.4731585518102372,2.009987515605493,6.554307116104869,4.00749063670412,3.2397003745318353,1.435705368289638,6.616729088639201,4.631710362047441,5.655430711610487,2.1036204744069913,4.107365792759051,3.639200998751561,6.054931335830212,0.9737827715355806,2.5593008739076155,2.3907615480649187,2.8963795255930087,5.855181023720349,1.410736579275905,5.493133583021224,4.9687890137328345,4.644194756554308, +4.31960049937578,5.805243445692884,2.852684144818976,5.9238451935081144,4.144818976279651,4.225967540574282,1.161048689138577,3.882646691635456,1.5605493133583022,3.4144818976279647,4.132334581772784,1.8726591760299625,0.8551810237203495,0.9051186017478152,2.1910112359550564,6.491885143570538,5.162297128589263,3.439450686641698,2.4968789013732833,2.128589263420724,4.531835205992509,5.9238451935081144,3.5018726591760303,6.154806491885144,5.443196004993759,1.585518102372035,1.2796504369538078,1.2109862671660423,2.459425717852684,4.600499375780275,0.7927590511860175,1.6354556803995006,5.574282147315855,4.488139825218477,1.8164794007490637,3.0961298377028714,1.4731585518102372,6.866416978776529,4.843945068664169,1.161048689138577,1.223470661672909,5.443196004993759,4.400749063670412,1.9600499375780276,1.3857677902621723,1.6729088639200997,6.429463171036204,3.439450686641698,1.8352059925093633,5.099875156054932,3.607990012484395,3.926342072409488,4.712858926342073,6.616729088639201,2.322097378277154,4.0886392009987516,4.531835205992509,5.69912609238452,6.616729088639201,3.8389513108614235,2.8339575530586765,3.8202247191011236,3.682896379525593,2.2971285892634206,6.30461922596754,4.0761548064918856,2.9275905118601746,6.30461922596754,2.35330836454432,3.9450686641697876,4.357053682896379,4.675405742821473,6.217228464419476,4.194756554307116,6.30461922596754,6.554307116104869,4.600499375780275,3.0524344569288386,1.4981273408239701,2.0411985018726595,6.554307116104869,4.038701622971286,3.2709113607990012,1.4544319600499376,6.616729088639201,4.656679151061174,5.68039950062422,2.134831460674157,4.132334581772784,3.6704119850187267,6.079900124843945,0.9925093632958802,2.5905118601747814,2.4219725343320846,2.9275905118601746,5.892634207240949,1.4419475655430714,5.5181023720349565,4.9937578027465666,4.66916354556804, +4.3508114856429465,5.842696629213483,2.8901373283395753,5.948813982521848,4.169787765293384,4.244694132334582,1.1860174781523096,3.9076154806491883,1.585518102372035,3.439450686641698,4.151061173533084,1.9038701622971288,0.8801498127340824,0.9363295880149812,2.209737827715356,6.554307116104869,5.19350811485643,3.470661672908864,2.521847690387016,2.153558052434457,4.563046192259676,5.955056179775282,3.5268414481897628,6.186017478152309,5.474406991260924,1.616729088639201,1.3108614232209737,1.2359550561797754,2.4906367041198503,4.6254681647940075,0.8177278401997503,1.6666666666666667,5.599250936329588,4.51310861423221,1.8352059925093633,3.1210986267166043,1.5106117353308364,6.866416978776529,4.868913857677903,1.1860174781523096,1.2484394506866416,5.461922596754057,4.425717852684145,1.9912609238451935,1.410736579275905,1.6978776529338326,6.429463171036204,3.470661672908864,1.8664169787765295,5.131086142322098,3.639200998751561,3.957553058676654,4.737827715355805,6.616729088639201,2.340823970037453,4.1136079900124844,4.556803995006242,5.736579275905119,6.616729088639201,3.8639200998751564,2.852684144818976,3.8389513108614235,3.714107365792759,2.322097378277154,6.367041198501872,4.1011235955056184,2.9463171036204745,6.367041198501872,2.3782771535580522,3.970037453183521,4.382022471910113,4.70661672908864,6.242197253433209,4.225967540574282,6.30461922596754,6.554307116104869,4.619225967540574,3.089887640449438,1.523096129837703,2.0786516853932584,6.616729088639201,4.069912609238452,3.3021223470661676,1.4794007490636705,6.679151061173534,4.681647940074906,5.705368289637952,2.1660424469413235,4.157303370786517,3.701622971285893,6.111111111111111,1.017478152309613,2.6217228464419473,2.446941323345818,2.958801498127341,5.930087390761548,1.4794007490636705,5.549313358302123,5.0187265917602994,4.694132334581773, +4.382022471910113,5.8739076154806495,2.9213483146067416,5.980024968789014,4.194756554307116,4.269662921348314,1.2047440699126093,3.9325842696629216,1.616729088639201,3.4581772784019975,4.176029962546816,1.9350811485642945,0.898876404494382,0.9675405742821472,2.2347066167290888,6.554307116104869,5.224719101123595,3.5018726591760303,2.546816479400749,2.1722846441947565,4.588014981273409,5.992509363295881,3.5518102372034956,6.217228464419476,5.50561797752809,1.647940074906367,1.34207240948814,1.260923845193508,2.521847690387016,4.65043695380774,0.8426966292134832,1.6978776529338326,5.617977528089888,4.538077403245943,1.8601747815230962,3.1460674157303368,1.5418227215980027,6.928838951310862,4.893882646691636,1.2047440699126093,1.2734082397003745,5.48689138576779,4.450686641697877,2.0224719101123596,1.4419475655430714,1.7228464419475658,6.491885143570538,3.508114856429463,1.8976279650436954,5.15605493133583,3.6641697877652937,3.9950062421972534,4.762796504369538,6.679151061173534,2.3657927590511862,4.132334581772784,4.588014981273409,5.774032459425719,6.616729088639201,3.888888888888889,2.871410736579276,3.8639200998751564,3.745318352059925,2.3470661672908864,6.367041198501872,4.1260923845193505,2.9712858926342074,6.367041198501872,2.4032459425717856,3.9950062421972534,4.413233458177278,4.7440699126092385,6.242197253433209,4.250936329588015,6.367041198501872,6.616729088639201,4.644194756554308,3.1210986267166043,1.5480649188514357,2.1161048689138577,6.679151061173534,4.1011235955056184,3.339575530586767,1.4981273408239701,6.679151061173534,4.70661672908864,5.730337078651686,2.1972534332084894,4.18227215980025,3.732833957553059,6.142322097378277,1.042446941323346,2.6529338327091136,2.471910112359551,2.9962546816479403,5.97378277153558,1.5106117353308364,5.580524344569288,5.043695380774032,4.719101123595506, +4.413233458177278,5.905118601747815,2.9525593008739075,6.004993757802747,4.219725343320849,4.294631710362047,1.229712858926342,3.957553058676654,1.647940074906367,3.4831460674157304,4.194756554307116,1.9600499375780276,0.9238451935081149,0.9987515605493134,2.259675405742821,6.616729088639201,5.2559300873907615,3.5268414481897628,2.571785268414482,2.1972534332084894,4.619225967540574,6.023720349563047,3.576779026217228,6.242197253433209,5.5305867665418225,1.6729088639200997,1.373283395755306,1.285892634207241,2.5530586766541825,4.675405742821473,0.867665418227216,1.735330836454432,5.64294631710362,4.556803995006242,1.8789013732833957,3.17103620474407,1.5792759051186018,6.928838951310862,4.918851435705368,1.223470661672909,1.2983770287141074,5.50561797752809,4.475655430711611,2.0536828963795255,1.4731585518102372,1.7540574282147314,6.491885143570538,3.5393258426966296,1.9350811485642945,5.187265917602996,3.6953807740324596,4.02621722846442,4.787765293383271,6.679151061173534,2.3907615480649187,4.151061173533084,4.612983770287141,5.811485642946318,6.679151061173534,3.920099875156055,2.8901373283395753,3.882646691635456,3.7827715355805243,2.3657927590511862,6.429463171036204,4.144818976279651,2.990012484394507,6.429463171036204,2.428214731585518,4.019975031210986,4.444444444444445,4.775280898876405,6.30461922596754,4.275905118601748,6.367041198501872,6.616729088639201,4.662921348314606,3.1585518102372037,1.5730337078651684,2.1473158551810236,6.679151061173534,4.132334581772784,3.370786516853933,1.523096129837703,6.741573033707866,4.7315855181023725,5.7553058676654185,2.2284644194756553,4.207240948813983,3.764044943820225,6.167290886392011,1.0674157303370786,2.68414481897628,2.4968789013732833,3.027465667915106,6.01123595505618,1.5418227215980027,5.611735330836455,5.068664169787765,4.737827715355805, +4.444444444444445,5.942571785268415,2.990012484394507,6.036204744069912,4.244694132334582,4.313358302122348,1.2546816479400749,3.9887640449438204,1.6791510611735332,3.508114856429463,4.219725343320849,1.9912609238451935,0.9488139825218477,1.0299625468164793,2.2846441947565546,6.616729088639201,5.287141073657928,3.5580524344569286,2.596754057428215,2.215980024968789,4.65043695380774,6.054931335830212,3.6017478152309614,6.30461922596754,5.561797752808988,1.704119850187266,1.3982521847690388,1.3108614232209737,2.5842696629213484,4.700374531835206,0.8926342072409489,1.766541822721598,5.66167290886392,4.581772784019975,1.9038701622971288,3.1897627965043696,1.6104868913857677,6.991260923845194,4.937578027465668,1.2484394506866416,1.3233458177278403,5.5305867665418225,4.506866416978776,2.091136079900125,1.4981273408239701,1.7790262172284643,6.554307116104869,3.5705368289637955,1.9662921348314608,5.218476903870163,3.7265917602996255,4.057428214731585,4.812734082397004,6.741573033707866,2.4157303370786516,4.176029962546816,4.644194756554308,5.848938826466916,6.679151061173534,3.9450686641697876,2.908863920099875,3.9013732833957557,3.81398252184769,2.3907615480649187,6.429463171036204,4.169787765293384,3.0149812734082393,6.429463171036204,2.453183520599251,4.044943820224719,4.475655430711611,4.806491885143571,6.30461922596754,4.307116104868914,6.429463171036204,6.616729088639201,4.681647940074906,3.1897627965043696,1.5980024968789013,2.184769038701623,6.741573033707866,4.16354556803995,3.4019975031210987,1.5418227215980027,6.741573033707866,4.750312109862672,5.7802746566791505,2.259675405742821,4.2322097378277155,3.801498127340824,6.198501872659176,1.0923845193508115,2.715355805243446,2.5280898876404496,3.058676654182272,6.048689138576779,1.5792759051186018,5.64294631710362,5.093632958801498,4.762796504369538, +4.475655430711611,5.97378277153558,3.0212234706616727,6.061173533083646,4.269662921348314,4.33832709113608,1.2734082397003745,4.013732833957553,1.704119850187266,3.5268414481897628,4.238451935081149,2.0224719101123596,0.9675405742821472,1.0549313358302121,2.309612983770287,6.616729088639201,5.318352059925093,3.589263420724095,2.6217228464419473,2.2409488139825218,4.675405742821473,6.086142322097379,3.6267166042446943,6.30461922596754,5.593008739076155,1.735330836454432,1.4294631710362047,1.3358302122347065,2.6154806491885143,4.725343320848939,0.9176029962546817,1.8039950062421974,5.686641697877653,4.600499375780275,1.9288389513108615,3.214731585518102,1.647940074906367,6.991260923845194,4.962546816479401,1.2671660424469413,1.34207240948814,5.549313358302123,4.531835205992509,2.122347066167291,1.529338327091136,1.8039950062421974,6.554307116104869,3.607990012484395,1.9975031210986267,5.249687890137328,3.7515605493133584,4.094881398252185,4.843945068664169,6.803995006242197,2.4406991260923845,4.194756554307116,4.675405742821473,5.8863920099875156,6.741573033707866,3.970037453183521,2.9275905118601746,3.926342072409488,3.8451935081148565,2.4094881398252186,6.491885143570538,4.188514357053683,3.033707865168539,6.429463171036204,2.478152309612984,4.069912609238452,4.506866416978776,4.837702871410737,6.367041198501872,4.332084893882647,6.429463171036204,6.679151061173534,4.70661672908864,3.227215980024969,1.6229712858926344,2.215980024968789,6.803995006242197,4.194756554307116,3.439450686641698,1.5667915106117354,6.803995006242197,4.775280898876405,5.805243445692884,2.2908863920099876,4.257178526841448,3.83270911360799,6.229712858926342,1.1173533083645444,2.746566791510612,2.5530586766541825,3.089887640449438,6.086142322097379,1.6104868913857677,5.674157303370786,5.118601747815231,4.787765293383271, +4.506866416978776,6.004993757802747,3.0524344569288386,6.092384519350812,4.294631710362047,4.3632958801498125,1.2983770287141074,4.038701622971286,1.735330836454432,3.5518102372034956,4.263420724094882,2.0474406991260925,0.9925093632958802,1.0861423220973783,2.33458177278402,6.679151061173534,5.34956304619226,3.620474406991261,2.6466916354556806,2.259675405742821,4.70661672908864,6.117353308364544,3.651685393258427,6.367041198501872,5.617977528089888,1.7602996254681649,1.4606741573033708,1.3607990012484397,2.6466916354556806,4.750312109862672,0.9425717852684146,1.8352059925093633,5.705368289637952,4.6254681647940075,1.9475655430711611,3.2397003745318353,1.6791510611735332,7.0536828963795255,4.987515605493134,1.285892634207241,1.3670411985018727,5.574282147315855,4.556803995006242,2.153558052434457,1.5605493133583022,1.8352059925093633,6.616729088639201,3.639200998751561,2.034956304619226,5.274656679151062,3.7827715355805243,4.1260923845193505,4.868913857677903,6.803995006242197,2.4656679151061174,4.213483146067416,4.700374531835206,5.9238451935081144,6.741573033707866,3.9950062421972534,2.9463171036204745,3.9450686641697876,3.8764044943820224,2.4344569288389515,6.491885143570538,4.213483146067416,3.058676654182272,6.491885143570538,2.5031210986267167,4.094881398252185,4.538077403245943,4.868913857677903,6.367041198501872,4.357053682896379,6.491885143570538,6.679151061173534,4.725343320848939,3.258426966292135,1.647940074906367,2.253433208489388,6.803995006242197,4.225967540574282,3.470661672908864,1.585518102372035,6.803995006242197,4.800249687890138,5.830212234706617,2.322097378277154,4.282147315855181,3.8639200998751564,6.242197253433209,1.136079900124844,2.777777777777778,2.578027465667915,3.1273408239700373,6.129837702871411,1.647940074906367,5.69912609238452,5.149812734082397,4.812734082397004, +4.538077403245943,6.0424469413233455,3.089887640449438,6.117353308364544,4.31960049937578,4.382022471910113,1.3233458177278403,4.063670411985019,1.766541822721598,3.576779026217228,4.282147315855181,2.0786516853932584,1.017478152309613,1.1173533083645444,2.359550561797753,6.679151061173534,5.380774032459426,3.651685393258427,2.671660424469413,2.2846441947565546,4.737827715355805,6.1485642946317105,3.6766541822721597,6.367041198501872,5.6491885143570535,1.7915106117353308,1.4918851435705367,1.3857677902621723,2.68414481897628,4.775280898876405,0.9675405742821472,1.8664169787765295,5.724094881398252,4.65043695380774,1.9725343320848938,3.2646691635455682,1.7166042446941323,7.0536828963795255,5.012484394506866,1.3046192259675407,1.3920099875156053,5.593008739076155,4.588014981273409,2.184769038701623,1.591760299625468,1.8601747815230962,6.616729088639201,3.6766541822721597,2.066167290886392,5.305867665418227,3.8077403245942576,4.16354556803995,4.893882646691636,6.866416978776529,2.4843945068664173,4.238451935081149,4.7315855181023725,5.961298377028713,6.741573033707866,4.02621722846442,2.9712858926342074,3.9637952559300875,3.9076154806491883,2.453183520599251,6.554307116104869,4.238451935081149,3.077403245942572,6.491885143570538,2.5280898876404496,4.1136079900124844,4.569288389513109,4.906367041198502,6.367041198501872,4.388264669163545,6.491885143570538,6.679151061173534,4.7440699126092385,3.2896379525593007,1.6729088639200997,2.2846441947565546,6.866416978776529,4.257178526841448,3.5018726591760303,1.6042446941323347,6.866416978776529,4.825218476903871,5.855181023720349,2.35330836454432,4.307116104868914,3.8951310861423223,6.30461922596754,1.161048689138577,2.808988764044944,2.6092384519350813,3.1585518102372037,6.167290886392011,1.6791510611735332,5.730337078651686,5.174781523096129,4.831460674157303, +4.563046192259676,6.073657927590512,3.1210986267166043,6.1485642946317105,4.344569288389513,4.406991260923846,1.348314606741573,4.0886392009987516,1.797752808988764,3.595505617977528,4.300873907615481,2.1098626716604243,1.0362047440699127,1.1485642946317103,2.3845193508114857,6.741573033707866,5.411985018726591,3.682896379525593,2.696629213483146,2.303370786516854,4.762796504369538,6.179775280898876,3.6953807740324596,6.429463171036204,5.68039950062422,1.8227215980024971,1.523096129837703,1.410736579275905,2.715355805243446,4.800249687890138,0.9925093632958802,1.9038701622971288,5.749063670411985,4.66916354556804,1.9975031210986267,3.2833957553058677,1.7478152309612984,7.116104868913857,5.0374531835206,1.3295880149812733,1.4169787765293382,5.617977528089888,4.612983770287141,2.2222222222222223,1.616729088639201,1.8851435705368291,6.679151061173534,3.7078651685393256,2.1036204744069913,5.337078651685393,3.8389513108614235,4.194756554307116,4.918851435705368,6.866416978776529,2.5093632958801497,4.257178526841448,4.7565543071161045,5.998751560549313,6.803995006242197,4.051186017478152,2.990012484394507,3.9887640449438204,3.938826466916354,2.478152309612984,6.554307116104869,4.257178526841448,3.102372034956305,6.491885143570538,2.546816479400749,4.138576779026217,4.600499375780275,4.937578027465668,6.429463171036204,4.413233458177278,6.554307116104869,6.741573033707866,4.769038701622971,3.3270911360799,1.6978776529338326,2.322097378277154,6.866416978776529,4.288389513108614,3.5393258426966296,1.6292134831460674,6.866416978776529,4.850187265917603,5.880149812734083,2.3845193508114857,4.332084893882647,3.926342072409488,6.30461922596754,1.1860174781523096,2.84019975031211,2.634207240948814,3.1897627965043696,6.20474406991261,1.7166042446941323,5.761548064918852,5.199750312109863,4.856429463171036, +4.594257178526841,6.104868913857677,3.15230961298377,6.173533083645444,4.369538077403246,4.431960049937578,1.3670411985018727,4.119850187265917,1.8227215980024971,3.620474406991261,4.325842696629214,2.1410736579275906,1.0611735330836456,1.1797752808988764,2.4094881398252186,6.741573033707866,5.443196004993759,3.714107365792759,2.7215980024968793,2.328339575530587,4.794007490636704,6.210986267166042,3.7203495630461925,6.429463171036204,5.705368289637952,1.8476903870162298,1.554307116104869,1.435705368289638,2.746566791510612,4.825218476903871,1.0112359550561798,1.9350811485642945,5.767790262172285,4.694132334581773,2.016229712858926,3.3083645443196006,1.7852684144818978,7.116104868913857,5.062421972534332,1.348314606741573,1.4419475655430714,5.636704119850187,4.637952559300874,2.253433208489388,1.647940074906367,1.916354556803995,6.679151061173534,3.7390761548064915,2.134831460674157,5.36828963795256,3.8639200998751564,4.2322097378277155,4.943820224719102,6.928838951310862,2.5343320848938826,4.282147315855181,4.787765293383271,6.036204744069912,6.803995006242197,4.0761548064918856,3.0087390761548067,4.00749063670412,3.970037453183521,2.5031210986267167,6.616729088639201,4.282147315855181,3.1210986267166043,6.554307116104869,2.571785268414482,4.16354556803995,4.631710362047441,4.9687890137328345,6.429463171036204,4.438202247191011,6.554307116104869,6.741573033707866,4.787765293383271,3.3583021223470664,1.7228464419475658,2.359550561797753,6.928838951310862,4.31960049937578,3.5705368289637955,1.647940074906367,6.928838951310862,4.875156054931336,5.905118601747815,2.4157303370786516,4.357053682896379,3.9637952559300875,6.367041198501872,1.2109862671660423,2.871410736579276,2.6591760299625467,3.227215980024969,6.242197253433209,1.7478152309612984,5.792759051186017,5.224719101123595,4.881398252184769, +4.6254681647940075,6.142322097378277,3.1897627965043696,6.20474406991261,4.394506866416979,4.450686641697877,1.3920099875156053,4.144818976279651,1.8539325842696628,3.6454431960049942,4.344569288389513,2.1660424469413235,1.079900124843945,1.2047440699126093,2.4344569288389515,6.803995006242197,5.474406991260924,3.745318352059925,2.746566791510612,2.3470661672908864,4.825218476903871,6.242197253433209,3.745318352059925,6.491885143570538,5.736579275905119,1.8789013732833957,1.5792759051186018,1.4606741573033708,2.777777777777778,4.850187265917603,1.0362047440699127,1.9662921348314608,5.792759051186017,4.712858926342073,2.0411985018726595,3.3333333333333335,1.8164794007490637,7.17852684144819,5.081148564294631,1.3670411985018727,1.466916354556804,5.66167290886392,4.662921348314606,2.2846441947565546,1.6791510611735332,1.941323345817728,6.741573033707866,3.776529338327091,2.1660424469413235,5.393258426966292,3.8951310861423223,4.263420724094882,4.9687890137328345,6.928838951310862,2.5593008739076155,4.300873907615481,4.812734082397004,6.073657927590512,6.866416978776529,4.107365792759051,3.027465667915106,4.02621722846442,4.001248439450687,2.521847690387016,6.616729088639201,4.300873907615481,3.1460674157303368,6.554307116104869,2.596754057428215,4.188514357053683,4.662921348314606,5.0,6.429463171036204,4.4694132334581775,6.616729088639201,6.741573033707866,4.812734082397004,3.3957553058676653,1.7478152309612984,2.3907615480649187,6.991260923845194,4.3508114856429465,3.6017478152309614,1.6729088639200997,6.928838951310862,4.893882646691636,5.930087390761548,2.446941323345818,4.382022471910113,3.9950062421972534,6.367041198501872,1.2359550561797754,2.902621722846442,2.68414481897628,3.258426966292135,6.30461922596754,1.7852684144818978,5.823970037453184,5.249687890137328,4.906367041198502, +4.656679151061174,6.173533083645444,3.2209737827715355,6.229712858926342,4.419475655430712,4.475655430711611,1.4169787765293382,4.169787765293384,1.8851435705368291,3.6641697877652937,4.369538077403246,2.1972534332084894,1.104868913857678,1.2359550561797754,2.459425717852684,6.803995006242197,5.50561797752809,3.776529338327091,2.7715355805243447,2.3720349563046192,4.850187265917603,6.30461922596754,3.7702871410736583,6.491885143570538,5.767790262172285,1.9101123595505618,1.6104868913857677,1.4856429463171037,2.808988764044944,4.875156054931336,1.0611735330836456,2.00374531835206,5.811485642946318,4.737827715355805,2.0599250936329585,3.3583021223470664,1.8539325842696628,7.17852684144819,5.106117353308365,1.3920099875156053,1.4856429463171037,5.686641697877653,4.694132334581773,2.3158551810237205,1.704119850187266,1.9662921348314608,6.741573033707866,3.8077403245942576,2.203495630461923,5.424469413233458,3.926342072409488,4.294631710362047,5.0,6.991260923845194,2.5842696629213484,4.31960049937578,4.843945068664169,6.111111111111111,6.866416978776529,4.132334581772784,3.046192259675406,4.051186017478152,4.032459425717852,2.546816479400749,6.679151061173534,4.325842696629214,3.1647940074906367,6.554307116104869,2.6217228464419473,4.213483146067416,4.694132334581773,5.0374531835206,6.491885143570538,4.49438202247191,6.616729088639201,6.803995006242197,4.831460674157303,3.4269662921348316,1.772784019975031,2.428214731585518,6.991260923845194,4.382022471910113,3.639200998751561,1.6916354556803994,6.991260923845194,4.918851435705368,5.955056179775282,2.478152309612984,4.406991260923846,4.02621722846442,6.429463171036204,1.260923845193508,2.933832709113608,2.715355805243446,3.2896379525593007,6.30461922596754,1.8164794007490637,5.855181023720349,5.274656679151062,4.925093632958801, +4.687890137328339,6.20474406991261,3.258426966292135,6.242197253433209,4.444444444444445,4.500624219725343,1.435705368289638,4.194756554307116,1.916354556803995,3.689138576779026,4.388264669163545,2.2284644194756553,1.1298377028714106,1.2671660424469413,2.4843945068664173,6.866416978776529,5.536828963795256,3.8077403245942576,2.7965043695380776,2.3907615480649187,4.881398252184769,6.30461922596754,3.7952559300873907,6.554307116104869,5.799001248439451,1.9350811485642945,1.6416978776529338,1.5106117353308364,2.84019975031211,4.900124843945068,1.0861423220973783,2.034956304619226,5.836454431960051,4.7565543071161045,2.084893882646692,3.3770287141073654,1.8851435705368291,7.240948813982522,5.131086142322098,1.410736579275905,1.5106117353308364,5.705368289637952,4.719101123595506,2.35330836454432,1.735330836454432,1.9975031210986267,6.803995006242197,3.8389513108614235,2.2347066167290888,5.455680399500624,3.951310861423221,4.332084893882647,5.024968789013733,7.0536828963795255,2.602996254681648,4.344569288389513,4.868913857677903,6.1485642946317105,6.866416978776529,4.157303370786517,3.0649188514357055,4.069912609238452,4.063670411985019,2.565543071161049,6.679151061173534,4.3508114856429465,3.1897627965043696,6.616729088639201,2.6466916354556806,4.238451935081149,4.725343320848939,5.068664169787765,6.491885143570538,4.519350811485642,6.679151061173534,6.803995006242197,4.850187265917603,3.464419475655431,1.797752808988764,2.459425717852684,7.0536828963795255,4.413233458177278,3.6704119850187267,1.7166042446941323,6.991260923845194,4.943820224719102,5.980024968789014,2.5093632958801497,4.431960049937578,4.057428214731585,6.429463171036204,1.285892634207241,2.965043695380774,2.740324594257179,3.3270911360799,6.367041198501872,1.8476903870162298,5.880149812734083,5.299625468164794,4.950062421972534, +4.719101123595506,6.242197253433209,3.2896379525593007,6.30461922596754,4.4694132334581775,4.519350811485642,1.4606741573033708,4.219725343320849,1.941323345817728,3.714107365792759,4.413233458177278,2.259675405742821,1.1485642946317103,1.2983770287141074,2.5093632958801497,6.866416978776529,5.568039950062421,3.8389513108614235,2.82147315855181,2.4157303370786516,4.912609238451935,6.367041198501872,3.8202247191011236,6.554307116104869,5.823970037453184,1.9662921348314608,1.6729088639200997,1.5355805243445693,2.871410736579276,4.925093632958801,1.1111111111111112,2.0724094881398254,5.855181023720349,4.781523096129837,2.1098626716604243,3.4019975031210987,1.9225967540574282,7.240948813982522,5.15605493133583,1.4294631710362047,1.5355805243445693,5.730337078651686,4.7440699126092385,2.3845193508114857,1.766541822721598,2.0224719101123596,6.803995006242197,3.8764044943820224,2.272159800249688,5.48689138576779,3.982521847690387,4.3632958801498125,5.049937578027466,7.0536828963795255,2.6279650436953808,4.3632958801498125,4.900124843945068,6.186017478152309,6.928838951310862,4.188514357053683,3.0836454431960054,4.0886392009987516,4.094881398252185,2.5905118601747814,6.741573033707866,4.369538077403246,3.2084893882646695,6.616729088639201,2.671660424469413,4.263420724094882,4.750312109862672,5.099875156054932,6.491885143570538,4.55056179775281,6.679151061173534,6.803995006242197,4.875156054931336,3.495630461922597,1.8227215980024971,2.4968789013732833,7.116104868913857,4.444444444444445,3.7078651685393256,1.735330836454432,7.0536828963795255,4.9687890137328345,6.01123595505618,2.5405742821473156,4.456928838951311,4.0886392009987516,6.491885143570538,1.3046192259675407,2.9962546816479403,2.7652933832709112,3.3583021223470664,6.429463171036204,1.8851435705368291,5.9113607990012484,5.324594257178527,4.975031210986267, +4.750312109862672,6.30461922596754,3.320848938826467,6.30461922596754,4.49438202247191,4.544319600499376,1.4856429463171037,4.250936329588015,1.9725343320848938,3.732833957553059,4.431960049937578,2.2846441947565546,1.1735330836454432,1.3295880149812733,2.5343320848938826,6.928838951310862,5.599250936329588,3.870162297128589,2.84019975031211,2.4344569288389515,4.937578027465668,6.367041198501872,3.8451935081148565,6.616729088639201,5.855181023720349,1.9975031210986267,1.704119850187266,1.5605493133583022,2.902621722846442,4.950062421972534,1.136079900124844,2.1036204744069913,5.880149812734083,4.806491885143571,2.128589263420724,3.4269662921348316,1.9600499375780276,7.303370786516854,5.181023720349563,1.4544319600499376,1.5605493133583022,5.749063670411985,4.775280898876405,2.4157303370786516,1.797752808988764,2.0474406991260925,6.866416978776529,3.9076154806491883,2.303370786516854,5.511860174781523,4.00749063670412,4.400749063670412,5.074906367041199,7.116104868913857,2.6529338327091136,4.382022471910113,4.931335830212235,6.223470661672909,6.928838951310862,4.213483146067416,3.102372034956305,4.1136079900124844,4.132334581772784,2.6092384519350813,6.741573033707866,4.394506866416979,3.227215980024969,6.616729088639201,2.696629213483146,4.288389513108614,4.781523096129837,5.131086142322098,6.554307116104869,4.575530586766542,6.741573033707866,6.866416978776529,4.893882646691636,3.533083645443196,1.8476903870162298,2.5343320848938826,7.116104868913857,4.475655430711611,3.7390761548064915,1.7602996254681649,7.0536828963795255,4.9937578027465666,6.036204744069912,2.571785268414482,4.4818976279650435,4.119850187265917,6.491885143570538,1.3295880149812733,3.027465667915106,2.790262172284644,3.3895131086142323,6.429463171036204,1.916354556803995,5.942571785268415,5.355805243445693,4.9937578027465666, +4.781523096129837,6.30461922596754,3.3583021223470664,6.367041198501872,4.519350811485642,4.563046192259676,1.5043695380774034,4.275905118601748,2.00374531835206,3.7578027465667914,4.450686641697877,2.3158551810237205,1.198501872659176,1.3545568039950062,2.5593008739076155,6.928838951310862,5.630461922596755,3.9013732833957557,2.865168539325843,2.453183520599251,4.9687890137328345,6.429463171036204,3.870162297128589,6.616729088639201,5.8863920099875156,2.0287141073657926,1.7290886392009988,1.585518102372035,2.933832709113608,4.975031210986267,1.161048689138577,2.134831460674157,5.8988764044943816,4.825218476903871,2.153558052434457,3.4456928838951315,1.9912609238451935,7.303370786516854,5.205992509363296,1.4731585518102372,1.585518102372035,5.774032459425719,4.800249687890138,2.446941323345818,1.8227215980024971,2.0786516853932584,6.866416978776529,3.938826466916354,2.33458177278402,5.543071161048689,4.038701622971286,4.431960049937578,5.099875156054932,7.116104868913857,2.6779026217228465,4.406991260923846,4.956304619225968,6.242197253433209,6.991260923845194,4.238451935081149,3.1273408239700373,4.132334581772784,4.16354556803995,2.634207240948814,6.803995006242197,4.413233458177278,3.2521847690387014,6.679151061173534,2.7215980024968793,4.313358302122348,4.812734082397004,5.168539325842697,6.554307116104869,4.606741573033708,6.741573033707866,6.866416978776529,4.912609238451935,3.564294631710362,1.8726591760299625,2.565543071161049,7.17852684144819,4.500624219725343,3.7702871410736583,1.7790262172284643,7.116104868913857,5.0187265917602994,6.061173533083646,2.602996254681648,4.506866416978776,4.157303370786517,6.491885143570538,1.3545568039950062,3.058676654182272,2.82147315855181,3.420724094881398,6.491885143570538,1.9538077403245941,5.97378277153558,5.380774032459426,5.0187265917602994, +4.806491885143571,6.367041198501872,3.3895131086142323,6.367041198501872,4.544319600499376,4.588014981273409,1.529338327091136,4.300873907615481,2.034956304619226,3.7827715355805243,4.475655430711611,2.3470661672908864,1.2172284644194757,1.3857677902621723,2.5842696629213484,6.991260923845194,5.66167290886392,3.9325842696629216,2.8901373283395753,2.478152309612984,5.0,6.429463171036204,3.8951310861423223,6.679151061173534,5.9113607990012484,2.0536828963795255,1.7602996254681649,1.6104868913857677,2.965043695380774,5.0,1.1860174781523096,2.1722846441947565,5.917602996254682,4.850187265917603,2.1722846441947565,3.470661672908864,2.0287141073657926,7.365792759051186,5.230961298377029,1.4918851435705367,1.6104868913857677,5.792759051186017,4.825218476903871,2.4843945068664173,1.8539325842696628,2.1036204744069913,6.928838951310862,3.9762796504369535,2.3720349563046192,5.574282147315855,4.063670411985019,4.4694132334581775,5.131086142322098,7.17852684144819,2.702871410736579,4.425717852684145,4.987515605493134,6.30461922596754,6.991260923845194,4.269662921348314,3.1460674157303368,4.151061173533084,4.194756554307116,2.6591760299625467,6.803995006242197,4.438202247191011,3.2709113607990012,6.679151061173534,2.746566791510612,4.33832709113608,4.843945068664169,5.199750312109863,6.616729088639201,4.631710362047441,6.803995006242197,6.866416978776529,4.937578027465668,3.6017478152309614,1.8976279650436954,2.602996254681648,7.17852684144819,4.531835205992509,3.8077403245942576,1.8039950062421974,7.116104868913857,5.043695380774032,6.086142322097379,2.634207240948814,4.531835205992509,4.188514357053683,6.554307116104869,1.3795255930087391,3.0836454431960054,2.8464419475655434,3.4581772784019975,6.491885143570538,1.9850187265917605,6.004993757802747,5.405742821473158,5.043695380774032, +4.837702871410737,6.367041198501872,3.420724094881398,6.367041198501872,4.569288389513109,4.612983770287141,1.554307116104869,4.325842696629214,2.0599250936329585,3.801498127340824,4.49438202247191,2.3720349563046192,1.2421972534332086,1.4169787765293382,2.6092384519350813,6.991260923845194,5.692883895131087,3.9637952559300875,2.9151061173533086,2.4968789013732833,5.024968789013733,6.491885143570538,3.9138576779026217,6.679151061173534,5.942571785268415,2.084893882646692,1.7915106117353308,1.6354556803995006,2.9962546816479403,5.024968789013733,1.2109862671660423,2.203495630461923,5.942571785268415,4.868913857677903,2.1972534332084894,3.495630461922597,2.0599250936329585,7.365792759051186,5.249687890137328,1.5106117353308364,1.6354556803995006,5.81772784019975,4.850187265917603,2.515605493133583,1.8851435705368291,2.128589263420724,6.928838951310862,4.00749063670412,2.4032459425717856,5.605493133583021,4.094881398252185,4.500624219725343,5.15605493133583,7.17852684144819,2.727840199750312,4.444444444444445,5.012484394506866,6.30461922596754,6.991260923845194,4.294631710362047,3.1647940074906367,4.176029962546816,4.225967540574282,2.6779026217228465,6.866416978776529,4.463171036204744,3.295880149812734,6.679151061173534,2.7715355805243447,4.3632958801498125,4.875156054931336,5.230961298377029,6.616729088639201,4.656679151061174,6.803995006242197,6.928838951310862,4.956304619225968,3.6329588014981273,1.9225967540574282,2.634207240948814,7.240948813982522,4.563046192259676,3.8389513108614235,1.8227215980024971,7.17852684144819,5.062421972534332,6.111111111111111,2.66541822721598,4.556803995006242,4.219725343320849,6.554307116104869,1.404494382022472,3.114856429463171,2.871410736579276,3.4893882646691634,6.554307116104869,2.0224719101123596,6.036204744069912,5.430711610486892,5.068664169787765, +4.868913857677903,6.429463171036204,3.4581772784019975,6.429463171036204,4.594257178526841,4.631710362047441,1.5730337078651684,4.357053682896379,2.091136079900125,3.826466916354557,4.519350811485642,2.4032459425717856,1.2671660424469413,1.4481897627965044,2.634207240948814,7.0536828963795255,5.724094881398252,3.9950062421972534,2.9400749063670415,2.521847690387016,5.056179775280899,6.491885143570538,3.938826466916354,6.741573033707866,5.97378277153558,2.1161048689138577,1.8227215980024971,1.6604244694132335,3.033707865168539,5.049937578027466,1.2359550561797754,2.2347066167290888,5.961298377028713,4.893882646691636,2.2222222222222223,3.5205992509363297,2.097378277153558,7.428214731585518,5.274656679151062,1.5355805243445693,1.6541822721598003,5.836454431960051,4.881398252184769,2.546816479400749,1.9101123595505618,2.15980024968789,6.991260923845194,4.044943820224719,2.4344569288389515,5.630461922596755,4.1260923845193505,4.531835205992509,5.181023720349563,7.240948813982522,2.746566791510612,4.4694132334581775,5.043695380774032,6.367041198501872,7.0536828963795255,4.31960049937578,3.183520599250936,4.194756554307116,4.257178526841448,2.702871410736579,6.866416978776529,4.4818976279650435,3.3146067415730336,6.741573033707866,2.790262172284644,4.388264669163545,4.906367041198502,5.262172284644195,6.616729088639201,4.687890137328339,6.803995006242197,6.928838951310862,4.975031210986267,3.6704119850187267,1.941323345817728,2.671660424469413,7.303370786516854,4.594257178526841,3.870162297128589,1.8476903870162298,7.17852684144819,5.087390761548065,6.1360799001248445,2.696629213483146,4.588014981273409,4.250936329588015,6.616729088639201,1.4294631710362047,3.1460674157303368,2.8963795255930087,3.5205992509363297,6.616729088639201,2.0536828963795255,6.061173533083646,5.455680399500624,5.087390761548065, +4.900124843945068,6.429463171036204,3.4893882646691634,6.429463171036204,4.619225967540574,4.656679151061174,1.5980024968789013,4.382022471910113,2.122347066167291,3.8451935081148565,4.538077403245943,2.4344569288389515,1.285892634207241,1.4731585518102372,2.6529338327091136,7.0536828963795255,5.7553058676654185,4.02621722846442,2.965043695380774,2.5405742821473156,5.087390761548065,6.554307116104869,3.9637952559300875,6.741573033707866,5.998751560549313,2.1410736579275906,1.8539325842696628,1.6853932584269664,3.0649188514357055,5.074906367041199,1.260923845193508,2.272159800249688,5.986267166042447,4.912609238451935,2.2409488139825218,3.5393258426966296,2.128589263420724,7.428214731585518,5.299625468164794,1.554307116104869,1.6791510611735332,5.861423220973783,4.906367041198502,2.578027465667915,1.941323345817728,2.184769038701623,6.991260923845194,4.0761548064918856,2.471910112359551,5.66167290886392,4.151061173533084,4.569288389513109,5.205992509363296,7.303370786516854,2.7715355805243447,4.488139825218477,5.068664169787765,6.429463171036204,7.0536828963795255,4.3508114856429465,3.202247191011236,4.213483146067416,4.288389513108614,2.7215980024968793,6.928838951310862,4.506866416978776,3.339575530586767,6.741573033707866,2.8152309612983775,4.413233458177278,4.937578027465668,5.299625468164794,6.679151061173534,4.712858926342073,6.866416978776529,6.928838951310862,5.0,3.701622971285893,1.9662921348314608,2.702871410736579,7.303370786516854,4.6254681647940075,3.9076154806491883,1.8664169787765295,7.240948813982522,5.1123595505617985,6.161048689138577,2.727840199750312,4.612983770287141,4.282147315855181,6.616729088639201,1.4481897627965044,3.1772784019975036,2.9275905118601746,3.5580524344569286,6.616729088639201,2.091136079900125,6.092384519350812,5.480649188514358,5.1123595505617985, +4.931335830212235,6.491885143570538,3.5205992509363297,6.491885143570538,4.644194756554308,4.681647940074906,1.6229712858926344,4.406991260923846,2.153558052434457,3.870162297128589,4.563046192259676,2.4656679151061174,1.3108614232209737,1.5043695380774034,2.6779026217228465,7.116104868913857,5.786516853932584,4.057428214731585,2.990012484394507,2.565543071161049,5.1123595505617985,6.554307116104869,3.9887640449438204,6.803995006242197,6.029962546816479,2.1722846441947565,1.8851435705368291,1.710362047440699,3.0961298377028714,5.099875156054932,1.285892634207241,2.303370786516854,6.004993757802747,4.937578027465668,2.2659176029962547,3.564294631710362,2.1660424469413235,7.49063670411985,5.324594257178527,1.5730337078651684,1.704119850187266,5.8863920099875156,4.931335830212235,2.6154806491885143,1.9725343320848938,2.209737827715356,7.0536828963795255,4.107365792759051,2.5031210986267167,5.692883895131087,4.18227215980025,4.600499375780275,5.230961298377029,7.303370786516854,2.7965043695380776,4.506866416978776,5.099875156054932,6.429463171036204,7.116104868913857,4.375780274656679,3.2209737827715355,4.238451935081149,4.31960049937578,2.746566791510612,6.928838951310862,4.525593008739076,3.3583021223470664,6.741573033707866,2.84019975031211,4.438202247191011,4.9687890137328345,5.33083645443196,6.679151061173534,4.737827715355805,6.866416978776529,6.991260923845194,5.0187265917602994,3.732833957553059,1.9912609238451935,2.740324594257179,7.365792759051186,4.656679151061174,3.938826466916354,1.8913857677902621,7.240948813982522,5.1373283395755305,6.186017478152309,2.7590511860174782,4.637952559300874,4.31960049937578,6.679151061173534,1.4731585518102372,3.2084893882646695,2.9525593008739075,3.589263420724095,6.679151061173534,2.122347066167291,6.123595505617978,5.50561797752809,5.1373283395755305, +4.962546816479401,6.491885143570538,3.5580524344569286,6.491885143570538,4.66916354556804,4.700374531835206,1.6416978776529338,4.431960049937578,2.1785268414481895,3.8951310861423223,4.581772784019975,2.4906367041198503,1.3358302122347065,1.5355805243445693,2.702871410736579,7.116104868913857,5.81772784019975,4.0886392009987516,3.0149812734082393,2.5842696629213484,5.143570536828964,6.616729088639201,4.013732833957553,6.803995006242197,6.061173533083646,2.203495630461923,1.9101123595505618,1.735330836454432,3.1273408239700373,5.118601747815231,1.3108614232209737,2.340823970037453,6.029962546816479,4.962546816479401,2.2846441947565546,3.589263420724095,2.1972534332084894,7.49063670411985,5.34956304619226,1.5980024968789013,1.7290886392009988,5.905118601747815,4.962546816479401,2.6466916354556806,2.00374531835206,2.2409488139825218,7.0536828963795255,4.144818976279651,2.5405742821473156,5.724094881398252,4.207240948813983,4.637952559300874,5.262172284644195,7.365792759051186,2.82147315855181,4.531835205992509,5.1248439450686645,6.491885143570538,7.116104868913857,4.400749063670412,3.2397003745318353,4.257178526841448,4.3508114856429465,2.7715355805243447,6.991260923845194,4.55056179775281,3.383270911360799,6.803995006242197,2.865168539325843,4.463171036204744,5.0,5.3620474406991265,6.679151061173534,4.769038701622971,6.928838951310862,6.991260923845194,5.0374531835206,3.7702871410736583,2.016229712858926,2.777777777777778,7.428214731585518,4.687890137328339,3.970037453183521,1.9101123595505618,7.303370786516854,5.162297128589263,6.210986267166042,2.790262172284644,4.662921348314606,4.3508114856429465,6.679151061173534,1.4981273408239701,3.2397003745318353,2.977528089887641,3.620474406991261,6.741573033707866,2.153558052434457,6.154806491885144,5.5305867665418225,5.162297128589263, +4.9937578027465666,6.554307116104869,3.589263420724095,6.554307116104869,4.694132334581773,4.725343320848939,1.6666666666666667,4.456928838951311,2.209737827715356,3.9138576779026217,4.600499375780275,2.521847690387016,1.3545568039950062,1.5667915106117354,2.727840199750312,7.17852684144819,5.848938826466916,4.119850187265917,3.0399500624219726,2.6092384519350813,5.174781523096129,6.616729088639201,4.038701622971286,6.866416978776529,6.086142322097379,2.2284644194756553,1.941323345817728,1.7602996254681649,3.1585518102372037,5.143570536828964,1.3358302122347065,2.3720349563046192,6.048689138576779,4.9812734082397006,2.309612983770287,3.6142322097378274,2.2347066167290888,7.553058676654182,5.3745318352059925,1.616729088639201,1.7540574282147314,5.930087390761548,4.987515605493134,2.6779026217228465,2.0287141073657926,2.2659176029962547,7.116104868913857,4.176029962546816,2.571785268414482,5.749063670411985,4.238451935081149,4.66916354556804,5.287141073657928,7.365792759051186,2.8464419475655434,4.55056179775281,5.15605493133583,6.491885143570538,7.116104868913857,4.431960049937578,3.258426966292135,4.275905118601748,4.382022471910113,2.790262172284644,6.991260923845194,4.575530586766542,3.4019975031210987,6.803995006242197,2.8901373283395753,4.488139825218477,5.031210986267166,5.393258426966292,6.741573033707866,4.794007490636704,6.928838951310862,6.991260923845194,5.062421972534332,3.801498127340824,2.0411985018726595,2.808988764044944,7.428214731585518,4.719101123595506,4.00749063670412,1.9350811485642945,7.303370786516854,5.187265917602996,6.235955056179775,2.82147315855181,4.687890137328339,4.382022471910113,6.741573033707866,1.523096129837703,3.2709113607990012,3.0087390761548067,3.6579275905118602,6.741573033707866,2.1910112359550564,6.186017478152309,5.561797752808988,5.181023720349563, +5.024968789013733,6.554307116104869,3.6267166042446943,6.554307116104869,4.719101123595506,4.750312109862672,1.6916354556803994,4.488139825218477,2.2409488139825218,3.938826466916354,4.6254681647940075,2.5530586766541825,1.3795255930087391,1.5980024968789013,2.752808988764045,7.17852684144819,5.880149812734083,4.151061173533084,3.0649188514357055,2.6279650436953808,5.199750312109863,6.679151061173534,4.063670411985019,6.866416978776529,6.117353308364544,2.259675405742821,1.9725343320848938,1.7852684144818978,3.1897627965043696,5.168539325842697,1.3607990012484397,2.4032459425717856,6.073657927590512,5.0062421972534334,2.33458177278402,3.6329588014981273,2.2659176029962547,7.553058676654182,5.393258426966292,1.6354556803995006,1.7790262172284643,5.948813982521848,5.012484394506866,2.715355805243446,2.0599250936329585,2.2908863920099876,7.116104868913857,4.207240948813983,2.602996254681648,5.7802746566791505,4.269662921348314,4.700374531835206,5.312109862671661,7.428214731585518,2.865168539325843,4.575530586766542,5.181023720349563,6.554307116104869,7.17852684144819,4.456928838951311,3.2771535580524347,4.300873907615481,4.413233458177278,2.8152309612983775,7.0536828963795255,4.594257178526841,3.4269662921348316,6.803995006242197,2.9151061173533086,4.51310861423221,5.062421972534332,5.424469413233458,6.741573033707866,4.818976279650437,6.991260923845194,7.0536828963795255,5.081148564294631,3.8389513108614235,2.066167290886392,2.8464419475655434,7.49063670411985,4.750312109862672,4.038701622971286,1.9538077403245941,7.365792759051186,5.212234706616729,6.242197253433209,2.852684144818976,4.712858926342073,4.413233458177278,6.741573033707866,1.5480649188514357,3.3021223470661676,3.033707865168539,3.689138576779026,6.803995006242197,2.2222222222222223,6.217228464419476,5.586766541822722,5.205992509363296, +5.056179775280899,6.616729088639201,3.6579275905118602,6.616729088639201,4.7440699126092385,4.769038701622971,1.710362047440699,4.51310861423221,2.272159800249688,3.9637952559300875,4.644194756554308,2.5842696629213484,1.404494382022472,1.6229712858926344,2.777777777777778,7.17852684144819,5.9113607990012484,4.18227215980025,3.089887640449438,2.6529338327091136,5.230961298377029,6.679151061173534,4.0886392009987516,6.928838951310862,6.1485642946317105,2.2908863920099876,2.00374531835206,1.8102372034956304,3.2209737827715355,5.19350811485643,1.3857677902621723,2.4406991260923845,6.092384519350812,5.024968789013733,2.35330836454432,3.6579275905118602,2.303370786516854,7.615480649188515,5.418227215980025,1.6541822721598003,1.8039950062421974,5.97378277153558,5.0374531835206,2.746566791510612,2.091136079900125,2.322097378277154,7.17852684144819,4.244694132334582,2.640449438202247,5.811485642946318,4.294631710362047,4.737827715355805,5.337078651685393,7.428214731585518,2.8901373283395753,4.594257178526841,5.212234706616729,6.616729088639201,7.17852684144819,4.4818976279650435,3.3021223470661676,4.31960049937578,4.444444444444445,2.8339575530586765,7.0536828963795255,4.619225967540574,3.4456928838951315,6.866416978776529,2.9400749063670415,4.538077403245943,5.093632958801498,5.461922596754057,6.803995006242197,4.850187265917603,6.991260923845194,7.0536828963795255,5.099875156054932,3.870162297128589,2.091136079900125,2.8776529338327093,7.49063670411985,4.781523096129837,4.069912609238452,1.9725343320848938,7.365792759051186,5.230961298377029,6.30461922596754,2.8838951310861427,4.737827715355805,4.444444444444445,6.803995006242197,1.5730337078651684,3.3333333333333335,3.058676654182272,3.7203495630461925,6.803995006242197,2.259675405742821,6.242197253433209,5.611735330836455,5.230961298377029, +5.081148564294631,6.616729088639201,3.689138576779026,6.616729088639201,4.775280898876405,4.794007490636704,1.735330836454432,4.538077403245943,2.2971285892634206,3.982521847690387,4.66916354556804,2.6092384519350813,1.4232209737827717,1.6541822721598003,2.8027465667915106,7.240948813982522,5.942571785268415,4.213483146067416,3.114856429463171,2.671660424469413,5.262172284644195,6.741573033707866,4.1136079900124844,6.928838951310862,6.179775280898876,2.3158551810237205,2.034956304619226,1.8352059925093633,3.2521847690387014,5.218476903870163,1.410736579275905,2.471910112359551,6.111111111111111,5.049937578027466,2.3782771535580522,3.682896379525593,2.33458177278402,7.615480649188515,5.443196004993759,1.6791510611735332,1.8227215980024971,5.992509363295881,5.068664169787765,2.777777777777778,2.1161048689138577,2.3470661672908864,7.17852684144819,4.275905118601748,2.671660424469413,5.842696629213483,4.325842696629214,4.769038701622971,5.3620474406991265,7.49063670411985,2.9151061173533086,4.612983770287141,5.243445692883895,6.616729088639201,7.240948813982522,4.51310861423221,3.320848938826467,4.33832709113608,4.4818976279650435,2.8589263420724094,7.116104868913857,4.637952559300874,3.470661672908864,6.866416978776529,2.965043695380774,4.563046192259676,5.118601747815231,5.493133583021224,6.803995006242197,4.875156054931336,7.0536828963795255,7.0536828963795255,5.1248439450686645,3.9076154806491883,2.1161048689138577,2.9151061173533086,7.553058676654182,4.812734082397004,4.107365792759051,1.9975031210986267,7.428214731585518,5.2559300873907615,6.30461922596754,2.9151061173533086,4.762796504369538,4.475655430711611,6.803995006242197,1.5980024968789013,3.3645443196004994,3.0836454431960054,3.7515605493133584,6.866416978776529,2.2908863920099876,6.30461922596754,5.636704119850187,5.2559300873907615, +5.1123595505617985,6.679151061173534,3.7265917602996255,6.679151061173534,4.800249687890138,4.818976279650437,1.7602996254681649,4.563046192259676,2.328339575530587,4.00749063670412,4.687890137328339,2.640449438202247,1.4481897627965044,1.6853932584269664,2.8277153558052435,7.240948813982522,5.97378277153558,4.238451935081149,3.139825218476904,2.696629213483146,5.287141073657928,6.741573033707866,4.132334581772784,6.991260923845194,6.20474406991261,2.3470661672908864,2.066167290886392,1.8601747815230962,3.2833957553058677,5.243445692883895,1.435705368289638,2.5031210986267167,6.1360799001248445,5.068664169787765,2.397003745318352,3.7078651685393256,2.3720349563046192,7.677902621722847,5.468164794007491,1.6978776529338326,1.8476903870162298,6.0174781523096135,5.093632958801498,2.808988764044944,2.1473158551810236,2.3720349563046192,7.240948813982522,4.307116104868914,2.7091136079900124,5.867665418227216,4.3508114856429465,4.806491885143571,5.393258426966292,7.553058676654182,2.9400749063670415,4.637952559300874,5.268414481897628,6.679151061173534,7.240948813982522,4.538077403245943,3.339575530586767,4.3632958801498125,4.51310861423221,2.8776529338327093,7.116104868913857,4.662921348314606,3.4893882646691634,6.866416978776529,2.990012484394507,4.588014981273409,5.149812734082397,5.524344569288389,6.803995006242197,4.900124843945068,7.0536828963795255,7.116104868913857,5.143570536828964,3.938826466916354,2.1410736579275906,2.9463171036204745,7.615480649188515,4.843945068664169,4.138576779026217,2.016229712858926,7.428214731585518,5.280898876404494,6.367041198501872,2.9463171036204745,4.787765293383271,4.51310861423221,6.866416978776529,1.616729088639201,3.3957553058676653,3.114856429463171,3.7890137328339577,6.928838951310862,2.328339575530587,6.30461922596754,5.66167290886392,5.274656679151062, +5.143570536828964,6.679151061173534,3.7578027465667914,6.679151061173534,4.825218476903871,4.837702871410737,1.7790262172284643,4.588014981273409,2.359550561797753,4.032459425717852,4.712858926342073,2.671660424469413,1.4731585518102372,1.7166042446941323,2.852684144818976,7.303370786516854,6.004993757802747,4.269662921348314,3.1647940074906367,2.715355805243446,5.318352059925093,6.803995006242197,4.157303370786517,6.991260923845194,6.235955056179775,2.3782771535580522,2.091136079900125,1.8851435705368291,3.3146067415730336,5.268414481897628,1.4606741573033708,2.5405742821473156,6.154806491885144,5.093632958801498,2.4219725343320846,3.7265917602996255,2.4032459425717856,7.677902621722847,5.493133583021224,1.7166042446941323,1.8726591760299625,6.036204744069912,5.118601747815231,2.8464419475655434,2.1785268414481895,2.4032459425717856,7.240948813982522,4.344569288389513,2.740324594257179,5.8988764044943816,4.382022471910113,4.837702871410737,5.418227215980025,7.553058676654182,2.965043695380774,4.656679151061174,5.299625468164794,6.679151061173534,7.303370786516854,4.563046192259676,3.3583021223470664,4.382022471910113,4.544319600499376,2.902621722846442,7.17852684144819,4.687890137328339,3.5143570536828963,6.928838951310862,3.0149812734082393,4.612983770287141,5.181023720349563,5.555555555555556,6.866416978776529,4.931335830212235,7.116104868913857,7.116104868913857,5.168539325842697,3.9762796504369535,2.1660424469413235,2.9837702871410734,7.615480649188515,4.875156054931336,4.169787765293384,2.0411985018726595,7.49063670411985,5.305867665418227,6.367041198501872,2.977528089887641,4.812734082397004,4.544319600499376,6.866416978776529,1.6416978776529338,3.4269662921348316,3.139825218476904,3.8202247191011236,6.928838951310862,2.359550561797753,6.367041198501872,5.686641697877653,5.299625468164794, +5.174781523096129,6.741573033707866,3.7890137328339577,6.679151061173534,4.850187265917603,4.8626716604244695,1.8039950062421974,4.619225967540574,2.3845193508114857,4.051186017478152,4.7315855181023725,2.702871410736579,1.4918851435705367,1.7478152309612984,2.8776529338327093,7.303370786516854,6.036204744069912,4.300873907615481,3.183520599250936,2.740324594257179,5.34956304619226,6.803995006242197,4.18227215980025,7.0536828963795255,6.242197253433209,2.4032459425717856,2.122347066167291,1.9101123595505618,3.3458177278401995,5.293383270911361,1.4856429463171037,2.571785268414482,6.179775280898876,5.118601747815231,2.446941323345818,3.7515605493133584,2.4406991260923845,7.740324594257178,5.5181023720349565,1.7415730337078652,1.8976279650436954,6.061173533083646,5.149812734082397,2.8776529338327093,2.209737827715356,2.428214731585518,7.303370786516854,4.375780274656679,2.7715355805243447,5.930087390761548,4.406991260923846,4.875156054931336,5.443196004993759,7.615480649188515,2.990012484394507,4.675405742821473,5.324594257178527,6.741573033707866,7.303370786516854,4.594257178526841,3.3770287141073654,4.400749063670412,4.575530586766542,2.9275905118601746,7.17852684144819,4.70661672908864,3.533083645443196,6.928838951310862,3.033707865168539,4.637952559300874,5.212234706616729,5.593008739076155,6.866416978776529,4.956304619225968,7.116104868913857,7.116104868913857,5.187265917602996,4.00749063670412,2.1910112359550564,3.0212234706616727,7.677902621722847,4.906367041198502,4.207240948813983,2.0599250936329585,7.49063670411985,5.33083645443196,6.367041198501872,3.0024968789013733,4.837702871410737,4.575530586766542,6.928838951310862,1.6666666666666667,3.4581772784019975,3.1647940074906367,3.8514357053682895,6.991260923845194,2.397003745318352,6.367041198501872,5.711610486891385,5.324594257178527, +5.205992509363296,6.803995006242197,3.826466916354557,6.741573033707866,4.875156054931336,4.887640449438202,1.8289637952559301,4.644194756554308,2.4157303370786516,4.0761548064918856,4.750312109862672,2.727840199750312,1.5168539325842696,1.772784019975031,2.902621722846442,7.365792759051186,6.067415730337078,4.332084893882647,3.2084893882646695,2.7590511860174782,5.3745318352059925,6.866416978776529,4.207240948813983,7.0536828963795255,6.30461922596754,2.4344569288389515,2.153558052434457,1.9350811485642945,3.383270911360799,5.318352059925093,1.5106117353308364,2.6092384519350813,6.198501872659176,5.1373283395755305,2.4656679151061174,3.776529338327091,2.471910112359551,7.740324594257178,5.543071161048689,1.7602996254681649,1.9225967540574282,6.079900124843945,5.174781523096129,2.908863920099875,2.2347066167290888,2.453183520599251,7.303370786516854,4.413233458177278,2.808988764044944,5.961298377028713,4.438202247191011,4.906367041198502,5.468164794007491,7.615480649188515,3.0087390761548067,4.700374531835206,5.355805243445693,6.803995006242197,7.303370786516854,4.619225967540574,3.3957553058676653,4.425717852684145,4.606741573033708,2.9463171036204745,7.240948813982522,4.7315855181023725,3.5580524344569286,6.991260923845194,3.058676654182272,4.662921348314606,5.243445692883895,5.6242197253433215,6.866416978776529,4.987515605493134,7.17852684144819,7.17852684144819,5.205992509363296,4.044943820224719,2.215980024968789,3.0524344569288386,7.740324594257178,4.937578027465668,4.238451935081149,2.084893882646692,7.553058676654182,5.355805243445693,6.429463171036204,3.033707865168539,4.8626716604244695,4.606741573033708,6.928838951310862,1.6916354556803994,3.4893882646691634,3.1897627965043696,3.888888888888889,7.0536828963795255,2.428214731585518,6.367041198501872,5.736579275905119,5.34956304619226, +5.237203495630462,6.803995006242197,3.857677902621723,6.741573033707866,4.900124843945068,4.906367041198502,1.8476903870162298,4.66916354556804,2.446941323345818,4.1011235955056184,4.775280898876405,2.7590511860174782,1.5418227215980027,1.8039950062421974,2.9275905118601746,7.365792759051186,6.092384519350812,4.3632958801498125,3.233458177278402,2.777777777777778,5.405742821473158,6.866416978776529,4.2322097378277155,7.116104868913857,6.30461922596754,2.4656679151061174,2.184769038701623,1.9600499375780276,3.4144818976279647,5.343320848938826,1.5355805243445693,2.640449438202247,6.223470661672909,5.162297128589263,2.4906367041198503,3.7952559300873907,2.5093632958801497,7.740324594257178,5.561797752808988,1.7790262172284643,1.9475655430711611,6.104868913857677,5.199750312109863,2.9400749063670415,2.2659176029962547,2.478152309612984,7.365792759051186,4.444444444444445,2.84019975031211,5.986267166042447,4.4694132334581775,4.937578027465668,5.493133583021224,7.677902621722847,3.033707865168539,4.719101123595506,5.380774032459426,6.803995006242197,7.365792759051186,4.644194756554308,3.4144818976279647,4.444444444444445,4.637952559300874,2.9712858926342074,7.240948813982522,4.750312109862672,3.576779026217228,6.991260923845194,3.0836454431960054,4.687890137328339,5.274656679151062,5.655430711610487,6.928838951310862,5.012484394506866,7.17852684144819,7.17852684144819,5.230961298377029,4.0761548064918856,2.2409488139825218,3.089887640449438,7.740324594257178,4.9687890137328345,4.269662921348314,2.1036204744069913,7.553058676654182,5.3745318352059925,6.429463171036204,3.0649188514357055,4.887640449438202,4.637952559300874,6.928838951310862,1.7166042446941323,3.5205992509363297,3.2209737827715355,3.920099875156055,7.0536828963795255,2.459425717852684,6.429463171036204,5.761548064918852,5.36828963795256, +5.268414481897628,6.866416978776529,3.888888888888889,6.803995006242197,4.925093632958801,4.931335830212235,1.8726591760299625,4.694132334581773,2.478152309612984,4.119850187265917,4.794007490636704,2.790262172284644,1.5605493133583022,1.8352059925093633,2.9525593008739075,7.428214731585518,6.123595505617978,4.394506866416979,3.258426966292135,2.8027465667915106,5.436953807740325,6.928838951310862,4.257178526841448,7.116104868913857,6.367041198501872,2.4906367041198503,2.215980024968789,1.9850187265917605,3.4456928838951315,5.36828963795256,1.5605493133583022,2.671660424469413,6.242197253433209,5.181023720349563,2.5093632958801497,3.8202247191011236,2.5405742821473156,7.8027465667915115,5.586766541822722,1.797752808988764,1.9662921348314608,6.129837702871411,5.224719101123595,2.977528089887641,2.2971285892634206,2.5093632958801497,7.365792759051186,4.475655430711611,2.871410736579276,6.0174781523096135,4.49438202247191,4.975031210986267,5.524344569288389,7.677902621722847,3.058676654182272,4.737827715355805,5.411985018726591,6.866416978776529,7.365792759051186,4.675405742821473,3.4332084893882646,4.463171036204744,4.66916354556804,2.990012484394507,7.303370786516854,4.775280898876405,3.6017478152309614,6.991260923845194,3.108614232209738,4.712858926342073,5.305867665418227,5.686641697877653,6.928838951310862,5.0374531835206,7.240948813982522,7.17852684144819,5.249687890137328,4.107365792759051,2.2659176029962547,3.1210986267166043,7.8027465667915115,5.0,4.307116104868914,2.128589263420724,7.615480649188515,5.399500624219725,6.491885143570538,3.0961298377028714,4.912609238451935,4.675405742821473,6.991260923845194,1.7415730337078652,3.5518102372034956,3.245942571785269,3.951310861423221,7.116104868913857,2.4968789013732833,6.429463171036204,5.792759051186017,5.393258426966292, +5.299625468164794,6.866416978776529,3.926342072409488,6.803995006242197,4.950062421972534,4.950062421972534,1.8976279650436954,4.719101123595506,2.5031210986267167,4.144818976279651,4.818976279650437,2.8152309612983775,1.585518102372035,1.8664169787765295,2.977528089887641,7.428214731585518,6.154806491885144,4.425717852684145,3.2833957553058677,2.82147315855181,5.461922596754057,6.928838951310862,4.282147315855181,7.17852684144819,6.367041198501872,2.521847690387016,2.2409488139825218,2.009987515605493,3.4769038701622974,5.393258426966292,1.585518102372035,2.7091136079900124,6.242197253433209,5.205992509363296,2.5343320848938826,3.8451935081148565,2.578027465667915,7.8027465667915115,5.611735330836455,1.8227215980024971,1.9912609238451935,6.1485642946317105,5.2559300873907615,3.0087390761548067,2.322097378277154,2.5343320848938826,7.428214731585518,4.51310861423221,2.908863920099875,6.048689138576779,4.525593008739076,5.0062421972534334,5.549313358302123,7.740324594257178,3.0836454431960054,4.762796504369538,5.436953807740325,6.866416978776529,7.428214731585518,4.700374531835206,3.451935081148564,4.488139825218477,4.700374531835206,3.0149812734082393,7.303370786516854,4.794007490636704,3.620474406991261,7.0536828963795255,3.1335830212234708,4.737827715355805,5.337078651685393,5.724094881398252,6.991260923845194,5.068664169787765,7.240948813982522,7.240948813982522,5.268414481897628,4.144818976279651,2.2908863920099876,3.1585518102372037,7.8027465667915115,5.031210986267166,4.33832709113608,2.1473158551810236,7.615480649188515,5.424469413233458,6.491885143570538,3.1273408239700373,4.937578027465668,4.70661672908864,6.991260923845194,1.7602996254681649,3.5830212234706615,3.2709113607990012,3.9887640449438204,7.17852684144819,2.5280898876404496,6.491885143570538,5.81772784019975,5.418227215980025, +5.324594257178527,6.928838951310862,3.957553058676654,6.866416978776529,4.975031210986267,4.975031210986267,1.916354556803995,4.750312109862672,2.5343320848938826,4.169787765293384,4.837702871410737,2.8464419475655434,1.6104868913857677,1.8976279650436954,3.0024968789013733,7.49063670411985,6.186017478152309,4.456928838951311,3.3083645443196006,2.8464419475655434,5.493133583021224,6.991260923845194,4.307116104868914,7.17852684144819,6.429463171036204,2.5530586766541825,2.272159800249688,2.034956304619226,3.508114856429463,5.418227215980025,1.6104868913857677,2.740324594257179,6.30461922596754,5.224719101123595,2.5593008739076155,3.870162297128589,2.6092384519350813,7.865168539325843,5.636704119850187,1.8414481897627966,2.016229712858926,6.173533083645444,5.280898876404494,3.0399500624219726,2.35330836454432,2.5593008739076155,7.428214731585518,4.544319600499376,2.9400749063670415,6.079900124843945,4.55056179775281,5.043695380774032,5.574282147315855,7.8027465667915115,3.108614232209738,4.781523096129837,5.468164794007491,6.928838951310862,7.428214731585518,4.725343320848939,3.4769038701622974,4.506866416978776,4.7315855181023725,3.033707865168539,7.365792759051186,4.818976279650437,3.6454431960049942,7.0536828963795255,3.1585518102372037,4.762796504369538,5.36828963795256,5.7553058676654185,6.991260923845194,5.093632958801498,7.303370786516854,7.240948813982522,5.293383270911361,4.176029962546816,2.3158551810237205,3.1960049937578026,7.865168539325843,5.062421972534332,4.375780274656679,2.1722846441947565,7.677902621722847,5.449438202247191,6.491885143570538,3.1585518102372037,4.962546816479401,4.737827715355805,7.0536828963795255,1.7852684144818978,3.6142322097378274,3.3021223470661676,4.019975031210986,7.17852684144819,2.565543071161049,6.491885143570538,5.842696629213483,5.436953807740325, +5.355805243445693,6.928838951310862,3.9887640449438204,6.866416978776529,5.0,5.0,1.941323345817728,4.775280898876405,2.565543071161049,4.188514357053683,4.856429463171036,2.8776529338327093,1.6292134831460674,1.9225967540574282,3.027465667915106,7.49063670411985,6.217228464419476,4.488139825218477,3.3333333333333335,2.865168539325843,5.524344569288389,6.991260923845194,4.332084893882647,7.240948813982522,6.429463171036204,2.578027465667915,2.303370786516854,2.0599250936329585,3.5393258426966296,5.443196004993759,1.6354556803995006,2.7715355805243447,6.30461922596754,5.249687890137328,2.578027465667915,3.888888888888889,2.6466916354556806,7.865168539325843,5.66167290886392,1.8601747815230962,2.0411985018726595,6.192259675405743,5.305867665418227,3.0711610486891385,2.3845193508114857,2.5905118601747814,7.49063670411985,4.575530586766542,2.977528089887641,6.104868913857677,4.581772784019975,5.074906367041199,5.599250936329588,7.8027465667915115,3.1335830212234708,4.800249687890138,5.493133583021224,6.991260923845194,7.428214731585518,4.750312109862672,3.495630461922597,4.525593008739076,4.762796504369538,3.058676654182272,7.365792759051186,4.843945068664169,3.6641697877652937,7.0536828963795255,3.183520599250936,4.787765293383271,5.399500624219725,5.786516853932584,6.991260923845194,5.118601747815231,7.303370786516854,7.240948813982522,5.312109862671661,4.213483146067416,2.340823970037453,3.227215980024969,7.927590511860175,5.087390761548065,4.406991260923846,2.1910112359550564,7.677902621722847,5.474406991260924,6.554307116104869,3.1897627965043696,4.987515605493134,4.769038701622971,7.0536828963795255,1.8102372034956304,3.6454431960049942,3.3270911360799,4.051186017478152,7.240948813982522,2.596754057428215,6.554307116104869,5.867665418227216,5.461922596754057, +5.3870162297128585,6.991260923845194,4.02621722846442,6.928838951310862,5.024968789013733,5.0187265917602994,1.9662921348314608,4.800249687890138,2.596754057428215,4.213483146067416,4.881398252184769,2.908863920099875,1.6541822721598003,1.9538077403245941,3.0524344569288386,7.553058676654182,6.242197253433209,4.519350811485642,3.3583021223470664,2.8901373283395753,5.549313358302123,7.0536828963795255,4.3508114856429465,7.240948813982522,6.491885143570538,2.6092384519350813,2.33458177278402,2.084893882646692,3.5705368289637955,5.468164794007491,1.6541822721598003,2.808988764044944,6.30461922596754,5.274656679151062,2.602996254681648,3.9138576779026217,2.6779026217228465,7.927590511860175,5.686641697877653,1.8851435705368291,2.066167290886392,6.217228464419476,5.337078651685393,3.108614232209738,2.4157303370786516,2.6154806491885143,7.49063670411985,4.612983770287141,3.0087390761548067,6.1360799001248445,4.606741573033708,5.1123595505617985,5.6242197253433215,7.865168539325843,3.15230961298377,4.825218476903871,5.524344569288389,6.991260923845194,7.49063670411985,4.781523096129837,3.5143570536828963,4.55056179775281,4.794007490636704,3.0836454431960054,7.428214731585518,4.8626716604244695,3.689138576779026,7.116104868913857,3.2084893882646695,4.812734082397004,5.430711610486892,5.81772784019975,7.0536828963795255,5.149812734082397,7.365792759051186,7.303370786516854,5.33083645443196,4.244694132334582,2.3657927590511862,3.2646691635455682,7.927590511860175,5.118601747815231,4.438202247191011,2.215980024968789,7.740324594257178,5.499375780274657,6.554307116104869,3.2209737827715355,5.012484394506866,4.800249687890138,7.116104868913857,1.8352059925093633,3.6766541822721597,3.352059925093633,4.082397003745319,7.240948813982522,2.634207240948814,6.554307116104869,5.892634207240949,5.48689138576779, +5.418227215980025,6.991260923845194,4.057428214731585,6.928838951310862,5.049937578027466,5.043695380774032,1.9850187265917605,4.825218476903871,2.6217228464419473,4.238451935081149,4.900124843945068,2.933832709113608,1.6791510611735332,1.9850187265917605,3.077403245942572,7.553058676654182,6.30461922596754,4.55056179775281,3.383270911360799,2.908863920099875,5.580524344569288,7.0536828963795255,4.375780274656679,7.303370786516854,6.491885143570538,2.640449438202247,2.3657927590511862,2.1098626716604243,3.6017478152309614,5.493133583021224,1.6791510611735332,2.84019975031211,6.367041198501872,5.293383270911361,2.6217228464419473,3.938826466916354,2.715355805243446,7.927590511860175,5.711610486891385,1.9038701622971288,2.091136079900125,6.235955056179775,5.3620474406991265,3.139825218476904,2.4406991260923845,2.640449438202247,7.553058676654182,4.644194756554308,3.0399500624219726,6.167290886392011,4.637952559300874,5.143570536828964,5.655430711610487,7.865168539325843,3.1772784019975036,4.843945068664169,5.555555555555556,7.0536828963795255,7.49063670411985,4.806491885143571,3.533083645443196,4.569288389513109,4.831460674157303,3.102372034956305,7.428214731585518,4.887640449438202,3.7078651685393256,7.116104868913857,3.233458177278402,4.837702871410737,5.461922596754057,5.855181023720349,7.0536828963795255,5.174781523096129,7.365792759051186,7.303370786516854,5.355805243445693,4.282147315855181,2.3907615480649187,3.295880149812734,7.990012484394507,5.149812734082397,4.475655430711611,2.2347066167290888,7.740324594257178,5.524344569288389,6.616729088639201,3.2521847690387014,5.0374531835206,4.831460674157303,7.116104868913857,1.8601747815230962,3.701622971285893,3.3770287141073654,4.119850187265917,7.303370786516854,2.66541822721598,6.616729088639201,5.917602996254682,5.511860174781523, +5.449438202247191,7.0536828963795255,4.094881398252185,6.928838951310862,5.074906367041199,5.068664169787765,2.009987515605493,4.850187265917603,2.6529338327091136,4.257178526841448,4.925093632958801,2.965043695380774,1.6978776529338326,2.016229712858926,3.102372034956305,7.615480649188515,6.30461922596754,4.581772784019975,3.408239700374532,2.933832709113608,5.611735330836455,7.116104868913857,4.400749063670412,7.303370786516854,6.554307116104869,2.66541822721598,2.397003745318352,2.134831460674157,3.6329588014981273,5.5181023720349565,1.704119850187266,2.8776529338327093,6.367041198501872,5.318352059925093,2.6466916354556806,3.9637952559300875,2.752808988764045,7.990012484394507,5.730337078651686,1.9225967540574282,2.1161048689138577,6.242197253433209,5.3870162297128585,3.17103620474407,2.471910112359551,2.671660424469413,7.553058676654182,4.675405742821473,3.077403245942572,6.198501872659176,4.66916354556804,5.174781523096129,5.68039950062422,7.927590511860175,3.202247191011236,4.868913857677903,5.580524344569288,7.0536828963795255,7.553058676654182,4.831460674157303,3.5518102372034956,4.588014981273409,4.8626716604244695,3.1273408239700373,7.428214731585518,4.906367041198502,3.732833957553059,7.116104868913857,3.258426966292135,4.8626716604244695,5.493133583021224,5.8863920099875156,7.0536828963795255,5.199750312109863,7.428214731585518,7.303370786516854,5.3745318352059925,4.313358302122348,2.4157303370786516,3.3333333333333335,7.990012484394507,5.181023720349563,4.506866416978776,2.259675405742821,7.8027465667915115,5.543071161048689,6.616729088639201,3.2833957553058677,5.062421972534332,4.868913857677903,7.17852684144819,1.8851435705368291,3.732833957553059,3.408239700374532,4.151061173533084,7.365792759051186,2.696629213483146,6.616729088639201,5.942571785268415,5.5305867665418225, +5.480649188514358,7.0536828963795255,4.1260923845193505,6.991260923845194,5.099875156054932,5.087390761548065,2.034956304619226,4.881398252184769,2.68414481897628,4.282147315855181,4.943820224719102,2.9962546816479403,1.7228464419475658,2.0474406991260925,3.1210986267166043,7.615480649188515,6.367041198501872,4.612983770287141,3.4332084893882646,2.9525593008739075,5.636704119850187,7.116104868913857,4.425717852684145,7.365792759051186,6.554307116104869,2.696629213483146,2.4219725343320846,2.15980024968789,3.6641697877652937,5.543071161048689,1.7290886392009988,2.908863920099875,6.367041198501872,5.337078651685393,2.671660424469413,3.982521847690387,2.7840199750312107,7.990012484394507,5.7553058676654185,1.9475655430711611,2.134831460674157,6.30461922596754,5.411985018726591,3.202247191011236,2.5031210986267167,2.696629213483146,7.615480649188515,4.712858926342073,3.108614232209738,6.223470661672909,4.694132334581773,5.212234706616729,5.705368289637952,7.927590511860175,3.227215980024969,4.887640449438202,5.611735330836455,7.116104868913857,7.553058676654182,4.8626716604244695,3.5705368289637955,4.612983770287141,4.893882646691636,3.1460674157303368,7.49063670411985,4.931335830212235,3.7515605493133584,7.17852684144819,3.2771535580524347,4.887640449438202,5.5181023720349565,5.917602996254682,7.116104868913857,5.230961298377029,7.428214731585518,7.365792759051186,5.393258426966292,4.3508114856429465,2.4406991260923845,3.3645443196004994,8.05243445692884,5.212234706616729,4.538077403245943,2.278401997503121,7.8027465667915115,5.568039950062421,6.616729088639201,3.3146067415730336,5.087390761548065,4.900124843945068,7.17852684144819,1.9101123595505618,3.764044943820225,3.4332084893882646,4.18227215980025,7.365792759051186,2.7340823970037453,6.679151061173534,5.967540574282147,5.555555555555556, +5.511860174781523,7.116104868913857,4.157303370786517,6.991260923845194,5.1248439450686645,5.1123595505617985,2.0536828963795255,4.906367041198502,2.715355805243446,4.307116104868914,4.9687890137328345,3.027465667915106,1.7478152309612984,2.0724094881398254,3.1460674157303368,7.677902621722847,6.367041198501872,4.644194756554308,3.4581772784019975,2.977528089887641,5.667915106117353,7.17852684144819,4.450686641697877,7.365792759051186,6.616729088639201,2.727840199750312,2.453183520599251,2.184769038701623,3.6953807740324596,5.568039950062421,1.7540574282147314,2.9400749063670415,6.429463171036204,5.3620474406991265,2.690387016229713,4.00749063670412,2.82147315855181,8.05243445692884,5.7802746566791505,1.9662921348314608,2.15980024968789,6.30461922596754,5.443196004993759,3.2397003745318353,2.5280898876404496,2.7215980024968793,7.615480649188515,4.7440699126092385,3.1460674157303368,6.242197253433209,4.725343320848939,5.243445692883895,5.730337078651686,7.990012484394507,3.2521847690387014,4.906367041198502,5.636704119850187,7.17852684144819,7.553058676654182,4.887640449438202,3.589263420724095,4.631710362047441,4.925093632958801,3.17103620474407,7.49063670411985,4.956304619225968,3.776529338327091,7.17852684144819,3.3021223470661676,4.912609238451935,5.549313358302123,5.948813982521848,7.116104868913857,5.2559300873907615,7.49063670411985,7.365792759051186,5.418227215980025,4.382022471910113,2.4656679151061174,3.4019975031210987,8.11485642946317,5.243445692883895,4.575530586766542,2.303370786516854,7.865168539325843,5.593008739076155,6.679151061173534,3.3458177278401995,5.118601747815231,4.931335830212235,7.240948813982522,1.9288389513108615,3.7952559300873907,3.4581772784019975,4.219725343320849,7.428214731585518,2.7652933832709112,6.679151061173534,5.998751560549313,5.580524344569288, +5.543071161048689,7.116104868913857,4.194756554307116,7.0536828963795255,5.149812734082397,5.1373283395755305,2.0786516853932584,4.931335830212235,2.740324594257179,4.325842696629214,4.987515605493134,3.0524344569288386,1.766541822721598,2.1036204744069913,3.17103620474407,7.677902621722847,6.429463171036204,4.675405742821473,3.4831460674157304,2.9962546816479403,5.69912609238452,7.17852684144819,4.475655430711611,7.428214731585518,6.616729088639201,2.752808988764045,2.4843945068664173,2.209737827715356,3.732833957553059,5.593008739076155,1.7790262172284643,2.977528089887641,6.429463171036204,5.380774032459426,2.715355805243446,4.032459425717852,2.852684144818976,8.05243445692884,5.805243445692884,1.9850187265917605,2.184769038701623,6.30461922596754,5.468164794007491,3.2709113607990012,2.5593008739076155,2.752808988764045,7.677902621722847,4.781523096129837,3.1772784019975036,6.30461922596754,4.750312109862672,5.280898876404494,5.7553058676654185,8.05243445692884,3.2709113607990012,4.931335830212235,5.667915106117353,7.17852684144819,7.615480649188515,4.912609238451935,3.607990012484395,4.65043695380774,4.956304619225968,3.1960049937578026,7.553058676654182,4.975031210986267,3.7952559300873907,7.17852684144819,3.3270911360799,4.937578027465668,5.580524344569288,5.980024968789014,7.17852684144819,5.280898876404494,7.49063670411985,7.365792759051186,5.436953807740325,4.419475655430712,2.4906367041198503,3.439450686641698,8.11485642946317,5.274656679151062,4.606741573033708,2.322097378277154,7.865168539325843,5.617977528089888,6.679151061173534,3.3770287141073654,5.143570536828964,4.962546816479401,7.240948813982522,1.9538077403245941,3.826466916354557,3.4831460674157304,4.250936329588015,7.49063670411985,2.8027465667915106,6.741573033707866,6.023720349563047,5.605493133583021, +5.574282147315855,7.17852684144819,4.225967540574282,7.0536828963795255,5.174781523096129,5.15605493133583,2.1036204744069913,4.956304619225968,2.7715355805243447,4.3508114856429465,5.0062421972534334,3.0836454431960054,1.7915106117353308,2.134831460674157,3.1960049937578026,7.677902621722847,6.429463171036204,4.70661672908864,3.508114856429463,3.0212234706616727,5.724094881398252,7.240948813982522,4.500624219725343,7.428214731585518,6.616729088639201,2.7840199750312107,2.515605493133583,2.2347066167290888,3.764044943820225,5.617977528089888,1.8039950062421974,3.0087390761548067,6.429463171036204,5.405742821473158,2.7340823970037453,4.051186017478152,2.8901373283395753,8.11485642946317,5.830212234706617,2.00374531835206,2.209737827715356,6.367041198501872,5.493133583021224,3.3021223470661676,2.5905118601747814,2.777777777777778,7.677902621722847,4.812734082397004,3.2084893882646695,6.30461922596754,4.781523096129837,5.312109862671661,5.786516853932584,8.05243445692884,3.295880149812734,4.950062421972534,5.692883895131087,7.240948813982522,7.615480649188515,4.943820224719102,3.6267166042446943,4.675405742821473,4.987515605493134,3.214731585518102,7.553058676654182,5.0,3.8202247191011236,7.240948813982522,3.352059925093633,4.962546816479401,5.611735330836455,6.0174781523096135,7.17852684144819,5.312109862671661,7.553058676654182,7.428214731585518,5.455680399500624,4.450686641697877,2.515605493133583,3.470661672908864,8.177278401997503,5.305867665418227,4.637952559300874,2.340823970037453,7.927590511860175,5.64294631710362,6.741573033707866,3.408239700374532,5.168539325842697,4.9937578027465666,7.303370786516854,1.978776529338327,3.857677902621723,3.5143570536828963,4.282147315855181,7.49063670411985,2.8339575530586765,6.741573033707866,6.048689138576779,5.6242197253433215, +5.599250936329588,7.17852684144819,4.257178526841448,7.116104868913857,5.199750312109863,5.181023720349563,2.122347066167291,4.987515605493134,2.8027465667915106,4.375780274656679,5.031210986267166,3.114856429463171,1.8102372034956304,2.1660424469413235,3.2209737827715355,7.740324594257178,6.491885143570538,4.737827715355805,3.5268414481897628,3.0399500624219726,5.7553058676654185,7.240948813982522,4.525593008739076,7.49063670411985,6.679151061173534,2.8152309612983775,2.546816479400749,2.259675405742821,3.7952559300873907,5.64294631710362,1.8289637952559301,3.0399500624219726,6.491885143570538,5.430711610486892,2.7590511860174782,4.0761548064918856,2.9213483146067416,8.11485642946317,5.855181023720349,2.0287141073657926,2.2347066167290888,6.367041198501872,5.524344569288389,3.3333333333333335,2.6217228464419473,2.8027465667915106,7.740324594257178,4.843945068664169,3.245942571785269,6.367041198501872,4.806491885143571,5.343320848938826,5.811485642946318,8.11485642946317,3.320848938826467,4.9687890137328345,5.724094881398252,7.240948813982522,7.677902621722847,4.9687890137328345,3.651685393258427,4.694132334581773,5.0187265917602994,3.2397003745318353,7.615480649188515,5.0187265917602994,3.8389513108614235,7.240948813982522,3.3770287141073654,4.987515605493134,5.64294631710362,6.048689138576779,7.17852684144819,5.337078651685393,7.553058676654182,7.428214731585518,5.480649188514358,4.488139825218477,2.5405742821473156,3.508114856429463,8.239700374531834,5.337078651685393,4.675405742821473,2.3657927590511862,7.927590511860175,5.667915106117353,6.741573033707866,3.439450686641698,5.19350811485643,5.031210986267166,7.303370786516854,2.00374531835206,3.888888888888889,3.5393258426966296,4.31960049937578,7.553058676654182,2.871410736579276,6.803995006242197,6.073657927590512,5.6491885143570535, +5.630461922596755,7.240948813982522,4.294631710362047,7.116104868913857,5.224719101123595,5.205992509363296,2.1473158551810236,5.012484394506866,2.8339575530586765,4.394506866416979,5.049937578027466,3.139825218476904,1.8352059925093633,2.1910112359550564,3.245942571785269,7.740324594257178,6.491885143570538,4.769038701622971,3.5518102372034956,3.0649188514357055,5.786516853932584,7.303370786516854,4.55056179775281,7.49063670411985,6.679151061173534,2.84019975031211,2.578027465667915,2.2846441947565546,3.826466916354557,5.667915106117353,1.8539325842696628,3.077403245942572,6.491885143570538,5.449438202247191,2.7840199750312107,4.1011235955056184,2.958801498127341,8.177278401997503,5.8739076154806495,2.0474406991260925,2.259675405742821,6.367041198501872,5.549313358302123,3.370786516853933,2.6466916354556806,2.8339575530586765,7.740324594257178,4.881398252184769,3.2771535580524347,6.367041198501872,4.837702871410737,5.380774032459426,5.836454431960051,8.11485642946317,3.3458177278401995,4.9937578027465666,5.749063670411985,7.303370786516854,7.677902621722847,4.9937578027465666,3.6704119850187267,4.712858926342073,5.049937578027466,3.258426966292135,7.615480649188515,5.043695380774032,3.8639200998751564,7.240948813982522,3.4019975031210987,5.012484394506866,5.674157303370786,6.079900124843945,7.240948813982522,5.3620474406991265,7.615480649188515,7.428214731585518,5.499375780274657,4.519350811485642,2.565543071161049,3.5393258426966296,8.239700374531834,5.36828963795256,4.70661672908864,2.3845193508114857,7.990012484394507,5.692883895131087,6.741573033707866,3.470661672908864,5.218476903870163,5.062421972534332,7.365792759051186,2.0287141073657926,3.920099875156055,3.564294631710362,4.3508114856429465,7.553058676654182,2.902621722846442,6.803995006242197,6.098626716604246,5.674157303370786, +5.66167290886392,7.303370786516854,4.325842696629214,7.17852684144819,5.249687890137328,5.224719101123595,2.1722846441947565,5.0374531835206,2.8589263420724094,4.419475655430712,5.074906367041199,3.17103620474407,1.8601747815230962,2.2222222222222223,3.2709113607990012,7.8027465667915115,6.554307116104869,4.800249687890138,3.576779026217228,3.0836454431960054,5.811485642946318,7.303370786516854,4.569288389513109,7.553058676654182,6.741573033707866,2.871410736579276,2.602996254681648,2.309612983770287,3.857677902621723,5.692883895131087,1.8789013732833957,3.108614232209738,6.491885143570538,5.474406991260924,2.8027465667915106,4.1260923845193505,2.990012484394507,8.177278401997503,5.8988764044943816,2.066167290886392,2.278401997503121,6.429463171036204,5.574282147315855,3.4019975031210987,2.6779026217228465,2.8589263420724094,7.8027465667915115,4.912609238451935,3.3146067415730336,6.429463171036204,4.868913857677903,5.411985018726591,5.861423220973783,8.177278401997503,3.370786516853933,5.012484394506866,5.7802746566791505,7.365792759051186,7.677902621722847,5.024968789013733,3.689138576779026,4.737827715355805,5.081148564294631,3.2833957553058677,7.677902621722847,5.068664169787765,3.882646691635456,7.303370786516854,3.4269662921348316,5.0374531835206,5.705368289637952,6.111111111111111,7.240948813982522,5.393258426966292,7.615480649188515,7.49063670411985,5.524344569288389,4.55056179775281,2.5905118601747814,3.576779026217228,8.302122347066168,5.399500624219725,4.737827715355805,2.4094881398252186,7.990012484394507,5.711610486891385,6.803995006242197,3.5018726591760303,5.243445692883895,5.093632958801498,7.365792759051186,2.0536828963795255,3.951310861423221,3.595505617977528,4.382022471910113,7.615480649188515,2.9400749063670415,6.866416978776529,6.123595505617978,5.69912609238452, +5.692883895131087,7.303370786516854,4.357053682896379,7.17852684144819,5.274656679151062,5.249687890137328,2.1910112359550564,5.062421972534332,2.8901373283395753,4.444444444444445,5.093632958801498,3.202247191011236,1.8789013732833957,2.253433208489388,3.295880149812734,7.8027465667915115,6.554307116104869,4.831460674157303,3.6017478152309614,3.102372034956305,5.842696629213483,7.365792759051186,4.594257178526841,7.553058676654182,6.741573033707866,2.902621722846442,2.634207240948814,2.33458177278402,3.888888888888889,5.711610486891385,1.9038701622971288,3.1460674157303368,6.554307116104869,5.493133583021224,2.8277153558052435,4.144818976279651,3.027465667915106,8.239700374531834,5.9238451935081144,2.091136079900125,2.303370786516854,6.429463171036204,5.599250936329588,3.4332084893882646,2.7091136079900124,2.8838951310861427,7.8027465667915115,4.943820224719102,3.3458177278401995,6.429463171036204,4.893882646691636,5.449438202247191,5.8863920099875156,8.177278401997503,3.3957553058676653,5.031210986267166,5.805243445692884,7.365792759051186,7.740324594257178,5.049937578027466,3.7078651685393256,4.7565543071161045,5.1123595505617985,3.3021223470661676,7.677902621722847,5.087390761548065,3.9076154806491883,7.303370786516854,3.451935081148564,5.062421972534332,5.736579275905119,6.1485642946317105,7.240948813982522,5.418227215980025,7.677902621722847,7.49063670411985,5.543071161048689,4.588014981273409,2.6154806491885143,3.6142322097378274,8.302122347066168,5.430711610486892,4.775280898876405,2.428214731585518,8.05243445692884,5.736579275905119,6.803995006242197,3.533083645443196,5.268414481897628,5.1248439450686645,7.365792759051186,2.0724094881398254,3.982521847690387,3.620474406991261,4.413233458177278,7.677902621722847,2.9712858926342074,6.866416978776529,6.1485642946317105,5.717852684144819, +5.724094881398252,7.365792759051186,4.394506866416979,7.240948813982522,5.299625468164794,5.274656679151062,2.215980024968789,5.087390761548065,2.9213483146067416,4.463171036204744,5.118601747815231,3.233458177278402,1.9038701622971288,2.2846441947565546,3.320848938826467,7.865168539325843,6.616729088639201,4.8626716604244695,3.6267166042446943,3.1273408239700373,5.8739076154806495,7.365792759051186,4.619225967540574,7.615480649188515,6.803995006242197,2.9275905118601746,2.66541822721598,2.359550561797753,3.920099875156055,5.736579275905119,1.9288389513108615,3.1772784019975036,6.554307116104869,5.5181023720349565,2.8464419475655434,4.169787765293384,3.058676654182272,8.239700374531834,5.948813982521848,2.1098626716604243,2.328339575530587,6.429463171036204,5.630461922596755,3.464419475655431,2.7340823970037453,2.9151061173533086,7.865168539325843,4.9812734082397006,3.3770287141073654,6.491885143570538,4.925093632958801,5.480649188514358,5.917602996254682,8.239700374531834,3.4144818976279647,5.056179775280899,5.836454431960051,7.428214731585518,7.740324594257178,5.074906367041199,3.7265917602996255,4.775280898876405,5.143570536828964,3.3270911360799,7.740324594257178,5.1123595505617985,3.926342072409488,7.303370786516854,3.4769038701622974,5.081148564294631,5.767790262172285,6.179775280898876,7.303370786516854,5.449438202247191,7.677902621722847,7.49063670411985,5.561797752808988,4.619225967540574,2.640449438202247,3.6454431960049942,8.3645443196005,5.461922596754057,4.806491885143571,2.453183520599251,8.05243445692884,5.761548064918852,6.866416978776529,3.564294631710362,5.293383270911361,5.15605493133583,7.428214731585518,2.097378277153558,4.013732833957553,3.6454431960049942,4.450686641697877,7.677902621722847,3.0024968789013733,6.928838951310862,6.173533083645444,5.742821473158552, +5.7553058676654185,7.365792759051186,4.425717852684145,7.240948813982522,5.324594257178527,5.293383270911361,2.2409488139825218,5.118601747815231,2.9525593008739075,4.488139825218477,5.1373283395755305,3.258426966292135,1.9288389513108615,2.3158551810237205,3.3458177278401995,7.865168539325843,6.616729088639201,4.893882646691636,3.651685393258427,3.1460674157303368,5.8988764044943816,7.428214731585518,4.644194756554308,7.615480649188515,6.803995006242197,2.958801498127341,2.696629213483146,2.3845193508114857,3.951310861423221,5.761548064918852,1.9538077403245941,3.2084893882646695,6.616729088639201,5.536828963795256,2.871410736579276,4.194756554307116,3.0961298377028714,8.302122347066168,5.97378277153558,2.128589263420724,2.35330836454432,6.491885143570538,5.655430711610487,3.5018726591760303,2.7652933832709112,2.9400749063670415,7.865168539325843,5.012484394506866,3.4144818976279647,6.491885143570538,4.950062421972534,5.5181023720349565,5.942571785268415,8.302122347066168,3.439450686641698,5.074906367041199,5.867665418227216,7.428214731585518,7.8027465667915115,5.106117353308365,3.745318352059925,4.800249687890138,5.181023720349563,3.352059925093633,7.740324594257178,5.131086142322098,3.951310861423221,7.365792759051186,3.5018726591760303,5.106117353308365,5.799001248439451,6.210986267166042,7.303370786516854,5.474406991260924,7.740324594257178,7.553058676654182,5.586766541822722,4.656679151061174,2.6591760299625467,3.682896379525593,8.426966292134832,5.493133583021224,4.837702871410737,2.471910112359551,8.11485642946317,5.786516853932584,6.866416978776529,3.595505617977528,5.318352059925093,5.19350811485643,7.428214731585518,2.122347066167291,4.044943820224719,3.6704119850187267,4.4818976279650435,7.740324594257178,3.0399500624219726,6.928838951310862,6.20474406991261,5.767790262172285, +5.786516853932584,7.428214731585518,4.463171036204744,7.240948813982522,5.34956304619226,5.318352059925093,2.259675405742821,5.143570536828964,2.977528089887641,4.51310861423221,5.15605493133583,3.2896379525593007,1.9475655430711611,2.340823970037453,3.370786516853933,7.927590511860175,6.679151061173534,4.925093632958801,3.6766541822721597,3.17103620474407,5.930087390761548,7.428214731585518,4.66916354556804,7.677902621722847,6.866416978776529,2.990012484394507,2.727840199750312,2.4094881398252186,3.982521847690387,5.786516853932584,1.978776529338327,3.245942571785269,6.616729088639201,5.561797752808988,2.8963795255930087,4.219725343320849,3.1273408239700373,8.302122347066168,5.998751560549313,2.1473158551810236,2.3782771535580522,6.491885143570538,5.68039950062422,3.533083645443196,2.7965043695380776,2.965043695380774,7.927590511860175,5.049937578027466,3.4456928838951315,6.491885143570538,4.9812734082397006,5.549313358302123,5.967540574282147,8.302122347066168,3.464419475655431,5.093632958801498,5.892634207240949,7.49063670411985,7.8027465667915115,5.131086142322098,3.764044943820225,4.818976279650437,5.212234706616729,3.370786516853933,7.8027465667915115,5.15605493133583,3.970037453183521,7.365792759051186,3.5205992509363297,5.131086142322098,5.830212234706617,6.242197253433209,7.365792759051186,5.499375780274657,7.740324594257178,7.553058676654182,5.605493133583021,4.687890137328339,2.68414481897628,3.714107365792759,8.426966292134832,5.524344569288389,4.875156054931336,2.4968789013732833,8.11485642946317,5.811485642946318,6.866416978776529,3.6267166042446943,5.343320848938826,5.224719101123595,7.49063670411985,2.1473158551810236,4.0761548064918856,3.701622971285893,4.51310861423221,7.8027465667915115,3.0711610486891385,6.991260923845194,6.229712858926342,5.786516853932584, +5.81772784019975,7.428214731585518,4.49438202247191,7.303370786516854,5.3745318352059925,5.337078651685393,2.2846441947565546,5.168539325842697,3.0087390761548067,4.531835205992509,5.181023720349563,3.320848938826467,1.9725343320848938,2.3720349563046192,3.3957553058676653,7.927590511860175,6.679151061173534,4.950062421972534,3.701622971285893,3.1897627965043696,5.961298377028713,7.49063670411985,4.694132334581773,7.677902621722847,6.866416978776529,3.0149812734082393,2.7590511860174782,2.4344569288389515,4.013732833957553,5.811485642946318,2.00374531835206,3.2771535580524347,6.616729088639201,5.586766541822722,2.9151061173533086,4.238451935081149,3.1647940074906367,8.3645443196005,6.023720349563047,2.1722846441947565,2.4032459425717856,6.554307116104869,5.711610486891385,3.564294631710362,2.8277153558052435,2.9962546816479403,7.927590511860175,5.081148564294631,3.4769038701622974,6.554307116104869,5.0062421972534334,5.580524344569288,5.992509363295881,8.3645443196005,3.4893882646691634,5.118601747815231,5.9238451935081144,7.553058676654182,7.8027465667915115,5.15605493133583,3.7827715355805243,4.837702871410737,5.243445692883895,3.3957553058676653,7.8027465667915115,5.181023720349563,3.9950062421972534,7.365792759051186,3.545568039950062,5.15605493133583,5.861423220973783,6.30461922596754,7.365792759051186,5.5305867665418225,7.8027465667915115,7.553058676654182,5.6242197253433215,4.725343320848939,2.7091136079900124,3.7515605493133584,8.489388264669165,5.555555555555556,4.906367041198502,2.515605493133583,8.177278401997503,5.836454431960051,6.928838951310862,3.6579275905118602,5.36828963795256,5.2559300873907615,7.49063670411985,2.1722846441947565,4.107365792759051,3.7265917602996255,4.55056179775281,7.8027465667915115,3.108614232209738,6.991260923845194,6.242197253433209,5.811485642946318, +5.842696629213483,7.49063670411985,4.525593008739076,7.303370786516854,5.405742821473158,5.3620474406991265,2.309612983770287,5.19350811485643,3.0399500624219726,4.556803995006242,5.199750312109863,3.352059925093633,1.9975031210986267,2.4032459425717856,3.420724094881398,7.990012484394507,6.741573033707866,4.9812734082397006,3.7265917602996255,3.214731585518102,5.986267166042447,7.49063670411985,4.719101123595506,7.740324594257178,6.928838951310862,3.046192259675406,2.7840199750312107,2.459425717852684,4.044943820224719,5.836454431960051,2.0287141073657926,3.3083645443196006,6.679151061173534,5.605493133583021,2.9400749063670415,4.263420724094882,3.1960049937578026,8.3645443196005,6.0424469413233455,2.1910112359550564,2.428214731585518,6.554307116104869,5.736579275905119,3.595505617977528,2.852684144818976,3.0212234706616727,7.990012484394507,5.1123595505617985,3.5143570536828963,6.554307116104869,5.0374531835206,5.617977528089888,6.0174781523096135,8.3645443196005,3.5143570536828963,5.1373283395755305,5.948813982521848,7.553058676654182,7.865168539325843,5.187265917602996,3.801498127340824,4.8626716604244695,5.274656679151062,3.4144818976279647,7.865168539325843,5.199750312109863,4.013732833957553,7.428214731585518,3.5705368289637955,5.181023720349563,5.8863920099875156,6.30461922596754,7.365792759051186,5.555555555555556,7.8027465667915115,7.615480649188515,5.6491885143570535,4.7565543071161045,2.7340823970037453,3.7827715355805243,8.551810237203496,5.586766541822722,4.937578027465668,2.5405742821473156,8.177278401997503,5.855181023720349,6.928838951310862,3.689138576779026,5.393258426966292,5.287141073657928,7.553058676654182,2.1972534332084894,4.138576779026217,3.7515605493133584,4.581772784019975,7.865168539325843,3.139825218476904,7.0536828963795255,6.30461922596754,5.836454431960051, +5.8739076154806495,7.49063670411985,4.563046192259676,7.365792759051186,5.430711610486892,5.3870162297128585,2.328339575530587,5.218476903870163,3.0711610486891385,4.581772784019975,5.224719101123595,3.3770287141073654,2.016229712858926,2.4344569288389515,3.4456928838951315,7.990012484394507,6.741573033707866,5.012484394506866,3.7515605493133584,3.233458177278402,6.0174781523096135,7.553058676654182,4.7440699126092385,7.740324594257178,6.928838951310862,3.077403245942572,2.8152309612983775,2.4843945068664173,4.082397003745319,5.861423220973783,2.0536828963795255,3.3458177278401995,6.679151061173534,5.630461922596755,2.958801498127341,4.288389513108614,3.233458177278402,8.426966292134832,6.067415730337078,2.209737827715356,2.446941323345818,6.554307116104869,5.761548064918852,3.6329588014981273,2.8838951310861427,3.046192259675406,7.990012484394507,5.149812734082397,3.545568039950062,6.616729088639201,5.068664169787765,5.6491885143570535,6.048689138576779,8.426966292134832,3.533083645443196,5.162297128589263,5.980024968789014,7.615480649188515,7.865168539325843,5.212234706616729,3.826466916354557,4.881398252184769,5.305867665418227,3.439450686641698,7.865168539325843,5.224719101123595,4.038701622971286,7.428214731585518,3.595505617977528,5.205992509363296,5.917602996254682,6.367041198501872,7.428214731585518,5.580524344569288,7.865168539325843,7.615480649188515,5.667915106117353,4.794007490636704,2.7590511860174782,3.8202247191011236,8.551810237203496,5.617977528089888,4.975031210986267,2.5593008739076155,8.239700374531834,5.880149812734083,6.991260923845194,3.7203495630461925,5.418227215980025,5.318352059925093,7.553058676654182,2.2222222222222223,4.169787765293384,3.776529338327091,4.612983770287141,7.865168539325843,3.1772784019975036,7.0536828963795255,6.30461922596754,5.861423220973783, +5.905118601747815,7.553058676654182,4.594257178526841,7.365792759051186,5.455680399500624,5.405742821473158,2.35330836454432,5.249687890137328,3.0961298377028714,4.600499375780275,5.243445692883895,3.408239700374532,2.0411985018726595,2.4656679151061174,3.470661672908864,8.05243445692884,6.803995006242197,5.043695380774032,3.776529338327091,3.258426966292135,6.048689138576779,7.553058676654182,4.769038701622971,7.8027465667915115,6.991260923845194,3.102372034956305,2.8464419475655434,2.5093632958801497,4.1136079900124844,5.8863920099875156,2.0786516853932584,3.3770287141073654,6.679151061173534,5.6491885143570535,2.9837702871410734,4.313358302122348,3.2646691635455682,8.426966292134832,6.092384519350812,2.2347066167290888,2.471910112359551,6.616729088639201,5.786516853932584,3.6641697877652937,2.9151061173533086,3.077403245942572,8.05243445692884,5.181023720349563,3.5830212234706615,6.616729088639201,5.093632958801498,5.686641697877653,6.073657927590512,8.426966292134832,3.5580524344569286,5.181023720349563,6.004993757802747,7.615480649188515,7.927590511860175,5.237203495630462,3.8451935081148565,4.900124843945068,5.337078651685393,3.464419475655431,7.927590511860175,5.243445692883895,4.057428214731585,7.428214731585518,3.620474406991261,5.230961298377029,5.948813982521848,6.367041198501872,7.428214731585518,5.611735330836455,7.865168539325843,7.615480649188515,5.686641697877653,4.825218476903871,2.7840199750312107,3.857677902621723,8.614232209737828,5.64294631710362,5.0062421972534334,2.5842696629213484,8.239700374531834,5.905118601747815,6.991260923845194,3.7515605493133584,5.443196004993759,5.34956304619226,7.615480649188515,2.2409488139825218,4.200998751560549,3.8077403245942576,4.65043695380774,7.927590511860175,3.2084893882646695,7.116104868913857,6.30461922596754,5.880149812734083, +5.936329588014981,7.553058676654182,4.6254681647940075,7.428214731585518,5.480649188514358,5.430711610486892,2.3782771535580522,5.274656679151062,3.1273408239700373,4.6254681647940075,5.268414481897628,3.439450686641698,2.066167290886392,2.4906367041198503,3.495630461922597,8.05243445692884,6.803995006242197,5.074906367041199,3.801498127340824,3.2771535580524347,6.073657927590512,7.615480649188515,4.787765293383271,7.8027465667915115,6.991260923845194,3.1335830212234708,2.8776529338327093,2.5343320848938826,4.144818976279651,5.9113607990012484,2.1036204744069913,3.4144818976279647,6.741573033707866,5.674157303370786,3.0087390761548067,4.332084893882647,3.3021223470661676,8.489388264669165,6.117353308364544,2.253433208489388,2.4968789013732833,6.616729088639201,5.81772784019975,3.6953807740324596,2.9400749063670415,3.102372034956305,8.05243445692884,5.212234706616729,3.6142322097378274,6.679151061173534,5.1248439450686645,5.717852684144819,6.098626716604246,8.489388264669165,3.5830212234706615,5.199750312109863,6.036204744069912,7.677902621722847,7.927590511860175,5.268414481897628,3.8639200998751564,4.925093632958801,5.36828963795256,3.4831460674157304,7.927590511860175,5.268414481897628,4.082397003745319,7.49063670411985,3.6454431960049942,5.2559300873907615,5.980024968789014,6.429463171036204,7.428214731585518,5.636704119850187,7.927590511860175,7.677902621722847,5.711610486891385,4.8626716604244695,2.808988764044944,3.888888888888889,8.614232209737828,5.674157303370786,5.043695380774032,2.602996254681648,8.302122347066168,5.930087390761548,6.991260923845194,3.7827715355805243,5.468164794007491,5.3870162297128585,7.615480649188515,2.2659176029962547,4.2322097378277155,3.83270911360799,4.681647940074906,7.990012484394507,3.245942571785269,7.116104868913857,6.367041198501872,5.905118601747815, +5.967540574282147,7.615480649188515,4.662921348314606,7.428214731585518,5.50561797752809,5.455680399500624,2.397003745318352,5.299625468164794,3.1585518102372037,4.65043695380774,5.287141073657928,3.464419475655431,2.084893882646692,2.521847690387016,3.5205992509363297,8.11485642946317,6.866416978776529,5.106117353308365,3.826466916354557,3.3021223470661676,6.104868913857677,7.615480649188515,4.812734082397004,7.8027465667915115,7.0536828963795255,3.1647940074906367,2.908863920099875,2.5593008739076155,4.176029962546816,5.936329588014981,2.128589263420724,3.4456928838951315,6.741573033707866,5.692883895131087,3.027465667915106,4.357053682896379,3.3333333333333335,8.489388264669165,6.142322097378277,2.272159800249688,2.521847690387016,6.616729088639201,5.842696629213483,3.732833957553059,2.9712858926342074,3.1273408239700373,8.11485642946317,5.249687890137328,3.6454431960049942,6.679151061173534,5.149812734082397,5.7553058676654185,6.123595505617978,8.551810237203496,3.607990012484395,5.224719101123595,6.061173533083646,7.740324594257178,7.927590511860175,5.293383270911361,3.882646691635456,4.943820224719102,5.399500624219725,3.508114856429463,7.990012484394507,5.293383270911361,4.1011235955056184,7.49063670411985,3.6704119850187267,5.280898876404494,6.01123595505618,6.429463171036204,7.49063670411985,5.66167290886392,7.927590511860175,7.677902621722847,5.730337078651686,4.893882646691636,2.8339575530586765,3.926342072409488,8.67665418227216,5.705368289637952,5.074906367041199,2.6279650436953808,8.302122347066168,5.955056179775282,7.0536828963795255,3.81398252184769,5.493133583021224,5.418227215980025,7.677902621722847,2.2908863920099876,4.263420724094882,3.857677902621723,4.712858926342073,7.990012484394507,3.2771535580524347,7.17852684144819,6.367041198501872,5.930087390761548, +5.998751560549313,7.615480649188515,4.694132334581773,7.49063670411985,5.5305867665418225,5.474406991260924,2.4219725343320846,5.324594257178527,3.183520599250936,4.66916354556804,5.305867665418227,3.495630461922597,2.1098626716604243,2.5530586766541825,3.545568039950062,8.11485642946317,6.866416978776529,5.1373283395755305,3.8514357053682895,3.320848938826467,6.1360799001248445,7.677902621722847,4.837702871410737,7.865168539325843,7.0536828963795255,3.1897627965043696,2.933832709113608,2.5842696629213484,4.207240948813983,5.961298377028713,2.153558052434457,3.4769038701622974,6.741573033707866,5.717852684144819,3.0524344569288386,4.382022471910113,3.370786516853933,8.551810237203496,6.167290886392011,2.2908863920099876,2.546816479400749,6.679151061173534,5.867665418227216,3.764044943820225,3.0024968789013733,3.1585518102372037,8.11485642946317,5.280898876404494,3.682896379525593,6.741573033707866,5.181023720349563,5.786516853932584,6.1485642946317105,8.551810237203496,3.6329588014981273,5.243445692883895,6.092384519350812,7.740324594257178,7.990012484394507,5.318352059925093,3.9013732833957557,4.962546816479401,5.430711610486892,3.5268414481897628,7.990012484394507,5.312109862671661,4.1260923845193505,7.553058676654182,3.6953807740324596,5.305867665418227,6.0424469413233455,6.491885143570538,7.49063670411985,5.692883895131087,7.990012484394507,7.677902621722847,5.749063670411985,4.931335830212235,2.8589263420724094,3.957553058676654,8.739076154806492,5.736579275905119,5.106117353308365,2.6466916354556806,8.3645443196005,5.980024968789014,7.0536828963795255,3.8451935081148565,5.5181023720349565,5.449438202247191,7.677902621722847,2.3158551810237205,4.294631710362047,3.888888888888889,4.7440699126092385,8.05243445692884,3.3083645443196006,7.17852684144819,6.429463171036204,5.955056179775282, +6.029962546816479,7.677902621722847,4.725343320848939,7.49063670411985,5.555555555555556,5.499375780274657,2.446941323345818,5.34956304619226,3.214731585518102,4.694132334581773,5.33083645443196,3.5268414481897628,2.134831460674157,2.5842696629213484,3.5705368289637955,8.177278401997503,6.928838951310862,5.168539325842697,3.870162297128589,3.3458177278401995,6.161048689138577,7.677902621722847,4.8626716604244695,7.865168539325843,7.0536828963795255,3.2209737827715355,2.965043695380774,2.6092384519350813,4.238451935081149,5.986267166042447,2.1785268414481895,3.5143570536828963,6.803995006242197,5.742821473158552,3.0711610486891385,4.400749063670412,3.4019975031210987,8.551810237203496,6.186017478152309,2.3158551810237205,2.571785268414482,6.679151061173534,5.8988764044943816,3.7952559300873907,3.033707865168539,3.183520599250936,8.177278401997503,5.312109862671661,3.714107365792759,6.741573033707866,5.212234706616729,5.81772784019975,6.179775280898876,8.614232209737828,3.6579275905118602,5.262172284644195,6.117353308364544,7.8027465667915115,7.990012484394507,5.34956304619226,3.920099875156055,4.987515605493134,5.461922596754057,3.5518102372034956,8.05243445692884,5.337078651685393,4.144818976279651,7.553058676654182,3.7203495630461925,5.33083645443196,6.073657927590512,6.491885143570538,7.553058676654182,5.717852684144819,7.990012484394507,7.740324594257178,5.774032459425719,4.962546816479401,2.8838951310861427,3.9950062421972534,8.739076154806492,5.767790262172285,5.143570536828964,2.671660424469413,8.3645443196005,6.004993757802747,7.116104868913857,3.8764044943820224,5.543071161048689,5.480649188514358,7.740324594257178,2.340823970037453,4.31960049937578,3.9138576779026217,4.781523096129837,8.11485642946317,3.3458177278401995,7.240948813982522,6.429463171036204,5.97378277153558, +6.061173533083646,7.677902621722847,4.762796504369538,7.49063670411985,5.580524344569288,5.524344569288389,2.4656679151061174,5.380774032459426,3.245942571785269,4.719101123595506,5.34956304619226,3.5580524344569286,2.153558052434457,2.6154806491885143,3.589263420724095,8.177278401997503,6.928838951310862,5.199750312109863,3.8951310861423223,3.3645443196004994,6.192259675405743,7.740324594257178,4.887640449438202,7.927590511860175,7.116104868913857,3.2521847690387014,2.9962546816479403,2.634207240948814,4.269662921348314,6.01123595505618,2.203495630461923,3.545568039950062,6.803995006242197,5.761548064918852,3.0961298377028714,4.425717852684145,3.439450686641698,8.614232209737828,6.210986267166042,2.33458177278402,2.596754057428215,6.679151061173534,5.9238451935081144,3.826466916354557,3.058676654182272,3.2084893882646695,8.177278401997503,5.34956304619226,3.7515605493133584,6.803995006242197,5.237203495630462,5.855181023720349,6.20474406991261,8.614232209737828,3.6766541822721597,5.287141073657928,6.1485642946317105,7.8027465667915115,8.05243445692884,5.3745318352059925,3.938826466916354,5.0062421972534334,5.493133583021224,3.5705368289637955,8.05243445692884,5.355805243445693,4.169787765293384,7.553058676654182,3.745318352059925,5.355805243445693,6.104868913857677,6.554307116104869,7.553058676654182,5.742821473158552,8.05243445692884,7.740324594257178,5.792759051186017,4.9937578027465666,2.908863920099875,4.02621722846442,8.801498127340825,5.799001248439451,5.174781523096129,2.690387016229713,8.426966292134832,6.023720349563047,7.116104868913857,3.9076154806491883,5.568039950062421,5.511860174781523,7.740324594257178,2.3657927590511862,4.3508114856429465,3.938826466916354,4.812734082397004,8.11485642946317,3.3770287141073654,7.240948813982522,6.429463171036204,5.998751560549313, +6.086142322097379,7.740324594257178,4.794007490636704,7.553058676654182,5.605493133583021,5.543071161048689,2.4906367041198503,5.405742821473158,3.2771535580524347,4.737827715355805,5.3745318352059925,3.5830212234706615,2.1785268414481895,2.640449438202247,3.6142322097378274,8.177278401997503,,,3.920099875156055,3.3895131086142323,6.223470661672909,7.740324594257178,4.912609238451935,7.927590511860175,7.116104868913857,3.2771535580524347,3.027465667915106,2.6591760299625467,4.300873907615481,6.036204744069912,2.2284644194756553,3.576779026217228,6.803995006242197,5.786516853932584,3.1210986267166043,4.450686641697877,3.470661672908864,8.614232209737828,6.235955056179775,2.35330836454432,2.6154806491885143,6.741573033707866,5.948813982521848,3.8639200998751564,3.089887640449438,3.2397003745318353,8.239700374531834,,3.7827715355805243,6.803995006242197,5.268414481897628,5.8863920099875156,,8.67665418227216,3.701622971285893,5.305867665418227,6.179775280898876,,8.05243445692884,5.399500624219725,3.957553058676654,5.024968789013733,5.5305867665418225,3.595505617977528,8.11485642946317,5.380774032459426,4.188514357053683,7.615480649188515,3.764044943820225,5.380774032459426,6.1360799001248445,6.554307116104869,7.553058676654182,5.774032459425719,8.05243445692884,7.740324594257178,5.811485642946318,5.031210986267166,2.933832709113608,4.063670411985019,,5.830212234706617,5.205992509363296,2.7091136079900124,,6.048689138576779,7.116104868913857,3.938826466916354,5.593008739076155,5.549313358302123,,2.3907615480649187,4.382022471910113,3.9637952559300875,4.843945068664169,,3.4144818976279647,7.240948813982522,6.491885143570538,6.023720349563047, +6.117353308364544,7.8027465667915115,4.831460674157303,7.553058676654182,5.630461922596755,5.568039950062421,2.515605493133583,5.430711610486892,3.3021223470661676,4.762796504369538,5.393258426966292,3.6142322097378274,2.203495630461923,2.671660424469413,3.639200998751561,8.239700374531834,,,3.9450686641697876,3.408239700374532,6.242197253433209,7.8027465667915115,4.937578027465668,7.990012484394507,7.17852684144819,3.3083645443196006,3.058676654182272,2.68414481897628,4.332084893882647,6.061173533083646,2.253433208489388,3.6142322097378274,6.866416978776529,5.805243445692884,3.139825218476904,4.475655430711611,3.508114856429463,8.67665418227216,6.242197253433209,2.3782771535580522,2.640449438202247,6.741573033707866,5.97378277153558,3.8951310861423223,3.1210986267166043,3.2646691635455682,8.239700374531834,,3.81398252184769,6.866416978776529,5.293383270911361,5.9238451935081144,,8.67665418227216,,5.324594257178527,6.20474406991261,,8.05243445692884,5.430711610486892,3.9762796504369535,5.049937578027466,5.561797752808988,3.620474406991261,8.11485642946317,5.405742821473158,4.213483146067416,7.615480649188515,3.7890137328339577,5.405742821473158,6.167290886392011,6.616729088639201,7.615480649188515,5.799001248439451,8.11485642946317,7.8027465667915115,5.836454431960051,5.062421972534332,,4.1011235955056184,,5.861423220973783,5.243445692883895,2.7340823970037453,,6.073657927590512,7.17852684144819,3.970037453183521,5.617977528089888,5.580524344569288,,2.4094881398252186,4.413233458177278,3.9950062421972534,4.881398252184769,,3.4456928838951315,7.303370786516854,6.491885143570538,6.048689138576779, +6.1485642946317105,7.8027465667915115,4.8626716604244695,7.615480649188515,5.655430711610487,5.593008739076155,2.5343320848938826,5.455680399500624,3.3333333333333335,4.787765293383271,5.418227215980025,3.6454431960049942,2.2222222222222223,2.702871410736579,3.6641697877652937,8.239700374531834,,,3.970037453183521,3.4269662921348316,6.30461922596754,7.8027465667915115,4.962546816479401,7.990012484394507,7.17852684144819,3.339575530586767,3.089887640449438,2.7091136079900124,4.3632958801498125,6.086142322097379,2.272159800249688,3.6454431960049942,6.866416978776529,5.830212234706617,3.1647940074906367,4.49438202247191,3.545568039950062,8.67665418227216,6.30461922596754,2.397003745318352,2.66541822721598,6.741573033707866,6.004993757802747,3.926342072409488,3.1460674157303368,3.2896379525593007,8.302122347066168,,,6.866416978776529,5.324594257178527,5.955056179775282,,8.739076154806492,,5.34956304619226,6.235955056179775,,8.11485642946317,5.455680399500624,4.001248439450687,5.068664169787765,5.593008739076155,3.639200998751561,8.177278401997503,5.424469413233458,4.2322097378277155,7.615480649188515,3.81398252184769,5.430711610486892,6.198501872659176,6.616729088639201,7.615480649188515,5.830212234706617,8.11485642946317,7.8027465667915115,5.855181023720349,5.099875156054932,,4.132334581772784,,5.892634207240949,5.274656679151062,2.752808988764045,,6.098626716604246,7.17852684144819,4.001248439450687,5.6491885143570535,5.611735330836455,,2.4344569288389515,4.444444444444445,4.019975031210986,4.912609238451935,,3.4831460674157304,7.303370786516854,6.554307116104869,6.067415730337078, +,7.865168539325843,4.893882646691636,,5.68039950062422,5.611735330836455,2.5593008739076155,,3.3645443196004994,4.806491885143571,5.436953807740325,3.6766541822721597,2.247191011235955,2.7340823970037453,3.689138576779026,8.302122347066168,,,3.9950062421972534,3.451935081148564,6.30461922596754,7.865168539325843,4.987515605493134,8.05243445692884,7.240948813982522,3.3645443196004994,3.114856429463171,2.7340823970037453,4.400749063670412,6.111111111111111,2.2971285892634206,3.682896379525593,6.866416978776529,5.848938826466916,3.183520599250936,4.519350811485642,3.576779026217228,8.739076154806492,6.30461922596754,2.4157303370786516,2.690387016229713,6.803995006242197,6.029962546816479,3.957553058676654,3.1772784019975036,3.3146067415730336,8.302122347066168,,,6.928838951310862,5.34956304619226,5.986267166042447,,8.801498127340825,,5.36828963795256,6.242197253433209,,8.11485642946317,5.480649188514358,4.019975031210986,5.087390761548065,5.6242197253433215,3.6641697877652937,8.177278401997503,5.449438202247191,4.257178526841448,7.677902621722847,3.8389513108614235,5.455680399500624,6.229712858926342,6.679151061173534,7.615480649188515,5.855181023720349,8.177278401997503,7.8027465667915115,5.880149812734083,5.131086142322098,,4.169787765293384,,5.9238451935081144,5.305867665418227,2.777777777777778,,6.123595505617978,7.240948813982522,4.032459425717852,5.674157303370786,5.64294631710362,,2.459425717852684,4.475655430711611,4.044943820224719,4.943820224719102,,3.5143570536828963,7.365792759051186,6.554307116104869,6.092384519350812, +,7.865168539325843,4.931335830212235,,5.705368289637952,5.636704119850187,2.5842696629213484,,3.3957553058676653,4.831460674157303,5.455680399500624,3.701622971285893,2.272159800249688,2.7652933832709112,3.714107365792759,,,,4.019975031210986,3.470661672908864,6.367041198501872,7.865168539325843,5.0062421972534334,,7.240948813982522,3.3957553058676653,3.1460674157303368,2.7590511860174782,4.431960049937578,6.1360799001248445,,3.714107365792759,6.928838951310862,5.8739076154806495,3.2084893882646695,4.544319600499376,3.6142322097378274,8.739076154806492,6.30461922596754,2.4406991260923845,2.715355805243446,6.803995006242197,6.054931335830212,3.9950062421972534,3.2084893882646695,3.3458177278401995,8.3645443196005,,,6.928838951310862,5.380774032459426,6.023720349563047,,8.801498127340825,,5.3870162297128585,6.30461922596754,,8.177278401997503,5.50561797752809,4.038701622971286,5.1123595505617985,5.655430711610487,3.682896379525593,8.239700374531834,5.468164794007491,4.275905118601748,7.677902621722847,3.8639200998751564,5.480649188514358,6.242197253433209,6.679151061173534,7.677902621722847,5.880149812734083,8.177278401997503,7.865168539325843,5.8988764044943816,5.168539325842697,,,,5.955056179775282,5.343320848938826,2.7965043695380776,,6.1485642946317105,7.240948813982522,4.063670411985019,5.69912609238452,5.674157303370786,,2.4843945068664173,4.506866416978776,4.069912609238452,4.9812734082397006,,3.5518102372034956,7.365792759051186,6.616729088639201,6.117353308364544, +,7.927590511860175,4.962546816479401,,5.730337078651686,5.655430711610487,2.602996254681648,,3.420724094881398,4.850187265917603,5.480649188514358,3.732833957553059,2.2908863920099876,2.790262172284644,3.7390761548064915,,,,4.044943820224719,3.495630461922597,6.367041198501872,7.927590511860175,5.031210986267166,,7.303370786516854,3.4269662921348316,3.1772784019975036,2.7840199750312107,4.463171036204744,,,3.745318352059925,6.928838951310862,5.8988764044943816,3.233458177278402,4.569288389513109,3.6454431960049942,8.801498127340825,6.367041198501872,2.459425717852684,2.740324594257179,6.866416978776529,6.086142322097379,4.02621722846442,3.2397003745318353,3.370786516853933,8.3645443196005,,,6.991260923845194,5.411985018726591,6.054931335830212,,8.863920099875156,,5.411985018726591,6.30461922596754,,8.177278401997503,5.536828963795256,4.057428214731585,5.131086142322098,5.686641697877653,3.7078651685393256,8.239700374531834,5.493133583021224,4.294631710362047,7.677902621722847,3.888888888888889,5.50561797752809,6.30461922596754,6.741573033707866,7.677902621722847,5.9113607990012484,8.239700374531834,7.865168539325843,5.917602996254682,5.199750312109863,,,,5.986267166042447,5.3745318352059925,2.82147315855181,,6.173533083645444,7.240948813982522,4.094881398252185,5.724094881398252,5.705368289637952,,2.5093632958801497,4.538077403245943,4.1011235955056184,5.012484394506866,,3.5830212234706615,7.428214731585518,,6.1360799001248445, +,7.927590511860175,4.9937578027465666,,5.7553058676654185,5.68039950062422,2.6279650436953808,,3.451935081148564,4.875156054931336,5.499375780274657,3.764044943820225,2.3158551810237205,2.82147315855181,3.764044943820225,,,,4.069912609238452,3.5143570536828963,6.367041198501872,7.990012484394507,5.056179775280899,,7.303370786516854,3.4581772784019975,3.2084893882646695,2.808988764044944,4.49438202247191,,,3.7827715355805243,6.928838951310862,5.917602996254682,3.2521847690387014,,3.682896379525593,8.801498127340825,6.367041198501872,2.478152309612984,2.7590511860174782,6.866416978776529,6.111111111111111,4.057428214731585,3.2646691635455682,3.3957553058676653,8.426966292134832,,,6.991260923845194,5.436953807740325,6.092384519350812,,8.863920099875156,,5.430711610486892,6.367041198501872,,8.239700374531834,5.561797752808988,4.0761548064918856,5.149812734082397,5.717852684144819,3.7265917602996255,8.302122347066168,5.5181023720349565,4.31960049937578,7.740324594257178,3.9138576779026217,5.5305867665418225,6.30461922596754,6.741573033707866,7.740324594257178,5.936329588014981,8.239700374531834,7.865168539325843,5.942571785268415,5.237203495630462,,,,6.0174781523096135,5.405742821473158,2.84019975031211,,6.192259675405743,7.303370786516854,4.1260923845193505,5.749063670411985,5.742821473158552,,2.5343320848938826,4.569288389513109,4.1260923845193505,5.043695380774032,,3.6142322097378274,7.428214731585518,,6.161048689138577, +,7.990012484394507,5.031210986267166,,5.7802746566791505,5.705368289637952,,,3.4831460674157304,4.900124843945068,5.524344569288389,3.7952559300873907,2.340823970037453,2.852684144818976,3.7890137328339577,,,,4.094881398252185,3.5393258426966296,6.429463171036204,7.990012484394507,5.081148564294631,,7.365792759051186,3.4831460674157304,3.2397003745318353,2.8339575530586765,4.525593008739076,,,3.81398252184769,6.991260923845194,,3.2771535580524347,,3.714107365792759,8.863920099875156,6.429463171036204,2.4968789013732833,2.7840199750312107,6.866416978776529,6.1360799001248445,4.0886392009987516,3.295880149812734,,8.426966292134832,,,7.0536828963795255,5.468164794007491,6.123595505617978,,8.926342072409488,,5.455680399500624,6.367041198501872,,8.239700374531834,,4.094881398252185,5.174781523096129,5.749063670411985,3.7515605493133584,8.302122347066168,5.536828963795256,4.33832709113608,7.740324594257178,3.938826466916354,5.555555555555556,,6.803995006242197,7.740324594257178,5.961298377028713,8.302122347066168,7.927590511860175,5.961298377028713,5.268414481897628,,,,6.048689138576779,5.443196004993759,2.865168539325843,,6.217228464419476,7.303370786516854,4.157303370786517,5.774032459425719,5.774032459425719,,2.5530586766541825,4.600499375780275,4.151061173533084,5.081148564294631,,3.651685393258427,,,6.186017478152309, +,,5.062421972534332,,5.805243445692884,,,,3.5143570536828963,4.918851435705368,5.543071161048689,3.8202247191011236,2.359550561797753,2.8838951310861427,3.81398252184769,,,,4.119850187265917,3.5580524344569286,6.429463171036204,8.05243445692884,5.106117353308365,,7.365792759051186,3.5143570536828963,3.2709113607990012,2.8589263420724094,4.556803995006242,,,3.8451935081148565,6.991260923845194,,3.295880149812734,,3.7515605493133584,8.863920099875156,6.429463171036204,2.521847690387016,2.808988764044944,6.928838951310862,6.161048689138577,4.1260923845193505,3.3270911360799,,8.489388264669165,,,7.0536828963795255,5.493133583021224,6.161048689138577,,,,5.474406991260924,6.429463171036204,,8.239700374531834,,4.1136079900124844,5.19350811485643,5.7802746566791505,3.776529338327091,8.3645443196005,5.561797752808988,4.3632958801498125,7.740324594257178,3.9637952559300875,5.580524344569288,,6.803995006242197,,5.992509363295881,8.302122347066168,7.927590511860175,5.980024968789014,5.305867665418227,,,,6.079900124843945,5.474406991260924,2.8838951310861427,,6.242197253433209,7.365792759051186,4.18227215980025,5.799001248439451,5.805243445692884,,2.578027465667915,4.631710362047441,4.18227215980025,5.1123595505617985,,3.682896379525593,,,6.210986267166042, +,,5.093632958801498,,5.830212234706617,,,,3.5393258426966296,4.943820224719102,5.568039950062421,3.8514357053682895,2.3845193508114857,2.908863920099875,3.8389513108614235,,,,4.144818976279651,3.5830212234706615,6.491885143570538,,5.131086142322098,,7.428214731585518,3.545568039950062,3.295880149812734,2.8838951310861427,4.588014981273409,,,3.882646691635456,6.991260923845194,,3.320848938826467,,,8.926342072409488,6.429463171036204,2.5405742821473156,2.8339575530586765,6.928838951310862,,,3.352059925093633,,8.489388264669165,,,7.116104868913857,5.524344569288389,6.192259675405743,,,,5.493133583021224,6.429463171036204,,8.302122347066168,,4.132334581772784,5.212234706616729,5.811485642946318,3.7952559300873907,8.3645443196005,5.580524344569288,4.382022471910113,7.8027465667915115,3.9887640449438204,5.605493133583021,,6.866416978776529,,6.0174781523096135,8.3645443196005,7.927590511860175,6.004993757802747,5.337078651685393,,,,6.111111111111111,5.50561797752809,2.908863920099875,,6.242197253433209,7.365792759051186,4.213483146067416,5.823970037453184,5.836454431960051,,2.602996254681648,4.662921348314606,4.207240948813983,5.143570536828964,,3.7203495630461925,,,6.229712858926342, +,,5.131086142322098,,5.855181023720349,,,,3.5705368289637955,4.9687890137328345,5.586766541822722,3.882646691635456,2.4094881398252186,2.9400749063670415,3.8639200998751564,,,,4.169787765293384,3.6017478152309614,6.491885143570538,,5.15605493133583,,7.428214731585518,3.5705368289637955,3.3270911360799,2.908863920099875,4.619225967540574,,,3.9138576779026217,7.0536828963795255,,3.3458177278401995,,,8.926342072409488,6.491885143570538,2.5593008739076155,2.8589263420724094,6.928838951310862,,,3.383270911360799,,8.551810237203496,,,7.116104868913857,,,,,,5.5181023720349565,6.491885143570538,,8.302122347066168,,4.151061173533084,5.237203495630462,5.842696629213483,3.8202247191011236,8.426966292134832,5.605493133583021,4.406991260923846,7.8027465667915115,4.00749063670412,5.630461922596755,,,,6.0424469413233455,8.3645443196005,7.990012484394507,6.023720349563047,5.3745318352059925,,,,,5.543071161048689,2.9275905118601746,,6.30461922596754,7.428214731585518,4.244694132334582,5.848938826466916,5.867665418227216,,2.6279650436953808,4.694132334581773,4.2322097378277155,5.174781523096129,,3.7515605493133584,,,6.242197253433209, +,,5.162297128589263,,,,,,3.6017478152309614,4.987515605493134,5.605493133583021,3.9076154806491883,2.428214731585518,2.9712858926342074,,,,,4.194756554307116,3.6267166042446943,6.554307116104869,,5.181023720349563,,7.49063670411985,3.6017478152309614,3.3583021223470664,2.933832709113608,4.65043695380774,,,,7.0536828963795255,,3.3645443196004994,,,8.98876404494382,,2.5842696629213484,2.8838951310861427,6.991260923845194,,,3.4144818976279647,,8.551810237203496,,,7.116104868913857,,,,,,5.536828963795256,6.491885143570538,,8.3645443196005,,4.176029962546816,5.2559300873907615,5.880149812734083,3.8389513108614235,8.426966292134832,5.6242197253433215,4.425717852684145,7.8027465667915115,4.032459425717852,,,,,6.073657927590512,8.426966292134832,7.990012484394507,6.0424469413233455,5.405742821473158,,,,,,2.9525593008739075,,,7.428214731585518,,5.8739076154806495,5.905118601747815,,,,4.257178526841448,5.212234706616729,,,,,6.30461922596754, +,,,,,,,,3.6329588014981273,5.012484394506866,5.630461922596755,3.938826466916354,2.453183520599251,3.0024968789013733,,,,,4.213483146067416,3.6454431960049942,6.554307116104869,,5.205992509363296,,7.49063670411985,3.6329588014981273,,2.958801498127341,4.681647940074906,,,,7.0536828963795255,,3.3895131086142323,,,8.98876404494382,,2.602996254681648,2.908863920099875,6.991260923845194,,,,,,,,7.17852684144819,,,,,,5.555555555555556,6.491885143570538,,8.3645443196005,,4.194756554307116,5.274656679151062,5.9113607990012484,3.8639200998751564,8.489388264669165,5.6491885143570535,4.450686641697877,,4.057428214731585,,,,,6.098626716604246,8.426966292134832,7.990012484394507,6.067415730337078,,,,,,,2.9712858926342074,,,7.428214731585518,,5.8988764044943816,5.936329588014981,,,,4.288389513108614,5.243445692883895,,,,,6.30461922596754, +,,,,,,,,3.6579275905118602,5.0374531835206,5.6491885143570535,,2.471910112359551,3.033707865168539,,,,,,3.6704119850187267,6.616729088639201,,5.224719101123595,,7.553058676654182,,,2.9837702871410734,4.712858926342073,,,,7.116104868913857,,3.408239700374532,,,9.051186017478152,,,2.9275905118601746,6.991260923845194,,,,,,,,7.17852684144819,,,,,,5.580524344569288,6.554307116104869,,,,4.213483146067416,5.299625468164794,5.942571785268415,3.888888888888889,8.489388264669165,,4.4694132334581775,,4.082397003745319,,,,,6.123595505617978,8.489388264669165,8.05243445692884,6.086142322097379,,,,,,,2.9962546816479403,,,7.49063670411985,,5.9238451935081144,5.967540574282147,,,,,5.274656679151062,,,,,6.30461922596754, +,,,,,,,,3.689138576779026,5.056179775280899,,,2.4968789013732833,3.058676654182272,,,,,,3.689138576779026,6.616729088639201,,5.249687890137328,,7.553058676654182,,,3.0087390761548067,,,,,7.116104868913857,,3.4332084893882646,,,9.051186017478152,,,2.9525593008739075,7.0536828963795255,,,,,,,,7.240948813982522,,,,,,,,,,,4.2322097378277155,5.318352059925093,5.97378277153558,3.9076154806491883,8.551810237203496,,4.49438202247191,,4.107365792759051,,,,,6.154806491885144,8.489388264669165,8.05243445692884,6.104868913857677,,,,,,,3.0149812734082393,,,7.49063670411985,,5.948813982521848,5.998751560549313,,,,,,,,,,6.367041198501872, +,,,,,,,,3.7203495630461925,,,,,3.089887640449438,,,,,,3.714107365792759,6.679151061173534,,5.274656679151062,,7.553058676654182,,,3.033707865168539,,,,,,,3.4581772784019975,,,9.113607990012484,,,2.977528089887641,,,,,,,,,7.240948813982522,,,,,,,,,,,4.250936329588015,5.337078651685393,6.004993757802747,3.9325842696629216,8.551810237203496,,,,4.132334581772784,,,,,6.179775280898876,8.551810237203496,8.05243445692884,6.129837702871411,,,,,,,3.0399500624219726,,,7.553058676654182,,5.97378277153558,6.029962546816479,,,,,,,,,,6.367041198501872, +,,,,,,,,,,,,,3.1210986267166043,,,,,,3.732833957553059,6.679151061173534,,5.299625468164794,,,,,3.058676654182272,,,,,,,,,,9.113607990012484,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.269662921348314,5.3620474406991265,6.036204744069912,3.951310861423221,8.614232209737828,,,,,,,,,6.210986267166042,8.551810237203496,8.11485642946317,6.1485642946317105,,,,,,,3.058676654182272,,,7.553058676654182,,,,,,,,,,,,,6.367041198501872, +,,,,,,,,,,,,,3.15230961298377,,,,,,3.7515605493133584,6.741573033707866,,5.324594257178527,,,,,3.0836454431960054,,,,,,,,,,9.176029962546817,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.288389513108614,5.380774032459426,6.067415730337078,3.9762796504369535,8.614232209737828,,,,,,,,,6.235955056179775,,8.11485642946317,6.167290886392011,,,,,,,3.077403245942572,,,7.553058676654182,,,,,,,,,,,,,6.429463171036204, +,,,,,,,,,,,,,,,,,,,,6.741573033707866,,,,,,,,,,,,,,,,,9.176029962546817,,,,,,,,,,,,,,,,,,,,,,,,5.399500624219725,6.098626716604246,,8.67665418227216,,,,,,,,,6.242197253433209,,8.11485642946317,6.192259675405743,,,,,,,3.102372034956305,,,7.615480649188515,,,,,,,,,,,,,6.429463171036204, +,,,,,,,,,,,,,,,,,,,,6.803995006242197,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5.424469413233458,,,,,,,,,,,,6.30461922596754,,,6.210986267166042,,,,,,,3.1210986267166043,,,7.615480649188515,,,,,,,,,,,,,, diff --git a/lessons/files/spectrum.txt b/lessons/files/spectrum.txt index 2eb0d97..588f101 100644 --- a/lessons/files/spectrum.txt +++ b/lessons/files/spectrum.txt @@ -15,3 +15,5 @@ nm &#&# abs 310 0.002 300 0.007 310 0.002 +300 0.007 +310 0.002 From 9f1aefb0ffad246c54cc2e106483b977eabd115e Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Thu, 21 Aug 2025 08:43:56 +0100 Subject: [PATCH 64/94] Moved download file --- lessons/common_libs/{ => downloads}/cyclic_voltammetry_data.csv | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lessons/common_libs/{ => downloads}/cyclic_voltammetry_data.csv (100%) diff --git a/lessons/common_libs/cyclic_voltammetry_data.csv b/lessons/common_libs/downloads/cyclic_voltammetry_data.csv similarity index 100% rename from lessons/common_libs/cyclic_voltammetry_data.csv rename to lessons/common_libs/downloads/cyclic_voltammetry_data.csv From e41125ef760ab4729d504508edd069a96edef575 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Thu, 21 Aug 2025 08:44:14 +0100 Subject: [PATCH 65/94] Added prerequistie link and download link for CV data --- lessons/common_libs/matplotlib_pyplot_basics.ipynb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lessons/common_libs/matplotlib_pyplot_basics.ipynb b/lessons/common_libs/matplotlib_pyplot_basics.ipynb index bbbf0c5..cb4bf09 100644 --- a/lessons/common_libs/matplotlib_pyplot_basics.ipynb +++ b/lessons/common_libs/matplotlib_pyplot_basics.ipynb @@ -20,11 +20,11 @@ "source": [ "## Prerequisites\n", "\n", - "- Variables\n", - "- Lists\n", - "- Loops\n", - "- Functions\n", - "- Files and reading files" + "- [Variables](/lessons/variables/Variable_data_types.ipynb)\n", + "- [Lists](/lessons/variables/Variable_data_types.ipynb)\n", + "- Loops, [`for`](/lessons/loops_functions/for_loops.ipynb) and [`while`](/lessons/loops_functions/while_loops.ipynb)\n", + "- [Functions](/lessons/loops_functions/functions_and_scope.ipynb)\n", + "- [Files](/lessons/files/files_file_types.ipynb) and [reading files](/lessons/files/reading_files.ipynb)" ] }, { @@ -939,7 +939,7 @@ "source": [ "Cyclic voltammetry (CV) is an electrochemical technique which measures the current in an electrochemical cell against voltage, first a forward scan from low voltage to high voltage, followed by a reverse scan. A cyclic voltammogram is the plot generated from each measurement of current against voltage. The shape of the cyclic voltammogram can tell you whether the reaction at the electrode is electrochemically reversible, irreversible, or quasi-irreversible. \n", "\n", - "Use Pyplot and the function from the previous question to plot a cyclic voltammetry curve from \"cyclic_voltammetry_data.csv\".\n", + "Use Pyplot and the function from the previous question to plot a cyclic voltammetry curve from {download}`cyclic_voltammetry_data.csv<./downloads/cyclic_voltammetry_data.csv>`.\n", "\n", "You should get a voltammogram that looks something like this (make sure to relabel the title and axes appropriately!):\n", "\n", From ef2c3883d43cdbafb1687115d9a26be42ccf66e5 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Thu, 21 Aug 2025 17:08:59 +0100 Subject: [PATCH 66/94] file and file types lesson updated, diagrams and images added. for loops lesson edited, questions added and typos corrected --- lessons/files/data_record.csv | 100 +++++ lessons/files/files_file_types.ipynb | 224 +++++++++- lessons/files/images/CSV_file.png | Bin 0 -> 28688 bytes lessons/files/images/XYZ_file.png | Bin 0 -> 4392 bytes .../files/images/directory_visualisation.png | Bin 0 -> 125948 bytes lessons/files/images/py_file.png | Bin 0 -> 10484 bytes lessons/files/images/text_file.png | Bin 0 -> 4192 bytes lessons/files/spectrum.txt | 2 + lessons/loops_functions/for_loops.ipynb | 397 ++++++++++++------ 9 files changed, 572 insertions(+), 151 deletions(-) create mode 100644 lessons/files/images/CSV_file.png create mode 100644 lessons/files/images/XYZ_file.png create mode 100644 lessons/files/images/directory_visualisation.png create mode 100644 lessons/files/images/py_file.png create mode 100644 lessons/files/images/text_file.png diff --git a/lessons/files/data_record.csv b/lessons/files/data_record.csv index ff2607f..7d87aa4 100644 --- a/lessons/files/data_record.csv +++ b/lessons/files/data_record.csv @@ -598,3 +598,103 @@ ,,,,,,,,,,,,,3.15230961298377,,,,,,3.7515605493133584,6.741573033707866,,5.324594257178527,,,,,3.0836454431960054,,,,,,,,,,9.176029962546817,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.288389513108614,5.380774032459426,6.067415730337078,3.9762796504369535,8.614232209737828,,,,,,,,,6.235955056179775,,8.11485642946317,6.167290886392011,,,,,,,3.077403245942572,,,7.553058676654182,,,,,,,,,,,,,6.429463171036204, ,,,,,,,,,,,,,,,,,,,,6.741573033707866,,,,,,,,,,,,,,,,,9.176029962546817,,,,,,,,,,,,,,,,,,,,,,,,5.399500624219725,6.098626716604246,,8.67665418227216,,,,,,,,,6.242197253433209,,8.11485642946317,6.192259675405743,,,,,,,3.102372034956305,,,7.615480649188515,,,,,,,,,,,,,6.429463171036204, ,,,,,,,,,,,,,,,,,,,,6.803995006242197,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5.424469413233458,,,,,,,,,,,,6.30461922596754,,,6.210986267166042,,,,,,,3.1210986267166043,,,7.615480649188515,,,,,,,,,,,,,, +3.651685393258427,5.074906367041199,2.1161048689138577,5.305867665418227,3.589263420724095,3.7265917602996255,0.6554307116104868,3.3021223470661676,0.9051186017478152,2.908863920099875,3.6641697877652937,1.223470661672909,0.35268414481897625,0.24968789013732834,1.647940074906367,5.855181023720349,4.4818976279650435,2.7590511860174782,1.9600499375780276,1.6541822721598003,3.8951310861423223,5.224719101123595,2.9712858926342074,5.474406991260924,4.800249687890138,0.9488139825218477,0.6173533083645443,0.6616729088639202,1.7602996254681649,4.057428214731585,0.24781523096129837,0.8926342072409489,5.099875156054932,4.001248439450687,1.317103620474407,2.5842696629213484,0.717852684144819,6.179775280898876,4.313358302122348,0.7116104868913858,0.6928838951310862,4.956304619225968,3.8077403245942576,1.2359550561797754,0.7365792759051186,1.079900124843945,5.724094881398252,2.702871410736579,1.0923845193508115,4.444444444444445,2.9837702871410734,3.183520599250936,4.132334581772784,5.81772784019975,1.797752808988764,3.6267166042446943,3.9076154806491883,4.875156054931336,6.029962546816479,3.2397003745318353,2.4032459425717856,3.3645443196004994,2.9837702871410734,1.8102372034956304,5.6491885143570535,3.5830212234706615,2.446941323345818,5.855181023720349,1.8164794007490637,3.3957553058676653,3.6766541822721597,3.957553058676654,5.705368289637952,3.595505617977528,5.593008739076155,6.104868913857677,4.138576779026217,2.303370786516854,0.9550561797752809,1.2796504369538078,5.730337078651686,3.3645443196004994,2.5343320848938826,0.9800249687890138,5.930087390761548,4.1260923845193505,5.1248439450686645,1.4544319600499376,3.576779026217228,2.958801498127341,5.436953807740325,0.466916354556804,1.9101123595505618,1.8352059925093633,2.1972534332084894,5.031210986267166,0.6928838951310862,4.856429463171036,4.425717852684145,4.157303370786517, +3.682896379525593,5.1123595505617985,2.153558052434457,5.33083645443196,3.6142322097378274,3.745318352059925,0.6803995006242198,3.3270911360799,0.9363295880149812,2.933832709113608,3.682896379525593,1.2546816479400749,0.3757802746566792,0.27965043695380776,1.6729088639200997,5.880149812734083,4.51310861423221,2.790262172284644,1.9850187265917605,1.6791510611735332,3.920099875156055,5.262172284644195,2.9962546816479403,5.50561797752809,4.831460674157303,0.9737827715355806,0.6491885143570537,0.686641697877653,1.7915106117353308,4.082397003745319,0.2727840199750312,0.9300873907615481,5.1248439450686645,4.019975031210986,1.34207240948814,2.6092384519350813,0.7490636704119851,6.210986267166042,4.33832709113608,0.7303370786516854,0.717852684144819,4.975031210986267,3.8389513108614235,1.2671660424469413,0.7677902621722846,1.104868913857678,5.7553058676654185,2.7340823970037453,1.1235955056179776,4.475655430711611,3.0087390761548067,3.214731585518102,4.157303370786517,5.855181023720349,1.8164794007490637,3.651685393258427,3.9325842696629216,4.912609238451935,6.054931335830212,3.2709113607990012,2.4219725343320846,3.383270911360799,3.0149812734082393,1.8289637952559301,5.68039950062422,3.607990012484395,2.4656679151061174,5.880149812734083,1.8414481897627966,3.420724094881398,3.7078651685393256,3.9887640449438204,5.730337078651686,3.6267166042446943,5.6242197253433215,6.129837702871411,4.16354556803995,2.340823970037453,0.9800249687890138,1.3108614232209737,5.767790262172285,3.3895131086142323,2.571785268414482,0.9987515605493134,5.961298377028713,4.151061173533084,5.149812734082397,1.4856429463171037,3.6017478152309614,2.990012484394507,5.468164794007491,0.49063670411985016,1.941323345817728,1.8601747815230962,2.2347066167290888,5.068664169787765,0.7303370786516854,4.887640449438202,4.450686641697877,4.18227215980025, +3.714107365792759,5.143570536828964,2.184769038701623,5.3620474406991265,3.639200998751561,3.7702871410736583,0.7053682896379525,3.3583021223470664,0.9675405742821472,2.958801498127341,3.7078651685393256,1.2796504369538078,0.39825218476903873,0.3096129837702871,1.6978776529338326,5.9113607990012484,4.544319600499376,2.82147315855181,2.009987515605493,1.6978776529338326,3.951310861423221,5.293383270911361,3.0149812734082393,5.536828963795256,4.856429463171036,1.0049937578027466,0.6803995006242198,0.7116104868913858,1.8227215980024971,4.107365792759051,0.29712858926342073,0.9612983770287141,5.143570536828964,4.044943820224719,1.3670411985018727,2.634207240948814,0.7865168539325842,6.242197253433209,4.3632958801498125,0.7553058676654182,0.7428214731585518,5.0,3.8639200998751564,1.2983770287141074,0.7927590511860175,1.1298377028714106,5.786516853932584,2.7715355805243447,1.161048689138577,4.506866416978776,3.0399500624219726,3.245942571785269,4.188514357053683,5.892634207240949,1.8414481897627966,3.6704119850187267,3.9637952559300875,4.950062421972534,6.086142322097379,3.295880149812734,2.446941323345818,3.4019975031210987,3.046192259675406,1.8539325842696628,5.711610486891385,3.6329588014981273,2.4906367041198503,5.8988764044943816,1.8664169787765295,3.4456928838951315,3.7390761548064915,4.019975031210986,5.7553058676654185,3.651685393258427,5.655430711610487,6.1485642946317105,4.18227215980025,2.3720349563046192,1.0049937578027466,1.348314606741573,5.805243445692884,3.420724094881398,2.602996254681648,1.0237203495630463,5.992509363295881,4.176029962546816,5.174781523096129,1.5168539325842696,3.6267166042446943,3.0212234706616727,5.499375780274657,0.5149812734082396,1.9725343320848938,1.8851435705368291,2.2659176029962547,5.106117353308365,0.7615480649188515,4.918851435705368,4.475655430711611,4.207240948813983, +3.745318352059925,5.174781523096129,2.215980024968789,5.3870162297128585,3.6641697877652937,3.7952559300873907,0.7240948813982522,3.383270911360799,0.9987515605493134,2.977528089887641,3.7265917602996255,1.3108614232209737,0.4213483146067416,0.33957553058676654,1.7228464419475658,5.942571785268415,4.575530586766542,2.8464419475655434,2.034956304619226,1.7228464419475658,3.982521847690387,5.324594257178527,3.0399500624219726,5.568039950062421,4.887640449438202,1.0362047440699127,0.7053682896379525,0.7365792759051186,1.8539325842696628,4.132334581772784,0.32209737827715357,0.9987515605493134,5.168539325842697,4.069912609238452,1.3857677902621723,2.6591760299625467,0.8177278401997503,6.30461922596754,4.388264669163545,0.7740324594257179,0.7677902621722846,5.0187265917602994,3.888888888888889,1.3358302122347065,0.8239700374531835,1.161048689138577,5.81772784019975,2.8027465667915106,1.1922596754057428,4.538077403245943,3.0649188514357055,3.2833957553058677,4.213483146067416,5.930087390761548,1.8664169787765295,3.6953807740324596,3.9887640449438204,4.987515605493134,6.111111111111111,3.320848938826467,2.4656679151061174,3.4269662921348316,3.0836454431960054,1.8726591760299625,5.736579275905119,3.651685393258427,2.5093632958801497,5.9238451935081144,1.8913857677902621,3.470661672908864,3.7702871410736583,4.057428214731585,5.774032459425719,3.6766541822721597,5.686641697877653,6.167290886392011,4.200998751560549,2.4032459425717856,1.0299625468164793,1.3795255930087391,5.848938826466916,3.451935081148564,2.634207240948814,1.042446941323346,6.023720349563047,4.200998751560549,5.199750312109863,1.5480649188514357,3.651685393258427,3.0524344569288386,5.524344569288389,0.5387016229712859,2.00374531835206,1.9101123595505618,2.2971285892634206,5.149812734082397,0.7990012484394506,4.950062421972534,4.500624219725343,4.225967540574282, +3.776529338327091,5.212234706616729,2.253433208489388,5.418227215980025,3.689138576779026,3.81398252184769,0.7490636704119851,3.408239700374532,1.0237203495630463,3.0024968789013733,3.745318352059925,1.34207240948814,0.44382022471910115,0.36953807740324596,1.7415730337078652,5.97378277153558,4.606741573033708,2.8776529338327093,2.0599250936329585,1.7415730337078652,4.00749063670412,5.355805243445693,3.0649188514357055,5.599250936329588,4.918851435705368,1.0611735330836456,0.7365792759051186,0.7615480649188515,1.8851435705368291,4.157303370786517,0.3464419475655431,1.0299625468164793,5.187265917602996,4.0886392009987516,1.410736579275905,2.6779026217228465,0.8551810237203495,6.30461922596754,4.413233458177278,0.7927590511860175,0.7927590511860175,5.043695380774032,3.920099875156055,1.3670411985018727,0.8551810237203495,1.1860174781523096,5.848938826466916,2.8339575530586765,1.229712858926342,4.563046192259676,3.0961298377028714,3.3146067415730336,4.238451935081149,5.961298377028713,1.8913857677902621,3.714107365792759,4.019975031210986,5.024968789013733,6.1360799001248445,3.352059925093633,2.4843945068664173,3.4456928838951315,3.114856429463171,1.8976279650436954,5.767790262172285,3.6766541822721597,2.5343320848938826,5.942571785268415,1.916354556803995,3.495630461922597,3.801498127340824,4.0886392009987516,5.799001248439451,3.7078651685393256,5.717852684144819,6.192259675405743,4.225967540574282,2.4406991260923845,1.0549313358302121,1.4169787765293382,5.8863920099875156,3.4831460674157304,2.671660424469413,1.0674157303370786,6.054931335830212,4.225967540574282,5.224719101123595,1.5792759051186018,3.6766541822721597,3.089887640449438,5.555555555555556,0.5630461922596754,2.034956304619226,1.941323345817728,2.328339575530587,5.187265917602996,0.8302122347066168,4.975031210986267,4.531835205992509,4.250936329588015, +3.801498127340824,5.243445692883895,2.2846441947565546,5.443196004993759,3.714107365792759,3.8389513108614235,0.7740324594257179,3.4332084893882646,1.0549313358302121,3.027465667915106,3.7702871410736583,1.373283395755306,0.466916354556804,0.3995006242197253,1.766541822721598,5.998751560549313,4.637952559300874,2.908863920099875,2.084893882646692,1.766541822721598,4.038701622971286,5.3870162297128585,3.089887640449438,5.630461922596755,4.943820224719102,1.0923845193508115,0.7677902621722846,0.7865168539325842,1.916354556803995,4.18227215980025,0.3714107365792759,1.0611735330836456,5.212234706616729,4.1136079900124844,1.4294631710362047,2.702871410736579,0.8863920099875156,6.30461922596754,4.438202247191011,0.8114856429463172,0.8177278401997503,5.062421972534332,3.9450686641697876,1.3982521847690388,0.8801498127340824,1.2109862671660423,5.880149812734083,2.871410736579276,1.260923845193508,4.594257178526841,3.1210986267166043,3.352059925093633,4.263420724094882,5.998751560549313,1.916354556803995,3.732833957553059,4.051186017478152,5.062421972534332,6.161048689138577,3.3770287141073654,2.5031210986267167,3.464419475655431,3.1460674157303368,1.916354556803995,5.799001248439451,3.6953807740324596,2.5530586766541825,5.967540574282147,1.941323345817728,3.5205992509363297,3.83270911360799,4.119850187265917,5.823970037453184,3.732833957553059,5.749063670411985,6.210986267166042,4.244694132334582,2.471910112359551,1.079900124843945,1.4544319600499376,5.9238451935081144,3.5143570536828963,2.702871410736579,1.0861423220973783,6.086142322097379,4.244694132334582,5.249687890137328,1.6104868913857677,3.701622971285893,3.1210986267166043,5.586766541822722,0.5867665418227216,2.066167290886392,1.9662921348314608,2.3657927590511862,5.224719101123595,0.867665418227216,5.0062421972534334,4.556803995006242,4.275905118601748, +3.83270911360799,5.274656679151062,2.3158551810237205,5.474406991260924,3.7390761548064915,3.857677902621723,0.7927590511860175,3.4581772784019975,1.0861423220973783,3.046192259675406,3.7890137328339577,1.3982521847690388,0.4893882646691636,0.42946317103620474,1.7915106117353308,6.029962546816479,4.66916354556804,2.9400749063670415,2.1098626716604243,1.7852684144818978,4.069912609238452,5.418227215980025,3.114856429463171,5.66167290886392,4.975031210986267,1.1235955056179776,0.7990012484394506,0.8114856429463172,1.9475655430711611,4.207240948813983,0.39637952559300876,1.0986267166042447,5.230961298377029,4.132334581772784,1.4544319600499376,2.727840199750312,0.9238451935081149,6.367041198501872,4.456928838951311,0.8364544319600499,0.8426966292134832,5.087390761548065,3.970037453183521,1.4294631710362047,0.9113607990012486,1.2421972534332086,5.9113607990012484,2.902621722846442,1.2921348314606742,4.6254681647940075,3.15230961298377,3.383270911360799,4.288389513108614,6.036204744069912,1.9350811485642945,3.7578027465667914,4.0761548064918856,5.099875156054932,6.186017478152309,3.4019975031210987,2.521847690387016,3.4893882646691634,3.1772784019975036,1.941323345817728,5.830212234706617,3.7203495630461925,2.578027465667915,5.986267166042447,1.9662921348314608,3.545568039950062,3.8639200998751564,4.151061173533084,5.848938826466916,3.7578027465667914,5.7802746566791505,6.229712858926342,4.263420724094882,2.5093632958801497,1.104868913857678,1.4856429463171037,5.961298377028713,3.545568039950062,2.7340823970037453,1.1111111111111112,6.117353308364544,4.269662921348314,5.274656679151062,1.6416978776529338,3.7265917602996255,3.15230961298377,5.611735330836455,0.6104868913857677,2.097378277153558,1.9912609238451935,2.397003745318352,5.262172284644195,0.898876404494382,5.0374531835206,4.581772784019975,4.294631710362047, +3.8639200998751564,5.312109862671661,2.35330836454432,5.499375780274657,3.764044943820225,3.882646691635456,0.8177278401997503,3.4893882646691634,1.1173533083645444,3.0711610486891385,3.81398252184769,1.4294631710362047,0.5124843945068664,0.45942571785268416,1.8164794007490637,6.061173533083646,4.700374531835206,2.9712858926342074,2.128589263420724,1.8102372034956304,4.094881398252185,5.449438202247191,3.139825218476904,5.692883895131087,5.0062421972534334,1.1485642946317103,0.8302122347066168,0.8364544319600499,1.978776529338327,4.2322097378277155,0.4207240948813982,1.1298377028714106,5.2559300873907615,4.157303370786517,1.4794007490636705,2.746566791510612,0.9550561797752809,6.367041198501872,4.4818976279650435,0.8551810237203495,0.8614232209737829,5.106117353308365,3.9950062421972534,1.466916354556804,0.9425717852684146,1.2671660424469413,5.942571785268415,2.9400749063670415,1.3295880149812733,4.656679151061174,3.183520599250936,3.4144818976279647,4.31960049937578,6.067415730337078,1.9600499375780276,3.776529338327091,4.107365792759051,5.1373283395755305,6.210986267166042,3.4332084893882646,2.5405742821473156,3.508114856429463,3.2084893882646695,1.9662921348314608,5.861423220973783,3.745318352059925,2.596754057428215,6.01123595505618,1.9912609238451935,3.5705368289637955,3.8951310861423223,4.188514357053683,5.867665418227216,3.7890137328339577,5.811485642946318,6.242197253433209,4.288389513108614,2.5405742821473156,1.1298377028714106,1.523096129837703,6.004993757802747,3.576779026217228,2.7715355805243447,1.1298377028714106,6.1485642946317105,4.294631710362047,5.299625468164794,1.6729088639200997,3.7515605493133584,3.183520599250936,5.64294631710362,0.6367041198501873,2.128589263420724,2.0224719101123596,2.428214731585518,5.305867665418227,0.9363295880149812,5.068664169787765,4.606741573033708,4.31960049937578, +3.8951310861423223,5.343320848938826,2.3845193508114857,5.5305867665418225,3.7890137328339577,3.9076154806491883,0.8426966292134832,3.5143570536828963,1.1423220973782773,3.0961298377028714,3.83270911360799,1.4606741573033708,0.534956304619226,0.4893882646691636,1.8414481897627966,6.086142322097379,4.7315855181023725,3.0024968789013733,2.153558052434457,1.8289637952559301,4.1260923845193505,5.480649188514358,3.1647940074906367,5.724094881398252,5.0374531835206,1.1797752808988764,0.8614232209737829,0.8614232209737829,2.016229712858926,4.257178526841448,0.44569288389513106,1.161048689138577,5.274656679151062,4.176029962546816,1.4981273408239701,2.7715355805243447,0.9925093632958802,6.429463171036204,4.506866416978776,0.8739076154806492,0.8863920099875156,5.131086142322098,4.02621722846442,1.4981273408239701,0.9737827715355806,1.2921348314606742,5.97378277153558,2.9712858926342074,1.3607990012484397,4.681647940074906,3.2084893882646695,3.451935081148564,4.344569288389513,6.104868913857677,1.9850187265917605,3.7952559300873907,4.132334581772784,5.174781523096129,6.235955056179775,3.4581772784019975,2.5593008739076155,3.5268414481897628,3.2397003745318353,1.9850187265917605,5.892634207240949,3.764044943820225,2.6217228464419473,6.029962546816479,2.016229712858926,3.595505617977528,3.926342072409488,4.219725343320849,5.892634207240949,3.81398252184769,5.842696629213483,6.242197253433209,4.307116104868914,2.578027465667915,1.1548064918851435,1.554307116104869,6.0424469413233455,3.607990012484395,2.8027465667915106,1.1548064918851435,6.179775280898876,4.31960049937578,5.324594257178527,1.704119850187266,3.776529338327091,3.214731585518102,5.674157303370786,0.6616729088639202,2.15980024968789,2.0474406991260925,2.4656679151061174,5.343320848938826,0.9675405742821472,5.099875156054932,4.631710362047441,4.344569288389513, +3.926342072409488,5.3745318352059925,2.4157303370786516,5.555555555555556,3.81398252184769,3.926342072409488,0.8614232209737829,3.5393258426966296,1.1735330836454432,3.114856429463171,3.857677902621723,1.4918851435705367,0.5580524344569288,0.519350811485643,1.8664169787765295,6.117353308364544,4.762796504369538,3.033707865168539,2.1785268414481895,1.8476903870162298,4.157303370786517,5.511860174781523,3.1897627965043696,5.7553058676654185,5.062421972534332,1.2109862671660423,0.8863920099875156,0.8863920099875156,2.0474406991260925,4.282147315855181,0.4700374531835206,1.198501872659176,5.299625468164794,4.200998751560549,1.523096129837703,2.7965043695380776,1.0237203495630463,6.429463171036204,4.531835205992509,0.898876404494382,0.9113607990012486,5.149812734082397,4.051186017478152,1.529338327091136,0.9987515605493134,1.3233458177278403,6.004993757802747,3.0024968789013733,1.3982521847690388,4.712858926342073,3.2397003745318353,3.4831460674157304,4.369538077403246,6.142322097378277,2.009987515605493,3.8202247191011236,4.16354556803995,5.212234706616729,6.242197253433209,3.4831460674157304,2.578027465667915,3.5518102372034956,3.2709113607990012,2.009987515605493,5.9238451935081144,3.7890137328339577,2.640449438202247,6.054931335830212,2.0411985018726595,3.620474406991261,3.957553058676654,4.250936329588015,5.917602996254682,3.8451935081148565,5.8739076154806495,6.30461922596754,4.325842696629214,2.6092384519350813,1.1797752808988764,1.591760299625468,6.079900124843945,3.639200998751561,2.8339575530586765,1.1735330836454432,6.210986267166042,4.344569288389513,5.34956304619226,1.735330836454432,3.801498127340824,3.245942571785269,5.705368289637952,0.6803995006242198,2.1910112359550564,2.0724094881398254,2.4968789013732833,5.380774032459426,0.9987515605493134,5.131086142322098,4.656679151061174,4.369538077403246, +3.957553058676654,5.411985018726591,2.453183520599251,5.586766541822722,3.8389513108614235,3.951310861423221,0.8863920099875156,3.564294631710362,1.2047440699126093,3.139825218476904,3.8764044943820224,1.5168539325842696,0.5811485642946317,0.548689138576779,1.8913857677902621,6.1485642946317105,4.794007490636704,3.0649188514357055,2.203495630461923,1.8726591760299625,4.18227215980025,5.543071161048689,3.214731585518102,5.786516853932584,5.093632958801498,1.2359550561797754,0.9176029962546817,0.9113607990012486,2.0786516853932584,4.307116104868914,0.4950062421972534,1.229712858926342,5.318352059925093,4.225967540574282,1.5418227215980027,2.82147315855181,1.0611735330836456,6.491885143570538,4.556803995006242,0.9176029962546817,0.9363295880149812,5.174781523096129,4.0761548064918856,1.5605493133583022,1.0299625468164793,1.348314606741573,6.036204744069912,3.0399500624219726,1.4294631710362047,4.7440699126092385,3.2646691635455682,3.5205992509363297,4.394506866416979,6.173533083645444,2.034956304619226,3.8389513108614235,4.188514357053683,5.249687890137328,6.30461922596754,3.5143570536828963,2.596754057428215,3.5705368289637955,3.3021223470661676,2.0287141073657926,5.955056179775282,3.8077403245942576,2.66541822721598,6.073657927590512,2.0599250936329585,3.6454431960049942,3.982521847690387,4.282147315855181,5.942571785268415,3.870162297128589,5.905118601747815,6.30461922596754,4.3508114856429465,2.6466916354556806,1.2047440699126093,1.6229712858926344,6.117353308364544,3.6704119850187267,2.871410736579276,1.198501872659176,6.242197253433209,4.369538077403246,5.3745318352059925,1.766541822721598,3.826466916354557,3.2833957553058677,5.730337078651686,0.7053682896379525,2.2222222222222223,2.097378277153558,2.5280898876404496,5.424469413233458,1.0362047440699127,5.15605493133583,4.681647940074906,4.388264669163545, +3.9887640449438204,5.443196004993759,2.4843945068664173,5.611735330836455,3.8639200998751564,3.9762796504369535,0.9113607990012486,3.589263420724095,1.2359550561797754,3.1647940074906367,3.8951310861423223,1.5480649188514357,0.6036204744069913,0.5786516853932584,1.916354556803995,6.179775280898876,4.825218476903871,3.0961298377028714,2.2284644194756553,1.8913857677902621,4.213483146067416,5.574282147315855,3.233458177278402,5.81772784019975,5.1248439450686645,1.2671660424469413,0.9488139825218477,0.9363295880149812,2.1098626716604243,4.332084893882647,0.5199750312109862,1.2671660424469413,5.337078651685393,4.244694132334582,1.5667915106117354,2.84019975031211,1.0923845193508115,6.491885143570538,4.581772784019975,0.9363295880149812,0.9612983770287141,5.199750312109863,4.1011235955056184,1.5980024968789013,1.0611735330836456,1.373283395755306,6.067415730337078,3.0711610486891385,1.4606741573033708,4.775280898876405,3.295880149812734,3.5518102372034956,4.419475655430712,6.210986267166042,2.0599250936329585,3.857677902621723,4.219725343320849,5.287141073657928,6.30461922596754,3.5393258426966296,2.6217228464419473,3.589263420724095,3.3333333333333335,2.0536828963795255,5.986267166042447,3.83270911360799,2.68414481897628,6.098626716604246,2.084893882646692,3.6704119850187267,4.013732833957553,4.31960049937578,5.961298377028713,3.8951310861423223,5.936329588014981,6.30461922596754,4.369538077403246,2.6779026217228465,1.229712858926342,1.6604244694132335,6.154806491885144,3.701622971285893,2.902621722846442,1.2172284644194757,6.30461922596754,4.394506866416979,5.399500624219725,1.797752808988764,3.8514357053682895,3.3146067415730336,5.761548064918852,0.7303370786516854,2.253433208489388,2.128589263420724,2.565543071161049,5.461922596754057,1.0674157303370786,5.187265917602996,4.70661672908864,4.413233458177278, +4.019975031210986,5.474406991260924,2.521847690387016,5.64294631710362,3.888888888888889,3.9950062421972534,0.9300873907615481,3.620474406991261,1.260923845193508,3.183520599250936,3.920099875156055,1.5792759051186018,0.6242197253433208,0.6086142322097379,1.941323345817728,6.20474406991261,4.856429463171036,3.1273408239700373,2.253433208489388,1.916354556803995,4.244694132334582,5.605493133583021,3.258426966292135,5.848938826466916,5.149812734082397,1.2983770287141074,0.9800249687890138,0.9612983770287141,2.1410736579275906,4.357053682896379,0.5443196004993758,1.2983770287141074,5.3620474406991265,4.269662921348314,1.591760299625468,2.865168539325843,1.1298377028714106,6.554307116104869,4.606741573033708,0.9550561797752809,0.9862671660424469,5.218476903870163,4.132334581772784,1.6292134831460674,1.0861423220973783,1.404494382022472,6.098626716604246,3.102372034956305,1.4981273408239701,4.800249687890138,3.3270911360799,3.589263420724095,4.450686641697877,6.242197253433209,2.0786516853932584,3.882646691635456,4.244694132334582,5.324594257178527,6.367041198501872,3.564294631710362,2.640449438202247,3.6142322097378274,3.3645443196004994,2.0786516853932584,6.0174781523096135,3.857677902621723,2.7091136079900124,6.117353308364544,2.1098626716604243,3.6953807740324596,4.044943820224719,4.3508114856429465,5.986267166042447,3.926342072409488,5.967540574282147,6.367041198501872,4.388264669163545,2.715355805243446,1.2484394506866416,1.6978776529338326,6.198501872659176,3.732833957553059,2.933832709113608,1.2359550561797754,6.30461922596754,4.413233458177278,5.424469413233458,1.8227215980024971,3.8764044943820224,3.3458177278401995,5.792759051186017,0.7553058676654182,2.2846441947565546,2.153558052434457,2.596754057428215,5.499375780274657,1.104868913857678,5.218476903870163,4.737827715355805,4.438202247191011, +4.044943820224719,5.511860174781523,2.5530586766541825,5.667915106117353,3.9138576779026217,4.019975031210986,0.9550561797752809,3.6454431960049942,1.2921348314606742,3.2084893882646695,3.938826466916354,1.6042446941323347,0.6491885143570537,0.6367041198501873,1.9662921348314608,6.235955056179775,4.887640449438202,3.1585518102372037,2.278401997503121,1.9350811485642945,4.269662921348314,5.64294631710362,3.2833957553058677,5.880149812734083,5.181023720349563,1.3233458177278403,1.0112359550561798,0.9862671660424469,2.1722846441947565,4.382022471910113,0.5692883895131086,1.3295880149812733,5.380774032459426,4.288389513108614,1.6104868913857677,2.8901373283395753,1.16729088639201,6.554307116104869,4.6254681647940075,0.9800249687890138,1.0112359550561798,5.243445692883895,4.157303370786517,1.6604244694132335,1.1173533083645444,1.4294631710362047,6.129837702871411,3.139825218476904,1.529338327091136,4.831460674157303,3.352059925093633,3.620474406991261,4.475655430711611,6.30461922596754,2.1036204744069913,3.9013732833957557,4.275905118601748,5.3620474406991265,6.367041198501872,3.595505617977528,2.6591760299625467,3.6329588014981273,3.3957553058676653,2.097378277153558,6.048689138576779,3.8764044943820224,2.727840199750312,6.1360799001248445,2.134831460674157,3.7203495630461925,4.0761548064918856,4.382022471910113,6.01123595505618,3.951310861423221,5.998751560549313,6.367041198501872,4.413233458177278,2.746566791510612,1.2734082397003745,1.7290886392009988,6.235955056179775,3.764044943820225,2.9712858926342074,1.260923845193508,6.367041198501872,4.438202247191011,5.449438202247191,1.8539325842696628,3.9013732833957557,3.3770287141073654,5.81772784019975,0.7802746566791511,2.3158551810237205,2.1785268414481895,2.6279650436953808,5.536828963795256,1.136079900124844,5.249687890137328,4.762796504369538,4.463171036204744, +4.0761548064918856,5.543071161048689,2.5842696629213484,5.69912609238452,3.938826466916354,4.044943820224719,0.9800249687890138,3.6704119850187267,1.3233458177278403,3.233458177278402,3.9637952559300875,1.6354556803995006,0.6741573033707865,0.6679151061173533,1.9912609238451935,6.242197253433209,4.918851435705368,3.1897627965043696,2.303370786516854,1.9600499375780276,4.300873907615481,5.674157303370786,3.3083645443196006,5.9113607990012484,5.212234706616729,1.3545568039950062,1.0362047440699127,1.0112359550561798,2.203495630461923,4.406991260923846,0.5942571785268415,1.3670411985018727,5.405742821473158,4.313358302122348,1.6354556803995006,2.9151061173533086,1.198501872659176,6.616729088639201,4.65043695380774,0.9987515605493134,1.0299625468164793,5.262172284644195,4.18227215980025,1.6978776529338326,1.1485642946317103,1.4544319600499376,6.161048689138577,3.17103620474407,1.5605493133583022,4.8626716604244695,3.383270911360799,3.651685393258427,4.500624219725343,6.30461922596754,2.128589263420724,3.920099875156055,4.300873907615481,5.399500624219725,6.367041198501872,3.620474406991261,2.6779026217228465,3.651685393258427,3.4332084893882646,2.122347066167291,6.079900124843945,3.9013732833957557,2.752808988764045,6.161048689138577,2.15980024968789,3.745318352059925,4.107365792759051,4.413233458177278,6.036204744069912,3.9762796504369535,6.029962546816479,6.367041198501872,4.431960049937578,2.7840199750312107,1.2983770287141074,1.766541822721598,6.30461922596754,3.7952559300873907,3.0024968789013733,1.2796504369538078,6.367041198501872,4.463171036204744,5.480649188514358,1.8851435705368291,3.926342072409488,3.408239700374532,5.848938826466916,0.8052434456928839,2.3470661672908864,2.203495630461923,2.66541822721598,5.580524344569288,1.1735330836454432,5.280898876404494,4.787765293383271,4.4818976279650435, +4.107365792759051,5.574282147315855,2.6217228464419473,5.724094881398252,3.9637952559300875,4.063670411985019,0.9987515605493134,3.6953807740324596,1.3545568039950062,3.2521847690387014,3.982521847690387,1.6666666666666667,0.6928838951310862,0.6991260923845194,2.016229712858926,6.30461922596754,4.950062421972534,3.2209737827715355,2.328339575530587,1.978776529338327,4.332084893882647,5.705368289637952,3.3333333333333335,5.942571785268415,5.237203495630462,1.3857677902621723,1.0674157303370786,1.0362047440699127,2.2347066167290888,4.431960049937578,0.618601747815231,1.3982521847690388,5.424469413233458,4.332084893882647,1.6541822721598003,2.933832709113608,1.2359550561797754,6.616729088639201,4.675405742821473,1.017478152309613,1.0549313358302121,5.287141073657928,4.213483146067416,1.7290886392009988,1.1797752808988764,1.4856429463171037,6.192259675405743,3.202247191011236,1.5980024968789013,4.893882646691636,3.408239700374532,3.689138576779026,4.525593008739076,6.367041198501872,2.153558052434457,3.9450686641697876,4.332084893882647,5.436953807740325,6.429463171036204,3.6454431960049942,2.696629213483146,3.6766541822721597,3.464419475655431,2.1410736579275906,6.111111111111111,3.920099875156055,2.7715355805243447,6.179775280898876,2.184769038701623,3.7702871410736583,4.138576779026217,4.444444444444445,6.054931335830212,4.00749063670412,6.061173533083646,6.429463171036204,4.450686641697877,2.8152309612983775,1.3233458177278403,1.797752808988764,6.30461922596754,3.826466916354557,3.0399500624219726,1.3046192259675407,6.429463171036204,4.488139825218477,5.50561797752809,1.916354556803995,3.951310861423221,3.4456928838951315,5.880149812734083,0.8239700374531835,2.3782771535580522,2.2347066167290888,2.696629213483146,5.617977528089888,1.2047440699126093,5.312109862671661,4.812734082397004,4.506866416978776, +4.138576779026217,5.611735330836455,2.6529338327091136,5.7553058676654185,3.9887640449438204,4.0886392009987516,1.0237203495630463,3.7265917602996255,1.3795255930087391,3.2771535580524347,4.00749063670412,1.6978776529338326,0.717852684144819,0.7303370786516854,2.0411985018726595,6.30461922596754,4.9812734082397006,3.2521847690387014,2.35330836454432,2.00374531835206,4.357053682896379,5.736579275905119,3.3583021223470664,5.967540574282147,5.268414481897628,1.410736579275905,1.0986267166042447,1.0611735330836456,2.2659176029962547,4.456928838951311,0.6429463171036205,1.4294631710362047,5.449438202247191,4.357053682896379,1.6791510611735332,2.958801498127341,1.2671660424469413,6.679151061173534,4.700374531835206,1.042446941323346,1.079900124843945,5.305867665418227,4.238451935081149,1.7602996254681649,1.2047440699126093,1.5106117353308364,6.223470661672909,3.2397003745318353,1.6292134831460674,4.918851435705368,3.439450686641698,3.7203495630461925,4.55056179775281,6.367041198501872,2.1785268414481895,3.9637952559300875,4.3632958801498125,5.474406991260924,6.429463171036204,3.6766541822721597,2.715355805243446,3.6953807740324596,3.495630461922597,2.1660424469413235,6.1360799001248445,3.9450686641697876,2.7965043695380776,6.20474406991261,2.209737827715356,3.7952559300873907,4.169787765293384,4.4818976279650435,6.079900124843945,4.032459425717852,6.092384519350812,6.429463171036204,4.475655430711611,2.8464419475655434,1.348314606741573,1.8352059925093633,6.367041198501872,3.857677902621723,3.0711610486891385,1.3233458177278403,6.429463171036204,4.51310861423221,5.5305867665418225,1.9475655430711611,3.9762796504369535,3.4769038701622974,5.905118601747815,0.8489388264669163,2.4094881398252186,2.259675405742821,2.727840199750312,5.655430711610487,1.2359550561797754,5.337078651685393,4.837702871410737,4.531835205992509, +4.169787765293384,5.64294631710362,2.68414481897628,5.7802746566791505,4.013732833957553,4.1136079900124844,1.048689138576779,3.7515605493133584,1.410736579275905,3.3021223470661676,4.02621722846442,1.7228464419475658,0.7428214731585518,0.7553058676654182,2.066167290886392,6.367041198501872,5.012484394506866,3.2833957553058677,2.3782771535580522,2.0224719101123596,4.388264669163545,5.767790262172285,3.383270911360799,5.998751560549313,5.299625468164794,1.4419475655430714,1.1298377028714106,1.0861423220973783,2.2971285892634206,4.4818976279650435,0.6679151061173533,1.466916354556804,5.468164794007491,4.382022471910113,1.704119850187266,2.9837702871410734,1.3046192259675407,6.679151061173534,4.725343320848939,1.0611735330836456,1.104868913857678,5.33083645443196,4.263420724094882,1.7915106117353308,1.2359550561797754,1.5355805243445693,6.242197253433209,3.2709113607990012,1.6666666666666667,4.950062421972534,3.464419475655431,3.7578027465667914,4.581772784019975,6.429463171036204,2.1972534332084894,3.9887640449438204,4.388264669163545,5.511860174781523,6.491885143570538,3.701622971285893,2.7340823970037453,3.714107365792759,3.5268414481897628,2.184769038701623,6.167290886392011,3.9637952559300875,2.8152309612983775,6.223470661672909,2.2347066167290888,3.8202247191011236,4.200998751560549,4.51310861423221,6.104868913857677,4.057428214731585,6.123595505617978,6.429463171036204,4.49438202247191,2.8838951310861427,1.373283395755306,1.8726591760299625,6.367041198501872,3.888888888888889,3.102372034956305,1.348314606741573,6.491885143570538,4.538077403245943,5.555555555555556,1.978776529338327,4.001248439450687,3.508114856429463,5.936329588014981,0.8739076154806492,2.4406991260923845,2.2846441947565546,2.7590511860174782,5.69912609238452,1.2734082397003745,5.36828963795256,4.8626716604244695,4.556803995006242, +4.200998751560549,5.674157303370786,2.7215980024968793,5.811485642946318,4.038701622971286,4.132334581772784,1.0674157303370786,3.776529338327091,1.4419475655430714,3.320848938826467,4.044943820224719,1.7540574282147314,0.7615480649188515,0.7865168539325842,2.091136079900125,6.367041198501872,5.043695380774032,3.3146067415730336,2.4032459425717856,2.0474406991260925,4.419475655430712,5.799001248439451,3.408239700374532,6.029962546816479,5.324594257178527,1.4731585518102372,1.161048689138577,1.1111111111111112,2.328339575530587,4.506866416978776,0.6928838951310862,1.4981273408239701,5.493133583021224,4.400749063670412,1.7228464419475658,3.0087390761548067,1.3358302122347065,6.741573033707866,4.750312109862672,1.079900124843945,1.1298377028714106,5.34956304619226,4.288389513108614,1.8289637952559301,1.2671660424469413,1.5605493133583022,6.30461922596754,3.3083645443196006,1.6978776529338326,4.9812734082397006,3.495630461922597,3.7890137328339577,4.606741573033708,6.429463171036204,2.2222222222222223,4.00749063670412,4.419475655430712,5.549313358302123,6.491885143570538,3.7265917602996255,2.752808988764045,3.7390761548064915,3.5580524344569286,2.209737827715356,6.198501872659176,3.9887640449438204,2.84019975031211,6.242197253433209,2.259675405742821,3.8451935081148565,4.2322097378277155,4.544319600499376,6.123595505617978,4.0886392009987516,6.1485642946317105,6.491885143570538,4.519350811485642,2.9151061173533086,1.3982521847690388,1.9038701622971288,6.429463171036204,3.920099875156055,3.139825218476904,1.3670411985018727,6.491885143570538,4.563046192259676,5.580524344569288,2.009987515605493,4.02621722846442,3.5393258426966296,5.967540574282147,0.898876404494382,2.4656679151061174,2.3158551810237205,2.7965043695380776,5.736579275905119,1.3046192259675407,5.399500624219725,4.887640449438202,4.575530586766542, +4.2322097378277155,5.711610486891385,2.752808988764045,5.836454431960051,4.063670411985019,4.157303370786517,1.0923845193508115,3.801498127340824,1.4731585518102372,3.3458177278401995,4.069912609238452,1.7852684144818978,0.7865168539325842,0.8177278401997503,2.1161048689138577,6.429463171036204,5.074906367041199,3.3458177278401995,2.428214731585518,2.066167290886392,4.444444444444445,5.830212234706617,3.4332084893882646,6.061173533083646,5.355805243445693,1.4981273408239701,1.1922596754057428,1.136079900124844,2.3657927590511862,4.525593008739076,0.717852684144819,1.5355805243445693,5.511860174781523,4.425717852684145,1.7478152309612984,3.027465667915106,1.373283395755306,6.741573033707866,4.769038701622971,1.104868913857678,1.1548064918851435,5.3745318352059925,4.31960049937578,1.8601747815230962,1.2921348314606742,1.591760299625468,6.30461922596754,3.339575530586767,1.7290886392009988,5.012484394506866,3.5268414481897628,3.826466916354557,4.631710362047441,6.491885143570538,2.247191011235955,4.02621722846442,4.444444444444445,5.586766541822722,6.491885143570538,3.7578027465667914,2.7715355805243447,3.7578027465667914,3.589263420724095,2.2347066167290888,6.229712858926342,4.013732833957553,2.8589263420724094,6.242197253433209,2.2846441947565546,3.870162297128589,4.263420724094882,4.575530586766542,6.1485642946317105,4.1136079900124844,6.179775280898876,6.491885143570538,4.538077403245943,2.9525593008739075,1.4232209737827717,1.941323345817728,6.491885143570538,3.9450686641697876,3.17103620474407,1.3920099875156053,6.554307116104869,4.581772784019975,5.605493133583021,2.0411985018726595,4.057428214731585,3.5705368289637955,5.992509363295881,0.9238451935081149,2.4968789013732833,2.340823970037453,2.8277153558052435,5.774032459425719,1.34207240948814,5.430711610486892,4.912609238451935,4.600499375780275, +4.263420724094882,5.742821473158552,2.7840199750312107,5.867665418227216,4.0886392009987516,4.18227215980025,1.1173533083645444,3.826466916354557,1.4981273408239701,3.370786516853933,4.0886392009987516,1.8164794007490637,0.8114856429463172,0.8489388264669163,2.1410736579275906,6.429463171036204,5.106117353308365,3.3770287141073654,2.453183520599251,2.091136079900125,4.475655430711611,5.861423220973783,3.4581772784019975,6.092384519350812,5.3870162297128585,1.529338327091136,1.2172284644194757,1.161048689138577,2.397003745318352,4.55056179775281,0.7428214731585518,1.5667915106117354,5.5305867665418225,4.444444444444445,1.766541822721598,3.0524344569288386,1.404494382022472,6.803995006242197,4.794007490636704,1.1235955056179776,1.1735330836454432,5.393258426966292,4.344569288389513,1.8913857677902621,1.3233458177278403,1.616729088639201,6.367041198501872,3.370786516853933,1.766541822721598,5.0374531835206,3.5518102372034956,3.857677902621723,4.656679151061174,6.554307116104869,2.272159800249688,4.051186017478152,4.475655430711611,5.6242197253433215,6.554307116104869,3.7827715355805243,2.7965043695380776,3.776529338327091,3.620474406991261,2.253433208489388,6.242197253433209,4.032459425717852,2.8838951310861427,6.30461922596754,2.303370786516854,3.8951310861423223,4.294631710362047,4.612983770287141,6.173533083645444,4.138576779026217,6.210986267166042,6.491885143570538,4.556803995006242,2.9837702871410734,1.4481897627965044,1.9725343320848938,6.491885143570538,3.9762796504369535,3.202247191011236,1.410736579275905,6.554307116104869,4.606741573033708,5.630461922596755,2.0724094881398254,4.082397003745319,3.6017478152309614,6.023720349563047,0.9488139825218477,2.5280898876404496,2.3657927590511862,2.8589263420724094,5.811485642946318,1.373283395755306,5.461922596754057,4.943820224719102,4.6254681647940075, +4.288389513108614,5.774032459425719,2.82147315855181,5.892634207240949,4.1136079900124844,4.200998751560549,1.136079900124844,3.857677902621723,1.529338327091136,3.3895131086142323,4.1136079900124844,1.8414481897627966,0.8302122347066168,0.8801498127340824,2.1660424469413235,6.491885143570538,5.1373283395755305,3.408239700374532,2.471910112359551,2.1098626716604243,4.500624219725343,5.892634207240949,3.4769038701622974,6.123595505617978,5.418227215980025,1.5605493133583022,1.2484394506866416,1.1860174781523096,2.428214731585518,4.575530586766542,0.7677902621722846,1.5980024968789013,5.555555555555556,4.4694132334581775,1.7915106117353308,3.077403245942572,1.4419475655430714,6.803995006242197,4.818976279650437,1.1423220973782773,1.198501872659176,5.418227215980025,4.369538077403246,1.9225967540574282,1.3545568039950062,1.6416978776529338,6.367041198501872,3.408239700374532,1.797752808988764,5.068664169787765,3.5830212234706615,3.888888888888889,4.681647940074906,6.554307116104869,2.2971285892634206,4.069912609238452,4.500624219725343,5.66167290886392,6.554307116104869,3.8077403245942576,2.8152309612983775,3.801498127340824,3.651685393258427,2.278401997503121,6.30461922596754,4.057428214731585,2.902621722846442,6.30461922596754,2.328339575530587,3.920099875156055,4.325842696629214,4.644194756554308,6.198501872659176,4.169787765293384,6.242197253433209,6.554307116104869,4.581772784019975,3.0212234706616727,1.4731585518102372,2.009987515605493,6.554307116104869,4.00749063670412,3.2397003745318353,1.435705368289638,6.616729088639201,4.631710362047441,5.655430711610487,2.1036204744069913,4.107365792759051,3.639200998751561,6.054931335830212,0.9737827715355806,2.5593008739076155,2.3907615480649187,2.8963795255930087,5.855181023720349,1.410736579275905,5.493133583021224,4.9687890137328345,4.644194756554308, +4.31960049937578,5.805243445692884,2.852684144818976,5.9238451935081144,4.144818976279651,4.225967540574282,1.161048689138577,3.882646691635456,1.5605493133583022,3.4144818976279647,4.132334581772784,1.8726591760299625,0.8551810237203495,0.9051186017478152,2.1910112359550564,6.491885143570538,5.162297128589263,3.439450686641698,2.4968789013732833,2.128589263420724,4.531835205992509,5.9238451935081144,3.5018726591760303,6.154806491885144,5.443196004993759,1.585518102372035,1.2796504369538078,1.2109862671660423,2.459425717852684,4.600499375780275,0.7927590511860175,1.6354556803995006,5.574282147315855,4.488139825218477,1.8164794007490637,3.0961298377028714,1.4731585518102372,6.866416978776529,4.843945068664169,1.161048689138577,1.223470661672909,5.443196004993759,4.400749063670412,1.9600499375780276,1.3857677902621723,1.6729088639200997,6.429463171036204,3.439450686641698,1.8352059925093633,5.099875156054932,3.607990012484395,3.926342072409488,4.712858926342073,6.616729088639201,2.322097378277154,4.0886392009987516,4.531835205992509,5.69912609238452,6.616729088639201,3.8389513108614235,2.8339575530586765,3.8202247191011236,3.682896379525593,2.2971285892634206,6.30461922596754,4.0761548064918856,2.9275905118601746,6.30461922596754,2.35330836454432,3.9450686641697876,4.357053682896379,4.675405742821473,6.217228464419476,4.194756554307116,6.30461922596754,6.554307116104869,4.600499375780275,3.0524344569288386,1.4981273408239701,2.0411985018726595,6.554307116104869,4.038701622971286,3.2709113607990012,1.4544319600499376,6.616729088639201,4.656679151061174,5.68039950062422,2.134831460674157,4.132334581772784,3.6704119850187267,6.079900124843945,0.9925093632958802,2.5905118601747814,2.4219725343320846,2.9275905118601746,5.892634207240949,1.4419475655430714,5.5181023720349565,4.9937578027465666,4.66916354556804, +4.3508114856429465,5.842696629213483,2.8901373283395753,5.948813982521848,4.169787765293384,4.244694132334582,1.1860174781523096,3.9076154806491883,1.585518102372035,3.439450686641698,4.151061173533084,1.9038701622971288,0.8801498127340824,0.9363295880149812,2.209737827715356,6.554307116104869,5.19350811485643,3.470661672908864,2.521847690387016,2.153558052434457,4.563046192259676,5.955056179775282,3.5268414481897628,6.186017478152309,5.474406991260924,1.616729088639201,1.3108614232209737,1.2359550561797754,2.4906367041198503,4.6254681647940075,0.8177278401997503,1.6666666666666667,5.599250936329588,4.51310861423221,1.8352059925093633,3.1210986267166043,1.5106117353308364,6.866416978776529,4.868913857677903,1.1860174781523096,1.2484394506866416,5.461922596754057,4.425717852684145,1.9912609238451935,1.410736579275905,1.6978776529338326,6.429463171036204,3.470661672908864,1.8664169787765295,5.131086142322098,3.639200998751561,3.957553058676654,4.737827715355805,6.616729088639201,2.340823970037453,4.1136079900124844,4.556803995006242,5.736579275905119,6.616729088639201,3.8639200998751564,2.852684144818976,3.8389513108614235,3.714107365792759,2.322097378277154,6.367041198501872,4.1011235955056184,2.9463171036204745,6.367041198501872,2.3782771535580522,3.970037453183521,4.382022471910113,4.70661672908864,6.242197253433209,4.225967540574282,6.30461922596754,6.554307116104869,4.619225967540574,3.089887640449438,1.523096129837703,2.0786516853932584,6.616729088639201,4.069912609238452,3.3021223470661676,1.4794007490636705,6.679151061173534,4.681647940074906,5.705368289637952,2.1660424469413235,4.157303370786517,3.701622971285893,6.111111111111111,1.017478152309613,2.6217228464419473,2.446941323345818,2.958801498127341,5.930087390761548,1.4794007490636705,5.549313358302123,5.0187265917602994,4.694132334581773, +4.382022471910113,5.8739076154806495,2.9213483146067416,5.980024968789014,4.194756554307116,4.269662921348314,1.2047440699126093,3.9325842696629216,1.616729088639201,3.4581772784019975,4.176029962546816,1.9350811485642945,0.898876404494382,0.9675405742821472,2.2347066167290888,6.554307116104869,5.224719101123595,3.5018726591760303,2.546816479400749,2.1722846441947565,4.588014981273409,5.992509363295881,3.5518102372034956,6.217228464419476,5.50561797752809,1.647940074906367,1.34207240948814,1.260923845193508,2.521847690387016,4.65043695380774,0.8426966292134832,1.6978776529338326,5.617977528089888,4.538077403245943,1.8601747815230962,3.1460674157303368,1.5418227215980027,6.928838951310862,4.893882646691636,1.2047440699126093,1.2734082397003745,5.48689138576779,4.450686641697877,2.0224719101123596,1.4419475655430714,1.7228464419475658,6.491885143570538,3.508114856429463,1.8976279650436954,5.15605493133583,3.6641697877652937,3.9950062421972534,4.762796504369538,6.679151061173534,2.3657927590511862,4.132334581772784,4.588014981273409,5.774032459425719,6.616729088639201,3.888888888888889,2.871410736579276,3.8639200998751564,3.745318352059925,2.3470661672908864,6.367041198501872,4.1260923845193505,2.9712858926342074,6.367041198501872,2.4032459425717856,3.9950062421972534,4.413233458177278,4.7440699126092385,6.242197253433209,4.250936329588015,6.367041198501872,6.616729088639201,4.644194756554308,3.1210986267166043,1.5480649188514357,2.1161048689138577,6.679151061173534,4.1011235955056184,3.339575530586767,1.4981273408239701,6.679151061173534,4.70661672908864,5.730337078651686,2.1972534332084894,4.18227215980025,3.732833957553059,6.142322097378277,1.042446941323346,2.6529338327091136,2.471910112359551,2.9962546816479403,5.97378277153558,1.5106117353308364,5.580524344569288,5.043695380774032,4.719101123595506, +4.413233458177278,5.905118601747815,2.9525593008739075,6.004993757802747,4.219725343320849,4.294631710362047,1.229712858926342,3.957553058676654,1.647940074906367,3.4831460674157304,4.194756554307116,1.9600499375780276,0.9238451935081149,0.9987515605493134,2.259675405742821,6.616729088639201,5.2559300873907615,3.5268414481897628,2.571785268414482,2.1972534332084894,4.619225967540574,6.023720349563047,3.576779026217228,6.242197253433209,5.5305867665418225,1.6729088639200997,1.373283395755306,1.285892634207241,2.5530586766541825,4.675405742821473,0.867665418227216,1.735330836454432,5.64294631710362,4.556803995006242,1.8789013732833957,3.17103620474407,1.5792759051186018,6.928838951310862,4.918851435705368,1.223470661672909,1.2983770287141074,5.50561797752809,4.475655430711611,2.0536828963795255,1.4731585518102372,1.7540574282147314,6.491885143570538,3.5393258426966296,1.9350811485642945,5.187265917602996,3.6953807740324596,4.02621722846442,4.787765293383271,6.679151061173534,2.3907615480649187,4.151061173533084,4.612983770287141,5.811485642946318,6.679151061173534,3.920099875156055,2.8901373283395753,3.882646691635456,3.7827715355805243,2.3657927590511862,6.429463171036204,4.144818976279651,2.990012484394507,6.429463171036204,2.428214731585518,4.019975031210986,4.444444444444445,4.775280898876405,6.30461922596754,4.275905118601748,6.367041198501872,6.616729088639201,4.662921348314606,3.1585518102372037,1.5730337078651684,2.1473158551810236,6.679151061173534,4.132334581772784,3.370786516853933,1.523096129837703,6.741573033707866,4.7315855181023725,5.7553058676654185,2.2284644194756553,4.207240948813983,3.764044943820225,6.167290886392011,1.0674157303370786,2.68414481897628,2.4968789013732833,3.027465667915106,6.01123595505618,1.5418227215980027,5.611735330836455,5.068664169787765,4.737827715355805, +4.444444444444445,5.942571785268415,2.990012484394507,6.036204744069912,4.244694132334582,4.313358302122348,1.2546816479400749,3.9887640449438204,1.6791510611735332,3.508114856429463,4.219725343320849,1.9912609238451935,0.9488139825218477,1.0299625468164793,2.2846441947565546,6.616729088639201,5.287141073657928,3.5580524344569286,2.596754057428215,2.215980024968789,4.65043695380774,6.054931335830212,3.6017478152309614,6.30461922596754,5.561797752808988,1.704119850187266,1.3982521847690388,1.3108614232209737,2.5842696629213484,4.700374531835206,0.8926342072409489,1.766541822721598,5.66167290886392,4.581772784019975,1.9038701622971288,3.1897627965043696,1.6104868913857677,6.991260923845194,4.937578027465668,1.2484394506866416,1.3233458177278403,5.5305867665418225,4.506866416978776,2.091136079900125,1.4981273408239701,1.7790262172284643,6.554307116104869,3.5705368289637955,1.9662921348314608,5.218476903870163,3.7265917602996255,4.057428214731585,4.812734082397004,6.741573033707866,2.4157303370786516,4.176029962546816,4.644194756554308,5.848938826466916,6.679151061173534,3.9450686641697876,2.908863920099875,3.9013732833957557,3.81398252184769,2.3907615480649187,6.429463171036204,4.169787765293384,3.0149812734082393,6.429463171036204,2.453183520599251,4.044943820224719,4.475655430711611,4.806491885143571,6.30461922596754,4.307116104868914,6.429463171036204,6.616729088639201,4.681647940074906,3.1897627965043696,1.5980024968789013,2.184769038701623,6.741573033707866,4.16354556803995,3.4019975031210987,1.5418227215980027,6.741573033707866,4.750312109862672,5.7802746566791505,2.259675405742821,4.2322097378277155,3.801498127340824,6.198501872659176,1.0923845193508115,2.715355805243446,2.5280898876404496,3.058676654182272,6.048689138576779,1.5792759051186018,5.64294631710362,5.093632958801498,4.762796504369538, +4.475655430711611,5.97378277153558,3.0212234706616727,6.061173533083646,4.269662921348314,4.33832709113608,1.2734082397003745,4.013732833957553,1.704119850187266,3.5268414481897628,4.238451935081149,2.0224719101123596,0.9675405742821472,1.0549313358302121,2.309612983770287,6.616729088639201,5.318352059925093,3.589263420724095,2.6217228464419473,2.2409488139825218,4.675405742821473,6.086142322097379,3.6267166042446943,6.30461922596754,5.593008739076155,1.735330836454432,1.4294631710362047,1.3358302122347065,2.6154806491885143,4.725343320848939,0.9176029962546817,1.8039950062421974,5.686641697877653,4.600499375780275,1.9288389513108615,3.214731585518102,1.647940074906367,6.991260923845194,4.962546816479401,1.2671660424469413,1.34207240948814,5.549313358302123,4.531835205992509,2.122347066167291,1.529338327091136,1.8039950062421974,6.554307116104869,3.607990012484395,1.9975031210986267,5.249687890137328,3.7515605493133584,4.094881398252185,4.843945068664169,6.803995006242197,2.4406991260923845,4.194756554307116,4.675405742821473,5.8863920099875156,6.741573033707866,3.970037453183521,2.9275905118601746,3.926342072409488,3.8451935081148565,2.4094881398252186,6.491885143570538,4.188514357053683,3.033707865168539,6.429463171036204,2.478152309612984,4.069912609238452,4.506866416978776,4.837702871410737,6.367041198501872,4.332084893882647,6.429463171036204,6.679151061173534,4.70661672908864,3.227215980024969,1.6229712858926344,2.215980024968789,6.803995006242197,4.194756554307116,3.439450686641698,1.5667915106117354,6.803995006242197,4.775280898876405,5.805243445692884,2.2908863920099876,4.257178526841448,3.83270911360799,6.229712858926342,1.1173533083645444,2.746566791510612,2.5530586766541825,3.089887640449438,6.086142322097379,1.6104868913857677,5.674157303370786,5.118601747815231,4.787765293383271, +4.506866416978776,6.004993757802747,3.0524344569288386,6.092384519350812,4.294631710362047,4.3632958801498125,1.2983770287141074,4.038701622971286,1.735330836454432,3.5518102372034956,4.263420724094882,2.0474406991260925,0.9925093632958802,1.0861423220973783,2.33458177278402,6.679151061173534,5.34956304619226,3.620474406991261,2.6466916354556806,2.259675405742821,4.70661672908864,6.117353308364544,3.651685393258427,6.367041198501872,5.617977528089888,1.7602996254681649,1.4606741573033708,1.3607990012484397,2.6466916354556806,4.750312109862672,0.9425717852684146,1.8352059925093633,5.705368289637952,4.6254681647940075,1.9475655430711611,3.2397003745318353,1.6791510611735332,7.0536828963795255,4.987515605493134,1.285892634207241,1.3670411985018727,5.574282147315855,4.556803995006242,2.153558052434457,1.5605493133583022,1.8352059925093633,6.616729088639201,3.639200998751561,2.034956304619226,5.274656679151062,3.7827715355805243,4.1260923845193505,4.868913857677903,6.803995006242197,2.4656679151061174,4.213483146067416,4.700374531835206,5.9238451935081144,6.741573033707866,3.9950062421972534,2.9463171036204745,3.9450686641697876,3.8764044943820224,2.4344569288389515,6.491885143570538,4.213483146067416,3.058676654182272,6.491885143570538,2.5031210986267167,4.094881398252185,4.538077403245943,4.868913857677903,6.367041198501872,4.357053682896379,6.491885143570538,6.679151061173534,4.725343320848939,3.258426966292135,1.647940074906367,2.253433208489388,6.803995006242197,4.225967540574282,3.470661672908864,1.585518102372035,6.803995006242197,4.800249687890138,5.830212234706617,2.322097378277154,4.282147315855181,3.8639200998751564,6.242197253433209,1.136079900124844,2.777777777777778,2.578027465667915,3.1273408239700373,6.129837702871411,1.647940074906367,5.69912609238452,5.149812734082397,4.812734082397004, +4.538077403245943,6.0424469413233455,3.089887640449438,6.117353308364544,4.31960049937578,4.382022471910113,1.3233458177278403,4.063670411985019,1.766541822721598,3.576779026217228,4.282147315855181,2.0786516853932584,1.017478152309613,1.1173533083645444,2.359550561797753,6.679151061173534,5.380774032459426,3.651685393258427,2.671660424469413,2.2846441947565546,4.737827715355805,6.1485642946317105,3.6766541822721597,6.367041198501872,5.6491885143570535,1.7915106117353308,1.4918851435705367,1.3857677902621723,2.68414481897628,4.775280898876405,0.9675405742821472,1.8664169787765295,5.724094881398252,4.65043695380774,1.9725343320848938,3.2646691635455682,1.7166042446941323,7.0536828963795255,5.012484394506866,1.3046192259675407,1.3920099875156053,5.593008739076155,4.588014981273409,2.184769038701623,1.591760299625468,1.8601747815230962,6.616729088639201,3.6766541822721597,2.066167290886392,5.305867665418227,3.8077403245942576,4.16354556803995,4.893882646691636,6.866416978776529,2.4843945068664173,4.238451935081149,4.7315855181023725,5.961298377028713,6.741573033707866,4.02621722846442,2.9712858926342074,3.9637952559300875,3.9076154806491883,2.453183520599251,6.554307116104869,4.238451935081149,3.077403245942572,6.491885143570538,2.5280898876404496,4.1136079900124844,4.569288389513109,4.906367041198502,6.367041198501872,4.388264669163545,6.491885143570538,6.679151061173534,4.7440699126092385,3.2896379525593007,1.6729088639200997,2.2846441947565546,6.866416978776529,4.257178526841448,3.5018726591760303,1.6042446941323347,6.866416978776529,4.825218476903871,5.855181023720349,2.35330836454432,4.307116104868914,3.8951310861423223,6.30461922596754,1.161048689138577,2.808988764044944,2.6092384519350813,3.1585518102372037,6.167290886392011,1.6791510611735332,5.730337078651686,5.174781523096129,4.831460674157303, +4.563046192259676,6.073657927590512,3.1210986267166043,6.1485642946317105,4.344569288389513,4.406991260923846,1.348314606741573,4.0886392009987516,1.797752808988764,3.595505617977528,4.300873907615481,2.1098626716604243,1.0362047440699127,1.1485642946317103,2.3845193508114857,6.741573033707866,5.411985018726591,3.682896379525593,2.696629213483146,2.303370786516854,4.762796504369538,6.179775280898876,3.6953807740324596,6.429463171036204,5.68039950062422,1.8227215980024971,1.523096129837703,1.410736579275905,2.715355805243446,4.800249687890138,0.9925093632958802,1.9038701622971288,5.749063670411985,4.66916354556804,1.9975031210986267,3.2833957553058677,1.7478152309612984,7.116104868913857,5.0374531835206,1.3295880149812733,1.4169787765293382,5.617977528089888,4.612983770287141,2.2222222222222223,1.616729088639201,1.8851435705368291,6.679151061173534,3.7078651685393256,2.1036204744069913,5.337078651685393,3.8389513108614235,4.194756554307116,4.918851435705368,6.866416978776529,2.5093632958801497,4.257178526841448,4.7565543071161045,5.998751560549313,6.803995006242197,4.051186017478152,2.990012484394507,3.9887640449438204,3.938826466916354,2.478152309612984,6.554307116104869,4.257178526841448,3.102372034956305,6.491885143570538,2.546816479400749,4.138576779026217,4.600499375780275,4.937578027465668,6.429463171036204,4.413233458177278,6.554307116104869,6.741573033707866,4.769038701622971,3.3270911360799,1.6978776529338326,2.322097378277154,6.866416978776529,4.288389513108614,3.5393258426966296,1.6292134831460674,6.866416978776529,4.850187265917603,5.880149812734083,2.3845193508114857,4.332084893882647,3.926342072409488,6.30461922596754,1.1860174781523096,2.84019975031211,2.634207240948814,3.1897627965043696,6.20474406991261,1.7166042446941323,5.761548064918852,5.199750312109863,4.856429463171036, +4.594257178526841,6.104868913857677,3.15230961298377,6.173533083645444,4.369538077403246,4.431960049937578,1.3670411985018727,4.119850187265917,1.8227215980024971,3.620474406991261,4.325842696629214,2.1410736579275906,1.0611735330836456,1.1797752808988764,2.4094881398252186,6.741573033707866,5.443196004993759,3.714107365792759,2.7215980024968793,2.328339575530587,4.794007490636704,6.210986267166042,3.7203495630461925,6.429463171036204,5.705368289637952,1.8476903870162298,1.554307116104869,1.435705368289638,2.746566791510612,4.825218476903871,1.0112359550561798,1.9350811485642945,5.767790262172285,4.694132334581773,2.016229712858926,3.3083645443196006,1.7852684144818978,7.116104868913857,5.062421972534332,1.348314606741573,1.4419475655430714,5.636704119850187,4.637952559300874,2.253433208489388,1.647940074906367,1.916354556803995,6.679151061173534,3.7390761548064915,2.134831460674157,5.36828963795256,3.8639200998751564,4.2322097378277155,4.943820224719102,6.928838951310862,2.5343320848938826,4.282147315855181,4.787765293383271,6.036204744069912,6.803995006242197,4.0761548064918856,3.0087390761548067,4.00749063670412,3.970037453183521,2.5031210986267167,6.616729088639201,4.282147315855181,3.1210986267166043,6.554307116104869,2.571785268414482,4.16354556803995,4.631710362047441,4.9687890137328345,6.429463171036204,4.438202247191011,6.554307116104869,6.741573033707866,4.787765293383271,3.3583021223470664,1.7228464419475658,2.359550561797753,6.928838951310862,4.31960049937578,3.5705368289637955,1.647940074906367,6.928838951310862,4.875156054931336,5.905118601747815,2.4157303370786516,4.357053682896379,3.9637952559300875,6.367041198501872,1.2109862671660423,2.871410736579276,2.6591760299625467,3.227215980024969,6.242197253433209,1.7478152309612984,5.792759051186017,5.224719101123595,4.881398252184769, +4.6254681647940075,6.142322097378277,3.1897627965043696,6.20474406991261,4.394506866416979,4.450686641697877,1.3920099875156053,4.144818976279651,1.8539325842696628,3.6454431960049942,4.344569288389513,2.1660424469413235,1.079900124843945,1.2047440699126093,2.4344569288389515,6.803995006242197,5.474406991260924,3.745318352059925,2.746566791510612,2.3470661672908864,4.825218476903871,6.242197253433209,3.745318352059925,6.491885143570538,5.736579275905119,1.8789013732833957,1.5792759051186018,1.4606741573033708,2.777777777777778,4.850187265917603,1.0362047440699127,1.9662921348314608,5.792759051186017,4.712858926342073,2.0411985018726595,3.3333333333333335,1.8164794007490637,7.17852684144819,5.081148564294631,1.3670411985018727,1.466916354556804,5.66167290886392,4.662921348314606,2.2846441947565546,1.6791510611735332,1.941323345817728,6.741573033707866,3.776529338327091,2.1660424469413235,5.393258426966292,3.8951310861423223,4.263420724094882,4.9687890137328345,6.928838951310862,2.5593008739076155,4.300873907615481,4.812734082397004,6.073657927590512,6.866416978776529,4.107365792759051,3.027465667915106,4.02621722846442,4.001248439450687,2.521847690387016,6.616729088639201,4.300873907615481,3.1460674157303368,6.554307116104869,2.596754057428215,4.188514357053683,4.662921348314606,5.0,6.429463171036204,4.4694132334581775,6.616729088639201,6.741573033707866,4.812734082397004,3.3957553058676653,1.7478152309612984,2.3907615480649187,6.991260923845194,4.3508114856429465,3.6017478152309614,1.6729088639200997,6.928838951310862,4.893882646691636,5.930087390761548,2.446941323345818,4.382022471910113,3.9950062421972534,6.367041198501872,1.2359550561797754,2.902621722846442,2.68414481897628,3.258426966292135,6.30461922596754,1.7852684144818978,5.823970037453184,5.249687890137328,4.906367041198502, +4.656679151061174,6.173533083645444,3.2209737827715355,6.229712858926342,4.419475655430712,4.475655430711611,1.4169787765293382,4.169787765293384,1.8851435705368291,3.6641697877652937,4.369538077403246,2.1972534332084894,1.104868913857678,1.2359550561797754,2.459425717852684,6.803995006242197,5.50561797752809,3.776529338327091,2.7715355805243447,2.3720349563046192,4.850187265917603,6.30461922596754,3.7702871410736583,6.491885143570538,5.767790262172285,1.9101123595505618,1.6104868913857677,1.4856429463171037,2.808988764044944,4.875156054931336,1.0611735330836456,2.00374531835206,5.811485642946318,4.737827715355805,2.0599250936329585,3.3583021223470664,1.8539325842696628,7.17852684144819,5.106117353308365,1.3920099875156053,1.4856429463171037,5.686641697877653,4.694132334581773,2.3158551810237205,1.704119850187266,1.9662921348314608,6.741573033707866,3.8077403245942576,2.203495630461923,5.424469413233458,3.926342072409488,4.294631710362047,5.0,6.991260923845194,2.5842696629213484,4.31960049937578,4.843945068664169,6.111111111111111,6.866416978776529,4.132334581772784,3.046192259675406,4.051186017478152,4.032459425717852,2.546816479400749,6.679151061173534,4.325842696629214,3.1647940074906367,6.554307116104869,2.6217228464419473,4.213483146067416,4.694132334581773,5.0374531835206,6.491885143570538,4.49438202247191,6.616729088639201,6.803995006242197,4.831460674157303,3.4269662921348316,1.772784019975031,2.428214731585518,6.991260923845194,4.382022471910113,3.639200998751561,1.6916354556803994,6.991260923845194,4.918851435705368,5.955056179775282,2.478152309612984,4.406991260923846,4.02621722846442,6.429463171036204,1.260923845193508,2.933832709113608,2.715355805243446,3.2896379525593007,6.30461922596754,1.8164794007490637,5.855181023720349,5.274656679151062,4.925093632958801, +4.687890137328339,6.20474406991261,3.258426966292135,6.242197253433209,4.444444444444445,4.500624219725343,1.435705368289638,4.194756554307116,1.916354556803995,3.689138576779026,4.388264669163545,2.2284644194756553,1.1298377028714106,1.2671660424469413,2.4843945068664173,6.866416978776529,5.536828963795256,3.8077403245942576,2.7965043695380776,2.3907615480649187,4.881398252184769,6.30461922596754,3.7952559300873907,6.554307116104869,5.799001248439451,1.9350811485642945,1.6416978776529338,1.5106117353308364,2.84019975031211,4.900124843945068,1.0861423220973783,2.034956304619226,5.836454431960051,4.7565543071161045,2.084893882646692,3.3770287141073654,1.8851435705368291,7.240948813982522,5.131086142322098,1.410736579275905,1.5106117353308364,5.705368289637952,4.719101123595506,2.35330836454432,1.735330836454432,1.9975031210986267,6.803995006242197,3.8389513108614235,2.2347066167290888,5.455680399500624,3.951310861423221,4.332084893882647,5.024968789013733,7.0536828963795255,2.602996254681648,4.344569288389513,4.868913857677903,6.1485642946317105,6.866416978776529,4.157303370786517,3.0649188514357055,4.069912609238452,4.063670411985019,2.565543071161049,6.679151061173534,4.3508114856429465,3.1897627965043696,6.616729088639201,2.6466916354556806,4.238451935081149,4.725343320848939,5.068664169787765,6.491885143570538,4.519350811485642,6.679151061173534,6.803995006242197,4.850187265917603,3.464419475655431,1.797752808988764,2.459425717852684,7.0536828963795255,4.413233458177278,3.6704119850187267,1.7166042446941323,6.991260923845194,4.943820224719102,5.980024968789014,2.5093632958801497,4.431960049937578,4.057428214731585,6.429463171036204,1.285892634207241,2.965043695380774,2.740324594257179,3.3270911360799,6.367041198501872,1.8476903870162298,5.880149812734083,5.299625468164794,4.950062421972534, +4.719101123595506,6.242197253433209,3.2896379525593007,6.30461922596754,4.4694132334581775,4.519350811485642,1.4606741573033708,4.219725343320849,1.941323345817728,3.714107365792759,4.413233458177278,2.259675405742821,1.1485642946317103,1.2983770287141074,2.5093632958801497,6.866416978776529,5.568039950062421,3.8389513108614235,2.82147315855181,2.4157303370786516,4.912609238451935,6.367041198501872,3.8202247191011236,6.554307116104869,5.823970037453184,1.9662921348314608,1.6729088639200997,1.5355805243445693,2.871410736579276,4.925093632958801,1.1111111111111112,2.0724094881398254,5.855181023720349,4.781523096129837,2.1098626716604243,3.4019975031210987,1.9225967540574282,7.240948813982522,5.15605493133583,1.4294631710362047,1.5355805243445693,5.730337078651686,4.7440699126092385,2.3845193508114857,1.766541822721598,2.0224719101123596,6.803995006242197,3.8764044943820224,2.272159800249688,5.48689138576779,3.982521847690387,4.3632958801498125,5.049937578027466,7.0536828963795255,2.6279650436953808,4.3632958801498125,4.900124843945068,6.186017478152309,6.928838951310862,4.188514357053683,3.0836454431960054,4.0886392009987516,4.094881398252185,2.5905118601747814,6.741573033707866,4.369538077403246,3.2084893882646695,6.616729088639201,2.671660424469413,4.263420724094882,4.750312109862672,5.099875156054932,6.491885143570538,4.55056179775281,6.679151061173534,6.803995006242197,4.875156054931336,3.495630461922597,1.8227215980024971,2.4968789013732833,7.116104868913857,4.444444444444445,3.7078651685393256,1.735330836454432,7.0536828963795255,4.9687890137328345,6.01123595505618,2.5405742821473156,4.456928838951311,4.0886392009987516,6.491885143570538,1.3046192259675407,2.9962546816479403,2.7652933832709112,3.3583021223470664,6.429463171036204,1.8851435705368291,5.9113607990012484,5.324594257178527,4.975031210986267, +4.750312109862672,6.30461922596754,3.320848938826467,6.30461922596754,4.49438202247191,4.544319600499376,1.4856429463171037,4.250936329588015,1.9725343320848938,3.732833957553059,4.431960049937578,2.2846441947565546,1.1735330836454432,1.3295880149812733,2.5343320848938826,6.928838951310862,5.599250936329588,3.870162297128589,2.84019975031211,2.4344569288389515,4.937578027465668,6.367041198501872,3.8451935081148565,6.616729088639201,5.855181023720349,1.9975031210986267,1.704119850187266,1.5605493133583022,2.902621722846442,4.950062421972534,1.136079900124844,2.1036204744069913,5.880149812734083,4.806491885143571,2.128589263420724,3.4269662921348316,1.9600499375780276,7.303370786516854,5.181023720349563,1.4544319600499376,1.5605493133583022,5.749063670411985,4.775280898876405,2.4157303370786516,1.797752808988764,2.0474406991260925,6.866416978776529,3.9076154806491883,2.303370786516854,5.511860174781523,4.00749063670412,4.400749063670412,5.074906367041199,7.116104868913857,2.6529338327091136,4.382022471910113,4.931335830212235,6.223470661672909,6.928838951310862,4.213483146067416,3.102372034956305,4.1136079900124844,4.132334581772784,2.6092384519350813,6.741573033707866,4.394506866416979,3.227215980024969,6.616729088639201,2.696629213483146,4.288389513108614,4.781523096129837,5.131086142322098,6.554307116104869,4.575530586766542,6.741573033707866,6.866416978776529,4.893882646691636,3.533083645443196,1.8476903870162298,2.5343320848938826,7.116104868913857,4.475655430711611,3.7390761548064915,1.7602996254681649,7.0536828963795255,4.9937578027465666,6.036204744069912,2.571785268414482,4.4818976279650435,4.119850187265917,6.491885143570538,1.3295880149812733,3.027465667915106,2.790262172284644,3.3895131086142323,6.429463171036204,1.916354556803995,5.942571785268415,5.355805243445693,4.9937578027465666, +4.781523096129837,6.30461922596754,3.3583021223470664,6.367041198501872,4.519350811485642,4.563046192259676,1.5043695380774034,4.275905118601748,2.00374531835206,3.7578027465667914,4.450686641697877,2.3158551810237205,1.198501872659176,1.3545568039950062,2.5593008739076155,6.928838951310862,5.630461922596755,3.9013732833957557,2.865168539325843,2.453183520599251,4.9687890137328345,6.429463171036204,3.870162297128589,6.616729088639201,5.8863920099875156,2.0287141073657926,1.7290886392009988,1.585518102372035,2.933832709113608,4.975031210986267,1.161048689138577,2.134831460674157,5.8988764044943816,4.825218476903871,2.153558052434457,3.4456928838951315,1.9912609238451935,7.303370786516854,5.205992509363296,1.4731585518102372,1.585518102372035,5.774032459425719,4.800249687890138,2.446941323345818,1.8227215980024971,2.0786516853932584,6.866416978776529,3.938826466916354,2.33458177278402,5.543071161048689,4.038701622971286,4.431960049937578,5.099875156054932,7.116104868913857,2.6779026217228465,4.406991260923846,4.956304619225968,6.242197253433209,6.991260923845194,4.238451935081149,3.1273408239700373,4.132334581772784,4.16354556803995,2.634207240948814,6.803995006242197,4.413233458177278,3.2521847690387014,6.679151061173534,2.7215980024968793,4.313358302122348,4.812734082397004,5.168539325842697,6.554307116104869,4.606741573033708,6.741573033707866,6.866416978776529,4.912609238451935,3.564294631710362,1.8726591760299625,2.565543071161049,7.17852684144819,4.500624219725343,3.7702871410736583,1.7790262172284643,7.116104868913857,5.0187265917602994,6.061173533083646,2.602996254681648,4.506866416978776,4.157303370786517,6.491885143570538,1.3545568039950062,3.058676654182272,2.82147315855181,3.420724094881398,6.491885143570538,1.9538077403245941,5.97378277153558,5.380774032459426,5.0187265917602994, +4.806491885143571,6.367041198501872,3.3895131086142323,6.367041198501872,4.544319600499376,4.588014981273409,1.529338327091136,4.300873907615481,2.034956304619226,3.7827715355805243,4.475655430711611,2.3470661672908864,1.2172284644194757,1.3857677902621723,2.5842696629213484,6.991260923845194,5.66167290886392,3.9325842696629216,2.8901373283395753,2.478152309612984,5.0,6.429463171036204,3.8951310861423223,6.679151061173534,5.9113607990012484,2.0536828963795255,1.7602996254681649,1.6104868913857677,2.965043695380774,5.0,1.1860174781523096,2.1722846441947565,5.917602996254682,4.850187265917603,2.1722846441947565,3.470661672908864,2.0287141073657926,7.365792759051186,5.230961298377029,1.4918851435705367,1.6104868913857677,5.792759051186017,4.825218476903871,2.4843945068664173,1.8539325842696628,2.1036204744069913,6.928838951310862,3.9762796504369535,2.3720349563046192,5.574282147315855,4.063670411985019,4.4694132334581775,5.131086142322098,7.17852684144819,2.702871410736579,4.425717852684145,4.987515605493134,6.30461922596754,6.991260923845194,4.269662921348314,3.1460674157303368,4.151061173533084,4.194756554307116,2.6591760299625467,6.803995006242197,4.438202247191011,3.2709113607990012,6.679151061173534,2.746566791510612,4.33832709113608,4.843945068664169,5.199750312109863,6.616729088639201,4.631710362047441,6.803995006242197,6.866416978776529,4.937578027465668,3.6017478152309614,1.8976279650436954,2.602996254681648,7.17852684144819,4.531835205992509,3.8077403245942576,1.8039950062421974,7.116104868913857,5.043695380774032,6.086142322097379,2.634207240948814,4.531835205992509,4.188514357053683,6.554307116104869,1.3795255930087391,3.0836454431960054,2.8464419475655434,3.4581772784019975,6.491885143570538,1.9850187265917605,6.004993757802747,5.405742821473158,5.043695380774032, +4.837702871410737,6.367041198501872,3.420724094881398,6.367041198501872,4.569288389513109,4.612983770287141,1.554307116104869,4.325842696629214,2.0599250936329585,3.801498127340824,4.49438202247191,2.3720349563046192,1.2421972534332086,1.4169787765293382,2.6092384519350813,6.991260923845194,5.692883895131087,3.9637952559300875,2.9151061173533086,2.4968789013732833,5.024968789013733,6.491885143570538,3.9138576779026217,6.679151061173534,5.942571785268415,2.084893882646692,1.7915106117353308,1.6354556803995006,2.9962546816479403,5.024968789013733,1.2109862671660423,2.203495630461923,5.942571785268415,4.868913857677903,2.1972534332084894,3.495630461922597,2.0599250936329585,7.365792759051186,5.249687890137328,1.5106117353308364,1.6354556803995006,5.81772784019975,4.850187265917603,2.515605493133583,1.8851435705368291,2.128589263420724,6.928838951310862,4.00749063670412,2.4032459425717856,5.605493133583021,4.094881398252185,4.500624219725343,5.15605493133583,7.17852684144819,2.727840199750312,4.444444444444445,5.012484394506866,6.30461922596754,6.991260923845194,4.294631710362047,3.1647940074906367,4.176029962546816,4.225967540574282,2.6779026217228465,6.866416978776529,4.463171036204744,3.295880149812734,6.679151061173534,2.7715355805243447,4.3632958801498125,4.875156054931336,5.230961298377029,6.616729088639201,4.656679151061174,6.803995006242197,6.928838951310862,4.956304619225968,3.6329588014981273,1.9225967540574282,2.634207240948814,7.240948813982522,4.563046192259676,3.8389513108614235,1.8227215980024971,7.17852684144819,5.062421972534332,6.111111111111111,2.66541822721598,4.556803995006242,4.219725343320849,6.554307116104869,1.404494382022472,3.114856429463171,2.871410736579276,3.4893882646691634,6.554307116104869,2.0224719101123596,6.036204744069912,5.430711610486892,5.068664169787765, +4.868913857677903,6.429463171036204,3.4581772784019975,6.429463171036204,4.594257178526841,4.631710362047441,1.5730337078651684,4.357053682896379,2.091136079900125,3.826466916354557,4.519350811485642,2.4032459425717856,1.2671660424469413,1.4481897627965044,2.634207240948814,7.0536828963795255,5.724094881398252,3.9950062421972534,2.9400749063670415,2.521847690387016,5.056179775280899,6.491885143570538,3.938826466916354,6.741573033707866,5.97378277153558,2.1161048689138577,1.8227215980024971,1.6604244694132335,3.033707865168539,5.049937578027466,1.2359550561797754,2.2347066167290888,5.961298377028713,4.893882646691636,2.2222222222222223,3.5205992509363297,2.097378277153558,7.428214731585518,5.274656679151062,1.5355805243445693,1.6541822721598003,5.836454431960051,4.881398252184769,2.546816479400749,1.9101123595505618,2.15980024968789,6.991260923845194,4.044943820224719,2.4344569288389515,5.630461922596755,4.1260923845193505,4.531835205992509,5.181023720349563,7.240948813982522,2.746566791510612,4.4694132334581775,5.043695380774032,6.367041198501872,7.0536828963795255,4.31960049937578,3.183520599250936,4.194756554307116,4.257178526841448,2.702871410736579,6.866416978776529,4.4818976279650435,3.3146067415730336,6.741573033707866,2.790262172284644,4.388264669163545,4.906367041198502,5.262172284644195,6.616729088639201,4.687890137328339,6.803995006242197,6.928838951310862,4.975031210986267,3.6704119850187267,1.941323345817728,2.671660424469413,7.303370786516854,4.594257178526841,3.870162297128589,1.8476903870162298,7.17852684144819,5.087390761548065,6.1360799001248445,2.696629213483146,4.588014981273409,4.250936329588015,6.616729088639201,1.4294631710362047,3.1460674157303368,2.8963795255930087,3.5205992509363297,6.616729088639201,2.0536828963795255,6.061173533083646,5.455680399500624,5.087390761548065, +4.900124843945068,6.429463171036204,3.4893882646691634,6.429463171036204,4.619225967540574,4.656679151061174,1.5980024968789013,4.382022471910113,2.122347066167291,3.8451935081148565,4.538077403245943,2.4344569288389515,1.285892634207241,1.4731585518102372,2.6529338327091136,7.0536828963795255,5.7553058676654185,4.02621722846442,2.965043695380774,2.5405742821473156,5.087390761548065,6.554307116104869,3.9637952559300875,6.741573033707866,5.998751560549313,2.1410736579275906,1.8539325842696628,1.6853932584269664,3.0649188514357055,5.074906367041199,1.260923845193508,2.272159800249688,5.986267166042447,4.912609238451935,2.2409488139825218,3.5393258426966296,2.128589263420724,7.428214731585518,5.299625468164794,1.554307116104869,1.6791510611735332,5.861423220973783,4.906367041198502,2.578027465667915,1.941323345817728,2.184769038701623,6.991260923845194,4.0761548064918856,2.471910112359551,5.66167290886392,4.151061173533084,4.569288389513109,5.205992509363296,7.303370786516854,2.7715355805243447,4.488139825218477,5.068664169787765,6.429463171036204,7.0536828963795255,4.3508114856429465,3.202247191011236,4.213483146067416,4.288389513108614,2.7215980024968793,6.928838951310862,4.506866416978776,3.339575530586767,6.741573033707866,2.8152309612983775,4.413233458177278,4.937578027465668,5.299625468164794,6.679151061173534,4.712858926342073,6.866416978776529,6.928838951310862,5.0,3.701622971285893,1.9662921348314608,2.702871410736579,7.303370786516854,4.6254681647940075,3.9076154806491883,1.8664169787765295,7.240948813982522,5.1123595505617985,6.161048689138577,2.727840199750312,4.612983770287141,4.282147315855181,6.616729088639201,1.4481897627965044,3.1772784019975036,2.9275905118601746,3.5580524344569286,6.616729088639201,2.091136079900125,6.092384519350812,5.480649188514358,5.1123595505617985, +4.931335830212235,6.491885143570538,3.5205992509363297,6.491885143570538,4.644194756554308,4.681647940074906,1.6229712858926344,4.406991260923846,2.153558052434457,3.870162297128589,4.563046192259676,2.4656679151061174,1.3108614232209737,1.5043695380774034,2.6779026217228465,7.116104868913857,5.786516853932584,4.057428214731585,2.990012484394507,2.565543071161049,5.1123595505617985,6.554307116104869,3.9887640449438204,6.803995006242197,6.029962546816479,2.1722846441947565,1.8851435705368291,1.710362047440699,3.0961298377028714,5.099875156054932,1.285892634207241,2.303370786516854,6.004993757802747,4.937578027465668,2.2659176029962547,3.564294631710362,2.1660424469413235,7.49063670411985,5.324594257178527,1.5730337078651684,1.704119850187266,5.8863920099875156,4.931335830212235,2.6154806491885143,1.9725343320848938,2.209737827715356,7.0536828963795255,4.107365792759051,2.5031210986267167,5.692883895131087,4.18227215980025,4.600499375780275,5.230961298377029,7.303370786516854,2.7965043695380776,4.506866416978776,5.099875156054932,6.429463171036204,7.116104868913857,4.375780274656679,3.2209737827715355,4.238451935081149,4.31960049937578,2.746566791510612,6.928838951310862,4.525593008739076,3.3583021223470664,6.741573033707866,2.84019975031211,4.438202247191011,4.9687890137328345,5.33083645443196,6.679151061173534,4.737827715355805,6.866416978776529,6.991260923845194,5.0187265917602994,3.732833957553059,1.9912609238451935,2.740324594257179,7.365792759051186,4.656679151061174,3.938826466916354,1.8913857677902621,7.240948813982522,5.1373283395755305,6.186017478152309,2.7590511860174782,4.637952559300874,4.31960049937578,6.679151061173534,1.4731585518102372,3.2084893882646695,2.9525593008739075,3.589263420724095,6.679151061173534,2.122347066167291,6.123595505617978,5.50561797752809,5.1373283395755305, +4.962546816479401,6.491885143570538,3.5580524344569286,6.491885143570538,4.66916354556804,4.700374531835206,1.6416978776529338,4.431960049937578,2.1785268414481895,3.8951310861423223,4.581772784019975,2.4906367041198503,1.3358302122347065,1.5355805243445693,2.702871410736579,7.116104868913857,5.81772784019975,4.0886392009987516,3.0149812734082393,2.5842696629213484,5.143570536828964,6.616729088639201,4.013732833957553,6.803995006242197,6.061173533083646,2.203495630461923,1.9101123595505618,1.735330836454432,3.1273408239700373,5.118601747815231,1.3108614232209737,2.340823970037453,6.029962546816479,4.962546816479401,2.2846441947565546,3.589263420724095,2.1972534332084894,7.49063670411985,5.34956304619226,1.5980024968789013,1.7290886392009988,5.905118601747815,4.962546816479401,2.6466916354556806,2.00374531835206,2.2409488139825218,7.0536828963795255,4.144818976279651,2.5405742821473156,5.724094881398252,4.207240948813983,4.637952559300874,5.262172284644195,7.365792759051186,2.82147315855181,4.531835205992509,5.1248439450686645,6.491885143570538,7.116104868913857,4.400749063670412,3.2397003745318353,4.257178526841448,4.3508114856429465,2.7715355805243447,6.991260923845194,4.55056179775281,3.383270911360799,6.803995006242197,2.865168539325843,4.463171036204744,5.0,5.3620474406991265,6.679151061173534,4.769038701622971,6.928838951310862,6.991260923845194,5.0374531835206,3.7702871410736583,2.016229712858926,2.777777777777778,7.428214731585518,4.687890137328339,3.970037453183521,1.9101123595505618,7.303370786516854,5.162297128589263,6.210986267166042,2.790262172284644,4.662921348314606,4.3508114856429465,6.679151061173534,1.4981273408239701,3.2397003745318353,2.977528089887641,3.620474406991261,6.741573033707866,2.153558052434457,6.154806491885144,5.5305867665418225,5.162297128589263, +4.9937578027465666,6.554307116104869,3.589263420724095,6.554307116104869,4.694132334581773,4.725343320848939,1.6666666666666667,4.456928838951311,2.209737827715356,3.9138576779026217,4.600499375780275,2.521847690387016,1.3545568039950062,1.5667915106117354,2.727840199750312,7.17852684144819,5.848938826466916,4.119850187265917,3.0399500624219726,2.6092384519350813,5.174781523096129,6.616729088639201,4.038701622971286,6.866416978776529,6.086142322097379,2.2284644194756553,1.941323345817728,1.7602996254681649,3.1585518102372037,5.143570536828964,1.3358302122347065,2.3720349563046192,6.048689138576779,4.9812734082397006,2.309612983770287,3.6142322097378274,2.2347066167290888,7.553058676654182,5.3745318352059925,1.616729088639201,1.7540574282147314,5.930087390761548,4.987515605493134,2.6779026217228465,2.0287141073657926,2.2659176029962547,7.116104868913857,4.176029962546816,2.571785268414482,5.749063670411985,4.238451935081149,4.66916354556804,5.287141073657928,7.365792759051186,2.8464419475655434,4.55056179775281,5.15605493133583,6.491885143570538,7.116104868913857,4.431960049937578,3.258426966292135,4.275905118601748,4.382022471910113,2.790262172284644,6.991260923845194,4.575530586766542,3.4019975031210987,6.803995006242197,2.8901373283395753,4.488139825218477,5.031210986267166,5.393258426966292,6.741573033707866,4.794007490636704,6.928838951310862,6.991260923845194,5.062421972534332,3.801498127340824,2.0411985018726595,2.808988764044944,7.428214731585518,4.719101123595506,4.00749063670412,1.9350811485642945,7.303370786516854,5.187265917602996,6.235955056179775,2.82147315855181,4.687890137328339,4.382022471910113,6.741573033707866,1.523096129837703,3.2709113607990012,3.0087390761548067,3.6579275905118602,6.741573033707866,2.1910112359550564,6.186017478152309,5.561797752808988,5.181023720349563, +5.024968789013733,6.554307116104869,3.6267166042446943,6.554307116104869,4.719101123595506,4.750312109862672,1.6916354556803994,4.488139825218477,2.2409488139825218,3.938826466916354,4.6254681647940075,2.5530586766541825,1.3795255930087391,1.5980024968789013,2.752808988764045,7.17852684144819,5.880149812734083,4.151061173533084,3.0649188514357055,2.6279650436953808,5.199750312109863,6.679151061173534,4.063670411985019,6.866416978776529,6.117353308364544,2.259675405742821,1.9725343320848938,1.7852684144818978,3.1897627965043696,5.168539325842697,1.3607990012484397,2.4032459425717856,6.073657927590512,5.0062421972534334,2.33458177278402,3.6329588014981273,2.2659176029962547,7.553058676654182,5.393258426966292,1.6354556803995006,1.7790262172284643,5.948813982521848,5.012484394506866,2.715355805243446,2.0599250936329585,2.2908863920099876,7.116104868913857,4.207240948813983,2.602996254681648,5.7802746566791505,4.269662921348314,4.700374531835206,5.312109862671661,7.428214731585518,2.865168539325843,4.575530586766542,5.181023720349563,6.554307116104869,7.17852684144819,4.456928838951311,3.2771535580524347,4.300873907615481,4.413233458177278,2.8152309612983775,7.0536828963795255,4.594257178526841,3.4269662921348316,6.803995006242197,2.9151061173533086,4.51310861423221,5.062421972534332,5.424469413233458,6.741573033707866,4.818976279650437,6.991260923845194,7.0536828963795255,5.081148564294631,3.8389513108614235,2.066167290886392,2.8464419475655434,7.49063670411985,4.750312109862672,4.038701622971286,1.9538077403245941,7.365792759051186,5.212234706616729,6.242197253433209,2.852684144818976,4.712858926342073,4.413233458177278,6.741573033707866,1.5480649188514357,3.3021223470661676,3.033707865168539,3.689138576779026,6.803995006242197,2.2222222222222223,6.217228464419476,5.586766541822722,5.205992509363296, +5.056179775280899,6.616729088639201,3.6579275905118602,6.616729088639201,4.7440699126092385,4.769038701622971,1.710362047440699,4.51310861423221,2.272159800249688,3.9637952559300875,4.644194756554308,2.5842696629213484,1.404494382022472,1.6229712858926344,2.777777777777778,7.17852684144819,5.9113607990012484,4.18227215980025,3.089887640449438,2.6529338327091136,5.230961298377029,6.679151061173534,4.0886392009987516,6.928838951310862,6.1485642946317105,2.2908863920099876,2.00374531835206,1.8102372034956304,3.2209737827715355,5.19350811485643,1.3857677902621723,2.4406991260923845,6.092384519350812,5.024968789013733,2.35330836454432,3.6579275905118602,2.303370786516854,7.615480649188515,5.418227215980025,1.6541822721598003,1.8039950062421974,5.97378277153558,5.0374531835206,2.746566791510612,2.091136079900125,2.322097378277154,7.17852684144819,4.244694132334582,2.640449438202247,5.811485642946318,4.294631710362047,4.737827715355805,5.337078651685393,7.428214731585518,2.8901373283395753,4.594257178526841,5.212234706616729,6.616729088639201,7.17852684144819,4.4818976279650435,3.3021223470661676,4.31960049937578,4.444444444444445,2.8339575530586765,7.0536828963795255,4.619225967540574,3.4456928838951315,6.866416978776529,2.9400749063670415,4.538077403245943,5.093632958801498,5.461922596754057,6.803995006242197,4.850187265917603,6.991260923845194,7.0536828963795255,5.099875156054932,3.870162297128589,2.091136079900125,2.8776529338327093,7.49063670411985,4.781523096129837,4.069912609238452,1.9725343320848938,7.365792759051186,5.230961298377029,6.30461922596754,2.8838951310861427,4.737827715355805,4.444444444444445,6.803995006242197,1.5730337078651684,3.3333333333333335,3.058676654182272,3.7203495630461925,6.803995006242197,2.259675405742821,6.242197253433209,5.611735330836455,5.230961298377029, +5.081148564294631,6.616729088639201,3.689138576779026,6.616729088639201,4.775280898876405,4.794007490636704,1.735330836454432,4.538077403245943,2.2971285892634206,3.982521847690387,4.66916354556804,2.6092384519350813,1.4232209737827717,1.6541822721598003,2.8027465667915106,7.240948813982522,5.942571785268415,4.213483146067416,3.114856429463171,2.671660424469413,5.262172284644195,6.741573033707866,4.1136079900124844,6.928838951310862,6.179775280898876,2.3158551810237205,2.034956304619226,1.8352059925093633,3.2521847690387014,5.218476903870163,1.410736579275905,2.471910112359551,6.111111111111111,5.049937578027466,2.3782771535580522,3.682896379525593,2.33458177278402,7.615480649188515,5.443196004993759,1.6791510611735332,1.8227215980024971,5.992509363295881,5.068664169787765,2.777777777777778,2.1161048689138577,2.3470661672908864,7.17852684144819,4.275905118601748,2.671660424469413,5.842696629213483,4.325842696629214,4.769038701622971,5.3620474406991265,7.49063670411985,2.9151061173533086,4.612983770287141,5.243445692883895,6.616729088639201,7.240948813982522,4.51310861423221,3.320848938826467,4.33832709113608,4.4818976279650435,2.8589263420724094,7.116104868913857,4.637952559300874,3.470661672908864,6.866416978776529,2.965043695380774,4.563046192259676,5.118601747815231,5.493133583021224,6.803995006242197,4.875156054931336,7.0536828963795255,7.0536828963795255,5.1248439450686645,3.9076154806491883,2.1161048689138577,2.9151061173533086,7.553058676654182,4.812734082397004,4.107365792759051,1.9975031210986267,7.428214731585518,5.2559300873907615,6.30461922596754,2.9151061173533086,4.762796504369538,4.475655430711611,6.803995006242197,1.5980024968789013,3.3645443196004994,3.0836454431960054,3.7515605493133584,6.866416978776529,2.2908863920099876,6.30461922596754,5.636704119850187,5.2559300873907615, +5.1123595505617985,6.679151061173534,3.7265917602996255,6.679151061173534,4.800249687890138,4.818976279650437,1.7602996254681649,4.563046192259676,2.328339575530587,4.00749063670412,4.687890137328339,2.640449438202247,1.4481897627965044,1.6853932584269664,2.8277153558052435,7.240948813982522,5.97378277153558,4.238451935081149,3.139825218476904,2.696629213483146,5.287141073657928,6.741573033707866,4.132334581772784,6.991260923845194,6.20474406991261,2.3470661672908864,2.066167290886392,1.8601747815230962,3.2833957553058677,5.243445692883895,1.435705368289638,2.5031210986267167,6.1360799001248445,5.068664169787765,2.397003745318352,3.7078651685393256,2.3720349563046192,7.677902621722847,5.468164794007491,1.6978776529338326,1.8476903870162298,6.0174781523096135,5.093632958801498,2.808988764044944,2.1473158551810236,2.3720349563046192,7.240948813982522,4.307116104868914,2.7091136079900124,5.867665418227216,4.3508114856429465,4.806491885143571,5.393258426966292,7.553058676654182,2.9400749063670415,4.637952559300874,5.268414481897628,6.679151061173534,7.240948813982522,4.538077403245943,3.339575530586767,4.3632958801498125,4.51310861423221,2.8776529338327093,7.116104868913857,4.662921348314606,3.4893882646691634,6.866416978776529,2.990012484394507,4.588014981273409,5.149812734082397,5.524344569288389,6.803995006242197,4.900124843945068,7.0536828963795255,7.116104868913857,5.143570536828964,3.938826466916354,2.1410736579275906,2.9463171036204745,7.615480649188515,4.843945068664169,4.138576779026217,2.016229712858926,7.428214731585518,5.280898876404494,6.367041198501872,2.9463171036204745,4.787765293383271,4.51310861423221,6.866416978776529,1.616729088639201,3.3957553058676653,3.114856429463171,3.7890137328339577,6.928838951310862,2.328339575530587,6.30461922596754,5.66167290886392,5.274656679151062, +5.143570536828964,6.679151061173534,3.7578027465667914,6.679151061173534,4.825218476903871,4.837702871410737,1.7790262172284643,4.588014981273409,2.359550561797753,4.032459425717852,4.712858926342073,2.671660424469413,1.4731585518102372,1.7166042446941323,2.852684144818976,7.303370786516854,6.004993757802747,4.269662921348314,3.1647940074906367,2.715355805243446,5.318352059925093,6.803995006242197,4.157303370786517,6.991260923845194,6.235955056179775,2.3782771535580522,2.091136079900125,1.8851435705368291,3.3146067415730336,5.268414481897628,1.4606741573033708,2.5405742821473156,6.154806491885144,5.093632958801498,2.4219725343320846,3.7265917602996255,2.4032459425717856,7.677902621722847,5.493133583021224,1.7166042446941323,1.8726591760299625,6.036204744069912,5.118601747815231,2.8464419475655434,2.1785268414481895,2.4032459425717856,7.240948813982522,4.344569288389513,2.740324594257179,5.8988764044943816,4.382022471910113,4.837702871410737,5.418227215980025,7.553058676654182,2.965043695380774,4.656679151061174,5.299625468164794,6.679151061173534,7.303370786516854,4.563046192259676,3.3583021223470664,4.382022471910113,4.544319600499376,2.902621722846442,7.17852684144819,4.687890137328339,3.5143570536828963,6.928838951310862,3.0149812734082393,4.612983770287141,5.181023720349563,5.555555555555556,6.866416978776529,4.931335830212235,7.116104868913857,7.116104868913857,5.168539325842697,3.9762796504369535,2.1660424469413235,2.9837702871410734,7.615480649188515,4.875156054931336,4.169787765293384,2.0411985018726595,7.49063670411985,5.305867665418227,6.367041198501872,2.977528089887641,4.812734082397004,4.544319600499376,6.866416978776529,1.6416978776529338,3.4269662921348316,3.139825218476904,3.8202247191011236,6.928838951310862,2.359550561797753,6.367041198501872,5.686641697877653,5.299625468164794, +5.174781523096129,6.741573033707866,3.7890137328339577,6.679151061173534,4.850187265917603,4.8626716604244695,1.8039950062421974,4.619225967540574,2.3845193508114857,4.051186017478152,4.7315855181023725,2.702871410736579,1.4918851435705367,1.7478152309612984,2.8776529338327093,7.303370786516854,6.036204744069912,4.300873907615481,3.183520599250936,2.740324594257179,5.34956304619226,6.803995006242197,4.18227215980025,7.0536828963795255,6.242197253433209,2.4032459425717856,2.122347066167291,1.9101123595505618,3.3458177278401995,5.293383270911361,1.4856429463171037,2.571785268414482,6.179775280898876,5.118601747815231,2.446941323345818,3.7515605493133584,2.4406991260923845,7.740324594257178,5.5181023720349565,1.7415730337078652,1.8976279650436954,6.061173533083646,5.149812734082397,2.8776529338327093,2.209737827715356,2.428214731585518,7.303370786516854,4.375780274656679,2.7715355805243447,5.930087390761548,4.406991260923846,4.875156054931336,5.443196004993759,7.615480649188515,2.990012484394507,4.675405742821473,5.324594257178527,6.741573033707866,7.303370786516854,4.594257178526841,3.3770287141073654,4.400749063670412,4.575530586766542,2.9275905118601746,7.17852684144819,4.70661672908864,3.533083645443196,6.928838951310862,3.033707865168539,4.637952559300874,5.212234706616729,5.593008739076155,6.866416978776529,4.956304619225968,7.116104868913857,7.116104868913857,5.187265917602996,4.00749063670412,2.1910112359550564,3.0212234706616727,7.677902621722847,4.906367041198502,4.207240948813983,2.0599250936329585,7.49063670411985,5.33083645443196,6.367041198501872,3.0024968789013733,4.837702871410737,4.575530586766542,6.928838951310862,1.6666666666666667,3.4581772784019975,3.1647940074906367,3.8514357053682895,6.991260923845194,2.397003745318352,6.367041198501872,5.711610486891385,5.324594257178527, +5.205992509363296,6.803995006242197,3.826466916354557,6.741573033707866,4.875156054931336,4.887640449438202,1.8289637952559301,4.644194756554308,2.4157303370786516,4.0761548064918856,4.750312109862672,2.727840199750312,1.5168539325842696,1.772784019975031,2.902621722846442,7.365792759051186,6.067415730337078,4.332084893882647,3.2084893882646695,2.7590511860174782,5.3745318352059925,6.866416978776529,4.207240948813983,7.0536828963795255,6.30461922596754,2.4344569288389515,2.153558052434457,1.9350811485642945,3.383270911360799,5.318352059925093,1.5106117353308364,2.6092384519350813,6.198501872659176,5.1373283395755305,2.4656679151061174,3.776529338327091,2.471910112359551,7.740324594257178,5.543071161048689,1.7602996254681649,1.9225967540574282,6.079900124843945,5.174781523096129,2.908863920099875,2.2347066167290888,2.453183520599251,7.303370786516854,4.413233458177278,2.808988764044944,5.961298377028713,4.438202247191011,4.906367041198502,5.468164794007491,7.615480649188515,3.0087390761548067,4.700374531835206,5.355805243445693,6.803995006242197,7.303370786516854,4.619225967540574,3.3957553058676653,4.425717852684145,4.606741573033708,2.9463171036204745,7.240948813982522,4.7315855181023725,3.5580524344569286,6.991260923845194,3.058676654182272,4.662921348314606,5.243445692883895,5.6242197253433215,6.866416978776529,4.987515605493134,7.17852684144819,7.17852684144819,5.205992509363296,4.044943820224719,2.215980024968789,3.0524344569288386,7.740324594257178,4.937578027465668,4.238451935081149,2.084893882646692,7.553058676654182,5.355805243445693,6.429463171036204,3.033707865168539,4.8626716604244695,4.606741573033708,6.928838951310862,1.6916354556803994,3.4893882646691634,3.1897627965043696,3.888888888888889,7.0536828963795255,2.428214731585518,6.367041198501872,5.736579275905119,5.34956304619226, +5.237203495630462,6.803995006242197,3.857677902621723,6.741573033707866,4.900124843945068,4.906367041198502,1.8476903870162298,4.66916354556804,2.446941323345818,4.1011235955056184,4.775280898876405,2.7590511860174782,1.5418227215980027,1.8039950062421974,2.9275905118601746,7.365792759051186,6.092384519350812,4.3632958801498125,3.233458177278402,2.777777777777778,5.405742821473158,6.866416978776529,4.2322097378277155,7.116104868913857,6.30461922596754,2.4656679151061174,2.184769038701623,1.9600499375780276,3.4144818976279647,5.343320848938826,1.5355805243445693,2.640449438202247,6.223470661672909,5.162297128589263,2.4906367041198503,3.7952559300873907,2.5093632958801497,7.740324594257178,5.561797752808988,1.7790262172284643,1.9475655430711611,6.104868913857677,5.199750312109863,2.9400749063670415,2.2659176029962547,2.478152309612984,7.365792759051186,4.444444444444445,2.84019975031211,5.986267166042447,4.4694132334581775,4.937578027465668,5.493133583021224,7.677902621722847,3.033707865168539,4.719101123595506,5.380774032459426,6.803995006242197,7.365792759051186,4.644194756554308,3.4144818976279647,4.444444444444445,4.637952559300874,2.9712858926342074,7.240948813982522,4.750312109862672,3.576779026217228,6.991260923845194,3.0836454431960054,4.687890137328339,5.274656679151062,5.655430711610487,6.928838951310862,5.012484394506866,7.17852684144819,7.17852684144819,5.230961298377029,4.0761548064918856,2.2409488139825218,3.089887640449438,7.740324594257178,4.9687890137328345,4.269662921348314,2.1036204744069913,7.553058676654182,5.3745318352059925,6.429463171036204,3.0649188514357055,4.887640449438202,4.637952559300874,6.928838951310862,1.7166042446941323,3.5205992509363297,3.2209737827715355,3.920099875156055,7.0536828963795255,2.459425717852684,6.429463171036204,5.761548064918852,5.36828963795256, +5.268414481897628,6.866416978776529,3.888888888888889,6.803995006242197,4.925093632958801,4.931335830212235,1.8726591760299625,4.694132334581773,2.478152309612984,4.119850187265917,4.794007490636704,2.790262172284644,1.5605493133583022,1.8352059925093633,2.9525593008739075,7.428214731585518,6.123595505617978,4.394506866416979,3.258426966292135,2.8027465667915106,5.436953807740325,6.928838951310862,4.257178526841448,7.116104868913857,6.367041198501872,2.4906367041198503,2.215980024968789,1.9850187265917605,3.4456928838951315,5.36828963795256,1.5605493133583022,2.671660424469413,6.242197253433209,5.181023720349563,2.5093632958801497,3.8202247191011236,2.5405742821473156,7.8027465667915115,5.586766541822722,1.797752808988764,1.9662921348314608,6.129837702871411,5.224719101123595,2.977528089887641,2.2971285892634206,2.5093632958801497,7.365792759051186,4.475655430711611,2.871410736579276,6.0174781523096135,4.49438202247191,4.975031210986267,5.524344569288389,7.677902621722847,3.058676654182272,4.737827715355805,5.411985018726591,6.866416978776529,7.365792759051186,4.675405742821473,3.4332084893882646,4.463171036204744,4.66916354556804,2.990012484394507,7.303370786516854,4.775280898876405,3.6017478152309614,6.991260923845194,3.108614232209738,4.712858926342073,5.305867665418227,5.686641697877653,6.928838951310862,5.0374531835206,7.240948813982522,7.17852684144819,5.249687890137328,4.107365792759051,2.2659176029962547,3.1210986267166043,7.8027465667915115,5.0,4.307116104868914,2.128589263420724,7.615480649188515,5.399500624219725,6.491885143570538,3.0961298377028714,4.912609238451935,4.675405742821473,6.991260923845194,1.7415730337078652,3.5518102372034956,3.245942571785269,3.951310861423221,7.116104868913857,2.4968789013732833,6.429463171036204,5.792759051186017,5.393258426966292, +5.299625468164794,6.866416978776529,3.926342072409488,6.803995006242197,4.950062421972534,4.950062421972534,1.8976279650436954,4.719101123595506,2.5031210986267167,4.144818976279651,4.818976279650437,2.8152309612983775,1.585518102372035,1.8664169787765295,2.977528089887641,7.428214731585518,6.154806491885144,4.425717852684145,3.2833957553058677,2.82147315855181,5.461922596754057,6.928838951310862,4.282147315855181,7.17852684144819,6.367041198501872,2.521847690387016,2.2409488139825218,2.009987515605493,3.4769038701622974,5.393258426966292,1.585518102372035,2.7091136079900124,6.242197253433209,5.205992509363296,2.5343320848938826,3.8451935081148565,2.578027465667915,7.8027465667915115,5.611735330836455,1.8227215980024971,1.9912609238451935,6.1485642946317105,5.2559300873907615,3.0087390761548067,2.322097378277154,2.5343320848938826,7.428214731585518,4.51310861423221,2.908863920099875,6.048689138576779,4.525593008739076,5.0062421972534334,5.549313358302123,7.740324594257178,3.0836454431960054,4.762796504369538,5.436953807740325,6.866416978776529,7.428214731585518,4.700374531835206,3.451935081148564,4.488139825218477,4.700374531835206,3.0149812734082393,7.303370786516854,4.794007490636704,3.620474406991261,7.0536828963795255,3.1335830212234708,4.737827715355805,5.337078651685393,5.724094881398252,6.991260923845194,5.068664169787765,7.240948813982522,7.240948813982522,5.268414481897628,4.144818976279651,2.2908863920099876,3.1585518102372037,7.8027465667915115,5.031210986267166,4.33832709113608,2.1473158551810236,7.615480649188515,5.424469413233458,6.491885143570538,3.1273408239700373,4.937578027465668,4.70661672908864,6.991260923845194,1.7602996254681649,3.5830212234706615,3.2709113607990012,3.9887640449438204,7.17852684144819,2.5280898876404496,6.491885143570538,5.81772784019975,5.418227215980025, +5.324594257178527,6.928838951310862,3.957553058676654,6.866416978776529,4.975031210986267,4.975031210986267,1.916354556803995,4.750312109862672,2.5343320848938826,4.169787765293384,4.837702871410737,2.8464419475655434,1.6104868913857677,1.8976279650436954,3.0024968789013733,7.49063670411985,6.186017478152309,4.456928838951311,3.3083645443196006,2.8464419475655434,5.493133583021224,6.991260923845194,4.307116104868914,7.17852684144819,6.429463171036204,2.5530586766541825,2.272159800249688,2.034956304619226,3.508114856429463,5.418227215980025,1.6104868913857677,2.740324594257179,6.30461922596754,5.224719101123595,2.5593008739076155,3.870162297128589,2.6092384519350813,7.865168539325843,5.636704119850187,1.8414481897627966,2.016229712858926,6.173533083645444,5.280898876404494,3.0399500624219726,2.35330836454432,2.5593008739076155,7.428214731585518,4.544319600499376,2.9400749063670415,6.079900124843945,4.55056179775281,5.043695380774032,5.574282147315855,7.8027465667915115,3.108614232209738,4.781523096129837,5.468164794007491,6.928838951310862,7.428214731585518,4.725343320848939,3.4769038701622974,4.506866416978776,4.7315855181023725,3.033707865168539,7.365792759051186,4.818976279650437,3.6454431960049942,7.0536828963795255,3.1585518102372037,4.762796504369538,5.36828963795256,5.7553058676654185,6.991260923845194,5.093632958801498,7.303370786516854,7.240948813982522,5.293383270911361,4.176029962546816,2.3158551810237205,3.1960049937578026,7.865168539325843,5.062421972534332,4.375780274656679,2.1722846441947565,7.677902621722847,5.449438202247191,6.491885143570538,3.1585518102372037,4.962546816479401,4.737827715355805,7.0536828963795255,1.7852684144818978,3.6142322097378274,3.3021223470661676,4.019975031210986,7.17852684144819,2.565543071161049,6.491885143570538,5.842696629213483,5.436953807740325, +5.355805243445693,6.928838951310862,3.9887640449438204,6.866416978776529,5.0,5.0,1.941323345817728,4.775280898876405,2.565543071161049,4.188514357053683,4.856429463171036,2.8776529338327093,1.6292134831460674,1.9225967540574282,3.027465667915106,7.49063670411985,6.217228464419476,4.488139825218477,3.3333333333333335,2.865168539325843,5.524344569288389,6.991260923845194,4.332084893882647,7.240948813982522,6.429463171036204,2.578027465667915,2.303370786516854,2.0599250936329585,3.5393258426966296,5.443196004993759,1.6354556803995006,2.7715355805243447,6.30461922596754,5.249687890137328,2.578027465667915,3.888888888888889,2.6466916354556806,7.865168539325843,5.66167290886392,1.8601747815230962,2.0411985018726595,6.192259675405743,5.305867665418227,3.0711610486891385,2.3845193508114857,2.5905118601747814,7.49063670411985,4.575530586766542,2.977528089887641,6.104868913857677,4.581772784019975,5.074906367041199,5.599250936329588,7.8027465667915115,3.1335830212234708,4.800249687890138,5.493133583021224,6.991260923845194,7.428214731585518,4.750312109862672,3.495630461922597,4.525593008739076,4.762796504369538,3.058676654182272,7.365792759051186,4.843945068664169,3.6641697877652937,7.0536828963795255,3.183520599250936,4.787765293383271,5.399500624219725,5.786516853932584,6.991260923845194,5.118601747815231,7.303370786516854,7.240948813982522,5.312109862671661,4.213483146067416,2.340823970037453,3.227215980024969,7.927590511860175,5.087390761548065,4.406991260923846,2.1910112359550564,7.677902621722847,5.474406991260924,6.554307116104869,3.1897627965043696,4.987515605493134,4.769038701622971,7.0536828963795255,1.8102372034956304,3.6454431960049942,3.3270911360799,4.051186017478152,7.240948813982522,2.596754057428215,6.554307116104869,5.867665418227216,5.461922596754057, +5.3870162297128585,6.991260923845194,4.02621722846442,6.928838951310862,5.024968789013733,5.0187265917602994,1.9662921348314608,4.800249687890138,2.596754057428215,4.213483146067416,4.881398252184769,2.908863920099875,1.6541822721598003,1.9538077403245941,3.0524344569288386,7.553058676654182,6.242197253433209,4.519350811485642,3.3583021223470664,2.8901373283395753,5.549313358302123,7.0536828963795255,4.3508114856429465,7.240948813982522,6.491885143570538,2.6092384519350813,2.33458177278402,2.084893882646692,3.5705368289637955,5.468164794007491,1.6541822721598003,2.808988764044944,6.30461922596754,5.274656679151062,2.602996254681648,3.9138576779026217,2.6779026217228465,7.927590511860175,5.686641697877653,1.8851435705368291,2.066167290886392,6.217228464419476,5.337078651685393,3.108614232209738,2.4157303370786516,2.6154806491885143,7.49063670411985,4.612983770287141,3.0087390761548067,6.1360799001248445,4.606741573033708,5.1123595505617985,5.6242197253433215,7.865168539325843,3.15230961298377,4.825218476903871,5.524344569288389,6.991260923845194,7.49063670411985,4.781523096129837,3.5143570536828963,4.55056179775281,4.794007490636704,3.0836454431960054,7.428214731585518,4.8626716604244695,3.689138576779026,7.116104868913857,3.2084893882646695,4.812734082397004,5.430711610486892,5.81772784019975,7.0536828963795255,5.149812734082397,7.365792759051186,7.303370786516854,5.33083645443196,4.244694132334582,2.3657927590511862,3.2646691635455682,7.927590511860175,5.118601747815231,4.438202247191011,2.215980024968789,7.740324594257178,5.499375780274657,6.554307116104869,3.2209737827715355,5.012484394506866,4.800249687890138,7.116104868913857,1.8352059925093633,3.6766541822721597,3.352059925093633,4.082397003745319,7.240948813982522,2.634207240948814,6.554307116104869,5.892634207240949,5.48689138576779, +5.418227215980025,6.991260923845194,4.057428214731585,6.928838951310862,5.049937578027466,5.043695380774032,1.9850187265917605,4.825218476903871,2.6217228464419473,4.238451935081149,4.900124843945068,2.933832709113608,1.6791510611735332,1.9850187265917605,3.077403245942572,7.553058676654182,6.30461922596754,4.55056179775281,3.383270911360799,2.908863920099875,5.580524344569288,7.0536828963795255,4.375780274656679,7.303370786516854,6.491885143570538,2.640449438202247,2.3657927590511862,2.1098626716604243,3.6017478152309614,5.493133583021224,1.6791510611735332,2.84019975031211,6.367041198501872,5.293383270911361,2.6217228464419473,3.938826466916354,2.715355805243446,7.927590511860175,5.711610486891385,1.9038701622971288,2.091136079900125,6.235955056179775,5.3620474406991265,3.139825218476904,2.4406991260923845,2.640449438202247,7.553058676654182,4.644194756554308,3.0399500624219726,6.167290886392011,4.637952559300874,5.143570536828964,5.655430711610487,7.865168539325843,3.1772784019975036,4.843945068664169,5.555555555555556,7.0536828963795255,7.49063670411985,4.806491885143571,3.533083645443196,4.569288389513109,4.831460674157303,3.102372034956305,7.428214731585518,4.887640449438202,3.7078651685393256,7.116104868913857,3.233458177278402,4.837702871410737,5.461922596754057,5.855181023720349,7.0536828963795255,5.174781523096129,7.365792759051186,7.303370786516854,5.355805243445693,4.282147315855181,2.3907615480649187,3.295880149812734,7.990012484394507,5.149812734082397,4.475655430711611,2.2347066167290888,7.740324594257178,5.524344569288389,6.616729088639201,3.2521847690387014,5.0374531835206,4.831460674157303,7.116104868913857,1.8601747815230962,3.701622971285893,3.3770287141073654,4.119850187265917,7.303370786516854,2.66541822721598,6.616729088639201,5.917602996254682,5.511860174781523, +5.449438202247191,7.0536828963795255,4.094881398252185,6.928838951310862,5.074906367041199,5.068664169787765,2.009987515605493,4.850187265917603,2.6529338327091136,4.257178526841448,4.925093632958801,2.965043695380774,1.6978776529338326,2.016229712858926,3.102372034956305,7.615480649188515,6.30461922596754,4.581772784019975,3.408239700374532,2.933832709113608,5.611735330836455,7.116104868913857,4.400749063670412,7.303370786516854,6.554307116104869,2.66541822721598,2.397003745318352,2.134831460674157,3.6329588014981273,5.5181023720349565,1.704119850187266,2.8776529338327093,6.367041198501872,5.318352059925093,2.6466916354556806,3.9637952559300875,2.752808988764045,7.990012484394507,5.730337078651686,1.9225967540574282,2.1161048689138577,6.242197253433209,5.3870162297128585,3.17103620474407,2.471910112359551,2.671660424469413,7.553058676654182,4.675405742821473,3.077403245942572,6.198501872659176,4.66916354556804,5.174781523096129,5.68039950062422,7.927590511860175,3.202247191011236,4.868913857677903,5.580524344569288,7.0536828963795255,7.553058676654182,4.831460674157303,3.5518102372034956,4.588014981273409,4.8626716604244695,3.1273408239700373,7.428214731585518,4.906367041198502,3.732833957553059,7.116104868913857,3.258426966292135,4.8626716604244695,5.493133583021224,5.8863920099875156,7.0536828963795255,5.199750312109863,7.428214731585518,7.303370786516854,5.3745318352059925,4.313358302122348,2.4157303370786516,3.3333333333333335,7.990012484394507,5.181023720349563,4.506866416978776,2.259675405742821,7.8027465667915115,5.543071161048689,6.616729088639201,3.2833957553058677,5.062421972534332,4.868913857677903,7.17852684144819,1.8851435705368291,3.732833957553059,3.408239700374532,4.151061173533084,7.365792759051186,2.696629213483146,6.616729088639201,5.942571785268415,5.5305867665418225, +5.480649188514358,7.0536828963795255,4.1260923845193505,6.991260923845194,5.099875156054932,5.087390761548065,2.034956304619226,4.881398252184769,2.68414481897628,4.282147315855181,4.943820224719102,2.9962546816479403,1.7228464419475658,2.0474406991260925,3.1210986267166043,7.615480649188515,6.367041198501872,4.612983770287141,3.4332084893882646,2.9525593008739075,5.636704119850187,7.116104868913857,4.425717852684145,7.365792759051186,6.554307116104869,2.696629213483146,2.4219725343320846,2.15980024968789,3.6641697877652937,5.543071161048689,1.7290886392009988,2.908863920099875,6.367041198501872,5.337078651685393,2.671660424469413,3.982521847690387,2.7840199750312107,7.990012484394507,5.7553058676654185,1.9475655430711611,2.134831460674157,6.30461922596754,5.411985018726591,3.202247191011236,2.5031210986267167,2.696629213483146,7.615480649188515,4.712858926342073,3.108614232209738,6.223470661672909,4.694132334581773,5.212234706616729,5.705368289637952,7.927590511860175,3.227215980024969,4.887640449438202,5.611735330836455,7.116104868913857,7.553058676654182,4.8626716604244695,3.5705368289637955,4.612983770287141,4.893882646691636,3.1460674157303368,7.49063670411985,4.931335830212235,3.7515605493133584,7.17852684144819,3.2771535580524347,4.887640449438202,5.5181023720349565,5.917602996254682,7.116104868913857,5.230961298377029,7.428214731585518,7.365792759051186,5.393258426966292,4.3508114856429465,2.4406991260923845,3.3645443196004994,8.05243445692884,5.212234706616729,4.538077403245943,2.278401997503121,7.8027465667915115,5.568039950062421,6.616729088639201,3.3146067415730336,5.087390761548065,4.900124843945068,7.17852684144819,1.9101123595505618,3.764044943820225,3.4332084893882646,4.18227215980025,7.365792759051186,2.7340823970037453,6.679151061173534,5.967540574282147,5.555555555555556, +5.511860174781523,7.116104868913857,4.157303370786517,6.991260923845194,5.1248439450686645,5.1123595505617985,2.0536828963795255,4.906367041198502,2.715355805243446,4.307116104868914,4.9687890137328345,3.027465667915106,1.7478152309612984,2.0724094881398254,3.1460674157303368,7.677902621722847,6.367041198501872,4.644194756554308,3.4581772784019975,2.977528089887641,5.667915106117353,7.17852684144819,4.450686641697877,7.365792759051186,6.616729088639201,2.727840199750312,2.453183520599251,2.184769038701623,3.6953807740324596,5.568039950062421,1.7540574282147314,2.9400749063670415,6.429463171036204,5.3620474406991265,2.690387016229713,4.00749063670412,2.82147315855181,8.05243445692884,5.7802746566791505,1.9662921348314608,2.15980024968789,6.30461922596754,5.443196004993759,3.2397003745318353,2.5280898876404496,2.7215980024968793,7.615480649188515,4.7440699126092385,3.1460674157303368,6.242197253433209,4.725343320848939,5.243445692883895,5.730337078651686,7.990012484394507,3.2521847690387014,4.906367041198502,5.636704119850187,7.17852684144819,7.553058676654182,4.887640449438202,3.589263420724095,4.631710362047441,4.925093632958801,3.17103620474407,7.49063670411985,4.956304619225968,3.776529338327091,7.17852684144819,3.3021223470661676,4.912609238451935,5.549313358302123,5.948813982521848,7.116104868913857,5.2559300873907615,7.49063670411985,7.365792759051186,5.418227215980025,4.382022471910113,2.4656679151061174,3.4019975031210987,8.11485642946317,5.243445692883895,4.575530586766542,2.303370786516854,7.865168539325843,5.593008739076155,6.679151061173534,3.3458177278401995,5.118601747815231,4.931335830212235,7.240948813982522,1.9288389513108615,3.7952559300873907,3.4581772784019975,4.219725343320849,7.428214731585518,2.7652933832709112,6.679151061173534,5.998751560549313,5.580524344569288, +5.543071161048689,7.116104868913857,4.194756554307116,7.0536828963795255,5.149812734082397,5.1373283395755305,2.0786516853932584,4.931335830212235,2.740324594257179,4.325842696629214,4.987515605493134,3.0524344569288386,1.766541822721598,2.1036204744069913,3.17103620474407,7.677902621722847,6.429463171036204,4.675405742821473,3.4831460674157304,2.9962546816479403,5.69912609238452,7.17852684144819,4.475655430711611,7.428214731585518,6.616729088639201,2.752808988764045,2.4843945068664173,2.209737827715356,3.732833957553059,5.593008739076155,1.7790262172284643,2.977528089887641,6.429463171036204,5.380774032459426,2.715355805243446,4.032459425717852,2.852684144818976,8.05243445692884,5.805243445692884,1.9850187265917605,2.184769038701623,6.30461922596754,5.468164794007491,3.2709113607990012,2.5593008739076155,2.752808988764045,7.677902621722847,4.781523096129837,3.1772784019975036,6.30461922596754,4.750312109862672,5.280898876404494,5.7553058676654185,8.05243445692884,3.2709113607990012,4.931335830212235,5.667915106117353,7.17852684144819,7.615480649188515,4.912609238451935,3.607990012484395,4.65043695380774,4.956304619225968,3.1960049937578026,7.553058676654182,4.975031210986267,3.7952559300873907,7.17852684144819,3.3270911360799,4.937578027465668,5.580524344569288,5.980024968789014,7.17852684144819,5.280898876404494,7.49063670411985,7.365792759051186,5.436953807740325,4.419475655430712,2.4906367041198503,3.439450686641698,8.11485642946317,5.274656679151062,4.606741573033708,2.322097378277154,7.865168539325843,5.617977528089888,6.679151061173534,3.3770287141073654,5.143570536828964,4.962546816479401,7.240948813982522,1.9538077403245941,3.826466916354557,3.4831460674157304,4.250936329588015,7.49063670411985,2.8027465667915106,6.741573033707866,6.023720349563047,5.605493133583021, +5.574282147315855,7.17852684144819,4.225967540574282,7.0536828963795255,5.174781523096129,5.15605493133583,2.1036204744069913,4.956304619225968,2.7715355805243447,4.3508114856429465,5.0062421972534334,3.0836454431960054,1.7915106117353308,2.134831460674157,3.1960049937578026,7.677902621722847,6.429463171036204,4.70661672908864,3.508114856429463,3.0212234706616727,5.724094881398252,7.240948813982522,4.500624219725343,7.428214731585518,6.616729088639201,2.7840199750312107,2.515605493133583,2.2347066167290888,3.764044943820225,5.617977528089888,1.8039950062421974,3.0087390761548067,6.429463171036204,5.405742821473158,2.7340823970037453,4.051186017478152,2.8901373283395753,8.11485642946317,5.830212234706617,2.00374531835206,2.209737827715356,6.367041198501872,5.493133583021224,3.3021223470661676,2.5905118601747814,2.777777777777778,7.677902621722847,4.812734082397004,3.2084893882646695,6.30461922596754,4.781523096129837,5.312109862671661,5.786516853932584,8.05243445692884,3.295880149812734,4.950062421972534,5.692883895131087,7.240948813982522,7.615480649188515,4.943820224719102,3.6267166042446943,4.675405742821473,4.987515605493134,3.214731585518102,7.553058676654182,5.0,3.8202247191011236,7.240948813982522,3.352059925093633,4.962546816479401,5.611735330836455,6.0174781523096135,7.17852684144819,5.312109862671661,7.553058676654182,7.428214731585518,5.455680399500624,4.450686641697877,2.515605493133583,3.470661672908864,8.177278401997503,5.305867665418227,4.637952559300874,2.340823970037453,7.927590511860175,5.64294631710362,6.741573033707866,3.408239700374532,5.168539325842697,4.9937578027465666,7.303370786516854,1.978776529338327,3.857677902621723,3.5143570536828963,4.282147315855181,7.49063670411985,2.8339575530586765,6.741573033707866,6.048689138576779,5.6242197253433215, +5.599250936329588,7.17852684144819,4.257178526841448,7.116104868913857,5.199750312109863,5.181023720349563,2.122347066167291,4.987515605493134,2.8027465667915106,4.375780274656679,5.031210986267166,3.114856429463171,1.8102372034956304,2.1660424469413235,3.2209737827715355,7.740324594257178,6.491885143570538,4.737827715355805,3.5268414481897628,3.0399500624219726,5.7553058676654185,7.240948813982522,4.525593008739076,7.49063670411985,6.679151061173534,2.8152309612983775,2.546816479400749,2.259675405742821,3.7952559300873907,5.64294631710362,1.8289637952559301,3.0399500624219726,6.491885143570538,5.430711610486892,2.7590511860174782,4.0761548064918856,2.9213483146067416,8.11485642946317,5.855181023720349,2.0287141073657926,2.2347066167290888,6.367041198501872,5.524344569288389,3.3333333333333335,2.6217228464419473,2.8027465667915106,7.740324594257178,4.843945068664169,3.245942571785269,6.367041198501872,4.806491885143571,5.343320848938826,5.811485642946318,8.11485642946317,3.320848938826467,4.9687890137328345,5.724094881398252,7.240948813982522,7.677902621722847,4.9687890137328345,3.651685393258427,4.694132334581773,5.0187265917602994,3.2397003745318353,7.615480649188515,5.0187265917602994,3.8389513108614235,7.240948813982522,3.3770287141073654,4.987515605493134,5.64294631710362,6.048689138576779,7.17852684144819,5.337078651685393,7.553058676654182,7.428214731585518,5.480649188514358,4.488139825218477,2.5405742821473156,3.508114856429463,8.239700374531834,5.337078651685393,4.675405742821473,2.3657927590511862,7.927590511860175,5.667915106117353,6.741573033707866,3.439450686641698,5.19350811485643,5.031210986267166,7.303370786516854,2.00374531835206,3.888888888888889,3.5393258426966296,4.31960049937578,7.553058676654182,2.871410736579276,6.803995006242197,6.073657927590512,5.6491885143570535, +5.630461922596755,7.240948813982522,4.294631710362047,7.116104868913857,5.224719101123595,5.205992509363296,2.1473158551810236,5.012484394506866,2.8339575530586765,4.394506866416979,5.049937578027466,3.139825218476904,1.8352059925093633,2.1910112359550564,3.245942571785269,7.740324594257178,6.491885143570538,4.769038701622971,3.5518102372034956,3.0649188514357055,5.786516853932584,7.303370786516854,4.55056179775281,7.49063670411985,6.679151061173534,2.84019975031211,2.578027465667915,2.2846441947565546,3.826466916354557,5.667915106117353,1.8539325842696628,3.077403245942572,6.491885143570538,5.449438202247191,2.7840199750312107,4.1011235955056184,2.958801498127341,8.177278401997503,5.8739076154806495,2.0474406991260925,2.259675405742821,6.367041198501872,5.549313358302123,3.370786516853933,2.6466916354556806,2.8339575530586765,7.740324594257178,4.881398252184769,3.2771535580524347,6.367041198501872,4.837702871410737,5.380774032459426,5.836454431960051,8.11485642946317,3.3458177278401995,4.9937578027465666,5.749063670411985,7.303370786516854,7.677902621722847,4.9937578027465666,3.6704119850187267,4.712858926342073,5.049937578027466,3.258426966292135,7.615480649188515,5.043695380774032,3.8639200998751564,7.240948813982522,3.4019975031210987,5.012484394506866,5.674157303370786,6.079900124843945,7.240948813982522,5.3620474406991265,7.615480649188515,7.428214731585518,5.499375780274657,4.519350811485642,2.565543071161049,3.5393258426966296,8.239700374531834,5.36828963795256,4.70661672908864,2.3845193508114857,7.990012484394507,5.692883895131087,6.741573033707866,3.470661672908864,5.218476903870163,5.062421972534332,7.365792759051186,2.0287141073657926,3.920099875156055,3.564294631710362,4.3508114856429465,7.553058676654182,2.902621722846442,6.803995006242197,6.098626716604246,5.674157303370786, +5.66167290886392,7.303370786516854,4.325842696629214,7.17852684144819,5.249687890137328,5.224719101123595,2.1722846441947565,5.0374531835206,2.8589263420724094,4.419475655430712,5.074906367041199,3.17103620474407,1.8601747815230962,2.2222222222222223,3.2709113607990012,7.8027465667915115,6.554307116104869,4.800249687890138,3.576779026217228,3.0836454431960054,5.811485642946318,7.303370786516854,4.569288389513109,7.553058676654182,6.741573033707866,2.871410736579276,2.602996254681648,2.309612983770287,3.857677902621723,5.692883895131087,1.8789013732833957,3.108614232209738,6.491885143570538,5.474406991260924,2.8027465667915106,4.1260923845193505,2.990012484394507,8.177278401997503,5.8988764044943816,2.066167290886392,2.278401997503121,6.429463171036204,5.574282147315855,3.4019975031210987,2.6779026217228465,2.8589263420724094,7.8027465667915115,4.912609238451935,3.3146067415730336,6.429463171036204,4.868913857677903,5.411985018726591,5.861423220973783,8.177278401997503,3.370786516853933,5.012484394506866,5.7802746566791505,7.365792759051186,7.677902621722847,5.024968789013733,3.689138576779026,4.737827715355805,5.081148564294631,3.2833957553058677,7.677902621722847,5.068664169787765,3.882646691635456,7.303370786516854,3.4269662921348316,5.0374531835206,5.705368289637952,6.111111111111111,7.240948813982522,5.393258426966292,7.615480649188515,7.49063670411985,5.524344569288389,4.55056179775281,2.5905118601747814,3.576779026217228,8.302122347066168,5.399500624219725,4.737827715355805,2.4094881398252186,7.990012484394507,5.711610486891385,6.803995006242197,3.5018726591760303,5.243445692883895,5.093632958801498,7.365792759051186,2.0536828963795255,3.951310861423221,3.595505617977528,4.382022471910113,7.615480649188515,2.9400749063670415,6.866416978776529,6.123595505617978,5.69912609238452, +5.692883895131087,7.303370786516854,4.357053682896379,7.17852684144819,5.274656679151062,5.249687890137328,2.1910112359550564,5.062421972534332,2.8901373283395753,4.444444444444445,5.093632958801498,3.202247191011236,1.8789013732833957,2.253433208489388,3.295880149812734,7.8027465667915115,6.554307116104869,4.831460674157303,3.6017478152309614,3.102372034956305,5.842696629213483,7.365792759051186,4.594257178526841,7.553058676654182,6.741573033707866,2.902621722846442,2.634207240948814,2.33458177278402,3.888888888888889,5.711610486891385,1.9038701622971288,3.1460674157303368,6.554307116104869,5.493133583021224,2.8277153558052435,4.144818976279651,3.027465667915106,8.239700374531834,5.9238451935081144,2.091136079900125,2.303370786516854,6.429463171036204,5.599250936329588,3.4332084893882646,2.7091136079900124,2.8838951310861427,7.8027465667915115,4.943820224719102,3.3458177278401995,6.429463171036204,4.893882646691636,5.449438202247191,5.8863920099875156,8.177278401997503,3.3957553058676653,5.031210986267166,5.805243445692884,7.365792759051186,7.740324594257178,5.049937578027466,3.7078651685393256,4.7565543071161045,5.1123595505617985,3.3021223470661676,7.677902621722847,5.087390761548065,3.9076154806491883,7.303370786516854,3.451935081148564,5.062421972534332,5.736579275905119,6.1485642946317105,7.240948813982522,5.418227215980025,7.677902621722847,7.49063670411985,5.543071161048689,4.588014981273409,2.6154806491885143,3.6142322097378274,8.302122347066168,5.430711610486892,4.775280898876405,2.428214731585518,8.05243445692884,5.736579275905119,6.803995006242197,3.533083645443196,5.268414481897628,5.1248439450686645,7.365792759051186,2.0724094881398254,3.982521847690387,3.620474406991261,4.413233458177278,7.677902621722847,2.9712858926342074,6.866416978776529,6.1485642946317105,5.717852684144819, +5.724094881398252,7.365792759051186,4.394506866416979,7.240948813982522,5.299625468164794,5.274656679151062,2.215980024968789,5.087390761548065,2.9213483146067416,4.463171036204744,5.118601747815231,3.233458177278402,1.9038701622971288,2.2846441947565546,3.320848938826467,7.865168539325843,6.616729088639201,4.8626716604244695,3.6267166042446943,3.1273408239700373,5.8739076154806495,7.365792759051186,4.619225967540574,7.615480649188515,6.803995006242197,2.9275905118601746,2.66541822721598,2.359550561797753,3.920099875156055,5.736579275905119,1.9288389513108615,3.1772784019975036,6.554307116104869,5.5181023720349565,2.8464419475655434,4.169787765293384,3.058676654182272,8.239700374531834,5.948813982521848,2.1098626716604243,2.328339575530587,6.429463171036204,5.630461922596755,3.464419475655431,2.7340823970037453,2.9151061173533086,7.865168539325843,4.9812734082397006,3.3770287141073654,6.491885143570538,4.925093632958801,5.480649188514358,5.917602996254682,8.239700374531834,3.4144818976279647,5.056179775280899,5.836454431960051,7.428214731585518,7.740324594257178,5.074906367041199,3.7265917602996255,4.775280898876405,5.143570536828964,3.3270911360799,7.740324594257178,5.1123595505617985,3.926342072409488,7.303370786516854,3.4769038701622974,5.081148564294631,5.767790262172285,6.179775280898876,7.303370786516854,5.449438202247191,7.677902621722847,7.49063670411985,5.561797752808988,4.619225967540574,2.640449438202247,3.6454431960049942,8.3645443196005,5.461922596754057,4.806491885143571,2.453183520599251,8.05243445692884,5.761548064918852,6.866416978776529,3.564294631710362,5.293383270911361,5.15605493133583,7.428214731585518,2.097378277153558,4.013732833957553,3.6454431960049942,4.450686641697877,7.677902621722847,3.0024968789013733,6.928838951310862,6.173533083645444,5.742821473158552, +5.7553058676654185,7.365792759051186,4.425717852684145,7.240948813982522,5.324594257178527,5.293383270911361,2.2409488139825218,5.118601747815231,2.9525593008739075,4.488139825218477,5.1373283395755305,3.258426966292135,1.9288389513108615,2.3158551810237205,3.3458177278401995,7.865168539325843,6.616729088639201,4.893882646691636,3.651685393258427,3.1460674157303368,5.8988764044943816,7.428214731585518,4.644194756554308,7.615480649188515,6.803995006242197,2.958801498127341,2.696629213483146,2.3845193508114857,3.951310861423221,5.761548064918852,1.9538077403245941,3.2084893882646695,6.616729088639201,5.536828963795256,2.871410736579276,4.194756554307116,3.0961298377028714,8.302122347066168,5.97378277153558,2.128589263420724,2.35330836454432,6.491885143570538,5.655430711610487,3.5018726591760303,2.7652933832709112,2.9400749063670415,7.865168539325843,5.012484394506866,3.4144818976279647,6.491885143570538,4.950062421972534,5.5181023720349565,5.942571785268415,8.302122347066168,3.439450686641698,5.074906367041199,5.867665418227216,7.428214731585518,7.8027465667915115,5.106117353308365,3.745318352059925,4.800249687890138,5.181023720349563,3.352059925093633,7.740324594257178,5.131086142322098,3.951310861423221,7.365792759051186,3.5018726591760303,5.106117353308365,5.799001248439451,6.210986267166042,7.303370786516854,5.474406991260924,7.740324594257178,7.553058676654182,5.586766541822722,4.656679151061174,2.6591760299625467,3.682896379525593,8.426966292134832,5.493133583021224,4.837702871410737,2.471910112359551,8.11485642946317,5.786516853932584,6.866416978776529,3.595505617977528,5.318352059925093,5.19350811485643,7.428214731585518,2.122347066167291,4.044943820224719,3.6704119850187267,4.4818976279650435,7.740324594257178,3.0399500624219726,6.928838951310862,6.20474406991261,5.767790262172285, +5.786516853932584,7.428214731585518,4.463171036204744,7.240948813982522,5.34956304619226,5.318352059925093,2.259675405742821,5.143570536828964,2.977528089887641,4.51310861423221,5.15605493133583,3.2896379525593007,1.9475655430711611,2.340823970037453,3.370786516853933,7.927590511860175,6.679151061173534,4.925093632958801,3.6766541822721597,3.17103620474407,5.930087390761548,7.428214731585518,4.66916354556804,7.677902621722847,6.866416978776529,2.990012484394507,2.727840199750312,2.4094881398252186,3.982521847690387,5.786516853932584,1.978776529338327,3.245942571785269,6.616729088639201,5.561797752808988,2.8963795255930087,4.219725343320849,3.1273408239700373,8.302122347066168,5.998751560549313,2.1473158551810236,2.3782771535580522,6.491885143570538,5.68039950062422,3.533083645443196,2.7965043695380776,2.965043695380774,7.927590511860175,5.049937578027466,3.4456928838951315,6.491885143570538,4.9812734082397006,5.549313358302123,5.967540574282147,8.302122347066168,3.464419475655431,5.093632958801498,5.892634207240949,7.49063670411985,7.8027465667915115,5.131086142322098,3.764044943820225,4.818976279650437,5.212234706616729,3.370786516853933,7.8027465667915115,5.15605493133583,3.970037453183521,7.365792759051186,3.5205992509363297,5.131086142322098,5.830212234706617,6.242197253433209,7.365792759051186,5.499375780274657,7.740324594257178,7.553058676654182,5.605493133583021,4.687890137328339,2.68414481897628,3.714107365792759,8.426966292134832,5.524344569288389,4.875156054931336,2.4968789013732833,8.11485642946317,5.811485642946318,6.866416978776529,3.6267166042446943,5.343320848938826,5.224719101123595,7.49063670411985,2.1473158551810236,4.0761548064918856,3.701622971285893,4.51310861423221,7.8027465667915115,3.0711610486891385,6.991260923845194,6.229712858926342,5.786516853932584, +5.81772784019975,7.428214731585518,4.49438202247191,7.303370786516854,5.3745318352059925,5.337078651685393,2.2846441947565546,5.168539325842697,3.0087390761548067,4.531835205992509,5.181023720349563,3.320848938826467,1.9725343320848938,2.3720349563046192,3.3957553058676653,7.927590511860175,6.679151061173534,4.950062421972534,3.701622971285893,3.1897627965043696,5.961298377028713,7.49063670411985,4.694132334581773,7.677902621722847,6.866416978776529,3.0149812734082393,2.7590511860174782,2.4344569288389515,4.013732833957553,5.811485642946318,2.00374531835206,3.2771535580524347,6.616729088639201,5.586766541822722,2.9151061173533086,4.238451935081149,3.1647940074906367,8.3645443196005,6.023720349563047,2.1722846441947565,2.4032459425717856,6.554307116104869,5.711610486891385,3.564294631710362,2.8277153558052435,2.9962546816479403,7.927590511860175,5.081148564294631,3.4769038701622974,6.554307116104869,5.0062421972534334,5.580524344569288,5.992509363295881,8.3645443196005,3.4893882646691634,5.118601747815231,5.9238451935081144,7.553058676654182,7.8027465667915115,5.15605493133583,3.7827715355805243,4.837702871410737,5.243445692883895,3.3957553058676653,7.8027465667915115,5.181023720349563,3.9950062421972534,7.365792759051186,3.545568039950062,5.15605493133583,5.861423220973783,6.30461922596754,7.365792759051186,5.5305867665418225,7.8027465667915115,7.553058676654182,5.6242197253433215,4.725343320848939,2.7091136079900124,3.7515605493133584,8.489388264669165,5.555555555555556,4.906367041198502,2.515605493133583,8.177278401997503,5.836454431960051,6.928838951310862,3.6579275905118602,5.36828963795256,5.2559300873907615,7.49063670411985,2.1722846441947565,4.107365792759051,3.7265917602996255,4.55056179775281,7.8027465667915115,3.108614232209738,6.991260923845194,6.242197253433209,5.811485642946318, +5.842696629213483,7.49063670411985,4.525593008739076,7.303370786516854,5.405742821473158,5.3620474406991265,2.309612983770287,5.19350811485643,3.0399500624219726,4.556803995006242,5.199750312109863,3.352059925093633,1.9975031210986267,2.4032459425717856,3.420724094881398,7.990012484394507,6.741573033707866,4.9812734082397006,3.7265917602996255,3.214731585518102,5.986267166042447,7.49063670411985,4.719101123595506,7.740324594257178,6.928838951310862,3.046192259675406,2.7840199750312107,2.459425717852684,4.044943820224719,5.836454431960051,2.0287141073657926,3.3083645443196006,6.679151061173534,5.605493133583021,2.9400749063670415,4.263420724094882,3.1960049937578026,8.3645443196005,6.0424469413233455,2.1910112359550564,2.428214731585518,6.554307116104869,5.736579275905119,3.595505617977528,2.852684144818976,3.0212234706616727,7.990012484394507,5.1123595505617985,3.5143570536828963,6.554307116104869,5.0374531835206,5.617977528089888,6.0174781523096135,8.3645443196005,3.5143570536828963,5.1373283395755305,5.948813982521848,7.553058676654182,7.865168539325843,5.187265917602996,3.801498127340824,4.8626716604244695,5.274656679151062,3.4144818976279647,7.865168539325843,5.199750312109863,4.013732833957553,7.428214731585518,3.5705368289637955,5.181023720349563,5.8863920099875156,6.30461922596754,7.365792759051186,5.555555555555556,7.8027465667915115,7.615480649188515,5.6491885143570535,4.7565543071161045,2.7340823970037453,3.7827715355805243,8.551810237203496,5.586766541822722,4.937578027465668,2.5405742821473156,8.177278401997503,5.855181023720349,6.928838951310862,3.689138576779026,5.393258426966292,5.287141073657928,7.553058676654182,2.1972534332084894,4.138576779026217,3.7515605493133584,4.581772784019975,7.865168539325843,3.139825218476904,7.0536828963795255,6.30461922596754,5.836454431960051, +5.8739076154806495,7.49063670411985,4.563046192259676,7.365792759051186,5.430711610486892,5.3870162297128585,2.328339575530587,5.218476903870163,3.0711610486891385,4.581772784019975,5.224719101123595,3.3770287141073654,2.016229712858926,2.4344569288389515,3.4456928838951315,7.990012484394507,6.741573033707866,5.012484394506866,3.7515605493133584,3.233458177278402,6.0174781523096135,7.553058676654182,4.7440699126092385,7.740324594257178,6.928838951310862,3.077403245942572,2.8152309612983775,2.4843945068664173,4.082397003745319,5.861423220973783,2.0536828963795255,3.3458177278401995,6.679151061173534,5.630461922596755,2.958801498127341,4.288389513108614,3.233458177278402,8.426966292134832,6.067415730337078,2.209737827715356,2.446941323345818,6.554307116104869,5.761548064918852,3.6329588014981273,2.8838951310861427,3.046192259675406,7.990012484394507,5.149812734082397,3.545568039950062,6.616729088639201,5.068664169787765,5.6491885143570535,6.048689138576779,8.426966292134832,3.533083645443196,5.162297128589263,5.980024968789014,7.615480649188515,7.865168539325843,5.212234706616729,3.826466916354557,4.881398252184769,5.305867665418227,3.439450686641698,7.865168539325843,5.224719101123595,4.038701622971286,7.428214731585518,3.595505617977528,5.205992509363296,5.917602996254682,6.367041198501872,7.428214731585518,5.580524344569288,7.865168539325843,7.615480649188515,5.667915106117353,4.794007490636704,2.7590511860174782,3.8202247191011236,8.551810237203496,5.617977528089888,4.975031210986267,2.5593008739076155,8.239700374531834,5.880149812734083,6.991260923845194,3.7203495630461925,5.418227215980025,5.318352059925093,7.553058676654182,2.2222222222222223,4.169787765293384,3.776529338327091,4.612983770287141,7.865168539325843,3.1772784019975036,7.0536828963795255,6.30461922596754,5.861423220973783, +5.905118601747815,7.553058676654182,4.594257178526841,7.365792759051186,5.455680399500624,5.405742821473158,2.35330836454432,5.249687890137328,3.0961298377028714,4.600499375780275,5.243445692883895,3.408239700374532,2.0411985018726595,2.4656679151061174,3.470661672908864,8.05243445692884,6.803995006242197,5.043695380774032,3.776529338327091,3.258426966292135,6.048689138576779,7.553058676654182,4.769038701622971,7.8027465667915115,6.991260923845194,3.102372034956305,2.8464419475655434,2.5093632958801497,4.1136079900124844,5.8863920099875156,2.0786516853932584,3.3770287141073654,6.679151061173534,5.6491885143570535,2.9837702871410734,4.313358302122348,3.2646691635455682,8.426966292134832,6.092384519350812,2.2347066167290888,2.471910112359551,6.616729088639201,5.786516853932584,3.6641697877652937,2.9151061173533086,3.077403245942572,8.05243445692884,5.181023720349563,3.5830212234706615,6.616729088639201,5.093632958801498,5.686641697877653,6.073657927590512,8.426966292134832,3.5580524344569286,5.181023720349563,6.004993757802747,7.615480649188515,7.927590511860175,5.237203495630462,3.8451935081148565,4.900124843945068,5.337078651685393,3.464419475655431,7.927590511860175,5.243445692883895,4.057428214731585,7.428214731585518,3.620474406991261,5.230961298377029,5.948813982521848,6.367041198501872,7.428214731585518,5.611735330836455,7.865168539325843,7.615480649188515,5.686641697877653,4.825218476903871,2.7840199750312107,3.857677902621723,8.614232209737828,5.64294631710362,5.0062421972534334,2.5842696629213484,8.239700374531834,5.905118601747815,6.991260923845194,3.7515605493133584,5.443196004993759,5.34956304619226,7.615480649188515,2.2409488139825218,4.200998751560549,3.8077403245942576,4.65043695380774,7.927590511860175,3.2084893882646695,7.116104868913857,6.30461922596754,5.880149812734083, +5.936329588014981,7.553058676654182,4.6254681647940075,7.428214731585518,5.480649188514358,5.430711610486892,2.3782771535580522,5.274656679151062,3.1273408239700373,4.6254681647940075,5.268414481897628,3.439450686641698,2.066167290886392,2.4906367041198503,3.495630461922597,8.05243445692884,6.803995006242197,5.074906367041199,3.801498127340824,3.2771535580524347,6.073657927590512,7.615480649188515,4.787765293383271,7.8027465667915115,6.991260923845194,3.1335830212234708,2.8776529338327093,2.5343320848938826,4.144818976279651,5.9113607990012484,2.1036204744069913,3.4144818976279647,6.741573033707866,5.674157303370786,3.0087390761548067,4.332084893882647,3.3021223470661676,8.489388264669165,6.117353308364544,2.253433208489388,2.4968789013732833,6.616729088639201,5.81772784019975,3.6953807740324596,2.9400749063670415,3.102372034956305,8.05243445692884,5.212234706616729,3.6142322097378274,6.679151061173534,5.1248439450686645,5.717852684144819,6.098626716604246,8.489388264669165,3.5830212234706615,5.199750312109863,6.036204744069912,7.677902621722847,7.927590511860175,5.268414481897628,3.8639200998751564,4.925093632958801,5.36828963795256,3.4831460674157304,7.927590511860175,5.268414481897628,4.082397003745319,7.49063670411985,3.6454431960049942,5.2559300873907615,5.980024968789014,6.429463171036204,7.428214731585518,5.636704119850187,7.927590511860175,7.677902621722847,5.711610486891385,4.8626716604244695,2.808988764044944,3.888888888888889,8.614232209737828,5.674157303370786,5.043695380774032,2.602996254681648,8.302122347066168,5.930087390761548,6.991260923845194,3.7827715355805243,5.468164794007491,5.3870162297128585,7.615480649188515,2.2659176029962547,4.2322097378277155,3.83270911360799,4.681647940074906,7.990012484394507,3.245942571785269,7.116104868913857,6.367041198501872,5.905118601747815, +5.967540574282147,7.615480649188515,4.662921348314606,7.428214731585518,5.50561797752809,5.455680399500624,2.397003745318352,5.299625468164794,3.1585518102372037,4.65043695380774,5.287141073657928,3.464419475655431,2.084893882646692,2.521847690387016,3.5205992509363297,8.11485642946317,6.866416978776529,5.106117353308365,3.826466916354557,3.3021223470661676,6.104868913857677,7.615480649188515,4.812734082397004,7.8027465667915115,7.0536828963795255,3.1647940074906367,2.908863920099875,2.5593008739076155,4.176029962546816,5.936329588014981,2.128589263420724,3.4456928838951315,6.741573033707866,5.692883895131087,3.027465667915106,4.357053682896379,3.3333333333333335,8.489388264669165,6.142322097378277,2.272159800249688,2.521847690387016,6.616729088639201,5.842696629213483,3.732833957553059,2.9712858926342074,3.1273408239700373,8.11485642946317,5.249687890137328,3.6454431960049942,6.679151061173534,5.149812734082397,5.7553058676654185,6.123595505617978,8.551810237203496,3.607990012484395,5.224719101123595,6.061173533083646,7.740324594257178,7.927590511860175,5.293383270911361,3.882646691635456,4.943820224719102,5.399500624219725,3.508114856429463,7.990012484394507,5.293383270911361,4.1011235955056184,7.49063670411985,3.6704119850187267,5.280898876404494,6.01123595505618,6.429463171036204,7.49063670411985,5.66167290886392,7.927590511860175,7.677902621722847,5.730337078651686,4.893882646691636,2.8339575530586765,3.926342072409488,8.67665418227216,5.705368289637952,5.074906367041199,2.6279650436953808,8.302122347066168,5.955056179775282,7.0536828963795255,3.81398252184769,5.493133583021224,5.418227215980025,7.677902621722847,2.2908863920099876,4.263420724094882,3.857677902621723,4.712858926342073,7.990012484394507,3.2771535580524347,7.17852684144819,6.367041198501872,5.930087390761548, +5.998751560549313,7.615480649188515,4.694132334581773,7.49063670411985,5.5305867665418225,5.474406991260924,2.4219725343320846,5.324594257178527,3.183520599250936,4.66916354556804,5.305867665418227,3.495630461922597,2.1098626716604243,2.5530586766541825,3.545568039950062,8.11485642946317,6.866416978776529,5.1373283395755305,3.8514357053682895,3.320848938826467,6.1360799001248445,7.677902621722847,4.837702871410737,7.865168539325843,7.0536828963795255,3.1897627965043696,2.933832709113608,2.5842696629213484,4.207240948813983,5.961298377028713,2.153558052434457,3.4769038701622974,6.741573033707866,5.717852684144819,3.0524344569288386,4.382022471910113,3.370786516853933,8.551810237203496,6.167290886392011,2.2908863920099876,2.546816479400749,6.679151061173534,5.867665418227216,3.764044943820225,3.0024968789013733,3.1585518102372037,8.11485642946317,5.280898876404494,3.682896379525593,6.741573033707866,5.181023720349563,5.786516853932584,6.1485642946317105,8.551810237203496,3.6329588014981273,5.243445692883895,6.092384519350812,7.740324594257178,7.990012484394507,5.318352059925093,3.9013732833957557,4.962546816479401,5.430711610486892,3.5268414481897628,7.990012484394507,5.312109862671661,4.1260923845193505,7.553058676654182,3.6953807740324596,5.305867665418227,6.0424469413233455,6.491885143570538,7.49063670411985,5.692883895131087,7.990012484394507,7.677902621722847,5.749063670411985,4.931335830212235,2.8589263420724094,3.957553058676654,8.739076154806492,5.736579275905119,5.106117353308365,2.6466916354556806,8.3645443196005,5.980024968789014,7.0536828963795255,3.8451935081148565,5.5181023720349565,5.449438202247191,7.677902621722847,2.3158551810237205,4.294631710362047,3.888888888888889,4.7440699126092385,8.05243445692884,3.3083645443196006,7.17852684144819,6.429463171036204,5.955056179775282, +6.029962546816479,7.677902621722847,4.725343320848939,7.49063670411985,5.555555555555556,5.499375780274657,2.446941323345818,5.34956304619226,3.214731585518102,4.694132334581773,5.33083645443196,3.5268414481897628,2.134831460674157,2.5842696629213484,3.5705368289637955,8.177278401997503,6.928838951310862,5.168539325842697,3.870162297128589,3.3458177278401995,6.161048689138577,7.677902621722847,4.8626716604244695,7.865168539325843,7.0536828963795255,3.2209737827715355,2.965043695380774,2.6092384519350813,4.238451935081149,5.986267166042447,2.1785268414481895,3.5143570536828963,6.803995006242197,5.742821473158552,3.0711610486891385,4.400749063670412,3.4019975031210987,8.551810237203496,6.186017478152309,2.3158551810237205,2.571785268414482,6.679151061173534,5.8988764044943816,3.7952559300873907,3.033707865168539,3.183520599250936,8.177278401997503,5.312109862671661,3.714107365792759,6.741573033707866,5.212234706616729,5.81772784019975,6.179775280898876,8.614232209737828,3.6579275905118602,5.262172284644195,6.117353308364544,7.8027465667915115,7.990012484394507,5.34956304619226,3.920099875156055,4.987515605493134,5.461922596754057,3.5518102372034956,8.05243445692884,5.337078651685393,4.144818976279651,7.553058676654182,3.7203495630461925,5.33083645443196,6.073657927590512,6.491885143570538,7.553058676654182,5.717852684144819,7.990012484394507,7.740324594257178,5.774032459425719,4.962546816479401,2.8838951310861427,3.9950062421972534,8.739076154806492,5.767790262172285,5.143570536828964,2.671660424469413,8.3645443196005,6.004993757802747,7.116104868913857,3.8764044943820224,5.543071161048689,5.480649188514358,7.740324594257178,2.340823970037453,4.31960049937578,3.9138576779026217,4.781523096129837,8.11485642946317,3.3458177278401995,7.240948813982522,6.429463171036204,5.97378277153558, +6.061173533083646,7.677902621722847,4.762796504369538,7.49063670411985,5.580524344569288,5.524344569288389,2.4656679151061174,5.380774032459426,3.245942571785269,4.719101123595506,5.34956304619226,3.5580524344569286,2.153558052434457,2.6154806491885143,3.589263420724095,8.177278401997503,6.928838951310862,5.199750312109863,3.8951310861423223,3.3645443196004994,6.192259675405743,7.740324594257178,4.887640449438202,7.927590511860175,7.116104868913857,3.2521847690387014,2.9962546816479403,2.634207240948814,4.269662921348314,6.01123595505618,2.203495630461923,3.545568039950062,6.803995006242197,5.761548064918852,3.0961298377028714,4.425717852684145,3.439450686641698,8.614232209737828,6.210986267166042,2.33458177278402,2.596754057428215,6.679151061173534,5.9238451935081144,3.826466916354557,3.058676654182272,3.2084893882646695,8.177278401997503,5.34956304619226,3.7515605493133584,6.803995006242197,5.237203495630462,5.855181023720349,6.20474406991261,8.614232209737828,3.6766541822721597,5.287141073657928,6.1485642946317105,7.8027465667915115,8.05243445692884,5.3745318352059925,3.938826466916354,5.0062421972534334,5.493133583021224,3.5705368289637955,8.05243445692884,5.355805243445693,4.169787765293384,7.553058676654182,3.745318352059925,5.355805243445693,6.104868913857677,6.554307116104869,7.553058676654182,5.742821473158552,8.05243445692884,7.740324594257178,5.792759051186017,4.9937578027465666,2.908863920099875,4.02621722846442,8.801498127340825,5.799001248439451,5.174781523096129,2.690387016229713,8.426966292134832,6.023720349563047,7.116104868913857,3.9076154806491883,5.568039950062421,5.511860174781523,7.740324594257178,2.3657927590511862,4.3508114856429465,3.938826466916354,4.812734082397004,8.11485642946317,3.3770287141073654,7.240948813982522,6.429463171036204,5.998751560549313, +6.086142322097379,7.740324594257178,4.794007490636704,7.553058676654182,5.605493133583021,5.543071161048689,2.4906367041198503,5.405742821473158,3.2771535580524347,4.737827715355805,5.3745318352059925,3.5830212234706615,2.1785268414481895,2.640449438202247,3.6142322097378274,8.177278401997503,,,3.920099875156055,3.3895131086142323,6.223470661672909,7.740324594257178,4.912609238451935,7.927590511860175,7.116104868913857,3.2771535580524347,3.027465667915106,2.6591760299625467,4.300873907615481,6.036204744069912,2.2284644194756553,3.576779026217228,6.803995006242197,5.786516853932584,3.1210986267166043,4.450686641697877,3.470661672908864,8.614232209737828,6.235955056179775,2.35330836454432,2.6154806491885143,6.741573033707866,5.948813982521848,3.8639200998751564,3.089887640449438,3.2397003745318353,8.239700374531834,,3.7827715355805243,6.803995006242197,5.268414481897628,5.8863920099875156,,8.67665418227216,3.701622971285893,5.305867665418227,6.179775280898876,,8.05243445692884,5.399500624219725,3.957553058676654,5.024968789013733,5.5305867665418225,3.595505617977528,8.11485642946317,5.380774032459426,4.188514357053683,7.615480649188515,3.764044943820225,5.380774032459426,6.1360799001248445,6.554307116104869,7.553058676654182,5.774032459425719,8.05243445692884,7.740324594257178,5.811485642946318,5.031210986267166,2.933832709113608,4.063670411985019,,5.830212234706617,5.205992509363296,2.7091136079900124,,6.048689138576779,7.116104868913857,3.938826466916354,5.593008739076155,5.549313358302123,,2.3907615480649187,4.382022471910113,3.9637952559300875,4.843945068664169,,3.4144818976279647,7.240948813982522,6.491885143570538,6.023720349563047, +6.117353308364544,7.8027465667915115,4.831460674157303,7.553058676654182,5.630461922596755,5.568039950062421,2.515605493133583,5.430711610486892,3.3021223470661676,4.762796504369538,5.393258426966292,3.6142322097378274,2.203495630461923,2.671660424469413,3.639200998751561,8.239700374531834,,,3.9450686641697876,3.408239700374532,6.242197253433209,7.8027465667915115,4.937578027465668,7.990012484394507,7.17852684144819,3.3083645443196006,3.058676654182272,2.68414481897628,4.332084893882647,6.061173533083646,2.253433208489388,3.6142322097378274,6.866416978776529,5.805243445692884,3.139825218476904,4.475655430711611,3.508114856429463,8.67665418227216,6.242197253433209,2.3782771535580522,2.640449438202247,6.741573033707866,5.97378277153558,3.8951310861423223,3.1210986267166043,3.2646691635455682,8.239700374531834,,3.81398252184769,6.866416978776529,5.293383270911361,5.9238451935081144,,8.67665418227216,,5.324594257178527,6.20474406991261,,8.05243445692884,5.430711610486892,3.9762796504369535,5.049937578027466,5.561797752808988,3.620474406991261,8.11485642946317,5.405742821473158,4.213483146067416,7.615480649188515,3.7890137328339577,5.405742821473158,6.167290886392011,6.616729088639201,7.615480649188515,5.799001248439451,8.11485642946317,7.8027465667915115,5.836454431960051,5.062421972534332,,4.1011235955056184,,5.861423220973783,5.243445692883895,2.7340823970037453,,6.073657927590512,7.17852684144819,3.970037453183521,5.617977528089888,5.580524344569288,,2.4094881398252186,4.413233458177278,3.9950062421972534,4.881398252184769,,3.4456928838951315,7.303370786516854,6.491885143570538,6.048689138576779, +6.1485642946317105,7.8027465667915115,4.8626716604244695,7.615480649188515,5.655430711610487,5.593008739076155,2.5343320848938826,5.455680399500624,3.3333333333333335,4.787765293383271,5.418227215980025,3.6454431960049942,2.2222222222222223,2.702871410736579,3.6641697877652937,8.239700374531834,,,3.970037453183521,3.4269662921348316,6.30461922596754,7.8027465667915115,4.962546816479401,7.990012484394507,7.17852684144819,3.339575530586767,3.089887640449438,2.7091136079900124,4.3632958801498125,6.086142322097379,2.272159800249688,3.6454431960049942,6.866416978776529,5.830212234706617,3.1647940074906367,4.49438202247191,3.545568039950062,8.67665418227216,6.30461922596754,2.397003745318352,2.66541822721598,6.741573033707866,6.004993757802747,3.926342072409488,3.1460674157303368,3.2896379525593007,8.302122347066168,,,6.866416978776529,5.324594257178527,5.955056179775282,,8.739076154806492,,5.34956304619226,6.235955056179775,,8.11485642946317,5.455680399500624,4.001248439450687,5.068664169787765,5.593008739076155,3.639200998751561,8.177278401997503,5.424469413233458,4.2322097378277155,7.615480649188515,3.81398252184769,5.430711610486892,6.198501872659176,6.616729088639201,7.615480649188515,5.830212234706617,8.11485642946317,7.8027465667915115,5.855181023720349,5.099875156054932,,4.132334581772784,,5.892634207240949,5.274656679151062,2.752808988764045,,6.098626716604246,7.17852684144819,4.001248439450687,5.6491885143570535,5.611735330836455,,2.4344569288389515,4.444444444444445,4.019975031210986,4.912609238451935,,3.4831460674157304,7.303370786516854,6.554307116104869,6.067415730337078, +,7.865168539325843,4.893882646691636,,5.68039950062422,5.611735330836455,2.5593008739076155,,3.3645443196004994,4.806491885143571,5.436953807740325,3.6766541822721597,2.247191011235955,2.7340823970037453,3.689138576779026,8.302122347066168,,,3.9950062421972534,3.451935081148564,6.30461922596754,7.865168539325843,4.987515605493134,8.05243445692884,7.240948813982522,3.3645443196004994,3.114856429463171,2.7340823970037453,4.400749063670412,6.111111111111111,2.2971285892634206,3.682896379525593,6.866416978776529,5.848938826466916,3.183520599250936,4.519350811485642,3.576779026217228,8.739076154806492,6.30461922596754,2.4157303370786516,2.690387016229713,6.803995006242197,6.029962546816479,3.957553058676654,3.1772784019975036,3.3146067415730336,8.302122347066168,,,6.928838951310862,5.34956304619226,5.986267166042447,,8.801498127340825,,5.36828963795256,6.242197253433209,,8.11485642946317,5.480649188514358,4.019975031210986,5.087390761548065,5.6242197253433215,3.6641697877652937,8.177278401997503,5.449438202247191,4.257178526841448,7.677902621722847,3.8389513108614235,5.455680399500624,6.229712858926342,6.679151061173534,7.615480649188515,5.855181023720349,8.177278401997503,7.8027465667915115,5.880149812734083,5.131086142322098,,4.169787765293384,,5.9238451935081144,5.305867665418227,2.777777777777778,,6.123595505617978,7.240948813982522,4.032459425717852,5.674157303370786,5.64294631710362,,2.459425717852684,4.475655430711611,4.044943820224719,4.943820224719102,,3.5143570536828963,7.365792759051186,6.554307116104869,6.092384519350812, +,7.865168539325843,4.931335830212235,,5.705368289637952,5.636704119850187,2.5842696629213484,,3.3957553058676653,4.831460674157303,5.455680399500624,3.701622971285893,2.272159800249688,2.7652933832709112,3.714107365792759,,,,4.019975031210986,3.470661672908864,6.367041198501872,7.865168539325843,5.0062421972534334,,7.240948813982522,3.3957553058676653,3.1460674157303368,2.7590511860174782,4.431960049937578,6.1360799001248445,,3.714107365792759,6.928838951310862,5.8739076154806495,3.2084893882646695,4.544319600499376,3.6142322097378274,8.739076154806492,6.30461922596754,2.4406991260923845,2.715355805243446,6.803995006242197,6.054931335830212,3.9950062421972534,3.2084893882646695,3.3458177278401995,8.3645443196005,,,6.928838951310862,5.380774032459426,6.023720349563047,,8.801498127340825,,5.3870162297128585,6.30461922596754,,8.177278401997503,5.50561797752809,4.038701622971286,5.1123595505617985,5.655430711610487,3.682896379525593,8.239700374531834,5.468164794007491,4.275905118601748,7.677902621722847,3.8639200998751564,5.480649188514358,6.242197253433209,6.679151061173534,7.677902621722847,5.880149812734083,8.177278401997503,7.865168539325843,5.8988764044943816,5.168539325842697,,,,5.955056179775282,5.343320848938826,2.7965043695380776,,6.1485642946317105,7.240948813982522,4.063670411985019,5.69912609238452,5.674157303370786,,2.4843945068664173,4.506866416978776,4.069912609238452,4.9812734082397006,,3.5518102372034956,7.365792759051186,6.616729088639201,6.117353308364544, +,7.927590511860175,4.962546816479401,,5.730337078651686,5.655430711610487,2.602996254681648,,3.420724094881398,4.850187265917603,5.480649188514358,3.732833957553059,2.2908863920099876,2.790262172284644,3.7390761548064915,,,,4.044943820224719,3.495630461922597,6.367041198501872,7.927590511860175,5.031210986267166,,7.303370786516854,3.4269662921348316,3.1772784019975036,2.7840199750312107,4.463171036204744,,,3.745318352059925,6.928838951310862,5.8988764044943816,3.233458177278402,4.569288389513109,3.6454431960049942,8.801498127340825,6.367041198501872,2.459425717852684,2.740324594257179,6.866416978776529,6.086142322097379,4.02621722846442,3.2397003745318353,3.370786516853933,8.3645443196005,,,6.991260923845194,5.411985018726591,6.054931335830212,,8.863920099875156,,5.411985018726591,6.30461922596754,,8.177278401997503,5.536828963795256,4.057428214731585,5.131086142322098,5.686641697877653,3.7078651685393256,8.239700374531834,5.493133583021224,4.294631710362047,7.677902621722847,3.888888888888889,5.50561797752809,6.30461922596754,6.741573033707866,7.677902621722847,5.9113607990012484,8.239700374531834,7.865168539325843,5.917602996254682,5.199750312109863,,,,5.986267166042447,5.3745318352059925,2.82147315855181,,6.173533083645444,7.240948813982522,4.094881398252185,5.724094881398252,5.705368289637952,,2.5093632958801497,4.538077403245943,4.1011235955056184,5.012484394506866,,3.5830212234706615,7.428214731585518,,6.1360799001248445, +,7.927590511860175,4.9937578027465666,,5.7553058676654185,5.68039950062422,2.6279650436953808,,3.451935081148564,4.875156054931336,5.499375780274657,3.764044943820225,2.3158551810237205,2.82147315855181,3.764044943820225,,,,4.069912609238452,3.5143570536828963,6.367041198501872,7.990012484394507,5.056179775280899,,7.303370786516854,3.4581772784019975,3.2084893882646695,2.808988764044944,4.49438202247191,,,3.7827715355805243,6.928838951310862,5.917602996254682,3.2521847690387014,,3.682896379525593,8.801498127340825,6.367041198501872,2.478152309612984,2.7590511860174782,6.866416978776529,6.111111111111111,4.057428214731585,3.2646691635455682,3.3957553058676653,8.426966292134832,,,6.991260923845194,5.436953807740325,6.092384519350812,,8.863920099875156,,5.430711610486892,6.367041198501872,,8.239700374531834,5.561797752808988,4.0761548064918856,5.149812734082397,5.717852684144819,3.7265917602996255,8.302122347066168,5.5181023720349565,4.31960049937578,7.740324594257178,3.9138576779026217,5.5305867665418225,6.30461922596754,6.741573033707866,7.740324594257178,5.936329588014981,8.239700374531834,7.865168539325843,5.942571785268415,5.237203495630462,,,,6.0174781523096135,5.405742821473158,2.84019975031211,,6.192259675405743,7.303370786516854,4.1260923845193505,5.749063670411985,5.742821473158552,,2.5343320848938826,4.569288389513109,4.1260923845193505,5.043695380774032,,3.6142322097378274,7.428214731585518,,6.161048689138577, +,7.990012484394507,5.031210986267166,,5.7802746566791505,5.705368289637952,,,3.4831460674157304,4.900124843945068,5.524344569288389,3.7952559300873907,2.340823970037453,2.852684144818976,3.7890137328339577,,,,4.094881398252185,3.5393258426966296,6.429463171036204,7.990012484394507,5.081148564294631,,7.365792759051186,3.4831460674157304,3.2397003745318353,2.8339575530586765,4.525593008739076,,,3.81398252184769,6.991260923845194,,3.2771535580524347,,3.714107365792759,8.863920099875156,6.429463171036204,2.4968789013732833,2.7840199750312107,6.866416978776529,6.1360799001248445,4.0886392009987516,3.295880149812734,,8.426966292134832,,,7.0536828963795255,5.468164794007491,6.123595505617978,,8.926342072409488,,5.455680399500624,6.367041198501872,,8.239700374531834,,4.094881398252185,5.174781523096129,5.749063670411985,3.7515605493133584,8.302122347066168,5.536828963795256,4.33832709113608,7.740324594257178,3.938826466916354,5.555555555555556,,6.803995006242197,7.740324594257178,5.961298377028713,8.302122347066168,7.927590511860175,5.961298377028713,5.268414481897628,,,,6.048689138576779,5.443196004993759,2.865168539325843,,6.217228464419476,7.303370786516854,4.157303370786517,5.774032459425719,5.774032459425719,,2.5530586766541825,4.600499375780275,4.151061173533084,5.081148564294631,,3.651685393258427,,,6.186017478152309, +,,5.062421972534332,,5.805243445692884,,,,3.5143570536828963,4.918851435705368,5.543071161048689,3.8202247191011236,2.359550561797753,2.8838951310861427,3.81398252184769,,,,4.119850187265917,3.5580524344569286,6.429463171036204,8.05243445692884,5.106117353308365,,7.365792759051186,3.5143570536828963,3.2709113607990012,2.8589263420724094,4.556803995006242,,,3.8451935081148565,6.991260923845194,,3.295880149812734,,3.7515605493133584,8.863920099875156,6.429463171036204,2.521847690387016,2.808988764044944,6.928838951310862,6.161048689138577,4.1260923845193505,3.3270911360799,,8.489388264669165,,,7.0536828963795255,5.493133583021224,6.161048689138577,,,,5.474406991260924,6.429463171036204,,8.239700374531834,,4.1136079900124844,5.19350811485643,5.7802746566791505,3.776529338327091,8.3645443196005,5.561797752808988,4.3632958801498125,7.740324594257178,3.9637952559300875,5.580524344569288,,6.803995006242197,,5.992509363295881,8.302122347066168,7.927590511860175,5.980024968789014,5.305867665418227,,,,6.079900124843945,5.474406991260924,2.8838951310861427,,6.242197253433209,7.365792759051186,4.18227215980025,5.799001248439451,5.805243445692884,,2.578027465667915,4.631710362047441,4.18227215980025,5.1123595505617985,,3.682896379525593,,,6.210986267166042, +,,5.093632958801498,,5.830212234706617,,,,3.5393258426966296,4.943820224719102,5.568039950062421,3.8514357053682895,2.3845193508114857,2.908863920099875,3.8389513108614235,,,,4.144818976279651,3.5830212234706615,6.491885143570538,,5.131086142322098,,7.428214731585518,3.545568039950062,3.295880149812734,2.8838951310861427,4.588014981273409,,,3.882646691635456,6.991260923845194,,3.320848938826467,,,8.926342072409488,6.429463171036204,2.5405742821473156,2.8339575530586765,6.928838951310862,,,3.352059925093633,,8.489388264669165,,,7.116104868913857,5.524344569288389,6.192259675405743,,,,5.493133583021224,6.429463171036204,,8.302122347066168,,4.132334581772784,5.212234706616729,5.811485642946318,3.7952559300873907,8.3645443196005,5.580524344569288,4.382022471910113,7.8027465667915115,3.9887640449438204,5.605493133583021,,6.866416978776529,,6.0174781523096135,8.3645443196005,7.927590511860175,6.004993757802747,5.337078651685393,,,,6.111111111111111,5.50561797752809,2.908863920099875,,6.242197253433209,7.365792759051186,4.213483146067416,5.823970037453184,5.836454431960051,,2.602996254681648,4.662921348314606,4.207240948813983,5.143570536828964,,3.7203495630461925,,,6.229712858926342, +,,5.131086142322098,,5.855181023720349,,,,3.5705368289637955,4.9687890137328345,5.586766541822722,3.882646691635456,2.4094881398252186,2.9400749063670415,3.8639200998751564,,,,4.169787765293384,3.6017478152309614,6.491885143570538,,5.15605493133583,,7.428214731585518,3.5705368289637955,3.3270911360799,2.908863920099875,4.619225967540574,,,3.9138576779026217,7.0536828963795255,,3.3458177278401995,,,8.926342072409488,6.491885143570538,2.5593008739076155,2.8589263420724094,6.928838951310862,,,3.383270911360799,,8.551810237203496,,,7.116104868913857,,,,,,5.5181023720349565,6.491885143570538,,8.302122347066168,,4.151061173533084,5.237203495630462,5.842696629213483,3.8202247191011236,8.426966292134832,5.605493133583021,4.406991260923846,7.8027465667915115,4.00749063670412,5.630461922596755,,,,6.0424469413233455,8.3645443196005,7.990012484394507,6.023720349563047,5.3745318352059925,,,,,5.543071161048689,2.9275905118601746,,6.30461922596754,7.428214731585518,4.244694132334582,5.848938826466916,5.867665418227216,,2.6279650436953808,4.694132334581773,4.2322097378277155,5.174781523096129,,3.7515605493133584,,,6.242197253433209, +,,5.162297128589263,,,,,,3.6017478152309614,4.987515605493134,5.605493133583021,3.9076154806491883,2.428214731585518,2.9712858926342074,,,,,4.194756554307116,3.6267166042446943,6.554307116104869,,5.181023720349563,,7.49063670411985,3.6017478152309614,3.3583021223470664,2.933832709113608,4.65043695380774,,,,7.0536828963795255,,3.3645443196004994,,,8.98876404494382,,2.5842696629213484,2.8838951310861427,6.991260923845194,,,3.4144818976279647,,8.551810237203496,,,7.116104868913857,,,,,,5.536828963795256,6.491885143570538,,8.3645443196005,,4.176029962546816,5.2559300873907615,5.880149812734083,3.8389513108614235,8.426966292134832,5.6242197253433215,4.425717852684145,7.8027465667915115,4.032459425717852,,,,,6.073657927590512,8.426966292134832,7.990012484394507,6.0424469413233455,5.405742821473158,,,,,,2.9525593008739075,,,7.428214731585518,,5.8739076154806495,5.905118601747815,,,,4.257178526841448,5.212234706616729,,,,,6.30461922596754, +,,,,,,,,3.6329588014981273,5.012484394506866,5.630461922596755,3.938826466916354,2.453183520599251,3.0024968789013733,,,,,4.213483146067416,3.6454431960049942,6.554307116104869,,5.205992509363296,,7.49063670411985,3.6329588014981273,,2.958801498127341,4.681647940074906,,,,7.0536828963795255,,3.3895131086142323,,,8.98876404494382,,2.602996254681648,2.908863920099875,6.991260923845194,,,,,,,,7.17852684144819,,,,,,5.555555555555556,6.491885143570538,,8.3645443196005,,4.194756554307116,5.274656679151062,5.9113607990012484,3.8639200998751564,8.489388264669165,5.6491885143570535,4.450686641697877,,4.057428214731585,,,,,6.098626716604246,8.426966292134832,7.990012484394507,6.067415730337078,,,,,,,2.9712858926342074,,,7.428214731585518,,5.8988764044943816,5.936329588014981,,,,4.288389513108614,5.243445692883895,,,,,6.30461922596754, +,,,,,,,,3.6579275905118602,5.0374531835206,5.6491885143570535,,2.471910112359551,3.033707865168539,,,,,,3.6704119850187267,6.616729088639201,,5.224719101123595,,7.553058676654182,,,2.9837702871410734,4.712858926342073,,,,7.116104868913857,,3.408239700374532,,,9.051186017478152,,,2.9275905118601746,6.991260923845194,,,,,,,,7.17852684144819,,,,,,5.580524344569288,6.554307116104869,,,,4.213483146067416,5.299625468164794,5.942571785268415,3.888888888888889,8.489388264669165,,4.4694132334581775,,4.082397003745319,,,,,6.123595505617978,8.489388264669165,8.05243445692884,6.086142322097379,,,,,,,2.9962546816479403,,,7.49063670411985,,5.9238451935081144,5.967540574282147,,,,,5.274656679151062,,,,,6.30461922596754, +,,,,,,,,3.689138576779026,5.056179775280899,,,2.4968789013732833,3.058676654182272,,,,,,3.689138576779026,6.616729088639201,,5.249687890137328,,7.553058676654182,,,3.0087390761548067,,,,,7.116104868913857,,3.4332084893882646,,,9.051186017478152,,,2.9525593008739075,7.0536828963795255,,,,,,,,7.240948813982522,,,,,,,,,,,4.2322097378277155,5.318352059925093,5.97378277153558,3.9076154806491883,8.551810237203496,,4.49438202247191,,4.107365792759051,,,,,6.154806491885144,8.489388264669165,8.05243445692884,6.104868913857677,,,,,,,3.0149812734082393,,,7.49063670411985,,5.948813982521848,5.998751560549313,,,,,,,,,,6.367041198501872, +,,,,,,,,3.7203495630461925,,,,,3.089887640449438,,,,,,3.714107365792759,6.679151061173534,,5.274656679151062,,7.553058676654182,,,3.033707865168539,,,,,,,3.4581772784019975,,,9.113607990012484,,,2.977528089887641,,,,,,,,,7.240948813982522,,,,,,,,,,,4.250936329588015,5.337078651685393,6.004993757802747,3.9325842696629216,8.551810237203496,,,,4.132334581772784,,,,,6.179775280898876,8.551810237203496,8.05243445692884,6.129837702871411,,,,,,,3.0399500624219726,,,7.553058676654182,,5.97378277153558,6.029962546816479,,,,,,,,,,6.367041198501872, +,,,,,,,,,,,,,3.1210986267166043,,,,,,3.732833957553059,6.679151061173534,,5.299625468164794,,,,,3.058676654182272,,,,,,,,,,9.113607990012484,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.269662921348314,5.3620474406991265,6.036204744069912,3.951310861423221,8.614232209737828,,,,,,,,,6.210986267166042,8.551810237203496,8.11485642946317,6.1485642946317105,,,,,,,3.058676654182272,,,7.553058676654182,,,,,,,,,,,,,6.367041198501872, +,,,,,,,,,,,,,3.15230961298377,,,,,,3.7515605493133584,6.741573033707866,,5.324594257178527,,,,,3.0836454431960054,,,,,,,,,,9.176029962546817,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.288389513108614,5.380774032459426,6.067415730337078,3.9762796504369535,8.614232209737828,,,,,,,,,6.235955056179775,,8.11485642946317,6.167290886392011,,,,,,,3.077403245942572,,,7.553058676654182,,,,,,,,,,,,,6.429463171036204, +,,,,,,,,,,,,,,,,,,,,6.741573033707866,,,,,,,,,,,,,,,,,9.176029962546817,,,,,,,,,,,,,,,,,,,,,,,,5.399500624219725,6.098626716604246,,8.67665418227216,,,,,,,,,6.242197253433209,,8.11485642946317,6.192259675405743,,,,,,,3.102372034956305,,,7.615480649188515,,,,,,,,,,,,,6.429463171036204, +,,,,,,,,,,,,,,,,,,,,6.803995006242197,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5.424469413233458,,,,,,,,,,,,6.30461922596754,,,6.210986267166042,,,,,,,3.1210986267166043,,,7.615480649188515,,,,,,,,,,,,,, diff --git a/lessons/files/files_file_types.ipynb b/lessons/files/files_file_types.ipynb index b4d0196..c7fee4c 100644 --- a/lessons/files/files_file_types.ipynb +++ b/lessons/files/files_file_types.ipynb @@ -14,7 +14,7 @@ "metadata": {}, "source": [ "## Prerequisites\n", - "- None (?)" + "- None" ] }, { @@ -45,19 +45,106 @@ "Directories branch downwards from the root directory, and can contain both files and subdirectories. For example, you may have a directory called 'Lab Documents', which might contain a subdirectory 'Module A Practical B', in which you hold all your results, risk assessments, and writeups for Practical B of Module A. The directory 'Lab Documents', is itself a subdirectory of something else, stemming back until you reach the root directory, often called ``C:\\`` on a Windows operating system, or ``/var/root/`` on a Apple mac. This way, we can cluster together groups of related files to keep ourselves better organised. \n", "\n", "When you are programming, it is important to know which directory you are in for a number of reasons. \n", - "- To use libraries like NumPy and MatPlotLib, they need to be accessible to the directory you are working in.\n", + "\n", + "- To use libraries like NumPy and MatPlotLib, they need to be accessible to the directory you are working in. If you are using an environment like Anaconda, you only need to import the library once. Explanation on downloading libraries can be found in the [importing modules lesson](../loops_functions/tut_import_mod.ipynb).\n", + "\n", "- If you are running code from the command line (more information in another lesson), you need to be able to change directories forwards and backwards to find your code. \n", - "- If you want to read or write to another file, that file must be in the same directory as your code file. \n", + "- If you want to read or write to another file, that file must be in the same directory as your code file. " + ] + }, + { + "cell_type": "markdown", + "id": "901f4f44", + "metadata": {}, + "source": [ + "
      \n", + " Visualising Directories with a tree diagram \n", + "\n", + "One way of visualising directories is with a tree or branch diagram, like below.\n", + "\n", + "Each black box is a directory, represented by folders on your computer. Each blue box is a Python file, and each green box is a data file. \n", + "\n", + "When we say \"the files are in the same directory\", the two files are like `final_project.py` and `my_functions.py` in the diagram below, both in the directory `Project`. Going up one directory is going towards `Python_files`, and this file is down from the directory `Tara`. \n", + "\n", + "\n", + "\n", + "

      " + ] + }, + { + "cell_type": "markdown", + "id": "07a8fb8e", + "metadata": {}, + "source": [ + "## Filepaths" + ] + }, + { + "cell_type": "markdown", + "id": "8bdb8e36", + "metadata": {}, + "source": [ + "To access a file from a Python program, or to run a program from the command line, you need to specify a **filepath**. This tells the computer where specifically to look for a certain file. Otherwise, there might be files in different directories with the same name, and the computer would not know where to look. " + ] + }, + { + "cell_type": "markdown", + "id": "1ac8b624", + "metadata": {}, + "source": [ + "### Absolute (full) Filepath" + ] + }, + { + "cell_type": "markdown", + "id": "dda8a465", + "metadata": {}, + "source": [ + "An **absolute** or **full** filepath specifies the complete address of a file or directory in a system, starting from the root directory and including all directories leading to the specific file or folder. \n", + "\n", + "Directories are separated by a forward slash, /, or a backslash, \\ (both are supported on most operating systems). \n", + "\n", + "For example, the filepath of my CSV data might be:\n", + "\n", + "``C:\\Users\\Tara\\Data_Files\\my_data.csv``\n", + "\n", + "Sometimes, your filepaths might get very long. To access a data file from a Year 3 lab your filepath might be: \n", "\n", - "Directories are separated by a forward slash, /, or a backslash, \\ (both are supported on most operating systems). If I was looking at my lab notes, I might be in the directory: ``C:\\Users\\Bella\\Documents\\University\\Lab Documents\\Module A\\Practical B``. The directory list can get very long very fast, so naming your files and directories accurately and consistently is recommended. Also try not to have too many unnecessary additional mostly-empty directories. " + "``C:\\Users\\Bella\\OneDrive\\Documents\\University\\Year_3\\Labs\\Synthesis\\Module0020\\Part_1\\results.CSV``\n", + "\n", + "Firstly, giving your directories and files sensible names and locations will help reduce the amount of time you spend figuring out where your files are located. Secondly, you might want to consider using a **relative** filepath instead." + ] + }, + { + "cell_type": "markdown", + "id": "31632279", + "metadata": {}, + "source": [ + "### Relative Filepaths" ] }, { "cell_type": "markdown", - "id": "63b14f0b", + "id": "41f8ff23", "metadata": {}, "source": [ - "### Directory branch diagram" + "Sometimes, we may be very deep, within multiple directories, and it would become very long to specify the full filepath. This is where **relative filepaths** become useful. These allow you to specify a filepath *relative* to the directory you are already in.\n", + "\n", + "There are two main commands to specify a relative directoty. \n", + "\n", + "- **`.`** indicates that we are going to go forward (down) a directory.\n", + "\n", + "- **`..`** indicates that we are going to go backwards (up) a directory.\n", + "\n", + "For example, using our tree diagram as a reference: \n", + "\n", + "\n", + "\n", + "If you were writing code in the file `my_code.py` and you wanted to access the file `my_functions.py`, you would first have to go forward into the directory \"Project\". The relative filepath would be: `./Project/my_functions.py`.\n", + "\n", + "If you were instead writing code in the file `final_project.py` and wanted to access the file `my_code.py`, you would have to go backwards up to the directory \"Python_Files\". The relative filepath would be: `../my_code.py`. \n", + "\n", + "If you were writing code in the file `final_project.py`, and wanted to access the file `my_data.CSV`, you would have to go backwards and then forwards. The relative filepath would be: `../../Data_Files/my_data.csv`. The first set of dots takes you backwards into \"Python_Files\", the second backwards into \"Tara\", then you move forwards into \"Data_Files\", and finally access the file \"my_data.csv\"." ] }, { @@ -75,15 +162,15 @@ "source": [ "If you are running a practical in the lab, you might take a measurement once a minute or multiple times a second, for example if you are running cyclic voltammetry. You then need somewhere to store all those data points. Different file types are marked by the extension at the end of the name, for example ``.txt``, ``.dat``, ``.cif``, or ``.xyz``. If you have used Excel for data procesing in the past, you might have noticed that Excel files are often stored as ``.csv``. Each has a purpose, and each has their own formatting depending on that purpose. \n", "\n", - "| Name | Extension | Uses | Format |\n", - "| -----| ----- | ----- | --- |\n", - "| Text file | ``.txt`` | Can take any values | Plain text, for example IMAGE |\n", - "| Comma-separated values (CSV) | ``.csv`` | Data storage, delimiter is a comma | IMAGE |\n", - "| Data file (DAT) | ``.dat`` | Can contain any file type (plaint text, PDF, audio, etc.). Often not human-readable. | Any |\n", - "| Crystallographic Information File (CIF) | ``.cif`` | Standard format for storing crystallographic structural data | IMAGE |\n", - "| XYZ file | ``.xyz`` | Standard format for storing atomic coordinates | IMAGE | \n", - "| Python file (PY) | ``.py`` | Text file containing Python code, to be opened and used by a Python IDE | |\n", - "| Jupyter Notebook (IPYNB) | ``.ipynb`` | Text-based file used by Jupyter Notebook | IMAGE |\n", + "| Name | Extension | Uses |\n", + "| -----| ----- | ----- |\n", + "| Text file | ``.txt`` | Can take any values, stores plain text |\n", + "| Comma-separated values (CSV) | ``.csv`` | Data storage, delimiter is a comma |\n", + "| Data file (DAT) | ``.dat`` | Can contain any file type (plain text, PDF, audio, etc.). Often not human-readable. | \n", + "| Crystallographic Information File (CIF) | ``.cif`` | Standard format for storing crystallographic structural data |\n", + "| XYZ file | ``.xyz`` | Standard format for storing atomic coordinates |\n", + "| Python file (PY) | ``.py`` | Text file containing Python code, to be opened and used by a Python IDE | \n", + "| Jupyter Notebook (IPYNB) | ``.ipynb`` | Text-based file used by Jupyter Notebook |\n", "\n", "Each file type serves a different purpose. Try opening the files with different editors. For example, open a ``.py`` file in both your Python IDE (e.g. Spyder, IDLE, or VSCode), and then open it in a text editor (e.g. Word or Notepad) and look at the difference. The Python IDE is able to interpret the data in a useful way, and then save any changes you make. Open one of the data files. You will be able to extract data from a file (e.g. a .xyz file) and make it useable by your program.\n", "\n", @@ -95,7 +182,7 @@ "id": "eb06d9d4", "metadata": {}, "source": [ - "## Delimiters" + "### Delimiters" ] }, { @@ -115,15 +202,19 @@ "id": "1efe054d", "metadata": {}, "source": [ - "## Common file types" + "### Common file type structures" ] }, { "cell_type": "markdown", - "id": "3a639dbd", + "id": "566f8938", "metadata": {}, "source": [ - "### .csv files" + "Different file types look different when opened. You can view your files using an IDE (like VSCode or Spyder), or a text editor (your computer may have a built-in one called 'Notepad' or similar). \n", + "\n", + "If you are reading data from a file, you should always open up your file and check that the data looks correct, whether there are any headers, and that it has been arranged in the format you are expecting. \n", + "\n", + "Common formats are shown below:" ] }, { @@ -131,13 +222,102 @@ "id": "1b7aa359", "metadata": {}, "source": [ + "
      \n", + " Text files \n", + "\n", + "Text files can contain lots of types of content, but always in plain text. Any data extracted into Python will be as a `string` data type, not an `integer` or `float`. \n", + "\n", + "\n", + "\n", + "

      " + ] + }, + { + "cell_type": "markdown", + "id": "3a639dbd", + "metadata": {}, + "source": [ + "
      \n", + " CSV files \n", + "\n", ".csv files are some of the more common file types. You will often see Excel documents saved in this format. \n", "\n", - "IMAGE = excel doc and associated csv format\n", + "\n", + "\n", + "As you can see, each cell is separated by a comma to its sides, and a new line above and below. The delimiter is a comma. Empty cells are marked by just a comma with no contents.\n", + "\n", + "If you want to take data values from an Excel sheet, you need to make sure it is saved with the .csv format. If it isn't, you can simply click \"save as\" and change the file type to .csv. However, make sure you do not save it as \"CSV UTF-8\", or you will get unexpected formatting when you try to extract information from your file.\n", + "\n", + "

      " + ] + }, + { + "cell_type": "markdown", + "id": "3d292c7b", + "metadata": {}, + "source": [ + "
      \n", + " XYZ file\n", + "\n", + "XYZ files store atomic coordinates. \n", + "\n", + "The first line indicates how many atomic coordinates are in the file. \n", + "\n", + "The second line describes the molecule or collection or molecules. \n", + "\n", + "Successive lines first contain the element, then it's x, y, z coordinates in Angstroms. The delimiter is a tab, although you can also separate with just whitespace. \n", + "\n", + "\n", + "\n", + "

      " + ] + }, + { + "cell_type": "markdown", + "id": "ce29725a", + "metadata": {}, + "source": [ + "
      \n", + " Python file\n", + "\n", + "Python files have the extension .py. If opened with an IDE, text will be automatically highlighted. Otherwise, it will be in plain text, like a text file. \n", + "\n", + "\n", + "\n", + "

      " + ] + }, + { + "cell_type": "markdown", + "id": "4ad745c9", + "metadata": {}, + "source": [ + "## Summary" + ] + }, + { + "cell_type": "markdown", + "id": "ba419a5e", + "metadata": {}, + "source": [ + "- Files are grouped in directories to make navigation more convenient. \n", + "\n", + "- Directories branch down from a root directory.\n", + "\n", + "- Absolute filepaths indicate every directory and step from the root to the file you are indicating. \n", "\n", - "As you can see, each cell is separated by a comma to its sides, and a new line above and below. The delimiter is a comma.\n", + "- Relative filepaths use `.` and `..` to indicate a relative path. \n", + " - `.` indicates to go forward (down) a directory.\n", + " - `..` indicates to go backwards (up) a directory. \n", "\n", - "If you want to take data values from an Excel sheet, you need to make sure it is saved with the .csv format. If it isn't, you can simply click \"save as\" and change the file type to .csv. However, make sure you do not save it as \"CSV UTF-8\", or you will get unexpected formatting when you try to extract information from your file" + "- Different file types have differnt extensions. These include, but are not limited to:\n", + " - .py for Python files\n", + " - .txt for text files\n", + " - .csv for CSV files\n", + " - .xyz for XYZ files\n", + " - .ipynb for Jupyter Notebooks files\n", + " - .cif for CIF files\n", + " - .dat for a DAT file" ] } ], diff --git a/lessons/files/images/CSV_file.png b/lessons/files/images/CSV_file.png new file mode 100644 index 0000000000000000000000000000000000000000..e079c1d62c542f7bee4a222ad417439a481cc77b GIT binary patch literal 28688 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
      +ydI_=Wtyx62FhWYm+JbA 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

      nC@PbPo(RpZ0L z+eGQJ-}0Vp{d{jjl+X5|cs-C{=onVmjM8B_95qjhh+d+NAMQy>@xVVu~AUzyCGNRpB@#4h`d;XEH51FlM3%TwjQKT#;@mQ*Tz!ZsKP&;8H zelvQCIYoqV=@Q&jE3myHJ2+~rM{O|cZrAOWU9b8;R*=c}Nc4Y!LS^=|UnuuCb=$oc z`96e&(LDa$!S4xF(PKPB9OO2GM<_&B2|4W_FkM1&b<30}C%D3lgEwlcKj*WAXl;WsFK788FL zV8e(89l-c^%%IMz{T551%{r3(vBCVk@Ci73|3`aY85ZT*wLQvK_9j(IML@S3kQPBw zLXqxv=#&OwkS+@)1j#{KY3Y(2P(tYtl$1eW=)Z%-@n&ib0{)1*L_{< zTI*crc`hKR9_;SEdhtp-6x>>ij(~(W6{^4Z9Bw+|KmL%b${)l*>oo~vrLYk*Bk#)P z{gn#+RE(!ETxl>+tllY+Y5|eB!${v7oivsqPnEG(;~&E$Vk0?-JBdMLPP7> ztlE{gfxl`daAok!qo(Uljt}PTs6+DA(*pY|QRaaUR;u2O!Bm3|Wh`mcU=(%*;*mfO z+Du4XGJ@Fi{e-(BaBtpRmNPbaMWwdpwhkS5#ZIs{cZ#nE;|FeM%=??megE7sjS!UHupy)?YWCahJoPP|N|Y}0z&uDlYc`N?P^D4a2`tj7 z`@1o^M!fL}cH*Vk1E6cv)SQ*jL(E(;M?F-t67z|!U)D~Em-#Ck9F!apB zuj)g8kSRJe%`V>1El8YOy%h;JM(dG3aHC#V%NkPn4WaocH4H-9b||2-d!z)V>=i>9 zoq~xMZ@b?hnJ)OR1TpJiiTh=$V6De4^1vVcNi*>j%TLO-5Lmi`9P|+=qeY> zn0F|W!sb7X`y4IWs^8q>-Y)u<9}?~}YZDdE9C%(Il48VNf6yN0a|Wg)RcVfcDBp#? zFHh~*_8sJ3?95z-)mpaO4WvBO_GuQ?#69ekQd85@;>Wv_8l{kACJ3zV>|n8czWc5* zk=#bLyQ__qu!A=;&zCw7&B96F(=p!a{pS`RAHk4agriwNU`XAC^&`x}4bjIM%bY5k z#cEv!0xR0F%4g3dt!i6h*AfuB;FBZ_^Q|Er5W%B*=%CDy#U|%mkz}H*%H8^Kn9WS=kuNh1Zb#o8QIF4~Xe_; zdf~$M!>@fxN7qTe_AiMtm{$+7N)#Usi!5A{u@7z>Pyhp(sfQ5VHPETEm(m}ux8Jjb zgB$q}nJHoU%FXjnZ;areo+=)tcO_%q*xPl!U*1+2s^PvWNG5XlE5LGx_N#-C+hUv< z{m9uK$oOKWgN;-Ol&>vd@2-E4x<_3XTHG2I=~NzT^u$Cz(CX!Gg4r5F>3Y#UWEb~x z9xxr2RNg04q$eMUw*JpGkBvz4Fm+?;Xvlc{%Z6H#$DmTpQXK|7x+pdmvo)RhIPtTj z1n42{ifZ;YDJU;^yZP5Z2qJs|?19hWYPautE9-Ybv#Q!{f`!mzvV&cmY{zRM(G_|26zn`dO+_I?$cv0xFPiqY%T{j`v|lXPgaoC(K~$PHlpG zqMwerzTXktv}H=0>LTl9G(xlTEk;m!jH+nMT2i!*PV6ipeLGn7{h)=cGC1JIgM2&# zhBJj|6GDCsnGTb_jpwrp>#qc=lZ?O4qW>zr#^Fk$rtYLeB|;2mK!6-qwz;-bo6W1< zdWCvvD7_<+J21?_(Pp!R#V$Q7s~!^k^$XO-vlcH=)!+n3yF$$0Ax@3?+ml0UEP|Ow zAy3`bzSGbqkg_X981u!tU_XmZA!ZtE$wnrEr_yU+xK^M9Hf2jdP$@WupFEYOp62G? z;i98ZZKfeJ&LZdtGc#Gc3t%N*+Ui&Ig&5F(x9ddH#I!EO!KYl0p6Hzc%{spFWc&bC z_131uUe52Y4-?i^>%3}Etu`OX6V%h8nllXO|LsmCFQSlB^zKH z1;h(fr2ycvVO^sPJx|_!tlg7~pgmPqd8lKo1$JLPo}2|E`Gq|dj)}bfd z4H+p3HQikbP$!s;WK>Y-4b{QE$ixu32l%5RTPREQub5@54%=Xe%fw!egR5Sg0$(Fw zRKn%&r2C0xfe^T-oCQ3;O#0z2zsZxeH&_8hQ|y<_(59E0I1c4GKu zKpmvdwKp(4Wc+{QtMY{GLzLa3iyr-I`1@=y9S^YiH-I|{S!A|PmKixmeR9Mlzh=9A zqf?@APJwq2I1XE<;5EQoX?!~u8X9M4jF_zSA-MybLd!VX6a_;K{Bz5cK!j57e**55 zVDWa9I9_IxBo$2I9hJR>53Kt#U(XqMa`ZdRP=goT)E6^iz0!F&PKrzQ2g{;q==qds zQl8qYolu86S}9IB7vMc6$vyv?covmgela7bk2}C`xoRfQ27F4ra(s);nw5wa5GGhW zB$z|qJE2Ty7#XSk)((Rp`OO!5f_bjx^%$CdT0R{`*#f0iEh~IoEtH=1KtWRf zr%eG>CnqPH*ed<|8;W=o%-%KjRcEi72PS0(8Yp<$i#GWdu;8F>T7REc%XR?f^6J6_ zhmy2^%-mbut>`Zpe&r~vE%Dh~f4U^qSZI~E*VR#UpxrUMbGFM4#m7qQt;q+HSag zNEWg#<(W2p=fhp+EkeuPtbMNcfm3vU#Xls>r#u7;PbK#n>A;t2FeT~`!^FhIL8_B( zh|1rM3CIDpYTJm}qxvj|Q#&hA{FU`)ybr#9qBQD2LxQ^6dqRR%M_l}ake^<*LmaVyVPyxQix=;%( zk#*mBkI?L?4*;%2J_IM-d%oA^?Jr7(NL*Tf4^v=GJBJB72+;3gkT716L>~5PE+-_6A*$UYRxTqw!CG*asO4cD#d)_#OX* zC8{(WD7o=n<>Ci#qOKNO<#Cn+RrOmT8RMNn>sW|mlrHN%Qj{@e@upvFFJ3_Nb(N4T zowg3aN6Ss=pFY#9>q5>XZV+$B--dzf7;eyXG-z9j<=5tu_k0R%1lRk1LT1JY{3*fA~^Xb*Eb5{UEpdG>E zymcMxol+VeEN$P}wFF`ihud{QGfjt@zv1BG5Wvh;xC&yv?TSxmxWP?|i<0fv8L2&Q zCT;@m2U6hBWKp;0C@;uqf0SWM!x6B;wP0)LE38((;E)!KB+J+aCETs}jAI)FfQlCd zcOg3+i?&sw_03Jr!F&He6a(+9qRb;;h!PysmBOArdqy}5m2tHH^5o?8Bek_UMJ|Lh zQAWQvw4ry6&Knv~#m^Mvx=Q4ScDDXZJ>yKG=s=dD@}SPAYEz1%KBXuSo~=-JdTjjJ z9-!o7v6wB}&-JZErl=$+xWXL~1WT`U8%&DjmYRu8k)={d5^@Ch_3MS!aHH?-KW;>c z+_^Jq=G{w*9=%b+a9Hx}vvcrIIcV`iYYp}j>F@o-qq?`WS}JJV>-9a1R&oY%O~~%P zo~u^}~t@ER$W#IaZW&H8O(xjeOcPT!Y(<zAI5@CnK7LB1g}jXISnv zsPAkYXFZWs0os-Akr*x1wslAo?1^lRXS`7yxe;~xmKOt800kKtK$v4nwoOHEjZV1& zj0dL_uYA}kh>t^#(kn=E=sD_i+vEVoRq%!!3pyXzX?F2q#|#Lbill&Jsy?A}F>Xgy z18Qot$=>kyhx3=xOC;u(caSSIAT^iePAj+c6iy!j)`@??# z_mY9u25xkwBFYy(?uvkY%@U0b4e9=)q+26qY)mxKbhkL(OZJZsj>mQ(H?tmS~g9VA%_zx^!cxv7PJu zdT$1N%oIJEic-x(NBBY+*Z=rhrmq~(5*+q3rQl?VA=%Vvp771vI00|(+UdzJB6=t; zN_RCdmycm?Q6-`4?N>5T&NTo>oyN&yfIEQOtXVn9)6;YP)u4t_nw%DQ zJw|CiRX6W}DPhipL)^-Y#(aX$H0Xta%R@KEwJ;LJtlJ2uTcWrb0oSeWFnQ)Z)7udj2JHwuhFEo0t|{Z`FNXV7G=|UM2p6hFuF$XeqQOCMLp7BL5l+ z0=r?!qrTABuesFUKfitc%MtO=8Z>A80KM-^Y1iNBQ!;+EXM_zS`QO+*S^)|;OB4ShLg-@I@T{=jAFeliU$ZRYL* zK&}F{mvzZfVT6|HvPS(I2p=#m=|ht~t4iV<^HJ!qvwtiWKR5>!FEeG{D0E2@6R%*n zvQ(1TdCcMB zhf6SGLkR%lAy6oiXi*R@=ohLiESiuwuN=^-=Z;oD>;yCLuI;QoG*9ac1c3 zMjmDA(a{lsd=UXPKVJ`%bT$d;yPv4GE~unO+_Q7CBbEsB$@p=UdWj#`>25Z__f?|% zTe?h|F%;)`@lsZ1W-#NY?BeEnmI>-8i9(PO$N8O#O-QJLk!w|raIt1i=mzXK6sN(B zd6g#}THU}X$ZS3YO^pkE+WA;yRQO}M21ve@2JEOMNg=}X`yR90x}~w~@&fYl4^Caa zHCGOA_0qlFzGloLoZCAO&usDEF7u9GvYk3xe8E8P>DkcGPza(5r68hCw!4tbAnt?2 zjzH{0aQAhP5Guwae$gWoRyG$U={(#^^^JfY=5`? zjEOJY0#~!S*2lNU5SSId$wW3IpnDR>Ym{>{6DckiZC|4F;%-?6|Kj#Snr$$+82Tds zo&|^LEpr6NG2O9%8q6gDa7@3oX1e!+^g@qJ;BT5$!3)-Aa4^1}1)v^5&KwXZU6%>n z1xOgOAux==P~(K$==ZNJ2eNl+zw0RIvRg+FW^lKdZ z{40C78t^a)g>RAYh_HTGA3?&jwr;<1o-qDR=L%N)g{O*qelj{2s3JVC6~YOCf=$A#=}!p>`q3gb;vVRA zN8?M8Y3?wz3x-oU07MV+Zh=sGC}AIZ`KNU3FG@uwByc!Yt^(Lpf3!UUNnrv=z~FAG zfk9wdWA`9IoS2-X!I~?NfoxMiSPq^JZ3En~N{g+aghIS9KqnW0G3vDk(ONL+P>p+` zDW?X63kZ1zi_FF6iur|^sg1msZl^h$6O;>d3zJ8Y!Cez_R0*8qjej58^pBavUuVjm zNV@_U|K>@1G#iXy+yQ(ugvbUKlLxmMS^KyFro(so{c{#(1wEMZH^kYNsz-8p?U&** z8CqmZ4;@NY_ZZ&=GxRqPl z#l>k<`=IXKg9stZFJTOJ%XgnZlxwvAi42S(qu1XXK+eNDUF`HL6-mNc$brDHIwa)? zQs%`h&3Gt{$V2xH_g3W2^R4*a77_K^BhbyQqzc3E!py2pa74CIL`Tb5U_K|JPN?&d$yl zVtQUH@Q_mI(11cf7v<>5S&dV~&lw1IoYap~KnbN|b>=I^5{~j>j-pLGK;VOu||;IrMYv z5mpA(7(C*Hhes2ADPrCq)rZY^J9)*_kRmfYn*;jky9mePhn@2RS&+Gs5i)5zq7cs& zy7jUQ_xUF9Zndl^`w0H)Q9}{riAXkonDaJ_B@YW13?;hA<30G$@G8NB%t(WLt+IpN4K#9n3B* zt^xOAlKR1?;0ApDsA~3k^V#5|QfQO*6-S1qXJi<{b{kE-G+n&_cICya&F4#CO#n2} z@1sd5>Hd5&s^+wG_D?`peoI{wpH=Og8|4~$>d*dsWRu@BuTY|p-pts!5XmW9Nd#!V{TSdW?YcnAdEW5u#Ta`+~42V zt9t!|xTgeEr9tEd03<`9g^aRIO-(&bR^YoeuMHB*Vk{)rh+z)C`Z34vg`#0IzaZNT z7fuHbuPWBbyQ3_B|9%tVe{E_;55C=5E+>^Fdyg$(u!pL$GS{aIBr?vS(~(JcZk5=t zku(rf*I)DgkU}^JVZa0VCtWrFH-N&&$CtLz%JPo=Dx0LcgV@$HJWGezcr*QAAg3ZsCT#n!M*sfT}RY;u3$pXZ-nMyWBDK+^2qe_-$6W|<1usV6#r(1A%Lvo z6@N9)@Ll|k&@w{Vt|GN|ZAVsov%iKLdk@8xr&q2p91QKUIl~Z~4V@$py5zpzI@F;~ zBh0x8ACDt5i6j+WFe?&cjqR>nT(V3hzw{OhVbI>UtcS~)Td*&R_cnjJtAzvY?Ga2Ijau~GEAP(E#qqd0c>>d5AHnNQI0hxKc?AiR(V&EExd z4Wkdf{Ox|>8&XN6fAlaiGD7``{fLZ;^un4u3H+7n^s_n!i)B3l6fprpP9*IJxZA+} zrLSd6gGrLXS7q7PafeT~p}+M%{&;0UN>t2y+Xqzm0KUEkWTkeaOLXF-T~!#l1Az-~ z3BPhnWVgo0|DN;V>jjndd>YsTfZm)Eipn(Jy)o7i7i(HCN6MbaAK*6!m816(G{vhS zJSlZCKsPb+&6`wro9%~DsA_mtNYsLp2Ln4G4x)h-Ve=N+gCry*C8p)HuhGs%ywqb< z)(7VeOG`FB_|*2f8iIhLe6PAp4N>!+ato&A5`oc1K&S2~kw@jj?8P^U8H1uj+eg{3 zNEC<)hVSjl`41kSKYCgU=mh0IY&k&zmC4|vmN-vRXus9avy%x4Y6JunkFQ$1|8 z<$5>_)53rJuBQdmPyH4H>e2DSR7vSeG1n+```s` zT(a|E350QM)1to%h0Cf2)wz{l29joCzeGnTkz)L+P6fuu;XLF+#Jxcpm8~}{e z-{OEVz7!6;d8O_%x{ybQYO)Jn=oQI1o30kcF*a|M2xc%DUvA*z!jGrHVtW z1x8;+IKi&WMV8w~$CJaj)|rYw;9%Ox-w%?&A>nx9J5d9HHwupOosPEavIG`uBPPnqsZ|j`w0oH!D2)e z5+Gr~BAOMp49lrF@0Z=6r9(6jzS&cv+f_&C_bybMuQEQnaS#Pac{*&~#Z*Wjs(4hu zN94HWHjBnMJ*Dl-$zA&`Hkn>el6kf>QWXig?X*aCscDcK_t}8uANw+Kpi${+n*XhB z`S-sjj@Dvj_v5{Ph~K_03)-2%n5qcRrZU!>U%HxKQGDnfKMHQXW4FV9C7`asT$5>O zI%n{j4}ZHc1c3j_Y?5ky1`Ni)$4?%l7$y>*2dFx?&L(9s3}mDq-7TJ0nBOoD;ATG6 zBMpkKV8hSXnY?70GX96YrUK+PZ$mtEmMidY3Q?}niLr(?c*bVGR0~#0hK;1~hkFSN zsj(=LS@CZ{PN1RtipfmInM=5kEOVD7}W83I=l*d z@#1S{{6cCI^~Ly9a|hI-$+Zv*QQncc^SyU`f4O$ArLo$@lCi>>IH`u zkHVe8CEg?Ys}hc@!=qKk6GskN43o5zMx{g@G((Si>eBn|5owq=NC;t%n5_c!H~_d~ zC<7@o1)co5noh&%$8oM&$m2+^*sC}UnyWB0^`hHl%DE&=PQ1jYJF{R;u>is_`jDV* zwY~00&`tmQLH^aCsk~%~o-6q|+B^mgRpjUNMSPCka=I9&RrY>so5oKnshwAP9Ul@u zTV6l<3;8g7Y;(fMk@8%=#>=b-rWyb*fGiA;eY5I^dha#yd#JyGg)Djk>g9^MEk5^5>|Du_#vg^UK!$e&FNy#~gb*I{Dr=IO z(d$g&7)Xt^8Qnc|J>VN2V<)!?)Ro~f)0+2pZ;0Uk zTH{V1aQppaA3Yhr=x|LOXqo2!uMRODjg{-oYq zV+*9OPtgh7xheJ1qV`Fpgy1ntS~Xi4m4hJJ?}9~ZYAXwf^o``xVDTH#?_Mif68e}eSN=s>b;!8>ujFJSM9d*m%d#jKeSeqVgAl{;i+P9kuT5=YP=(!3(# zJ~A>h0aaat!AE?PBy|M23Q{&AF_F z#k#+672N#2_bxrMtWj+)yJWZI&sXWT0v%Pgix7cERa6|uDsp+K%O|`v;*k)#@y9da z(*od{@wkDBF7MK##-EJ#5|0E5zOdHhk8(l3!?5~bA6I6N%ROr#>*}))kr{+{Rs@^D z!(5^nr&R|~rUsyqU)>K+gvZC``^ND%E!<9lb8gp5=^E+dGuF08?_NRBC_P@}7-}`2 zh!44hcHA`aww37uF{4>y{-|_@#Of^EB2JGI$6gS1Ic!9H~(1B1I^-@c+UFHU5B+})0QS)3*+x{d2)KsjiMxyLST_i~;bCObQY zZD6A4Q3e`@E{R?Q8 zipue|pJqLbNPtFTatUq@ch&+%@8j{5!dJ4%mnpXxw-??TyBUo5vQH~ml#C^u777Mc z@#Ho4fqfYzG~GAHiQdD&u5VhoE6e$^PIEZ6eSOT;(fub1p_#F1lv_#Ow%`{qQF<=r z)vm$j*kwu8^UgLeyM7uKudJ;6FgW!1=wHY9{8r*Iuf^|O?u6VQeNcP__-}~%*MKnr ziQ6?>q3?&TI}#_4vm4XXKtI1I$g>KYr0#dn7 z_ISwq&#EC@fZmmIMoe5#D{~g)6yk#YHIUY7i;tmq{p920{eEp=jsG!sga*t+73jt;0R!<$gBo28XEA9(Z_=gNMi0rvG?&7_oX@hY>uI zcj0IT6a$k4JuenPTD_0UCimNW1w7221qHRn=WLWsBJ#wP z9e8gQFjzoEzZg>ho#cztl(@F0CX3EZFdIn9WW>8I>O2(a#T@s@^77h<+`e4v-xbSI z{8wlq2$a5xYcvulW1$(mR$PB)13`+xp{*b#!CRnLF#mz;)TUvkk;XPAi z-2I0^(7-_lT!D`m;6IzhG)3n@gOvhJ-EY0>_md|a3|d^-Pu^KU(6n->z5?mVj_{K0 z`uZ}67Y(K!=R-Kt_Fn2gDg|$q_c_Y}I1q#vjQURk3t}t_#CQRukk|(J)Ohn?+Iw3H zV-tNXr#{0jUGO7-olA=*RGAWq&Svjs%2Vy0cWqamH1#^KR<=L-CA2}95$33EYXMbG| z&(c_%a%{gsA-s>m>i zxQp(3O@KZR*DVbnszU0wvl6`eSNMy(fL(#q3IF+n*h~E9B|k83{`2y;O8DQ`|NF!L zyL3>%{6BkR{A9S;95P>2z}@2?X@j~Kk=LAmAbLX-iuBa)ee~(xzgw&5+`qf+fB*Ua a$FiJm$H(*rlkAirD=!bzQVZ^xJpDi6-#eZF literal 0 HcmV?d00001 diff --git a/lessons/files/images/py_file.png b/lessons/files/images/py_file.png new file mode 100644 index 0000000000000000000000000000000000000000..9738c8762dacbff4c82c7b1d51086666d1d7f829 GIT binary patch literal 10484 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 literal 0 HcmV?d00001 diff --git a/lessons/files/spectrum.txt b/lessons/files/spectrum.txt index 588f101..12ecc2c 100644 --- a/lessons/files/spectrum.txt +++ b/lessons/files/spectrum.txt @@ -17,3 +17,5 @@ nm &#&# abs 310 0.002 300 0.007 310 0.002 +300 0.007 +310 0.002 diff --git a/lessons/loops_functions/for_loops.ipynb b/lessons/loops_functions/for_loops.ipynb index 29b2afd..31b43df 100644 --- a/lessons/loops_functions/for_loops.ipynb +++ b/lessons/loops_functions/for_loops.ipynb @@ -11,7 +11,7 @@ "## Learning Outcomes\n", "- Iterate using a ``for`` loop.\n", "- Iterate through a list.\n", - "- Understand ``zip()`` and ``enumerate`.\n", + "- Understand `enumerate()` and ``zip()``.\n", "- Iterate using the ``range()`` function.\n", "- Use nested loops.\n", "- Understand ``continue`` and ``break``.\n", @@ -30,19 +30,20 @@ "source": [ "## Iterating with a list\n", "\n", - "You will often find tasks that you need to do over and over again, such as the same calculation on multiple data points. To save writing out the same equation over and over again, you can instead use loops to do thousands of calculations incredibly quickly. You will become a lab data processing guru!\n", + "You will often find tasks that you need to do over and over again, such as the same calculation on multiple data points. To save writing out the same equation over and over again, you can instead use loops to do thousands of calculations incredibly quickly, making you a lab data processing wizard!\n", "\n", "Just like with ``if`` statements, ``for`` loops require specific syntax.\n", "\n", - ">```Python\n", - "> for number in list_of_numbers:\n", - "> do action\n", + "```Python\n", + "for number in list_of_numbers:\n", + " do action\n", + "```\n", "\n", "- `for` indicates that we will begin a loop.\n", - "- `number` is a new variable we are defining, describing the items within the list of numbers. For each loop, it will automatically redefine to refer to the next item in the list.\n", + "- `number` is a new variable we are defining, describing each item within the list of numbers in turn. For each loop, it will automatically redefine to refer to the next item in the list.\n", "- `in list_of_numbers` indicates that we want to repeat the action in the loop once per item in the list `list_of_numbers`.\n", "- `:` signals the beginning of the loop.\n", - "- The actions within the loop are indented with the ```` key. All lines of code indented just below the ``for`` line gets repeated within the loop. When the code is no longer indented, the loop is over. You can write code of any length within a ``for `` loop as long as you respect its indentation.\n", + "- The actions within the loop are indented with the ```` key. All lines of code indented just below the ``for`` line gets repeated within the loop. When the code is no longer indented, the loop is over. You can write code of any length within a ``for`` loop as long as you respect its indentation.\n", "\n", "Here is an example:" ] @@ -69,7 +70,7 @@ "id": "hwu0INZoK5FO" }, "source": [ - "The cell above prints three stings despite having only used a single `print()` statement. Let's look at this closer.\n", + "The cell above prints three strings despite having only used a single `print()` statement. Let's look at this closer.\n", "\n", "We begin by defining a list of strings:\n", "\n", @@ -80,11 +81,11 @@ "`for mol in molecules:`\n", "\n", "- `for` indicates that we will begin a loop.\n", - "- `mol` is a new variable we are defining, describing the items within the list of molecules.\n", + "- `mol` is a new variable we are defining, describing each item within the list of molecules in turn. In the first loop it is a variable referring to `\"H2\"`, in the second loop it refers to `\"H2O\"`, and in the last loop it refers to `\"CH4\"`.\n", "- `in molecules` indicates that we want to do repeat the operations in the loop once per molecule in the list `molecules`.\n", "- `:` signals the beginning of the loop.\n", "\n", - "We print the contents of the `mol` variable to the screen:\n", + "We print the contents of the `mol` variable to the screen using:\n", "\n", "`print(mol)`\n", "\n", @@ -103,7 +104,7 @@ "

      \n", " Iterating to perform many maths operations\n", "\n", - "``for`` loops can iterate through lists containing both strings and numbers. When iterating through lists of floats or integers, you can then perform maths operations on each item. You could then append it to a new list to use later.\n", + "``for`` loops can iterate through lists containing both strings and numbers. By iterating through lists of floats or integers, you can perform maths on each item in turn. The new values can then be saved (by appending to a new list) for later.\n", "\n", "```Python\n", "# Create a list of pressures in mmHg\n", @@ -127,7 +128,7 @@ "\n", "In this piece of code, we are converting pressure in mmHg to bar. Each value in the list ``pressure_mmHg`` is converted into bar, printed, and appended into a new list which contains all the associated values in bar. This list can then be used throughout the rest of the code.\n", "\n", - "The empty list ``pressure_bar`` is first defined outside of the loop. If it was defined inside the loop, it would be re-defined on every loop empty again. Try it yourself. \n", + "The empty list ``pressure_bar`` is first defined outside of the loop. If it was defined inside the loop, it would be re-defined as emopty on every loop, and by the end would only contain the final value. Try it yourself to see. \n", "\n", "

      " ] @@ -139,7 +140,7 @@ "
      \n", " Iterating through a string\n", "\n", - "``for`` loops can also iterate over items in a string.\n", + "``for`` loops can also iterate over characters in a string.\n", "\n", "```Python\n", "string = \"hydrogen2oxygen\"\n", @@ -148,7 +149,7 @@ " print(letter)\n", "```\n", "\n", - "This has limited use for Chemistry purposes, but it is good to be aware of.\n", + "This has limited use for chemistry purposes, but it is good to be aware of.\n", "\n", "

      " ] @@ -160,7 +161,7 @@ "
      \n", " Iterating using nested lists\n", "\n", - "You can also iterate over nested lists, however it is important to keep in mind that the nested list itself is the item you are referring to. You can refer to items within the nested list by using square brackets, or nested loops (more on that later). Try out this code:\n", + "You can also iterate over nested lists, keeping in mind that each nested list is the item being referred to when assigning your temporary variable. You can refer to items within the nested list using square brackets, or nested loops (more on that later). Try out this code:\n", "\n", "```Python\n", "bimolecular_atom_masses = [[1.008, 1.008], [12.011, 15.999], [15.999, 15.999]]\n", @@ -176,6 +177,8 @@ "\n", "In this program, each nested list in ``bimolecular_atom_masses`` is assigned the temporary variable name ``molecule``. To refer to an item within this nested list, you must refer to it as ``molecule[0]`` or ``molecule[1]``, where the square bracketted number refers to the item's position within the list. Remember that Python is zero-indexed, so the first item in a list is called '0', the second item is called '1' and so on. \n", "\n", + "Reminder: To refer straight to an item in a nested list, you can use double sets of square brackets. For example, to refer to the float 12.011 in the above list, you can call it with `bimolecular_atom_masses[1][0]`. This calls the item in position zero of the list in position 1. Remeber that lists are zero-indexed, and so the first item in a list always has the index 0.\n", + "\n", "

      \n" ] }, @@ -198,12 +201,14 @@ "for point in data_points:\n", " if point > mean + 3 * standard_deviation:\n", " print(point, \" is an outlier\")\n", + " elif point < mean + 3 * standard_deviation:\n", + " print(point, \"is an outlier\")\n", "```\n", "\n", "The output is:\n", " 37.2 is an outlier \n", "\n", - "We could also use loops to calculate the mean and standard deviation!\n", + "We could also use loops to calculate the mean and standard deviation of a dataset in the first place!\n", "\n", "

      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 Hu?YP?JDc&T literal 0 HcmV?d00001 diff --git a/lessons/common_libs/images/label_examples.png b/lessons/common_libs/images/label_examples.png new file mode 100644 index 0000000000000000000000000000000000000000..f7195fea83033f5288932ddd7d49f9b8aaa3442a GIT binary patch literal 120451 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 literal 0 HcmV?d00001 diff --git a/lessons/common_libs/images/cyclic_voltammetry_example.png b/lessons/common_libs/images/cyclic_voltammetry_example.png new file mode 100644 index 0000000000000000000000000000000000000000..b71410b246bd482191c364adf34fcab40a3ba094 GIT binary patch literal 156368 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


      " ] @@ -268,7 +273,7 @@ "Use your understanding of ``for`` loops to work out the percentage yields for each person. Use an `if` statement within the loop to test the following conditions:\n", "- Percentage yield is smaller than 50 % - print a statement that the yield is poor. \n", "- Percentage yield is between 50 % and 100 % - print that the yield is good. \n", - "- Percentage yield is over 100% - print a statement that the product is likely impure.\n", + "- Percentage yield is over 100 % - print a statement that the product is likely impure.\n", "\n", "The theoretical yield is equal to the starting mass ÷ 122, then × 136.\n", "\n", @@ -280,17 +285,20 @@ "metadata": {}, "source": [ "
      \n", - " Click to view answer\n", + " Click to view answer\n", "\n", "```Python\n", - "product_mass_list = [2.5,2.7,3.1,1.6,4]\n", + "product_masses = [2.5,2.7,3.1,1.6,4] # grams\n", "starting_mass = 3 # grams\n", "\n", - "theoretical_yield = (starting_mass/122)*136\n", + "theoretical_yield = (starting_mass/122)*136 # grams\n", "\n", - "for product_mass in product_mass_list:\n", - " percent_yield = (product_mass / theoretical_yield) * 100\n", + "# For each item in the list product_masses\n", + "for product_mass in product_masses:\n", + " # Calculate percentage yield and print to no decimal places\n", + " percent_yield = (product_mass / theoretical_yield) * 100 # %\n", " print(f\"Percent yield: {percent_yield:.0f}%\")\n", + " # Use conditional statements to assign purity\n", " if percent_yield < 50:\n", " print(\"Poor yield\")\n", " elif percent_yield >= 50 and percent_yield < 100:\n", @@ -338,7 +346,7 @@ "
      \n", " Click to view answer\n", "\n", - "Remember that code you want to do each time the for loop repeats need to be indented. In the example the print statement is not indented and so is not executed each time, but only once when the loop is finished. You can fix the code just by indenting the print statement with the tab key.\n", + "Remember that code you want to run every time the loop repeats need to be indented. In the example the `print` statement is not indented and so is not executed each time, but only once when the loop is finished. You can fix the code just by indenting the print statement with the tab key.\n", "\n", "```Python\n", "temperature_measurements = [27.3, 28.1, 26.9, 27.5, 28.0]\n", @@ -361,19 +369,26 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ``Enumerate``\n", + "Each entry in a list has two things associated with them: the **index** of the entry and the **value** of the entry. \n", + "\n", + "Python is zero-indexed, meaning that each value in a list carries an index from 0 upwards. For example, in the list `[\"H\", \"He\", \"Li\", \"Be\"]`, \"H\" is at index position 0, \"He\", is at index position 1, \"Li\" is at index poisition 2, and \"Be\" at index position 3. Sometimes it is useful to know the index for a particular list or item in a list. Python allows us to find out the index while we iterate through a list using the function ``enumerate()``\n", "\n", - "Each entry in a list has two things associated with them, the index of the entry and the value of the entry. Sometimes it is useful to know the index. Python allows us to find out the index while we iterate through a list using ``enumerate``\n", + "The ``enumerate()`` function assigns each element in a list a number, from 0 upwards. This is the index, which can then be referred to to call items from that list. This is a good way of identifying where in a list a certain item is. The basic syntax of ``enumerate()`` is:\n", "\n", - "The ``enumerate()`` function assigns each element of a list a number, from 0 upwards, as the index which can then be referred to within the list. This is a good way of identifying where in a list a certain item is. The basic syntax of ``enumerate()`` is ``for i, j in list:``, where `i` is a temporary variable referring to the index number that is being assigned, and `j` is the item within the list.\n", + "``for i, j in enumerate(list):``\n", + "\n", + "- `i` is a temporary variable referring to the index number that is being assigned (i for index). \n", + "- `j` is the item value within the list.\n", + "- `list` is the list we are assigning index values to. \n", "\n", "Here is an example:\n", "\n", - ">```Python\n", - ">atom_names = [\"H\", \"He\", \"Li\", \"Be\"]\n", - ">\n", - ">for index, atom in enumerate(atom_names):\n", - "> print(atom, \"is at position\" , index, \"in the list\")\n", + "```Python\n", + "atom_names = [\"H\", \"He\", \"Li\", \"Be\"]\n", + "\n", + "for index, atom in enumerate(atom_names):\n", + " print(atom, \"is at position\" , index, \"in the list\")\n", + "```\n", "\n", "Resulting in the following output:\n", "\n", @@ -415,24 +430,85 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "```Enumerate``` is also useful for iterating through two lists.\n", + "
      \n", + " Using enumerate to iterate through two lists \n", "\n", - ">```Python\n", - ">atom_names = [\"H\", \"He\", \"Li\", \"Be\"]\n", - ">atom_masses = [1.008, 4.003, 6.94, 9.012]\n", - ">\n", - ">for index, atom in enumerate(atom_names):\n", - "> print(f\"The mass of {atom} is {atom_masses[index]}\")\n", + "You could use `enumerate()` to iterate through two or more lists at once.\n", + "\n", + "```Python\n", + "atom_names = [\"H\", \"He\", \"Li\", \"Be\"]\n", + "atom_masses = [1.008, 4.003, 6.94, 9.012] # g mol-1\n", + "atom_neutrons = [0, 2, 4, 5]\n", + "\n", + "for index, atom in enumerate(atom_names):\n", + " print(f\"The mass of {atom} with {atom_neutrons[index]} neutrons is {atom_masses[index]}\")\n", + "```\n", "\n", "The result is:
      \n", - "The mass of H is 1.008
      \n", - "The mass of He is 4.003
      \n", - "The mass of Li is 6.94
      \n", - "The mass of Be is 9.012
      \n", + "The mass of H with 0 neutrons is 1.008
      \n", + "The mass of He with 2 neutrons is 4.003
      \n", + "The mass of Li with 4 neutrons is 6.94
      \n", + "The mass of Be with 5 neutrons is 9.012
      \n", + "\n", + "In this case, all three lists are associated item-wise, meaning the element at index 0 in `atom_names` is related to the mass at index 0 of `atom_masses` and the number at index 0 in `atom_neutrons`. You only need to enumerate one of these lists (in this case, `atom_names`) to be able to reference the corresponding index for the other two lists. \n", + "\n", + "It is of course possible to have more complicated relationships betwen the indexes of multiple lists. An example would be where a range of values is needed from the second list, rather than just a single point. These could be accessed using additional `if` statements within the loop.\n", "\n", - "It is of course possible to have more complicated relationships betwen the index of two arrays. An example would be where a range of values is needed from the second list, rather than just a single point.\n", + "However, if the relationship is direct then Python offers a simple alternative: ```zip```.\n", + "

      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
      \n", + "
      Exercise: Compare near-identical lists \n", + "\n", + "---\n", + "\n", + "Two minerals in the same series have very similar formulas. Write a program to compare the two and identify where they differ. Also identify the index at which they differ.\n", + "\n", + "```Python\n", + "# The formulae of the two minerals\n", + "mineral_1 = [\"Pb\", \"Pb\", \"Cu\", \"Cr\", \"O\", \"O\", \"O\", \"O\", \"As\", \"O\", \"O\", \"O\", \"O\", \"O\", \"H\"]\n", + "mineral_2 = [\"Pb\", \"Pb\", \"Cu\", \"Cr\", \"O\", \"O\", \"O\", \"O\", \"P\", \"O\", \"O\", \"O\", \"O\", \"O\", \"H\"]\n", + "```\n", + "\n", + "
      \n", + "
      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
      \n", + " Click to view answer\n", + "\n", + "You can do this by first zipping the two lists to compare element-wise, then appending both elements to another list in order to find the discrepancy. It is pretty obvious when using fairly short lists of strings, but imagine if you were using huge arrays of numbers - it would take a lot longer playing spot-the-difference with that!\n", + "\n", + "```Python\n", + "# The formula of the two minerals\n", + "mineral_1 = [\"Pb\", \"Pb\", \"Cu\", \"Cr\", \"O\", \"O\", \"O\", \"O\", \"As\", \"O\", \"O\", \"O\", \"O\", \"O\", \"H\"]\n", + "mineral_2 = [\"Pb\", \"Pb\", \"Cu\", \"Cr\", \"O\", \"O\", \"O\", \"O\", \"P\", \"O\", \"O\", \"O\", \"O\", \"O\", \"H\"]\n", + "\n", + "# Check if the two minerals have the same number of elements\n", + "if len(mineral_1) != len(mineral_2):\n", + " print(\"The two minerals do not have the same number of elements and are not identical.\")\n", + "else:\n", + " # Iterate through the first mineral and compare each element with the second mineral\n", + " for index, element in enumerate(mineral_1):\n", + " # Check if elements at each index are identical\n", + " if element != mineral_2[index]:\n", + " print(f\"{element} does not match {mineral_2[index]} at index {index}\")\n", + " else:\n", + " print(f\"These minerals are identical at each index\")\n", + "```\n", + "\n", + "This potential solution uses ``zip()``, ``enumerate``, and nested lists. You can see how you can combine lots of aspects of Python to get a more powerful code.\n", "\n", - "However, if the relationship is direct then Python offers a simplet alternative ```zip```" + "

      " ] }, { @@ -446,17 +522,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "``zip()`` is a built-in Python functions which gives lists a bit more functionality, especially within loops. It is very important you understand their purpose and syntax.\n", + "``zip()`` is a built-in Python function which gives lists a bit more functionality, especially within loops. It is very important you understand its purpose and syntax.\n", "\n", - "### ``Zip()``\n", - "This function takes multiple lists and associates them element-wise. Elements from each list can then be called. It is like being able to call multiple lists within one ``for`` loop.\n", + "This function takes multiple lists and associates them element-wise. Elements from each list can then be called using individual temporary variables. It allows you to call multiple lists within one ``for`` loop.\n", "\n", - ">```Python\n", - ">atom_names = [\"H\", \"He\", \"Li\", \"Be\"]\n", - ">atom_masses = [1.008, 4.003, 6.94, 9.012]\n", - ">\n", - ">for name, mass in zip(atom_names, atom_masses):\n", - "> print(f\"The mass of {name} is {mass}\")\n", + "```Python\n", + "atom_names = [\"H\", \"He\", \"Li\", \"Be\"]\n", + "atom_masses = [1.008, 4.003, 6.94, 9.012]\n", + "\n", + "for name, mass in zip(atom_names, atom_masses):\n", + " print(f\"The mass of {name} is {mass}\")\n", + "```\n", "\n", "The result is:
      \n", "The mass of H is 1.008
      \n", @@ -464,7 +540,12 @@ "The mass of Li is 6.94
      \n", "The mass of Be is 9.012
      \n", "\n", - "``name`` is the temporary variable for items in the list ``atom_names``, and ``mass`` is the temporary variable for items in the list ``atom_masses``. Within the ``for`` loop, both temporary variables can be called. When the next loop begins, both temporary variables move on to the next item in each list. " + "- ``name`` is the temporary variable for items in the list ``atom_names``\n", + "- ``mass`` is the temporary variable for items in the list ``atom_masses``\n", + "\n", + "Within the ``for`` loop, both temporary variables can be called. When the next loop begins, both temporary variables move on to the next item in each list. \n", + "\n", + "**Important**: all lists being zipped together must be the same length. If they are not, you will almost certainly get an index error. If you want to check the length of a list, you can do that with the function `len(list)`." ] }, { @@ -474,7 +555,7 @@ "
      \n", " Zipping a list and a nested list\n", "\n", - "The ``zip()`` function takes two or more lists and associates them element-wise with each other, assigning a temporary variable name to each item as it does so. In this way, we can access two lists and their contents at the same time. It is important that the two lists have the same number of entries, or this will not work.\n", + "You are able to zip both lists and nested lists, as long as the number of nested lists is equal to the length of the other list. \n", "\n", "Run the code below.\n", "\n", @@ -482,11 +563,10 @@ "molecules = [\"H2O\", \"CO2\", \"HCN\"]\n", "masses = [[1.008, 1.008, 12.011] , [12.011, 15.999, 15.999], [1.008, 12.011, 14.007]]\n", "\n", - "# Assigns the temporary variable name 'molec' to each string in the list 'molecules'\n", + "# Assigns the temporary variable name 'mol' to each string in the list 'molecules'\n", "# Assigns the temporary variable name 'mass' to each list within the list 'masses'\n", "for mol, mass in zip(molecules, masses):\n", - " \n", - " # Use square brackets to access items in the nested list\n", + " # Find molecule total mass\n", " molecular_mass = mass[0] + mass[1] + mass[2]\n", " print(f\"Molecular mass of {mol} is {molecular_mass:.3f}\")\n", "\n", @@ -495,6 +575,8 @@ "\n", "You will see that for each string within the list `molecules` and for each list within the list `masses`, we can call both items at the same time. For nested lists, we can call entries within the nested lists using square brackets. Remember that due to Python's zero-indexing, the first item in the nested list has to be called with the number '0' and so on. \n", "\n", + "Note that the method of calling the index of the nested list would not work if those lists were varying lengths. If you try to call an index larger than the largest index in the list, you would get an index error and Python would not be able to run the code. In that case, you would instead want to use nested loops (discussed later in the lesson).\n", + "\n", "

      " ] }, @@ -526,16 +608,31 @@ "metadata": {}, "source": [ "
      \n", - "
      Exercise: Compare near-identical lists \n", + "
      Exercise: Transform coordinates from lists of x and y \n", "\n", - "---\n", + "--- \n", "\n", - "Two minerals in the same series have very similar formulas. Write a program to compare the two and identify where they differ. Also identify the index at which they differ.\n", + "A cartesian coordinate, $(x, y)$ can be rotated clockwise to a new position $(x', y')$ by an angle $\\theta$ around the origin using the following formulae:\n", + "\n", + "$ x' = x \\ cos(\\theta) + y\\ sin(\\theta) $
      \n", + "$ y' = -x \\ sin(\\theta) + y\\ cos(\\theta) $\n", + "\n", + "A group of hydrogen atoms have the following x and y coordinates:\n", "\n", "```Python\n", - "# The formulae of the two minerals\n", - "mineral_1 = [\"Pb\", \"Pb\", \"Cu\", \"Cr\", \"O\", \"O\", \"O\", \"O\", \"As\", \"O\", \"O\", \"O\", \"O\", \"O\", \"H\"]\n", - "mineral_2 = [\"Pb\", \"Pb\", \"Cu\", \"Cr\", \"O\", \"O\", \"O\", \"O\", \"P\", \"O\", \"O\", \"O\", \"O\", \"O\", \"H\"]\n", + "x_coords = [1.12, -6.99, -9.48, 8.89, -6.28, -4.98, 6.27, 7.35, 0.87, -9.50]\n", + "y_coords = [-1.87, 1.43, 6.38, 4.44, -0.12, -1.56, -8.71, -3.78, -0.31, -1.24]\n", + "```\n", + "\n", + "By zipping together these lists and iterating through with a `for` loop, rotate these coordinates by 30 $\\degree$ clockwise around the origin. Store the new values in two new lists.\n", + "\n", + "**Hint**: Remember that you can access `sin()` and `cos()` functions using the Python module `math`, and that these modules take values in *radians*, not degrees. \n", + "\n", + "This is the answer you should get:\n", + "\n", + "```Python\n", + "Rotated x coordinates: [0.03, -5.34, -5.02, 9.92, -5.5, -5.09, 1.07, 4.48, 0.6, -8.85]\n", + "Rotated y coordinates: [-2.18, 4.73, 10.27, -0.6, 3.04, 1.14, -10.68, -6.95, -0.7, 3.68]\n", "```\n", "\n", "
      \n", @@ -549,31 +646,43 @@ "
      \n", " Click to view answer\n", "\n", - "You can do this by first zipping the two lists to compare element-wise, then appending both elements to another list in order to find the discrepancy. It is pretty obvious when using fairly short lists of strings, but imagine if you were using huge arrays of numbers - it would take a lot longer playing spot-the-difference with that!\n", - "\n", "```Python\n", - "# The formula of the two minerals\n", - "mineral_1 = [\"Pb\", \"Pb\", \"Cu\", \"Cr\", \"O\", \"O\", \"O\", \"O\", \"As\", \"O\", \"O\", \"O\", \"O\", \"O\", \"H\"]\n", - "mineral_2 = [\"Pb\", \"Pb\", \"Cu\", \"Cr\", \"O\", \"O\", \"O\", \"O\", \"P\", \"O\", \"O\", \"O\", \"O\", \"O\", \"H\"]\n", - "\n", - "# An empty list that we will use to find the location of the discrepancy\n", - "comparison = []\n", - "\n", - "# Compare the two lists and create a list of element-wise pairings\n", - "for i, j in zip(mineral_1, mineral_2):\n", - " comparison.append([i, j])\n", - " print(i,j)\n", - " if i != j:\n", - " print(\"This is not the same\")\n", - " continue\n", - "\n", - "# Enumerate to identify the index of the discrepancy\n", - "for index, comp in enumerate(comparison):\n", - " if comp[0] != comp[1]:\n", - " print(comp[0], \"!=\", comp[1], \"at index\", index)\n", + "import math\n", + "\n", + "# Coordinates to be rotated\n", + "x_coords = [1.12, -6.99, -9.48, 8.89, -6.28, -4.98, 6.27, 7.35, 0.87, -9.50]\n", + "y_coords = [-1.87, 1.43, 6.38, 4.44, -0.12, -1.56, -8.71, -3.78, -0.31, -1.24]\n", + "\n", + "# Define the angle of rotation in radians\n", + "angle = math.radians(30) # degrees\n", + "\n", + "# Empty lists to store the rotated coordinates\n", + "rot_x_coords = []\n", + "rot_y_coords = []\n", + "\n", + "# Loop through the original coordinates, zipping x and y together\n", + "for x, y in zip(x_coords, y_coords):\n", + " # Rotate the coordinates by the specified angle\n", + " new_x = x * math.cos(angle) + y * math.sin(angle)\n", + " new_y = -1 * x * math.sin(angle) + y * math.cos(angle)\n", + " # Round the new coordinates to 2 decimal places\n", + " new_x = round(new_x, 2)\n", + " new_y = round(new_y, 2)\n", + " # Append the new coordinates to the respective lists\n", + " rot_x_coords.append(new_x)\n", + " rot_y_coords.append(new_y)\n", + "\n", + "print(\"Rotated x coordinates: \", rot_x_coords)\n", + "print(\"Rotated y coordinates: \", rot_y_coords)\n", "```\n", "\n", - "This potential solution uses ``zip()``, ``enumerate``, and nested lists. You can see how you can combine lots of aspects of Python to get a more powerful code.\n", + "Here is a summary of notable features: \n", + "\n", + "- Converting degrees to radians using the `math` function `radians()`.\n", + "- Define our new lists outside the loop.\n", + "- Calculate the new values using the rotation formulae.\n", + "- Round our answer to two decimal places using the Python function `round()`. This function takes two arguments: firstly the value, and secondly the number of decimal places you would like to round it to. \n", + "- The transformed coordinates are appended to new lists and printed to the screen.\n", "\n", "

      " ] @@ -588,25 +697,27 @@ "\n", "Try running the following piece of code:\n", "\n", - ">```Python\n", - ">for i in range(3):\n", - "> print(i)\n", + "```Python\n", + "for i in range(3):\n", + " print(i)\n", + "```\n", "\n", "It will print the following:\n", - "```text\n", - "0\n", - "1\n", - "2\n", - "```\n", "\n", - "You will notice it has printed ``0``,``1``,``2``, but not any further than that. This is because Python uses something called 0-indexing, which has been mentioned in the variable types lesson. Python will print 3 numbers starting from 0. This means if you want to print up to and including the number 3, you have to put ``range(4)``.\n", + "\n", + "0
      \n", + "1
      \n", + "2
      \n", + "
      \n", + "\n", + "You will notice it has printed ``0``,``1``,``2``, but not any further than that. This is again because of Python's 0-indexing, which has been mentioned previously. In this case, Python will print 3 numbers starting from 0. This means if you want to print up to and including the number 3, you have to put ``range(4)``.\n", "\n", "The ``range()`` function is also able to count from one specified number to another specified number in integer jumps. When we are providing more than one modifier to the function, we must input them in the following way:\n", "\n", - ">```Python\n", - ">for i in range(start, end, jump):\n", - "> print(i)\n", - ">```\n", + "```Python\n", + "for i in range(start, end, jump):\n", + " print(i)\n", + "```\n", "\n", "This will start counting from and including the start number, up to and not including the end number, in intervals specified by the third number. These can be positive or negative, and Python can count up or down. However, beware, as the ``range()`` function cannot take float values, only integer values." ] @@ -616,9 +727,9 @@ "metadata": {}, "source": [ "
      \n", - " Predicting range() output\n", + " Predicting range() output\n", "\n", - "Write out and run the following for loops. Make sure to look at what number it starts and ends at.\n", + "Write out and run the following `for` loops and predict the output. Make sure to look at what number it starts and ends at.\n", "\n", "```Python\n", "for x in range(2, 10):\n", @@ -641,11 +752,11 @@ "\n", "This code will print the following:\n", "\n", - "```text\n", - "Count in twos: 3\n", - "Count in twos: 5\n", - "Count in twos: 7\n", - "```\n", + "\n", + "Count in twos: 3
      \n", + "Count in twos: 5
      \n", + "Count in twos: 7 \n", + "

      \n", "\n", "It starts at the number 3 and counts upwards in twos. The final number we have given in in the code is the number 9, however because of Python's zero-indexing, this really corresponds to the number 8, and so the loop stops after only three iterations and does not print 'Count: 9'.\n", "\n", @@ -659,18 +770,39 @@ "
      \n", " Creating a list using loops\n", "\n", - "If you want to quickly create a list containing lots of numbers, you could use a ``for`` loop. In the following example, we are creating a list of the values of ml, the magnetic quantum number, for an f orbital. This takes values of -2 to 2.\n", + "If you want to quickly create a list containing lots of numbers, you could use a ``for`` loop. In the following example, we are creating a list of the values of ml, the magnetic quantum number, for an f orbital. This takes values of -3 to 3.\n", "\n", "```Python\n", "# ml values of an f orbital\n", "ml_d_orbital = []\n", "\n", - "for i in range(-2, 3, 1):\n", + "for i in range(-3, 4, 1):\n", " ml_d_orbital.append(i)\n", "\n", "print(ml_d_orbital)\n", "```\n", "\n", + "This prints: \n", + "\n", + "[-3, -2, -1, 0, 1, 2, 3]\n", + "\n", + "This is especially useful when you need a large list of regularly-spaced numbers. \n", + "\n", + "To access floating point numbers, you could either use functions in the library `NumPy`, or you can simply scale the list and divide `i` by the required number. \n", + "\n", + "For example, to create a list of numbers from 0 to 2.5 increasing in steps of 1, you could use the following code:\n", + "\n", + "```Python\n", + "floats = []\n", + "for i in range(0,26,1):\n", + " floats.append(i/10)\n", + "print(floats)\n", + "```\n", + "\n", + "which results in the following list:\n", + "\n", + "[0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5]\n", + "\n", "

      " ] }, @@ -679,9 +811,9 @@ "metadata": {}, "source": [ "
      \n", - " Iterating the length of a list using len()\n", + " Iterating the length of a list using len() \n", "\n", - "You can use the built-in Python function ``len()`` to find the length of a list. You could then iterate for the length of the list.\n", + "You can use the built-in Python function ``len()`` to find the length of a list. You could then iterate a number of times corresponding to the length of the list.\n", "\n", "```Python\n", "atom_list = [\"H\",\"He\",\"Li\",\"Be\"]\n", @@ -720,9 +852,9 @@ "The output is:
      \n", " [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] \n", "\n", - "For the purposes of testing that the program will work, you can use the number '10' and count it by hand. However, you can make this number as large as you want. Change `range(10)` to `range(1000)` to see this in action.\n", + "For the purposes of testing that the program will work, you could only create 10 coordinates and count them by hand. However, you can make this number as large as you want. Change `range(10)` to `range(1000)` to see this in action.\n", "\n", - "If you have not seen the syntax ``[0]*3``, all it means is to create a list comprised of '0' three times. It is a quicker way of creating large lists of the same number. \n", + "If you have not seen the syntax ``[0]*3``, all it means is to create a list comprised of '0' three times. It is a quicker way of creating large lists of identical contents. \n", "\n", "

      \n" ] @@ -736,7 +868,7 @@ "\n", "---\n", "\n", - "Try the following for loops. They will return an error, try to figure out why.\n", + "Try the following `for` loops. They will return an error, try to figure out why.\n", "\n", ">```Python\n", ">for x in range(10,5):\n", @@ -758,7 +890,7 @@ "
      \n", " Click to view answer\n", "\n", - "The first example will not return any output, as it does not know it needs to count down. Add the number '-1' separated by a comma to the 'range()' function to correct it.\n", + "The first example will not return any output, as it does not know it needs to count down. Add the number -1 separated by a comma to the `range()` function to correct it.\n", "\n", "The second example returns an error, because the ``range()`` function cannot handle float numbers. It also cannot jump in floats.\n", "\n", @@ -787,8 +919,6 @@ "
      \n", " Click to view answer\n", "\n", - "
      \n", - "\n", "``` Python\n", "# Empty list of atomic weights for all elements with f electrons in the neutral state\n", "f_electrons = []\n", @@ -803,7 +933,7 @@ "\n", " [58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102] \n", "\n", - "Think further: What if we only wanted certain elements within this, for example only elements with valence f electrons, how could we do this? We could also make this list more helpful by using a dictionary of elemental symbols associated with each atomic number to exchange each number to a elemental symbol, making the list far more intuitive.\n", + "Think further: What if we wanted to create a list of elemental symbols from this list of atomic numbers. You could do this through a dictionary storing `symbol:number` as the `key:value` pairs.\n", "\n", "

      " ] @@ -814,7 +944,7 @@ "source": [ "## Nested loops\n", "\n", - "You can also have loops inside of loops, just as you can have lists inside of lists. We would call this nested loops.\n", + "You can also have loops inside of loops, just as you can have lists inside of lists. We call this nested loops.\n", "\n", "Try this code to help your understanding:\n", "\n", @@ -849,6 +979,18 @@ " print(f\"{n} * {m} = {ans}\")\n", "```\n", "\n", + "This prints the following:\n", + "\n", + "2 * 5 = 10
      \n", + "2 * 6 = 12
      \n", + "2 * 7 = 14
      \n", + "3 * 5 = 15
      \n", + "3 * 6 = 18
      \n", + "3 * 7 = 21
      \n", + "4 * 5 = 20
      \n", + "4 * 6 = 24
      \n", + "4 * 7 = 28

      \n", + "\n", "In this example, we can see that the first value from the list 'numbers' is taken, and is used to multiply by each value within 'multipliers'. Then the loop moves on to the second value in 'numbers' and again multiplies by all three values in 'multipliers'. \n", "\n", "

      " @@ -886,7 +1028,7 @@ "
      \n", " Creating a list of coordinates\n", "\n", - "Create a list of 2-dimensional coordinates for every point in a grid running from x = o to x = 2 and from y = 0 to y = 4.\n", + "Create a list of 2-dimensional coordinates for every point in a grid running from x = 0 to x = 2 and from y = 0 to y = 4.\n", "\n", "```Python\n", "# Define the lists we will use\n", @@ -916,15 +1058,12 @@ "\n", "This example highlights a common issue of loops, repeating the same loop several times. In this example we can do away with the first two loops that generate the xaxis by combining them with the nested loop.\n", "\n", - "It is always a good idea to check your code for extra loops that could be combined into one. It can often improve the efficiency of your code\n", + "It is always a good idea to check your code for extra loops that could be combined into one. It can often improve the efficiency and neatness of your code.\n", "\n", "``` python\n", - "# Define the lists we will use\n", - "x_axis = []\n", - "y_axis = []\n", + "# Define the list we will use\n", "coord_grid = []\n", "\n", - "\n", "for x_coord in range(3):\n", " # Create x axis value\n", " for y_coord in range(5):\n", @@ -948,7 +1087,7 @@ "\n", "Write a program that adds up each molecule's mass from a nested list of their atomic masses, given below. \n", "\n", - "Since the nested lists are different lengths, you cannot use square brackets to retrieve items as we did above, or you will receive indexing errors. Instead, iterate through the larger list, then through the smaller lists, to obtain your masses. \n", + "Since the nested lists are different lengths, you cannot use square brackets to retrieve items as we did in the `enumerate()` lesson, or you will receive indexing errors. Instead, iterate through the larger list, then through the smaller lists, to obtain your masses. \n", "\n", "\n", "molecules = [\"H2O\", \"H2\", \"C2H4\", \"NaOH\", \"CH3OH\"]
      \n", @@ -998,9 +1137,9 @@ "\n", "- The inner loop `for atom_mass in molecule:` will loop through each mass in the list stored by the temporary variable `molecule`, each time adding it to the mass variable. This loop is effectively doing `mass = 0 + 1.008 + 1.008 + 15.999` for the first molecule, and then resetting to 0 to do the same for the second molecule. \n", "\n", - "- The mass calculated for each molecule is appended to our empty list of masses in the *outer* loop (indented only once). If it did this wthin the inner loop (indented twice), then every single calculation of the mass would be added to the list. Try running it with this line indented twice to see the outcome. \n", + "- The mass calculated for each molecule is appended to our empty list of masses in the *outer* loop (indented only once). If it did this within the inner loop (indented twice), then every single calculation of the mass would be added to the list. Try running it with this line indented twice to see the outcome. \n", "\n", - "- Finally, our molecules and their corresponding masses are printed to the console. If we wanted to peint them out item-wise, we could use another `for` loop and `zip()` the two lists together. Another option could be to zip them together in the outer loop and place our print function within there. \n", + "- Finally, our molecules and their corresponding masses are printed to the console. If we wanted to print them out item-wise, we could use another `for` loop and `zip()` the two lists together. Another option could be to zip them together in the outer loop and place our print function within there. \n", "\n", "The built-in function `round()` is used here to ensure every mass is given to 3 decimal places. The function takes two arguments (things placed within the brackets of the function): the variable you want to round, and the number of decimal places you want to round it to. \n", "\n", @@ -1015,9 +1154,9 @@ "\n", "One way we can have more control over our loops is by using the Python commands ``continue`` and ``break``.\n", "\n", - "``continue`` is used to end the current iteration of the loop, and *continue* on to the next iteration.\n", + "- ``continue`` is used to end the current iteration of the loop, and *continue* on to the next iteration.\n", "\n", - "``break`` is used to *end* the entire loop.\n", + "- ``break`` is used to *end* the entire loop.\n", "\n", "Run the two sets of code below and compare them.\n", "\n", From 984281bd0c697accf567f2ca1455525391c0bee1 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Fri, 22 Aug 2025 17:48:08 +0100 Subject: [PATCH 67/94] while loops, spelling checks, and almost finished style guide --- .../matplotlib_pyplot_basics.ipynb | 8 +- lessons/files/files_file_types.ipynb | 6 +- lessons/files/reading_files.ipynb | 198 +++++-------- lessons/files/writing_files.ipynb | 54 ++-- .../loops_functions/advanced_functions.ipynb | 30 ++ .../conditional_statements.ipynb | 4 +- lessons/loops_functions/for_loops.ipynb | 44 +-- .../loops_functions/functions_and_scope.ipynb | 76 ++--- lessons/loops_functions/tut_import_mod.ipynb | 106 +++++-- lessons/loops_functions/while_loops.ipynb | 276 +++++++++++------- .../solving_problems/style-and-comments.ipynb | 6 + lessons/variables/Comparisons.ipynb | 2 +- .../variables/mathematical_operators.ipynb | 16 +- 13 files changed, 449 insertions(+), 377 deletions(-) create mode 100644 lessons/loops_functions/advanced_functions.ipynb diff --git a/lessons/common_libs/matplotlib_pyplot_basics.ipynb b/lessons/common_libs/matplotlib_pyplot_basics.ipynb index cb4bf09..5ab1b0a 100644 --- a/lessons/common_libs/matplotlib_pyplot_basics.ipynb +++ b/lessons/common_libs/matplotlib_pyplot_basics.ipynb @@ -37,7 +37,7 @@ "- Plot scatter and line plots of lists of data\n", "- Include axis labels\n", "- Modify the appearances of the plots\n", - "- Be able to save your plot to a specifed directory" + "- Be able to save your plot to a specified directory" ] }, { @@ -55,7 +55,7 @@ "source": [ "Matplotlib is a comprehensive library for creating static, animated, and interactive visualisations. Within Matplotlib, the widely-used module Pyplot provides a fairly intuitive way of plotting, and is able to open interactive figures on your screen.\n", "\n", - "There are two different ways of using the library: an explicit or \"Axes\" interface, and an implicit \"pyplot\" interface. The explicit interfaces defines each figure *explicitly* and builds the visualisation step-by-step. The implicit method keeps track of the last Figure and Axes created and adds aditional content to the object it thinks the user wants. If you are only plotting simple figures, the implicit method is sufficient, however if you wish to create multiple figures, you may run into problems trying to refer to the correct figure, and should use the explicit method. Be aware that many online examples will use the two methods interchangeably, and in some cases, at the same time. Have a look on the Matplotlib website for more information on the [two interfaces](https://matplotlib.org/stable/users/explain/figure/api_interfaces.html).\n", + "There are two different ways of using the library: an explicit or \"Axes\" interface, and an implicit \"pyplot\" interface. The explicit interfaces defines each figure *explicitly* and builds the visualisation step-by-step. The implicit method keeps track of the last Figure and Axes created and adds additional content to the object it thinks the user wants. If you are only plotting simple figures, the implicit method is sufficient, however if you wish to create multiple figures, you may run into problems trying to refer to the correct figure, and should use the explicit method. Be aware that many online examples will use the two methods interchangeably, and in some cases, at the same time. Have a look on the Matplotlib website for more information on the [two interfaces](https://matplotlib.org/stable/users/explain/figure/api_interfaces.html).\n", "\n", "For a discussion on explicit versus implicit interfaces, look to the end of the lesson. **The rest of the lesson will only use the implicit interface**.\n", "\n", @@ -199,7 +199,7 @@ "
      \n", " Click to view answer\n", "\n", - "As we want to plot a scatter graph, we use the funtion `plt.scatter()`.\n", + "As we want to plot a scatter graph, we use the function `plt.scatter()`.\n", "\n", "```Python\n", "from matplotlib import pyplot as plt\n", @@ -1078,7 +1078,7 @@ " - Add labels to each `plt.plot()` to auto-generate a legend. E.g. `plt.plot(x, y, label=\"Data Series A\")`\n", "\n", "- The implicit interface only keeps track of the last figure and axis created. It requires fewer lines of code, and elements are added using `plt.` and the function.\n", - "- The explicit interface requires a specifc figure and axis to be called to add design elements. It requires more lines of code, elements are added using `ax.` (where ax is often the variable name given to a certain axis), and functions are usually preceded by `set_`.\n", + "- The explicit interface requires a specific figure and axis to be called to add design elements. It requires more lines of code, elements are added using `ax.` (where ax is often the variable name given to a certain axis), and functions are usually preceded by `set_`.\n", "\n", "- Save your files using `plt.savefig()`.\n", "- Understand the difference between Matplotlib's implicit form (used throughout the lesson), and its explicit form." diff --git a/lessons/files/files_file_types.ipynb b/lessons/files/files_file_types.ipynb index c7fee4c..f77b864 100644 --- a/lessons/files/files_file_types.ipynb +++ b/lessons/files/files_file_types.ipynb @@ -130,7 +130,7 @@ "source": [ "Sometimes, we may be very deep, within multiple directories, and it would become very long to specify the full filepath. This is where **relative filepaths** become useful. These allow you to specify a filepath *relative* to the directory you are already in.\n", "\n", - "There are two main commands to specify a relative directoty. \n", + "There are two main commands to specify a relative directory. \n", "\n", "- **`.`** indicates that we are going to go forward (down) a directory.\n", "\n", @@ -160,7 +160,7 @@ "id": "552398b0", "metadata": {}, "source": [ - "If you are running a practical in the lab, you might take a measurement once a minute or multiple times a second, for example if you are running cyclic voltammetry. You then need somewhere to store all those data points. Different file types are marked by the extension at the end of the name, for example ``.txt``, ``.dat``, ``.cif``, or ``.xyz``. If you have used Excel for data procesing in the past, you might have noticed that Excel files are often stored as ``.csv``. Each has a purpose, and each has their own formatting depending on that purpose. \n", + "If you are running a practical in the lab, you might take a measurement once a minute or multiple times a second, for example if you are running cyclic voltammetry. You then need somewhere to store all those data points. Different file types are marked by the extension at the end of the name, for example ``.txt``, ``.dat``, ``.cif``, or ``.xyz``. If you have used Excel for data processing in the past, you might have noticed that Excel files are often stored as ``.csv``. Each has a purpose, and each has their own formatting depending on that purpose. \n", "\n", "| Name | Extension | Uses |\n", "| -----| ----- | ----- |\n", @@ -310,7 +310,7 @@ " - `.` indicates to go forward (down) a directory.\n", " - `..` indicates to go backwards (up) a directory. \n", "\n", - "- Different file types have differnt extensions. These include, but are not limited to:\n", + "- Different file types have different extensions. These include, but are not limited to:\n", " - .py for Python files\n", " - .txt for text files\n", " - .csv for CSV files\n", diff --git a/lessons/files/reading_files.ipynb b/lessons/files/reading_files.ipynb index b317f1a..b97cd0b 100644 --- a/lessons/files/reading_files.ipynb +++ b/lessons/files/reading_files.ipynb @@ -34,31 +34,21 @@ "One of the common uses of Python in chemistry is to analyse large amounts of data that you might have recorded in a lab and stored in various files (see previous lesson for discussion of file types). Python has numerous built-in capabilities that allow you to read and write these files.\n", "\n", "Before you start opening and reading files in Python, make sure:\n", - "- Your file is in the same directory as your code. See previous lesson for explanation on directories.\n", + "\n", + "- Your file is in the same directory as your code. See [previous lesson](./files_file_types.ipynb) for explanation on directories.\n", + "\n", "- Your file is sensibly named so you can easily find it and not confuse it with another.\n", "- Your file is in the correct format. E.g. make sure objects in a ``.CSV`` file are separated by commas and not spaces or tabs.\n", "\n", - "Let's start with a opening a simple text file and reading its contents:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0ff6944a", - "metadata": {}, - "outputs": [], - "source": [ - "molec_file = open(\"molecule.txt\", \"r\")\n", - "contents = molec_file.read()\n", - "molec_file.close()\n", - "print(contents)" - ] - }, - { - "cell_type": "markdown", - "id": "6d821f38", - "metadata": {}, - "source": [ + "Let's start with a opening a simple text file and reading its contents:\n", + "\n", + "```Python\n", + "molecule_file = open(\"molecule.txt\", \"r\")\n", + "contents = molecule_file.read()\n", + "molecule_file.close()\n", + "print(contents)\n", + "```\n", + "\n", "After running the cell above, you should see the contents of the `molecule.txt` file in the cell output. You can verify the output by checking the file's contents in a text editor.\n", "\n", "Let's go through step by step.\n", @@ -76,30 +66,25 @@ "id": "900f642e", "metadata": {}, "source": [ - "### Reading Files with `with`\n", - "We can also use the `with` statement to open files. The benefit of this is that it will automatically close the file for us when we are done with it, without using ``.close()``. This is a more \"Pythonic\" way to handle files and is generally recommended.\n", - "\n", - "Let's take a look at the same example using the `with` statement:" + "### Reading Files with `with`" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "f63f3d19", + "cell_type": "markdown", + "id": "06bbb57c", "metadata": {}, - "outputs": [], "source": [ + "We can also use the `with` statement to open files. The benefit of this is that it will automatically close the file for us when we are done with it, without using ``.close()``. This is a more \"Pythonic\" way to handle files and is generally recommended.\n", + "\n", + "Let's take a look at the same example using the `with` statement:\n", + "\n", + "```Python\n", "with open('molecule.txt', 'r') as molec_file:\n", " contents = molec_file.read()\n", "\n", - "print(contents)" - ] - }, - { - "cell_type": "markdown", - "id": "06bbb57c", - "metadata": {}, - "source": [ + "print(contents)\n", + "```\n", + "\n", "As before, we open the `molecule.txt` file and read its contents.\n", "The difference is that we use the `with` statement to open the file, which automatically closes it when we are done with it (i.e., when we exit the `with` block).\n", "\n", @@ -239,43 +224,27 @@ "\n", "``.split()`` splits content based on the delimiter for any content placed before the dot. It takes a string as argument, which is the delimiter which it acts on. The default delimiter (no argument) is any whitespace (space or tab). \n", "\n", - "Using our example of the text file containing molecular formulas, we can split on the new line (using the special character \"\\n\")." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "2648a5f2", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['C10H14O', 'C5H8', 'C40H56']\n" - ] - } - ], - "source": [ + "Using our example of the text file containing molecular formulas, we can split on the new line (using the special character \"\\n\").\n", + "\n", + "```Python\n", "with open(\"./practice_files/molecule.txt\") as molec_file:\n", " contents = molec_file.read()\n", " contents = contents.split(\"\\n\")\n", - "print(contents)" - ] - }, - { - "cell_type": "markdown", - "id": "2756b35f", - "metadata": {}, - "source": [ + "print(contents)\n", + "```\n", + "\n", + "Which prints:\n", + "\n", + " ['C10H14O', 'C5H8', 'C40H56'] \n", + "\n", "The above code does the following:\n", "- The ``with`` statement opens the file and assigns it the name molec_file. It automatically closes once the ``with`` indents are no longer respected.\n", "- The contents are read.\n", - "- The contents are split. We have specified to split the content along new lines using ``\"\\n\"``. However, in thise case it would also work if we left the argument blank, as the new lines count as whitespace. However, if we wanted to split along a new line and there was whitespace within the line, we would have to specify ``\"\\n\"``. \n", + "- The contents are split. We have specified to split the content along new lines using ``\"\\n\"``. However, in this case it would also work if we left the argument blank, as the new lines count as whitespace. However, if we wanted to split along a new line and there was whitespace within the line, we would have to specify ``\"\\n\"``. \n", "\n", "The output is: ``['C10H14O', 'C5H8', 'C40H56']``, a list of each item between the delimiter.\n", "\n", - "In this case, we have extracted and split the entire contents of the file. But what if there were multiple items in each line? Open and have a look at the file 'alkanes_alkenes_alkynes.txt'. This holds the molecular formulae of each homologuous series in a column. We could read it using the code above, but it would result in a very long list of strings:\n", + "In this case, we have extracted and split the entire contents of the file. But what if there were multiple items in each line? Open and have a look at the file 'alkanes_alkenes_alkynes.txt'. This holds the molecular formulae of each homologous series in a column. We could read it using the code above, but it would result in a very long list of strings:\n", "\n", "``['C2H6,C2H4,C2H2', 'C3H8,C3H6,C3H4', 'C4H10,C4H8,C4H6', 'C5H12,C5H10,C5H8', 'C6H14,C6H12,C6H10', ... ,'C14H30,C14H28,C14H26', 'C15H32,C15H30,C15H28']``\n", "\n", @@ -301,7 +270,7 @@ " print(line)\n", "```\n", "\n", - "The above code returns each item in each line as items in a list. However, this isn't particularly useful. It would be more useful to have a list of alkanes, a list of alkenes, and a list of alkynes. We can do this by apppending to empty lists by referencing the position in each line using square brackets.\n", + "The above code returns each item in each line as items in a list. However, this isn't particularly useful. It would be more useful to have a list of alkanes, a list of alkenes, and a list of alkynes. We can do this by appending to empty lists by referencing the position in each line using square brackets.\n", "\n", "```Python\n", "alkanes = []\n", @@ -490,7 +459,7 @@ "
      \n", " Click to view extension answer\n", "\n", - "This code is more flexible than the previous one. Now, we can accept files with any number of columns, and we retrieve the data frp, a certain column, specifed with a second argument.\n", + "This code is more flexible than the previous one. Now, we can accept files with any number of columns, and we retrieve the data frp, a certain column, specified with a second argument.\n", "\n", "```Python\n", "def read_file(data_file, column=0):\n", @@ -525,7 +494,7 @@ "\n", "But this still has issues. If we want to retrieve the data from multiple columns, we have to call our function multiple times, and each time type out the file path. \n", "\n", - "In the advanced extentsion, we instead use an arbitrary number of arguments to retrieve any number of columns from the data.\n", + "In the advanced extension, we instead use an arbitrary number of arguments to retrieve any number of columns from the data.\n", "\n", "

      " ] @@ -591,16 +560,6 @@ "

      " ] }, - { - "cell_type": "markdown", - "id": "4b9514a0", - "metadata": {}, - "source": [ - "## Looping through multiple files\n", - "\n", - "- OS module?" - ] - }, { "cell_type": "markdown", "id": "8ec1d24a", @@ -894,7 +853,7 @@ "id": "20c43e7b", "metadata": {}, "source": [ - "### Files in a diffferent directory" + "### Files in a different directory" ] }, { @@ -902,7 +861,7 @@ "id": "807a6013", "metadata": {}, "source": [ - "If the file you are trying to call is unavoidably in a differect directory to the one you are working in, you can still call the file by instead inputing the full filepath for the file. E.g. ``\"C:\\Users\\Tara\\Documents\\PythonInChemistry\\readingfiles\\molecule.txt\"``\n", + "If the file you are trying to call is unavoidably in a different directory to the one you are working in, you can still call the file by instead inputting the full filepath for the file. E.g. ``\"C:\\Users\\Tara\\Documents\\PythonInChemistry\\readingfiles\\molecule.txt\"``\n", "\n", "You could also use a relative filepath using ``./`` and ``../``. \n", "- ``./`` indicates you want to stay in the same directory. After the forward slash, you can then put in further directory names, ending with your file name.\n", @@ -969,7 +928,7 @@ }, { "cell_type": "code", - "execution_count": 140, + "execution_count": null, "id": "fcf7d719", "metadata": {}, "outputs": [ @@ -1012,7 +971,7 @@ "if distance(H1,H2) < 1.2*2:\n", " print(\"These two atoms will interact\")\n", "else:\n", - " print(\"These two atoms will not inteact\")\n" + " print(\"These two atoms will not interact\")\n" ] }, { @@ -1029,7 +988,7 @@ }, { "cell_type": "code", - "execution_count": 163, + "execution_count": null, "id": "96db5e87", "metadata": {}, "outputs": [ @@ -1070,63 +1029,46 @@ }, { "cell_type": "markdown", - "id": "10c5379d", - "metadata": {}, - "source": [ - "### Loop through multiple files\n", - "TODO: Task involving looping through multiple files with a predictable filename (e.g. `001.csv`) and reading their contents." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "002dbb28", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "c1114d99", + "id": "f58d91db", "metadata": {}, "source": [ - "TODO: Example answer" + "## Summary" ] }, { "cell_type": "markdown", - "id": "619f5799", + "id": "a22cebb9", "metadata": {}, "source": [ - "## Debugging\n", - "The code below contains a bug and will not run.\n", - "See if you can fix it by reading the error message and using the information it provides." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "818250af", - "metadata": {}, - "outputs": [], - "source": [ - "with open('molecule.csv', 'r') as file:\n", - " text = file.read()\n", - "\n", - "print(text)" + "- Before reading a file in Python, make sure:\n", + " - Your file is in the same directory as your code (or has a valid filepath). \n", + " - Your file is named sensibly.\n", + " - Your file is in the correct format.\n", + "\n", + "- Open a file using either:\n", + " - `file_name = open(\"file.txt\", \"r\")`\n", + " `contents = file_name.read()`\n", + " `file_name.close()`\n", + " - `with open(\"file.txt\", \"r\") as file_name:`\n", + "\n", + "- Delimiters indicate separation between items in a file. Common delimiters are commas (`\",\"`), spaces (`\"\"`), tabs (`\"\\t\"`), and new lines (`\"\\n\"`).\n", + "\n", + "- Split a file along a delimiter using `.split()`. Inside the bracket place the delimiter as a string. \n", + "- The CSV module allows you to quickly parse CSV files.\n", + "- There are a number of ways to parse headers.\n", + " - By identifying if the line contains a certain phrase. `if line in contents == \"time,result\"`\n", + " - Check if an entry is a number using `.isdigit()`.\n", + " - Use `enumerate()` to skip certain lines. \n", + " - Skip lines of a certain length.\n", + "\n", + "- Use a relative filepath to reference files in a different directory. " ] }, { "cell_type": "markdown", - "id": "f58d91db", + "id": "8fc97a2a", "metadata": {}, - "source": [ - "## TODO\n", - "- Discuss carriage returns and other special characters?\n", - "- Explain the distinction between text and binary files?\n", - "\n", - "- Loop through multiple files" - ] + "source": [] } ], "metadata": { diff --git a/lessons/files/writing_files.ipynb b/lessons/files/writing_files.ipynb index 113d24c..7a463c9 100644 --- a/lessons/files/writing_files.ipynb +++ b/lessons/files/writing_files.ipynb @@ -17,10 +17,8 @@ "source": [ "## Learning Outcomes\n", "\n", - "The learning outcomes are as follows:\n", - "\n", - "1. Saving data into a newly created file\n", - "2. Add additional data into an existing file." + "- Saving data into a newly created file\n", + "- Add additional data into an existing file." ] }, { @@ -31,9 +29,9 @@ "source": [ "## Prerequisites\n", "\n", - "Variables
      \n", - "FOR loops
      \n", - "Writing f-strings
      \n", + "- [Variables](../variables/Variable_data_types.ipynb)\n", + "- [For loops](../loops_functions/for_loops.ipynb)\n", + "- [Files and file types](./files_file_types.ipynb)\n", "\n", "\n" ] @@ -74,7 +72,7 @@ "- The function ``.write()`` allows content within the brackets to be written to the file.\n", " - You can write using concatenation (as in line 2). Here, strings are combined into one long string using the '+' symbol. \n", " - You can write using f-strings, as we have seen in the past. \n", - " - Putting two ``file.write()`` statements does not place your items on a new line. You need to add the special characer ``\"\\n\"`` to write a new line. Other special characters you might use are ``\"\\n\"``, the carriage return (moves the cursor to the beginning of the current line), and ``\"\\t\"``, which inserts a tab.\n", + " - Putting two ``file.write()`` statements does not place your items on a new line. You need to add the special character ``\"\\n\"`` to write a new line. Other special characters you might use are ``\"\\n\"``, the carriage return (moves the cursor to the beginning of the current line), and ``\"\\t\"``, which inserts a tab.\n", "- You can iterate using 'for' to print a phrase over and over again.\n", "- Once you are done, you close the file. Just like with reading, this is good practice." ] @@ -405,7 +403,7 @@ "\n", "If we had lots and lots of lists that we want to write to the document, both ``range()`` and ``zip()`` seem to require lots of repetitive naming of lists. However, there are ways around this. \n", "\n", - "When we first learned about ``zip()``, we might have mentioned that if you use only 1 temporary variable for multiple lists (e.g. ``for i in zip(list1,list2,list3):``), the items in the list are still associated with each other, but as a tuple, in this case witht he variable name ``i``. Tuples are very similar to lists, with the difference that they are immutable, their contents cannot be changed once it has been created. Once you have the tuple, you can iterate through it, writing each item in the tuple to your document. \n", + "When we first learned about ``zip()``, we might have mentioned that if you use only 1 temporary variable for multiple lists (e.g. ``for i in zip(list1,list2,list3):``), the items in the list are still associated with each other, but as a tuple, in this case with the variable name ``i``. Tuples are very similar to lists, with the difference that they are immutable, their contents cannot be changed once it has been created. Once you have the tuple, you can iterate through it, writing each item in the tuple to your document. \n", "\n", "```Python\n", "energies_1 = [1.01e-19, 1.43e-19, 1.85e-19, 2.28e-19, 2.7e-19, 3.13e-19, 3.55e-19, 3.98e-19, 4.4e-19, 4.83e-19, 5.25e-19, 5.68e-19]\n", @@ -578,19 +576,11 @@ "source": [ "In all of the examples above. When we run the code over and over again the data that was there previously is truncated (cut off/deleted), and replaced with the current program. \n", "\n", - "Append mode, ``\"a\"``, is a bit different. It can still create a new file if it doesn't already exist, however for exosting files, it will simply append to the bottom of the file. \n", + "Append mode, ``\"a\"``, is a bit different. It can still create a new file if it doesn't already exist, however for existing files, it will simply append to the bottom of the file. \n", "\n", - "Run the code below a few times and see how data appears at the bottom of the file." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "xpAqJWu2_ss2" - }, - "outputs": [], - "source": [ + "Run the code below a few times and see how data appears at the bottom of the file.\n", + "\n", + "```Python\n", "file = open('spectrum.txt', 'a')\n", "\n", "wavelength = [300, 310]\n", @@ -599,7 +589,8 @@ "for i in range(len(wavelength)):\n", " file.write(f\"{wavelength[i]} \\t {absorbance[i]}\\n\")\n", "\n", - "file.close()" + "file.close()\n", + "```" ] }, { @@ -808,7 +799,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -935,15 +926,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "- " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## TODO\n", - "- User defined save paths?" + "- Use \"w\" when you open a file to change to write mode, and \"a\" for append mode. \n", + "\n", + "- If the file does not exist, it will be created. \n", + "- In \"w\" mode, if data already exists in a file that you open, it will be erased and any new data added on top.\n", + "- In \"a\" mode, if data already exists in the file that you open, any new data will be added at the bottom. \n", + "- You can write to files either using `file = open(\"file.txt\", \"w\")`, or `with open(\"file.txt\", \"w\") as file:`.\n", + "- Use iteration to write many things to a file.\n", + "- Add structure to a file using special characters like `\\t` (tab) and `\\n` (new line)." ] } ], diff --git a/lessons/loops_functions/advanced_functions.ipynb b/lessons/loops_functions/advanced_functions.ipynb new file mode 100644 index 0000000..1d004e1 --- /dev/null +++ b/lessons/loops_functions/advanced_functions.ipynb @@ -0,0 +1,30 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f2458be8", + "metadata": {}, + "source": [ + "# Advanced functions" + ] + }, + { + "cell_type": "markdown", + "id": "57e070a7", + "metadata": {}, + "source": [ + "More advanced lesson?\n", + "- Unpacking operator (as part of *args and **kwargs?)\n", + "- Returning different data structures (dictionaries, tuples, etc)\n", + "- Object and class functions?" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/lessons/loops_functions/conditional_statements.ipynb b/lessons/loops_functions/conditional_statements.ipynb index c527763..06dbbcf 100644 --- a/lessons/loops_functions/conditional_statements.ipynb +++ b/lessons/loops_functions/conditional_statements.ipynb @@ -66,7 +66,7 @@ "
      \n", " Using if \n", "\n", - "The main way we can use `if` statements is in conjuction with comparisons. \n", + "The main way we can use `if` statements is in conjunction with comparisons. \n", "\n", "```Python\n", "x = \"CH4\"\n", @@ -317,7 +317,7 @@ "source": [ "### Question 1\n", "\n", - "When doing IR spectroscopy, a peak with low % transmittance corresponds to a strong spike on the spectrum (the compound strngly absorbing light). When analysing a particular spectrum, any peaks with transmittance greater than 95% are indistinguishable from background noise, and are ignored. \n", + "When doing IR spectroscopy, a peak with low % transmittance corresponds to a strong spike on the spectrum (the compound strongly absorbing light). When analysing a particular spectrum, any peaks with transmittance greater than 95% are indistinguishable from background noise, and are ignored. \n", "\n", "Write a Python conditional statement that will print whether our peak is background noise or not." ] diff --git a/lessons/loops_functions/for_loops.ipynb b/lessons/loops_functions/for_loops.ipynb index 31b43df..64c684a 100644 --- a/lessons/loops_functions/for_loops.ipynb +++ b/lessons/loops_functions/for_loops.ipynb @@ -128,7 +128,7 @@ "\n", "In this piece of code, we are converting pressure in mmHg to bar. Each value in the list ``pressure_mmHg`` is converted into bar, printed, and appended into a new list which contains all the associated values in bar. This list can then be used throughout the rest of the code.\n", "\n", - "The empty list ``pressure_bar`` is first defined outside of the loop. If it was defined inside the loop, it would be re-defined as emopty on every loop, and by the end would only contain the final value. Try it yourself to see. \n", + "The empty list ``pressure_bar`` is first defined outside of the loop. If it was defined inside the loop, it would be re-defined as empty on every loop, and by the end would only contain the final value. Try it yourself to see. \n", "\n", "

      " ] @@ -175,9 +175,9 @@ "print(molecule_mass)\n", "```\n", "\n", - "In this program, each nested list in ``bimolecular_atom_masses`` is assigned the temporary variable name ``molecule``. To refer to an item within this nested list, you must refer to it as ``molecule[0]`` or ``molecule[1]``, where the square bracketted number refers to the item's position within the list. Remember that Python is zero-indexed, so the first item in a list is called '0', the second item is called '1' and so on. \n", + "In this program, each nested list in ``bimolecular_atom_masses`` is assigned the temporary variable name ``molecule``. To refer to an item within this nested list, you must refer to it as ``molecule[0]`` or ``molecule[1]``, where the square bracketed number refers to the item's position within the list. Remember that Python is zero-indexed, so the first item in a list is called '0', the second item is called '1' and so on. \n", "\n", - "Reminder: To refer straight to an item in a nested list, you can use double sets of square brackets. For example, to refer to the float 12.011 in the above list, you can call it with `bimolecular_atom_masses[1][0]`. This calls the item in position zero of the list in position 1. Remeber that lists are zero-indexed, and so the first item in a list always has the index 0.\n", + "Reminder: To refer straight to an item in a nested list, you can use double sets of square brackets. For example, to refer to the float 12.011 in the above list, you can call it with `bimolecular_atom_masses[1][0]`. This calls the item in position zero of the list in position 1. Remember that lists are zero-indexed, and so the first item in a list always has the index 0.\n", "\n", "

      \n" ] @@ -371,7 +371,7 @@ "source": [ "Each entry in a list has two things associated with them: the **index** of the entry and the **value** of the entry. \n", "\n", - "Python is zero-indexed, meaning that each value in a list carries an index from 0 upwards. For example, in the list `[\"H\", \"He\", \"Li\", \"Be\"]`, \"H\" is at index position 0, \"He\", is at index position 1, \"Li\" is at index poisition 2, and \"Be\" at index position 3. Sometimes it is useful to know the index for a particular list or item in a list. Python allows us to find out the index while we iterate through a list using the function ``enumerate()``\n", + "Python is zero-indexed, meaning that each value in a list carries an index from 0 upwards. For example, in the list `[\"H\", \"He\", \"Li\", \"Be\"]`, \"H\" is at index position 0, \"He\", is at index position 1, \"Li\" is at index position 2, and \"Be\" at index position 3. Sometimes it is useful to know the index for a particular list or item in a list. Python allows us to find out the index while we iterate through a list using the function ``enumerate()``\n", "\n", "The ``enumerate()`` function assigns each element in a list a number, from 0 upwards. This is the index, which can then be referred to to call items from that list. This is a good way of identifying where in a list a certain item is. The basic syntax of ``enumerate()`` is:\n", "\n", @@ -452,7 +452,7 @@ "\n", "In this case, all three lists are associated item-wise, meaning the element at index 0 in `atom_names` is related to the mass at index 0 of `atom_masses` and the number at index 0 in `atom_neutrons`. You only need to enumerate one of these lists (in this case, `atom_names`) to be able to reference the corresponding index for the other two lists. \n", "\n", - "It is of course possible to have more complicated relationships betwen the indexes of multiple lists. An example would be where a range of values is needed from the second list, rather than just a single point. These could be accessed using additional `if` statements within the loop.\n", + "It is of course possible to have more complicated relationships between the indexes of multiple lists. An example would be where a range of values is needed from the second list, rather than just a single point. These could be accessed using additional `if` statements within the loop.\n", "\n", "However, if the relationship is direct then Python offers a simple alternative: ```zip```.\n", "

      " @@ -1007,11 +1007,11 @@ "You have two lists and want to make sure than none are repeated from one list to the other. You could use nested lists to check every combination of the two lists.\n", "\n", "```Python\n", - "molecs1 = [\"H2O\", \"HCN\", \"CO2\", \"NH3\"]\n", - "molecs2 = [\"NO2\", \"CO2\", \"CH3\", \"H2\", \"HCN\"]\n", + "molecules_1 = [\"H2O\", \"HCN\", \"CO2\", \"NH3\"]\n", + "molecules_2 = [\"NO2\", \"CO2\", \"CH3\", \"H2\", \"HCN\"]\n", "\n", - "for i in molec1:\n", - " for j in molec2:\n", + "for i in molecules_1:\n", + " for j in molecules_2:\n", " if i == j:\n", " print(i)\n", "```\n", @@ -1056,7 +1056,7 @@ "\n", "Think further: If we wanted to plot these positions, we could do this using the Python module ``matplotlib.pyplot``, which is discussed in a further [tutorial](/lessons/common_libs/Matplotlib_Documentation.ipynb).\n", "\n", - "This example highlights a common issue of loops, repeating the same loop several times. In this example we can do away with the first two loops that generate the xaxis by combining them with the nested loop.\n", + "This example highlights a common issue of loops, repeating the same loop several times. In this example we can do away with the first two loops that generate the x-axis by combining them with the nested loop.\n", "\n", "It is always a good idea to check your code for extra loops that could be combined into one. It can often improve the efficiency and neatness of your code.\n", "\n", @@ -1162,9 +1162,9 @@ "\n", ">```Python\n", "># Continue\n", - ">molecs = [\"H2O\", \"HCN\", \"CO2\", \"NH3\", \"CH3\"]\n", + ">molecules = [\"H2O\", \"HCN\", \"CO2\", \"NH3\", \"CH3\"]\n", ">\n", - ">for formula in molecs:\n", + ">for formula in molecules:\n", "> if formula == \"CO2\":\n", "> continue\n", "> print(formula)\n", @@ -1175,9 +1175,9 @@ "\n", ">```Python\n", "># Break\n", - ">molecs = [\"H2O\", \"HCN\", \"CO2\", \"NH3\", \"CH3\"]\n", + ">molecules = [\"H2O\", \"HCN\", \"CO2\", \"NH3\", \"CH3\"]\n", ">\n", - ">for formula in molecs:\n", + ">for formula in molecules:\n", "> if formula == \"CO2\":\n", "> break\n", "> print(formula)\n", @@ -1203,10 +1203,10 @@ "``` Python\n", "molecules = [\"HCN\", \"H2O\", \"NH3\", \"CO2\"]\n", "\n", - "for molec in molecules:\n", - " if \"O\" not in molec:\n", + "for mol in molecules:\n", + " if \"O\" not in mol:\n", " continue\n", - " print(molec)\n", + " print(mol)\n", "```\n", "\n", "The output will be:\n", @@ -1231,9 +1231,9 @@ "```Python\n", "molecules = [\"HCN\", \"NH3\", \"H2O\", \"CO2\"]\n", "\n", - "for molec in molecules:\n", - " if \"O\" in molec:\n", - " print(molec)\n", + "for mol in molecules:\n", + " if \"O\" in mol:\n", + " print(mol)\n", " break\n", "print(\"This represents the rest of the code\")\n", "```\n", @@ -1280,7 +1280,7 @@ "
      \n", " Click to view answer\n", "\n", - "Remember that there could be multiple ways to appraoch the same question. Below is one solution.\n", + "Remember that there could be multiple ways to approach the same question. Below is one solution.\n", "\n", "``` Python\n", "wavelengths = [276, 59, 0.5, 1183, 52, 0.002, 127, 474] # nm\n", @@ -1357,7 +1357,7 @@ "\n", "- First we have defined out lists of data, and our empty lists to contain our major peaks.\n", "\n", - "- With a `for` loop, we have xipped the two lists together. Values in the list `peak_shift` are given the temporary variable name `shift` and values in the list `peak_transmittance` are given the temporary variable name `transmittance`. \n", + "- With a `for` loop, we have zipped the two lists together. Values in the list `peak_shift` are given the temporary variable name `shift` and values in the list `peak_transmittance` are given the temporary variable name `transmittance`. \n", "\n", "- With an `if` statement, we are checking that two comparisons are *both* true using the logical operator `and`. For each loop, we must ensure that the shift is greater than 1500 AND the transmittance is less than 95.\n", "\n", diff --git a/lessons/loops_functions/functions_and_scope.ipynb b/lessons/loops_functions/functions_and_scope.ipynb index f90551a..e8d369b 100644 --- a/lessons/loops_functions/functions_and_scope.ipynb +++ b/lessons/loops_functions/functions_and_scope.ipynb @@ -20,7 +20,7 @@ "- To understand the purpose of a function, how they are written, and how they are called.\n", "- To define your own functions, and use them in your code.\n", "- To understand function arguments and return statements.\n", - "- To write and use a docstring. " + "- To write and use a docstring." ] }, { @@ -307,7 +307,7 @@ "\n", "mysum = sum_list(mylist)\n", "```\n", - "In this example it is likely that the variable scount is meant to start at 0, but is likely to start at 5, giving the wrong answer" + "In this example it is likely that the variable scount is meant to start at 0, but is likely to start at 5, giving the wrong answer." ] }, { @@ -389,7 +389,7 @@ "\n", "So far, our functions have only returned one variable. However, it is possible to return multiple values. \n", "\n", - "This is a function which returns both the maximum and the mininum of a list of numbers:\n", + "This is a function which returns both the maximum and the minimum of a list of numbers:\n", "\n", "```Python \n", "def minmax(number_list):\n", @@ -436,7 +436,7 @@ "\n", "So far, all our functions have had one ``return`` statement, right at the end, but this is not a requirement. A function can have a return statement anywhere, and it can have more than one. This is usually encountered when functions contain `if` statements, where depending on whether the conditions are met, different sections of the function may execute. \n", "\n", - "The below function checks if a given elemental symbool is a noble gas or not using [Boolean logic](../variables/Comparisons.ipynb). There are three different possible return values in the above function, depending on the input.\n", + "The below function checks if a given elemental symbol is a noble gas or not using [Boolean logic](../variables/Comparisons.ipynb). There are three different possible return values in the above function, depending on the input.\n", "\n", "```Python \n", "def is_noble_gas(symbol):\n", @@ -600,7 +600,7 @@ "
      \n", " Keyword Arguments\n", "\n", - "A keyword argument, or ``kwarg`` is the alternative to positional arguments, and do not have to be called in a specific order. Instead, they are identifiable by the name given when defining the functino, which must be referenced when calling the function. \n", + "A keyword argument, or ``kwarg`` is the alternative to positional arguments, and do not have to be called in a specific order. Instead, they are identifiable by the name given when defining the function, which must be referenced when calling the function. \n", "\n", "```text\n", "def my_function(kwarg_1, kwarg_2):\n", @@ -809,7 +809,7 @@ "metadata": {}, "source": [ "
      \n", - " Positional-only arguments, ``, /``, and keyword-only arguments, ``* ,``\n", + " Positional-only arguments ``, /`` and keyword-only arguments ``* ,``\n", "\n", "In the sections about positional and keyword arguments above, there is nothing in the function line itself that describes whether the arguments are positional or keyword. The way in which you call the function (and the order) is what defines it. In the first example, we treated both as positional, but in the second we treated both as keyword. \n", "\n", @@ -883,6 +883,7 @@ "The arbitrary argument ``*masses`` represents every mass given when we call the function. Since we have multiple of these, we must iterate through the collection of masses using a ``for`` loop and calculate the number of mols for each. \n", "\n", "The real meaning of arbitrary positional arguments is that the arbitrary number of arguments you are putting into the function are stored as a tuple, which you then iterate through in the function, but you don't really need to know this for it to work.\n", + "\n", "

      " ] }, @@ -958,16 +959,6 @@ "

      " ] }, - { - "cell_type": "markdown", - "id": "37d6dee6", - "metadata": {}, - "source": [ - "### Practice using multiple arguments \n", - "\n", - "TO DO" - ] - }, { "cell_type": "markdown", "id": "37cb2c58", @@ -1076,7 +1067,7 @@ " Units: g\n", " molar_mass : Float\n", " The molecular weight of the substance\n", - " Units: gmol-1\n", + " Units: g mol-1\n", " Default: aspirin == 180.158\n", "\n", " Returns\n", @@ -1150,7 +1141,7 @@ "```Python\n", "def energy_calc(wavelengths):\n", " \"\"\"\n", - " Caculate energy in J and eV from a wavelength.\n", + " Calculate energy in J and eV from a wavelength.\n", "\n", " Parameters\n", " ------------\n", @@ -1176,6 +1167,13 @@ " return energy_J, energy_eV\n", "```\n", "\n", + "The first thing in the docstring is a description of what the function does, written in the imperative tense (as an instruction).\n", + "\n", + "Next, the parameters are given. We only have one in this function: `wavelengths`. \n", + "\n", + "Finally, the returns are given. We have two in this case, `energy_J` and `energy_eV`.\n", + "\n", + "For some, more complex functions, docstrings can be even longer, and include instructions, examples, and usage explanation. \n", "\n", "

      " ] @@ -1188,14 +1186,6 @@ "## Further Practice" ] }, - { - "cell_type": "markdown", - "id": "8526723d", - "metadata": {}, - "source": [ - "Turn this code into a function TO DO" - ] - }, { "cell_type": "markdown", "id": "7d817de7", @@ -1528,6 +1518,7 @@ " Code\n", " return a_variable, b_variable\n", " ```\n", + "\n", "- Call a function using:\n", " - General syntax: ``my_function()``. \n", " - Assign it a variable using: ``result_1, result_2 = my_function(some_argument, other_argument)``. \n", @@ -1544,34 +1535,23 @@ " - Arbitrary keyword arguments, ``**kwargs``. Allows an arbitrary number of keyword arguments to be called. You can convert the dictionary to a list using the function '.items()'. ``def my_function(**argument)``.\n", "- Functions can call themselves. This is called recursion. \n", "- Avoid defining functions within functions. Instead, define it separately and call that function from inside the first function. \n", - "- Use docstrings to explain to the user the purpose of the function, the arguments, its returns, limitations, and any other information needed to use it effectively. \n", - "\n", - "### Good Practise with Functions\n", - "\n", - "When using functions the following is good advice on how to use them:\n", - "\n", - "- Declare all functions at the begining of the programme, don't scatter the declarations throughout the programme, it breaks the flow and makes it hard to understand\n", - "- Don't declare a function within a function. This is an unusal coding style, which is only necessary in a few specialist cases\n", - "- Pass values into function through the arguments, don't rely on variable scope" + "- Use docstrings to explain to the user the purpose of the function, the arguments, its returns, limitations, and any other information needed to use it effectively. \n" ] }, { "cell_type": "markdown", - "id": "e2dab763", + "id": "5e912c77", "metadata": {}, "source": [ - "# To Do\n", - "\n", - "- Add practice using multiple arguments (under **kwargs)\n", - "- Add practice with multiple arguments, multiple returns, and kwargs (under functions within functions)\n", - "- Add a practice question on making a docstring for a given function\n", - "- Exercise 4 spotting the mistakes - change function to make it chemical.\n", - "- Separate some sections into a more advanced lesson (e.g. recursion, *args, **kwargs, positional/keyword-only)?\n", - "\n", - "More advanced lesson?\n", - "- Unpacking operator (as part of *args and **kwargs?)\n", - "- Returning different data structures (dictionaries, tuples, etc)\n", - "- Object and class functions?" + "### Good Practise with Functions\n", + "\n", + "When using functions the following is good advice on how to use them:\n", + "\n", + "- Declare all functions at the beginning of the programme, don't scatter the declarations throughout the programme, it breaks the flow and makes it hard to understand.\n", + "\n", + "- Don't declare a function within a function. This is an unusual coding style, which is only necessary in a few specialist cases.\n", + "- Pass values into function through the arguments, don't rely on variable scope.\n", + "- Generally, it is easier to first write a version of your code (or part of your code) and then turn it into a function, rather than start writing a function straight away." ] } ], diff --git a/lessons/loops_functions/tut_import_mod.ipynb b/lessons/loops_functions/tut_import_mod.ipynb index 4867aca..38db1f8 100644 --- a/lessons/loops_functions/tut_import_mod.ipynb +++ b/lessons/loops_functions/tut_import_mod.ipynb @@ -10,16 +10,12 @@ }, { "cell_type": "markdown", - "id": "3361b89a", + "id": "262ad1e9", "metadata": {}, "source": [ - "## Sections\n", + "## Prerequisites\n", "\n", - "- Libraries and modules - putting them where your program can access them in files?\n", - "- Importing a single function from a library\n", - "- Importing a library\n", - "- Warning about using *\n", - "- Importing using an alias" + "- [Understanding directories](../files/files_file_types.ipynb)." ] }, { @@ -73,9 +69,11 @@ "id": "6ba6434e", "metadata": {}, "source": [ - "In order for your program to be able to access a module or library, they must be in a location that it can access. \n", + "In order for your program to be able to access a module or library, they must be in an accessible location. \n", "\n", - "Built-in modules." + "Built-in Python modules include `math`, `statistics` and `time`, and will be accessible as long as you have Python fully installed. \n", + "\n", + "If you are using an environment such as Anaconda, many common libraries will already be accessible. However, if you want to access more niche libraries such as RDKit, you will have to add this to your environment. You can usually do this by writing `conda install module_name` to the command line, where `module_name` is the name of the library or module you want to add. " ] }, { @@ -83,7 +81,7 @@ "id": "32cf2fd2", "metadata": {}, "source": [ - "## Importing a module or library" + "## Importing a module or library in your code" ] }, { @@ -93,40 +91,76 @@ "source": [ "\n", "\n", - "Sometimes, we wish to use prewritten libraries. For example the numpy libraries for data analysis. To do this we use the import command\n", + "Often, we wish to use pre-written libraries, for example the NumPy library for data analysis. To do this we use the import command.\n", "\n", "```python\n", - "#import numpy into the code\n", + "# Import numpy into the code\n", "import numpy\n", "\n", - "#import numpy and give it an alias\n", + "# Import numpy and give it an alias\n", "\n", "import numpy as np\n", "\n", - "#import the whole math module\n", + "# Import the whole math module\n", "import math\n", "\n", - "#import just the square root function\n", + "# Import just the square root function\n", "from math import sqrt\n", "```\n", - "You then call the function from the library you imported by typing the library name (or alias) dot the function name e.g\n", + "You then call the function from the library you imported by typing the library name (or alias) dot the function name.\n", "\n", "```python\n", + "# Import math and use the function sqrt\n", "import math\n", "\n", + "answer = math.sqrt(4)\n", + "```\n" + ] + }, + { + "cell_type": "markdown", + "id": "ab496835", + "metadata": {}, + "source": [ + "### Using aliases" + ] + }, + { + "cell_type": "markdown", + "id": "87e9a880", + "metadata": {}, + "source": [ + "An alias is a name that you give to an imported library or module that you can use to refer to it throughout your code. This is very useful when your libraries or modules have long names. You do this using the keyword `as`. For example:\n", "\n", - " a = math.sqrt(4)\n", + "`import module as mod`\n", "\n", + "You will notice that aliases are very consistent across institutions, making it very easy to understand code that other people have written. Each library/module has recommended aliases to help consistency.\n", "\n", - "```\n" + "Some common aliases include:\n", + "\n", + "```Python\n", + "# The library NumPy is for advanced mathematics\n", + "import numpy as np\n", + "\n", + "# The library Matplotlib is for visualisations\n", + "import matplotlib as mpl\n", + "\n", + "# The module Pyplot (from Matplotlib) creates plots, graphs and charts\n", + "from matplotlib import pyplot as plt\n", + "\n", + "# The library pandas is for data analysis and manipulation\n", + "import pandas as pd\n", + "```\n", + "\n", + "For some modules, it is recommended not to use an alias, as shortening some names can lead to a **name clash**. This is when multiple variables, functions, or modules have the same name. This could happen if you gave your module a single-letter name, for example `import math as m`. " ] }, { "cell_type": "markdown", - "id": "ab496835", + "id": "d27eb612", "metadata": {}, "source": [ - "## Using aliases" + "### Using import `*`" ] }, { @@ -134,8 +168,6 @@ "id": "44a0aa27", "metadata": {}, "source": [ - "## Using import *\n", - "\n", "in some tutorials it will be suggested you use the \n", "```python \n", "from [] import *\n", @@ -152,6 +184,36 @@ "import my_funcs as mine\n", "```" ] + }, + { + "cell_type": "markdown", + "id": "0c5430c2", + "metadata": {}, + "source": [ + "## Summary" + ] + }, + { + "cell_type": "markdown", + "id": "0ce994db", + "metadata": {}, + "source": [ + "- A module is a file consisting of Python code, and a library is a collection of modules.\n", + "\n", + "- Import libraries and build-in modules using the syntax `import name`, for example `import math`.\n", + "\n", + "- Libraries and modules must be accessible by your code. If you use an environment like Anaconda, many will already be supported, however others may need to be installed via your environment. \n", + "\n", + "- Import functions using `from`, for example `from math import cos`.\n", + "\n", + "- Import modules from libraries using `from`, for example `from matplotlib import pyplot`.\n", + "\n", + "- Assign an alias which you can use to refer to your module name rather than writing it out using the keyword `as`. Common aliases are:\n", + " - `import numpy as np`\n", + " - `import matplotlib as mpl`\n", + " - `from matplotlib import pyplot as plt`\n", + " - `import pandas as pd`" + ] } ], "metadata": { diff --git a/lessons/loops_functions/while_loops.ipynb b/lessons/loops_functions/while_loops.ipynb index 8060454..cf86feb 100644 --- a/lessons/loops_functions/while_loops.ipynb +++ b/lessons/loops_functions/while_loops.ipynb @@ -13,19 +13,36 @@ "source": [ "## Learning Objectives\n", "- Understand how to construct and use `while` loops\n", - "- Know how to control iterations in a loop\n", - "\n", + "- Know how to control iterations in a loop" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "## Prerequisites: \n", "- [boolean variables](/lessons/variables/Variable_data_types.ipynb)\n", "- [comparisons](/lessons/variables/Comparisons.ipynb)\n", "- [`if` statements](/lessons/loops_functions/conditional_statements.ipynb)\n", - "- [`for` loops](/lessons/loops_functions/for_loops.ipynb)\n", - "\n", - "## The `while` Loop\n", + "- [`for` loops](/lessons/loops_functions/for_loops.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The `while` Loop" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A `while` loop is similar to a [`for` loop](./For_Loop_Lesson.ipynb), with the main difference being it will continuously loop while a condition is `True`. Where a ``for`` loop is used when you know how many times you need to iterate, and a ``while`` loop is for when you do not know how many times you need to iterate. \n", "\n", - "A `while` loop is similar to a [`for` loop](./For_Loop_Lesson.ipynb), with the main difference being it will continuosly loop while a condition is `True`. A ``for`` loop is used when you know how many times you need to iterate, and a ``while`` loop is for when you do not know how many times you need to iterate. In general, if you could use a ``for`` loop, try to do it that way, as ``while`` loops have the potential for infinite looping to occur if they are not properly controlled (discussed in more detail in the next section).\n", + "In general, if you could use a ``for`` loop, try to do it that way, as ``while`` loops have the potential for infinite looping errors to occur if they are not properly controlled (discussed in more detail in the next section).\n", "\n", - "In general `while` loops take the structure:\n", + "`while` loops take the syntax:\n", "\n", "```python\n", "while condition:\n", @@ -37,9 +54,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "2\n", + "3\n", + "4\n", + "5\n" + ] + } + ], "source": [ "count = 0\n", "while count < 5:\n", @@ -68,9 +97,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - "
      Exercise: Use a 'while' loop to print integers \n", - "
      \n", + "
      \n", + "
      Exercise: Use a 'while' loop to print integers \n", + "\n", + "---\n", + "\n", "Create a `while` loop to print even integers from zero to 10.\n", "\n", "
      \n", @@ -81,8 +112,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - " Click to view answer\n", + "
      \n", + " Click to view answer\n", "\n", "```Python\n", "count = 0\n", @@ -111,148 +142,179 @@ "\n", "In this example, `count` is never exactly equal to 0: it counts down from 5, to 3, 1, -1, and continues down. As a result, the condition `count != 0` is never `False`, and the loop will run forever.\n", "\n", - "If this happens, you need to force stop your program. How to do this varies depeneding on how you run the instrument. In an IDE Look for a little square (the stop button), it usually represents stopping the program while it is still running. In a terminal press `ctrl+c` to force stop. \n", + "If this happens, you need to force stop your program. How to do this varies depending on how you run the instrument. In an IDE Look for a little square, it usually represents stopping the program while it is still running. In a terminal press `ctrl+c` to force stop. \n", + "\n", + "If the program runs for too long without stopping, it could crash your computer.\n", + "\n", + "The simplest kind of infinite loop is this:\n", + "\n", + "```Python\n", + "while True:\n", + " print(\"This loop will run forever!\")\n", + "```\n", "\n", - "If the program runs for too long without stopping, it could crash your computer." + "If you start your loop with `while True:`, that loop will run forever unless a `break` statement is placed somewhere within it." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Break Clauses\n", + "
      \n", + "
      Exercise: Debug this infinite loop\n", "\n", - "In order to avoid infinite loops, we might want to add a second condition under which the code should stop looping. We can do this using the keyword `break`.\n", + "--- \n", "\n", - "For example, the code below is the same as the code above, but with an additional `break` added, which will be executed once `count < 9`.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "count = 5\n", - "while count != 0:\n", - " print(count)\n", - " count -= 2\n", - " if count < -9:\n", - " break" + "This code will run forever, predict why and fix the problem. \n", + "\n", + ">```Python\n", + ">answers = []\n", + ">count = 0\n", + ">while count < 10:\n", + "> print(\"Count is:\", count)\n", + "> answers.append(count**2)\n", + ">\n", + ">print(answers)\n", + ">```\n", + "\n", + "
      \n", + "
      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Password Example\n", + "
      \n", + " Click to view answer\n", + "\n", + "The problem here is that the count is never increased, and so the code just runs over and over with `count = 0`. Add the line `count = count + 1` into the loop to prevent this.\n", + "\n", + "\n", + "```Python\n", + "answers = []\n", + "count = 0\n", + "while count < 10:\n", + " print(\"Count is:\", count)\n", + " answers.append(count**2)\n", + " count = count + 1\n", + "\n", + "print(answers)\n", + "```\n", "\n", - "The code below pulls together everything we've seen in this lesson. It continuially asks the user for a password, while counting the number of attempts the user has made. If the user either enters the password correctly, or reaches the maximum permitted number of attempts, we use `break` to exit the loop." + "

      " ] }, { - "cell_type": "code", - "execution_count": 2, + "cell_type": "markdown", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Incorrect password. 2 attempts left.\n", - "Incorrect password. 1 attempts left.\n", - "Too many failed attempts.\n" - ] - } - ], "source": [ - "# Password example\n", + "## Break and Continue Clauses\n", "\n", - "MAX_ATTEMPTS = 3\n", + "Just like with `for` loops, we can use `break` and `continue` to control a `while` loop. Particularly useful here is `break`, as without breaking the loop it becomes easy to make it run forever. \n", "\n", - "correct_password = \"secret123\"\n", - "attempts = 0\n", + "In order to avoid infinite loops, we might want to add a second condition under which the code should stop looping. We can do this using the keyword `break`.\n", "\n", - "while True:\n", - " password = input(\"Password: \").strip()\n", - " attempts += 1\n", + "For example, the code below is the same as the infinite loop example above, but with an additional `break` added, which will be executed once `count < 9`. This stops it running forever. \n", "\n", - " if password == correct_password:\n", - " print(\"Login successful! Welcome!\")\n", + "```Python\n", + "count = 5\n", + "while count != 0:\n", + " print(count)\n", + " count -= 2\n", + " if count < -9:\n", " break\n", + "```\n", "\n", - " if attempts >= MAX_ATTEMPTS:\n", - " print(\"Too many failed attempts.\")\n", - " break\n", - " else:\n", - " print(f\"Incorrect password. {MAX_ATTEMPTS - attempts} attempts left.\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise\n", + "With this additional conditional clause, the loop will no longer run forever. \n", "\n", - "The code above uses two `break` statements, and begins `while True:`. Rewrite the code so that only one `break` statement is used." + "While writing a `while` loop, it is useful to put a counter and a conditional clause into your loop to ensure it will not run more than a certain number of times, as it is easy to accidentally remove the condition that would otherwise end the loop (for example, in the above code by changing how large the decrease in count it).\n" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Answer" + "## Uses of `while` loops" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "MAX_ATTEMPTS = 3\n", + "`while` loops are used when you do not know (or do not want to know) how many times a loop will run. This has uses in many areas of programming, for example a loop that must run until the user inputs the correct password, or a video game that must repeat a level until the player defeats the boss. \n", "\n", - "correct_password = \"secret123\"\n", - "attempts = 0\n", + "In scientific programming, we usually know how many times we want a loop to run, so `while` loops are not very common. However, there are times when we do not know how many times we want the program to run. For example until the uncertainty reaches an acceptable level, until we reach a certain precision (e.g. a certain number or decimal places), or until the program has elapsed a certain amount of time. \n", "\n", - "while attempts < MAX_ATTEMPTS:\n", - " password = input(\"Password: \").strip()\n", - " attempts += 1\n", + "Below is one such example. This code scans over a given function to find a local minimum (between a given start and end point). With each loop, the step size decreases by a factor of 10 to give a more precise answer.\n", "\n", - " if password == correct_password:\n", - " print(\"Login successful! Welcome!\")\n", - " break\n", - " else:\n", - " if attempts < MAX_ATTEMPTS:\n", - " print(f\"Incorrect password. {MAX_ATTEMPTS - attempts} attempts left.\")\n", - " else:\n", - " print(\"Too many failed attempts.\")\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise\n", + "```Python\n", + "# Scan over the quadratic equation y = 5.23x^2 + 2.7x - 1.5 to find the minimum value\n", + "\n", + "# Initial range and step size\n", + "start = -100\n", + "fin = 100\n", + "step = 1\n", + "\n", + "# Loop until the step size is sufficiently small\n", + "while step > 0.000000001:\n", + "\n", + " # Identify x values over which to evaluate the function\n", + " x_vals = []\n", + " for q in range(int((fin - start) / step)):\n", + " x_vals.append(start + q * step)\n", + "\n", + " # Evaluate the function at each x value.\n", + " y_vals = []\n", + " for x in x_vals:\n", + " y = 5.23 * x**2 + 2.7 * x - 1.5\n", + " y_vals.append(y)\n", + "\n", + " # Find the index of the minimum y value\n", + " index = y_vals.index(min(y_vals))\n", + "\n", + " # Print out the minimum y value found and the corresponding x value\n", + " print(round(x_vals[index], 10), \",\", round(min(y_vals), 10))\n", + "\n", + " # Narrow the range to be around the minimum value found\n", + " start = x_vals[index] - step\n", + " fin = x_vals[index] + 2 * step # * 2 due to zero-indexing\n", + "\n", + " # Decrease the step size\n", + " step = step / 10\n", + "```\n", + "\n", + "The first 5 lines produced by this code read:\n", + "\n", + "\n", + "0 , -1.5
      \n", + "-0.3 , -1.8393
      \n", + "-0.26 , -1.848452
      \n", + "-0.258 , -1.84847028
      \n", + "-0.2581 , -1.8484703597
      \n", + "
      \n", + "\n", + "Each time, the x coordinate gains a decimal place, becoming more precise, and the the y-coordinate approximates closer and closer to the minimum value. This could be used, for example, to find local peaks in spectrum data.\n", "\n", - "Can you rewrite the code to need no break statements at all?" + "One function in this program you might not have seen before is `index()`, used here to find the position of the minimum y value. This returns the index of the first occurrence of the specified value. In this case, it is more efficient than `enumerate()` because we do not care about any of the other values in the list. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## TO DO\n", - "- Useful chemical applications/exercises?\n", - "- applications? -> program inputs, chemical?" + "## Summary\n", + "- `While` loops take the syntax:\n", + " ```Python\n", + " while condition:\n", + " do action\n", + " ```\n", + " \n", + "- `While` loops are used when you do not know how many loops you will need. \n", + "- In scientific contexts it can be used to loop until a certain condition is met, for example a certain precision or time elapsed.\n", + "- You must be careful, as while loops have the potential to loop infinitely without end. \n", + " - If this happens, you must force-stop your program by either clicking the little square in your IDE, or running `ctrl+c` in a command line. \n", + "- You can control infinite loops using a `break` clause. " ] } ], diff --git a/lessons/solving_problems/style-and-comments.ipynb b/lessons/solving_problems/style-and-comments.ipynb index ee4789a..f2f7f04 100644 --- a/lessons/solving_problems/style-and-comments.ipynb +++ b/lessons/solving_problems/style-and-comments.ipynb @@ -53,6 +53,12 @@ "## Wrapping long lines" ] }, + { + "cell_type": "markdown", + "id": "75ea035f", + "metadata": {}, + "source": [] + }, { "cell_type": "markdown", "id": "4c01a879", diff --git a/lessons/variables/Comparisons.ipynb b/lessons/variables/Comparisons.ipynb index 0aa6fc4..71c42ce 100644 --- a/lessons/variables/Comparisons.ipynb +++ b/lessons/variables/Comparisons.ipynb @@ -229,7 +229,7 @@ "
      \n", " Identifying identical objects using is\n", "\n", - "The comparitor `==` identifies if two objects have the same contents (in the same order), but what if we wanted to distinguish if they are also exactly the same object (i.e. rather than just looking the same, they are actually the same 'behind the scenes')? For this, we can use ```is```:\n", + "The comparator `==` identifies if two objects have the same contents (in the same order), but what if we wanted to distinguish if they are also exactly the same object (i.e. rather than just looking the same, they are actually the same 'behind the scenes')? For this, we can use ```is```:\n", "\n", "```Python\n", "x = [\"N\", \"H\", 3] \n", diff --git a/lessons/variables/mathematical_operators.ipynb b/lessons/variables/mathematical_operators.ipynb index 92a20f9..007b162 100644 --- a/lessons/variables/mathematical_operators.ipynb +++ b/lessons/variables/mathematical_operators.ipynb @@ -164,7 +164,7 @@ "\n", "
        \n", "1. Ethanol (C2H6O), doing the calculation inside a print() statement
        \n", - "2. Cyclahexanone (C6H10O), doing the calculation in a variable which you then print
        \n", + "2. cyclohexanone (C6H10O), doing the calculation in a variable which you then print
        \n", "3. Nitrobenzene (C6H5NO2), using an f string
        \n", "
      \n", "\n", @@ -197,15 +197,15 @@ "\n", "print(\"The mass of ethanol is: \" , 2 * C + 6 * H + O, \" g mol-1\" )\n", "\n", - "mass_cyclahexanone = 6 * C + 10 * H + O\n", - "print(\"The mass of cyclahexanone is: \" , mass_cyclahexanone, \"g mol-1\")\n", + "mass_cyclohexanone = 6 * C + 10 * H + O\n", + "print(\"The mass of cyclohexanone is: \" , mass_cyclohexanone, \"g mol-1\")\n", " \n", "print(f\"The mass of nitrobenzene is: {6 * C + H * 5 + N + 2 * O} g mol-1\")\n", "```\n", "\n", "You should have got the output:
      \n", " The mass of ethanol is: 46.069 g mol-1
      \n", - "The mass of cyclahexanone is: 98.145 g mol-1
      \n", + "The mass of cyclohexanone is: 98.145 g mol-1
      \n", "The mass of nitrobenzene is: 123.111 g mol-1
      \n", "\n", "We only have to define the masses once, and they can be reused for all three sums.\n", @@ -226,7 +226,7 @@ "\n", "$ V(r) = \\frac{q_{Na^+} \\ q_{Cl^+}}{4 \\ \\pi \\ \\epsilon \\ \\epsilon_{0} \\ r}\\ $\n", "\n", - "Where $q_{Na^+}$ and $q_{Cl^+}$ are the relative charges on the ions (eqivalent to Β± the charge on an electron, 1.602×10-19 Coulombs), $r$ is the distance between ionic nuclei (sum of ionic radii given above) in m, $\\epsilon$ is the relative permittivity ($\\epsilon$ = 78.7 Fm-1 in water), and $\\epsilon_0$ is the permittivity of free space ($\\epsilon_0$ = 8.85Γ—10-12 Fm-1).\n", + "Where $q_{Na^+}$ and $q_{Cl^+}$ are the relative charges on the ions (equivalent to Β± the charge on an electron, 1.602×10-19 Coulombs), $r$ is the distance between ionic nuclei (sum of ionic radii given above) in m, $\\epsilon$ is the relative permittivity ($\\epsilon$ = 78.7 Fm-1 in water), and $\\epsilon_0$ is the permittivity of free space ($\\epsilon_0$ = 8.85Γ—10-12 Fm-1).\n", "\n", " By copying out and completing the code below, calculate the interaction potential of a sodium and chlorine ion in water using the above equation.\n", "\n", @@ -345,7 +345,7 @@ "\n", "```python\n", " int_var = 1 #This declares an integer of 1\n", - " float_var = float(int_var) #This casts the intger, 1, to a float, 1.0,\n", + " float_var = float(int_var) #This casts the integer, 1, to a float, 1.0,\n", "```" ] }, @@ -367,7 +367,7 @@ "\n", "This is a TypeError, which is raised when an operation is performed on an unsupported data type. When we put the number 3 in speech marks, we are telling Python that this is just plain text, not a number. To Python, it is as incomprehensible as writing ``answer = sausage / 2``. \n", "\n", - "If we do accidentally try to use division on a string, the error message straightaway tells us what has gone wrong.\n", + "If we do accidentally try to use division on a string, the error message straight away tells us what has gone wrong.\n", "\n", "However, it is not always this simple. \n", "\n", @@ -945,7 +945,7 @@ "- Python's basic maths uses the symbols `+`,`-`,`*`,`/`, `**`.\n", "- Use `%`, \"modulo\", to find the remainder of a division, and ``//``, \"floored division\" to return the integer part of a division.\n", "- Use order of operations (BODMAS/BIDMAS/PEMDAS) to ensure Python does the correct sum. Use round brackets (not any other type of brackets) to remove ambiguity.\n", - "- Assign your calculatioon a variable to be able to call that value forward later. \n", + "- Assign your calculation a variable to be able to call that value forward later. \n", "- Inside an f string, use `:.3f` to print your answer to 3 decimal places. Changing the number changes the number of decimal places displayed in the answer.\n", "- Use `+=`, `-=`, `*=`, etc. to change the value of a variable.\n", "- For more complex functions, import them from a library or module such as `numpy` or `math`. If you import the whole library, you must reference the library using `modulename.function()`, like in the calculation `answer = math.sin(1)`. \n", From 4b06d3add870399830d9a719ef1d5fb5c4d7cb3f Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Fri, 22 Aug 2025 17:48:08 +0100 Subject: [PATCH 68/94] while loops, spelling checks, and almost finished style guide --- .../matplotlib_pyplot_basics.ipynb | 8 +- lessons/files/files_file_types.ipynb | 6 +- lessons/files/reading_files.ipynb | 198 +++++-------- lessons/files/writing_files.ipynb | 54 ++-- .../loops_functions/advanced_functions.ipynb | 30 ++ .../conditional_statements.ipynb | 4 +- lessons/loops_functions/for_loops.ipynb | 44 +-- .../loops_functions/functions_and_scope.ipynb | 76 ++--- lessons/loops_functions/tut_import_mod.ipynb | 106 +++++-- lessons/loops_functions/while_loops.ipynb | 276 +++++++++++------- .../solving_problems/style-and-comments.ipynb | 6 + lessons/variables/Comparisons.ipynb | 2 +- .../variables/mathematical_operators.ipynb | 16 +- 13 files changed, 449 insertions(+), 377 deletions(-) create mode 100644 lessons/loops_functions/advanced_functions.ipynb diff --git a/lessons/common_libs/matplotlib_pyplot_basics.ipynb b/lessons/common_libs/matplotlib_pyplot_basics.ipynb index cb4bf09..5ab1b0a 100644 --- a/lessons/common_libs/matplotlib_pyplot_basics.ipynb +++ b/lessons/common_libs/matplotlib_pyplot_basics.ipynb @@ -37,7 +37,7 @@ "- Plot scatter and line plots of lists of data\n", "- Include axis labels\n", "- Modify the appearances of the plots\n", - "- Be able to save your plot to a specifed directory" + "- Be able to save your plot to a specified directory" ] }, { @@ -55,7 +55,7 @@ "source": [ "Matplotlib is a comprehensive library for creating static, animated, and interactive visualisations. Within Matplotlib, the widely-used module Pyplot provides a fairly intuitive way of plotting, and is able to open interactive figures on your screen.\n", "\n", - "There are two different ways of using the library: an explicit or \"Axes\" interface, and an implicit \"pyplot\" interface. The explicit interfaces defines each figure *explicitly* and builds the visualisation step-by-step. The implicit method keeps track of the last Figure and Axes created and adds aditional content to the object it thinks the user wants. If you are only plotting simple figures, the implicit method is sufficient, however if you wish to create multiple figures, you may run into problems trying to refer to the correct figure, and should use the explicit method. Be aware that many online examples will use the two methods interchangeably, and in some cases, at the same time. Have a look on the Matplotlib website for more information on the [two interfaces](https://matplotlib.org/stable/users/explain/figure/api_interfaces.html).\n", + "There are two different ways of using the library: an explicit or \"Axes\" interface, and an implicit \"pyplot\" interface. The explicit interfaces defines each figure *explicitly* and builds the visualisation step-by-step. The implicit method keeps track of the last Figure and Axes created and adds additional content to the object it thinks the user wants. If you are only plotting simple figures, the implicit method is sufficient, however if you wish to create multiple figures, you may run into problems trying to refer to the correct figure, and should use the explicit method. Be aware that many online examples will use the two methods interchangeably, and in some cases, at the same time. Have a look on the Matplotlib website for more information on the [two interfaces](https://matplotlib.org/stable/users/explain/figure/api_interfaces.html).\n", "\n", "For a discussion on explicit versus implicit interfaces, look to the end of the lesson. **The rest of the lesson will only use the implicit interface**.\n", "\n", @@ -199,7 +199,7 @@ "
      \n", " Click to view answer\n", "\n", - "As we want to plot a scatter graph, we use the funtion `plt.scatter()`.\n", + "As we want to plot a scatter graph, we use the function `plt.scatter()`.\n", "\n", "```Python\n", "from matplotlib import pyplot as plt\n", @@ -1078,7 +1078,7 @@ " - Add labels to each `plt.plot()` to auto-generate a legend. E.g. `plt.plot(x, y, label=\"Data Series A\")`\n", "\n", "- The implicit interface only keeps track of the last figure and axis created. It requires fewer lines of code, and elements are added using `plt.` and the function.\n", - "- The explicit interface requires a specifc figure and axis to be called to add design elements. It requires more lines of code, elements are added using `ax.` (where ax is often the variable name given to a certain axis), and functions are usually preceded by `set_`.\n", + "- The explicit interface requires a specific figure and axis to be called to add design elements. It requires more lines of code, elements are added using `ax.` (where ax is often the variable name given to a certain axis), and functions are usually preceded by `set_`.\n", "\n", "- Save your files using `plt.savefig()`.\n", "- Understand the difference between Matplotlib's implicit form (used throughout the lesson), and its explicit form." diff --git a/lessons/files/files_file_types.ipynb b/lessons/files/files_file_types.ipynb index c7fee4c..f77b864 100644 --- a/lessons/files/files_file_types.ipynb +++ b/lessons/files/files_file_types.ipynb @@ -130,7 +130,7 @@ "source": [ "Sometimes, we may be very deep, within multiple directories, and it would become very long to specify the full filepath. This is where **relative filepaths** become useful. These allow you to specify a filepath *relative* to the directory you are already in.\n", "\n", - "There are two main commands to specify a relative directoty. \n", + "There are two main commands to specify a relative directory. \n", "\n", "- **`.`** indicates that we are going to go forward (down) a directory.\n", "\n", @@ -160,7 +160,7 @@ "id": "552398b0", "metadata": {}, "source": [ - "If you are running a practical in the lab, you might take a measurement once a minute or multiple times a second, for example if you are running cyclic voltammetry. You then need somewhere to store all those data points. Different file types are marked by the extension at the end of the name, for example ``.txt``, ``.dat``, ``.cif``, or ``.xyz``. If you have used Excel for data procesing in the past, you might have noticed that Excel files are often stored as ``.csv``. Each has a purpose, and each has their own formatting depending on that purpose. \n", + "If you are running a practical in the lab, you might take a measurement once a minute or multiple times a second, for example if you are running cyclic voltammetry. You then need somewhere to store all those data points. Different file types are marked by the extension at the end of the name, for example ``.txt``, ``.dat``, ``.cif``, or ``.xyz``. If you have used Excel for data processing in the past, you might have noticed that Excel files are often stored as ``.csv``. Each has a purpose, and each has their own formatting depending on that purpose. \n", "\n", "| Name | Extension | Uses |\n", "| -----| ----- | ----- |\n", @@ -310,7 +310,7 @@ " - `.` indicates to go forward (down) a directory.\n", " - `..` indicates to go backwards (up) a directory. \n", "\n", - "- Different file types have differnt extensions. These include, but are not limited to:\n", + "- Different file types have different extensions. These include, but are not limited to:\n", " - .py for Python files\n", " - .txt for text files\n", " - .csv for CSV files\n", diff --git a/lessons/files/reading_files.ipynb b/lessons/files/reading_files.ipynb index b317f1a..b97cd0b 100644 --- a/lessons/files/reading_files.ipynb +++ b/lessons/files/reading_files.ipynb @@ -34,31 +34,21 @@ "One of the common uses of Python in chemistry is to analyse large amounts of data that you might have recorded in a lab and stored in various files (see previous lesson for discussion of file types). Python has numerous built-in capabilities that allow you to read and write these files.\n", "\n", "Before you start opening and reading files in Python, make sure:\n", - "- Your file is in the same directory as your code. See previous lesson for explanation on directories.\n", + "\n", + "- Your file is in the same directory as your code. See [previous lesson](./files_file_types.ipynb) for explanation on directories.\n", + "\n", "- Your file is sensibly named so you can easily find it and not confuse it with another.\n", "- Your file is in the correct format. E.g. make sure objects in a ``.CSV`` file are separated by commas and not spaces or tabs.\n", "\n", - "Let's start with a opening a simple text file and reading its contents:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0ff6944a", - "metadata": {}, - "outputs": [], - "source": [ - "molec_file = open(\"molecule.txt\", \"r\")\n", - "contents = molec_file.read()\n", - "molec_file.close()\n", - "print(contents)" - ] - }, - { - "cell_type": "markdown", - "id": "6d821f38", - "metadata": {}, - "source": [ + "Let's start with a opening a simple text file and reading its contents:\n", + "\n", + "```Python\n", + "molecule_file = open(\"molecule.txt\", \"r\")\n", + "contents = molecule_file.read()\n", + "molecule_file.close()\n", + "print(contents)\n", + "```\n", + "\n", "After running the cell above, you should see the contents of the `molecule.txt` file in the cell output. You can verify the output by checking the file's contents in a text editor.\n", "\n", "Let's go through step by step.\n", @@ -76,30 +66,25 @@ "id": "900f642e", "metadata": {}, "source": [ - "### Reading Files with `with`\n", - "We can also use the `with` statement to open files. The benefit of this is that it will automatically close the file for us when we are done with it, without using ``.close()``. This is a more \"Pythonic\" way to handle files and is generally recommended.\n", - "\n", - "Let's take a look at the same example using the `with` statement:" + "### Reading Files with `with`" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "f63f3d19", + "cell_type": "markdown", + "id": "06bbb57c", "metadata": {}, - "outputs": [], "source": [ + "We can also use the `with` statement to open files. The benefit of this is that it will automatically close the file for us when we are done with it, without using ``.close()``. This is a more \"Pythonic\" way to handle files and is generally recommended.\n", + "\n", + "Let's take a look at the same example using the `with` statement:\n", + "\n", + "```Python\n", "with open('molecule.txt', 'r') as molec_file:\n", " contents = molec_file.read()\n", "\n", - "print(contents)" - ] - }, - { - "cell_type": "markdown", - "id": "06bbb57c", - "metadata": {}, - "source": [ + "print(contents)\n", + "```\n", + "\n", "As before, we open the `molecule.txt` file and read its contents.\n", "The difference is that we use the `with` statement to open the file, which automatically closes it when we are done with it (i.e., when we exit the `with` block).\n", "\n", @@ -239,43 +224,27 @@ "\n", "``.split()`` splits content based on the delimiter for any content placed before the dot. It takes a string as argument, which is the delimiter which it acts on. The default delimiter (no argument) is any whitespace (space or tab). \n", "\n", - "Using our example of the text file containing molecular formulas, we can split on the new line (using the special character \"\\n\")." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "2648a5f2", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['C10H14O', 'C5H8', 'C40H56']\n" - ] - } - ], - "source": [ + "Using our example of the text file containing molecular formulas, we can split on the new line (using the special character \"\\n\").\n", + "\n", + "```Python\n", "with open(\"./practice_files/molecule.txt\") as molec_file:\n", " contents = molec_file.read()\n", " contents = contents.split(\"\\n\")\n", - "print(contents)" - ] - }, - { - "cell_type": "markdown", - "id": "2756b35f", - "metadata": {}, - "source": [ + "print(contents)\n", + "```\n", + "\n", + "Which prints:\n", + "\n", + " ['C10H14O', 'C5H8', 'C40H56'] \n", + "\n", "The above code does the following:\n", "- The ``with`` statement opens the file and assigns it the name molec_file. It automatically closes once the ``with`` indents are no longer respected.\n", "- The contents are read.\n", - "- The contents are split. We have specified to split the content along new lines using ``\"\\n\"``. However, in thise case it would also work if we left the argument blank, as the new lines count as whitespace. However, if we wanted to split along a new line and there was whitespace within the line, we would have to specify ``\"\\n\"``. \n", + "- The contents are split. We have specified to split the content along new lines using ``\"\\n\"``. However, in this case it would also work if we left the argument blank, as the new lines count as whitespace. However, if we wanted to split along a new line and there was whitespace within the line, we would have to specify ``\"\\n\"``. \n", "\n", "The output is: ``['C10H14O', 'C5H8', 'C40H56']``, a list of each item between the delimiter.\n", "\n", - "In this case, we have extracted and split the entire contents of the file. But what if there were multiple items in each line? Open and have a look at the file 'alkanes_alkenes_alkynes.txt'. This holds the molecular formulae of each homologuous series in a column. We could read it using the code above, but it would result in a very long list of strings:\n", + "In this case, we have extracted and split the entire contents of the file. But what if there were multiple items in each line? Open and have a look at the file 'alkanes_alkenes_alkynes.txt'. This holds the molecular formulae of each homologous series in a column. We could read it using the code above, but it would result in a very long list of strings:\n", "\n", "``['C2H6,C2H4,C2H2', 'C3H8,C3H6,C3H4', 'C4H10,C4H8,C4H6', 'C5H12,C5H10,C5H8', 'C6H14,C6H12,C6H10', ... ,'C14H30,C14H28,C14H26', 'C15H32,C15H30,C15H28']``\n", "\n", @@ -301,7 +270,7 @@ " print(line)\n", "```\n", "\n", - "The above code returns each item in each line as items in a list. However, this isn't particularly useful. It would be more useful to have a list of alkanes, a list of alkenes, and a list of alkynes. We can do this by apppending to empty lists by referencing the position in each line using square brackets.\n", + "The above code returns each item in each line as items in a list. However, this isn't particularly useful. It would be more useful to have a list of alkanes, a list of alkenes, and a list of alkynes. We can do this by appending to empty lists by referencing the position in each line using square brackets.\n", "\n", "```Python\n", "alkanes = []\n", @@ -490,7 +459,7 @@ "
      \n", " Click to view extension answer\n", "\n", - "This code is more flexible than the previous one. Now, we can accept files with any number of columns, and we retrieve the data frp, a certain column, specifed with a second argument.\n", + "This code is more flexible than the previous one. Now, we can accept files with any number of columns, and we retrieve the data frp, a certain column, specified with a second argument.\n", "\n", "```Python\n", "def read_file(data_file, column=0):\n", @@ -525,7 +494,7 @@ "\n", "But this still has issues. If we want to retrieve the data from multiple columns, we have to call our function multiple times, and each time type out the file path. \n", "\n", - "In the advanced extentsion, we instead use an arbitrary number of arguments to retrieve any number of columns from the data.\n", + "In the advanced extension, we instead use an arbitrary number of arguments to retrieve any number of columns from the data.\n", "\n", "

      " ] @@ -591,16 +560,6 @@ "

      " ] }, - { - "cell_type": "markdown", - "id": "4b9514a0", - "metadata": {}, - "source": [ - "## Looping through multiple files\n", - "\n", - "- OS module?" - ] - }, { "cell_type": "markdown", "id": "8ec1d24a", @@ -894,7 +853,7 @@ "id": "20c43e7b", "metadata": {}, "source": [ - "### Files in a diffferent directory" + "### Files in a different directory" ] }, { @@ -902,7 +861,7 @@ "id": "807a6013", "metadata": {}, "source": [ - "If the file you are trying to call is unavoidably in a differect directory to the one you are working in, you can still call the file by instead inputing the full filepath for the file. E.g. ``\"C:\\Users\\Tara\\Documents\\PythonInChemistry\\readingfiles\\molecule.txt\"``\n", + "If the file you are trying to call is unavoidably in a different directory to the one you are working in, you can still call the file by instead inputting the full filepath for the file. E.g. ``\"C:\\Users\\Tara\\Documents\\PythonInChemistry\\readingfiles\\molecule.txt\"``\n", "\n", "You could also use a relative filepath using ``./`` and ``../``. \n", "- ``./`` indicates you want to stay in the same directory. After the forward slash, you can then put in further directory names, ending with your file name.\n", @@ -969,7 +928,7 @@ }, { "cell_type": "code", - "execution_count": 140, + "execution_count": null, "id": "fcf7d719", "metadata": {}, "outputs": [ @@ -1012,7 +971,7 @@ "if distance(H1,H2) < 1.2*2:\n", " print(\"These two atoms will interact\")\n", "else:\n", - " print(\"These two atoms will not inteact\")\n" + " print(\"These two atoms will not interact\")\n" ] }, { @@ -1029,7 +988,7 @@ }, { "cell_type": "code", - "execution_count": 163, + "execution_count": null, "id": "96db5e87", "metadata": {}, "outputs": [ @@ -1070,63 +1029,46 @@ }, { "cell_type": "markdown", - "id": "10c5379d", - "metadata": {}, - "source": [ - "### Loop through multiple files\n", - "TODO: Task involving looping through multiple files with a predictable filename (e.g. `001.csv`) and reading their contents." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "002dbb28", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "c1114d99", + "id": "f58d91db", "metadata": {}, "source": [ - "TODO: Example answer" + "## Summary" ] }, { "cell_type": "markdown", - "id": "619f5799", + "id": "a22cebb9", "metadata": {}, "source": [ - "## Debugging\n", - "The code below contains a bug and will not run.\n", - "See if you can fix it by reading the error message and using the information it provides." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "818250af", - "metadata": {}, - "outputs": [], - "source": [ - "with open('molecule.csv', 'r') as file:\n", - " text = file.read()\n", - "\n", - "print(text)" + "- Before reading a file in Python, make sure:\n", + " - Your file is in the same directory as your code (or has a valid filepath). \n", + " - Your file is named sensibly.\n", + " - Your file is in the correct format.\n", + "\n", + "- Open a file using either:\n", + " - `file_name = open(\"file.txt\", \"r\")`\n", + " `contents = file_name.read()`\n", + " `file_name.close()`\n", + " - `with open(\"file.txt\", \"r\") as file_name:`\n", + "\n", + "- Delimiters indicate separation between items in a file. Common delimiters are commas (`\",\"`), spaces (`\"\"`), tabs (`\"\\t\"`), and new lines (`\"\\n\"`).\n", + "\n", + "- Split a file along a delimiter using `.split()`. Inside the bracket place the delimiter as a string. \n", + "- The CSV module allows you to quickly parse CSV files.\n", + "- There are a number of ways to parse headers.\n", + " - By identifying if the line contains a certain phrase. `if line in contents == \"time,result\"`\n", + " - Check if an entry is a number using `.isdigit()`.\n", + " - Use `enumerate()` to skip certain lines. \n", + " - Skip lines of a certain length.\n", + "\n", + "- Use a relative filepath to reference files in a different directory. " ] }, { "cell_type": "markdown", - "id": "f58d91db", + "id": "8fc97a2a", "metadata": {}, - "source": [ - "## TODO\n", - "- Discuss carriage returns and other special characters?\n", - "- Explain the distinction between text and binary files?\n", - "\n", - "- Loop through multiple files" - ] + "source": [] } ], "metadata": { diff --git a/lessons/files/writing_files.ipynb b/lessons/files/writing_files.ipynb index 113d24c..7a463c9 100644 --- a/lessons/files/writing_files.ipynb +++ b/lessons/files/writing_files.ipynb @@ -17,10 +17,8 @@ "source": [ "## Learning Outcomes\n", "\n", - "The learning outcomes are as follows:\n", - "\n", - "1. Saving data into a newly created file\n", - "2. Add additional data into an existing file." + "- Saving data into a newly created file\n", + "- Add additional data into an existing file." ] }, { @@ -31,9 +29,9 @@ "source": [ "## Prerequisites\n", "\n", - "Variables
      \n", - "FOR loops
      \n", - "Writing f-strings
      \n", + "- [Variables](../variables/Variable_data_types.ipynb)\n", + "- [For loops](../loops_functions/for_loops.ipynb)\n", + "- [Files and file types](./files_file_types.ipynb)\n", "\n", "\n" ] @@ -74,7 +72,7 @@ "- The function ``.write()`` allows content within the brackets to be written to the file.\n", " - You can write using concatenation (as in line 2). Here, strings are combined into one long string using the '+' symbol. \n", " - You can write using f-strings, as we have seen in the past. \n", - " - Putting two ``file.write()`` statements does not place your items on a new line. You need to add the special characer ``\"\\n\"`` to write a new line. Other special characters you might use are ``\"\\n\"``, the carriage return (moves the cursor to the beginning of the current line), and ``\"\\t\"``, which inserts a tab.\n", + " - Putting two ``file.write()`` statements does not place your items on a new line. You need to add the special character ``\"\\n\"`` to write a new line. Other special characters you might use are ``\"\\n\"``, the carriage return (moves the cursor to the beginning of the current line), and ``\"\\t\"``, which inserts a tab.\n", "- You can iterate using 'for' to print a phrase over and over again.\n", "- Once you are done, you close the file. Just like with reading, this is good practice." ] @@ -405,7 +403,7 @@ "\n", "If we had lots and lots of lists that we want to write to the document, both ``range()`` and ``zip()`` seem to require lots of repetitive naming of lists. However, there are ways around this. \n", "\n", - "When we first learned about ``zip()``, we might have mentioned that if you use only 1 temporary variable for multiple lists (e.g. ``for i in zip(list1,list2,list3):``), the items in the list are still associated with each other, but as a tuple, in this case witht he variable name ``i``. Tuples are very similar to lists, with the difference that they are immutable, their contents cannot be changed once it has been created. Once you have the tuple, you can iterate through it, writing each item in the tuple to your document. \n", + "When we first learned about ``zip()``, we might have mentioned that if you use only 1 temporary variable for multiple lists (e.g. ``for i in zip(list1,list2,list3):``), the items in the list are still associated with each other, but as a tuple, in this case with the variable name ``i``. Tuples are very similar to lists, with the difference that they are immutable, their contents cannot be changed once it has been created. Once you have the tuple, you can iterate through it, writing each item in the tuple to your document. \n", "\n", "```Python\n", "energies_1 = [1.01e-19, 1.43e-19, 1.85e-19, 2.28e-19, 2.7e-19, 3.13e-19, 3.55e-19, 3.98e-19, 4.4e-19, 4.83e-19, 5.25e-19, 5.68e-19]\n", @@ -578,19 +576,11 @@ "source": [ "In all of the examples above. When we run the code over and over again the data that was there previously is truncated (cut off/deleted), and replaced with the current program. \n", "\n", - "Append mode, ``\"a\"``, is a bit different. It can still create a new file if it doesn't already exist, however for exosting files, it will simply append to the bottom of the file. \n", + "Append mode, ``\"a\"``, is a bit different. It can still create a new file if it doesn't already exist, however for existing files, it will simply append to the bottom of the file. \n", "\n", - "Run the code below a few times and see how data appears at the bottom of the file." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "xpAqJWu2_ss2" - }, - "outputs": [], - "source": [ + "Run the code below a few times and see how data appears at the bottom of the file.\n", + "\n", + "```Python\n", "file = open('spectrum.txt', 'a')\n", "\n", "wavelength = [300, 310]\n", @@ -599,7 +589,8 @@ "for i in range(len(wavelength)):\n", " file.write(f\"{wavelength[i]} \\t {absorbance[i]}\\n\")\n", "\n", - "file.close()" + "file.close()\n", + "```" ] }, { @@ -808,7 +799,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -935,15 +926,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "- " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## TODO\n", - "- User defined save paths?" + "- Use \"w\" when you open a file to change to write mode, and \"a\" for append mode. \n", + "\n", + "- If the file does not exist, it will be created. \n", + "- In \"w\" mode, if data already exists in a file that you open, it will be erased and any new data added on top.\n", + "- In \"a\" mode, if data already exists in the file that you open, any new data will be added at the bottom. \n", + "- You can write to files either using `file = open(\"file.txt\", \"w\")`, or `with open(\"file.txt\", \"w\") as file:`.\n", + "- Use iteration to write many things to a file.\n", + "- Add structure to a file using special characters like `\\t` (tab) and `\\n` (new line)." ] } ], diff --git a/lessons/loops_functions/advanced_functions.ipynb b/lessons/loops_functions/advanced_functions.ipynb new file mode 100644 index 0000000..1d004e1 --- /dev/null +++ b/lessons/loops_functions/advanced_functions.ipynb @@ -0,0 +1,30 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f2458be8", + "metadata": {}, + "source": [ + "# Advanced functions" + ] + }, + { + "cell_type": "markdown", + "id": "57e070a7", + "metadata": {}, + "source": [ + "More advanced lesson?\n", + "- Unpacking operator (as part of *args and **kwargs?)\n", + "- Returning different data structures (dictionaries, tuples, etc)\n", + "- Object and class functions?" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/lessons/loops_functions/conditional_statements.ipynb b/lessons/loops_functions/conditional_statements.ipynb index c527763..06dbbcf 100644 --- a/lessons/loops_functions/conditional_statements.ipynb +++ b/lessons/loops_functions/conditional_statements.ipynb @@ -66,7 +66,7 @@ "
      \n", " Using if \n", "\n", - "The main way we can use `if` statements is in conjuction with comparisons. \n", + "The main way we can use `if` statements is in conjunction with comparisons. \n", "\n", "```Python\n", "x = \"CH4\"\n", @@ -317,7 +317,7 @@ "source": [ "### Question 1\n", "\n", - "When doing IR spectroscopy, a peak with low % transmittance corresponds to a strong spike on the spectrum (the compound strngly absorbing light). When analysing a particular spectrum, any peaks with transmittance greater than 95% are indistinguishable from background noise, and are ignored. \n", + "When doing IR spectroscopy, a peak with low % transmittance corresponds to a strong spike on the spectrum (the compound strongly absorbing light). When analysing a particular spectrum, any peaks with transmittance greater than 95% are indistinguishable from background noise, and are ignored. \n", "\n", "Write a Python conditional statement that will print whether our peak is background noise or not." ] diff --git a/lessons/loops_functions/for_loops.ipynb b/lessons/loops_functions/for_loops.ipynb index 31b43df..64c684a 100644 --- a/lessons/loops_functions/for_loops.ipynb +++ b/lessons/loops_functions/for_loops.ipynb @@ -128,7 +128,7 @@ "\n", "In this piece of code, we are converting pressure in mmHg to bar. Each value in the list ``pressure_mmHg`` is converted into bar, printed, and appended into a new list which contains all the associated values in bar. This list can then be used throughout the rest of the code.\n", "\n", - "The empty list ``pressure_bar`` is first defined outside of the loop. If it was defined inside the loop, it would be re-defined as emopty on every loop, and by the end would only contain the final value. Try it yourself to see. \n", + "The empty list ``pressure_bar`` is first defined outside of the loop. If it was defined inside the loop, it would be re-defined as empty on every loop, and by the end would only contain the final value. Try it yourself to see. \n", "\n", "

      " ] @@ -175,9 +175,9 @@ "print(molecule_mass)\n", "```\n", "\n", - "In this program, each nested list in ``bimolecular_atom_masses`` is assigned the temporary variable name ``molecule``. To refer to an item within this nested list, you must refer to it as ``molecule[0]`` or ``molecule[1]``, where the square bracketted number refers to the item's position within the list. Remember that Python is zero-indexed, so the first item in a list is called '0', the second item is called '1' and so on. \n", + "In this program, each nested list in ``bimolecular_atom_masses`` is assigned the temporary variable name ``molecule``. To refer to an item within this nested list, you must refer to it as ``molecule[0]`` or ``molecule[1]``, where the square bracketed number refers to the item's position within the list. Remember that Python is zero-indexed, so the first item in a list is called '0', the second item is called '1' and so on. \n", "\n", - "Reminder: To refer straight to an item in a nested list, you can use double sets of square brackets. For example, to refer to the float 12.011 in the above list, you can call it with `bimolecular_atom_masses[1][0]`. This calls the item in position zero of the list in position 1. Remeber that lists are zero-indexed, and so the first item in a list always has the index 0.\n", + "Reminder: To refer straight to an item in a nested list, you can use double sets of square brackets. For example, to refer to the float 12.011 in the above list, you can call it with `bimolecular_atom_masses[1][0]`. This calls the item in position zero of the list in position 1. Remember that lists are zero-indexed, and so the first item in a list always has the index 0.\n", "\n", "

      \n" ] @@ -371,7 +371,7 @@ "source": [ "Each entry in a list has two things associated with them: the **index** of the entry and the **value** of the entry. \n", "\n", - "Python is zero-indexed, meaning that each value in a list carries an index from 0 upwards. For example, in the list `[\"H\", \"He\", \"Li\", \"Be\"]`, \"H\" is at index position 0, \"He\", is at index position 1, \"Li\" is at index poisition 2, and \"Be\" at index position 3. Sometimes it is useful to know the index for a particular list or item in a list. Python allows us to find out the index while we iterate through a list using the function ``enumerate()``\n", + "Python is zero-indexed, meaning that each value in a list carries an index from 0 upwards. For example, in the list `[\"H\", \"He\", \"Li\", \"Be\"]`, \"H\" is at index position 0, \"He\", is at index position 1, \"Li\" is at index position 2, and \"Be\" at index position 3. Sometimes it is useful to know the index for a particular list or item in a list. Python allows us to find out the index while we iterate through a list using the function ``enumerate()``\n", "\n", "The ``enumerate()`` function assigns each element in a list a number, from 0 upwards. This is the index, which can then be referred to to call items from that list. This is a good way of identifying where in a list a certain item is. The basic syntax of ``enumerate()`` is:\n", "\n", @@ -452,7 +452,7 @@ "\n", "In this case, all three lists are associated item-wise, meaning the element at index 0 in `atom_names` is related to the mass at index 0 of `atom_masses` and the number at index 0 in `atom_neutrons`. You only need to enumerate one of these lists (in this case, `atom_names`) to be able to reference the corresponding index for the other two lists. \n", "\n", - "It is of course possible to have more complicated relationships betwen the indexes of multiple lists. An example would be where a range of values is needed from the second list, rather than just a single point. These could be accessed using additional `if` statements within the loop.\n", + "It is of course possible to have more complicated relationships between the indexes of multiple lists. An example would be where a range of values is needed from the second list, rather than just a single point. These could be accessed using additional `if` statements within the loop.\n", "\n", "However, if the relationship is direct then Python offers a simple alternative: ```zip```.\n", "

      " @@ -1007,11 +1007,11 @@ "You have two lists and want to make sure than none are repeated from one list to the other. You could use nested lists to check every combination of the two lists.\n", "\n", "```Python\n", - "molecs1 = [\"H2O\", \"HCN\", \"CO2\", \"NH3\"]\n", - "molecs2 = [\"NO2\", \"CO2\", \"CH3\", \"H2\", \"HCN\"]\n", + "molecules_1 = [\"H2O\", \"HCN\", \"CO2\", \"NH3\"]\n", + "molecules_2 = [\"NO2\", \"CO2\", \"CH3\", \"H2\", \"HCN\"]\n", "\n", - "for i in molec1:\n", - " for j in molec2:\n", + "for i in molecules_1:\n", + " for j in molecules_2:\n", " if i == j:\n", " print(i)\n", "```\n", @@ -1056,7 +1056,7 @@ "\n", "Think further: If we wanted to plot these positions, we could do this using the Python module ``matplotlib.pyplot``, which is discussed in a further [tutorial](/lessons/common_libs/Matplotlib_Documentation.ipynb).\n", "\n", - "This example highlights a common issue of loops, repeating the same loop several times. In this example we can do away with the first two loops that generate the xaxis by combining them with the nested loop.\n", + "This example highlights a common issue of loops, repeating the same loop several times. In this example we can do away with the first two loops that generate the x-axis by combining them with the nested loop.\n", "\n", "It is always a good idea to check your code for extra loops that could be combined into one. It can often improve the efficiency and neatness of your code.\n", "\n", @@ -1162,9 +1162,9 @@ "\n", ">```Python\n", "># Continue\n", - ">molecs = [\"H2O\", \"HCN\", \"CO2\", \"NH3\", \"CH3\"]\n", + ">molecules = [\"H2O\", \"HCN\", \"CO2\", \"NH3\", \"CH3\"]\n", ">\n", - ">for formula in molecs:\n", + ">for formula in molecules:\n", "> if formula == \"CO2\":\n", "> continue\n", "> print(formula)\n", @@ -1175,9 +1175,9 @@ "\n", ">```Python\n", "># Break\n", - ">molecs = [\"H2O\", \"HCN\", \"CO2\", \"NH3\", \"CH3\"]\n", + ">molecules = [\"H2O\", \"HCN\", \"CO2\", \"NH3\", \"CH3\"]\n", ">\n", - ">for formula in molecs:\n", + ">for formula in molecules:\n", "> if formula == \"CO2\":\n", "> break\n", "> print(formula)\n", @@ -1203,10 +1203,10 @@ "``` Python\n", "molecules = [\"HCN\", \"H2O\", \"NH3\", \"CO2\"]\n", "\n", - "for molec in molecules:\n", - " if \"O\" not in molec:\n", + "for mol in molecules:\n", + " if \"O\" not in mol:\n", " continue\n", - " print(molec)\n", + " print(mol)\n", "```\n", "\n", "The output will be:\n", @@ -1231,9 +1231,9 @@ "```Python\n", "molecules = [\"HCN\", \"NH3\", \"H2O\", \"CO2\"]\n", "\n", - "for molec in molecules:\n", - " if \"O\" in molec:\n", - " print(molec)\n", + "for mol in molecules:\n", + " if \"O\" in mol:\n", + " print(mol)\n", " break\n", "print(\"This represents the rest of the code\")\n", "```\n", @@ -1280,7 +1280,7 @@ "
      \n", " Click to view answer\n", "\n", - "Remember that there could be multiple ways to appraoch the same question. Below is one solution.\n", + "Remember that there could be multiple ways to approach the same question. Below is one solution.\n", "\n", "``` Python\n", "wavelengths = [276, 59, 0.5, 1183, 52, 0.002, 127, 474] # nm\n", @@ -1357,7 +1357,7 @@ "\n", "- First we have defined out lists of data, and our empty lists to contain our major peaks.\n", "\n", - "- With a `for` loop, we have xipped the two lists together. Values in the list `peak_shift` are given the temporary variable name `shift` and values in the list `peak_transmittance` are given the temporary variable name `transmittance`. \n", + "- With a `for` loop, we have zipped the two lists together. Values in the list `peak_shift` are given the temporary variable name `shift` and values in the list `peak_transmittance` are given the temporary variable name `transmittance`. \n", "\n", "- With an `if` statement, we are checking that two comparisons are *both* true using the logical operator `and`. For each loop, we must ensure that the shift is greater than 1500 AND the transmittance is less than 95.\n", "\n", diff --git a/lessons/loops_functions/functions_and_scope.ipynb b/lessons/loops_functions/functions_and_scope.ipynb index f90551a..e8d369b 100644 --- a/lessons/loops_functions/functions_and_scope.ipynb +++ b/lessons/loops_functions/functions_and_scope.ipynb @@ -20,7 +20,7 @@ "- To understand the purpose of a function, how they are written, and how they are called.\n", "- To define your own functions, and use them in your code.\n", "- To understand function arguments and return statements.\n", - "- To write and use a docstring. " + "- To write and use a docstring." ] }, { @@ -307,7 +307,7 @@ "\n", "mysum = sum_list(mylist)\n", "```\n", - "In this example it is likely that the variable scount is meant to start at 0, but is likely to start at 5, giving the wrong answer" + "In this example it is likely that the variable scount is meant to start at 0, but is likely to start at 5, giving the wrong answer." ] }, { @@ -389,7 +389,7 @@ "\n", "So far, our functions have only returned one variable. However, it is possible to return multiple values. \n", "\n", - "This is a function which returns both the maximum and the mininum of a list of numbers:\n", + "This is a function which returns both the maximum and the minimum of a list of numbers:\n", "\n", "```Python \n", "def minmax(number_list):\n", @@ -436,7 +436,7 @@ "\n", "So far, all our functions have had one ``return`` statement, right at the end, but this is not a requirement. A function can have a return statement anywhere, and it can have more than one. This is usually encountered when functions contain `if` statements, where depending on whether the conditions are met, different sections of the function may execute. \n", "\n", - "The below function checks if a given elemental symbool is a noble gas or not using [Boolean logic](../variables/Comparisons.ipynb). There are three different possible return values in the above function, depending on the input.\n", + "The below function checks if a given elemental symbol is a noble gas or not using [Boolean logic](../variables/Comparisons.ipynb). There are three different possible return values in the above function, depending on the input.\n", "\n", "```Python \n", "def is_noble_gas(symbol):\n", @@ -600,7 +600,7 @@ "
      \n", " Keyword Arguments\n", "\n", - "A keyword argument, or ``kwarg`` is the alternative to positional arguments, and do not have to be called in a specific order. Instead, they are identifiable by the name given when defining the functino, which must be referenced when calling the function. \n", + "A keyword argument, or ``kwarg`` is the alternative to positional arguments, and do not have to be called in a specific order. Instead, they are identifiable by the name given when defining the function, which must be referenced when calling the function. \n", "\n", "```text\n", "def my_function(kwarg_1, kwarg_2):\n", @@ -809,7 +809,7 @@ "metadata": {}, "source": [ "
      \n", - " Positional-only arguments, ``, /``, and keyword-only arguments, ``* ,``\n", + " Positional-only arguments ``, /`` and keyword-only arguments ``* ,``\n", "\n", "In the sections about positional and keyword arguments above, there is nothing in the function line itself that describes whether the arguments are positional or keyword. The way in which you call the function (and the order) is what defines it. In the first example, we treated both as positional, but in the second we treated both as keyword. \n", "\n", @@ -883,6 +883,7 @@ "The arbitrary argument ``*masses`` represents every mass given when we call the function. Since we have multiple of these, we must iterate through the collection of masses using a ``for`` loop and calculate the number of mols for each. \n", "\n", "The real meaning of arbitrary positional arguments is that the arbitrary number of arguments you are putting into the function are stored as a tuple, which you then iterate through in the function, but you don't really need to know this for it to work.\n", + "\n", "

      " ] }, @@ -958,16 +959,6 @@ "

      " ] }, - { - "cell_type": "markdown", - "id": "37d6dee6", - "metadata": {}, - "source": [ - "### Practice using multiple arguments \n", - "\n", - "TO DO" - ] - }, { "cell_type": "markdown", "id": "37cb2c58", @@ -1076,7 +1067,7 @@ " Units: g\n", " molar_mass : Float\n", " The molecular weight of the substance\n", - " Units: gmol-1\n", + " Units: g mol-1\n", " Default: aspirin == 180.158\n", "\n", " Returns\n", @@ -1150,7 +1141,7 @@ "```Python\n", "def energy_calc(wavelengths):\n", " \"\"\"\n", - " Caculate energy in J and eV from a wavelength.\n", + " Calculate energy in J and eV from a wavelength.\n", "\n", " Parameters\n", " ------------\n", @@ -1176,6 +1167,13 @@ " return energy_J, energy_eV\n", "```\n", "\n", + "The first thing in the docstring is a description of what the function does, written in the imperative tense (as an instruction).\n", + "\n", + "Next, the parameters are given. We only have one in this function: `wavelengths`. \n", + "\n", + "Finally, the returns are given. We have two in this case, `energy_J` and `energy_eV`.\n", + "\n", + "For some, more complex functions, docstrings can be even longer, and include instructions, examples, and usage explanation. \n", "\n", "

      " ] @@ -1188,14 +1186,6 @@ "## Further Practice" ] }, - { - "cell_type": "markdown", - "id": "8526723d", - "metadata": {}, - "source": [ - "Turn this code into a function TO DO" - ] - }, { "cell_type": "markdown", "id": "7d817de7", @@ -1528,6 +1518,7 @@ " Code\n", " return a_variable, b_variable\n", " ```\n", + "\n", "- Call a function using:\n", " - General syntax: ``my_function()``. \n", " - Assign it a variable using: ``result_1, result_2 = my_function(some_argument, other_argument)``. \n", @@ -1544,34 +1535,23 @@ " - Arbitrary keyword arguments, ``**kwargs``. Allows an arbitrary number of keyword arguments to be called. You can convert the dictionary to a list using the function '.items()'. ``def my_function(**argument)``.\n", "- Functions can call themselves. This is called recursion. \n", "- Avoid defining functions within functions. Instead, define it separately and call that function from inside the first function. \n", - "- Use docstrings to explain to the user the purpose of the function, the arguments, its returns, limitations, and any other information needed to use it effectively. \n", - "\n", - "### Good Practise with Functions\n", - "\n", - "When using functions the following is good advice on how to use them:\n", - "\n", - "- Declare all functions at the begining of the programme, don't scatter the declarations throughout the programme, it breaks the flow and makes it hard to understand\n", - "- Don't declare a function within a function. This is an unusal coding style, which is only necessary in a few specialist cases\n", - "- Pass values into function through the arguments, don't rely on variable scope" + "- Use docstrings to explain to the user the purpose of the function, the arguments, its returns, limitations, and any other information needed to use it effectively. \n" ] }, { "cell_type": "markdown", - "id": "e2dab763", + "id": "5e912c77", "metadata": {}, "source": [ - "# To Do\n", - "\n", - "- Add practice using multiple arguments (under **kwargs)\n", - "- Add practice with multiple arguments, multiple returns, and kwargs (under functions within functions)\n", - "- Add a practice question on making a docstring for a given function\n", - "- Exercise 4 spotting the mistakes - change function to make it chemical.\n", - "- Separate some sections into a more advanced lesson (e.g. recursion, *args, **kwargs, positional/keyword-only)?\n", - "\n", - "More advanced lesson?\n", - "- Unpacking operator (as part of *args and **kwargs?)\n", - "- Returning different data structures (dictionaries, tuples, etc)\n", - "- Object and class functions?" + "### Good Practise with Functions\n", + "\n", + "When using functions the following is good advice on how to use them:\n", + "\n", + "- Declare all functions at the beginning of the programme, don't scatter the declarations throughout the programme, it breaks the flow and makes it hard to understand.\n", + "\n", + "- Don't declare a function within a function. This is an unusual coding style, which is only necessary in a few specialist cases.\n", + "- Pass values into function through the arguments, don't rely on variable scope.\n", + "- Generally, it is easier to first write a version of your code (or part of your code) and then turn it into a function, rather than start writing a function straight away." ] } ], diff --git a/lessons/loops_functions/tut_import_mod.ipynb b/lessons/loops_functions/tut_import_mod.ipynb index 4867aca..38db1f8 100644 --- a/lessons/loops_functions/tut_import_mod.ipynb +++ b/lessons/loops_functions/tut_import_mod.ipynb @@ -10,16 +10,12 @@ }, { "cell_type": "markdown", - "id": "3361b89a", + "id": "262ad1e9", "metadata": {}, "source": [ - "## Sections\n", + "## Prerequisites\n", "\n", - "- Libraries and modules - putting them where your program can access them in files?\n", - "- Importing a single function from a library\n", - "- Importing a library\n", - "- Warning about using *\n", - "- Importing using an alias" + "- [Understanding directories](../files/files_file_types.ipynb)." ] }, { @@ -73,9 +69,11 @@ "id": "6ba6434e", "metadata": {}, "source": [ - "In order for your program to be able to access a module or library, they must be in a location that it can access. \n", + "In order for your program to be able to access a module or library, they must be in an accessible location. \n", "\n", - "Built-in modules." + "Built-in Python modules include `math`, `statistics` and `time`, and will be accessible as long as you have Python fully installed. \n", + "\n", + "If you are using an environment such as Anaconda, many common libraries will already be accessible. However, if you want to access more niche libraries such as RDKit, you will have to add this to your environment. You can usually do this by writing `conda install module_name` to the command line, where `module_name` is the name of the library or module you want to add. " ] }, { @@ -83,7 +81,7 @@ "id": "32cf2fd2", "metadata": {}, "source": [ - "## Importing a module or library" + "## Importing a module or library in your code" ] }, { @@ -93,40 +91,76 @@ "source": [ "\n", "\n", - "Sometimes, we wish to use prewritten libraries. For example the numpy libraries for data analysis. To do this we use the import command\n", + "Often, we wish to use pre-written libraries, for example the NumPy library for data analysis. To do this we use the import command.\n", "\n", "```python\n", - "#import numpy into the code\n", + "# Import numpy into the code\n", "import numpy\n", "\n", - "#import numpy and give it an alias\n", + "# Import numpy and give it an alias\n", "\n", "import numpy as np\n", "\n", - "#import the whole math module\n", + "# Import the whole math module\n", "import math\n", "\n", - "#import just the square root function\n", + "# Import just the square root function\n", "from math import sqrt\n", "```\n", - "You then call the function from the library you imported by typing the library name (or alias) dot the function name e.g\n", + "You then call the function from the library you imported by typing the library name (or alias) dot the function name.\n", "\n", "```python\n", + "# Import math and use the function sqrt\n", "import math\n", "\n", + "answer = math.sqrt(4)\n", + "```\n" + ] + }, + { + "cell_type": "markdown", + "id": "ab496835", + "metadata": {}, + "source": [ + "### Using aliases" + ] + }, + { + "cell_type": "markdown", + "id": "87e9a880", + "metadata": {}, + "source": [ + "An alias is a name that you give to an imported library or module that you can use to refer to it throughout your code. This is very useful when your libraries or modules have long names. You do this using the keyword `as`. For example:\n", "\n", - " a = math.sqrt(4)\n", + "`import module as mod`\n", "\n", + "You will notice that aliases are very consistent across institutions, making it very easy to understand code that other people have written. Each library/module has recommended aliases to help consistency.\n", "\n", - "```\n" + "Some common aliases include:\n", + "\n", + "```Python\n", + "# The library NumPy is for advanced mathematics\n", + "import numpy as np\n", + "\n", + "# The library Matplotlib is for visualisations\n", + "import matplotlib as mpl\n", + "\n", + "# The module Pyplot (from Matplotlib) creates plots, graphs and charts\n", + "from matplotlib import pyplot as plt\n", + "\n", + "# The library pandas is for data analysis and manipulation\n", + "import pandas as pd\n", + "```\n", + "\n", + "For some modules, it is recommended not to use an alias, as shortening some names can lead to a **name clash**. This is when multiple variables, functions, or modules have the same name. This could happen if you gave your module a single-letter name, for example `import math as m`. " ] }, { "cell_type": "markdown", - "id": "ab496835", + "id": "d27eb612", "metadata": {}, "source": [ - "## Using aliases" + "### Using import `*`" ] }, { @@ -134,8 +168,6 @@ "id": "44a0aa27", "metadata": {}, "source": [ - "## Using import *\n", - "\n", "in some tutorials it will be suggested you use the \n", "```python \n", "from [] import *\n", @@ -152,6 +184,36 @@ "import my_funcs as mine\n", "```" ] + }, + { + "cell_type": "markdown", + "id": "0c5430c2", + "metadata": {}, + "source": [ + "## Summary" + ] + }, + { + "cell_type": "markdown", + "id": "0ce994db", + "metadata": {}, + "source": [ + "- A module is a file consisting of Python code, and a library is a collection of modules.\n", + "\n", + "- Import libraries and build-in modules using the syntax `import name`, for example `import math`.\n", + "\n", + "- Libraries and modules must be accessible by your code. If you use an environment like Anaconda, many will already be supported, however others may need to be installed via your environment. \n", + "\n", + "- Import functions using `from`, for example `from math import cos`.\n", + "\n", + "- Import modules from libraries using `from`, for example `from matplotlib import pyplot`.\n", + "\n", + "- Assign an alias which you can use to refer to your module name rather than writing it out using the keyword `as`. Common aliases are:\n", + " - `import numpy as np`\n", + " - `import matplotlib as mpl`\n", + " - `from matplotlib import pyplot as plt`\n", + " - `import pandas as pd`" + ] } ], "metadata": { diff --git a/lessons/loops_functions/while_loops.ipynb b/lessons/loops_functions/while_loops.ipynb index 8060454..cf86feb 100644 --- a/lessons/loops_functions/while_loops.ipynb +++ b/lessons/loops_functions/while_loops.ipynb @@ -13,19 +13,36 @@ "source": [ "## Learning Objectives\n", "- Understand how to construct and use `while` loops\n", - "- Know how to control iterations in a loop\n", - "\n", + "- Know how to control iterations in a loop" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "## Prerequisites: \n", "- [boolean variables](/lessons/variables/Variable_data_types.ipynb)\n", "- [comparisons](/lessons/variables/Comparisons.ipynb)\n", "- [`if` statements](/lessons/loops_functions/conditional_statements.ipynb)\n", - "- [`for` loops](/lessons/loops_functions/for_loops.ipynb)\n", - "\n", - "## The `while` Loop\n", + "- [`for` loops](/lessons/loops_functions/for_loops.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The `while` Loop" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A `while` loop is similar to a [`for` loop](./For_Loop_Lesson.ipynb), with the main difference being it will continuously loop while a condition is `True`. Where a ``for`` loop is used when you know how many times you need to iterate, and a ``while`` loop is for when you do not know how many times you need to iterate. \n", "\n", - "A `while` loop is similar to a [`for` loop](./For_Loop_Lesson.ipynb), with the main difference being it will continuosly loop while a condition is `True`. A ``for`` loop is used when you know how many times you need to iterate, and a ``while`` loop is for when you do not know how many times you need to iterate. In general, if you could use a ``for`` loop, try to do it that way, as ``while`` loops have the potential for infinite looping to occur if they are not properly controlled (discussed in more detail in the next section).\n", + "In general, if you could use a ``for`` loop, try to do it that way, as ``while`` loops have the potential for infinite looping errors to occur if they are not properly controlled (discussed in more detail in the next section).\n", "\n", - "In general `while` loops take the structure:\n", + "`while` loops take the syntax:\n", "\n", "```python\n", "while condition:\n", @@ -37,9 +54,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "2\n", + "3\n", + "4\n", + "5\n" + ] + } + ], "source": [ "count = 0\n", "while count < 5:\n", @@ -68,9 +97,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - "
      Exercise: Use a 'while' loop to print integers \n", - "
      \n", + "
      \n", + "
      Exercise: Use a 'while' loop to print integers \n", + "\n", + "---\n", + "\n", "Create a `while` loop to print even integers from zero to 10.\n", "\n", "
      \n", @@ -81,8 +112,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - " Click to view answer\n", + "
      \n", + " Click to view answer\n", "\n", "```Python\n", "count = 0\n", @@ -111,148 +142,179 @@ "\n", "In this example, `count` is never exactly equal to 0: it counts down from 5, to 3, 1, -1, and continues down. As a result, the condition `count != 0` is never `False`, and the loop will run forever.\n", "\n", - "If this happens, you need to force stop your program. How to do this varies depeneding on how you run the instrument. In an IDE Look for a little square (the stop button), it usually represents stopping the program while it is still running. In a terminal press `ctrl+c` to force stop. \n", + "If this happens, you need to force stop your program. How to do this varies depending on how you run the instrument. In an IDE Look for a little square, it usually represents stopping the program while it is still running. In a terminal press `ctrl+c` to force stop. \n", + "\n", + "If the program runs for too long without stopping, it could crash your computer.\n", + "\n", + "The simplest kind of infinite loop is this:\n", + "\n", + "```Python\n", + "while True:\n", + " print(\"This loop will run forever!\")\n", + "```\n", "\n", - "If the program runs for too long without stopping, it could crash your computer." + "If you start your loop with `while True:`, that loop will run forever unless a `break` statement is placed somewhere within it." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Break Clauses\n", + "
      \n", + "
      Exercise: Debug this infinite loop\n", "\n", - "In order to avoid infinite loops, we might want to add a second condition under which the code should stop looping. We can do this using the keyword `break`.\n", + "--- \n", "\n", - "For example, the code below is the same as the code above, but with an additional `break` added, which will be executed once `count < 9`.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "count = 5\n", - "while count != 0:\n", - " print(count)\n", - " count -= 2\n", - " if count < -9:\n", - " break" + "This code will run forever, predict why and fix the problem. \n", + "\n", + ">```Python\n", + ">answers = []\n", + ">count = 0\n", + ">while count < 10:\n", + "> print(\"Count is:\", count)\n", + "> answers.append(count**2)\n", + ">\n", + ">print(answers)\n", + ">```\n", + "\n", + "
      \n", + "
      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Password Example\n", + "
      \n", + " Click to view answer\n", + "\n", + "The problem here is that the count is never increased, and so the code just runs over and over with `count = 0`. Add the line `count = count + 1` into the loop to prevent this.\n", + "\n", + "\n", + "```Python\n", + "answers = []\n", + "count = 0\n", + "while count < 10:\n", + " print(\"Count is:\", count)\n", + " answers.append(count**2)\n", + " count = count + 1\n", + "\n", + "print(answers)\n", + "```\n", "\n", - "The code below pulls together everything we've seen in this lesson. It continuially asks the user for a password, while counting the number of attempts the user has made. If the user either enters the password correctly, or reaches the maximum permitted number of attempts, we use `break` to exit the loop." + "

      " ] }, { - "cell_type": "code", - "execution_count": 2, + "cell_type": "markdown", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Incorrect password. 2 attempts left.\n", - "Incorrect password. 1 attempts left.\n", - "Too many failed attempts.\n" - ] - } - ], "source": [ - "# Password example\n", + "## Break and Continue Clauses\n", "\n", - "MAX_ATTEMPTS = 3\n", + "Just like with `for` loops, we can use `break` and `continue` to control a `while` loop. Particularly useful here is `break`, as without breaking the loop it becomes easy to make it run forever. \n", "\n", - "correct_password = \"secret123\"\n", - "attempts = 0\n", + "In order to avoid infinite loops, we might want to add a second condition under which the code should stop looping. We can do this using the keyword `break`.\n", "\n", - "while True:\n", - " password = input(\"Password: \").strip()\n", - " attempts += 1\n", + "For example, the code below is the same as the infinite loop example above, but with an additional `break` added, which will be executed once `count < 9`. This stops it running forever. \n", "\n", - " if password == correct_password:\n", - " print(\"Login successful! Welcome!\")\n", + "```Python\n", + "count = 5\n", + "while count != 0:\n", + " print(count)\n", + " count -= 2\n", + " if count < -9:\n", " break\n", + "```\n", "\n", - " if attempts >= MAX_ATTEMPTS:\n", - " print(\"Too many failed attempts.\")\n", - " break\n", - " else:\n", - " print(f\"Incorrect password. {MAX_ATTEMPTS - attempts} attempts left.\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise\n", + "With this additional conditional clause, the loop will no longer run forever. \n", "\n", - "The code above uses two `break` statements, and begins `while True:`. Rewrite the code so that only one `break` statement is used." + "While writing a `while` loop, it is useful to put a counter and a conditional clause into your loop to ensure it will not run more than a certain number of times, as it is easy to accidentally remove the condition that would otherwise end the loop (for example, in the above code by changing how large the decrease in count it).\n" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Answer" + "## Uses of `while` loops" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "MAX_ATTEMPTS = 3\n", + "`while` loops are used when you do not know (or do not want to know) how many times a loop will run. This has uses in many areas of programming, for example a loop that must run until the user inputs the correct password, or a video game that must repeat a level until the player defeats the boss. \n", "\n", - "correct_password = \"secret123\"\n", - "attempts = 0\n", + "In scientific programming, we usually know how many times we want a loop to run, so `while` loops are not very common. However, there are times when we do not know how many times we want the program to run. For example until the uncertainty reaches an acceptable level, until we reach a certain precision (e.g. a certain number or decimal places), or until the program has elapsed a certain amount of time. \n", "\n", - "while attempts < MAX_ATTEMPTS:\n", - " password = input(\"Password: \").strip()\n", - " attempts += 1\n", + "Below is one such example. This code scans over a given function to find a local minimum (between a given start and end point). With each loop, the step size decreases by a factor of 10 to give a more precise answer.\n", "\n", - " if password == correct_password:\n", - " print(\"Login successful! Welcome!\")\n", - " break\n", - " else:\n", - " if attempts < MAX_ATTEMPTS:\n", - " print(f\"Incorrect password. {MAX_ATTEMPTS - attempts} attempts left.\")\n", - " else:\n", - " print(\"Too many failed attempts.\")\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise\n", + "```Python\n", + "# Scan over the quadratic equation y = 5.23x^2 + 2.7x - 1.5 to find the minimum value\n", + "\n", + "# Initial range and step size\n", + "start = -100\n", + "fin = 100\n", + "step = 1\n", + "\n", + "# Loop until the step size is sufficiently small\n", + "while step > 0.000000001:\n", + "\n", + " # Identify x values over which to evaluate the function\n", + " x_vals = []\n", + " for q in range(int((fin - start) / step)):\n", + " x_vals.append(start + q * step)\n", + "\n", + " # Evaluate the function at each x value.\n", + " y_vals = []\n", + " for x in x_vals:\n", + " y = 5.23 * x**2 + 2.7 * x - 1.5\n", + " y_vals.append(y)\n", + "\n", + " # Find the index of the minimum y value\n", + " index = y_vals.index(min(y_vals))\n", + "\n", + " # Print out the minimum y value found and the corresponding x value\n", + " print(round(x_vals[index], 10), \",\", round(min(y_vals), 10))\n", + "\n", + " # Narrow the range to be around the minimum value found\n", + " start = x_vals[index] - step\n", + " fin = x_vals[index] + 2 * step # * 2 due to zero-indexing\n", + "\n", + " # Decrease the step size\n", + " step = step / 10\n", + "```\n", + "\n", + "The first 5 lines produced by this code read:\n", + "\n", + "\n", + "0 , -1.5
      \n", + "-0.3 , -1.8393
      \n", + "-0.26 , -1.848452
      \n", + "-0.258 , -1.84847028
      \n", + "-0.2581 , -1.8484703597
      \n", + "
      \n", + "\n", + "Each time, the x coordinate gains a decimal place, becoming more precise, and the the y-coordinate approximates closer and closer to the minimum value. This could be used, for example, to find local peaks in spectrum data.\n", "\n", - "Can you rewrite the code to need no break statements at all?" + "One function in this program you might not have seen before is `index()`, used here to find the position of the minimum y value. This returns the index of the first occurrence of the specified value. In this case, it is more efficient than `enumerate()` because we do not care about any of the other values in the list. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## TO DO\n", - "- Useful chemical applications/exercises?\n", - "- applications? -> program inputs, chemical?" + "## Summary\n", + "- `While` loops take the syntax:\n", + " ```Python\n", + " while condition:\n", + " do action\n", + " ```\n", + " \n", + "- `While` loops are used when you do not know how many loops you will need. \n", + "- In scientific contexts it can be used to loop until a certain condition is met, for example a certain precision or time elapsed.\n", + "- You must be careful, as while loops have the potential to loop infinitely without end. \n", + " - If this happens, you must force-stop your program by either clicking the little square in your IDE, or running `ctrl+c` in a command line. \n", + "- You can control infinite loops using a `break` clause. " ] } ], diff --git a/lessons/solving_problems/style-and-comments.ipynb b/lessons/solving_problems/style-and-comments.ipynb index ee4789a..f2f7f04 100644 --- a/lessons/solving_problems/style-and-comments.ipynb +++ b/lessons/solving_problems/style-and-comments.ipynb @@ -53,6 +53,12 @@ "## Wrapping long lines" ] }, + { + "cell_type": "markdown", + "id": "75ea035f", + "metadata": {}, + "source": [] + }, { "cell_type": "markdown", "id": "4c01a879", diff --git a/lessons/variables/Comparisons.ipynb b/lessons/variables/Comparisons.ipynb index 0aa6fc4..71c42ce 100644 --- a/lessons/variables/Comparisons.ipynb +++ b/lessons/variables/Comparisons.ipynb @@ -229,7 +229,7 @@ "
      \n", " Identifying identical objects using is\n", "\n", - "The comparitor `==` identifies if two objects have the same contents (in the same order), but what if we wanted to distinguish if they are also exactly the same object (i.e. rather than just looking the same, they are actually the same 'behind the scenes')? For this, we can use ```is```:\n", + "The comparator `==` identifies if two objects have the same contents (in the same order), but what if we wanted to distinguish if they are also exactly the same object (i.e. rather than just looking the same, they are actually the same 'behind the scenes')? For this, we can use ```is```:\n", "\n", "```Python\n", "x = [\"N\", \"H\", 3] \n", diff --git a/lessons/variables/mathematical_operators.ipynb b/lessons/variables/mathematical_operators.ipynb index 92a20f9..007b162 100644 --- a/lessons/variables/mathematical_operators.ipynb +++ b/lessons/variables/mathematical_operators.ipynb @@ -164,7 +164,7 @@ "\n", "
        \n", "1. Ethanol (C2H6O), doing the calculation inside a print() statement
        \n", - "2. Cyclahexanone (C6H10O), doing the calculation in a variable which you then print
        \n", + "2. cyclohexanone (C6H10O), doing the calculation in a variable which you then print
        \n", "3. Nitrobenzene (C6H5NO2), using an f string
        \n", "
      \n", "\n", @@ -197,15 +197,15 @@ "\n", "print(\"The mass of ethanol is: \" , 2 * C + 6 * H + O, \" g mol-1\" )\n", "\n", - "mass_cyclahexanone = 6 * C + 10 * H + O\n", - "print(\"The mass of cyclahexanone is: \" , mass_cyclahexanone, \"g mol-1\")\n", + "mass_cyclohexanone = 6 * C + 10 * H + O\n", + "print(\"The mass of cyclohexanone is: \" , mass_cyclohexanone, \"g mol-1\")\n", " \n", "print(f\"The mass of nitrobenzene is: {6 * C + H * 5 + N + 2 * O} g mol-1\")\n", "```\n", "\n", "You should have got the output:
      \n", " The mass of ethanol is: 46.069 g mol-1
      \n", - "The mass of cyclahexanone is: 98.145 g mol-1
      \n", + "The mass of cyclohexanone is: 98.145 g mol-1
      \n", "The mass of nitrobenzene is: 123.111 g mol-1
      \n", "\n", "We only have to define the masses once, and they can be reused for all three sums.\n", @@ -226,7 +226,7 @@ "\n", "$ V(r) = \\frac{q_{Na^+} \\ q_{Cl^+}}{4 \\ \\pi \\ \\epsilon \\ \\epsilon_{0} \\ r}\\ $\n", "\n", - "Where $q_{Na^+}$ and $q_{Cl^+}$ are the relative charges on the ions (eqivalent to Β± the charge on an electron, 1.602×10-19 Coulombs), $r$ is the distance between ionic nuclei (sum of ionic radii given above) in m, $\\epsilon$ is the relative permittivity ($\\epsilon$ = 78.7 Fm-1 in water), and $\\epsilon_0$ is the permittivity of free space ($\\epsilon_0$ = 8.85Γ—10-12 Fm-1).\n", + "Where $q_{Na^+}$ and $q_{Cl^+}$ are the relative charges on the ions (equivalent to Β± the charge on an electron, 1.602×10-19 Coulombs), $r$ is the distance between ionic nuclei (sum of ionic radii given above) in m, $\\epsilon$ is the relative permittivity ($\\epsilon$ = 78.7 Fm-1 in water), and $\\epsilon_0$ is the permittivity of free space ($\\epsilon_0$ = 8.85Γ—10-12 Fm-1).\n", "\n", " By copying out and completing the code below, calculate the interaction potential of a sodium and chlorine ion in water using the above equation.\n", "\n", @@ -345,7 +345,7 @@ "\n", "```python\n", " int_var = 1 #This declares an integer of 1\n", - " float_var = float(int_var) #This casts the intger, 1, to a float, 1.0,\n", + " float_var = float(int_var) #This casts the integer, 1, to a float, 1.0,\n", "```" ] }, @@ -367,7 +367,7 @@ "\n", "This is a TypeError, which is raised when an operation is performed on an unsupported data type. When we put the number 3 in speech marks, we are telling Python that this is just plain text, not a number. To Python, it is as incomprehensible as writing ``answer = sausage / 2``. \n", "\n", - "If we do accidentally try to use division on a string, the error message straightaway tells us what has gone wrong.\n", + "If we do accidentally try to use division on a string, the error message straight away tells us what has gone wrong.\n", "\n", "However, it is not always this simple. \n", "\n", @@ -945,7 +945,7 @@ "- Python's basic maths uses the symbols `+`,`-`,`*`,`/`, `**`.\n", "- Use `%`, \"modulo\", to find the remainder of a division, and ``//``, \"floored division\" to return the integer part of a division.\n", "- Use order of operations (BODMAS/BIDMAS/PEMDAS) to ensure Python does the correct sum. Use round brackets (not any other type of brackets) to remove ambiguity.\n", - "- Assign your calculatioon a variable to be able to call that value forward later. \n", + "- Assign your calculation a variable to be able to call that value forward later. \n", "- Inside an f string, use `:.3f` to print your answer to 3 decimal places. Changing the number changes the number of decimal places displayed in the answer.\n", "- Use `+=`, `-=`, `*=`, etc. to change the value of a variable.\n", "- For more complex functions, import them from a library or module such as `numpy` or `math`. If you import the whole library, you must reference the library using `modulename.function()`, like in the calculation `answer = math.sin(1)`. \n", From 696ed5939032108b221da177f9c099a28012bfd1 Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Fri, 22 Aug 2025 17:51:30 +0100 Subject: [PATCH 69/94] style --- .../solving_problems/style-and-comments.ipynb | 364 +++++++++++++++--- 1 file changed, 321 insertions(+), 43 deletions(-) diff --git a/lessons/solving_problems/style-and-comments.ipynb b/lessons/solving_problems/style-and-comments.ipynb index f2f7f04..4bd4654 100644 --- a/lessons/solving_problems/style-and-comments.ipynb +++ b/lessons/solving_problems/style-and-comments.ipynb @@ -10,31 +10,70 @@ }, { "cell_type": "markdown", - "id": "dddb4951", + "id": "b7878ee6", "metadata": {}, "source": [ - "\"A foolish consistency is the hobgoblin of little minds\" \n", - " - Ralph Waldo Emerson \n", + "## Learning Outcomes:\n", "\n", - "In other words: Following the style guide is important for readability in your code, but you need to know when to be inconsistent and break the style guide - sometimes the style guide doesn't apply, and you need to use your best judgement in those cases. If applying the style guide makes your code less readable, you should break it. " + "- Understand why style is important in Python\n", + "- Use the correct styles in Python" ] }, { "cell_type": "markdown", - "id": "30dc22fb", + "id": "59f114cb", "metadata": {}, "source": [ - "## Introduction" + "## Prerequisites\n", + "\n", + "A general understanding of Python" ] }, { "cell_type": "markdown", - "id": "9c8e6771", + "id": "9f33481e", "metadata": {}, "source": [ - "Programming code is read much more than it is written. Whether this is you goin back to check and edit your work, a colleague working on the same piece of code as you, or your lecturer marking your work, it will be read many more times than written down. This is why making your code look good and readable is very important. It also needs to be adaptable for different purposes. \n", + "## Python's PEP8" + ] + }, + { + "cell_type": "markdown", + "id": "90412e16", + "metadata": {}, + "source": [ + "\"A foolish consistency is the hobgoblin of little minds\" \n", + " - Ralph Waldo Emerson " + ] + }, + { + "cell_type": "markdown", + "id": "9aae836d", + "metadata": {}, + "source": [ + "PEP stands for 'Python Enhancement Proposal', and presents some of the key points you can use to make your code more organized and readable. Within PEP, [PEP8 is the style guide](https://peps.python.org/pep-0008/), and lists the conventions for ensuring Python code looks good, focussing on readability, simplicity, adaptability, and consistency.\n", + "\n", + "Readability is one of the key aspects of PEP8. Programming code is always read more than it is written. Whether this is you going back to check and edit your work, a colleague working on the same piece of code as you, or your lecturer marking your work, it will be read many more times than written down. This is why making your code look good and readable is very important. It also needs to be adaptable for different purposes. \n", + "\n", + "Following a specific style guide also ensures Python code is readable across different workplaces, industries, and countries, understand the format and layout of your code. It also means they can easily pick up from where you left off, adapting, improving, or developing your code.\n", "\n", - "PEP8 is a guidance for making your Python look good, allowing people across different workplaces, industries, and countries, understand the format and layout of your code. It focussses on readability, simplicity, adaptability, and consistency." + "For these reasons, it is highly recommended that you follow the PEP8 style guide as closely as possible. However, this is not always possible. PEP8 quotes the essayist Ralph Waldo Emerson: \"A foolish consistency is the hobgoblin of little minds\". In other words: Following the style guide is important, but you need to know when to be inconsistent and break the style guide - sometimes the style guide doesn't apply, and you need to use your best judgement in those cases. If applying the style guide makes your code less readable, you should break it. " + ] + }, + { + "cell_type": "markdown", + "id": "51c56c00", + "metadata": {}, + "source": [ + "## Variables" + ] + }, + { + "cell_type": "markdown", + "id": "03fe71b3", + "metadata": {}, + "source": [ + "In Python, there is no difference between `\"\"` and `''`. It does not matter which you use, but pick one and be consistent." ] }, { @@ -45,6 +84,18 @@ "## Indentation" ] }, + { + "cell_type": "markdown", + "id": "001f59ed", + "metadata": {}, + "source": [ + "The standard indent is one ``, which is equivalent to four spaces. \n", + "\n", + "It is possible to use a different number of spaces for your indent (some programs use a single space), and Python may even accept inconsistent indents in different parts of your code, however this is not recommended. If you must use a different number of spaces in your indent (for example for compatibility with an already written program), ensure it is consistently used throughout. \n", + "\n", + "Code within conditional statements, loops, functions, and `with` statements should be indented evenly. Once the indent is no longer respected, code does not occur within the statement, function, or loop." + ] + }, { "cell_type": "markdown", "id": "142f2d04", @@ -57,7 +108,150 @@ "cell_type": "markdown", "id": "75ea035f", "metadata": {}, - "source": [] + "source": [ + "All lines should be limited to a maximum of 79 characters. For docstrings or comments, limit the line length to 72 characters. This limits the required editor window width and makes it easier to have multiple files open side-by-side, as well as using review tools that present two versions of the code in adjacent columns (see lesson on [version control](./version_control.ipynb)).\n", + "\n", + "Continuation lines should be aligned wrapped vertically (lined up with similar objects), or using a hanging indent (wrapped to the start of the line, with an additional indent). Hanging indents should have no arguments on the on the first line, and additional indents should be used to distinguish it as a continuation line rather than the rest of the code. \n", + "\n", + "Wrapped vertically: \n", + "\n", + "```Python\n", + "answer = long_function_name(var_one, var_two,\n", + " var_three, var_four)\n", + "```\n", + "\n", + "Using hanging indents:\n", + "```Python\n", + "# An additional level of indent distinguishes arguments from function code\n", + "def long_function_name(\n", + " variable_one, variable_two, variable_three, \n", + " variable_four, variable_five):\n", + " \"\"\"Docstring\"\"\"\n", + " print(var_one)\n", + "\n", + "# Adding an additional level of indent helps distinguish condition from statement code\n", + "if (this_one_long_condition and\n", + " this_other_long_condition):\n", + " do_something()\n", + "\n", + "# Otherwise just add a level\n", + "answer = long_function_name(\n", + " variable_one, variable_two, variable_three, \n", + " variable_four, variable_five):\n", + "```\n", + "\n", + "It is acceptable to indent continuation lines to an indent other than four spaces (but if you do this, do it consistently!).\n", + "\n", + "When you have a very long list, dictionary, or array, you should wrap these as well. You may wrap items one to a line, or multiple to a line. The closing bracket/brace may end up under the first non-whitespace character of the last line of the list, or it may be lined up under the first character of the line that starts the multiline construct.\n", + "\n", + "```Python\n", + "# One item to a line\n", + "# Closing bracket lined up under first non-whitespace character\n", + "list_of_random_numbers = [\n", + " 0.8765321945,\n", + " 0.4561209876,\n", + " 0.9328456712,\n", + " 0.2754610298,\n", + " 0.7132098456,\n", + " 0.5737299874,\n", + " ]\n", + "\n", + "# Two items to a line\n", + "# Closing bracket under the first character of the list name\n", + "list_of_random_numbers = [\n", + " 0.8765321945, 0.4561209876,\n", + " 0.9328456712, 0.2754610298,\n", + " 0.7132098456, 0.5737299874,\n", + "]\n", + "```\n", + "\n", + "Notice that you may use a trailing comma at the end of the list. This makes it easy to write additional items." + ] + }, + { + "cell_type": "markdown", + "id": "2a02937b", + "metadata": {}, + "source": [ + "## Imports" + ] + }, + { + "cell_type": "markdown", + "id": "b58287a0", + "metadata": {}, + "source": [ + "Imports should be on separate lines. However, you may import multiple modules from the same library on one line. If is recommended to use absolute imports, and not paths such as `matplotlib.pyplot`.\n", + "\n", + "```Python\n", + "import math\n", + "from numpy import linalg, polynomial\n", + "\n", + "# Recommended\n", + "from matplotlib import pyplot as plt\n", + "\n", + "# Not recommended\n", + "import matplotlib.pyplot as plt\n", + "```\n", + "\n", + "Imports are always put at the top of the file, just under any comments about these imports. They should be imported in the following order: \n", + "1. Standard library imports\n", + "2. Related third party imports\n", + "3. Local application/library specific imports (such as a dictionary of the periodic table)\n", + "\n", + "Be careful with aliases. Where possible, use standard names. " + ] + }, + { + "cell_type": "markdown", + "id": "92e70919", + "metadata": {}, + "source": [ + "## Whitespace" + ] + }, + { + "cell_type": "markdown", + "id": "d058f8da", + "metadata": {}, + "source": [ + "Surround top-level functions with two blank lines. Extra blank lines may be used (sparingly) to separate groups of related functions. Use blank lines in functions, sparingly, to indicate logical sections. \n", + "\n", + "Surround logical sections (such as if statements and loops) with single blank lines. \n", + "\n", + "A single space should be added before and after operators (e.g. =, +, ==, !=, and, or, not, etc). Some auto-formatters will take `**` as an exception. For example: \n", + "\n", + "```Python\n", + "maths = 5 * 5 + 6 / 2 ** 3\n", + "if x == 5:\n", + "```\n", + "\n", + "An exception to this is keyword arguments and optional arguments, which have no space around the '='. \n", + "\n", + "```Python\n", + "def my_function(var_1, var_2=\"name\"):\n", + " print(var_1, var_2)\n", + "\n", + "my_function(var_1=42)\n", + "```\n", + "\n", + "Avoid extraneous whitespace in the following situations: \n", + "- Immediately inside brackets:\n", + " - Correct: `print(my_list[1], type(my_variable))`\n", + " - Wrong: `print( my_list[ 1 ] , type( my_variable ) )`\n", + "\n", + "- Between a trailing comma the the closing brackets:\n", + " - Correct: `list = [1,]`\n", + " - Wrong: `list = [1, ]`\n", + "\n", + "- Immediately before a comma, semicolon, or colon:\n", + " - Correct: `if x == 4:` or `[1, 2, 3]`\n", + " - Wrong: `if x == 4 :` or `[1 , 2 , 3]`\n", + "\n", + "- Immediately before the open bracket in a function:\n", + " - Correct: `my_function(10)`\n", + " - Wrong: `my_function (10)`" + ] }, { "cell_type": "markdown", @@ -72,58 +266,132 @@ "id": "604830e3", "metadata": {}, "source": [ - "- Inline comments\n", - "- Comments before describing what the piece of code does\n", - "- Grammar\n", - "- Block comments\n", - "- Doctstrings\n", + "Comments should be added to explain what is going on, and kept up-to-date when you make changes.\n", + "\n", + "Do not overstate the obvious, and comments that contradict the code are worse than no comments.\n", + "\n", + "```Python\n", + "# Bad comments\n", + "\n", + "# Time is 10\n", + "time = 10 \n", + "\n", + "# Add 5 seconds to time\n", + "time_difference = time - 5\n", + "```\n", + "\n", + "Comments should be complete sentences. The first word should be capitalised, unless it is an identifier that begins with a lower case letter (e.g. a variable name), which should never have their case changed. \n", + "\n", + "Ensure your comments are clear and easily identifiable to other speakers of the language you are writing in. Write in English unless your code will not be read by people who speak English.\n", + "\n", + "Block comments generally apply to some (or all) of the code that follows them, and are indented to the same level as that code. Each line of a block comment starts with a `#` and a single space.\n", + "\n", + "```Python\n", + "# A good block comment\n", + "if a == b:\n", + " # An indented block comment\n", + " var = a\n", + "```\n", + "\n", + "Inline comments appear on the same line as the code, and should be used sparingly. They should also start with `#` and a single space. They are unnecessary and distracting if they state the obvious. The best use in scientific programming is to state units. \n", "\n", - "Principles:\n", - "- Comments that contradict the code are worse than no comments\n", - "- Complete sentences. First word capitalised (unless it refers to an identifier, e.g. variable name). Space between # and start of comment. \n", - "- Clear and understandable to other speakers of the language\n", - "- Write in English unless you are certain it will never be read by speakers of any other language than its written in\n", + "```Python\n", + "# Good\n", + "radius = 1.3 # Angstroms\n", "\n", - "Different ways of writing them. \n", - "- NumPy vs other ways\n", - "- Extensions\n" + "# Bad\n", + "radius = radius - 0.1 # Decrease by 0.1\n", + "\n", + "# Good\n", + "radius = radius - 0.1 # Compensate for lone valence electron removal\n", + "```" ] }, { "cell_type": "markdown", - "id": "6dea0852", + "id": "f9c8a28e", "metadata": {}, "source": [ - "## Code order " + "## Docstrings" ] }, { "cell_type": "markdown", - "id": "5c7437c5", + "id": "64e74360", "metadata": {}, "source": [ - "1. Import modules, libraries, and functions\n", - "2. Declare functions\n", - "3. Declare constants\n", - "4. Declare variables\n", - "5. Write code" + "Docstrings are placed just inside a function and explain what the function does. At a minimum, it summarises the purpose of a function, but most docstrings also specify parameters, returns, and some even contain examples. You should write a docstring after every function that other people will see, and it is good practice to write them for functions that others won't see too. Docstrings are indicated using `\"\"\" \"\"\"`. \n", + "\n", + "One-line docstrings are used for very obvious cases. \n", + "\n", + "```Python\n", + "def my_function()\n", + " \"\"\"Print Hello.\"\"\"\n", + " print(\"Hello\")\n", + " return\n", + "```\n", + "\n", + "Note:\n", + "- Triple quotes are used even though the string fits on one line. This makes it easy to later expand it.\n", + "- The closing quotes are on the same line as the opening quotes. This looks better for one-liners.\n", + "- There’s no blank line either before or after the docstring.\n", + "- The docstring is a phrase ending in a period.\n", + "- The docstring prescribes the function description as a command. Always write `\"\"\"Calculate the mean\"\"\"` rather than `\"\"\"Calculates the mean\"\"\"`.\n", + "\n", + "Multi-line docstrings have no specific given format, however they should always include the following:\n", + "- A summary line, followed by a blank line, followed by a more elaborate description.\n", + "- Include explanation of all parameters and returns, including data type. \n", + "\n", + "A good style for docstrings is the [NumPy style](https://numpydoc.readthedocs.io/en/latest/format.html). This generally looks like this:\n", + "\n", + "```Python\n", + "def my_function(var_1, var_2, var_3=40, var_4=0.001):\n", + " \"\"\"\n", + " Perform a sum on radii of atoms in a given molecule.\n", + "\n", + " Parameters\n", + " ----------\n", + " var_1 : LIST\n", + " Radius values given in Angstroms.\n", + " All values as floating points.\n", + " var_2 : STR\n", + " Molecule name.\n", + " var_3 : INT\n", + " Conversion constant.\n", + " var_4 : FLOAT\n", + " Standard number.\n", + " \n", + " Returns\n", + " -------\n", + " var_5 : LIST\n", + " Converted radius values. \n", + " In Angstroms.\n", + " var_6 : STR or NONE\n", + " A value that depends on the input.\n", + " \"\"\"\n", + "```\n", + "\n", + "There are many other things you can add to a docstring, but this is the basics. \n" ] }, { "cell_type": "markdown", - "id": "92e70919", + "id": "6dea0852", "metadata": {}, "source": [ - "## Whitespace" + "## Code order " ] }, { "cell_type": "markdown", - "id": "d058f8da", + "id": "5c7437c5", "metadata": {}, "source": [ - "- After commas, semicolons, colons (and NOT before)\n", - "- Before and afer operators (=, +=, etc), except with kwargs\n" + "1. Import modules, libraries, and functions\n", + "2. Declare functions\n", + "3. Declare constants\n", + "4. Declare variables\n", + "5. Write code" ] }, { @@ -175,8 +443,16 @@ "id": "3972c683", "metadata": {}, "source": [ - "- Units\n", - "- " + "As we are doing scientific programming, there are some things you must remember.\n", + "\n", + "- Always include units. \n", + " - Be careful with capitalisation. \n", + " - Units following a number should have a space, e.g. `print(\"There are 25 dm of solvent.\")`\n", + " - Units comprised of multiple parts should have a space, e.g. `print(\"There are 25 mol dm^3 of solvent.\")`\n", + " - Use LaTeX to format units. \n", + " - Add units using inline comments in your code, and every time you print something.\n", + "\n", + "- Always add titles and axes labels to graphs." ] }, { @@ -188,13 +464,15 @@ ] }, { - "cell_type": "code", - "execution_count": null, - "id": "b17358e1", + "cell_type": "markdown", + "id": "bfb7f5d5", "metadata": {}, - "outputs": [], "source": [ - "import this" + "Python has an inbuilt easter egg, a poem of 20 aphorisms that succinctly channels the guiding principles of Python's design. \n", + "\n", + "Try running: \n", + "\n", + "`import this`" ] } ], From ec20d80f96472dab30ea980e04878c2c68bcd923 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Wed, 3 Sep 2025 15:40:38 +0100 Subject: [PATCH 70/94] moved file --- lessons/{ => solving_problems}/solving-problems.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lessons/{ => solving_problems}/solving-problems.md (100%) diff --git a/lessons/solving-problems.md b/lessons/solving_problems/solving-problems.md similarity index 100% rename from lessons/solving-problems.md rename to lessons/solving_problems/solving-problems.md From 5c4a5a30100950f0dba6f717ca91540c98cc7bc9 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Wed, 3 Sep 2025 15:42:24 +0100 Subject: [PATCH 71/94] Moved files --- lessons/{ => files}/files.md | 0 lessons/{ => loops_functions}/organising_code.md | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename lessons/{ => files}/files.md (100%) rename lessons/{ => loops_functions}/organising_code.md (100%) diff --git a/lessons/files.md b/lessons/files/files.md similarity index 100% rename from lessons/files.md rename to lessons/files/files.md diff --git a/lessons/organising_code.md b/lessons/loops_functions/organising_code.md similarity index 100% rename from lessons/organising_code.md rename to lessons/loops_functions/organising_code.md From ee54fbbb41e77ca2a0f17f6e05bd03134e876945 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Wed, 3 Sep 2025 15:42:36 +0100 Subject: [PATCH 72/94] redirected toc to moved files --- _toc.yml | 6 +++--- lessons/solving_problems/solving-problems.md | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/_toc.yml b/_toc.yml index c23401b..5a86656 100644 --- a/_toc.yml +++ b/_toc.yml @@ -16,19 +16,19 @@ parts: - file: lessons/variables/Variable_data_types.ipynb - file: lessons/variables/mathematical_operators.ipynb - file: lessons/variables/Comparisons.ipynb - - file: lessons/organising_code.md + - file: lessons/loops_functions/organising_code.md sections: - file: lessons/loops_functions/conditional_statements.ipynb - file: lessons/loops_functions/for_loops.ipynb - file: lessons/loops_functions/while_loops.ipynb - file: lessons/loops_functions/functions_and_scope.ipynb - file: lessons/loops_functions/tut_import_mod.ipynb - - file: lessons/files.md + - file: lessons/files/files.md sections: - file: lessons/files/files_file_types.ipynb - file: lessons/files/reading_files.ipynb - file: lessons/files/writing_files.ipynb - - file: lessons/solving-problems.md + - file: lessons/solving_problems/solving-problems.md sections: - file: lessons/solving_problems/errors.ipynb - file: lessons/solving_problems/debugging.ipynb diff --git a/lessons/solving_problems/solving-problems.md b/lessons/solving_problems/solving-problems.md index 3e48c76..1d1b0e3 100644 --- a/lessons/solving_problems/solving-problems.md +++ b/lessons/solving_problems/solving-problems.md @@ -1,6 +1,6 @@ -# Approaching Problems +# Approaching Coding Problems -How to approach a problem, how to debug, and how to represent your problem/program. +In this section there is some guidance on how to approach a coding problem, how to debug your code and how to represent your problem/program in a descriptive manner. -## As well as a style guide +There is also a worked example of how to go from a question and blank file to a working programme From 7eb8456fffc62959b8ac3d47c23378304ae8840d Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Wed, 3 Sep 2025 15:55:54 +0100 Subject: [PATCH 73/94] Merging errors and debugging lessons --- _toc.yml | 2 +- .../{errors.ipynb => errors_and_debug.ipynb} | 112 ++++++++++-------- 2 files changed, 66 insertions(+), 48 deletions(-) rename lessons/solving_problems/{errors.ipynb => errors_and_debug.ipynb} (57%) diff --git a/_toc.yml b/_toc.yml index 5a86656..36aff01 100644 --- a/_toc.yml +++ b/_toc.yml @@ -30,7 +30,7 @@ parts: - file: lessons/files/writing_files.ipynb - file: lessons/solving_problems/solving-problems.md sections: - - file: lessons/solving_problems/errors.ipynb + - file: lessons/solving_problems/errors_and_debug.ipynb - file: lessons/solving_problems/debugging.ipynb - file: lessons/solving_problems/writing_a_program.ipynb - file: lessons/solving_problems/version_control.ipynb diff --git a/lessons/solving_problems/errors.ipynb b/lessons/solving_problems/errors_and_debug.ipynb similarity index 57% rename from lessons/solving_problems/errors.ipynb rename to lessons/solving_problems/errors_and_debug.ipynb index 79b6a05..2d74ff3 100644 --- a/lessons/solving_problems/errors.ipynb +++ b/lessons/solving_problems/errors_and_debug.ipynb @@ -5,17 +5,19 @@ "id": "4807e838", "metadata": {}, "source": [ - "# Errors\n", + "# Programming Errors and Debugging\n", "\n", - "A lesson on errors and error types." + "A lesson on errors in your code and how to use debugging methods to find and fix them." ] }, { "cell_type": "markdown", - "id": "c8883803", + "id": "53bf7456", "metadata": {}, "source": [ - "## Typos" + "## Errors\n", + "\n", + "Errors come in a variety of types, some easy to find and fix some more insiduous" ] }, { @@ -23,6 +25,9 @@ "id": "f2aafb76", "metadata": {}, "source": [ + "
      \n", + "Typos\n", + "\n", "Perhaps the most common errors, where the user mistypes the code they are writing. Can be subtle, remember that Python is case-sensitive. So it is easy to type the wrong variable name with different capitalisation. To minimise typos, try autocompleting your words using the `` key.\n", "\n", "This can be controlled by having **meaningful** variable names that aren't to long\n", @@ -36,7 +41,9 @@ "#Will do a calculation on my_Value\n", "my_Value = my_Value * 50 + 2\n", "#now print my result\n", - "print(my_value)" + "print(my_value)\n", + "\n", + "

      " ] }, { @@ -45,29 +52,16 @@ "id": "eed815ba", "metadata": {}, "outputs": [], - "source": [ - "my_Value = 5\n", - "my_value = 90\n", - "\n", - "#Will do a calculation on my_Value\n", - "my_Value = my_Value * 50 + 2\n", - "#now print my result\n", - "print(my_Value)" - ] - }, - { - "cell_type": "markdown", - "id": "f59bd9fb", - "metadata": {}, - "source": [ - "## Syntax errors" - ] + "source": [] }, { "cell_type": "markdown", "id": "52649529", "metadata": {}, "source": [ + "
      \n", + "Syntax errors\n", + "\n", "These are generally the easiest errors to spot. When the code runs the compiler tends to pick up these errors and inform the user. Try putting the following in the box below \n", "```python\n", " i = 0\n", @@ -94,22 +88,27 @@ "my_Value = my_Value * 50 + 2\n", "#now print my result\n", "print(my_alue)\n", - "```\n" + "```\n", + "\n", + "

      " ] }, { - "cell_type": "markdown", - "id": "70f6d53d", + "cell_type": "code", + "execution_count": null, + "id": "e7e26c11", "metadata": {}, - "source": [ - "## Logic errors" - ] + "outputs": [], + "source": [] }, { "cell_type": "markdown", "id": "102cbf2a", "metadata": {}, "source": [ + "
      \n", + "Logic errors\n", + "\n", "These are the most insidious errors and by far the hardest to find. The code will be correct in terms of syntax and will work as written. However the code won't run as intended. Common places to find this type of error are in conditional statements.\n", "\n", "Example:\n", @@ -129,33 +128,52 @@ "```\n", "But this will never trigger the important condition. We check if the value is less than 10, if it is no other checks are peformed. Therefore we will never check if it is 5.\n", "\n", - "This is correct Python, we have just broken the logic!" + "This is correct Python, we have just broken the logic!\n", + "\n", + "

      " ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "18623da7", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Less than 10\n", - "This is really important and needs recording\n" - ] - } - ], + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "2e7d39a9", + "metadata": {}, "source": [ - "import_test = 5\n", + "## Debugging\n", "\n", - "if import_test <10:\n", - " print(\"Less than 10\")\n", - "if import_test == 5:\n", - " print(\"This is really important and needs recording\")\n", - "else:\n", - " print(\"Over 10\")" + "Now we have an understanding of what errors can arise we can look at how to find them in the code and how to fix them\n", + "Debugging can be done in a variety of ways depending on how you have set up your python installation. If you are just writing your scripts in a text editor and running when done then these following methods can be used\n", + "\n", + "
      \n", + "Simple Debugging\n", + "\n", + "* Add *print* statements. When constructing your code add print statements to check that you are getting the values you expect at each step. If you want to see if a condition is being met, add print statements into a condition which says that it has been met. This can lead to an overwhelming amount of outputs\n", + "\n", + "* If there are calculations, do simple examples by hand and then run those examples through your programme. Make sure you get the same answer. If not go look carefully at your code\n", + "\n", + "* When writing loops, make sure the code works for a single loop then check it works for 2 etc... build up.\n", + "\n", + "

      \n", + "\n", + "However, if you use an Integrated Development Environment (IDE) or similar tools. Then as well as the simple methods they will have built in methods that can help track through code for errors, such as break points and linting.\n", + "We will give examples of how to debug using VScode or Spyder, other IDEs will have similar methods available\n", + "\n", + "
      \n", + "Advanced Debugging - VScode\n", + "\n", + "

      \n", + "\n", + "
      \n", + "Advanced Debugging - Spyder\n", + " TO DO\n", + "

      " ] } ], From 0ecd78fd1ce71deb36dd501264ea188ace20e15a Mon Sep 17 00:00:00 2001 From: Miguel Rivera Date: Wed, 3 Sep 2025 16:56:56 +0100 Subject: [PATCH 74/94] Add initial lessons --- lessons/variables/Variable_data_types.ipynb | 355 ++++++++++---------- lessons/variables/lists_and_indexing.ipynb | 166 +++++++++ 2 files changed, 348 insertions(+), 173 deletions(-) create mode 100644 lessons/variables/lists_and_indexing.ipynb diff --git a/lessons/variables/Variable_data_types.ipynb b/lessons/variables/Variable_data_types.ipynb index 0865bd6..0459a2c 100644 --- a/lessons/variables/Variable_data_types.ipynb +++ b/lessons/variables/Variable_data_types.ipynb @@ -42,251 +42,261 @@ "source": [ "## What is a variable?\n", "\n", - "A variable is a place where some information can be held in the code, and can be used in many different ways within a programme." + "A variable is a place where some information can be held in the code and can be used in many different ways within a programme. You can create a variable like this:" ] }, { - "cell_type": "markdown", - "metadata": { - "id": "pNvKKeprCw5V" - }, + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ - "## Print Function\n", - "\n", - "Python can specified message using the print function. This is one of the main ways you will output information." + "atomic_number = 2" ] }, { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "VQe62zJIDd2s" - }, - "outputs": [], + "cell_type": "markdown", + "metadata": {}, "source": [ - "message = \"we love chemistry\"\n", - "print(message)" + "where the word on the left of the `=` sign is the _name_ of the variable and whatever is on the right is its _value_." ] }, { "cell_type": "markdown", "metadata": { - "id": "6K3DweS-SJkH" + "id": "pNvKKeprCw5V" }, "source": [ - "You can use the print function to print answers to calculations. Remember to use brackets for more complex calculations." + "## Print Function\n", + "\n", + "To reveal the value stored in a variable, you can use the `print()` function. For example:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "id": "mIQZr9GdSSzy" + "id": "VQe62zJIDd2s" }, "outputs": [], "source": [ - "print(54*145)" + "atomic_number = 2\n", + "print(atomic_number)" ] }, { "cell_type": "markdown", "metadata": { - "id": "E7oo-rhqLU4O" + "id": "6K3DweS-SJkH" }, "source": [ - "## Type Function\n", - "\n", - "This is a built-in function that is used to return the type of data stored in the objects or variables in the program. For example, if a variable contains a value of 45.5 then the type of that variable is float.\n", - "\n", - "This is useful as when you have multiple data a variable types you check that they are functioning in the correct way." + "Try changing the value of `atomic_number` to 3 and print the new value." ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "id": "e1jc0uR_LXLE" + "id": "mIQZr9GdSSzy" }, "outputs": [], "source": [ - "number = 45.5\n", - "print(type(number))" + "atomic_number = 3\n", + "print(atomic_number)" ] }, { "cell_type": "markdown", - "metadata": { - "id": "0LF3cDZLBe82" - }, + "metadata": {}, "source": [ "## Naming of variables\n", "\n", - "There are few strict conventions with the naming of variables, and Python can be incredibly tolerant in this regard. However, for the ease of legibility of code, and minimise mistakes caused by referring to the wrong variable, it is sensible to try and use a clear and consistent approach to variable naming.\n", + "There are few rules you must follow when naming a variable.\n", "\n", "### Variable name requirements\n", "\n", - "\n", "* Variables can only start with a letter or underscore (_) character and may not start with a number.\n", - "* Can only include upper and lowercase letters, numbers and the underscore character (A-z, 0-9, and _ )\n", - "* Names must not be a [Python keyword](https://docs.python.org/3/reference/lexical_analysis.html#keywords)\n", - "\n", - "### Choosing variable names\n", - "Short, descriptive names are generally a good choice, as variables will often need to be entered in multiple places in code. Names can consist of multiple words, but cannot use spaces. Commonly 'camelCase' is used with variable naming, where a multiple word variable name is closed together (ie the spaces are removed), and the initial letter of each word being capitalised (excluding the first word).\n", + "* Can only include upper and lowercase letters, numbers and the underscore character (A-z, 0-9, and _ ).\n", + "* Names must not be a [Python keyword](https://docs.python.org/3/reference/lexical_analysis.html#keywords).\n", "\n", - "Examples might include:\n", + "You do not need to memorise all Python keywords. Any good code editor should highlight keywords in a different colour to your regular variables, thereby alerting you of potential conflicts.\n", "\n", + "### Good variable naming\n", "\n", - "* elementMass\n", - "* elementAtomicNumber\n", + "Choosing the right variable name will allow your code to be easier to understand for you and future programmers interacting with your code. Good names increase clarity, therefore they should be:\n", "\n", + "#### Descriptive\n", + "The name gives a hint about what the value means.\n", "\n", + "| Bad example | Good example |\n", + "|---------------|--------------------|\n", + "| `number = 12` | `atomic_mass = 12` |\n", "\n", + "#### Short\n", + "The name is brief without compromising clarity.\n", "\n", + "| Bad example | Good example |\n", + "|--------------------------------------------|-----------------------|\n", + "| `molecular_mass_of_protium_oxide = 18.015` | `water_mass = 18.015` |\n", "\n", + "Note that if your programme distinguishes between different kinds of masses or between light and heavy water, the former choice could be the correct one.\n", "\n", + "#### Consistent\n", + "The name follows a convention to avoid multiple spellings of one same thing. The preferred convention for variable names in Python is called `snake_case`, where all letters are lower-case and words can be separated by underscore characters (`_`).\n", "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "VPhG17aLAcBb" - }, - "source": [ - "## Types of variables\n", - "Some of the common variable types are outlined below. For each type of variable, there is a code snippet which shows how the variable is set, the variable is printed, and the type of variable is printed." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "PwADJGso9G7-" - }, - "source": [ - "### Strings\n", + "| Bad example | Good example |\n", + "|----------------------------|-----------------------------|\n", + "| `roomTemperature = 298.15` | `room_temperature = 298.15` |\n", "\n", - "These store a sequence of characters. You signify what characters are stored by writing quotation marks either side of the characters. These can be double or single quotation marks, as long as they are consistent - it will still work either way." + "Sometimes, descriptiveness, shortness, and consistency come into conflict, and it is up to you to decide which one should win out for the best clarity. As an exercise, think of a good variable name for the molecular mass of the last molecule you synthesised. For example:" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "id": "ObD5OOJswqse" - }, + "metadata": {}, "outputs": [], "source": [ - "subject = \"Chemistry\"\n", - "print(subject)\n", - "print(type(subject))" + "C9H8O_mass = 132.16" ] }, { "cell_type": "markdown", - "metadata": { - "id": "j2LOZu_qAnti" - }, + "metadata": {}, "source": [ - "### Numbers" + "Can you tell what naming rule is broken here?" ] }, { "cell_type": "markdown", "metadata": { - "id": "5Zzn3B9OAq1d" + "id": "E7oo-rhqLU4O" }, "source": [ - "#### Integer\n", + "## Types\n", + "\n", + "Variables are classified in terms of their _type_. This is an indicator of the kind of value stored inside, such as a number or a word.\n", "\n", - "This is any whole number, e.g. 5. If your variable type is an integer you will see the class output will be displayed as 'int'." + "We can check the type of the variable `atomic_number` like this:" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { - "id": "FV_SqZ4N3edG" + "id": "e1jc0uR_LXLE" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], "source": [ - "number = 5\n", - "print(number)\n", - "print(type(number))" + "atomic_number = 2\n", + "print(type(atomic_number))" ] }, { "cell_type": "markdown", - "metadata": { - "id": "tmlYe2PTAzCN" - }, + "metadata": {}, "source": [ - "#### Float\n", + "This code prints out the result: ``. The important part of this line is the word `'int'`. As we will see next, this stands for _integer_, which is the type of `2`.\n", + "\n", + "Here is a summary of the most common variable types:\n", "\n", - "This is any number where you have a decimal place. If your variable type is a float, you will see the class output will be displayed at 'float'." + "| Name | Abbreviation | Example | Explanation |\n", + "|---------|--------------|----------|-------------------------------|\n", + "| Integer | `int` | `3` | A whole number |\n", + "| Float | `float` | `3.14` | A number with a decimal point |\n", + "| Boolean | `bool` | `True` | Either `True` or `False` |\n", + "| String | `str` | `\"acid\"` | Any kind of text |\n", + "\n", + "What follows is an explanation for each one. For each type, there is a code snippet which shows how the variable is assigned, the variable is printed, and the type of variable is printed." ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": { - "id": "axf-MWdz4V03" + "id": "j2LOZu_qAnti" }, - "outputs": [], "source": [ - "number = 5.3\n", - "print(number)\n", - "print(type(number))" + "### Numbers" ] }, { "cell_type": "markdown", "metadata": { - "id": "xuiU47q1A3qV" + "id": "5Zzn3B9OAq1d" }, "source": [ - "#### Standard form\n", + "#### Integer\n", "\n", - "When writing standard form, as is the case for Avogadro's constant you would use the letter `e` to show that the number is multipled by 10 to the power of 23." + "An integer (`int`) is any whole number. Integers can also be negative." ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "id": "SF6MngZc5LTw" + "id": "FV_SqZ4N3edG" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-5\n", + "\n" + ] + } + ], "source": [ - "avogadro = 6.023e23\n", - "print(avogadro)\n", - "print(type(avogadro))" + "ionic_charge = -2\n", + "print(ionic_charge)\n", + "print(type(ionic_charge))" ] }, { "cell_type": "markdown", "metadata": { - "id": "aWRMOW5M7b2D" + "id": "tmlYe2PTAzCN" }, "source": [ - "#### Complex Numbers\n", - "\n", - "You may not use complex numbers when you first start out on your chemistry course, but you will come across them later in maths and potentially when you study crystallography, quantum mechanics and other areas of science.\n", + "#### Float\n", "\n", - "When using complex numbers in python, you cannot use $i$ for imaginary numbers, you must use $j$ instead. In the example below we have the complex number $3+3i$, which is written as $3+3j$ in the code." + "A float (`float`) is any number where you have a decimal place. For very big or very small numbers, you can use scientific notation to write floats. For example, for Avogadro's number, you can write `6.023e23`." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": { - "id": "v6df_hB45r-3" + "id": "axf-MWdz4V03" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "14.0067\n", + "\n", + "1.602e-19\n", + "\n" + ] + } + ], "source": [ - "complexNumber=(3+3j)\n", - "print(complexNumber)\n", - "print(type(complexNumber))" + "nitrogen_mass = 14.0067\n", + "print(nitrogen_mass)\n", + "print(type(nitrogen_mass))\n", + "\n", + "electron_charge = 1.602e-19\n", + "print(electron_charge)\n", + "print(type(electron_charge))" ] }, { @@ -297,7 +307,7 @@ "source": [ "#### Boolean\n", "\n", - "Boolean variables are the simplest type of variable - they can be equal to either `True` or `False`, and nothing else." + "Boolean (`bool`) can only have the value `True` or `False`." ] }, { @@ -306,104 +316,97 @@ "metadata": { "id": "gkuDEMKq4csJ" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n", + "\n" + ] + } + ], "source": [ - "Answer = True\n", - "print(Answer)\n", - "print(type(Answer))" + "boiling = True\n", + "print(boiling)\n", + "print(type(boiling))" ] }, { "cell_type": "markdown", "metadata": { - "id": "HFWW4cO9BlLI" + "id": "PwADJGso9G7-" }, "source": [ - "#### Lists\n", + "### Strings\n", "\n", - "Lists are collections of variables, separated by commas. These variables do not have to be of the same type." + "A string (`str`) stores a sequence of text characters. They can be used to write words or sentences. You signify what characters are stored by writing quotation marks either side of the characters, like `'this'` or `\"this\"`." ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "id": "3C66kNgC4sQf" + "id": "ObD5OOJswqse" }, - "outputs": [], - "source": [ - "elements = ['H', 'He', 'Li']\n", - "print(elements)\n", - "print(type(elements))" + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Chemistry\n", + "\n" + ] + } + ], + "source": [ + "molecule_name = \"acetaldehyde\"\n", + "print(subject)\n", + "print(type(subject))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Individual entries within a list can be accessed by writing the variable name, followed by the index of the entry within the list inside square brackets. Note that Python starts counting at 0, not 1, so the first entry in a list has index 0." + "There is another way of writing strings which allows you to combine them with other variables of any type. We call this an _f-string_. Before the quotation mark, include the letter `f`, then within the string, you can include other variables enclosed in curly brackets `{}`." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The atomic mass of nitrogen is 14.0067.\n", + "Heavier than carbon: True.\n" + ] + } + ], "source": [ - "print(elements[0])\n", - "print(elements[2])" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "98-HGTmIBoSl" - }, - "source": [ - "#### Dictionaries\n", + "atomic_mass = 14.0067\n", + "element_name = \"nitrogen\"\n", + "heavier = True\n", "\n", - "Dictionaries are similar to lists, in that they are a collection of information. However, instead of using numbers to index each entry in a dictionary, we use \"keys\" instead, which are usually strings. In the example below the names of the elements are the keys. Using dictionaries usually leads to more human readable code." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "lAOQrm4LE24D" - }, - "outputs": [], - "source": [ - "ram = {\n", - " \"Hydrogen\": 1.008,\n", - " \"Helium\": 4.002602,\n", - " \"Lithium\": 6.941\n", - "}\n", - "\n", - "print(ram)\n", - "print(ram['Hydrogen'])" + "result_string = f\"The atomic mass of {element_name} is {atomic_mass}.\\nHeavier than carbon: {heavier}.\"\n", + "print(result_string)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "**Exercise** Can you work out what the data dictionary below is describing?" + "The previous f-string used an additional trick. Including `\\n` in a string indicates a line-break." ] }, { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "EbJjHF7fD0Ea" - }, - "outputs": [], + "cell_type": "markdown", + "metadata": {}, "source": [ - "data = {\n", - "'H' : [(1.007825, 99.9885),(2.014102, 0.0115)],\n", - "'C' : [ (12.0, 98.93),(13.003355, 1.07)],\n", - "'N' : [(14.003074, 99.632),(15.000109, 0.368)],\n", - "'O' : [(15.994915 , 99.757),(16.999132, 0.038),(17.999160,0.205)]\n", - "}" + "## Exercise " ] }, { @@ -416,7 +419,9 @@ "\n", "Add in an introduction to f-strings.\n", "\n", - "Add in some more worked examples\n" + "Add in some more worked examples\n", + "\n", + "Make a separate lesson for lists and dictionaries" ] }, { @@ -455,7 +460,11 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", +<<<<<<< HEAD + "version": "3.9.18" +======= "version": "3.12.9" +>>>>>>> 7eb8456fffc62959b8ac3d47c23378304ae8840d } }, "nbformat": 4, diff --git a/lessons/variables/lists_and_indexing.ipynb b/lessons/variables/lists_and_indexing.ipynb new file mode 100644 index 0000000..750c0f1 --- /dev/null +++ b/lessons/variables/lists_and_indexing.ipynb @@ -0,0 +1,166 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "VqjrEzS2z1Ol" + }, + "source": [ + "# Lists\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_iRikrUPUjs3" + }, + "source": [ + "## Learning Outcomes\n", + "\n", + "* Understand what lists and dictionaries are\n", + "* Generate them\n", + "* Extract information from them\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Kup00O1iVHOG" + }, + "source": [ + "## Prerequisites\n", + "\n", + "You should be able to:\n", + "- Run a Python notebook\n", + "- Be familiar with the concept of data types" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HFWW4cO9BlLI" + }, + "source": [ + "#### Lists\n", + "\n", + "A list (`list`) is a collection of any number of values. To declare a list, write different values in between square brackets `[]` and separated by commas." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "3C66kNgC4sQf" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['H', 'He', 'Li']\n", + "\n" + ] + } + ], + "source": [ + "elements = ['H', 'He', 'Li']\n", + "print(elements)\n", + "print(type(elements))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "98-HGTmIBoSl" + }, + "source": [ + "#### Dictionaries\n", + "\n", + "A dictionary (`dict`) also contains multiple values, like a list. However, a dictionary always contains entries in the form of pairs. The first part of the pair is called the \"key\", and represents the known value (like a word in a real dictionary). The second part is the \"value\" and represents the unknown value (like the definition). To declare a dictionary, write pairs of \"keys\" and \"values\" in between curly braces `{}` like this: `{key_1: value_1, key_2: value_2}`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "lAOQrm4LE24D" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'Hydrogen': 1.008, 'Helium': 4.002602, 'Lithium': 6.941}\n", + "1.008\n", + "\n" + ] + } + ], + "source": [ + "atomic_weights = {\n", + " \"Hydrogen\": 1.008,\n", + " \"Helium\": 4.002602,\n", + " \"Lithium\": 6.941\n", + "}\n", + "\n", + "print(atomic_weights)\n", + "print(type(atomic_weights))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise** Can you work out what the data dictionary below is describing?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "EbJjHF7fD0Ea" + }, + "outputs": [], + "source": [ + "data = {\n", + "'H' : [(1.007825, 99.9885),(2.014102, 0.0115)],\n", + "'C' : [ (12.0, 98.93),(13.003355, 1.07)],\n", + "'N' : [(14.003074, 99.632),(15.000109, 0.368)],\n", + "'O' : [(15.994915 , 99.757),(16.999132, 0.038),(17.999160,0.205)]\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 70555726e6b06a2c7dbe0e777a16b10e49ba985b Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Thu, 4 Sep 2025 08:51:02 +0100 Subject: [PATCH 75/94] remove debug from toc --- _toc.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/_toc.yml b/_toc.yml index 36aff01..1100edb 100644 --- a/_toc.yml +++ b/_toc.yml @@ -31,7 +31,6 @@ parts: - file: lessons/solving_problems/solving-problems.md sections: - file: lessons/solving_problems/errors_and_debug.ipynb - - file: lessons/solving_problems/debugging.ipynb - file: lessons/solving_problems/writing_a_program.ipynb - file: lessons/solving_problems/version_control.ipynb - file: lessons/solving_problems/command_line.ipynb From c8e1cecde8e5bb06f92a268e1e20bf63619bc396 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Thu, 4 Sep 2025 11:38:52 +0100 Subject: [PATCH 76/94] Debugging example with vscode --- .../solving_problems/errors_and_debug.ipynb | 55 ++++++++++++++++-- .../images/code_debug_icon.png | Bin 0 -> 3388 bytes .../solving_problems/images/code_error.png | Bin 0 -> 85405 bytes .../images/code_error_explain.png | Bin 0 -> 8925 bytes .../images/code_extensions_icon.png | Bin 0 -> 3366 bytes .../images/code_file_open.png | Bin 0 -> 84560 bytes lessons/solving_problems/images/code_icon.png | Bin 0 -> 3064 bytes .../solving_problems/images/code_start.png | Bin 0 -> 39648 bytes .../solving_problems/images/code_terminal.png | Bin 0 -> 14813 bytes 9 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 lessons/solving_problems/images/code_debug_icon.png create mode 100644 lessons/solving_problems/images/code_error.png create mode 100644 lessons/solving_problems/images/code_error_explain.png create mode 100644 lessons/solving_problems/images/code_extensions_icon.png create mode 100644 lessons/solving_problems/images/code_file_open.png create mode 100644 lessons/solving_problems/images/code_icon.png create mode 100644 lessons/solving_problems/images/code_start.png create mode 100644 lessons/solving_problems/images/code_terminal.png diff --git a/lessons/solving_problems/errors_and_debug.ipynb b/lessons/solving_problems/errors_and_debug.ipynb index 2d74ff3..93308dd 100644 --- a/lessons/solving_problems/errors_and_debug.ipynb +++ b/lessons/solving_problems/errors_and_debug.ipynb @@ -42,7 +42,7 @@ "my_Value = my_Value * 50 + 2\n", "#now print my result\n", "print(my_value)\n", - "\n", + "```\n", "

      " ] }, @@ -115,7 +115,7 @@ "\n", "Imagine we are checking values, if they are less than 10 we want to do something to them that is different to if they are over 10. However, what if we also want something to happen when the value is 5?\n", "\n", - "We might right the following code\n", + "We might write the following code\n", "```python\n", "import_test = 5\n", "\n", @@ -130,6 +130,16 @@ "\n", "This is correct Python, we have just broken the logic!\n", "\n", + "Or other common errors are fogetting about the rules for priority of operators in Python, so a calculation is performed that isn't what you meant:\n", + "\n", + "```python\n", + "\n", + "value = 5 * 3 - 2 * 6\n", + "```\n", + "This gives an answer of 3, which might be right if you meant the equation to be\n", + "$ (5 \\times 3) - (2 \\times 6)$, but not if you meant $ 5 \\times (3 - 2) \\times 6 $\n", + "\n", + "Use brackets in your code to remove any ambiguity, don't rely on priority\n", "

      " ] }, @@ -156,17 +166,50 @@ "\n", "* Add *print* statements. When constructing your code add print statements to check that you are getting the values you expect at each step. If you want to see if a condition is being met, add print statements into a condition which says that it has been met. This can lead to an overwhelming amount of outputs\n", "\n", - "* If there are calculations, do simple examples by hand and then run those examples through your programme. Make sure you get the same answer. If not go look carefully at your code\n", + "* *Testing*, make sure the bits of code produce the answer ou expect. If there are calculations, do simple examples by hand and then run those examples through your programme. Make sure you get the same answer. If not go look carefully at your code\n", "\n", - "* When writing loops, make sure the code works for a single loop then check it works for 2 etc... build up.\n", + "* When writing loops, make sure the code works for a single loop then check it works for 2 etc... build up your complexity.\n", "\n", "

      \n", - "\n", "However, if you use an Integrated Development Environment (IDE) or similar tools. Then as well as the simple methods they will have built in methods that can help track through code for errors, such as break points and linting.\n", "We will give examples of how to debug using VScode or Spyder, other IDEs will have similar methods available\n", "\n", + "\n", "
      \n", "Advanced Debugging - VScode\n", + "VScode has extensive Python debugging abilities.[ If you are using VScode](/lessons/basics/write_run_python.md#installation) you should have the Python extension already installed. If not install it by going to the extensions tab. Which is this icon on the left \n", + "\n", + "![An image of 3 icons, one play image with bug in front, second a set of four squares with one rotated with a red circle around it. The third is a monitor](images/code_extensions_icon.png) \n", + "\n", + "Search here for Python and install the [Microsoft Python extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python). This will give us what we need to get started working with Python in VScode effectively.\n", + "\n", + "To get the most out of VScode it is best to open what is called a *workspace*. This sounds complicated but just means opening the folder that contains your script file. How to create a workspace and a rationale behind it are [here](https://code.visualstudio.com/docs/editing/workspaces/workspaces). They are a common concept found in other IDEs, they are very useful.\n", + "Here is an example workspace opened in VScode:\n", + "![An image of VScode screen, largely blank it has 2 columns visible, one small with some icons. The other is large and empty](images/code_start.png)\n", + "\n", + "Currently it is rather sparse a nothing is opened. But we can see the main features, which includes saying that there is a file *debug_example_1.py* in the workspace. We can open this file by clicking on it.\n", + "\n", + "![An image of VScode screen, it has 2 columns visible, one small with some icons. The other is large and now has Python code visible from the loaded file](images/code_file_open.png)\n", + "The code is now visible, as is also information on the code layout in the outline table on the left. Here the structure of the code is broken down into its functional chunks.\n", + "Notice that the code has been coloured to indicate the [syntax](), i.e what is a variable or a function.\n", + "\n", + "This code will run, but let's make an intentional error. On line 5 of the code (*note that the lines are numbered in the code window to aid navigation*) we will remove the second \". This is a breaking change.\n", + "\n", + "![An image of VScode screen, it has 2 columns visible, one small with some icons. The other is large and now has Python code visible from the loaded file. The code on line 5 is underlined in red](images/code_error.png)\n", + "\n", + "Notice that the line with the broken code is now underlined in red, indicating the error. If I hover the mouse over the error a pop up will explain the error.\n", + "\n", + "![An image of the VScode pop up saying \"String Literal is unterminated\"](images/code_error_explain.png)\n", + "\n", + "I can now fix this error by terminating the string literal, i.e putting the \" back in place.\n", + "\n", + "How do we run the code to test. The first way is to run it in an integrated terminal. Got to the terminal menu and choose *New Terminal*. A new terminal will open in the bottom of the window. We can then run our programme by typing the following command:\n", + "\n", + "```bash\n", + "python debug_example_1.py\n", + "```\n", + "and the output is then written to screen\n", + "![Image of a terminal prompt where the command \"python debug_example_1.py\" has been executed the output of 720.66 is shown](images/code_terminal.png)\n", "\n", "

      \n", "\n", @@ -193,7 +236,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.3" + "version": "3.12.9" } }, "nbformat": 4, diff --git a/lessons/solving_problems/images/code_debug_icon.png b/lessons/solving_problems/images/code_debug_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b37aa68c80f5de632023c11c827b59a6a926a16d GIT binary patch literal 3388 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 literal 0 HcmV?d00001 diff --git a/lessons/solving_problems/images/code_error.png b/lessons/solving_problems/images/code_error.png new file mode 100644 index 0000000000000000000000000000000000000000..93fcb5a3d55748067911964f781ce65a2d87b3ca GIT binary patch literal 85405 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 LvLnGE`1bz+nbrk} literal 0 HcmV?d00001 diff --git a/lessons/solving_problems/images/code_error_explain.png b/lessons/solving_problems/images/code_error_explain.png new file mode 100644 index 0000000000000000000000000000000000000000..a5bb9d713651a6bcc27d9235bbfc9fd570627871 GIT binary patch literal 8925 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 literal 0 HcmV?d00001 diff --git a/lessons/solving_problems/images/code_extensions_icon.png b/lessons/solving_problems/images/code_extensions_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cf648a1827621af55860b39fb0589c457fa5b444 GIT binary patch literal 3366 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 bFu$1VUP|Ne@)fHGKP&p$IIX7|SFZmXu1z%j literal 0 HcmV?d00001 diff --git a/lessons/solving_problems/images/code_file_open.png b/lessons/solving_problems/images/code_file_open.png new file mode 100644 index 0000000000000000000000000000000000000000..5ee3613fc88b54ccf55c9b12323343a2bdeca724 GIT binary patch literal 84560 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 b$rbIJ0e_W(H5IY<%zY~}n_D$E@BRKi$#r%C literal 0 HcmV?d00001 diff --git a/lessons/solving_problems/images/code_icon.png b/lessons/solving_problems/images/code_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..58fc64a1147548406788394be8990f1c88de5a6c GIT binary patch literal 3064 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

      >5d^rp)&jnXQ+01ulPY& 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 Xu1J<_yG@@5|5@y@`mNwsmp}dsI$wg` literal 0 HcmV?d00001 diff --git a/lessons/solving_problems/images/code_terminal.png b/lessons/solving_problems/images/code_terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..34933997c0e5198bf4b277e80b95e4914101354a GIT binary patch literal 14813 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 c$R;q12xDO;f_k9HKX)vp#N Date: Thu, 4 Sep 2025 12:09:20 +0100 Subject: [PATCH 77/94] Finished debugging with vscode --- .../solving_problems/errors_and_debug.ipynb | 56 +++++++++++++++++- .../solving_problems/images/code_break1.png | Bin 0 -> 5240 bytes .../images/code_debug_controls.png | Bin 0 -> 2664 bytes .../images/code_debug_variables.png | Bin 0 -> 17413 bytes .../images/code_select_debugger.png | Bin 0 -> 12316 bytes .../images/code_start_debug.png | Bin 0 -> 152839 bytes lessons/variables/Variable_data_types.ipynb | 5 +- 7 files changed, 56 insertions(+), 5 deletions(-) create mode 100644 lessons/solving_problems/images/code_break1.png create mode 100644 lessons/solving_problems/images/code_debug_controls.png create mode 100644 lessons/solving_problems/images/code_debug_variables.png create mode 100644 lessons/solving_problems/images/code_select_debugger.png create mode 100644 lessons/solving_problems/images/code_start_debug.png diff --git a/lessons/solving_problems/errors_and_debug.ipynb b/lessons/solving_problems/errors_and_debug.ipynb index 93308dd..616a89b 100644 --- a/lessons/solving_problems/errors_and_debug.ipynb +++ b/lessons/solving_problems/errors_and_debug.ipynb @@ -187,7 +187,7 @@ "Here is an example workspace opened in VScode:\n", "![An image of VScode screen, largely blank it has 2 columns visible, one small with some icons. The other is large and empty](images/code_start.png)\n", "\n", - "Currently it is rather sparse a nothing is opened. But we can see the main features, which includes saying that there is a file *debug_example_1.py* in the workspace. We can open this file by clicking on it.\n", + "Currently it is rather sparse as nothing is opened. But we can see the main features, which includes saying that there is a file *debug_example_1.py* in the workspace. We can open this file by clicking on it.\n", "\n", "![An image of VScode screen, it has 2 columns visible, one small with some icons. The other is large and now has Python code visible from the loaded file](images/code_file_open.png)\n", "The code is now visible, as is also information on the code layout in the outline table on the left. Here the structure of the code is broken down into its functional chunks.\n", @@ -209,8 +209,62 @@ "python debug_example_1.py\n", "```\n", "and the output is then written to screen\n", + "\n", "![Image of a terminal prompt where the command \"python debug_example_1.py\" has been executed the output of 720.66 is shown](images/code_terminal.png)\n", "\n", + "Useful, but we can do it better than that. We can run in [debug mode](https://code.visualstudio.com/docs/debugtest/debugging).\n", + "\n", + "To do this we go to the debug tab\n", + "\n", + "![An image of 3 icons, one play image with bug in front with a red circle around it, second a set of four squares with one rotated. The third is a monitor](images/code_debug_icon.png)\n", + "\n", + "Then we can either click the *Run and Debug* button or the *create a launch.json file* link. I would click the link over the button as it makes the steps quicker in future as your choices are saved. Once clicked a little choice window will appear\n", + "\n", + "![A list of choices in rows](images/code_select_debugger.png)\n", + "\n", + "select the *Python Debugger* then in the next selection choose *Python File*, there are lots of other options available but they are more advanced and beyond the scope of this lesson. This has now created a *launch.json* files which can be edited to control how the debugger works. It is good to add an extra option ```\"stopOnEntry\":true```\n", + "Adding this makes the final *launch.json* look like this (note the comma on the line before the stopOnEntry)\n", + "\n", + "```json\n", + "{\n", + " // Use IntelliSense to learn about possible attributes.\n", + " // Hover to view descriptions of existing attributes.\n", + " // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387\n", + " \"version\": \"0.2.0\",\n", + " \"configurations\": [\n", + "\n", + " {\n", + " \"name\": \"Python Debugger: Current File\",\n", + " \"type\": \"debugpy\",\n", + " \"request\": \"launch\",\n", + " \"program\": \"${file}\",\n", + " \"console\": \"integratedTerminal\",\n", + " \"stopOnEntry\":true\n", + " }\n", + " ]\n", + "}\n", + "```\n", + "Now either press *F5* or the green play button in the debug tab to start debugging (make sure the file you want to debug has the focus in the document window)\n", + "\n", + "![An image of VScode screen, it has 2 columns visible, one small with some icons. The other is large and now has Python code visible from the loaded file. The top line is highlighted in yellow](images/code_start_debug.png)\n", + "\n", + "The top line is highlighted in yellow, this indicates that the execution of the code is stopped on that line. In the top left is a set of debug controls\n", + "\n", + "![Strip of icons, a play icon, an icon of a circle with an arrow curving over it, an icon of a circle with an arrow pointing at it. An icon of a circle with an arrow pointing away from it. An icon of a green arrow on a circle pointing anti-clockwise](images/code_debug_controls.png)\n", + "\n", + "If we press the green button the code will run until the next set breakpoint, the other icons allow the code to be stepped through a line at a time.\n", + "We can set a breakpoint, that is a section of code the debugger will stop on (that is break), by clicking to the left of the line number we want to stop on. We shall do this on line 83, which is where the programme proper starts.\n", + "\n", + "![Image of a section of the script window with the line \"print(mol_mass(\"C60\"))\" to the left is a small filled red circle](images/code_break1.png)\n", + "\n", + "Notice the red circle, this is the set breakpoint. Now press the green play button in the debug controls. The programme will stop and highlight line 83. If you look in the Debug tab the Variables list is now populated.\n", + "\n", + "![List of varibles in a tree format. Some now have numbers afer them](images/code_debug_variables.png)\n", + "\n", + "Next press the third icon (the circle with an arrow pointing to it), this is *step into* and will take us to the next line of code.\n", + "\n", + "Use of breakpoints and the variables in the debug tab will allow you to easily step through code and find where a calculation is not working quite how you expect.\n", + "\n", "


      \n", "\n", "
      \n", diff --git a/lessons/solving_problems/images/code_break1.png b/lessons/solving_problems/images/code_break1.png new file mode 100644 index 0000000000000000000000000000000000000000..554e2c406b510c1d443bd131f7229c89badeb0cd GIT binary patch literal 5240 zcmZu#by!rY!qI6t$RTD2Xv?slP$D=_=IT-aql#_um)L2tP z!WQDn2LeNE?D+g#-BI3XXi~C%?jTziJ1CQlor9B`H0NP^Hz$)5SenyFL=&Ltu3+cr zq#EF9ryrnYU>o3KD-PzAl_A8F@{>SCaJ7SinEYH{yLn0YNwfSTumno}YvyN>k@5uF zOXw*o|H}iVNwYXYq3#m={Jy@ve7-__5Kjkw0daA0et;mqpdc^GgV)R74GQw(b@O8V zR{%vjFI!J1cc>G@jp=VdkPXBeD$U~U?F5#v2ic3*fWacXHXtD|uYdp;#0vro3Gjl2 zgur4V0xtyZ1#DRUl^*J3|3CTNy#7T4iV*(4EBpd{fWMIc$`ab1PIf31e^bf`Nd05| z|JbDX{{s16z-0buLG2YK{hOJ;H2s@hJ2w=iz9{Z^(z5W;&`1M-igE^imiu{u=F^5N zgNUN8+0Tko7W~A%$|O@gmTv?)=kUg4xs~jn zMo=EmTDv(5z&?KDpac;UlT9zo=7T3r2k)>VTiwa1(oaJ=H_vS*vJuyLUYnQVh{NlA zA?%q(m$|+Y^-OmtRFNh5j36MJLzOLMk@0y@OffdgJO1Rem&HfyDGbq1yA*$5B==+r zs|YbB`p)X}MK~p_i}u*}bSJgGi5@cK(Y34;Y7~}sPA~3mZ4-b1)gCnkJUNx!n@mBc zfBQP4?a))58E)F~Lpbx(Q6xn^)4+qXjnX$BD z>i)FBn0z-z*f$rqwO@9xTY-kB`d%XX_gW^7j}D0IbFZ0Ey~Sgi;4a!{ID@RgoD%re zkqg~Pd)7n&CZE+s)omE7X@6619MeRjq zfUj_Uu?B=#Q)>C-2`e+>S(I3ShH_Bm3O1ib-ZEN-4Q5^@6(f@{Vesw8<@b2QAzvyw z$4C8g$7>+=pGMrRQhl;F9LPv+sVda&HAgd`WOLOPWLuL3l*?+~ZN~J}+^_5maPo-d zQ|r`tfU1-;5^$p3sp2Y9^`;(D4>>5%e3l)KDR9!C#Tn8QoBnUg4YUz0JG75niI zkipjK17V#I{!D(W((397;a2axxi6Eyg0JrLe?HYSt(Y9)ze)S~4XB|6`IZ+x2e=&( zt>cdG$nlaK?wwwI#C7>4^@R+Mj}gzEhULYj&13}~;Gv-yzc&8JMKC&6t<>|zbCx|q z;M9hLM0fFfR@;mSbziXF`%AKnGBgVyGV0zV@tVHE1{+lCqj7Wdw5@LN2!LC@>^)~e zKqDOeEgU;1?K^t9!!sLBln08tUfxnhHz!G$CO7&fd7Vb%+c0CvC7YYtZ5REyF1v%a zKYV-p`?bx@V&iR(CUnjD=hH>eE{#i81iD#g%4KuI@l|~u7%BQL2Bk|G;g>X+#4ZWC zLH^XK>7uRuXYfmxc2ka>r>|FcbJ`C~lP?B7DbHEqobH5a0z41BKDQ3=g2w5aGu#OG z0|Z!03yjaw*WAQP8;c0YOrhsw@nym$HXdUyj+@_O73!OxD_L1Uem8Kd^CZ-g!7rX& zKF6Uvh|z?j$LxQJ@5e5`Pr#4tc1iGBPqE(C;oJzu@`%BV4%5lNmhi1C5mWFuGz^<0 zZoa^z%dx?9Bx^9=73l-_sx0tr) z2Y0KVD}P#oB~%(522u{ZuN!xe8eJ{0HGfv1Whl`grzOW!_eOau_4q4n)976>GhRT< zwwW35i>Z&5akJw3Lcx&@2`IA*&NB;K-s2aeecSQ;$QpCEf(y_9Fz@Yj%Iy%;{X@bzu zP&nH#Z=7;bZOb|>9i4`P0!CwF)C_vWBZy z0OPwi7}zlTpJ}#R8R_!6I`4^SPR3AdeHKs+q6$gB#mHine9Rq%?9H`Y9 z#W{I@{a)3YO0*QZmW~~F(T5;T#R1C5$&YY!1bQPbwzW3;{z!Q*r8jzU!di!Tizv74 zeH}#GCC#X)U|V8jkOP|(X^XTDv=en&)4LUzQ1a2#R`kk+?}Qmm%mFgrJyAxg{X&aI z0(j?2j5O@Jb!0C2P5+ExEB&?RT(;?&&w<;E-`*hm>_v_O&JsNf0$H)6 zM<>C%5L@b+TKKwH@3IZKG%; zwKp=Y@Sdc~vW0wY?>ne$a9kfydQiP;?W(#ZjlJG4N&mHC=xo)VSlM2kW&Z)zPBtv+K4o+cIWdP>=P#XL*&1^7vtWCKOb84(A8e#5NIYKAFu8qRPiI&@udTLynoEif zD=9Lked8BW*k6~}B^#;z1ZH+4mk0)2B*2$`%VHS>0|~oR>kH3$468b2S}xU_B1={Q z%@G~b`UJVRMnNL{DP{D)uM2r&o_i%VX7i`Hf>Lr?>i+)TI0`x52O)Yrv%iU(!?P1y z=^7FgNezE#hF$QUaI27hIg(50yrtYd2K z!@f6{7S;jYGnnlvD_P?bY3ld6rOe$eNL_G+_bI@~Wg+RX?)qPh4miQgk+^C(FwDy* zXAVAf)^J4ER#zdPFx15Ta4#^Z`}UI)7aEH;+22Iks(&8$5wDTrfG<%jgj-eah+ zFO6#5mg}vi$MCyj=8R3=tKKm4EE4P6yZcy}|eT5rgnd ziAduqtyr`f zA2U3>)Oc5e9YNN<*3VW+cyK4*<@BBTyJss-kxSzq{*#TjT7#GDrtr6>_VZ8e&n7od z$s&;e(3&>~<>gw^#lUZIUc85qZ{B4 zmgbM_nu?-AzQiKm-|4OXScmhwrhgQo2iF(nd*dgR+3HgM+{ncLYB3D{jIO=weTFzG z(4ZVN^EE2*$!=VOKunT|y6!$62iJ7eP?FL0z_TCH>#KQEA~NChtG3a2$IKujB`=Ga zG~Jbp!uq_iRWXQWKe0yZWr^LAu6ZB(hFjxgo35}_!FN*LP``=z8;E*~ZA9BLYtraf zlBaV8^)~LIJwGwjxNn*uQnfE*dl&&An%Vs-{O+vzT6)E62wmw_4AaUJy~3WDBMfH6 z+cdK7t{*nxxr`@@7H9PA8G`M!WxB@iBcWow=1MAUmfChCh65HRhKkq;>#t>J%=~Q? zXe{|DxZrWAcOdzi%>{Qqm@NAri)$kWUI!Jwrz-J%p@;Q@=`Lad(7EuA+C|m7-X#y$ zveX)t_+@wU#vT6*-iAsVNiENkC3%L4`9$=YC0?oXxXK?Cowta|-ZRJ9*^2T9iu0FZ z+--kio1RLUhd3Yl*(k^MI9!qLG3-EKcwx>5G$A5)SO=DV$;#L@XD=jUAFr_TO#VK{ zcqf($X=oJdqbz={Vfz7L5NZ4gT=u(BU=B1OOgy-NLHe>};3_r{pgsD(Yf14p+6 z_RIm`B4lO#jbkcBYN%F}HQt1m`m^P%IVwHbCJ^C6wlu9(Iv(Pe_?OY`g{9_a;->&D z{rFO2*N^W{Dt`$M!JKw9fwfN(wdV7d>yCCtlUizOt&q<;32vHc$N4|{{{H?gTIS`~ zQsR$>QQ0=em5i03b(K*Q$|}Y!jk&8{=o@8jwB^yA_<&|X!F7MWF_8p7a}Ow7{g$pw zk)(C1D8_j!k_zGQFfvqQ`5GF3Uj5m#5&j^czMQk3xcKMdJ|k)Ul4@aFYjVwNFh1Vn zz5V$tc`~hZ>GFBg`(F4MO(^WnPOSiWsEU3db`qJWcnq5oX7UUcNd3K*ULMT;lbaCn zP7e}A$RjdMi>AWS8jyTDj;L^hxR!M(82?~351PmW6QM4b$VeQH_TBKP%dSSoN%$#k zcpwa`=vmiJ<0@g?{RMqcV6%rv-%CvfaU%yo*M^Z3A)gOKx6={>lFflwpafp6pPl68 zm6FVQR;MJxn97`sE04hr4zas!T)Gxk?4RHv#38mJ#O?e$2nRa{T#H26Zx`yd0lmR2 z7slb&xIJRxQ8MjTW0RGRuMYS2Uh5kAS{lq*kseClFdmN_aCvl9tD&xrDrjq41)-vR zAIBSPj@iXT$ZAe*s#f}{JL~mDy_Xm?!2U0pTCF-J3PtlC2YKmqLKt+7EZ5J6wJ4+) zdtDB}^^4kyQs1epI+%-(ARc!a_d|DeU3VL!7ZWavlT(+2&)^v9HAdH)_SC`3gD1yX zo*(szpc5+*d|PNa+AXygi4XnD89`U4KCk&YCvK-?f3&AQT^yO{%pV;OB93ZAtYj8c zBw>3j**gl;m`6(HVB!W(7df@89EZOsKKkq~gx}4MO3dH3`ihPj2S_ zY%bKIeyQ@CSZk-dv|`40&hJY?V_dIl+A!MgWjEB=nuVHbuT+}JtjakAL)c?*xq)#< zD(Mf@J0l=MEIx3E@`SaRGIa@%EroWFqo-R(pGYBOTt}e?P}EI04Ngkq&ysN|{<(>X zN^Lu@c%=|LbGHk{@-Q)d?C$5np%fk|Ism(j$zanvR zKSWii>O9s%WZcGpS?F+eSaEsy3%-m|e^Q_Wh-_8t^Q2hzxvsV;sr28XgwmRIRh^C0 z%qHhoz9LKQ^M4j9cvdVsZ&XnW(!~GS*BN@iXzm)~dquue{I~rFRMJwcmbZTUUmBG! AeEI(6l2$ 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 literal 0 HcmV?d00001 diff --git a/lessons/solving_problems/images/code_select_debugger.png b/lessons/solving_problems/images/code_select_debugger.png new file mode 100644 index 0000000000000000000000000000000000000000..0e1775c47dcc19decc46ff5ab6a51380d10baff7 GIT binary patch literal 12316 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 literal 0 HcmV?d00001 diff --git a/lessons/solving_problems/images/code_start_debug.png b/lessons/solving_problems/images/code_start_debug.png new file mode 100644 index 0000000000000000000000000000000000000000..26088dfe1a6b28b5be130914487418dcfd243ebc GIT binary patch literal 152839 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%0AFBty_wV z>K1QP*S4=&4_}aO9t$<6hWIdxZ~2*!;?VZAds_;scp;o1`qfz?bI2#0`I=U(!(8up za@P%6{tqfFT6)CkF)(N z%H1_lo#bO@yf;B~M5SS=u^`_t`NDLHRjTJECw;g-WeLcB%?5H#6Z@-VE9U|eh{UlW z$~CD?hkZbyibk+mj;=KC^3mx%HY_k6NEF*+@e~SR!Aj;LpCw33);oN& zY#N+c=8B%l7FsT5TvpwKlP+La_XQ@-kIZ53c1mozH_Da-^ck3VXFJN6iQC zI%97C>WXLO=;g=+c;f;YXlkng=0x(hrt9kwC(TD!2_zIQ9`UiA)Q)j$jY8tKDzM7b zT8?`>SV#C>_V#K!FtK5il>fnXddB}i4N*Fern(6;W7GO*KvN`%Hd9=7_2F{c1c~|~ zAwAIl+R+6dx9VP>Ry@%0dpbJSvB#rv`Bs`*06v3$6iW#dnwH@3z3|NmV_B;Z1o>$= znHOAgyUJIYl%HAC;>c7cCh~2TD%{-h_Av3fBjI`#_F@*3M&{eozP{Bgks%(e+We&R4`J#sYE|AXIY!g+(ajy`fOZ}-ofCQ2qG-|c@r>Ez(x(P6@t*fw#mXIcpx5_Sf*@ea;hSrng z=uCE*j8DZLcAwgsHYb9pX*~&qIb`;a)fknMtEE`{3z&D#8oXYsu^NE(xFjV^lBi9U z12lJl`j3kD0g-Tc1I8Qd?|ofS$uziFq;w~7Z?fpE?8E4Ok=wmVKX()Kt8@Mv+q620 zR$ice&ftl;EHMM*@_GH~hcNjTTEDKd=^H_BDPP|`##b>|G(G3_r=IOYB0DdlcgfrgjAM8H9#o0AN6RW3J z=?~30*S3EwcmOb`c!cFKFef*(9QM+60bDSu-p#}7%f(CNv%l*^vRX>_{S5-5gD1m? z1k*xJgdD|>7aNZETe5!ob|krIlq6qY5N7+T_a=8T%SCa)kyRtSuFQND!WX&7 zFsyJK^EH(yGq^fd_1TX+5FJCyLDoo*&G*CDs5b$m&-@LWG?c4S?*ve8wZdt6fb0fG z(q;us&nk1@A*LT1E4$Au{xi*Pcv56^)vouT^LoSIQkg~LRQ$DsbmosKp~p4P`>H=nhI}^ z921UFfJG$FL`-z*5o+1?;xV>oeTLY|oZn5awVroQ=Z?+rI_*+_ogAx! zb57goC16l$iLDJ!-i)5PVUoF*@=O%fQ381KdzZdOlk!KIfz zto26-psP=VJ%kle%4I`Z?qhE;HSO!x>8wd-`1-3A1KNG3M{bsCx(gf-wDG_vdm|H8 ztPZ%Ys#3S`MG;&^rV>v$Nlj5GJ&xkqhtx(XBs~1cC~F*J-nI7JYSjLNLC{m=x2U17 z5MRb9(nNg_r2J6y`IF!)l@~oo_;_#s!p9FOdf~MRUxD3@UAV3u=r-7$Ikpsjv}#X3 z5t`I@nJw8_)Ti*dNFo5YVfa0~<8?06ySgcy!SDeaS!%l+8x~5}`wkV_7Zqj9yet?n zBs7~9uJQX=tk%cCQhJQaI(@fObS;)p36Ec}S8jmSjCZsml)9GTG&HYp5B~G_`%=ffICs(p}HakJ5Q(<=TEO zYag|^$H6);wr36Pd_bs_%gHwIzJbIVvBb(qxVi%>D_hKQT?dvNHn`2;Nj?0)^Xpw* z$!!6o%f-KEL7BLXk){?!7OkCnP=G>KR9WoS`4}mwEfPzDIkcC2GabQt@=X)ohaXwm zS2-ys-;mMIZi_#Fw&EoR~a?(NQ2Whg9h9ss|wp|Wc{HA?65s6;waXj!lfQqk5KhU%3%*=vEv!&}_6QgHanZ^&q0S6MwSf!%>$V{`QCL$s23yJ-Smqgt zBht0lu0{&ZxNmajhgxBVWw;jt`mLCg5d`k5OHM{*`eB#m9V~($gMy*_dUmi)bN-{6 zn~CDibtbo%i#LV&E2E5OcV{_BGi|;^h1d3IjD?*G38^`=)8lu9W#^l@=?Lf`#Bm?8 zM3;^*9C<~eJ&~;kO)d@&_y|e7$GQBd7+bY>*?}F56T`)TN_lM|#aG*Z_)>qD`? zhj8=2C68IWZNWRLChPg6_nm_cC>~TW+wA}+E2Re+M?Y6Hjt3qo<8>cZO+p8=D!qk$ zsgBV$aKIL;Tozf_-Z8?yl>r3@4_HxrKEFqXj+%-y@!D)XZ92XhQ%~dS!J6%0!Wu5b zT7WraFBZ;LcGVm38RyNm?m3GSdMuX?@KD4WPfY$bU57ExX_W5qA!F2DnTqw5QJv>q zO{bzu@`LY^UHS;C8SkR{fj+U10BjX|xwD7Y2Dj0p7g)Uw0rn&5SqFFHr56_-HDrdvOD(Ex zSIC{G?GCqo{+0)cp#E%N(l^gm05z2-QewsQPzr=lCxeuS!@w+A-C$)g&<|_N^Fd&*9X_bm_J@$L}IemR|IInb((I= z>r!|Py_)IcJF1Xo3Iwu}G#eC?780|DO3rpq*iC$fDEg2B(sjDq;kU=T9UaW_?SloL zu-q{;0IhDiQ>08YB7^!c^N<5;Jk%G``W7h3(MQ8pQqIBuu_{$x}6*G%*bTiKDI&jh4!~W zq|3gJW+fDvXvG^kIwjviKd@b!6FT@}ZeEOTA7j#l4c&OnEeV@=ee%9Kwl_E$n`+kD z?q?~xa^@yTQ4Xi=r!V`SZy$DeyZg|wo2>`6EH`*KuAyDw>@fEVv=MUW;#V9+DQEOr zm|_8L^9rWLSC(MkKJeq}Db68(Lnp$mgV&18P;Nx$wVbGShrx>5K9bPp`MBfS+!Vq= z>{;dYt9IGVVBn-zhEMHFNQFMJ^Jrl9;f9}^7osS|CEeD9=h=Jg5(!nCRV#pF+eG#E zN2RHN8x055!`c5-zT%B(g*l#8NevM!IW;g*`mDYwC$YPYK&?{3Dj zn9E1*qDe~&_RWCD$|YyvJlpcMKJ~papZGTJTU$AjF$qn10h<{V*dAN_kyr!THOQx_ zg#4IdTCY}~@weIexz-%`ueTKnk_+T@}ZLrguao@{k*jZu`^5UWPHQ zdeL4b=o^)5*GTQ`?Bq2!>omLU(vyj}s(<6Fe@!tlcjaZdM5S;3 zNF>;ntov`VwPYnG1^;0Lq@HOECMV=7Q*3#lEvyPU3KLI zlPBK*lR>y=N4jDxcN9TuI1WC=@#IMdU!r+D6(r_K&Z~|Y1a#<#$IWXY){KU;m=x|lonYqG zyK4q=kN~vU*pTI2YmNB+thM@fD?JwP==w>QiI4#q#gfYAsC~U5#lzaeKxdfx-Gio+ z*(kC~g3Q^)X!2`k`i|v#1sLQY{>cA4KL2cI+so`Z!}E0gpSOOhzGGA4j$ciPuIzR$ zjaGg6eJF2(BL_B~8?PZWS-*OVQCUdt%j@LzK$PN~Sl)nUR~+=_UGw_CoqwWxBJWSYxZSmCw&8p5^s_yZ2Ngxqi zSI&HtGo%2FkKUst5q>A{J3HW`PTINrimFng?$(QawtV{#uA`YgWZxC$R^QzoSv&TS zeZM0Vj#OzlM3IKQ^)}uwb*-tHq@VTxKkSpQ)Kas4-NyB zQug(%&CQ$sdZ(#57|J+%X3NSgR%54DbPK;;07zb9m5s!g$i_P~rHEm5ofG?gLJ}}! z)+d#?^_K(E(EbOwrc1={t^#;new)-mdI)8H&=WG|43T$9N*TffXS0SJUxG1{V`-$B ze-bZ3FfC*1NvTV#?DtTpOsu~+RJhf91xd~^1QW0}WGTp`ie~)?L8I|u6yE?p49}Z8 zo*#0wJ6k^v!S;Um(?sG~%2({-~3EYYIZMP<5#Z8Iq6R2UP~n8!(uM@PL; zSZdpE(^<$BD4y+%rW{xE?Z3S#;BGCoLUI^jpkwIy%#E%RzK z%hbE+L(W$e<{s#o9;+N>Ay4Jr@=a?oE3qhk0hf-JKl7Ezyc;uU)1WgnMk^c1YNbxb z`wCa1HRJ;5l`@R;cjZYCtWB}wXn*gW91ghAf?heZET<&sF%h-(Yz0O>fDIjs?5-Mg zh|~{Ay-fZWhtX)ypvYL7gLKA>DVnbgLrngh82du*`>QuuR@JsI{Sqmj-5&LeFv#_F z6!u1gkd1FX(xD63#Mbqu+OmhGyqQt|JozBw*07^#;G%;IiQt8L(ekF_xmZ@`!s(1n z)8*$r=+q*FeaTu67Dh{Khz(7Prp<~&oJkjQ$^(|fZ8gO>Uuy|66Jakf9ZDM58qb9m zq}j#k+BHe`Mv<`$C39eINRw|!5-|?3cVH1id+j94or_B1nB)D=b2i=Gv?n+eArpf}!24#@StJrWv1FwM^|8 zVzCv&3n>4)vKgQBr8|b(YlB+OWuM?qgv$0NuvuHf%vFM}L|nk%PC|4;=Z8-_)1}D~ zPr0ZmE8B05<*yc3?+U0(A#NfQf3@~5XkkA4`GWGfLGI%`@f6qRS0SxcFlKnFcI5;K2%$DL<*OQ=J!piow_EQ)RxB#(c2xXS2 zg3xqY%?KL@H+G$rDga9Yg$lJt>($i{nt?ufBiof$?SrOG^6kmO=rX;~KH9?ib!v~T z?BIkl;%9CUUf!n&dD-H&PKrdYh#1jLb8K4L^&0K>h)oI;}SOWH2ND6qLU`& z##wA{)ncXXvhlpKbd9zht!#-*5@O}nR|;21x>#uwCAOClN?*eCaE95x*ofp-pv)6D z0@>O7~DPb%t}rz+vMnZp_kww(*+m9ai}sm+LM zx_IS??QY!Qo-*a?D9_qoie8yTKg2I`{GhM4O+7#Ze1J%&=7yHdGa(yJtNVee3J*_u z{A_+)lNcn^grqq_>g4$vfrZ;60&8OHRg}}OeF>n&`};CdaQGq32Qc|kc>NT&5Sgjb zX?**dG5QfKrl6vN9YSWBt)LqQrP++kc=?7c&BI?WR^H%&?zfMVh_+4mF+xJr5Cjm$ z4bwN%!AJQfT3KHmzki zp#N?;pSqaeZt3ZqfY;^Qri13)DJ0X)Nh690%JQcB6(mFo?|G?iv{m_c@3>~ifsqDS zjL=C>+SXk(sU>CUJRdmABM_MuP?u5fxF&69N^B+QJqR_cE2i{I?2V$N3E*XR|IhB@ z1pU4H%Hu#K`TA_4!`HXzupK4=gOtBJT=A=`v;lPL&j1NeisM|Hsn>_$IiE;G=&F?B zYtUo0Itc`$P|Cg~h~A3I83`3^r{FNE6ht|q4V4$U1`#+!<5(qiqP49#|MpE+$Ec*;Svog$jBZ#uS8F>s5lNEE9=7b9NC8b}b zbTPF)BG?$G7AYAVMs6}mPSLh6@t+!P*sb9zJexme&FbXd8DxQ!`J`;4Qbo$;M*Kco z8_ECJ4`#?rnKq5Uid*i|+bt?`!yifQzvn&oN=na{Lszli2lo%l(mNyq@Q74-Ylig|y(FN^@3CSae` za@el>2!oi`(CbLjLX4gEm72@m9M`MO(G2LgG({qtZhgSDUZ*78C=3wfn|wA#pk#ogJfV#@`}KqQon^i zhHw(y^K2)7uzq(4>E0M7KKXs(YL>tKKsQv@5EhiOU8rv^H7;*~Y29ZQOy+j#- zwsm!N%s8cn9X?i8*($_y~zq90cox}p5TYmZC z0n-UgpnI2HQX9BEs=xlMiMlq7u7adxx>ReZNHsSPI5Br|;kle#=>Cy7okeJ>%rsUp2&TT#%+y$&=ZCkP0!5wZK?;lT~ zKr2HKH__mN$B2TZ{HN+G<4TzQ%V|w>kTfSPjBh(jLe8FN@4KdAgfHWc zsEJ&xAG=&%_e#;u58q~e#>kqCP$HGtA@aAFb_f0^me%y+4eGo$Q;Jl_C>v`HZgh|o zEoO2~aXwRv4~^j-3SYR3^s33x6n+Yw@kC*ru2&#Yi`7Zt{u-^Y%%^5wuWK)GT?{im zZ!lA;*J~*=f|om%w-;<^wW%uAKNpI|rc(Ua*!$c3to_zP!3d=<200*V)%0|BFWRPF zq2!cxR-L>`$PY*)5QyQIYO_qyDC)cUtFp=JNA4;Ue6dCw4rBG|)lB$3~lXVAe? z>RN8cF~Ikc{p(-PB0<+^9t5)~#>Mx;XXPMsH!06IT^l5cdlqY3t8zB=bl+9_6_kac zL{U{$olepS2{EZx{|S|1;(yy?M@4&dDdDC7%>Ey;Y)S`s+%wl|Q1HVc8)arI*49T! z3*-@ZKEd9;L3#NecDY5?SPbyAm{L*b!sd=hN1U3L93tPF3@54U2$z+L42@6rv zuT%xx2rPY7Gix&4Is6vcmwpURQ4a1{IA zY{bZY`P;Y#1F%05se=F1C@=jaQK%G2|EYwtJE;R==>ISkDn{56GPr*z(7zL$U;bP+ z689N&Y(v0*H8JXC**uq0xb_pS3kt8UKF<+P;=@u?-| zE@R*d%V=mMibquwhd;BWrDf{o`+Iw^a0q{!)kt~>y;3?OkOF!9-qy8Q4N#Ax1e*Lj z1h=|B4_DLfveG$?P?2T=o=m)!cxmBTwqZ#_CHv=xFokz6RGWs|EYvcc_?-M0alBZ5 zClA>7eB~@rwANn!y~*tuWcU5!Fscd?5nXV~nS@OhfPlb~ zVfLh;IiDu^(G2ngGIg4>C?6j?$-X*IUm1|GiM%;`IC5KjG4EyOA+0+Bc(fX3?q(wT zK!G}W8+5OZxhJxfq?`QiOkueTT#%I=|Ee)|`9xz<%-zP6eT-zXXYb51DtvI%l>X4{ zS#d}N?CAsX4D$C524LiNZa1@h*#Va@{_YkwbbYpKy51Yf?e^2C4g(hR$THS^B2Si1 zwye=^PvN!8VCOsTN|8t%Dmct{&~RXRQtU|{dXj2UCwI5{wfBp`r`VEbxV0)J14-dU zx$gr2w@7E=BkY5F?qVEAGn1SVQq;>&k4tax>(ojObo)m7bLlixoSP=iE|6i#iS|q> zX6T%=RSnT3RFQv58Yr%F;VshC~1!t>53I)!bbeO)=$wD zl>@|5-=p3of#L#Fwk^I^qm&b3>N=O|piTXB~LiX1cLX(j4I%r=KBZ7p#|)-z?O)A7;3 z4X91H9{Kjpw5M=2@5ke?{$yaicbpq-F|BCmW#91X9{cs@>P;}Vj%D;EsQ~$P4FiiX zeRW+@$Nny+5Z;n8KELBHU5vg$70>+m+V}XAaQvWxNe9jW30Z$A%RXJB2mQ<;C5!eQ z`t6r%;lt+`B>aqfr!qBm%gw`{tZSlgx=}QGfoy`rHu}A+ffU5wlpDZTt@cX~)-{8= z6LpR9O{HI4=TR3{tFbijs#&WOT}=~%&$~8aI8!c?ctNo0Lx1#=mYL2lJ9(KW+ONV3 zZJHij#T%$RuYHu%R*|RyOzoe&SS7RNjZW0hvc@PwKuoImVn;#+rTs&{G07Tz5B-oU z6{!aLYh?RFAV9_C4tVPQouJ3zzchhThEHFMqvvw!*K<7t^pDDw=whGQqj{@O(#9oH zY(s3S12y@*DJ7WLY)^eQK`1nfaU&#Q%r%P%Osko~7H!J%`RX3J3X-R~<@wP5b*o%9 z7{VD6ELPqK3HBpKCm5OPaXryY{E=W^1 zNO+yB%jmE?N3}CZpx*Stqa}h~+30yifijpITP@{J6)K5d#?f)3mg%;JT3k_~xvRY` zIZp+F#Iz_~tc7ztI$!6j-@eWAxh}>5|L{o&tyT@zx5opXujqYM^MQ_Ff~rklYO*&f z%IaFhDAqRc&lOwv1%^YLcPl^>sNt2EMBJ~;hCfmP5!j&KDT_rG}a}% z4@~|ssxcrB5`)D>n;=XIrF&Bew4eW9m;ApNP~b6c$CLy{eWxAfS>F7dfspKMaYdrq zLM-ar!9*4w)7NO<(K%W_WlFex!4QxEECdr!CG7t2&)5Xekb&%LQ8J}+I^7vq67_$) zA5_~}?G7jmbrXEV8Ii+Q+&LgZ66VYJ2~9Rk0%QX5{Cm)21au&`r*D`2^LGaFAE7P4 zMh2Lw`;;4B1_a1%)QV9!{TPmA*KaOj3IJj@w0#c5e-GAxdrj4hhOl$KXphOd6=lI9 zvW7;9kyCx@DN~9~BUQvrS+jQ<*!l0V&Xra<_V?Q#5HLbLlvJ}$sm8}N%!26uX2{`_tw zoNe%NIbAbEa{0`a^WJQo*Y53Z1$8Wd zTfnh9TbUe5B2Xg3VguwEv>V@M>-pZE(G9R*%|?7VE2W)Uq6F9Yl^q*bXqCfwzsCUMx*j~4{pX{6H-r&qyyxrz*4;$ z-yiPsS$#r`JZ**)@61W|PspFy`JG!`nI;&Y^Xw2)CMy52+mjXuEbPD)2$wVx*At{o zXj@KDb0fo1dK8Gp3YsXo(1}4b!K9V5-8oB7Ez7G$R8{gbJ)@&DMYEA_-zs4A%imRn zsdX_=w@+Dvbf!yY&4^o8YTs9nN;{K`oY>8pXHX>0vJYXoRapDm;QpyE@xVwp;hks$ zm_`G5Mj^xvp9a@fC0BNFNH^oS%qG&sf zO53D<+<|<=HE_Wq4>K|C@P?$1r8e3|{=dBjfe3Xyb1msJmcncC#GW>>Xx_nErjP7; zLGuL?NJ;tz*|tnC);2;q2loU{r1LRDA$Y~2O`|mR_>2$|!EBJ((_*y1$idaLtI8Nu`P@JG9nYd+=0T1)-%0W0_or~%l5tZMQ zt}!jr*X$S9o9<3p8$ks*G<|Cm&?}7bsesSazQuq>Vu7Qa^Q!+nWG6*HXLL7FkVh}S z*!UQ?Iaru4C3D#bDeTtfW>pVjirgz)-QG7#*|*N4$D&J0dKPvHI%9pEwBNDI6fkZ( z?w;XY4=bK5-k+KJJnUIh9>l5^*Y7esA%SLXx$T|Ai(Wq-HHS7sxMQ8rIp|;;Gsy6V zBXJ)nspd)z++3a5DnoDnRxf%lwrH7B`w7$nct!t^K};k~zcPb19a*MVn$U;aF)Qr; z0f7DE_XfB)Z~pDJ&}t$~Vm}0(#33LNgi`#|KK}m_84~#glFG??c_c>lQ#H?0mn5U;lUik7BA6Hn^jsNwl^cYp*x4 zYxeef(0uj+#dZw&*xTJH>#M68@vi+A9mV+$&QO&k;5g4duLVr$@8?AhZO)#>j8*Jr z--NYQ;tjGxJXT<-Wj7}Ak3GG#Eeu8Xdhv&j$!BFc)}s@DwCqv0?AONcRh?jNK%eYO zY%5TT+_{`VkNca<2X-?6s7W8slBL@;ki@pk(YHBKuTgEst%H^U1ChhB(V>IYRaqsA z_J-Dls}hxK$0LWWx9(aoU{zTqKSSS={+w_J@QzA7O7ql_xt~wHO z4`vr4hrpp-5 z^AD?}2RK}BVWk3j-?9=FWIRmNI`LX=>urHVz zZ}zw4IV{xne;phaNi+<}0c-k#VOlP&yRv%xxvR-(+gijcFZuxa{zkX3k)nYXmelW}Zt=o{vFG!Sa z$JvxI5i%rpoJ(Og8fvwvkz73HUYd2lPT_pW`Ytcp zmugea|7b1GJ8ftKeIaP)ujKV5!k;gT^uxcX6ZK5#qZKLZCktGlo>Em@qf(jZzLt!( z-k7>QkIkQTWwwlH+pWcgZUBEQ?OlPf?{uUFW7&`v@!>e}KHYNn?e{cZX@`D4p1U%a zE@;`UjaReX(g%~Ey&eqQ?0?tM)@EgVLUBNS=(-D@aIms@D~f4TUn-ml1*0LZZM438 zlEBy2Vp^XaWeE2&bT6OOa9kL>h~4ivEAO;NzX?iNKENq%`Bd(8xVSoMBbI$-;ODsK zk-FdblAi3~WRExhYqkdZ)%khxNzqW>VfgBe*Xj$H_1JTHGJ(C8Z^_65=voHEjVoU- z{C!$Wy;w4&&(6Z+sVfKGxOYgKH|6wXS1&mDhOY*YMO#p15kmGx!!j+*YZOG%4y$We zw-?0Q+lA8k!=lP{`d{fuo5nna{xyp-I#6PuZwz}}u{AFlwQP-v|IGi$H2Cz)>t@AM z_GOf-vv5xSHCc=3z6j^@!*{U5bG)t-o|bPW4MGFr4_~MWS)b;&s&OYFI&I6 zr~~)r?r!*@4^?=J9$B-GL-~t0Y}={$y6tYLWe?U@;;NKQB{hPn(5GrYt8L&zNX#EH zjd$z_o{2vc3`IViQAk;z-)Gmv7HDLQA;|g5a-Um)vco9X0dnNCuGp48%T-Qef7bpVGiQs;2$o*PDn(FyE>3Db5aDLPQLs- zxWqO~3dLk(=0@S_%>_mu$=Z|>A+lhfE#|_id%AI}SF|+g!y6-2 zm%Ww-udmC37i>@D$+Fs;kZgevb-yQ?ErgE^0(tJVcU&8fB_ZRGzznGk5#H@IEL!EE zAf$x6rMWzzxaFkuzw_v|--v%^?3K_dLE^gX5UfCgmS}M$BiVMtJE_#_dtQzH@=Sp4 z&TT>VczM4;Yp9&JzLR^5qJUI?dJWR4*kqlCe#8ILT`p;9NqT^O80~XgW=1_Y;VbN@ zLd|L7DCPLnU2n0$^M%@L*tqAN!pioH>a8Zwf9JY7gu3wdjtW^A$)LiU9}67gw1w{T zP^oQ;RLHi&+eD*ss};l{tW{y>-e@C}1x%5&9~T;CmHBwC69>sm%wi$pSE#}kq*625 zPso}szrI93u=W8Yj3QaTC@Mcm`!XVRR&e5lu;{z1o*k#JLi)&~$ObRvlGk~%Keu^j z@k^U7SU7!g=qvJ^Q`uHI8^mA(Zbn?j-*t zmW>8;XQp*tDXvq(gk%)cU|sLl>acC&$~C#DI3VP0%X$LtbTEq8BcBHN*t8JmNy`FA z2JT=-$xi5OQ;5hwz0Ju8-AT6B7oCGj9DEP|w5Te*5z$*+DFSPYTxLi%VrEc(pBDN{Qr5EHK*gCShE}wmsQkz% z%-m|7>CE!=t|qpZCxf>FDKlW^&VO^L1tVXUwZ(zIQTxkZ&5+4Nxv*9@4d!ZOHII|A9LPLzL%91DpKX7AHe<&7F{7`6-B9$v)7Ap}9a$t25ea^z zX#;X)sq!;XywJdX@WqJeW`%Y4u(<*H4`;zym!0PMcVsX1E5h8yCr2Y(EkB3y=Xx!h z>8+_IeSfy8%Ro{LaOofl z+ol)Dwi6(lvntd?OB5DZTW^A7v8#`Or%%f}rRnK4P8Y?UlcL;un<|qItxeJAw%AY? z#VpU3a{l^G1XnmJRX~DLLT6XP3$Ntw?*IfhSIwBdp1A4OUvCz!i@r5s5I>~1Sb0Uu2(J;tvc)Id>ZT9yW+W8Oz9X= zi2lMC&g9fM6O`eTy0^L~%`AKu_YxCz19qe&V&*d|TDGvHJ5q7I&vBmEadSSU;67*W z>*MtmVYk4rZorHEZJ7$c3GM;gnK?SPN{sZmYX-Ta#l_)ak&pCY+tBFF%2blN3@+U; z7SJcp7!Rmt+vdx!{?oj=C&bdVguPNAqu1Be3qh-sTgXZJ)r;Hm@r2;cB(N~fZck5^ z=dauDRzmvZ8XIsf(cEh;9+njc6p_EuPFXx67q}2C0>coG(f^+Si4S)07Y;s55L-Bj zxuRfzEfQ=@d6Q3I;e)Kp!e1?y%-1H^hMP6C6F_*N9K6PMQ)uaZx!Q)s#B~}-0b8Q^ zf@68k!3PG)!bOS?+>dtHLFS~Tqoy1J3+EBjN3ot6-kZl7bzjx;u*kKximj^{FaY7Y z`~3mGP@$jriyuJtmnYgk?6;??DTVm*u*)&qW1e3vh_Kx}zvgS5$Gk?64}C^Dyw=wh z_8||-hxEW}$Q9RhYT`PEx*nw0BFAix7Aq*z6l1y$9Fr)4h4PT!JSLDJ`aROw;>=a1 zZWrp-eYK^LEwJo1nV99-?{ynZDP&GXwDX$BNVV;IDanPrkS@AEQSH=anCnw%d1U4> z1rFMyBcfD$4$ihmlgZmRRiA2S4uOUIsr0F_)s#s1v11D@v<2;o5?Jbd?%OU%UpX4 z`=SJvxdv8hZ7Fy8#nPAp3$vMUABSUMZ^!2mWxFDk z+Fy`XdLMo#9{l5GN<444AvNs|>!i6PP_f`z+-;{FrTWCw`cZh_X0M-xqz(iT*4D;n zv+lxkLL$i)Q&FAqDq5y;W%oUhIA0`I!a~}Zhl$0;?UNlvl-MvMSODIe5(R0@ z_fh-w8czB~-vl?T=8dy{?~(^*J6&x9WX27e`|PdG6ZWCr z^A0&EG=(rnm881NVGu^s!7 z4g=S@2Op@=>$lmUE%rIYcC+o~HD#YqyN~93lx+(ceQiZur~19dE?=XsGbI_UMc%cv zvX3>=YH?%BBK_V>qxb1@lkZuS1WJfq@aINMNK_*%_pUaZ{fj(C=}0TH zZRUG>pNXqZJHPIaIyU<@4wEfz0!vSUGs`fg6!yg}urxXv3sDzZ zSmAi+n^^4EQzP+R2ytSHk!9C*R?$7SkTRpJG-kBbe%4xHE;14$C<*1-kKbR2MAAYsDzB^W<)oZb2+c*@k8i$LX8kKYH4tmg zVT#%d?NWVo2`qC8p?;6wix3}>rMkW$zfOG~FpeMs>z(xC-#Q|z9E*XwrVyHuPA&;F-9UsS{?71YAy-2%_D=)+v*1kgIWz@9|X|=<5QsV*ckMX+~ z{l)cIZh?i*SuR2K@VRHI|8#a;i^cHF6Hk;Dfwkh3P4ehJ8$$bhup1WzBo?Nm>BZLp zBnZ~Qaz%&$*kJQ!7&LKGH+(UTXSrxwQ77c%4`BBDOOzGtLZa<#|qzXpQ>7HY>pqqkuiC>HhC zKLGF-PyIu??EJ;lRV=S`Y^TDvcmMuQD&h@)@gCdJZVZCBX3goWF6{GV@6+d0x7qHK zeT|s!&3u|du3SiaIvVyg3AxI``=({GoqQg2-M2OP8HXU}fvi zM$1xQ5kg4QB5r|&ba=A0YYnWXEUy0V#gtU4y)9GiwfE^f@GL|s!gQ8dj85wl*G`o1cN&+SbM5rF6^6ay-nAN zn>kF0(KqepR6eBBGRYPJ=6jUo>Vqv+Oo65A)NRo9Mzsz5%qQ((Te+qX0vuyJCevQ; z$|N=T>=&9+s4?4ax7P&wa2`zwW(zEUb<-f#Z23}5UB!U*V6HZ%vzm3{ApzJ9af<&5 zii)~2ab0&Bv{zp)H4_7uYXcilCxPL>UhkDgA5o8o-YRppGpLfsGprUZf%LO=4! zD%Um_NQZTnlx#`A$2D1qsL2P8Z?heD2t1V$<>S2C3$>%KkUkI}_C8%+V+$-S!GmRV zR`>22+K1m*csNfX5iz+07W#>Eh;>QTb&@`>g$gYE#>+K@urUSJfz6t!C55yc)>8=e z6iJAg)KtG_QfocsPfI04oE_AxnLKwz>S=#=JsNYWAuG?f&z4nYU3!~d zZ_55GM2RW%;kdo`%(O9|Fe{eD*IX@UA9R3>J?nSsv*7~E{hYk-KJrrg%Ol68d~B%h zC;yl}UABASg%{+4|C$*RN>M;wt@>tTVK>mmzJbPLFz{eIrZ-0Q-3I4MUk5h2?e>0sezn+& z5?E$h-G3eVlIuD(>(T;AmtkJFQE9ZaLOPU*dd=;29{c)5Td-!8-e)f2ZsxNWaYx(n z16Q|0t-+L*by1SY?1u&-#4f{b7epZ1T!_H3+ie~TyDjE>vp=OS;;zavrV*O!Q)!UK zTpLRZB%KG?G6~|yoJOekYk{Q~jlbNGOX@hL7kkuv(-B9yJzH}TcYOEg z^{>ztwUE6btj;<30NFYH9jB-L>3zCyXC3$p_1g(;LV4!&IlYLxJ&h3CKk0L=Gi@Pq zs*p6rfODeOr%Jca?5oBlt6bZnz%l!7`j}xRgqB%$Iv-T~jdiQA7U1s2N0Lj%s(|L00F=-)w*HMk$cL!_dvf0JAS3qbgsvTt)GXUsfUzY4#N z^&;*rfra;wT{{}n@a#q08%toJPpy8syE-ozHz0VlM1!=#ImWtVxJGdwiQn#ex*)de z^`-1-gjhbuzD`YPgx}$6G5GD%Q!rt1S(XdcI33oQJO|7CiOt)0I6 z9hr6cMVZgA8I5Hh7auUD{^RnCmCsTHB^rD8YG1~)Fd?X;8Zwe!yE=~dW< z0s1H3|GpZSFg*(qE_OZ~q-QU?Ffx=j$=EWYDWRi~_SpFc3Y;UzLkys=TI*i7zc~0{209GP?br(xqT7-fr(BSs|ZSd3?YRIh_A; zegP#7hzR`8i5+PK@VUS~M%k1P9jWCbjmnKW_dolI`X44pHS>S_fxQU5rYZG-5JE^{ zU~Qcjuez+{sEeiw1r|vvh_upE{wh^4mkUH;9lO^aDk8015sk%y=qp71eb_VilP60B zV_7-Jv-LH%$TL%>$lGtfE!(YFu|i&X2^^mGZ#{AIR+4v*l0s&ycEXw@xIM-AF4c?VHs1o= zZ*>>>>>> 7eb8456fffc62959b8ac3d47c23378304ae8840d + } }, "nbformat": 4, From 5e0d07d5fb0c4470268b1f28e39803cd76b4ec87 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Thu, 4 Sep 2025 12:28:25 +0100 Subject: [PATCH 78/94] Typo and added prereq and outcomes --- lessons/solving_problems/errors_and_debug.ipynb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lessons/solving_problems/errors_and_debug.ipynb b/lessons/solving_problems/errors_and_debug.ipynb index 616a89b..679a5de 100644 --- a/lessons/solving_problems/errors_and_debug.ipynb +++ b/lessons/solving_problems/errors_and_debug.ipynb @@ -7,7 +7,13 @@ "source": [ "# Programming Errors and Debugging\n", "\n", - "A lesson on errors in your code and how to use debugging methods to find and fix them." + "## Learning Outcomes\n", + "\n", + "- An understanding of what types of coding errors you might face\n", + "- How to *debug* your code to solve errors\n", + "\n", + "## Prerequisites\n", + " - [A working Python installation](/lessons/basics/write_run_python.md)\n" ] }, { @@ -190,7 +196,7 @@ "Currently it is rather sparse as nothing is opened. But we can see the main features, which includes saying that there is a file *debug_example_1.py* in the workspace. We can open this file by clicking on it.\n", "\n", "![An image of VScode screen, it has 2 columns visible, one small with some icons. The other is large and now has Python code visible from the loaded file](images/code_file_open.png)\n", - "The code is now visible, as is also information on the code layout in the outline table on the left. Here the structure of the code is broken down into its functional chunks.\n", + "The code is now visible, as is information on the code layout in the outline table on the left. Here the structure of the code is broken down into its functional chunks.\n", "Notice that the code has been coloured to indicate the [syntax](), i.e what is a variable or a function.\n", "\n", "This code will run, but let's make an intentional error. On line 5 of the code (*note that the lines are numbered in the code window to aid navigation*) we will remove the second \". This is a breaking change.\n", From 0778dc3de2dbd55259406801618d9c860249083c Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Thu, 4 Sep 2025 12:45:18 +0100 Subject: [PATCH 79/94] Improved flow of writing example --- .../solving_problems/writing_a_program.ipynb | 276 ++++-------------- 1 file changed, 64 insertions(+), 212 deletions(-) diff --git a/lessons/solving_problems/writing_a_program.ipynb b/lessons/solving_problems/writing_a_program.ipynb index 208bba6..4021a95 100644 --- a/lessons/solving_problems/writing_a_program.ipynb +++ b/lessons/solving_problems/writing_a_program.ipynb @@ -24,7 +24,11 @@ "- How to create a programme from scratch\n", "- How to create the programme outline\n", "- How to fill in the outline\n", - "- How to debug and check the code" + "- How to debug and check the code\n", + "\n", + "## Prerequisites\n", + " - [A working Python installation](/lessons/basics/write_run_python.md)\n", + " - Worked through the tutorials" ] }, { @@ -40,7 +44,7 @@ "id": "0dd85a2b", "metadata": {}, "source": [ - "### Establishing basics" + "### Establishing the basics" ] }, { @@ -100,19 +104,14 @@ "Standard deviation = 2.87" ] }, - { - "cell_type": "markdown", - "id": "1e14b3e3", - "metadata": {}, - "source": [ - "### Outline 1" - ] - }, { "cell_type": "markdown", "id": "2c9a4316", "metadata": {}, "source": [ + "
      \n", + "Outline 1\n", + "\n", "Our next step will be to create an initial outline of the programme and how it will work. This is our chance to make sure we have clear in our head how the programme and its algorithm will work\n", "\n", "First we build up the outline using comments\n", @@ -130,15 +129,9 @@ "# Output the results\n", "\n", "```\n", - "This is a very sparse barebones outline. But the key points are covered" - ] - }, - { - "cell_type": "markdown", - "id": "09b68ff1", - "metadata": {}, - "source": [ - "### Outline 2" + "This is a very sparse barebones outline. But the key points are covered\n", + "\n", + "

      " ] }, { @@ -146,10 +139,12 @@ "id": "9117c860", "metadata": {}, "source": [ + "
      \n", + "Outline 2\n", "\n", "We will now fill in our outline with some more detail. We will not add any code yet, we first work out what is going to happen.\n", "\n", - "The main part of the programme is going to be under the Do calculation comment. So we will next look at that.\n", + "The main part of the programme is going to be under the *Do* calculation comment. So we will next look at that.\n", "\n", "Lets expanded it, we know the aim of this programme is to calculate the mean, variance and standard deviation of a population\n", "\n", @@ -178,14 +173,7 @@ "\n", "## Calculate std\n", "\n", - "```\n" - ] - }, - { - "cell_type": "markdown", - "id": "e981dc68", - "metadata": {}, - "source": [ + "```\n", "Next how do we calculate the variance?\n", "\n", "$$ v(x,x)=<(x-\\bar{x})^2> = \\frac{1}{N}\\sum((x_i -\\bar{x})^2) $$\n", @@ -207,14 +195,8 @@ " \n", "## Calculate std\n", "\n", - "```" - ] - }, - { - "cell_type": "markdown", - "id": "c76cb806", - "metadata": {}, - "source": [ + "```\n", + "\n", "Finally, for the calculations how do we get the standard deviation?\n", "\n", "$$\\sigma(\\bar{x}) = \\sqrt{v(x,x)}$$\n", @@ -236,14 +218,7 @@ " \n", "## Calculate std\n", " ## Take square root of variance - get std\n", - "```" - ] - }, - { - "cell_type": "markdown", - "id": "030a16b4", - "metadata": {}, - "source": [ + "```\n", "We can now go back and fill in the rest of our outline.\n", "\n", "For the imports, we now know we need to import the math library as we need the square root function\n", @@ -300,15 +275,8 @@ "\n", "# Output the results\n", "## Print out mean, variance and standard deviation\n", - "```" - ] - }, - { - "cell_type": "markdown", - "id": "a7e7ef37", - "metadata": {}, - "source": [ - "## Coding" + "```\n", + "

      " ] }, { @@ -316,6 +284,8 @@ "id": "fd576aab", "metadata": {}, "source": [ + "
      \n", + "Coding 1: Inputs\n", "We will now start out coding.\n", "\n", "We need to import the square root function\n", @@ -351,16 +321,10 @@ "\n", "Loaded\n", "\n", - "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ffec55e2", - "metadata": {}, - "outputs": [], - "source": [ + "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n", + "Add it to the outline\n", + "\n", + "```python\n", "# Start and import any libraries\n", "## Import math library for square root\n", "\n", @@ -387,7 +351,11 @@ "\n", "\n", "# Output the results\n", - "## Print out mean, variance and standard deviation" + "## Print out mean, variance and standard deviation\n", + "\n", + "```\n", + "\n", + "

      " ] }, { @@ -395,6 +363,8 @@ "id": "99f466f5", "metadata": {}, "source": [ + "
      \n", + "Coding 2: The mean \n", "Now we calculate the mean. This means first calculating the sum of the numbers we have loaded\n", "\n", "The fact that we have to sum tells us that we need a loop\n", @@ -420,16 +390,18 @@ "\n", "We can place the line ``` mean = 0 ``` in two different places in our code. It can either go inside the for loop before the `mean = mean + x` line or it can go above the for loop. Try both positions and then consider which is the correct place.\n", "\n", - "**Run and test** it. You should get the final mean value to be 55. Currently this is the sum, we know from earlier that it should be 55. So far our code is correct" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0b064da7", - "metadata": {}, - "outputs": [], - "source": [ + "**Run and test** it. You should get the final mean value to be 55. Currently this is the sum, we know from earlier that it should be 55. So far our code is correct\n", + "\n", + "The final step in the calculation of the mean is to divide it by the number of elements. So now after the loop (so we reduce the indent by one) we need the following lines\n", + "```python\n", + "n_points = len(nums)\n", + "mean = mean / n_points\n", + "print(\"The mean is \", mean)\n", + "```\n", + "The first line gets the length of the list using a function built into Python called `len()`. We could also calculate this by counting how many times we go around the loop\n", + "We do this division outside the loop - why? What would we calculate if we did it inside the loop?\n", + "\n", + "```python\n", "# Start and import any libraries\n", "## Import math library for square root\n", "from math import sqrt\n", @@ -459,33 +431,11 @@ "\n", "\n", "# Output the results\n", - "## Print out mean, variance and standard deviation" - ] - }, - { - "cell_type": "markdown", - "id": "eb036109", - "metadata": {}, - "source": [ - "The final step in the calculation of the mean is to divide it by the number of elements. So now after the loop (so we reduce the indent by one) we need the following lines\n", - "```python\n", - "n_points = len(nums)\n", - "mean = mean / n_points\n", - "print(\"The mean is \", mean)\n", + "## Print out mean, variance and standard deviation\n", "```\n", - "The first line gets the length of the list using a function built into Python called `len()`. We could also calculate this by counting how many times we go around the loop\n", - "We do this division outside the loop - why? What would we calculate if we did it inside the loop?\n", "\n", - "We now have a program that will calculate the mean for a given list of numbers." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "73964114", - "metadata": {}, - "outputs": [], - "source": [ + "We now have a program that will calculate the mean for a given list of numbers.\n", + "```python\n", "# Start and import any libraries\n", "## Import math library for square root\n", "from math import sqrt\n", @@ -524,7 +474,11 @@ "\n", "\n", "# Output the results\n", - "## Print out mean, variance and standard deviation" + "## Print out mean, variance and standard deviation\n", + "\n", + "```\n", + "\n", + "

      " ] }, { @@ -532,6 +486,9 @@ "id": "bf5ce6cc", "metadata": {}, "source": [ + "
      \n", + "Coding 2: The standard deviation \n", + "\n", "Next we need to calculate the standard deviation. This means another for loop to calculate the squared difference from the mean.\n", "Again any time we know we need to sum a list of numbers there must be a loop\n", "```python\n", @@ -547,61 +504,8 @@ "Note that we have defined the var varible and set to zero\n", "We have also removed some of the earlier print statements we used for checking our code.\n", "\n", - "**Run and test** you should get a value of 8.25. Again this agrees with the value we expect that we calculated earlier. Our code is doing what we want" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "aa1e885d", - "metadata": {}, - "outputs": [], - "source": [ - "# Start and import any libraries\n", - "## Import math library for square root\n", - "from math import sqrt\n", - "\n", - "# Set up key variables needed later\n", - "mean = 0\n", - "\n", - "# Input data to work with\n", - "## Get list of numbers\n", - "print(\"Load Numbers\")\n", - "nums = [1,2,3,4,5,6,7,8,9,10]\n", - "print(\"Loaded\")\n", - "\n", - "# Do calculations on data\n", - "## Calculate Mean\n", - " ## Sum up all the numbers - get sum\n", - "for x in nums:\n", - " mean = mean + x\n", - " ##divide the sum by the number of values - get mean\n", - "\n", - "n_points = len(nums)\n", - "mean = mean / n_points\n", - "print(\"The mean is \", mean)\n", - "\n", - "## Calculate Variance\n", - " ## For each number\n", - " ## take difference from the mean - get diff\n", - " ## square that diff - get square diff\n", - " ## add to total square diff - get total diff \n", - "\n", - " ## divide the total diff by the number of values - get variance\n", - " \n", - "## Calculate std\n", - " ## Take square root of variance - get std\n", - "\n", + "**Run and test** you should get a value of 8.25. Again this agrees with the value we expect that we calculated earlier. Our code is doing what we want\n", "\n", - "# Output the results\n", - "## Print out mean, variance and standard deviation" - ] - }, - { - "cell_type": "markdown", - "id": "3402195e", - "metadata": {}, - "source": [ "Our last step in the calculation is to take the square root of the variance to get the standard deviation\n", "```python\n", "std = sqrt(var)\n", @@ -616,63 +520,9 @@ "**So that is our first program**\n", "\n", "\n", - "The final step is just to move the print statements into the output section of code (if we want)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "24d8ade7", - "metadata": {}, - "outputs": [], - "source": [ - "# Start and import any libraries\n", - "## Import math library for square root\n", - "from math import sqrt\n", - "\n", - "# Set up key variables needed later\n", - "mean = 0\n", - "var = 0\n", - "\n", - "# Input data to work with\n", - "## Get list of numbers\n", - "print(\"Load Numbers\")\n", - "nums = [1,2,3,4,5,6,7,8,9,10]\n", - "print(\"Loaded\")\n", - "\n", - "# Do calculations on data\n", - "## Calculate Mean\n", - " ## Sum up all the numbers - get sum\n", - "for x in nums:\n", - " mean = mean + x\n", - " ##divide the sum by the number of values - get mean\n", - "\n", - "n_points = len(nums)\n", - "mean = mean / n_points\n", - "\n", - "\n", - "## Calculate Variance\n", - " ## For each number\n", - " ## take difference from the mean - get diff\n", - " ## square that diff - get square diff\n", - " ## add to total square diff - get total diff\n", - "\n", - "for x in nums:\n", - " var = var + ((x-mean)*(x-mean))\n", - "\n", - " ## divide the total diff by the number of values - get variance\n", - "var = var /n_points\n", - "\n", - " \n", - " \n", - "## Calculate std\n", - " ## Take square root of variance - get std\n", - "\n", + "The final step is just to move the print statements into the output section of code (if we want)\n", "\n", - "# Output the results\n", - "## Print out mean, variance and standard deviation\n", - "print(\"The mean is \", mean)\n", - "print(\"The variance is \",var)" + "

      " ] }, { @@ -680,7 +530,8 @@ "id": "79f54723", "metadata": {}, "source": [ - "## Final Programme\n", + "
      \n", + "Final Programme \n", "\n", "```python\n", "# Start and import any libraries\n", @@ -733,7 +584,8 @@ "print(\"The variance is \",var)\n", "print(\"Standard Deviation \",std)\n", "\n", - "```" + "```\n", + "

      " ] }, { From 83c30277cb2c92c210f4e6c28234df38975f7bfa Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Fri, 5 Sep 2025 13:51:34 +0100 Subject: [PATCH 80/94] Final move of files --- lessons/{ => advanced_libs}/advanced_libraries.md | 0 lessons/{ => variables}/manipulating_variables.md | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename lessons/{ => advanced_libs}/advanced_libraries.md (100%) rename lessons/{ => variables}/manipulating_variables.md (100%) diff --git a/lessons/advanced_libraries.md b/lessons/advanced_libs/advanced_libraries.md similarity index 100% rename from lessons/advanced_libraries.md rename to lessons/advanced_libs/advanced_libraries.md diff --git a/lessons/manipulating_variables.md b/lessons/variables/manipulating_variables.md similarity index 100% rename from lessons/manipulating_variables.md rename to lessons/variables/manipulating_variables.md From eff97441199af378e57ec008bcf1c5b6d5237690 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Fri, 5 Sep 2025 13:51:43 +0100 Subject: [PATCH 81/94] redirect toc to moved files --- _toc.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_toc.yml b/_toc.yml index 1100edb..54294f6 100644 --- a/_toc.yml +++ b/_toc.yml @@ -11,7 +11,7 @@ parts: - file: lessons/basics/write_run_python.md - file: lessons/basics/using_jupyter_notebook.md - file: lessons/basics/python_introduction.ipynb - - file: lessons/manipulating_variables.md + - file: lessons/variables/manipulating_variables.md sections: - file: lessons/variables/Variable_data_types.ipynb - file: lessons/variables/mathematical_operators.ipynb @@ -44,7 +44,7 @@ parts: - file: lessons/common_libs/NumPy_axes_operations.ipynb - file: lessons/common_libs/argparse.ipynb - file: lessons/common_libs/intro_to_pandas.ipynb - - file: lessons/advanced_libraries.md + - file: lessons/advanced_libs/advanced_libraries.md sections: - file: lessons/advanced_libs/Intro_to_ASE.ipynb - file: lessons/advanced_libs/PiC_scipy.ipynb From ee68ecb03fb4ee6375344e3883fbccd94fd26ad6 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 15 Sep 2025 10:39:07 +0100 Subject: [PATCH 82/94] Added some further info stuff --- _toc.yml | 3 + lessons/further_info/further_info.md | 3 + lessons/further_info/numerical_errors.ipynb | 221 ++++++++++++++++++++ 3 files changed, 227 insertions(+) create mode 100644 lessons/further_info/further_info.md create mode 100644 lessons/further_info/numerical_errors.ipynb diff --git a/_toc.yml b/_toc.yml index 54294f6..be39b3c 100644 --- a/_toc.yml +++ b/_toc.yml @@ -49,6 +49,9 @@ parts: - file: lessons/advanced_libs/Intro_to_ASE.ipynb - file: lessons/advanced_libs/PiC_scipy.ipynb - file: lessons/advanced_libs/RDKit_drawing.ipynb + - file: lessons/further_info/further_info.md + sections: + - file: lessons/further_info/numerical_errors.ipynb - caption: Teaching Python in Chemistry Meeting Blogs chapters: - file: 2025-meeting diff --git a/lessons/further_info/further_info.md b/lessons/further_info/further_info.md new file mode 100644 index 0000000..2d12793 --- /dev/null +++ b/lessons/further_info/further_info.md @@ -0,0 +1,3 @@ +## Further Information + +In this section you will find work books that contain further information on programming. They are here as interest and are not needed for the tutorials \ No newline at end of file diff --git a/lessons/further_info/numerical_errors.ipynb b/lessons/further_info/numerical_errors.ipynb new file mode 100644 index 0000000..85c0f0c --- /dev/null +++ b/lessons/further_info/numerical_errors.ipynb @@ -0,0 +1,221 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction\n", + "\n", + "We like to think that if we run the same model/programme twice with the same inputs we would get the same outputs. This isn't always strictly true.\n", + "\n", + "We also like to think about the computer as being deterministic (if not in those words), we have at least tacitly assumed that the computer always does the calculations correctly. Again, this isn't strictly true\n", + "\n", + "We will, very, briefly, consider why and we now have to understand something about how computers work and handle numbers.\n", + "\n", + "(some of the examples are taken from here https://docs.python.org/2/tutorial/floatingpoint.html)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Binary\n", + "\n", + "Computers work in binary. So numbers are stored as a series of bits representing powers of 2. When a computer is described as having a certain number of bits this is what is meant. So most computers are now 64 bit, so the base representation of a number can have up to 64 bits. So an unsigned integer could be $2^{64}-1$ \n", + "(as it starts at 0) in size or 18,446,744,073,709,551,615. If we allow the integer to be signed then it could be $2^{63}-1$ or 9,223,372,036,854,775,807 (but it can also be negative).\n", + "\n", + "Binary works as each bit in the integer represents that power of 2. So the first bit (bit 0) can be equal to 0 or 1 ($2^1$)\n", + "The next bit (bit 1) can be 0 or 1 where the 1 means the value is $2^2$.\n", + "\n", + "So a value of 1 in binary is 0 1, while a value of 2 is 1 0, and 3 would be 1 1. This then carries on as more bits are added.\n", + "\n", + "So the 32-bit signed integer -2080215094 can be broken down into the following bits:\n", + "\n", + "|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0\n", + "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n", + "|1|0|0|0|0|1|0|0|0|0|0|0|0|0|1|0|0|1|1|0|1|1|1|1|1|1|0|0|1|0|1|0|\n", + "\n", + "This means if a value can be represented as an integer, then it can be represented exactly in a computer program.\n", + "\n", + "The same is not true to a decimal" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Decimals\n", + "\n", + "A quick reminder, not all numbers can be represented exactly as a decimal. For example 1/3 repeats infinitely as 0.33333333... while Pi can not even be represented as a fraction and again occurs as an decimal which is infinite in length. \n", + "\n", + "We can have similar issues in other bases, so though we can represent 1/10 perfectly in base10 as 0.1. It is not possible for it to be represented in base2 (binary). Instead, in binary it is an infinitely repeating fraction.\n", + "\n", + "So before we have even included a computer in the mix we can recorgnise that not all numbers can be represented with exact precision in all bases. \n", + "\n", + "## Decimals Floating Point\n", + "\n", + "The first thing to recorgnise is that nearly all computer languages offer a floating point representation rather than a decimal representation.\n", + "\n", + "Floats represent a decimal in two parts. The one part are the digits (called the significand) to a given number of significant figures and represented as an integer, the other part is the power of ten (the exponent). \n", + "\n", + "This allows flexibilty in calculations but it is very common for a number to not be easily represented in this format and all floats are, to a certain extent, approximations of the true decimal, and in the cases such as 1/3 or PI are already approximations of an approximation.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Types of Numeric Error\n", + "\n", + "Having briefly covered these problems we can introduce the numeric errors we can meet\n", + "\n", + "### Representation Error\n", + "\n", + "Consider 1/10 in a float. As we discussed it can not be shown exactly as an integer, but floats are stored (in part as integers)\n", + "\n", + "try the following code\n", + "```python\n", + "from decimal import Decimal\n", + "print(0.1)\n", + "Decimal(0.1)\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What happened, with print we get a nice 0.1, with Decimal we get a very odd number. This is because print rounds off the float to make our life easier. Using the Decimal function we round nothing.\n", + "\n", + "Now the difference looks insignificant, but imagine running a calculation many times:\n", + "\n", + "```python\n", + "su = 0\n", + "for val in range(100):\n", + " su = su + 0.1\n", + "print(su)\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Oh dear\n", + "\n", + "This is an error due to how the number is represented. \n", + "\n", + "It will also appear when numbers are rounded.\n", + "\n", + "try:\n", + "```python\n", + "round(2.675, 2)\n", + "```\n", + "\n", + "then\n", + "\n", + "```python\n", + "Decimal(2.675)\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Again, the representation and how it is displayed has hidden the fact that the closest floating point representation to 2.675 is smaller, so it rounds down. This can lead to common logic fails where > or < comparisions don't give the expected results.\n", + "\n", + "This is why you are always advised to use integers in comparisions, or if you must use floats use a range for the comparision." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Round off \n", + "\n", + "Round off error is due to the limit in size of the floating point representation. So pi is represented as 3.141592653589793115997963468544185161590576171875. But this is a truncation of the true expansion. Again it is only a small difference. \n", + "\n", + "But if you repeat the calculation many times, these small errors can accumulate until it becomes meaningful.\n", + "\n", + "The other issue where round off can occur is when a big and a small number are added together. Due to how the float is represented the effect of the small number might be lost as it can not be represented with in the precision. For example if the float has 8 digits of representation then if the magnitude of the difference between the numbers is greater than 8 orders it can not be included.\n", + "\n", + "Therefore, where possible it is advised to add the small numbers together before adding them to a bigger number to make sure they get included." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Precision\n", + "\n", + "Something to consider is how precise a number can be, we can print out or represent a number to a large number of figures. But are these all meaningful or is it *superious* precision.\n", + "\n", + "The concept of *machine epsilon* helps to decide. Machine Epsilon is the difference between 1 and the next largest floating point number. It is the value that can be added to 1 and generate a new floating point number. If a value less than the machine epsilon is added to 1 then the number is still 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "If you are aware of this errors then they can be worked around, or included as part of analysis. But it is always something to consider when running any calculation\n", + "\n", + "Also, remember that a lot of the workings of a programming language are hidden from you. Particularly in Python which is designed for simplicity" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 9ca02e44c6e3a3f265a0abb0ff13ad46b0d40fde Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 15 Sep 2025 10:48:49 +0100 Subject: [PATCH 83/94] Add num errors title --- lessons/further_info/numerical_errors.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lessons/further_info/numerical_errors.ipynb b/lessons/further_info/numerical_errors.ipynb index 85c0f0c..c6b4d25 100644 --- a/lessons/further_info/numerical_errors.ipynb +++ b/lessons/further_info/numerical_errors.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Introduction\n", + "## Numerical errors\n", "\n", "We like to think that if we run the same model/programme twice with the same inputs we would get the same outputs. This isn't always strictly true.\n", "\n", From dd831bbee0085e640296e113bb8e8be44ea410b3 Mon Sep 17 00:00:00 2001 From: m-rivera Date: Mon, 22 Sep 2025 15:13:33 +0100 Subject: [PATCH 84/94] make initial lessons presentable --- lessons/variables/Variable_data_types.ipynb | 127 ++---- lessons/variables/lists_and_indexing.ipynb | 420 ++++++++++++++++-- .../variables/mathematical_operators.ipynb | 11 +- 3 files changed, 439 insertions(+), 119 deletions(-) diff --git a/lessons/variables/Variable_data_types.ipynb b/lessons/variables/Variable_data_types.ipynb index 2448fc5..bd9881b 100644 --- a/lessons/variables/Variable_data_types.ipynb +++ b/lessons/variables/Variable_data_types.ipynb @@ -19,8 +19,7 @@ "## Learning Outcomes\n", "\n", "* Understand how to print basic outputs in python\n", - "* Understand how to identify and verify the type of variable\n", - "* Create and print lists in python\n" + "* Understand how to identify and verify the type of variable" ] }, { @@ -182,19 +181,11 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": { "id": "e1jc0uR_LXLE" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], + "outputs": [], "source": [ "atomic_number = 2\n", "print(type(atomic_number))" @@ -244,16 +235,7 @@ "metadata": { "id": "FV_SqZ4N3edG" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-5\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "ionic_charge = -2\n", "print(ionic_charge)\n", @@ -273,22 +255,11 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { "id": "axf-MWdz4V03" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "14.0067\n", - "\n", - "1.602e-19\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "nitrogen_mass = 14.0067\n", "print(nitrogen_mass)\n", @@ -305,7 +276,7 @@ "id": "K6aMfYCUAjMn" }, "source": [ - "#### Boolean\n", + "### Boolean\n", "\n", "Boolean (`bool`) can only have the value `True` or `False`." ] @@ -316,16 +287,7 @@ "metadata": { "id": "gkuDEMKq4csJ" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "True\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "boiling = True\n", "print(boiling)\n", @@ -349,20 +311,11 @@ "metadata": { "id": "ObD5OOJswqse" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Chemistry\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "molecule_name = \"acetaldehyde\"\n", - "print(subject)\n", - "print(type(subject))" + "print(molecule_name)\n", + "print(type(molecule_name))" ] }, { @@ -376,16 +329,7 @@ "cell_type": "code", "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The atomic mass of nitrogen is 14.0067.\n", - "Heavier than carbon: True.\n" - ] - } - ], + "outputs": [], "source": [ "atomic_mass = 14.0067\n", "element_name = \"nitrogen\"\n", @@ -406,31 +350,55 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Exercise " + "
      \n", + "
      Exercise: Correct variable typing\n", + "\n", + "---\n", + "\n", + "The following piece of code only correctly if `mass` is correctly defined as a number:\n", + "\n", + ">```Python\n", + ">mass = \"35\"\n", + ">double_mass = double_mass*2\n", + ">print(f\"Two times {mass} kg makes {double_mass} kg.\")\n", + "\n", + "Run this code, find what is wrong with it and fix it.\n", + "
      \n", + "
      " ] }, { "cell_type": "markdown", - "metadata": { - "id": "5Rep96srUZeM" - }, + "metadata": {}, "source": [ - "### TO-DO List\n", - "\n", - "Add in an introduction to f-strings.\n", + "
      \n", + " Click to view answer \n", + "You should have noticed that the number 35 was multiplied incorrectly. This is because `mass` was defined as a string, since the number `\"32\"` was written with quotation marks. If you remove the quotation marks, the result should become correct:\n", "\n", - "Add in some more worked examples\n", + ">```Python\n", + ">mass = 35\n", + ">double_mass = double_mass*2\n", + ">print(f\"Two times {mass} kg makes {double_mass} kg.\")\n", "\n", - "Make a separate lesson for lists and dictionaries" + "In a few lessons, we will look more closely at how operators (like multiplication) work on different data types. For the moment, you can conclude that in order to do maths with a variable, it should be a number.\n", + "

      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## f-strings\n", + "## Learning outcomes\n", + "\n", + "* Understand how to print basic outputs in python using `print()`\n", + "* Understand how to identify and verify the type of variable with `type()`\n", + "\n", + "## Summary \n", "\n", - "Place holder to allow links" + "- A variable is a named place that contains a value.\n", + "- The most common values are a number (`int`, `float`), a word (`str`), or a `True/False` statement (`bool`).\n", + "- When naming a variable, make sure that the name is short, descriptive, and consistent.\n", + "- To make a string out of several data types, you can use an f-string, like this: `output = f\"The charge is {charge}\"." ] }, { @@ -461,7 +429,6 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.9" - } }, "nbformat": 4, diff --git a/lessons/variables/lists_and_indexing.ipynb b/lessons/variables/lists_and_indexing.ipynb index 750c0f1..86d2c09 100644 --- a/lessons/variables/lists_and_indexing.ipynb +++ b/lessons/variables/lists_and_indexing.ipynb @@ -18,8 +18,7 @@ "source": [ "## Learning Outcomes\n", "\n", - "* Understand what lists and dictionaries are\n", - "* Generate them\n", + "* Creating lists and dictionaries\n", "* Extract information from them\n" ] }, @@ -42,40 +41,88 @@ "id": "HFWW4cO9BlLI" }, "source": [ - "#### Lists\n", + "## Lists\n", "\n", "A list (`list`) is a collection of any number of values. To declare a list, write different values in between square brackets `[]` and separated by commas." ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": { "id": "3C66kNgC4sQf" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['H', 'He', 'Li']\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "elements = ['H', 'He', 'Li']\n", "print(elements)\n", "print(type(elements))" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lists can contain more lists. A list containing lists (which themselves could contain more lists) is called a _nested list_. To make them more legible, we often write them over several lines." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# A list of molecules where each molecule is represented by a list of atoms\n", + "molecules = [[\"H\",\"H\",\"O\"],[\"H\",\"H\",\"H\",\"C\"]]\n", + "\n", + "# The list can identically be written like this\n", + "molecules = [[\"H\",\"H\",\"O\"], # water\n", + " [\"H\",\"H\",\"H\",\"C\"]] # methane\n", + "\n", + "print(molecules)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
      \n", + "
      Exercise: Nesting lists\n", + "\n", + "---\n", + "\n", + "Writing lists of lists requires a lot of brackets, which can lead to typos. What follows is a broken list which should contain two lists: the first with the numbers 0.1, 0.2, and 0.3, and the second with 1.0, 2.0, and 3.0. Find the errors in this list and fix them:\n", + "\n", + ">```Python\n", + "> coordinates = [[0.1, 0.2, 0.3[]1.0, 2.0 3.0]]\n", + ">print(coordinates)\n", + "\n", + "
      \n", + "
      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
      \n", + " Click to view answer\n", + "\n", + "You should keep close track of both the commas inside each sublist and in between each sublist:\n", + ">```Python\n", + "> coordinates = [[0.1, 0.2, 0.3],[1.0, 2.0, 3.0]]\n", + ">print(coordinates)\n", + "\n", + "

      " + ] + }, { "cell_type": "markdown", "metadata": { "id": "98-HGTmIBoSl" }, "source": [ - "#### Dictionaries\n", + "## Dictionaries\n", "\n", "A dictionary (`dict`) also contains multiple values, like a list. However, a dictionary always contains entries in the form of pairs. The first part of the pair is called the \"key\", and represents the known value (like a word in a real dictionary). The second part is the \"value\" and represents the unknown value (like the definition). To declare a dictionary, write pairs of \"keys\" and \"values\" in between curly braces `{}` like this: `{key_1: value_1, key_2: value_2}`." ] @@ -86,17 +133,7 @@ "metadata": { "id": "lAOQrm4LE24D" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'Hydrogen': 1.008, 'Helium': 4.002602, 'Lithium': 6.941}\n", - "1.008\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "atomic_weights = {\n", " \"Hydrogen\": 1.008,\n", @@ -108,27 +145,266 @@ "print(type(atomic_weights))" ] }, + { + "cell_type": "markdown", + "metadata": { + "id": "EbJjHF7fD0Ea" + }, + "source": [ + "
      \n", + "
      Exercise: Writing a dictionary\n", + "\n", + "---\n", + "\n", + "The pKa of methanol is 15.3. For ammonia, it's 32.5. Write a dictionary where the names of these molecules are the keys, and the values are their pKas.\n", + "\n", + "
      \n", + "
      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
      \n", + " Click to view answer\n", + "\n", + "Here is the correct syntax. Make sure that your colons `:` and commas `,` are in the right places!\n", + "\n", + ">```Python\n", + ">pKas = {\n", + ">'methanol' : 15.3,\n", + ">'ammonia' : 32.5,\n", + ">}\n", + "\n", + "

      " + ] + }, { "cell_type": "markdown", "metadata": {}, "source": [ - "**Exercise** Can you work out what the data dictionary below is describing?" + "
      \n", + "
      Exercise: Combining dictionaries and lists\n", + "\n", + "---\n", + "\n", + "Can you work out what information is contained in `data`?\n", + ">```Python\n", + ">data = {\n", + ">'H' : [[1.007825, 99.9885],[2.014102, 0.0115]],\n", + ">'C' : [[12.0, 98.93],[13.003355, 1.07]],\n", + ">'N' : [[14.003074, 99.632],[15.000109, 0.368]],\n", + ">'O' : [[15.994915 , 99.757],[16.999132, 0.038],[17.999160,0.205]]\n", + ">}\n", + "\n", + "
      \n", + "
      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
      \n", + " Click to view answer\n", + "\n", + "Here, we can clearly see why descriptive variable names could be useful. The word `data` is not helping us at all.\n", + "\n", + "In fact, this is a dictionary containing lists of lists of two numbers. The keys are clearly element symbols. As for the values, if we look at each pair of numbers carefully, the first is always close to an integer, much like an atomic mass, and the second is always just under 100 or just above 0.\n", + "\n", + "With these clues, we could guess that this dictionary contains a list of the atomic masses and abundances of different isotopes for each of four elements.\n", + "

      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Accessing parts of a list or dictionary\n", + "### Indexing lists\n", + "\n", + "It can be handy to store sequences of data into a list. For example, if we want to store an absorption spectrum of 100 data points, we just need one list for absorbance and another for wavelength, instead of 200 variables containing different floats.\n", + "\n", + "However, we can find ourselves wanting to access only one part of the list at a time. To this end, we can use _indexing_. To indicate that we are only referring to a specific element of a list, we follow the name of the list by a number in square brackets:" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "id": "EbJjHF7fD0Ea" - }, + "metadata": {}, + "outputs": [], + "source": [ + "elements = ['H', 'He', 'Li']\n", + "print(elements[1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example, we used the number `1`, which returned the _second_ element of the list. This is because the Python programming language counts the position of an element in a list starting from `0`. This position is called the _index_." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
      \n", + "
      Exercise: Indexing\n", + "\n", + "---\n", + "\n", + "Print the first element of this list:\n", + "\n", + ">```Python\n", + ">elements = ['H', 'He', 'Li']\n", + "
      \n", + "
      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
      \n", + " Click to view answer\n", + "\n", + "All you have to do is to use the index `0`.\n", + "\n", + ">```Python\n", + ">elements = ['H', 'He', 'Li']\n", + ">print(elements[0])\n", + "

      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you want to count indices from the end instead of the beginning, use negative numbers and start from `-1`:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, "outputs": [], "source": [ - "data = {\n", - "'H' : [(1.007825, 99.9885),(2.014102, 0.0115)],\n", - "'C' : [ (12.0, 98.93),(13.003355, 1.07)],\n", - "'N' : [(14.003074, 99.632),(15.000109, 0.368)],\n", - "'O' : [(15.994915 , 99.757),(16.999132, 0.038),(17.999160,0.205)]\n", - "}" + "elements = ['H', 'He', 'Li']\n", + "print(elements[-1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Slicing\n", + "You may also need to access ranges of values within a list. In this case, instead of writing one index, write two of them separated by a colon `:`. The resulting list will be the range of values between the two numbers, including the first value and excluding the last. This process is called _slicing_." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "elements = ['H', 'He', 'Li', 'Be']\n", + "print(elements[1:3])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note how `Be` was not printed, despite the fact that it corresponds to `elements[3]`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
      \n", + "
      Exercise: Slicing\n", + "\n", + "---\n", + "\n", + "Indexing and slicing gets a little more delicate when dealing with nested lists. Try to extract the list `[2,3]` from the following nested list:\n", + "\n", + ">```Python\n", + ">elements = [[1,2,3,4],\n", + "> [5,6,7,8]]\n", + "
      \n", + "
      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
      \n", + " Click to view answer\n", + "\n", + "It may help to work step by step. First, we want to isolate the first sublist (`[1,2,3,4]`). Since it's the first list, we can use the index `0`:\n", + "\n", + ">```Python\n", + ">elements = [[1,2,3,4],\n", + "> [5,6,7,8]]\n", + ">print(elements[0])\n", + "\n", + "Thanks to this, we can verify that `elements[0]` indeed corresponds to the first sublist, so we can further slice this list by adding more square brackets:\n", + "\n", + ">```Python\n", + ">elements = [[1,2,3,4],\n", + "> [5,6,7,8]]\n", + ">print(elements[1:3])\n", + "\n", + "

      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
      \n", + "
      Exercise: Slicing a nested list\n", + "\n", + "---\n", + "\n", + "Print the list containing `Li` and `Be` by sliding the following list\n", + "\n", + ">```Python\n", + ">elements = ['H', 'He', 'Li', 'Be']\n", + "
      \n", + "
      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
      \n", + " Click to view answer\n", + "\n", + "We should change the indices accordingly.\n", + "\n", + ">```Python\n", + ">elements = ['H', 'He', 'Li', 'Be']\n", + ">print(elements[3:4])\n", + "

      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Accessing dictionary values\n", + "You can also use access values inside dictionaries but the syntax is different than for lists. Here, instead of writing a number in square brackets, you write a key. In return, you will obtain the corresponding value:" ] }, { @@ -136,6 +412,78 @@ "execution_count": null, "metadata": {}, "outputs": [], + "source": [ + "atomic_weights = {\n", + " \"Hydrogen\": 1.008,\n", + " \"Helium\": 4.002602,\n", + " \"Lithium\": 6.941\n", + "}\n", + "\n", + "print(atomic_weights[\"Helium\"])\n", + "print(type(atomic_weights))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
      \n", + "
      Exercise: Accessing dictionaries\n", + "\n", + "---\n", + "\n", + "Print the atomic weight of lithium, using the dictionary provided:\n", + "\n", + ">```Python\n", + ">atomic_weights = {\n", + "> \"Hydrogen\": 1.008,\n", + "> \"Helium\": 4.002602,\n", + "> \"Lithium\": 6.941\n", + ">}\n", + "\n", + "
      \n", + "
      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
      \n", + " Click to view answer\n", + "\n", + "Simply use `\"Lithium\"` as the key:\n", + ">```Python\n", + ">atomic_weights = {\n", + "> \"Hydrogen\": 1.008,\n", + "> \"Helium\": 4.002602,\n", + "> \"Lithium\": 6.941\n", + ">}\n", + ">print(atomic_weights[\"Lithium\"])\n", + "

      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Learning outcomes\n", + "\n", + "* Creating lists with square brackets and dictionaries with braces.\n", + "* Extract information from them by indexing, slicing, and using keys for dictionaries.\n", + "\n", + "## Summary \n", + "\n", + "- Lists can store multiple values in one same variable. They use `[]`.\n", + "- Dictionaries can do this too but are only useful when we will later want to access values by using keys. They use `{}`.\n", + "- You can use indexing or slicing by writing the name of a list followed by square brackets containing numbers: `masses[3:5]`.\n", + "- For a dictionary, instead of numbers, write the key inside the square brackets: `masses['Li']`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, "source": [] } ], diff --git a/lessons/variables/mathematical_operators.ipynb b/lessons/variables/mathematical_operators.ipynb index 007b162..7028265 100644 --- a/lessons/variables/mathematical_operators.ipynb +++ b/lessons/variables/mathematical_operators.ipynb @@ -156,7 +156,7 @@ "metadata": {}, "source": [ "
      \n", - "
      Exercise 1: Addition and Subtraction\n", + "
      Exercise: Addition and Subtraction\n", "\n", "---\n", "\n", @@ -218,7 +218,7 @@ "metadata": {}, "source": [ "
      \n", - "
      Exercise 2: Multiplication and Division \n", + "
      Exercise: Multiplication and Division \n", "\n", "---\n", "\n", @@ -283,7 +283,7 @@ "metadata": {}, "source": [ "
      \n", - "
      Exercise 3: Exponents\n", + "
      Exercise: Exponents\n", "\n", "---\n", "\n", @@ -951,6 +951,11 @@ "- For more complex functions, import them from a library or module such as `numpy` or `math`. If you import the whole library, you must reference the library using `modulename.function()`, like in the calculation `answer = math.sin(1)`. \n", "- Make sure to place the lines of code importing any functions or libraries at the beginning of the program." ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] } ], "metadata": { From b95b6f8d5453f21357f2e008df164b36e19b7ee4 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Mon, 22 Sep 2025 15:30:52 +0100 Subject: [PATCH 85/94] bringing in Miguel's variables lesson and linking --- _toc.yml | 1 + lessons/further_info/further_info.md | 2 +- lessons/further_info/numerical_errors.ipynb | 2 +- lessons/variables/Variable_data_types.ipynb | 2 +- lessons/variables/lists_and_indexing.ipynb | 4 ++-- lessons/variables/mathematical_operators.ipynb | 2 +- 6 files changed, 7 insertions(+), 6 deletions(-) diff --git a/_toc.yml b/_toc.yml index be39b3c..a1a2a7e 100644 --- a/_toc.yml +++ b/_toc.yml @@ -14,6 +14,7 @@ parts: - file: lessons/variables/manipulating_variables.md sections: - file: lessons/variables/Variable_data_types.ipynb + - file: lessons/variables/lists_and_indexing.ipynb - file: lessons/variables/mathematical_operators.ipynb - file: lessons/variables/Comparisons.ipynb - file: lessons/loops_functions/organising_code.md diff --git a/lessons/further_info/further_info.md b/lessons/further_info/further_info.md index 2d12793..41e210e 100644 --- a/lessons/further_info/further_info.md +++ b/lessons/further_info/further_info.md @@ -1,3 +1,3 @@ -## Further Information +# Further Information In this section you will find work books that contain further information on programming. They are here as interest and are not needed for the tutorials \ No newline at end of file diff --git a/lessons/further_info/numerical_errors.ipynb b/lessons/further_info/numerical_errors.ipynb index c6b4d25..15dc8ec 100644 --- a/lessons/further_info/numerical_errors.ipynb +++ b/lessons/further_info/numerical_errors.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Numerical errors\n", + "# Numerical errors\n", "\n", "We like to think that if we run the same model/programme twice with the same inputs we would get the same outputs. This isn't always strictly true.\n", "\n", diff --git a/lessons/variables/Variable_data_types.ipynb b/lessons/variables/Variable_data_types.ipynb index bd9881b..cb54391 100644 --- a/lessons/variables/Variable_data_types.ipynb +++ b/lessons/variables/Variable_data_types.ipynb @@ -30,7 +30,7 @@ "source": [ "## Prerequisites\n", "\n", - "- Be able to access Google Colab, Jupyter Notebooks or another piece of software that will allow you to interact and practice the code" + "- [Writing and running a Python program](/lessons/basics/write_run_python.md)" ] }, { diff --git a/lessons/variables/lists_and_indexing.ipynb b/lessons/variables/lists_and_indexing.ipynb index 86d2c09..d3fa864 100644 --- a/lessons/variables/lists_and_indexing.ipynb +++ b/lessons/variables/lists_and_indexing.ipynb @@ -31,8 +31,8 @@ "## Prerequisites\n", "\n", "You should be able to:\n", - "- Run a Python notebook\n", - "- Be familiar with the concept of data types" + "- [Write and run a Python program](/lessons/basics/write_run_python.md)\n", + "- [Be familiar with the concept of data types](/lessons/variables/Variable_data_types.ipynb)" ] }, { diff --git a/lessons/variables/mathematical_operators.ipynb b/lessons/variables/mathematical_operators.ipynb index 7028265..8a886ab 100644 --- a/lessons/variables/mathematical_operators.ipynb +++ b/lessons/variables/mathematical_operators.ipynb @@ -20,7 +20,7 @@ "## Prerequisites\n", "\n", "- [Variables and their data types](/lessons/variables/Variable_data_types.ipynb)\n", - "- [Printing f-strings](/lessons/variables/Variable_data_types.ipynb#f-strings)\n" + "- [Printing f-strings](/lessons/variables/Variable_data_types.ipynb#strings)\n" ] }, { From 3de0e9bcb4d0631259dbe3925f3f3a59e59e4707 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Tue, 23 Sep 2025 13:57:50 +0100 Subject: [PATCH 86/94] command line stuff --- lessons/solving_problems/command_line.md | 63 ++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 lessons/solving_problems/command_line.md diff --git a/lessons/solving_problems/command_line.md b/lessons/solving_problems/command_line.md new file mode 100644 index 0000000..934ea36 --- /dev/null +++ b/lessons/solving_problems/command_line.md @@ -0,0 +1,63 @@ +# Using the command line + +It is often necessary (or quicker) to run Python from the command line. This is a *very* quick guide to using a command line, it will get you started. + +The first step is to open your terminal. How you do this depends on the type of PC you are using. + +On Windows see if the following are installed: +- Terminal (this is a more modern implementation) +- Powershell (if you have conda installed run Anaconda Powershell Prompt) +- Cmd (this is considered a bit out of date now, if you have conda installed run Anaconda Prompt) + +On a Mac +- Terminal + +On Linux it will depend on your distro. Generally look for an app called one of the following: +- Terminal +- Command +- Prompt +- Shell + +Once opened we can do various things. Initially it should look something like this: + +![An image of a terminal with just the current directory showing](/lessons/solving_problems/images/term_1.png) + +Depending on the 'shell' that you have you might have more information, such as your user name. We can now enter commands into this prompt. + +Most useful will be + +| Command | Effect | +|---|---| +| *cd* | Followed by a path will change directory | +| *ls* | Lists the contents of the current directory | +| *mkdir* | Followed by a name will create a directory of that name | + +When we type a path we can do so in two ways. Either absolute or relative. Absolute is a full path from the users *root* directory. This is normally the folder you start in when you open a terminal. In the example above we start in Users/User. Say we want to open the Documents folder that is in this User folder. We can type the following: + +```bash + cd Users/User/Documents +``` +However, we can also do a relative path. + +```bash +cd ./Documents +``` +Here the path is relative to which ever directory we are *currently* in. A single period means the current folder while two periods means go up a level. + +For example, when we are in the Users/User/Documents folder, if we type: + +```bash +cd ../ +``` +Then we will move back into the Users/User folder. Or again starting in Users/User/Documents +```bash +cd ../../ +``` +this will move us up two levels in the Users folder + +To then run a Python script, easiest is to navigate to the folder where the script is and run the following (assuming that the script is call python_prog.py) + +```bash +python ./python_prog.py +``` + From 6765857c674cfa4c61e5b0b955889b8001c7fc2e Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Tue, 23 Sep 2025 13:57:58 +0100 Subject: [PATCH 87/94] cli tutorial --- _toc.yml | 2 +- lessons/solving_problems/command_line.ipynb | 25 --------------------- 2 files changed, 1 insertion(+), 26 deletions(-) delete mode 100644 lessons/solving_problems/command_line.ipynb diff --git a/_toc.yml b/_toc.yml index a1a2a7e..6418183 100644 --- a/_toc.yml +++ b/_toc.yml @@ -34,7 +34,7 @@ parts: - file: lessons/solving_problems/errors_and_debug.ipynb - file: lessons/solving_problems/writing_a_program.ipynb - file: lessons/solving_problems/version_control.ipynb - - file: lessons/solving_problems/command_line.ipynb + - file: lessons/solving_problems/command_line.md - file: lessons/solving_problems/flowcharts.ipynb - file: lessons/solving_problems/style-and-comments.ipynb - file: lessons/common_libs/common_libraries.md diff --git a/lessons/solving_problems/command_line.ipynb b/lessons/solving_problems/command_line.ipynb deleted file mode 100644 index 8e66cf7..0000000 --- a/lessons/solving_problems/command_line.ipynb +++ /dev/null @@ -1,25 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "cc5b6b2f", - "metadata": {}, - "source": [ - "# Using the Command Line" - ] - }, - { - "cell_type": "markdown", - "id": "0507345b", - "metadata": {}, - "source": [] - } - ], - "metadata": { - "language_info": { - "name": "python" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From 6cb3631f65bdb65a50be91ed7bb58707f73a9288 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Wed, 1 Oct 2025 08:53:24 +0100 Subject: [PATCH 88/94] Fixed some typos - backporting from UCL_lessons --- lessons/variables/Variable_data_types.ipynb | 6 +++--- lessons/variables/lists_and_indexing.ipynb | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lessons/variables/Variable_data_types.ipynb b/lessons/variables/Variable_data_types.ipynb index cb54391..0de9b36 100644 --- a/lessons/variables/Variable_data_types.ipynb +++ b/lessons/variables/Variable_data_types.ipynb @@ -359,7 +359,7 @@ "\n", ">```Python\n", ">mass = \"35\"\n", - ">double_mass = double_mass*2\n", + ">double_mass = mass*2\n", ">print(f\"Two times {mass} kg makes {double_mass} kg.\")\n", "\n", "Run this code, find what is wrong with it and fix it.\n", @@ -373,11 +373,11 @@ "source": [ "
      \n", " Click to view answer \n", - "You should have noticed that the number 35 was multiplied incorrectly. This is because `mass` was defined as a string, since the number `\"32\"` was written with quotation marks. If you remove the quotation marks, the result should become correct:\n", + "You should have noticed that the number 35 was multiplied incorrectly. This is because mass was defined as a string, since the number \"32\" was written with quotation markss. If you remove the quotation marks, the result should become correct:\n", "\n", ">```Python\n", ">mass = 35\n", - ">double_mass = double_mass*2\n", + ">double_mass = mass*2\n", ">print(f\"Two times {mass} kg makes {double_mass} kg.\")\n", "\n", "In a few lessons, we will look more closely at how operators (like multiplication) work on different data types. For the moment, you can conclude that in order to do maths with a variable, it should be a number.\n", diff --git a/lessons/variables/lists_and_indexing.ipynb b/lessons/variables/lists_and_indexing.ipynb index d3fa864..a7db5f8 100644 --- a/lessons/variables/lists_and_indexing.ipynb +++ b/lessons/variables/lists_and_indexing.ipynb @@ -361,7 +361,7 @@ ">```Python\n", ">elements = [[1,2,3,4],\n", "> [5,6,7,8]]\n", - ">print(elements[1:3])\n", + ">print(elements[0][1:3])\n", "\n", "

      " ] @@ -395,7 +395,7 @@ "\n", ">```Python\n", ">elements = ['H', 'He', 'Li', 'Be']\n", - ">print(elements[3:4])\n", + ">print(elements[2:4])\n", "

      " ] }, From 1767a99cd77e3011b6c455280da3c71906d51ad1 Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Wed, 1 Oct 2025 08:55:03 +0100 Subject: [PATCH 89/94] fixed H and O instead of mass_H and mass_O --- lessons/variables/mathematical_operators.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lessons/variables/mathematical_operators.ipynb b/lessons/variables/mathematical_operators.ipynb index 8a886ab..fe30955 100644 --- a/lessons/variables/mathematical_operators.ipynb +++ b/lessons/variables/mathematical_operators.ipynb @@ -84,7 +84,7 @@ "mass_H = 1.008 # g mol-1\n", "mass_O = 15.999 # g mol-1\n", "\n", - "mass_H2O = 2 * H + O\n", + "mass_H2O = 2 * mass_H + mass_O\n", "print(\"The mass of water is: \" , mass_H2O, \" g mol-1\") \n", "```\n", "\n", From 3ba717a2b181218faf99df00af7324c6e92163b0 Mon Sep 17 00:00:00 2001 From: m-rivera Date: Wed, 1 Oct 2025 10:45:04 +0100 Subject: [PATCH 90/94] correct Na Cl example --- lessons/variables/mathematical_operators.ipynb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lessons/variables/mathematical_operators.ipynb b/lessons/variables/mathematical_operators.ipynb index fe30955..6886513 100644 --- a/lessons/variables/mathematical_operators.ipynb +++ b/lessons/variables/mathematical_operators.ipynb @@ -222,11 +222,11 @@ "\n", "---\n", "\n", - "The interaction potential between two isolated ions in water, Na+ (ionic radius = 116 pm) and Cl+ (ionic radius = 157 pm) is given by the following equation:\n", + "The interaction potential between two isolated ions in water, Na+ (ionic radius = 116 pm) and Cl- (ionic radius = 157 pm) is given by the following equation:\n", "\n", - "$ V(r) = \\frac{q_{Na^+} \\ q_{Cl^+}}{4 \\ \\pi \\ \\epsilon \\ \\epsilon_{0} \\ r}\\ $\n", + "$ V(r) = \\frac{q_{Na^+} \\ q_{Cl^-}}{4 \\ \\pi \\ \\epsilon \\ \\epsilon_{0} \\ r}\\ $\n", "\n", - "Where $q_{Na^+}$ and $q_{Cl^+}$ are the relative charges on the ions (equivalent to Β± the charge on an electron, 1.602×10-19 Coulombs), $r$ is the distance between ionic nuclei (sum of ionic radii given above) in m, $\\epsilon$ is the relative permittivity ($\\epsilon$ = 78.7 Fm-1 in water), and $\\epsilon_0$ is the permittivity of free space ($\\epsilon_0$ = 8.85Γ—10-12 Fm-1).\n", + "Where $q_{Na^+}$ and $q_{Cl^-}$ are the relative charges on the ions (equivalent to Β± the charge on an electron, 1.602×10-19 Coulombs), $r$ is the distance between ionic nuclei (sum of ionic radii given above) in m, $\\epsilon$ is the relative permittivity ($\\epsilon$ = 78.7 Fm-1 in water), and $\\epsilon_0$ is the permittivity of free space ($\\epsilon_0$ = 8.85Γ—10-12 Fm-1).\n", "\n", " By copying out and completing the code below, calculate the interaction potential of a sodium and chlorine ion in water using the above equation.\n", "\n", @@ -260,7 +260,7 @@ "q_Cl = -1.602e-19 # Coulombs\n", "e = 78.7 # F m-1\n", "e_0 = 8.85e-12 # F m-1\n", - "r = 116e-12 + 167e-12 # m\n", + "r = 116e-12 + 157e-12 # m\n", "pi = 3.1415 \n", "\n", "interaction_potential = (q_Na*q_Cl)/(4 * pi * e * e_0 *r)\n", @@ -269,7 +269,7 @@ "```\n", "\n", "You should have got the output:\n", - "``` -1.036e-20 J```\n", + "``` -1.074e-20 J```\n", "\n", "In this sum, we have used round brackets to avoid ambiguity with the top and bottom of the fraction. \n", "\n", From f77976a21656ed4994491ba119a2355789ddcc9c Mon Sep 17 00:00:00 2001 From: Tarabella Middleton Date: Tue, 7 Oct 2025 09:54:06 +0100 Subject: [PATCH 91/94] style + comments --- lessons/solving_problems/style-and-comments.ipynb | 1 + 1 file changed, 1 insertion(+) diff --git a/lessons/solving_problems/style-and-comments.ipynb b/lessons/solving_problems/style-and-comments.ipynb index 4bd4654..61645f3 100644 --- a/lessons/solving_problems/style-and-comments.ipynb +++ b/lessons/solving_problems/style-and-comments.ipynb @@ -358,6 +358,7 @@ " Molecule name.\n", " var_3 : INT\n", " Conversion constant.\n", + " Default is 40.\n", " var_4 : FLOAT\n", " Standard number.\n", " \n", From 6e6eac3b5c796af95652ed8df420a98513816f7f Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Wed, 8 Oct 2025 08:05:47 +0100 Subject: [PATCH 92/94] Added link to f string specifers --- lessons/variables/mathematical_operators.ipynb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lessons/variables/mathematical_operators.ipynb b/lessons/variables/mathematical_operators.ipynb index 6886513..a79b3cc 100644 --- a/lessons/variables/mathematical_operators.ipynb +++ b/lessons/variables/mathematical_operators.ipynb @@ -147,6 +147,8 @@ "```\n", "\n", "The syntax :.5f indicates that the calculation should be given to 5 decimal places. The number can be changed to any number of desired decimal places.\n", + "More information on the formatting codes can be found [here](https://docs.python.org/3/library/string.html#formatspec)\n", + "Most useful will be the *f* specifier (for floats to control number of decimal points) and the *e* specifier (for scientific notation).\n", "\n", "

      " ] From 48338996e16e04646368d96f0b53f962305f0c8d Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Wed, 8 Oct 2025 08:08:33 +0100 Subject: [PATCH 93/94] Sliding typo fixed --- lessons/variables/lists_and_indexing.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lessons/variables/lists_and_indexing.ipynb b/lessons/variables/lists_and_indexing.ipynb index a7db5f8..35e9c6a 100644 --- a/lessons/variables/lists_and_indexing.ipynb +++ b/lessons/variables/lists_and_indexing.ipynb @@ -375,7 +375,7 @@ "\n", "---\n", "\n", - "Print the list containing `Li` and `Be` by sliding the following list\n", + "Print the list containing `Li` and `Be` by slicing the following list\n", "\n", ">```Python\n", ">elements = ['H', 'He', 'Li', 'Be']\n", From ff73e0a45eee9891667ae553e9c7989ac6aa077c Mon Sep 17 00:00:00 2001 From: Mike Parkes Date: Wed, 8 Oct 2025 08:34:35 +0100 Subject: [PATCH 94/94] Added zip for file downloads --- lessons/files/data_record.csv | 200 ++++++++++++++++++ lessons/files/files.md | 2 + lessons/files/practice_files/README.md | 3 + .../files/practice_files/practice_files.zip | Bin 0 -> 34146 bytes 4 files changed, 205 insertions(+) create mode 100644 lessons/files/practice_files/README.md create mode 100644 lessons/files/practice_files/practice_files.zip diff --git a/lessons/files/data_record.csv b/lessons/files/data_record.csv index 7d87aa4..3f61e41 100644 --- a/lessons/files/data_record.csv +++ b/lessons/files/data_record.csv @@ -698,3 +698,203 @@ ,,,,,,,,,,,,,3.15230961298377,,,,,,3.7515605493133584,6.741573033707866,,5.324594257178527,,,,,3.0836454431960054,,,,,,,,,,9.176029962546817,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.288389513108614,5.380774032459426,6.067415730337078,3.9762796504369535,8.614232209737828,,,,,,,,,6.235955056179775,,8.11485642946317,6.167290886392011,,,,,,,3.077403245942572,,,7.553058676654182,,,,,,,,,,,,,6.429463171036204, ,,,,,,,,,,,,,,,,,,,,6.741573033707866,,,,,,,,,,,,,,,,,9.176029962546817,,,,,,,,,,,,,,,,,,,,,,,,5.399500624219725,6.098626716604246,,8.67665418227216,,,,,,,,,6.242197253433209,,8.11485642946317,6.192259675405743,,,,,,,3.102372034956305,,,7.615480649188515,,,,,,,,,,,,,6.429463171036204, ,,,,,,,,,,,,,,,,,,,,6.803995006242197,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5.424469413233458,,,,,,,,,,,,6.30461922596754,,,6.210986267166042,,,,,,,3.1210986267166043,,,7.615480649188515,,,,,,,,,,,,,, +3.651685393258427,5.074906367041199,2.1161048689138577,5.305867665418227,3.589263420724095,3.7265917602996255,0.6554307116104868,3.3021223470661676,0.9051186017478152,2.908863920099875,3.6641697877652937,1.223470661672909,0.35268414481897625,0.24968789013732834,1.647940074906367,5.855181023720349,4.4818976279650435,2.7590511860174782,1.9600499375780276,1.6541822721598003,3.8951310861423223,5.224719101123595,2.9712858926342074,5.474406991260924,4.800249687890138,0.9488139825218477,0.6173533083645443,0.6616729088639202,1.7602996254681649,4.057428214731585,0.24781523096129837,0.8926342072409489,5.099875156054932,4.001248439450687,1.317103620474407,2.5842696629213484,0.717852684144819,6.179775280898876,4.313358302122348,0.7116104868913858,0.6928838951310862,4.956304619225968,3.8077403245942576,1.2359550561797754,0.7365792759051186,1.079900124843945,5.724094881398252,2.702871410736579,1.0923845193508115,4.444444444444445,2.9837702871410734,3.183520599250936,4.132334581772784,5.81772784019975,1.797752808988764,3.6267166042446943,3.9076154806491883,4.875156054931336,6.029962546816479,3.2397003745318353,2.4032459425717856,3.3645443196004994,2.9837702871410734,1.8102372034956304,5.6491885143570535,3.5830212234706615,2.446941323345818,5.855181023720349,1.8164794007490637,3.3957553058676653,3.6766541822721597,3.957553058676654,5.705368289637952,3.595505617977528,5.593008739076155,6.104868913857677,4.138576779026217,2.303370786516854,0.9550561797752809,1.2796504369538078,5.730337078651686,3.3645443196004994,2.5343320848938826,0.9800249687890138,5.930087390761548,4.1260923845193505,5.1248439450686645,1.4544319600499376,3.576779026217228,2.958801498127341,5.436953807740325,0.466916354556804,1.9101123595505618,1.8352059925093633,2.1972534332084894,5.031210986267166,0.6928838951310862,4.856429463171036,4.425717852684145,4.157303370786517, +3.682896379525593,5.1123595505617985,2.153558052434457,5.33083645443196,3.6142322097378274,3.745318352059925,0.6803995006242198,3.3270911360799,0.9363295880149812,2.933832709113608,3.682896379525593,1.2546816479400749,0.3757802746566792,0.27965043695380776,1.6729088639200997,5.880149812734083,4.51310861423221,2.790262172284644,1.9850187265917605,1.6791510611735332,3.920099875156055,5.262172284644195,2.9962546816479403,5.50561797752809,4.831460674157303,0.9737827715355806,0.6491885143570537,0.686641697877653,1.7915106117353308,4.082397003745319,0.2727840199750312,0.9300873907615481,5.1248439450686645,4.019975031210986,1.34207240948814,2.6092384519350813,0.7490636704119851,6.210986267166042,4.33832709113608,0.7303370786516854,0.717852684144819,4.975031210986267,3.8389513108614235,1.2671660424469413,0.7677902621722846,1.104868913857678,5.7553058676654185,2.7340823970037453,1.1235955056179776,4.475655430711611,3.0087390761548067,3.214731585518102,4.157303370786517,5.855181023720349,1.8164794007490637,3.651685393258427,3.9325842696629216,4.912609238451935,6.054931335830212,3.2709113607990012,2.4219725343320846,3.383270911360799,3.0149812734082393,1.8289637952559301,5.68039950062422,3.607990012484395,2.4656679151061174,5.880149812734083,1.8414481897627966,3.420724094881398,3.7078651685393256,3.9887640449438204,5.730337078651686,3.6267166042446943,5.6242197253433215,6.129837702871411,4.16354556803995,2.340823970037453,0.9800249687890138,1.3108614232209737,5.767790262172285,3.3895131086142323,2.571785268414482,0.9987515605493134,5.961298377028713,4.151061173533084,5.149812734082397,1.4856429463171037,3.6017478152309614,2.990012484394507,5.468164794007491,0.49063670411985016,1.941323345817728,1.8601747815230962,2.2347066167290888,5.068664169787765,0.7303370786516854,4.887640449438202,4.450686641697877,4.18227215980025, +3.714107365792759,5.143570536828964,2.184769038701623,5.3620474406991265,3.639200998751561,3.7702871410736583,0.7053682896379525,3.3583021223470664,0.9675405742821472,2.958801498127341,3.7078651685393256,1.2796504369538078,0.39825218476903873,0.3096129837702871,1.6978776529338326,5.9113607990012484,4.544319600499376,2.82147315855181,2.009987515605493,1.6978776529338326,3.951310861423221,5.293383270911361,3.0149812734082393,5.536828963795256,4.856429463171036,1.0049937578027466,0.6803995006242198,0.7116104868913858,1.8227215980024971,4.107365792759051,0.29712858926342073,0.9612983770287141,5.143570536828964,4.044943820224719,1.3670411985018727,2.634207240948814,0.7865168539325842,6.242197253433209,4.3632958801498125,0.7553058676654182,0.7428214731585518,5.0,3.8639200998751564,1.2983770287141074,0.7927590511860175,1.1298377028714106,5.786516853932584,2.7715355805243447,1.161048689138577,4.506866416978776,3.0399500624219726,3.245942571785269,4.188514357053683,5.892634207240949,1.8414481897627966,3.6704119850187267,3.9637952559300875,4.950062421972534,6.086142322097379,3.295880149812734,2.446941323345818,3.4019975031210987,3.046192259675406,1.8539325842696628,5.711610486891385,3.6329588014981273,2.4906367041198503,5.8988764044943816,1.8664169787765295,3.4456928838951315,3.7390761548064915,4.019975031210986,5.7553058676654185,3.651685393258427,5.655430711610487,6.1485642946317105,4.18227215980025,2.3720349563046192,1.0049937578027466,1.348314606741573,5.805243445692884,3.420724094881398,2.602996254681648,1.0237203495630463,5.992509363295881,4.176029962546816,5.174781523096129,1.5168539325842696,3.6267166042446943,3.0212234706616727,5.499375780274657,0.5149812734082396,1.9725343320848938,1.8851435705368291,2.2659176029962547,5.106117353308365,0.7615480649188515,4.918851435705368,4.475655430711611,4.207240948813983, +3.745318352059925,5.174781523096129,2.215980024968789,5.3870162297128585,3.6641697877652937,3.7952559300873907,0.7240948813982522,3.383270911360799,0.9987515605493134,2.977528089887641,3.7265917602996255,1.3108614232209737,0.4213483146067416,0.33957553058676654,1.7228464419475658,5.942571785268415,4.575530586766542,2.8464419475655434,2.034956304619226,1.7228464419475658,3.982521847690387,5.324594257178527,3.0399500624219726,5.568039950062421,4.887640449438202,1.0362047440699127,0.7053682896379525,0.7365792759051186,1.8539325842696628,4.132334581772784,0.32209737827715357,0.9987515605493134,5.168539325842697,4.069912609238452,1.3857677902621723,2.6591760299625467,0.8177278401997503,6.30461922596754,4.388264669163545,0.7740324594257179,0.7677902621722846,5.0187265917602994,3.888888888888889,1.3358302122347065,0.8239700374531835,1.161048689138577,5.81772784019975,2.8027465667915106,1.1922596754057428,4.538077403245943,3.0649188514357055,3.2833957553058677,4.213483146067416,5.930087390761548,1.8664169787765295,3.6953807740324596,3.9887640449438204,4.987515605493134,6.111111111111111,3.320848938826467,2.4656679151061174,3.4269662921348316,3.0836454431960054,1.8726591760299625,5.736579275905119,3.651685393258427,2.5093632958801497,5.9238451935081144,1.8913857677902621,3.470661672908864,3.7702871410736583,4.057428214731585,5.774032459425719,3.6766541822721597,5.686641697877653,6.167290886392011,4.200998751560549,2.4032459425717856,1.0299625468164793,1.3795255930087391,5.848938826466916,3.451935081148564,2.634207240948814,1.042446941323346,6.023720349563047,4.200998751560549,5.199750312109863,1.5480649188514357,3.651685393258427,3.0524344569288386,5.524344569288389,0.5387016229712859,2.00374531835206,1.9101123595505618,2.2971285892634206,5.149812734082397,0.7990012484394506,4.950062421972534,4.500624219725343,4.225967540574282, +3.776529338327091,5.212234706616729,2.253433208489388,5.418227215980025,3.689138576779026,3.81398252184769,0.7490636704119851,3.408239700374532,1.0237203495630463,3.0024968789013733,3.745318352059925,1.34207240948814,0.44382022471910115,0.36953807740324596,1.7415730337078652,5.97378277153558,4.606741573033708,2.8776529338327093,2.0599250936329585,1.7415730337078652,4.00749063670412,5.355805243445693,3.0649188514357055,5.599250936329588,4.918851435705368,1.0611735330836456,0.7365792759051186,0.7615480649188515,1.8851435705368291,4.157303370786517,0.3464419475655431,1.0299625468164793,5.187265917602996,4.0886392009987516,1.410736579275905,2.6779026217228465,0.8551810237203495,6.30461922596754,4.413233458177278,0.7927590511860175,0.7927590511860175,5.043695380774032,3.920099875156055,1.3670411985018727,0.8551810237203495,1.1860174781523096,5.848938826466916,2.8339575530586765,1.229712858926342,4.563046192259676,3.0961298377028714,3.3146067415730336,4.238451935081149,5.961298377028713,1.8913857677902621,3.714107365792759,4.019975031210986,5.024968789013733,6.1360799001248445,3.352059925093633,2.4843945068664173,3.4456928838951315,3.114856429463171,1.8976279650436954,5.767790262172285,3.6766541822721597,2.5343320848938826,5.942571785268415,1.916354556803995,3.495630461922597,3.801498127340824,4.0886392009987516,5.799001248439451,3.7078651685393256,5.717852684144819,6.192259675405743,4.225967540574282,2.4406991260923845,1.0549313358302121,1.4169787765293382,5.8863920099875156,3.4831460674157304,2.671660424469413,1.0674157303370786,6.054931335830212,4.225967540574282,5.224719101123595,1.5792759051186018,3.6766541822721597,3.089887640449438,5.555555555555556,0.5630461922596754,2.034956304619226,1.941323345817728,2.328339575530587,5.187265917602996,0.8302122347066168,4.975031210986267,4.531835205992509,4.250936329588015, +3.801498127340824,5.243445692883895,2.2846441947565546,5.443196004993759,3.714107365792759,3.8389513108614235,0.7740324594257179,3.4332084893882646,1.0549313358302121,3.027465667915106,3.7702871410736583,1.373283395755306,0.466916354556804,0.3995006242197253,1.766541822721598,5.998751560549313,4.637952559300874,2.908863920099875,2.084893882646692,1.766541822721598,4.038701622971286,5.3870162297128585,3.089887640449438,5.630461922596755,4.943820224719102,1.0923845193508115,0.7677902621722846,0.7865168539325842,1.916354556803995,4.18227215980025,0.3714107365792759,1.0611735330836456,5.212234706616729,4.1136079900124844,1.4294631710362047,2.702871410736579,0.8863920099875156,6.30461922596754,4.438202247191011,0.8114856429463172,0.8177278401997503,5.062421972534332,3.9450686641697876,1.3982521847690388,0.8801498127340824,1.2109862671660423,5.880149812734083,2.871410736579276,1.260923845193508,4.594257178526841,3.1210986267166043,3.352059925093633,4.263420724094882,5.998751560549313,1.916354556803995,3.732833957553059,4.051186017478152,5.062421972534332,6.161048689138577,3.3770287141073654,2.5031210986267167,3.464419475655431,3.1460674157303368,1.916354556803995,5.799001248439451,3.6953807740324596,2.5530586766541825,5.967540574282147,1.941323345817728,3.5205992509363297,3.83270911360799,4.119850187265917,5.823970037453184,3.732833957553059,5.749063670411985,6.210986267166042,4.244694132334582,2.471910112359551,1.079900124843945,1.4544319600499376,5.9238451935081144,3.5143570536828963,2.702871410736579,1.0861423220973783,6.086142322097379,4.244694132334582,5.249687890137328,1.6104868913857677,3.701622971285893,3.1210986267166043,5.586766541822722,0.5867665418227216,2.066167290886392,1.9662921348314608,2.3657927590511862,5.224719101123595,0.867665418227216,5.0062421972534334,4.556803995006242,4.275905118601748, +3.83270911360799,5.274656679151062,2.3158551810237205,5.474406991260924,3.7390761548064915,3.857677902621723,0.7927590511860175,3.4581772784019975,1.0861423220973783,3.046192259675406,3.7890137328339577,1.3982521847690388,0.4893882646691636,0.42946317103620474,1.7915106117353308,6.029962546816479,4.66916354556804,2.9400749063670415,2.1098626716604243,1.7852684144818978,4.069912609238452,5.418227215980025,3.114856429463171,5.66167290886392,4.975031210986267,1.1235955056179776,0.7990012484394506,0.8114856429463172,1.9475655430711611,4.207240948813983,0.39637952559300876,1.0986267166042447,5.230961298377029,4.132334581772784,1.4544319600499376,2.727840199750312,0.9238451935081149,6.367041198501872,4.456928838951311,0.8364544319600499,0.8426966292134832,5.087390761548065,3.970037453183521,1.4294631710362047,0.9113607990012486,1.2421972534332086,5.9113607990012484,2.902621722846442,1.2921348314606742,4.6254681647940075,3.15230961298377,3.383270911360799,4.288389513108614,6.036204744069912,1.9350811485642945,3.7578027465667914,4.0761548064918856,5.099875156054932,6.186017478152309,3.4019975031210987,2.521847690387016,3.4893882646691634,3.1772784019975036,1.941323345817728,5.830212234706617,3.7203495630461925,2.578027465667915,5.986267166042447,1.9662921348314608,3.545568039950062,3.8639200998751564,4.151061173533084,5.848938826466916,3.7578027465667914,5.7802746566791505,6.229712858926342,4.263420724094882,2.5093632958801497,1.104868913857678,1.4856429463171037,5.961298377028713,3.545568039950062,2.7340823970037453,1.1111111111111112,6.117353308364544,4.269662921348314,5.274656679151062,1.6416978776529338,3.7265917602996255,3.15230961298377,5.611735330836455,0.6104868913857677,2.097378277153558,1.9912609238451935,2.397003745318352,5.262172284644195,0.898876404494382,5.0374531835206,4.581772784019975,4.294631710362047, +3.8639200998751564,5.312109862671661,2.35330836454432,5.499375780274657,3.764044943820225,3.882646691635456,0.8177278401997503,3.4893882646691634,1.1173533083645444,3.0711610486891385,3.81398252184769,1.4294631710362047,0.5124843945068664,0.45942571785268416,1.8164794007490637,6.061173533083646,4.700374531835206,2.9712858926342074,2.128589263420724,1.8102372034956304,4.094881398252185,5.449438202247191,3.139825218476904,5.692883895131087,5.0062421972534334,1.1485642946317103,0.8302122347066168,0.8364544319600499,1.978776529338327,4.2322097378277155,0.4207240948813982,1.1298377028714106,5.2559300873907615,4.157303370786517,1.4794007490636705,2.746566791510612,0.9550561797752809,6.367041198501872,4.4818976279650435,0.8551810237203495,0.8614232209737829,5.106117353308365,3.9950062421972534,1.466916354556804,0.9425717852684146,1.2671660424469413,5.942571785268415,2.9400749063670415,1.3295880149812733,4.656679151061174,3.183520599250936,3.4144818976279647,4.31960049937578,6.067415730337078,1.9600499375780276,3.776529338327091,4.107365792759051,5.1373283395755305,6.210986267166042,3.4332084893882646,2.5405742821473156,3.508114856429463,3.2084893882646695,1.9662921348314608,5.861423220973783,3.745318352059925,2.596754057428215,6.01123595505618,1.9912609238451935,3.5705368289637955,3.8951310861423223,4.188514357053683,5.867665418227216,3.7890137328339577,5.811485642946318,6.242197253433209,4.288389513108614,2.5405742821473156,1.1298377028714106,1.523096129837703,6.004993757802747,3.576779026217228,2.7715355805243447,1.1298377028714106,6.1485642946317105,4.294631710362047,5.299625468164794,1.6729088639200997,3.7515605493133584,3.183520599250936,5.64294631710362,0.6367041198501873,2.128589263420724,2.0224719101123596,2.428214731585518,5.305867665418227,0.9363295880149812,5.068664169787765,4.606741573033708,4.31960049937578, +3.8951310861423223,5.343320848938826,2.3845193508114857,5.5305867665418225,3.7890137328339577,3.9076154806491883,0.8426966292134832,3.5143570536828963,1.1423220973782773,3.0961298377028714,3.83270911360799,1.4606741573033708,0.534956304619226,0.4893882646691636,1.8414481897627966,6.086142322097379,4.7315855181023725,3.0024968789013733,2.153558052434457,1.8289637952559301,4.1260923845193505,5.480649188514358,3.1647940074906367,5.724094881398252,5.0374531835206,1.1797752808988764,0.8614232209737829,0.8614232209737829,2.016229712858926,4.257178526841448,0.44569288389513106,1.161048689138577,5.274656679151062,4.176029962546816,1.4981273408239701,2.7715355805243447,0.9925093632958802,6.429463171036204,4.506866416978776,0.8739076154806492,0.8863920099875156,5.131086142322098,4.02621722846442,1.4981273408239701,0.9737827715355806,1.2921348314606742,5.97378277153558,2.9712858926342074,1.3607990012484397,4.681647940074906,3.2084893882646695,3.451935081148564,4.344569288389513,6.104868913857677,1.9850187265917605,3.7952559300873907,4.132334581772784,5.174781523096129,6.235955056179775,3.4581772784019975,2.5593008739076155,3.5268414481897628,3.2397003745318353,1.9850187265917605,5.892634207240949,3.764044943820225,2.6217228464419473,6.029962546816479,2.016229712858926,3.595505617977528,3.926342072409488,4.219725343320849,5.892634207240949,3.81398252184769,5.842696629213483,6.242197253433209,4.307116104868914,2.578027465667915,1.1548064918851435,1.554307116104869,6.0424469413233455,3.607990012484395,2.8027465667915106,1.1548064918851435,6.179775280898876,4.31960049937578,5.324594257178527,1.704119850187266,3.776529338327091,3.214731585518102,5.674157303370786,0.6616729088639202,2.15980024968789,2.0474406991260925,2.4656679151061174,5.343320848938826,0.9675405742821472,5.099875156054932,4.631710362047441,4.344569288389513, +3.926342072409488,5.3745318352059925,2.4157303370786516,5.555555555555556,3.81398252184769,3.926342072409488,0.8614232209737829,3.5393258426966296,1.1735330836454432,3.114856429463171,3.857677902621723,1.4918851435705367,0.5580524344569288,0.519350811485643,1.8664169787765295,6.117353308364544,4.762796504369538,3.033707865168539,2.1785268414481895,1.8476903870162298,4.157303370786517,5.511860174781523,3.1897627965043696,5.7553058676654185,5.062421972534332,1.2109862671660423,0.8863920099875156,0.8863920099875156,2.0474406991260925,4.282147315855181,0.4700374531835206,1.198501872659176,5.299625468164794,4.200998751560549,1.523096129837703,2.7965043695380776,1.0237203495630463,6.429463171036204,4.531835205992509,0.898876404494382,0.9113607990012486,5.149812734082397,4.051186017478152,1.529338327091136,0.9987515605493134,1.3233458177278403,6.004993757802747,3.0024968789013733,1.3982521847690388,4.712858926342073,3.2397003745318353,3.4831460674157304,4.369538077403246,6.142322097378277,2.009987515605493,3.8202247191011236,4.16354556803995,5.212234706616729,6.242197253433209,3.4831460674157304,2.578027465667915,3.5518102372034956,3.2709113607990012,2.009987515605493,5.9238451935081144,3.7890137328339577,2.640449438202247,6.054931335830212,2.0411985018726595,3.620474406991261,3.957553058676654,4.250936329588015,5.917602996254682,3.8451935081148565,5.8739076154806495,6.30461922596754,4.325842696629214,2.6092384519350813,1.1797752808988764,1.591760299625468,6.079900124843945,3.639200998751561,2.8339575530586765,1.1735330836454432,6.210986267166042,4.344569288389513,5.34956304619226,1.735330836454432,3.801498127340824,3.245942571785269,5.705368289637952,0.6803995006242198,2.1910112359550564,2.0724094881398254,2.4968789013732833,5.380774032459426,0.9987515605493134,5.131086142322098,4.656679151061174,4.369538077403246, +3.957553058676654,5.411985018726591,2.453183520599251,5.586766541822722,3.8389513108614235,3.951310861423221,0.8863920099875156,3.564294631710362,1.2047440699126093,3.139825218476904,3.8764044943820224,1.5168539325842696,0.5811485642946317,0.548689138576779,1.8913857677902621,6.1485642946317105,4.794007490636704,3.0649188514357055,2.203495630461923,1.8726591760299625,4.18227215980025,5.543071161048689,3.214731585518102,5.786516853932584,5.093632958801498,1.2359550561797754,0.9176029962546817,0.9113607990012486,2.0786516853932584,4.307116104868914,0.4950062421972534,1.229712858926342,5.318352059925093,4.225967540574282,1.5418227215980027,2.82147315855181,1.0611735330836456,6.491885143570538,4.556803995006242,0.9176029962546817,0.9363295880149812,5.174781523096129,4.0761548064918856,1.5605493133583022,1.0299625468164793,1.348314606741573,6.036204744069912,3.0399500624219726,1.4294631710362047,4.7440699126092385,3.2646691635455682,3.5205992509363297,4.394506866416979,6.173533083645444,2.034956304619226,3.8389513108614235,4.188514357053683,5.249687890137328,6.30461922596754,3.5143570536828963,2.596754057428215,3.5705368289637955,3.3021223470661676,2.0287141073657926,5.955056179775282,3.8077403245942576,2.66541822721598,6.073657927590512,2.0599250936329585,3.6454431960049942,3.982521847690387,4.282147315855181,5.942571785268415,3.870162297128589,5.905118601747815,6.30461922596754,4.3508114856429465,2.6466916354556806,1.2047440699126093,1.6229712858926344,6.117353308364544,3.6704119850187267,2.871410736579276,1.198501872659176,6.242197253433209,4.369538077403246,5.3745318352059925,1.766541822721598,3.826466916354557,3.2833957553058677,5.730337078651686,0.7053682896379525,2.2222222222222223,2.097378277153558,2.5280898876404496,5.424469413233458,1.0362047440699127,5.15605493133583,4.681647940074906,4.388264669163545, +3.9887640449438204,5.443196004993759,2.4843945068664173,5.611735330836455,3.8639200998751564,3.9762796504369535,0.9113607990012486,3.589263420724095,1.2359550561797754,3.1647940074906367,3.8951310861423223,1.5480649188514357,0.6036204744069913,0.5786516853932584,1.916354556803995,6.179775280898876,4.825218476903871,3.0961298377028714,2.2284644194756553,1.8913857677902621,4.213483146067416,5.574282147315855,3.233458177278402,5.81772784019975,5.1248439450686645,1.2671660424469413,0.9488139825218477,0.9363295880149812,2.1098626716604243,4.332084893882647,0.5199750312109862,1.2671660424469413,5.337078651685393,4.244694132334582,1.5667915106117354,2.84019975031211,1.0923845193508115,6.491885143570538,4.581772784019975,0.9363295880149812,0.9612983770287141,5.199750312109863,4.1011235955056184,1.5980024968789013,1.0611735330836456,1.373283395755306,6.067415730337078,3.0711610486891385,1.4606741573033708,4.775280898876405,3.295880149812734,3.5518102372034956,4.419475655430712,6.210986267166042,2.0599250936329585,3.857677902621723,4.219725343320849,5.287141073657928,6.30461922596754,3.5393258426966296,2.6217228464419473,3.589263420724095,3.3333333333333335,2.0536828963795255,5.986267166042447,3.83270911360799,2.68414481897628,6.098626716604246,2.084893882646692,3.6704119850187267,4.013732833957553,4.31960049937578,5.961298377028713,3.8951310861423223,5.936329588014981,6.30461922596754,4.369538077403246,2.6779026217228465,1.229712858926342,1.6604244694132335,6.154806491885144,3.701622971285893,2.902621722846442,1.2172284644194757,6.30461922596754,4.394506866416979,5.399500624219725,1.797752808988764,3.8514357053682895,3.3146067415730336,5.761548064918852,0.7303370786516854,2.253433208489388,2.128589263420724,2.565543071161049,5.461922596754057,1.0674157303370786,5.187265917602996,4.70661672908864,4.413233458177278, +4.019975031210986,5.474406991260924,2.521847690387016,5.64294631710362,3.888888888888889,3.9950062421972534,0.9300873907615481,3.620474406991261,1.260923845193508,3.183520599250936,3.920099875156055,1.5792759051186018,0.6242197253433208,0.6086142322097379,1.941323345817728,6.20474406991261,4.856429463171036,3.1273408239700373,2.253433208489388,1.916354556803995,4.244694132334582,5.605493133583021,3.258426966292135,5.848938826466916,5.149812734082397,1.2983770287141074,0.9800249687890138,0.9612983770287141,2.1410736579275906,4.357053682896379,0.5443196004993758,1.2983770287141074,5.3620474406991265,4.269662921348314,1.591760299625468,2.865168539325843,1.1298377028714106,6.554307116104869,4.606741573033708,0.9550561797752809,0.9862671660424469,5.218476903870163,4.132334581772784,1.6292134831460674,1.0861423220973783,1.404494382022472,6.098626716604246,3.102372034956305,1.4981273408239701,4.800249687890138,3.3270911360799,3.589263420724095,4.450686641697877,6.242197253433209,2.0786516853932584,3.882646691635456,4.244694132334582,5.324594257178527,6.367041198501872,3.564294631710362,2.640449438202247,3.6142322097378274,3.3645443196004994,2.0786516853932584,6.0174781523096135,3.857677902621723,2.7091136079900124,6.117353308364544,2.1098626716604243,3.6953807740324596,4.044943820224719,4.3508114856429465,5.986267166042447,3.926342072409488,5.967540574282147,6.367041198501872,4.388264669163545,2.715355805243446,1.2484394506866416,1.6978776529338326,6.198501872659176,3.732833957553059,2.933832709113608,1.2359550561797754,6.30461922596754,4.413233458177278,5.424469413233458,1.8227215980024971,3.8764044943820224,3.3458177278401995,5.792759051186017,0.7553058676654182,2.2846441947565546,2.153558052434457,2.596754057428215,5.499375780274657,1.104868913857678,5.218476903870163,4.737827715355805,4.438202247191011, +4.044943820224719,5.511860174781523,2.5530586766541825,5.667915106117353,3.9138576779026217,4.019975031210986,0.9550561797752809,3.6454431960049942,1.2921348314606742,3.2084893882646695,3.938826466916354,1.6042446941323347,0.6491885143570537,0.6367041198501873,1.9662921348314608,6.235955056179775,4.887640449438202,3.1585518102372037,2.278401997503121,1.9350811485642945,4.269662921348314,5.64294631710362,3.2833957553058677,5.880149812734083,5.181023720349563,1.3233458177278403,1.0112359550561798,0.9862671660424469,2.1722846441947565,4.382022471910113,0.5692883895131086,1.3295880149812733,5.380774032459426,4.288389513108614,1.6104868913857677,2.8901373283395753,1.16729088639201,6.554307116104869,4.6254681647940075,0.9800249687890138,1.0112359550561798,5.243445692883895,4.157303370786517,1.6604244694132335,1.1173533083645444,1.4294631710362047,6.129837702871411,3.139825218476904,1.529338327091136,4.831460674157303,3.352059925093633,3.620474406991261,4.475655430711611,6.30461922596754,2.1036204744069913,3.9013732833957557,4.275905118601748,5.3620474406991265,6.367041198501872,3.595505617977528,2.6591760299625467,3.6329588014981273,3.3957553058676653,2.097378277153558,6.048689138576779,3.8764044943820224,2.727840199750312,6.1360799001248445,2.134831460674157,3.7203495630461925,4.0761548064918856,4.382022471910113,6.01123595505618,3.951310861423221,5.998751560549313,6.367041198501872,4.413233458177278,2.746566791510612,1.2734082397003745,1.7290886392009988,6.235955056179775,3.764044943820225,2.9712858926342074,1.260923845193508,6.367041198501872,4.438202247191011,5.449438202247191,1.8539325842696628,3.9013732833957557,3.3770287141073654,5.81772784019975,0.7802746566791511,2.3158551810237205,2.1785268414481895,2.6279650436953808,5.536828963795256,1.136079900124844,5.249687890137328,4.762796504369538,4.463171036204744, +4.0761548064918856,5.543071161048689,2.5842696629213484,5.69912609238452,3.938826466916354,4.044943820224719,0.9800249687890138,3.6704119850187267,1.3233458177278403,3.233458177278402,3.9637952559300875,1.6354556803995006,0.6741573033707865,0.6679151061173533,1.9912609238451935,6.242197253433209,4.918851435705368,3.1897627965043696,2.303370786516854,1.9600499375780276,4.300873907615481,5.674157303370786,3.3083645443196006,5.9113607990012484,5.212234706616729,1.3545568039950062,1.0362047440699127,1.0112359550561798,2.203495630461923,4.406991260923846,0.5942571785268415,1.3670411985018727,5.405742821473158,4.313358302122348,1.6354556803995006,2.9151061173533086,1.198501872659176,6.616729088639201,4.65043695380774,0.9987515605493134,1.0299625468164793,5.262172284644195,4.18227215980025,1.6978776529338326,1.1485642946317103,1.4544319600499376,6.161048689138577,3.17103620474407,1.5605493133583022,4.8626716604244695,3.383270911360799,3.651685393258427,4.500624219725343,6.30461922596754,2.128589263420724,3.920099875156055,4.300873907615481,5.399500624219725,6.367041198501872,3.620474406991261,2.6779026217228465,3.651685393258427,3.4332084893882646,2.122347066167291,6.079900124843945,3.9013732833957557,2.752808988764045,6.161048689138577,2.15980024968789,3.745318352059925,4.107365792759051,4.413233458177278,6.036204744069912,3.9762796504369535,6.029962546816479,6.367041198501872,4.431960049937578,2.7840199750312107,1.2983770287141074,1.766541822721598,6.30461922596754,3.7952559300873907,3.0024968789013733,1.2796504369538078,6.367041198501872,4.463171036204744,5.480649188514358,1.8851435705368291,3.926342072409488,3.408239700374532,5.848938826466916,0.8052434456928839,2.3470661672908864,2.203495630461923,2.66541822721598,5.580524344569288,1.1735330836454432,5.280898876404494,4.787765293383271,4.4818976279650435, +4.107365792759051,5.574282147315855,2.6217228464419473,5.724094881398252,3.9637952559300875,4.063670411985019,0.9987515605493134,3.6953807740324596,1.3545568039950062,3.2521847690387014,3.982521847690387,1.6666666666666667,0.6928838951310862,0.6991260923845194,2.016229712858926,6.30461922596754,4.950062421972534,3.2209737827715355,2.328339575530587,1.978776529338327,4.332084893882647,5.705368289637952,3.3333333333333335,5.942571785268415,5.237203495630462,1.3857677902621723,1.0674157303370786,1.0362047440699127,2.2347066167290888,4.431960049937578,0.618601747815231,1.3982521847690388,5.424469413233458,4.332084893882647,1.6541822721598003,2.933832709113608,1.2359550561797754,6.616729088639201,4.675405742821473,1.017478152309613,1.0549313358302121,5.287141073657928,4.213483146067416,1.7290886392009988,1.1797752808988764,1.4856429463171037,6.192259675405743,3.202247191011236,1.5980024968789013,4.893882646691636,3.408239700374532,3.689138576779026,4.525593008739076,6.367041198501872,2.153558052434457,3.9450686641697876,4.332084893882647,5.436953807740325,6.429463171036204,3.6454431960049942,2.696629213483146,3.6766541822721597,3.464419475655431,2.1410736579275906,6.111111111111111,3.920099875156055,2.7715355805243447,6.179775280898876,2.184769038701623,3.7702871410736583,4.138576779026217,4.444444444444445,6.054931335830212,4.00749063670412,6.061173533083646,6.429463171036204,4.450686641697877,2.8152309612983775,1.3233458177278403,1.797752808988764,6.30461922596754,3.826466916354557,3.0399500624219726,1.3046192259675407,6.429463171036204,4.488139825218477,5.50561797752809,1.916354556803995,3.951310861423221,3.4456928838951315,5.880149812734083,0.8239700374531835,2.3782771535580522,2.2347066167290888,2.696629213483146,5.617977528089888,1.2047440699126093,5.312109862671661,4.812734082397004,4.506866416978776, +4.138576779026217,5.611735330836455,2.6529338327091136,5.7553058676654185,3.9887640449438204,4.0886392009987516,1.0237203495630463,3.7265917602996255,1.3795255930087391,3.2771535580524347,4.00749063670412,1.6978776529338326,0.717852684144819,0.7303370786516854,2.0411985018726595,6.30461922596754,4.9812734082397006,3.2521847690387014,2.35330836454432,2.00374531835206,4.357053682896379,5.736579275905119,3.3583021223470664,5.967540574282147,5.268414481897628,1.410736579275905,1.0986267166042447,1.0611735330836456,2.2659176029962547,4.456928838951311,0.6429463171036205,1.4294631710362047,5.449438202247191,4.357053682896379,1.6791510611735332,2.958801498127341,1.2671660424469413,6.679151061173534,4.700374531835206,1.042446941323346,1.079900124843945,5.305867665418227,4.238451935081149,1.7602996254681649,1.2047440699126093,1.5106117353308364,6.223470661672909,3.2397003745318353,1.6292134831460674,4.918851435705368,3.439450686641698,3.7203495630461925,4.55056179775281,6.367041198501872,2.1785268414481895,3.9637952559300875,4.3632958801498125,5.474406991260924,6.429463171036204,3.6766541822721597,2.715355805243446,3.6953807740324596,3.495630461922597,2.1660424469413235,6.1360799001248445,3.9450686641697876,2.7965043695380776,6.20474406991261,2.209737827715356,3.7952559300873907,4.169787765293384,4.4818976279650435,6.079900124843945,4.032459425717852,6.092384519350812,6.429463171036204,4.475655430711611,2.8464419475655434,1.348314606741573,1.8352059925093633,6.367041198501872,3.857677902621723,3.0711610486891385,1.3233458177278403,6.429463171036204,4.51310861423221,5.5305867665418225,1.9475655430711611,3.9762796504369535,3.4769038701622974,5.905118601747815,0.8489388264669163,2.4094881398252186,2.259675405742821,2.727840199750312,5.655430711610487,1.2359550561797754,5.337078651685393,4.837702871410737,4.531835205992509, +4.169787765293384,5.64294631710362,2.68414481897628,5.7802746566791505,4.013732833957553,4.1136079900124844,1.048689138576779,3.7515605493133584,1.410736579275905,3.3021223470661676,4.02621722846442,1.7228464419475658,0.7428214731585518,0.7553058676654182,2.066167290886392,6.367041198501872,5.012484394506866,3.2833957553058677,2.3782771535580522,2.0224719101123596,4.388264669163545,5.767790262172285,3.383270911360799,5.998751560549313,5.299625468164794,1.4419475655430714,1.1298377028714106,1.0861423220973783,2.2971285892634206,4.4818976279650435,0.6679151061173533,1.466916354556804,5.468164794007491,4.382022471910113,1.704119850187266,2.9837702871410734,1.3046192259675407,6.679151061173534,4.725343320848939,1.0611735330836456,1.104868913857678,5.33083645443196,4.263420724094882,1.7915106117353308,1.2359550561797754,1.5355805243445693,6.242197253433209,3.2709113607990012,1.6666666666666667,4.950062421972534,3.464419475655431,3.7578027465667914,4.581772784019975,6.429463171036204,2.1972534332084894,3.9887640449438204,4.388264669163545,5.511860174781523,6.491885143570538,3.701622971285893,2.7340823970037453,3.714107365792759,3.5268414481897628,2.184769038701623,6.167290886392011,3.9637952559300875,2.8152309612983775,6.223470661672909,2.2347066167290888,3.8202247191011236,4.200998751560549,4.51310861423221,6.104868913857677,4.057428214731585,6.123595505617978,6.429463171036204,4.49438202247191,2.8838951310861427,1.373283395755306,1.8726591760299625,6.367041198501872,3.888888888888889,3.102372034956305,1.348314606741573,6.491885143570538,4.538077403245943,5.555555555555556,1.978776529338327,4.001248439450687,3.508114856429463,5.936329588014981,0.8739076154806492,2.4406991260923845,2.2846441947565546,2.7590511860174782,5.69912609238452,1.2734082397003745,5.36828963795256,4.8626716604244695,4.556803995006242, +4.200998751560549,5.674157303370786,2.7215980024968793,5.811485642946318,4.038701622971286,4.132334581772784,1.0674157303370786,3.776529338327091,1.4419475655430714,3.320848938826467,4.044943820224719,1.7540574282147314,0.7615480649188515,0.7865168539325842,2.091136079900125,6.367041198501872,5.043695380774032,3.3146067415730336,2.4032459425717856,2.0474406991260925,4.419475655430712,5.799001248439451,3.408239700374532,6.029962546816479,5.324594257178527,1.4731585518102372,1.161048689138577,1.1111111111111112,2.328339575530587,4.506866416978776,0.6928838951310862,1.4981273408239701,5.493133583021224,4.400749063670412,1.7228464419475658,3.0087390761548067,1.3358302122347065,6.741573033707866,4.750312109862672,1.079900124843945,1.1298377028714106,5.34956304619226,4.288389513108614,1.8289637952559301,1.2671660424469413,1.5605493133583022,6.30461922596754,3.3083645443196006,1.6978776529338326,4.9812734082397006,3.495630461922597,3.7890137328339577,4.606741573033708,6.429463171036204,2.2222222222222223,4.00749063670412,4.419475655430712,5.549313358302123,6.491885143570538,3.7265917602996255,2.752808988764045,3.7390761548064915,3.5580524344569286,2.209737827715356,6.198501872659176,3.9887640449438204,2.84019975031211,6.242197253433209,2.259675405742821,3.8451935081148565,4.2322097378277155,4.544319600499376,6.123595505617978,4.0886392009987516,6.1485642946317105,6.491885143570538,4.519350811485642,2.9151061173533086,1.3982521847690388,1.9038701622971288,6.429463171036204,3.920099875156055,3.139825218476904,1.3670411985018727,6.491885143570538,4.563046192259676,5.580524344569288,2.009987515605493,4.02621722846442,3.5393258426966296,5.967540574282147,0.898876404494382,2.4656679151061174,2.3158551810237205,2.7965043695380776,5.736579275905119,1.3046192259675407,5.399500624219725,4.887640449438202,4.575530586766542, +4.2322097378277155,5.711610486891385,2.752808988764045,5.836454431960051,4.063670411985019,4.157303370786517,1.0923845193508115,3.801498127340824,1.4731585518102372,3.3458177278401995,4.069912609238452,1.7852684144818978,0.7865168539325842,0.8177278401997503,2.1161048689138577,6.429463171036204,5.074906367041199,3.3458177278401995,2.428214731585518,2.066167290886392,4.444444444444445,5.830212234706617,3.4332084893882646,6.061173533083646,5.355805243445693,1.4981273408239701,1.1922596754057428,1.136079900124844,2.3657927590511862,4.525593008739076,0.717852684144819,1.5355805243445693,5.511860174781523,4.425717852684145,1.7478152309612984,3.027465667915106,1.373283395755306,6.741573033707866,4.769038701622971,1.104868913857678,1.1548064918851435,5.3745318352059925,4.31960049937578,1.8601747815230962,1.2921348314606742,1.591760299625468,6.30461922596754,3.339575530586767,1.7290886392009988,5.012484394506866,3.5268414481897628,3.826466916354557,4.631710362047441,6.491885143570538,2.247191011235955,4.02621722846442,4.444444444444445,5.586766541822722,6.491885143570538,3.7578027465667914,2.7715355805243447,3.7578027465667914,3.589263420724095,2.2347066167290888,6.229712858926342,4.013732833957553,2.8589263420724094,6.242197253433209,2.2846441947565546,3.870162297128589,4.263420724094882,4.575530586766542,6.1485642946317105,4.1136079900124844,6.179775280898876,6.491885143570538,4.538077403245943,2.9525593008739075,1.4232209737827717,1.941323345817728,6.491885143570538,3.9450686641697876,3.17103620474407,1.3920099875156053,6.554307116104869,4.581772784019975,5.605493133583021,2.0411985018726595,4.057428214731585,3.5705368289637955,5.992509363295881,0.9238451935081149,2.4968789013732833,2.340823970037453,2.8277153558052435,5.774032459425719,1.34207240948814,5.430711610486892,4.912609238451935,4.600499375780275, +4.263420724094882,5.742821473158552,2.7840199750312107,5.867665418227216,4.0886392009987516,4.18227215980025,1.1173533083645444,3.826466916354557,1.4981273408239701,3.370786516853933,4.0886392009987516,1.8164794007490637,0.8114856429463172,0.8489388264669163,2.1410736579275906,6.429463171036204,5.106117353308365,3.3770287141073654,2.453183520599251,2.091136079900125,4.475655430711611,5.861423220973783,3.4581772784019975,6.092384519350812,5.3870162297128585,1.529338327091136,1.2172284644194757,1.161048689138577,2.397003745318352,4.55056179775281,0.7428214731585518,1.5667915106117354,5.5305867665418225,4.444444444444445,1.766541822721598,3.0524344569288386,1.404494382022472,6.803995006242197,4.794007490636704,1.1235955056179776,1.1735330836454432,5.393258426966292,4.344569288389513,1.8913857677902621,1.3233458177278403,1.616729088639201,6.367041198501872,3.370786516853933,1.766541822721598,5.0374531835206,3.5518102372034956,3.857677902621723,4.656679151061174,6.554307116104869,2.272159800249688,4.051186017478152,4.475655430711611,5.6242197253433215,6.554307116104869,3.7827715355805243,2.7965043695380776,3.776529338327091,3.620474406991261,2.253433208489388,6.242197253433209,4.032459425717852,2.8838951310861427,6.30461922596754,2.303370786516854,3.8951310861423223,4.294631710362047,4.612983770287141,6.173533083645444,4.138576779026217,6.210986267166042,6.491885143570538,4.556803995006242,2.9837702871410734,1.4481897627965044,1.9725343320848938,6.491885143570538,3.9762796504369535,3.202247191011236,1.410736579275905,6.554307116104869,4.606741573033708,5.630461922596755,2.0724094881398254,4.082397003745319,3.6017478152309614,6.023720349563047,0.9488139825218477,2.5280898876404496,2.3657927590511862,2.8589263420724094,5.811485642946318,1.373283395755306,5.461922596754057,4.943820224719102,4.6254681647940075, +4.288389513108614,5.774032459425719,2.82147315855181,5.892634207240949,4.1136079900124844,4.200998751560549,1.136079900124844,3.857677902621723,1.529338327091136,3.3895131086142323,4.1136079900124844,1.8414481897627966,0.8302122347066168,0.8801498127340824,2.1660424469413235,6.491885143570538,5.1373283395755305,3.408239700374532,2.471910112359551,2.1098626716604243,4.500624219725343,5.892634207240949,3.4769038701622974,6.123595505617978,5.418227215980025,1.5605493133583022,1.2484394506866416,1.1860174781523096,2.428214731585518,4.575530586766542,0.7677902621722846,1.5980024968789013,5.555555555555556,4.4694132334581775,1.7915106117353308,3.077403245942572,1.4419475655430714,6.803995006242197,4.818976279650437,1.1423220973782773,1.198501872659176,5.418227215980025,4.369538077403246,1.9225967540574282,1.3545568039950062,1.6416978776529338,6.367041198501872,3.408239700374532,1.797752808988764,5.068664169787765,3.5830212234706615,3.888888888888889,4.681647940074906,6.554307116104869,2.2971285892634206,4.069912609238452,4.500624219725343,5.66167290886392,6.554307116104869,3.8077403245942576,2.8152309612983775,3.801498127340824,3.651685393258427,2.278401997503121,6.30461922596754,4.057428214731585,2.902621722846442,6.30461922596754,2.328339575530587,3.920099875156055,4.325842696629214,4.644194756554308,6.198501872659176,4.169787765293384,6.242197253433209,6.554307116104869,4.581772784019975,3.0212234706616727,1.4731585518102372,2.009987515605493,6.554307116104869,4.00749063670412,3.2397003745318353,1.435705368289638,6.616729088639201,4.631710362047441,5.655430711610487,2.1036204744069913,4.107365792759051,3.639200998751561,6.054931335830212,0.9737827715355806,2.5593008739076155,2.3907615480649187,2.8963795255930087,5.855181023720349,1.410736579275905,5.493133583021224,4.9687890137328345,4.644194756554308, +4.31960049937578,5.805243445692884,2.852684144818976,5.9238451935081144,4.144818976279651,4.225967540574282,1.161048689138577,3.882646691635456,1.5605493133583022,3.4144818976279647,4.132334581772784,1.8726591760299625,0.8551810237203495,0.9051186017478152,2.1910112359550564,6.491885143570538,5.162297128589263,3.439450686641698,2.4968789013732833,2.128589263420724,4.531835205992509,5.9238451935081144,3.5018726591760303,6.154806491885144,5.443196004993759,1.585518102372035,1.2796504369538078,1.2109862671660423,2.459425717852684,4.600499375780275,0.7927590511860175,1.6354556803995006,5.574282147315855,4.488139825218477,1.8164794007490637,3.0961298377028714,1.4731585518102372,6.866416978776529,4.843945068664169,1.161048689138577,1.223470661672909,5.443196004993759,4.400749063670412,1.9600499375780276,1.3857677902621723,1.6729088639200997,6.429463171036204,3.439450686641698,1.8352059925093633,5.099875156054932,3.607990012484395,3.926342072409488,4.712858926342073,6.616729088639201,2.322097378277154,4.0886392009987516,4.531835205992509,5.69912609238452,6.616729088639201,3.8389513108614235,2.8339575530586765,3.8202247191011236,3.682896379525593,2.2971285892634206,6.30461922596754,4.0761548064918856,2.9275905118601746,6.30461922596754,2.35330836454432,3.9450686641697876,4.357053682896379,4.675405742821473,6.217228464419476,4.194756554307116,6.30461922596754,6.554307116104869,4.600499375780275,3.0524344569288386,1.4981273408239701,2.0411985018726595,6.554307116104869,4.038701622971286,3.2709113607990012,1.4544319600499376,6.616729088639201,4.656679151061174,5.68039950062422,2.134831460674157,4.132334581772784,3.6704119850187267,6.079900124843945,0.9925093632958802,2.5905118601747814,2.4219725343320846,2.9275905118601746,5.892634207240949,1.4419475655430714,5.5181023720349565,4.9937578027465666,4.66916354556804, +4.3508114856429465,5.842696629213483,2.8901373283395753,5.948813982521848,4.169787765293384,4.244694132334582,1.1860174781523096,3.9076154806491883,1.585518102372035,3.439450686641698,4.151061173533084,1.9038701622971288,0.8801498127340824,0.9363295880149812,2.209737827715356,6.554307116104869,5.19350811485643,3.470661672908864,2.521847690387016,2.153558052434457,4.563046192259676,5.955056179775282,3.5268414481897628,6.186017478152309,5.474406991260924,1.616729088639201,1.3108614232209737,1.2359550561797754,2.4906367041198503,4.6254681647940075,0.8177278401997503,1.6666666666666667,5.599250936329588,4.51310861423221,1.8352059925093633,3.1210986267166043,1.5106117353308364,6.866416978776529,4.868913857677903,1.1860174781523096,1.2484394506866416,5.461922596754057,4.425717852684145,1.9912609238451935,1.410736579275905,1.6978776529338326,6.429463171036204,3.470661672908864,1.8664169787765295,5.131086142322098,3.639200998751561,3.957553058676654,4.737827715355805,6.616729088639201,2.340823970037453,4.1136079900124844,4.556803995006242,5.736579275905119,6.616729088639201,3.8639200998751564,2.852684144818976,3.8389513108614235,3.714107365792759,2.322097378277154,6.367041198501872,4.1011235955056184,2.9463171036204745,6.367041198501872,2.3782771535580522,3.970037453183521,4.382022471910113,4.70661672908864,6.242197253433209,4.225967540574282,6.30461922596754,6.554307116104869,4.619225967540574,3.089887640449438,1.523096129837703,2.0786516853932584,6.616729088639201,4.069912609238452,3.3021223470661676,1.4794007490636705,6.679151061173534,4.681647940074906,5.705368289637952,2.1660424469413235,4.157303370786517,3.701622971285893,6.111111111111111,1.017478152309613,2.6217228464419473,2.446941323345818,2.958801498127341,5.930087390761548,1.4794007490636705,5.549313358302123,5.0187265917602994,4.694132334581773, +4.382022471910113,5.8739076154806495,2.9213483146067416,5.980024968789014,4.194756554307116,4.269662921348314,1.2047440699126093,3.9325842696629216,1.616729088639201,3.4581772784019975,4.176029962546816,1.9350811485642945,0.898876404494382,0.9675405742821472,2.2347066167290888,6.554307116104869,5.224719101123595,3.5018726591760303,2.546816479400749,2.1722846441947565,4.588014981273409,5.992509363295881,3.5518102372034956,6.217228464419476,5.50561797752809,1.647940074906367,1.34207240948814,1.260923845193508,2.521847690387016,4.65043695380774,0.8426966292134832,1.6978776529338326,5.617977528089888,4.538077403245943,1.8601747815230962,3.1460674157303368,1.5418227215980027,6.928838951310862,4.893882646691636,1.2047440699126093,1.2734082397003745,5.48689138576779,4.450686641697877,2.0224719101123596,1.4419475655430714,1.7228464419475658,6.491885143570538,3.508114856429463,1.8976279650436954,5.15605493133583,3.6641697877652937,3.9950062421972534,4.762796504369538,6.679151061173534,2.3657927590511862,4.132334581772784,4.588014981273409,5.774032459425719,6.616729088639201,3.888888888888889,2.871410736579276,3.8639200998751564,3.745318352059925,2.3470661672908864,6.367041198501872,4.1260923845193505,2.9712858926342074,6.367041198501872,2.4032459425717856,3.9950062421972534,4.413233458177278,4.7440699126092385,6.242197253433209,4.250936329588015,6.367041198501872,6.616729088639201,4.644194756554308,3.1210986267166043,1.5480649188514357,2.1161048689138577,6.679151061173534,4.1011235955056184,3.339575530586767,1.4981273408239701,6.679151061173534,4.70661672908864,5.730337078651686,2.1972534332084894,4.18227215980025,3.732833957553059,6.142322097378277,1.042446941323346,2.6529338327091136,2.471910112359551,2.9962546816479403,5.97378277153558,1.5106117353308364,5.580524344569288,5.043695380774032,4.719101123595506, +4.413233458177278,5.905118601747815,2.9525593008739075,6.004993757802747,4.219725343320849,4.294631710362047,1.229712858926342,3.957553058676654,1.647940074906367,3.4831460674157304,4.194756554307116,1.9600499375780276,0.9238451935081149,0.9987515605493134,2.259675405742821,6.616729088639201,5.2559300873907615,3.5268414481897628,2.571785268414482,2.1972534332084894,4.619225967540574,6.023720349563047,3.576779026217228,6.242197253433209,5.5305867665418225,1.6729088639200997,1.373283395755306,1.285892634207241,2.5530586766541825,4.675405742821473,0.867665418227216,1.735330836454432,5.64294631710362,4.556803995006242,1.8789013732833957,3.17103620474407,1.5792759051186018,6.928838951310862,4.918851435705368,1.223470661672909,1.2983770287141074,5.50561797752809,4.475655430711611,2.0536828963795255,1.4731585518102372,1.7540574282147314,6.491885143570538,3.5393258426966296,1.9350811485642945,5.187265917602996,3.6953807740324596,4.02621722846442,4.787765293383271,6.679151061173534,2.3907615480649187,4.151061173533084,4.612983770287141,5.811485642946318,6.679151061173534,3.920099875156055,2.8901373283395753,3.882646691635456,3.7827715355805243,2.3657927590511862,6.429463171036204,4.144818976279651,2.990012484394507,6.429463171036204,2.428214731585518,4.019975031210986,4.444444444444445,4.775280898876405,6.30461922596754,4.275905118601748,6.367041198501872,6.616729088639201,4.662921348314606,3.1585518102372037,1.5730337078651684,2.1473158551810236,6.679151061173534,4.132334581772784,3.370786516853933,1.523096129837703,6.741573033707866,4.7315855181023725,5.7553058676654185,2.2284644194756553,4.207240948813983,3.764044943820225,6.167290886392011,1.0674157303370786,2.68414481897628,2.4968789013732833,3.027465667915106,6.01123595505618,1.5418227215980027,5.611735330836455,5.068664169787765,4.737827715355805, +4.444444444444445,5.942571785268415,2.990012484394507,6.036204744069912,4.244694132334582,4.313358302122348,1.2546816479400749,3.9887640449438204,1.6791510611735332,3.508114856429463,4.219725343320849,1.9912609238451935,0.9488139825218477,1.0299625468164793,2.2846441947565546,6.616729088639201,5.287141073657928,3.5580524344569286,2.596754057428215,2.215980024968789,4.65043695380774,6.054931335830212,3.6017478152309614,6.30461922596754,5.561797752808988,1.704119850187266,1.3982521847690388,1.3108614232209737,2.5842696629213484,4.700374531835206,0.8926342072409489,1.766541822721598,5.66167290886392,4.581772784019975,1.9038701622971288,3.1897627965043696,1.6104868913857677,6.991260923845194,4.937578027465668,1.2484394506866416,1.3233458177278403,5.5305867665418225,4.506866416978776,2.091136079900125,1.4981273408239701,1.7790262172284643,6.554307116104869,3.5705368289637955,1.9662921348314608,5.218476903870163,3.7265917602996255,4.057428214731585,4.812734082397004,6.741573033707866,2.4157303370786516,4.176029962546816,4.644194756554308,5.848938826466916,6.679151061173534,3.9450686641697876,2.908863920099875,3.9013732833957557,3.81398252184769,2.3907615480649187,6.429463171036204,4.169787765293384,3.0149812734082393,6.429463171036204,2.453183520599251,4.044943820224719,4.475655430711611,4.806491885143571,6.30461922596754,4.307116104868914,6.429463171036204,6.616729088639201,4.681647940074906,3.1897627965043696,1.5980024968789013,2.184769038701623,6.741573033707866,4.16354556803995,3.4019975031210987,1.5418227215980027,6.741573033707866,4.750312109862672,5.7802746566791505,2.259675405742821,4.2322097378277155,3.801498127340824,6.198501872659176,1.0923845193508115,2.715355805243446,2.5280898876404496,3.058676654182272,6.048689138576779,1.5792759051186018,5.64294631710362,5.093632958801498,4.762796504369538, +4.475655430711611,5.97378277153558,3.0212234706616727,6.061173533083646,4.269662921348314,4.33832709113608,1.2734082397003745,4.013732833957553,1.704119850187266,3.5268414481897628,4.238451935081149,2.0224719101123596,0.9675405742821472,1.0549313358302121,2.309612983770287,6.616729088639201,5.318352059925093,3.589263420724095,2.6217228464419473,2.2409488139825218,4.675405742821473,6.086142322097379,3.6267166042446943,6.30461922596754,5.593008739076155,1.735330836454432,1.4294631710362047,1.3358302122347065,2.6154806491885143,4.725343320848939,0.9176029962546817,1.8039950062421974,5.686641697877653,4.600499375780275,1.9288389513108615,3.214731585518102,1.647940074906367,6.991260923845194,4.962546816479401,1.2671660424469413,1.34207240948814,5.549313358302123,4.531835205992509,2.122347066167291,1.529338327091136,1.8039950062421974,6.554307116104869,3.607990012484395,1.9975031210986267,5.249687890137328,3.7515605493133584,4.094881398252185,4.843945068664169,6.803995006242197,2.4406991260923845,4.194756554307116,4.675405742821473,5.8863920099875156,6.741573033707866,3.970037453183521,2.9275905118601746,3.926342072409488,3.8451935081148565,2.4094881398252186,6.491885143570538,4.188514357053683,3.033707865168539,6.429463171036204,2.478152309612984,4.069912609238452,4.506866416978776,4.837702871410737,6.367041198501872,4.332084893882647,6.429463171036204,6.679151061173534,4.70661672908864,3.227215980024969,1.6229712858926344,2.215980024968789,6.803995006242197,4.194756554307116,3.439450686641698,1.5667915106117354,6.803995006242197,4.775280898876405,5.805243445692884,2.2908863920099876,4.257178526841448,3.83270911360799,6.229712858926342,1.1173533083645444,2.746566791510612,2.5530586766541825,3.089887640449438,6.086142322097379,1.6104868913857677,5.674157303370786,5.118601747815231,4.787765293383271, +4.506866416978776,6.004993757802747,3.0524344569288386,6.092384519350812,4.294631710362047,4.3632958801498125,1.2983770287141074,4.038701622971286,1.735330836454432,3.5518102372034956,4.263420724094882,2.0474406991260925,0.9925093632958802,1.0861423220973783,2.33458177278402,6.679151061173534,5.34956304619226,3.620474406991261,2.6466916354556806,2.259675405742821,4.70661672908864,6.117353308364544,3.651685393258427,6.367041198501872,5.617977528089888,1.7602996254681649,1.4606741573033708,1.3607990012484397,2.6466916354556806,4.750312109862672,0.9425717852684146,1.8352059925093633,5.705368289637952,4.6254681647940075,1.9475655430711611,3.2397003745318353,1.6791510611735332,7.0536828963795255,4.987515605493134,1.285892634207241,1.3670411985018727,5.574282147315855,4.556803995006242,2.153558052434457,1.5605493133583022,1.8352059925093633,6.616729088639201,3.639200998751561,2.034956304619226,5.274656679151062,3.7827715355805243,4.1260923845193505,4.868913857677903,6.803995006242197,2.4656679151061174,4.213483146067416,4.700374531835206,5.9238451935081144,6.741573033707866,3.9950062421972534,2.9463171036204745,3.9450686641697876,3.8764044943820224,2.4344569288389515,6.491885143570538,4.213483146067416,3.058676654182272,6.491885143570538,2.5031210986267167,4.094881398252185,4.538077403245943,4.868913857677903,6.367041198501872,4.357053682896379,6.491885143570538,6.679151061173534,4.725343320848939,3.258426966292135,1.647940074906367,2.253433208489388,6.803995006242197,4.225967540574282,3.470661672908864,1.585518102372035,6.803995006242197,4.800249687890138,5.830212234706617,2.322097378277154,4.282147315855181,3.8639200998751564,6.242197253433209,1.136079900124844,2.777777777777778,2.578027465667915,3.1273408239700373,6.129837702871411,1.647940074906367,5.69912609238452,5.149812734082397,4.812734082397004, +4.538077403245943,6.0424469413233455,3.089887640449438,6.117353308364544,4.31960049937578,4.382022471910113,1.3233458177278403,4.063670411985019,1.766541822721598,3.576779026217228,4.282147315855181,2.0786516853932584,1.017478152309613,1.1173533083645444,2.359550561797753,6.679151061173534,5.380774032459426,3.651685393258427,2.671660424469413,2.2846441947565546,4.737827715355805,6.1485642946317105,3.6766541822721597,6.367041198501872,5.6491885143570535,1.7915106117353308,1.4918851435705367,1.3857677902621723,2.68414481897628,4.775280898876405,0.9675405742821472,1.8664169787765295,5.724094881398252,4.65043695380774,1.9725343320848938,3.2646691635455682,1.7166042446941323,7.0536828963795255,5.012484394506866,1.3046192259675407,1.3920099875156053,5.593008739076155,4.588014981273409,2.184769038701623,1.591760299625468,1.8601747815230962,6.616729088639201,3.6766541822721597,2.066167290886392,5.305867665418227,3.8077403245942576,4.16354556803995,4.893882646691636,6.866416978776529,2.4843945068664173,4.238451935081149,4.7315855181023725,5.961298377028713,6.741573033707866,4.02621722846442,2.9712858926342074,3.9637952559300875,3.9076154806491883,2.453183520599251,6.554307116104869,4.238451935081149,3.077403245942572,6.491885143570538,2.5280898876404496,4.1136079900124844,4.569288389513109,4.906367041198502,6.367041198501872,4.388264669163545,6.491885143570538,6.679151061173534,4.7440699126092385,3.2896379525593007,1.6729088639200997,2.2846441947565546,6.866416978776529,4.257178526841448,3.5018726591760303,1.6042446941323347,6.866416978776529,4.825218476903871,5.855181023720349,2.35330836454432,4.307116104868914,3.8951310861423223,6.30461922596754,1.161048689138577,2.808988764044944,2.6092384519350813,3.1585518102372037,6.167290886392011,1.6791510611735332,5.730337078651686,5.174781523096129,4.831460674157303, +4.563046192259676,6.073657927590512,3.1210986267166043,6.1485642946317105,4.344569288389513,4.406991260923846,1.348314606741573,4.0886392009987516,1.797752808988764,3.595505617977528,4.300873907615481,2.1098626716604243,1.0362047440699127,1.1485642946317103,2.3845193508114857,6.741573033707866,5.411985018726591,3.682896379525593,2.696629213483146,2.303370786516854,4.762796504369538,6.179775280898876,3.6953807740324596,6.429463171036204,5.68039950062422,1.8227215980024971,1.523096129837703,1.410736579275905,2.715355805243446,4.800249687890138,0.9925093632958802,1.9038701622971288,5.749063670411985,4.66916354556804,1.9975031210986267,3.2833957553058677,1.7478152309612984,7.116104868913857,5.0374531835206,1.3295880149812733,1.4169787765293382,5.617977528089888,4.612983770287141,2.2222222222222223,1.616729088639201,1.8851435705368291,6.679151061173534,3.7078651685393256,2.1036204744069913,5.337078651685393,3.8389513108614235,4.194756554307116,4.918851435705368,6.866416978776529,2.5093632958801497,4.257178526841448,4.7565543071161045,5.998751560549313,6.803995006242197,4.051186017478152,2.990012484394507,3.9887640449438204,3.938826466916354,2.478152309612984,6.554307116104869,4.257178526841448,3.102372034956305,6.491885143570538,2.546816479400749,4.138576779026217,4.600499375780275,4.937578027465668,6.429463171036204,4.413233458177278,6.554307116104869,6.741573033707866,4.769038701622971,3.3270911360799,1.6978776529338326,2.322097378277154,6.866416978776529,4.288389513108614,3.5393258426966296,1.6292134831460674,6.866416978776529,4.850187265917603,5.880149812734083,2.3845193508114857,4.332084893882647,3.926342072409488,6.30461922596754,1.1860174781523096,2.84019975031211,2.634207240948814,3.1897627965043696,6.20474406991261,1.7166042446941323,5.761548064918852,5.199750312109863,4.856429463171036, +4.594257178526841,6.104868913857677,3.15230961298377,6.173533083645444,4.369538077403246,4.431960049937578,1.3670411985018727,4.119850187265917,1.8227215980024971,3.620474406991261,4.325842696629214,2.1410736579275906,1.0611735330836456,1.1797752808988764,2.4094881398252186,6.741573033707866,5.443196004993759,3.714107365792759,2.7215980024968793,2.328339575530587,4.794007490636704,6.210986267166042,3.7203495630461925,6.429463171036204,5.705368289637952,1.8476903870162298,1.554307116104869,1.435705368289638,2.746566791510612,4.825218476903871,1.0112359550561798,1.9350811485642945,5.767790262172285,4.694132334581773,2.016229712858926,3.3083645443196006,1.7852684144818978,7.116104868913857,5.062421972534332,1.348314606741573,1.4419475655430714,5.636704119850187,4.637952559300874,2.253433208489388,1.647940074906367,1.916354556803995,6.679151061173534,3.7390761548064915,2.134831460674157,5.36828963795256,3.8639200998751564,4.2322097378277155,4.943820224719102,6.928838951310862,2.5343320848938826,4.282147315855181,4.787765293383271,6.036204744069912,6.803995006242197,4.0761548064918856,3.0087390761548067,4.00749063670412,3.970037453183521,2.5031210986267167,6.616729088639201,4.282147315855181,3.1210986267166043,6.554307116104869,2.571785268414482,4.16354556803995,4.631710362047441,4.9687890137328345,6.429463171036204,4.438202247191011,6.554307116104869,6.741573033707866,4.787765293383271,3.3583021223470664,1.7228464419475658,2.359550561797753,6.928838951310862,4.31960049937578,3.5705368289637955,1.647940074906367,6.928838951310862,4.875156054931336,5.905118601747815,2.4157303370786516,4.357053682896379,3.9637952559300875,6.367041198501872,1.2109862671660423,2.871410736579276,2.6591760299625467,3.227215980024969,6.242197253433209,1.7478152309612984,5.792759051186017,5.224719101123595,4.881398252184769, +4.6254681647940075,6.142322097378277,3.1897627965043696,6.20474406991261,4.394506866416979,4.450686641697877,1.3920099875156053,4.144818976279651,1.8539325842696628,3.6454431960049942,4.344569288389513,2.1660424469413235,1.079900124843945,1.2047440699126093,2.4344569288389515,6.803995006242197,5.474406991260924,3.745318352059925,2.746566791510612,2.3470661672908864,4.825218476903871,6.242197253433209,3.745318352059925,6.491885143570538,5.736579275905119,1.8789013732833957,1.5792759051186018,1.4606741573033708,2.777777777777778,4.850187265917603,1.0362047440699127,1.9662921348314608,5.792759051186017,4.712858926342073,2.0411985018726595,3.3333333333333335,1.8164794007490637,7.17852684144819,5.081148564294631,1.3670411985018727,1.466916354556804,5.66167290886392,4.662921348314606,2.2846441947565546,1.6791510611735332,1.941323345817728,6.741573033707866,3.776529338327091,2.1660424469413235,5.393258426966292,3.8951310861423223,4.263420724094882,4.9687890137328345,6.928838951310862,2.5593008739076155,4.300873907615481,4.812734082397004,6.073657927590512,6.866416978776529,4.107365792759051,3.027465667915106,4.02621722846442,4.001248439450687,2.521847690387016,6.616729088639201,4.300873907615481,3.1460674157303368,6.554307116104869,2.596754057428215,4.188514357053683,4.662921348314606,5.0,6.429463171036204,4.4694132334581775,6.616729088639201,6.741573033707866,4.812734082397004,3.3957553058676653,1.7478152309612984,2.3907615480649187,6.991260923845194,4.3508114856429465,3.6017478152309614,1.6729088639200997,6.928838951310862,4.893882646691636,5.930087390761548,2.446941323345818,4.382022471910113,3.9950062421972534,6.367041198501872,1.2359550561797754,2.902621722846442,2.68414481897628,3.258426966292135,6.30461922596754,1.7852684144818978,5.823970037453184,5.249687890137328,4.906367041198502, +4.656679151061174,6.173533083645444,3.2209737827715355,6.229712858926342,4.419475655430712,4.475655430711611,1.4169787765293382,4.169787765293384,1.8851435705368291,3.6641697877652937,4.369538077403246,2.1972534332084894,1.104868913857678,1.2359550561797754,2.459425717852684,6.803995006242197,5.50561797752809,3.776529338327091,2.7715355805243447,2.3720349563046192,4.850187265917603,6.30461922596754,3.7702871410736583,6.491885143570538,5.767790262172285,1.9101123595505618,1.6104868913857677,1.4856429463171037,2.808988764044944,4.875156054931336,1.0611735330836456,2.00374531835206,5.811485642946318,4.737827715355805,2.0599250936329585,3.3583021223470664,1.8539325842696628,7.17852684144819,5.106117353308365,1.3920099875156053,1.4856429463171037,5.686641697877653,4.694132334581773,2.3158551810237205,1.704119850187266,1.9662921348314608,6.741573033707866,3.8077403245942576,2.203495630461923,5.424469413233458,3.926342072409488,4.294631710362047,5.0,6.991260923845194,2.5842696629213484,4.31960049937578,4.843945068664169,6.111111111111111,6.866416978776529,4.132334581772784,3.046192259675406,4.051186017478152,4.032459425717852,2.546816479400749,6.679151061173534,4.325842696629214,3.1647940074906367,6.554307116104869,2.6217228464419473,4.213483146067416,4.694132334581773,5.0374531835206,6.491885143570538,4.49438202247191,6.616729088639201,6.803995006242197,4.831460674157303,3.4269662921348316,1.772784019975031,2.428214731585518,6.991260923845194,4.382022471910113,3.639200998751561,1.6916354556803994,6.991260923845194,4.918851435705368,5.955056179775282,2.478152309612984,4.406991260923846,4.02621722846442,6.429463171036204,1.260923845193508,2.933832709113608,2.715355805243446,3.2896379525593007,6.30461922596754,1.8164794007490637,5.855181023720349,5.274656679151062,4.925093632958801, +4.687890137328339,6.20474406991261,3.258426966292135,6.242197253433209,4.444444444444445,4.500624219725343,1.435705368289638,4.194756554307116,1.916354556803995,3.689138576779026,4.388264669163545,2.2284644194756553,1.1298377028714106,1.2671660424469413,2.4843945068664173,6.866416978776529,5.536828963795256,3.8077403245942576,2.7965043695380776,2.3907615480649187,4.881398252184769,6.30461922596754,3.7952559300873907,6.554307116104869,5.799001248439451,1.9350811485642945,1.6416978776529338,1.5106117353308364,2.84019975031211,4.900124843945068,1.0861423220973783,2.034956304619226,5.836454431960051,4.7565543071161045,2.084893882646692,3.3770287141073654,1.8851435705368291,7.240948813982522,5.131086142322098,1.410736579275905,1.5106117353308364,5.705368289637952,4.719101123595506,2.35330836454432,1.735330836454432,1.9975031210986267,6.803995006242197,3.8389513108614235,2.2347066167290888,5.455680399500624,3.951310861423221,4.332084893882647,5.024968789013733,7.0536828963795255,2.602996254681648,4.344569288389513,4.868913857677903,6.1485642946317105,6.866416978776529,4.157303370786517,3.0649188514357055,4.069912609238452,4.063670411985019,2.565543071161049,6.679151061173534,4.3508114856429465,3.1897627965043696,6.616729088639201,2.6466916354556806,4.238451935081149,4.725343320848939,5.068664169787765,6.491885143570538,4.519350811485642,6.679151061173534,6.803995006242197,4.850187265917603,3.464419475655431,1.797752808988764,2.459425717852684,7.0536828963795255,4.413233458177278,3.6704119850187267,1.7166042446941323,6.991260923845194,4.943820224719102,5.980024968789014,2.5093632958801497,4.431960049937578,4.057428214731585,6.429463171036204,1.285892634207241,2.965043695380774,2.740324594257179,3.3270911360799,6.367041198501872,1.8476903870162298,5.880149812734083,5.299625468164794,4.950062421972534, +4.719101123595506,6.242197253433209,3.2896379525593007,6.30461922596754,4.4694132334581775,4.519350811485642,1.4606741573033708,4.219725343320849,1.941323345817728,3.714107365792759,4.413233458177278,2.259675405742821,1.1485642946317103,1.2983770287141074,2.5093632958801497,6.866416978776529,5.568039950062421,3.8389513108614235,2.82147315855181,2.4157303370786516,4.912609238451935,6.367041198501872,3.8202247191011236,6.554307116104869,5.823970037453184,1.9662921348314608,1.6729088639200997,1.5355805243445693,2.871410736579276,4.925093632958801,1.1111111111111112,2.0724094881398254,5.855181023720349,4.781523096129837,2.1098626716604243,3.4019975031210987,1.9225967540574282,7.240948813982522,5.15605493133583,1.4294631710362047,1.5355805243445693,5.730337078651686,4.7440699126092385,2.3845193508114857,1.766541822721598,2.0224719101123596,6.803995006242197,3.8764044943820224,2.272159800249688,5.48689138576779,3.982521847690387,4.3632958801498125,5.049937578027466,7.0536828963795255,2.6279650436953808,4.3632958801498125,4.900124843945068,6.186017478152309,6.928838951310862,4.188514357053683,3.0836454431960054,4.0886392009987516,4.094881398252185,2.5905118601747814,6.741573033707866,4.369538077403246,3.2084893882646695,6.616729088639201,2.671660424469413,4.263420724094882,4.750312109862672,5.099875156054932,6.491885143570538,4.55056179775281,6.679151061173534,6.803995006242197,4.875156054931336,3.495630461922597,1.8227215980024971,2.4968789013732833,7.116104868913857,4.444444444444445,3.7078651685393256,1.735330836454432,7.0536828963795255,4.9687890137328345,6.01123595505618,2.5405742821473156,4.456928838951311,4.0886392009987516,6.491885143570538,1.3046192259675407,2.9962546816479403,2.7652933832709112,3.3583021223470664,6.429463171036204,1.8851435705368291,5.9113607990012484,5.324594257178527,4.975031210986267, +4.750312109862672,6.30461922596754,3.320848938826467,6.30461922596754,4.49438202247191,4.544319600499376,1.4856429463171037,4.250936329588015,1.9725343320848938,3.732833957553059,4.431960049937578,2.2846441947565546,1.1735330836454432,1.3295880149812733,2.5343320848938826,6.928838951310862,5.599250936329588,3.870162297128589,2.84019975031211,2.4344569288389515,4.937578027465668,6.367041198501872,3.8451935081148565,6.616729088639201,5.855181023720349,1.9975031210986267,1.704119850187266,1.5605493133583022,2.902621722846442,4.950062421972534,1.136079900124844,2.1036204744069913,5.880149812734083,4.806491885143571,2.128589263420724,3.4269662921348316,1.9600499375780276,7.303370786516854,5.181023720349563,1.4544319600499376,1.5605493133583022,5.749063670411985,4.775280898876405,2.4157303370786516,1.797752808988764,2.0474406991260925,6.866416978776529,3.9076154806491883,2.303370786516854,5.511860174781523,4.00749063670412,4.400749063670412,5.074906367041199,7.116104868913857,2.6529338327091136,4.382022471910113,4.931335830212235,6.223470661672909,6.928838951310862,4.213483146067416,3.102372034956305,4.1136079900124844,4.132334581772784,2.6092384519350813,6.741573033707866,4.394506866416979,3.227215980024969,6.616729088639201,2.696629213483146,4.288389513108614,4.781523096129837,5.131086142322098,6.554307116104869,4.575530586766542,6.741573033707866,6.866416978776529,4.893882646691636,3.533083645443196,1.8476903870162298,2.5343320848938826,7.116104868913857,4.475655430711611,3.7390761548064915,1.7602996254681649,7.0536828963795255,4.9937578027465666,6.036204744069912,2.571785268414482,4.4818976279650435,4.119850187265917,6.491885143570538,1.3295880149812733,3.027465667915106,2.790262172284644,3.3895131086142323,6.429463171036204,1.916354556803995,5.942571785268415,5.355805243445693,4.9937578027465666, +4.781523096129837,6.30461922596754,3.3583021223470664,6.367041198501872,4.519350811485642,4.563046192259676,1.5043695380774034,4.275905118601748,2.00374531835206,3.7578027465667914,4.450686641697877,2.3158551810237205,1.198501872659176,1.3545568039950062,2.5593008739076155,6.928838951310862,5.630461922596755,3.9013732833957557,2.865168539325843,2.453183520599251,4.9687890137328345,6.429463171036204,3.870162297128589,6.616729088639201,5.8863920099875156,2.0287141073657926,1.7290886392009988,1.585518102372035,2.933832709113608,4.975031210986267,1.161048689138577,2.134831460674157,5.8988764044943816,4.825218476903871,2.153558052434457,3.4456928838951315,1.9912609238451935,7.303370786516854,5.205992509363296,1.4731585518102372,1.585518102372035,5.774032459425719,4.800249687890138,2.446941323345818,1.8227215980024971,2.0786516853932584,6.866416978776529,3.938826466916354,2.33458177278402,5.543071161048689,4.038701622971286,4.431960049937578,5.099875156054932,7.116104868913857,2.6779026217228465,4.406991260923846,4.956304619225968,6.242197253433209,6.991260923845194,4.238451935081149,3.1273408239700373,4.132334581772784,4.16354556803995,2.634207240948814,6.803995006242197,4.413233458177278,3.2521847690387014,6.679151061173534,2.7215980024968793,4.313358302122348,4.812734082397004,5.168539325842697,6.554307116104869,4.606741573033708,6.741573033707866,6.866416978776529,4.912609238451935,3.564294631710362,1.8726591760299625,2.565543071161049,7.17852684144819,4.500624219725343,3.7702871410736583,1.7790262172284643,7.116104868913857,5.0187265917602994,6.061173533083646,2.602996254681648,4.506866416978776,4.157303370786517,6.491885143570538,1.3545568039950062,3.058676654182272,2.82147315855181,3.420724094881398,6.491885143570538,1.9538077403245941,5.97378277153558,5.380774032459426,5.0187265917602994, +4.806491885143571,6.367041198501872,3.3895131086142323,6.367041198501872,4.544319600499376,4.588014981273409,1.529338327091136,4.300873907615481,2.034956304619226,3.7827715355805243,4.475655430711611,2.3470661672908864,1.2172284644194757,1.3857677902621723,2.5842696629213484,6.991260923845194,5.66167290886392,3.9325842696629216,2.8901373283395753,2.478152309612984,5.0,6.429463171036204,3.8951310861423223,6.679151061173534,5.9113607990012484,2.0536828963795255,1.7602996254681649,1.6104868913857677,2.965043695380774,5.0,1.1860174781523096,2.1722846441947565,5.917602996254682,4.850187265917603,2.1722846441947565,3.470661672908864,2.0287141073657926,7.365792759051186,5.230961298377029,1.4918851435705367,1.6104868913857677,5.792759051186017,4.825218476903871,2.4843945068664173,1.8539325842696628,2.1036204744069913,6.928838951310862,3.9762796504369535,2.3720349563046192,5.574282147315855,4.063670411985019,4.4694132334581775,5.131086142322098,7.17852684144819,2.702871410736579,4.425717852684145,4.987515605493134,6.30461922596754,6.991260923845194,4.269662921348314,3.1460674157303368,4.151061173533084,4.194756554307116,2.6591760299625467,6.803995006242197,4.438202247191011,3.2709113607990012,6.679151061173534,2.746566791510612,4.33832709113608,4.843945068664169,5.199750312109863,6.616729088639201,4.631710362047441,6.803995006242197,6.866416978776529,4.937578027465668,3.6017478152309614,1.8976279650436954,2.602996254681648,7.17852684144819,4.531835205992509,3.8077403245942576,1.8039950062421974,7.116104868913857,5.043695380774032,6.086142322097379,2.634207240948814,4.531835205992509,4.188514357053683,6.554307116104869,1.3795255930087391,3.0836454431960054,2.8464419475655434,3.4581772784019975,6.491885143570538,1.9850187265917605,6.004993757802747,5.405742821473158,5.043695380774032, +4.837702871410737,6.367041198501872,3.420724094881398,6.367041198501872,4.569288389513109,4.612983770287141,1.554307116104869,4.325842696629214,2.0599250936329585,3.801498127340824,4.49438202247191,2.3720349563046192,1.2421972534332086,1.4169787765293382,2.6092384519350813,6.991260923845194,5.692883895131087,3.9637952559300875,2.9151061173533086,2.4968789013732833,5.024968789013733,6.491885143570538,3.9138576779026217,6.679151061173534,5.942571785268415,2.084893882646692,1.7915106117353308,1.6354556803995006,2.9962546816479403,5.024968789013733,1.2109862671660423,2.203495630461923,5.942571785268415,4.868913857677903,2.1972534332084894,3.495630461922597,2.0599250936329585,7.365792759051186,5.249687890137328,1.5106117353308364,1.6354556803995006,5.81772784019975,4.850187265917603,2.515605493133583,1.8851435705368291,2.128589263420724,6.928838951310862,4.00749063670412,2.4032459425717856,5.605493133583021,4.094881398252185,4.500624219725343,5.15605493133583,7.17852684144819,2.727840199750312,4.444444444444445,5.012484394506866,6.30461922596754,6.991260923845194,4.294631710362047,3.1647940074906367,4.176029962546816,4.225967540574282,2.6779026217228465,6.866416978776529,4.463171036204744,3.295880149812734,6.679151061173534,2.7715355805243447,4.3632958801498125,4.875156054931336,5.230961298377029,6.616729088639201,4.656679151061174,6.803995006242197,6.928838951310862,4.956304619225968,3.6329588014981273,1.9225967540574282,2.634207240948814,7.240948813982522,4.563046192259676,3.8389513108614235,1.8227215980024971,7.17852684144819,5.062421972534332,6.111111111111111,2.66541822721598,4.556803995006242,4.219725343320849,6.554307116104869,1.404494382022472,3.114856429463171,2.871410736579276,3.4893882646691634,6.554307116104869,2.0224719101123596,6.036204744069912,5.430711610486892,5.068664169787765, +4.868913857677903,6.429463171036204,3.4581772784019975,6.429463171036204,4.594257178526841,4.631710362047441,1.5730337078651684,4.357053682896379,2.091136079900125,3.826466916354557,4.519350811485642,2.4032459425717856,1.2671660424469413,1.4481897627965044,2.634207240948814,7.0536828963795255,5.724094881398252,3.9950062421972534,2.9400749063670415,2.521847690387016,5.056179775280899,6.491885143570538,3.938826466916354,6.741573033707866,5.97378277153558,2.1161048689138577,1.8227215980024971,1.6604244694132335,3.033707865168539,5.049937578027466,1.2359550561797754,2.2347066167290888,5.961298377028713,4.893882646691636,2.2222222222222223,3.5205992509363297,2.097378277153558,7.428214731585518,5.274656679151062,1.5355805243445693,1.6541822721598003,5.836454431960051,4.881398252184769,2.546816479400749,1.9101123595505618,2.15980024968789,6.991260923845194,4.044943820224719,2.4344569288389515,5.630461922596755,4.1260923845193505,4.531835205992509,5.181023720349563,7.240948813982522,2.746566791510612,4.4694132334581775,5.043695380774032,6.367041198501872,7.0536828963795255,4.31960049937578,3.183520599250936,4.194756554307116,4.257178526841448,2.702871410736579,6.866416978776529,4.4818976279650435,3.3146067415730336,6.741573033707866,2.790262172284644,4.388264669163545,4.906367041198502,5.262172284644195,6.616729088639201,4.687890137328339,6.803995006242197,6.928838951310862,4.975031210986267,3.6704119850187267,1.941323345817728,2.671660424469413,7.303370786516854,4.594257178526841,3.870162297128589,1.8476903870162298,7.17852684144819,5.087390761548065,6.1360799001248445,2.696629213483146,4.588014981273409,4.250936329588015,6.616729088639201,1.4294631710362047,3.1460674157303368,2.8963795255930087,3.5205992509363297,6.616729088639201,2.0536828963795255,6.061173533083646,5.455680399500624,5.087390761548065, +4.900124843945068,6.429463171036204,3.4893882646691634,6.429463171036204,4.619225967540574,4.656679151061174,1.5980024968789013,4.382022471910113,2.122347066167291,3.8451935081148565,4.538077403245943,2.4344569288389515,1.285892634207241,1.4731585518102372,2.6529338327091136,7.0536828963795255,5.7553058676654185,4.02621722846442,2.965043695380774,2.5405742821473156,5.087390761548065,6.554307116104869,3.9637952559300875,6.741573033707866,5.998751560549313,2.1410736579275906,1.8539325842696628,1.6853932584269664,3.0649188514357055,5.074906367041199,1.260923845193508,2.272159800249688,5.986267166042447,4.912609238451935,2.2409488139825218,3.5393258426966296,2.128589263420724,7.428214731585518,5.299625468164794,1.554307116104869,1.6791510611735332,5.861423220973783,4.906367041198502,2.578027465667915,1.941323345817728,2.184769038701623,6.991260923845194,4.0761548064918856,2.471910112359551,5.66167290886392,4.151061173533084,4.569288389513109,5.205992509363296,7.303370786516854,2.7715355805243447,4.488139825218477,5.068664169787765,6.429463171036204,7.0536828963795255,4.3508114856429465,3.202247191011236,4.213483146067416,4.288389513108614,2.7215980024968793,6.928838951310862,4.506866416978776,3.339575530586767,6.741573033707866,2.8152309612983775,4.413233458177278,4.937578027465668,5.299625468164794,6.679151061173534,4.712858926342073,6.866416978776529,6.928838951310862,5.0,3.701622971285893,1.9662921348314608,2.702871410736579,7.303370786516854,4.6254681647940075,3.9076154806491883,1.8664169787765295,7.240948813982522,5.1123595505617985,6.161048689138577,2.727840199750312,4.612983770287141,4.282147315855181,6.616729088639201,1.4481897627965044,3.1772784019975036,2.9275905118601746,3.5580524344569286,6.616729088639201,2.091136079900125,6.092384519350812,5.480649188514358,5.1123595505617985, +4.931335830212235,6.491885143570538,3.5205992509363297,6.491885143570538,4.644194756554308,4.681647940074906,1.6229712858926344,4.406991260923846,2.153558052434457,3.870162297128589,4.563046192259676,2.4656679151061174,1.3108614232209737,1.5043695380774034,2.6779026217228465,7.116104868913857,5.786516853932584,4.057428214731585,2.990012484394507,2.565543071161049,5.1123595505617985,6.554307116104869,3.9887640449438204,6.803995006242197,6.029962546816479,2.1722846441947565,1.8851435705368291,1.710362047440699,3.0961298377028714,5.099875156054932,1.285892634207241,2.303370786516854,6.004993757802747,4.937578027465668,2.2659176029962547,3.564294631710362,2.1660424469413235,7.49063670411985,5.324594257178527,1.5730337078651684,1.704119850187266,5.8863920099875156,4.931335830212235,2.6154806491885143,1.9725343320848938,2.209737827715356,7.0536828963795255,4.107365792759051,2.5031210986267167,5.692883895131087,4.18227215980025,4.600499375780275,5.230961298377029,7.303370786516854,2.7965043695380776,4.506866416978776,5.099875156054932,6.429463171036204,7.116104868913857,4.375780274656679,3.2209737827715355,4.238451935081149,4.31960049937578,2.746566791510612,6.928838951310862,4.525593008739076,3.3583021223470664,6.741573033707866,2.84019975031211,4.438202247191011,4.9687890137328345,5.33083645443196,6.679151061173534,4.737827715355805,6.866416978776529,6.991260923845194,5.0187265917602994,3.732833957553059,1.9912609238451935,2.740324594257179,7.365792759051186,4.656679151061174,3.938826466916354,1.8913857677902621,7.240948813982522,5.1373283395755305,6.186017478152309,2.7590511860174782,4.637952559300874,4.31960049937578,6.679151061173534,1.4731585518102372,3.2084893882646695,2.9525593008739075,3.589263420724095,6.679151061173534,2.122347066167291,6.123595505617978,5.50561797752809,5.1373283395755305, +4.962546816479401,6.491885143570538,3.5580524344569286,6.491885143570538,4.66916354556804,4.700374531835206,1.6416978776529338,4.431960049937578,2.1785268414481895,3.8951310861423223,4.581772784019975,2.4906367041198503,1.3358302122347065,1.5355805243445693,2.702871410736579,7.116104868913857,5.81772784019975,4.0886392009987516,3.0149812734082393,2.5842696629213484,5.143570536828964,6.616729088639201,4.013732833957553,6.803995006242197,6.061173533083646,2.203495630461923,1.9101123595505618,1.735330836454432,3.1273408239700373,5.118601747815231,1.3108614232209737,2.340823970037453,6.029962546816479,4.962546816479401,2.2846441947565546,3.589263420724095,2.1972534332084894,7.49063670411985,5.34956304619226,1.5980024968789013,1.7290886392009988,5.905118601747815,4.962546816479401,2.6466916354556806,2.00374531835206,2.2409488139825218,7.0536828963795255,4.144818976279651,2.5405742821473156,5.724094881398252,4.207240948813983,4.637952559300874,5.262172284644195,7.365792759051186,2.82147315855181,4.531835205992509,5.1248439450686645,6.491885143570538,7.116104868913857,4.400749063670412,3.2397003745318353,4.257178526841448,4.3508114856429465,2.7715355805243447,6.991260923845194,4.55056179775281,3.383270911360799,6.803995006242197,2.865168539325843,4.463171036204744,5.0,5.3620474406991265,6.679151061173534,4.769038701622971,6.928838951310862,6.991260923845194,5.0374531835206,3.7702871410736583,2.016229712858926,2.777777777777778,7.428214731585518,4.687890137328339,3.970037453183521,1.9101123595505618,7.303370786516854,5.162297128589263,6.210986267166042,2.790262172284644,4.662921348314606,4.3508114856429465,6.679151061173534,1.4981273408239701,3.2397003745318353,2.977528089887641,3.620474406991261,6.741573033707866,2.153558052434457,6.154806491885144,5.5305867665418225,5.162297128589263, +4.9937578027465666,6.554307116104869,3.589263420724095,6.554307116104869,4.694132334581773,4.725343320848939,1.6666666666666667,4.456928838951311,2.209737827715356,3.9138576779026217,4.600499375780275,2.521847690387016,1.3545568039950062,1.5667915106117354,2.727840199750312,7.17852684144819,5.848938826466916,4.119850187265917,3.0399500624219726,2.6092384519350813,5.174781523096129,6.616729088639201,4.038701622971286,6.866416978776529,6.086142322097379,2.2284644194756553,1.941323345817728,1.7602996254681649,3.1585518102372037,5.143570536828964,1.3358302122347065,2.3720349563046192,6.048689138576779,4.9812734082397006,2.309612983770287,3.6142322097378274,2.2347066167290888,7.553058676654182,5.3745318352059925,1.616729088639201,1.7540574282147314,5.930087390761548,4.987515605493134,2.6779026217228465,2.0287141073657926,2.2659176029962547,7.116104868913857,4.176029962546816,2.571785268414482,5.749063670411985,4.238451935081149,4.66916354556804,5.287141073657928,7.365792759051186,2.8464419475655434,4.55056179775281,5.15605493133583,6.491885143570538,7.116104868913857,4.431960049937578,3.258426966292135,4.275905118601748,4.382022471910113,2.790262172284644,6.991260923845194,4.575530586766542,3.4019975031210987,6.803995006242197,2.8901373283395753,4.488139825218477,5.031210986267166,5.393258426966292,6.741573033707866,4.794007490636704,6.928838951310862,6.991260923845194,5.062421972534332,3.801498127340824,2.0411985018726595,2.808988764044944,7.428214731585518,4.719101123595506,4.00749063670412,1.9350811485642945,7.303370786516854,5.187265917602996,6.235955056179775,2.82147315855181,4.687890137328339,4.382022471910113,6.741573033707866,1.523096129837703,3.2709113607990012,3.0087390761548067,3.6579275905118602,6.741573033707866,2.1910112359550564,6.186017478152309,5.561797752808988,5.181023720349563, +5.024968789013733,6.554307116104869,3.6267166042446943,6.554307116104869,4.719101123595506,4.750312109862672,1.6916354556803994,4.488139825218477,2.2409488139825218,3.938826466916354,4.6254681647940075,2.5530586766541825,1.3795255930087391,1.5980024968789013,2.752808988764045,7.17852684144819,5.880149812734083,4.151061173533084,3.0649188514357055,2.6279650436953808,5.199750312109863,6.679151061173534,4.063670411985019,6.866416978776529,6.117353308364544,2.259675405742821,1.9725343320848938,1.7852684144818978,3.1897627965043696,5.168539325842697,1.3607990012484397,2.4032459425717856,6.073657927590512,5.0062421972534334,2.33458177278402,3.6329588014981273,2.2659176029962547,7.553058676654182,5.393258426966292,1.6354556803995006,1.7790262172284643,5.948813982521848,5.012484394506866,2.715355805243446,2.0599250936329585,2.2908863920099876,7.116104868913857,4.207240948813983,2.602996254681648,5.7802746566791505,4.269662921348314,4.700374531835206,5.312109862671661,7.428214731585518,2.865168539325843,4.575530586766542,5.181023720349563,6.554307116104869,7.17852684144819,4.456928838951311,3.2771535580524347,4.300873907615481,4.413233458177278,2.8152309612983775,7.0536828963795255,4.594257178526841,3.4269662921348316,6.803995006242197,2.9151061173533086,4.51310861423221,5.062421972534332,5.424469413233458,6.741573033707866,4.818976279650437,6.991260923845194,7.0536828963795255,5.081148564294631,3.8389513108614235,2.066167290886392,2.8464419475655434,7.49063670411985,4.750312109862672,4.038701622971286,1.9538077403245941,7.365792759051186,5.212234706616729,6.242197253433209,2.852684144818976,4.712858926342073,4.413233458177278,6.741573033707866,1.5480649188514357,3.3021223470661676,3.033707865168539,3.689138576779026,6.803995006242197,2.2222222222222223,6.217228464419476,5.586766541822722,5.205992509363296, +5.056179775280899,6.616729088639201,3.6579275905118602,6.616729088639201,4.7440699126092385,4.769038701622971,1.710362047440699,4.51310861423221,2.272159800249688,3.9637952559300875,4.644194756554308,2.5842696629213484,1.404494382022472,1.6229712858926344,2.777777777777778,7.17852684144819,5.9113607990012484,4.18227215980025,3.089887640449438,2.6529338327091136,5.230961298377029,6.679151061173534,4.0886392009987516,6.928838951310862,6.1485642946317105,2.2908863920099876,2.00374531835206,1.8102372034956304,3.2209737827715355,5.19350811485643,1.3857677902621723,2.4406991260923845,6.092384519350812,5.024968789013733,2.35330836454432,3.6579275905118602,2.303370786516854,7.615480649188515,5.418227215980025,1.6541822721598003,1.8039950062421974,5.97378277153558,5.0374531835206,2.746566791510612,2.091136079900125,2.322097378277154,7.17852684144819,4.244694132334582,2.640449438202247,5.811485642946318,4.294631710362047,4.737827715355805,5.337078651685393,7.428214731585518,2.8901373283395753,4.594257178526841,5.212234706616729,6.616729088639201,7.17852684144819,4.4818976279650435,3.3021223470661676,4.31960049937578,4.444444444444445,2.8339575530586765,7.0536828963795255,4.619225967540574,3.4456928838951315,6.866416978776529,2.9400749063670415,4.538077403245943,5.093632958801498,5.461922596754057,6.803995006242197,4.850187265917603,6.991260923845194,7.0536828963795255,5.099875156054932,3.870162297128589,2.091136079900125,2.8776529338327093,7.49063670411985,4.781523096129837,4.069912609238452,1.9725343320848938,7.365792759051186,5.230961298377029,6.30461922596754,2.8838951310861427,4.737827715355805,4.444444444444445,6.803995006242197,1.5730337078651684,3.3333333333333335,3.058676654182272,3.7203495630461925,6.803995006242197,2.259675405742821,6.242197253433209,5.611735330836455,5.230961298377029, +5.081148564294631,6.616729088639201,3.689138576779026,6.616729088639201,4.775280898876405,4.794007490636704,1.735330836454432,4.538077403245943,2.2971285892634206,3.982521847690387,4.66916354556804,2.6092384519350813,1.4232209737827717,1.6541822721598003,2.8027465667915106,7.240948813982522,5.942571785268415,4.213483146067416,3.114856429463171,2.671660424469413,5.262172284644195,6.741573033707866,4.1136079900124844,6.928838951310862,6.179775280898876,2.3158551810237205,2.034956304619226,1.8352059925093633,3.2521847690387014,5.218476903870163,1.410736579275905,2.471910112359551,6.111111111111111,5.049937578027466,2.3782771535580522,3.682896379525593,2.33458177278402,7.615480649188515,5.443196004993759,1.6791510611735332,1.8227215980024971,5.992509363295881,5.068664169787765,2.777777777777778,2.1161048689138577,2.3470661672908864,7.17852684144819,4.275905118601748,2.671660424469413,5.842696629213483,4.325842696629214,4.769038701622971,5.3620474406991265,7.49063670411985,2.9151061173533086,4.612983770287141,5.243445692883895,6.616729088639201,7.240948813982522,4.51310861423221,3.320848938826467,4.33832709113608,4.4818976279650435,2.8589263420724094,7.116104868913857,4.637952559300874,3.470661672908864,6.866416978776529,2.965043695380774,4.563046192259676,5.118601747815231,5.493133583021224,6.803995006242197,4.875156054931336,7.0536828963795255,7.0536828963795255,5.1248439450686645,3.9076154806491883,2.1161048689138577,2.9151061173533086,7.553058676654182,4.812734082397004,4.107365792759051,1.9975031210986267,7.428214731585518,5.2559300873907615,6.30461922596754,2.9151061173533086,4.762796504369538,4.475655430711611,6.803995006242197,1.5980024968789013,3.3645443196004994,3.0836454431960054,3.7515605493133584,6.866416978776529,2.2908863920099876,6.30461922596754,5.636704119850187,5.2559300873907615, +5.1123595505617985,6.679151061173534,3.7265917602996255,6.679151061173534,4.800249687890138,4.818976279650437,1.7602996254681649,4.563046192259676,2.328339575530587,4.00749063670412,4.687890137328339,2.640449438202247,1.4481897627965044,1.6853932584269664,2.8277153558052435,7.240948813982522,5.97378277153558,4.238451935081149,3.139825218476904,2.696629213483146,5.287141073657928,6.741573033707866,4.132334581772784,6.991260923845194,6.20474406991261,2.3470661672908864,2.066167290886392,1.8601747815230962,3.2833957553058677,5.243445692883895,1.435705368289638,2.5031210986267167,6.1360799001248445,5.068664169787765,2.397003745318352,3.7078651685393256,2.3720349563046192,7.677902621722847,5.468164794007491,1.6978776529338326,1.8476903870162298,6.0174781523096135,5.093632958801498,2.808988764044944,2.1473158551810236,2.3720349563046192,7.240948813982522,4.307116104868914,2.7091136079900124,5.867665418227216,4.3508114856429465,4.806491885143571,5.393258426966292,7.553058676654182,2.9400749063670415,4.637952559300874,5.268414481897628,6.679151061173534,7.240948813982522,4.538077403245943,3.339575530586767,4.3632958801498125,4.51310861423221,2.8776529338327093,7.116104868913857,4.662921348314606,3.4893882646691634,6.866416978776529,2.990012484394507,4.588014981273409,5.149812734082397,5.524344569288389,6.803995006242197,4.900124843945068,7.0536828963795255,7.116104868913857,5.143570536828964,3.938826466916354,2.1410736579275906,2.9463171036204745,7.615480649188515,4.843945068664169,4.138576779026217,2.016229712858926,7.428214731585518,5.280898876404494,6.367041198501872,2.9463171036204745,4.787765293383271,4.51310861423221,6.866416978776529,1.616729088639201,3.3957553058676653,3.114856429463171,3.7890137328339577,6.928838951310862,2.328339575530587,6.30461922596754,5.66167290886392,5.274656679151062, +5.143570536828964,6.679151061173534,3.7578027465667914,6.679151061173534,4.825218476903871,4.837702871410737,1.7790262172284643,4.588014981273409,2.359550561797753,4.032459425717852,4.712858926342073,2.671660424469413,1.4731585518102372,1.7166042446941323,2.852684144818976,7.303370786516854,6.004993757802747,4.269662921348314,3.1647940074906367,2.715355805243446,5.318352059925093,6.803995006242197,4.157303370786517,6.991260923845194,6.235955056179775,2.3782771535580522,2.091136079900125,1.8851435705368291,3.3146067415730336,5.268414481897628,1.4606741573033708,2.5405742821473156,6.154806491885144,5.093632958801498,2.4219725343320846,3.7265917602996255,2.4032459425717856,7.677902621722847,5.493133583021224,1.7166042446941323,1.8726591760299625,6.036204744069912,5.118601747815231,2.8464419475655434,2.1785268414481895,2.4032459425717856,7.240948813982522,4.344569288389513,2.740324594257179,5.8988764044943816,4.382022471910113,4.837702871410737,5.418227215980025,7.553058676654182,2.965043695380774,4.656679151061174,5.299625468164794,6.679151061173534,7.303370786516854,4.563046192259676,3.3583021223470664,4.382022471910113,4.544319600499376,2.902621722846442,7.17852684144819,4.687890137328339,3.5143570536828963,6.928838951310862,3.0149812734082393,4.612983770287141,5.181023720349563,5.555555555555556,6.866416978776529,4.931335830212235,7.116104868913857,7.116104868913857,5.168539325842697,3.9762796504369535,2.1660424469413235,2.9837702871410734,7.615480649188515,4.875156054931336,4.169787765293384,2.0411985018726595,7.49063670411985,5.305867665418227,6.367041198501872,2.977528089887641,4.812734082397004,4.544319600499376,6.866416978776529,1.6416978776529338,3.4269662921348316,3.139825218476904,3.8202247191011236,6.928838951310862,2.359550561797753,6.367041198501872,5.686641697877653,5.299625468164794, +5.174781523096129,6.741573033707866,3.7890137328339577,6.679151061173534,4.850187265917603,4.8626716604244695,1.8039950062421974,4.619225967540574,2.3845193508114857,4.051186017478152,4.7315855181023725,2.702871410736579,1.4918851435705367,1.7478152309612984,2.8776529338327093,7.303370786516854,6.036204744069912,4.300873907615481,3.183520599250936,2.740324594257179,5.34956304619226,6.803995006242197,4.18227215980025,7.0536828963795255,6.242197253433209,2.4032459425717856,2.122347066167291,1.9101123595505618,3.3458177278401995,5.293383270911361,1.4856429463171037,2.571785268414482,6.179775280898876,5.118601747815231,2.446941323345818,3.7515605493133584,2.4406991260923845,7.740324594257178,5.5181023720349565,1.7415730337078652,1.8976279650436954,6.061173533083646,5.149812734082397,2.8776529338327093,2.209737827715356,2.428214731585518,7.303370786516854,4.375780274656679,2.7715355805243447,5.930087390761548,4.406991260923846,4.875156054931336,5.443196004993759,7.615480649188515,2.990012484394507,4.675405742821473,5.324594257178527,6.741573033707866,7.303370786516854,4.594257178526841,3.3770287141073654,4.400749063670412,4.575530586766542,2.9275905118601746,7.17852684144819,4.70661672908864,3.533083645443196,6.928838951310862,3.033707865168539,4.637952559300874,5.212234706616729,5.593008739076155,6.866416978776529,4.956304619225968,7.116104868913857,7.116104868913857,5.187265917602996,4.00749063670412,2.1910112359550564,3.0212234706616727,7.677902621722847,4.906367041198502,4.207240948813983,2.0599250936329585,7.49063670411985,5.33083645443196,6.367041198501872,3.0024968789013733,4.837702871410737,4.575530586766542,6.928838951310862,1.6666666666666667,3.4581772784019975,3.1647940074906367,3.8514357053682895,6.991260923845194,2.397003745318352,6.367041198501872,5.711610486891385,5.324594257178527, +5.205992509363296,6.803995006242197,3.826466916354557,6.741573033707866,4.875156054931336,4.887640449438202,1.8289637952559301,4.644194756554308,2.4157303370786516,4.0761548064918856,4.750312109862672,2.727840199750312,1.5168539325842696,1.772784019975031,2.902621722846442,7.365792759051186,6.067415730337078,4.332084893882647,3.2084893882646695,2.7590511860174782,5.3745318352059925,6.866416978776529,4.207240948813983,7.0536828963795255,6.30461922596754,2.4344569288389515,2.153558052434457,1.9350811485642945,3.383270911360799,5.318352059925093,1.5106117353308364,2.6092384519350813,6.198501872659176,5.1373283395755305,2.4656679151061174,3.776529338327091,2.471910112359551,7.740324594257178,5.543071161048689,1.7602996254681649,1.9225967540574282,6.079900124843945,5.174781523096129,2.908863920099875,2.2347066167290888,2.453183520599251,7.303370786516854,4.413233458177278,2.808988764044944,5.961298377028713,4.438202247191011,4.906367041198502,5.468164794007491,7.615480649188515,3.0087390761548067,4.700374531835206,5.355805243445693,6.803995006242197,7.303370786516854,4.619225967540574,3.3957553058676653,4.425717852684145,4.606741573033708,2.9463171036204745,7.240948813982522,4.7315855181023725,3.5580524344569286,6.991260923845194,3.058676654182272,4.662921348314606,5.243445692883895,5.6242197253433215,6.866416978776529,4.987515605493134,7.17852684144819,7.17852684144819,5.205992509363296,4.044943820224719,2.215980024968789,3.0524344569288386,7.740324594257178,4.937578027465668,4.238451935081149,2.084893882646692,7.553058676654182,5.355805243445693,6.429463171036204,3.033707865168539,4.8626716604244695,4.606741573033708,6.928838951310862,1.6916354556803994,3.4893882646691634,3.1897627965043696,3.888888888888889,7.0536828963795255,2.428214731585518,6.367041198501872,5.736579275905119,5.34956304619226, +5.237203495630462,6.803995006242197,3.857677902621723,6.741573033707866,4.900124843945068,4.906367041198502,1.8476903870162298,4.66916354556804,2.446941323345818,4.1011235955056184,4.775280898876405,2.7590511860174782,1.5418227215980027,1.8039950062421974,2.9275905118601746,7.365792759051186,6.092384519350812,4.3632958801498125,3.233458177278402,2.777777777777778,5.405742821473158,6.866416978776529,4.2322097378277155,7.116104868913857,6.30461922596754,2.4656679151061174,2.184769038701623,1.9600499375780276,3.4144818976279647,5.343320848938826,1.5355805243445693,2.640449438202247,6.223470661672909,5.162297128589263,2.4906367041198503,3.7952559300873907,2.5093632958801497,7.740324594257178,5.561797752808988,1.7790262172284643,1.9475655430711611,6.104868913857677,5.199750312109863,2.9400749063670415,2.2659176029962547,2.478152309612984,7.365792759051186,4.444444444444445,2.84019975031211,5.986267166042447,4.4694132334581775,4.937578027465668,5.493133583021224,7.677902621722847,3.033707865168539,4.719101123595506,5.380774032459426,6.803995006242197,7.365792759051186,4.644194756554308,3.4144818976279647,4.444444444444445,4.637952559300874,2.9712858926342074,7.240948813982522,4.750312109862672,3.576779026217228,6.991260923845194,3.0836454431960054,4.687890137328339,5.274656679151062,5.655430711610487,6.928838951310862,5.012484394506866,7.17852684144819,7.17852684144819,5.230961298377029,4.0761548064918856,2.2409488139825218,3.089887640449438,7.740324594257178,4.9687890137328345,4.269662921348314,2.1036204744069913,7.553058676654182,5.3745318352059925,6.429463171036204,3.0649188514357055,4.887640449438202,4.637952559300874,6.928838951310862,1.7166042446941323,3.5205992509363297,3.2209737827715355,3.920099875156055,7.0536828963795255,2.459425717852684,6.429463171036204,5.761548064918852,5.36828963795256, +5.268414481897628,6.866416978776529,3.888888888888889,6.803995006242197,4.925093632958801,4.931335830212235,1.8726591760299625,4.694132334581773,2.478152309612984,4.119850187265917,4.794007490636704,2.790262172284644,1.5605493133583022,1.8352059925093633,2.9525593008739075,7.428214731585518,6.123595505617978,4.394506866416979,3.258426966292135,2.8027465667915106,5.436953807740325,6.928838951310862,4.257178526841448,7.116104868913857,6.367041198501872,2.4906367041198503,2.215980024968789,1.9850187265917605,3.4456928838951315,5.36828963795256,1.5605493133583022,2.671660424469413,6.242197253433209,5.181023720349563,2.5093632958801497,3.8202247191011236,2.5405742821473156,7.8027465667915115,5.586766541822722,1.797752808988764,1.9662921348314608,6.129837702871411,5.224719101123595,2.977528089887641,2.2971285892634206,2.5093632958801497,7.365792759051186,4.475655430711611,2.871410736579276,6.0174781523096135,4.49438202247191,4.975031210986267,5.524344569288389,7.677902621722847,3.058676654182272,4.737827715355805,5.411985018726591,6.866416978776529,7.365792759051186,4.675405742821473,3.4332084893882646,4.463171036204744,4.66916354556804,2.990012484394507,7.303370786516854,4.775280898876405,3.6017478152309614,6.991260923845194,3.108614232209738,4.712858926342073,5.305867665418227,5.686641697877653,6.928838951310862,5.0374531835206,7.240948813982522,7.17852684144819,5.249687890137328,4.107365792759051,2.2659176029962547,3.1210986267166043,7.8027465667915115,5.0,4.307116104868914,2.128589263420724,7.615480649188515,5.399500624219725,6.491885143570538,3.0961298377028714,4.912609238451935,4.675405742821473,6.991260923845194,1.7415730337078652,3.5518102372034956,3.245942571785269,3.951310861423221,7.116104868913857,2.4968789013732833,6.429463171036204,5.792759051186017,5.393258426966292, +5.299625468164794,6.866416978776529,3.926342072409488,6.803995006242197,4.950062421972534,4.950062421972534,1.8976279650436954,4.719101123595506,2.5031210986267167,4.144818976279651,4.818976279650437,2.8152309612983775,1.585518102372035,1.8664169787765295,2.977528089887641,7.428214731585518,6.154806491885144,4.425717852684145,3.2833957553058677,2.82147315855181,5.461922596754057,6.928838951310862,4.282147315855181,7.17852684144819,6.367041198501872,2.521847690387016,2.2409488139825218,2.009987515605493,3.4769038701622974,5.393258426966292,1.585518102372035,2.7091136079900124,6.242197253433209,5.205992509363296,2.5343320848938826,3.8451935081148565,2.578027465667915,7.8027465667915115,5.611735330836455,1.8227215980024971,1.9912609238451935,6.1485642946317105,5.2559300873907615,3.0087390761548067,2.322097378277154,2.5343320848938826,7.428214731585518,4.51310861423221,2.908863920099875,6.048689138576779,4.525593008739076,5.0062421972534334,5.549313358302123,7.740324594257178,3.0836454431960054,4.762796504369538,5.436953807740325,6.866416978776529,7.428214731585518,4.700374531835206,3.451935081148564,4.488139825218477,4.700374531835206,3.0149812734082393,7.303370786516854,4.794007490636704,3.620474406991261,7.0536828963795255,3.1335830212234708,4.737827715355805,5.337078651685393,5.724094881398252,6.991260923845194,5.068664169787765,7.240948813982522,7.240948813982522,5.268414481897628,4.144818976279651,2.2908863920099876,3.1585518102372037,7.8027465667915115,5.031210986267166,4.33832709113608,2.1473158551810236,7.615480649188515,5.424469413233458,6.491885143570538,3.1273408239700373,4.937578027465668,4.70661672908864,6.991260923845194,1.7602996254681649,3.5830212234706615,3.2709113607990012,3.9887640449438204,7.17852684144819,2.5280898876404496,6.491885143570538,5.81772784019975,5.418227215980025, +5.324594257178527,6.928838951310862,3.957553058676654,6.866416978776529,4.975031210986267,4.975031210986267,1.916354556803995,4.750312109862672,2.5343320848938826,4.169787765293384,4.837702871410737,2.8464419475655434,1.6104868913857677,1.8976279650436954,3.0024968789013733,7.49063670411985,6.186017478152309,4.456928838951311,3.3083645443196006,2.8464419475655434,5.493133583021224,6.991260923845194,4.307116104868914,7.17852684144819,6.429463171036204,2.5530586766541825,2.272159800249688,2.034956304619226,3.508114856429463,5.418227215980025,1.6104868913857677,2.740324594257179,6.30461922596754,5.224719101123595,2.5593008739076155,3.870162297128589,2.6092384519350813,7.865168539325843,5.636704119850187,1.8414481897627966,2.016229712858926,6.173533083645444,5.280898876404494,3.0399500624219726,2.35330836454432,2.5593008739076155,7.428214731585518,4.544319600499376,2.9400749063670415,6.079900124843945,4.55056179775281,5.043695380774032,5.574282147315855,7.8027465667915115,3.108614232209738,4.781523096129837,5.468164794007491,6.928838951310862,7.428214731585518,4.725343320848939,3.4769038701622974,4.506866416978776,4.7315855181023725,3.033707865168539,7.365792759051186,4.818976279650437,3.6454431960049942,7.0536828963795255,3.1585518102372037,4.762796504369538,5.36828963795256,5.7553058676654185,6.991260923845194,5.093632958801498,7.303370786516854,7.240948813982522,5.293383270911361,4.176029962546816,2.3158551810237205,3.1960049937578026,7.865168539325843,5.062421972534332,4.375780274656679,2.1722846441947565,7.677902621722847,5.449438202247191,6.491885143570538,3.1585518102372037,4.962546816479401,4.737827715355805,7.0536828963795255,1.7852684144818978,3.6142322097378274,3.3021223470661676,4.019975031210986,7.17852684144819,2.565543071161049,6.491885143570538,5.842696629213483,5.436953807740325, +5.355805243445693,6.928838951310862,3.9887640449438204,6.866416978776529,5.0,5.0,1.941323345817728,4.775280898876405,2.565543071161049,4.188514357053683,4.856429463171036,2.8776529338327093,1.6292134831460674,1.9225967540574282,3.027465667915106,7.49063670411985,6.217228464419476,4.488139825218477,3.3333333333333335,2.865168539325843,5.524344569288389,6.991260923845194,4.332084893882647,7.240948813982522,6.429463171036204,2.578027465667915,2.303370786516854,2.0599250936329585,3.5393258426966296,5.443196004993759,1.6354556803995006,2.7715355805243447,6.30461922596754,5.249687890137328,2.578027465667915,3.888888888888889,2.6466916354556806,7.865168539325843,5.66167290886392,1.8601747815230962,2.0411985018726595,6.192259675405743,5.305867665418227,3.0711610486891385,2.3845193508114857,2.5905118601747814,7.49063670411985,4.575530586766542,2.977528089887641,6.104868913857677,4.581772784019975,5.074906367041199,5.599250936329588,7.8027465667915115,3.1335830212234708,4.800249687890138,5.493133583021224,6.991260923845194,7.428214731585518,4.750312109862672,3.495630461922597,4.525593008739076,4.762796504369538,3.058676654182272,7.365792759051186,4.843945068664169,3.6641697877652937,7.0536828963795255,3.183520599250936,4.787765293383271,5.399500624219725,5.786516853932584,6.991260923845194,5.118601747815231,7.303370786516854,7.240948813982522,5.312109862671661,4.213483146067416,2.340823970037453,3.227215980024969,7.927590511860175,5.087390761548065,4.406991260923846,2.1910112359550564,7.677902621722847,5.474406991260924,6.554307116104869,3.1897627965043696,4.987515605493134,4.769038701622971,7.0536828963795255,1.8102372034956304,3.6454431960049942,3.3270911360799,4.051186017478152,7.240948813982522,2.596754057428215,6.554307116104869,5.867665418227216,5.461922596754057, +5.3870162297128585,6.991260923845194,4.02621722846442,6.928838951310862,5.024968789013733,5.0187265917602994,1.9662921348314608,4.800249687890138,2.596754057428215,4.213483146067416,4.881398252184769,2.908863920099875,1.6541822721598003,1.9538077403245941,3.0524344569288386,7.553058676654182,6.242197253433209,4.519350811485642,3.3583021223470664,2.8901373283395753,5.549313358302123,7.0536828963795255,4.3508114856429465,7.240948813982522,6.491885143570538,2.6092384519350813,2.33458177278402,2.084893882646692,3.5705368289637955,5.468164794007491,1.6541822721598003,2.808988764044944,6.30461922596754,5.274656679151062,2.602996254681648,3.9138576779026217,2.6779026217228465,7.927590511860175,5.686641697877653,1.8851435705368291,2.066167290886392,6.217228464419476,5.337078651685393,3.108614232209738,2.4157303370786516,2.6154806491885143,7.49063670411985,4.612983770287141,3.0087390761548067,6.1360799001248445,4.606741573033708,5.1123595505617985,5.6242197253433215,7.865168539325843,3.15230961298377,4.825218476903871,5.524344569288389,6.991260923845194,7.49063670411985,4.781523096129837,3.5143570536828963,4.55056179775281,4.794007490636704,3.0836454431960054,7.428214731585518,4.8626716604244695,3.689138576779026,7.116104868913857,3.2084893882646695,4.812734082397004,5.430711610486892,5.81772784019975,7.0536828963795255,5.149812734082397,7.365792759051186,7.303370786516854,5.33083645443196,4.244694132334582,2.3657927590511862,3.2646691635455682,7.927590511860175,5.118601747815231,4.438202247191011,2.215980024968789,7.740324594257178,5.499375780274657,6.554307116104869,3.2209737827715355,5.012484394506866,4.800249687890138,7.116104868913857,1.8352059925093633,3.6766541822721597,3.352059925093633,4.082397003745319,7.240948813982522,2.634207240948814,6.554307116104869,5.892634207240949,5.48689138576779, +5.418227215980025,6.991260923845194,4.057428214731585,6.928838951310862,5.049937578027466,5.043695380774032,1.9850187265917605,4.825218476903871,2.6217228464419473,4.238451935081149,4.900124843945068,2.933832709113608,1.6791510611735332,1.9850187265917605,3.077403245942572,7.553058676654182,6.30461922596754,4.55056179775281,3.383270911360799,2.908863920099875,5.580524344569288,7.0536828963795255,4.375780274656679,7.303370786516854,6.491885143570538,2.640449438202247,2.3657927590511862,2.1098626716604243,3.6017478152309614,5.493133583021224,1.6791510611735332,2.84019975031211,6.367041198501872,5.293383270911361,2.6217228464419473,3.938826466916354,2.715355805243446,7.927590511860175,5.711610486891385,1.9038701622971288,2.091136079900125,6.235955056179775,5.3620474406991265,3.139825218476904,2.4406991260923845,2.640449438202247,7.553058676654182,4.644194756554308,3.0399500624219726,6.167290886392011,4.637952559300874,5.143570536828964,5.655430711610487,7.865168539325843,3.1772784019975036,4.843945068664169,5.555555555555556,7.0536828963795255,7.49063670411985,4.806491885143571,3.533083645443196,4.569288389513109,4.831460674157303,3.102372034956305,7.428214731585518,4.887640449438202,3.7078651685393256,7.116104868913857,3.233458177278402,4.837702871410737,5.461922596754057,5.855181023720349,7.0536828963795255,5.174781523096129,7.365792759051186,7.303370786516854,5.355805243445693,4.282147315855181,2.3907615480649187,3.295880149812734,7.990012484394507,5.149812734082397,4.475655430711611,2.2347066167290888,7.740324594257178,5.524344569288389,6.616729088639201,3.2521847690387014,5.0374531835206,4.831460674157303,7.116104868913857,1.8601747815230962,3.701622971285893,3.3770287141073654,4.119850187265917,7.303370786516854,2.66541822721598,6.616729088639201,5.917602996254682,5.511860174781523, +5.449438202247191,7.0536828963795255,4.094881398252185,6.928838951310862,5.074906367041199,5.068664169787765,2.009987515605493,4.850187265917603,2.6529338327091136,4.257178526841448,4.925093632958801,2.965043695380774,1.6978776529338326,2.016229712858926,3.102372034956305,7.615480649188515,6.30461922596754,4.581772784019975,3.408239700374532,2.933832709113608,5.611735330836455,7.116104868913857,4.400749063670412,7.303370786516854,6.554307116104869,2.66541822721598,2.397003745318352,2.134831460674157,3.6329588014981273,5.5181023720349565,1.704119850187266,2.8776529338327093,6.367041198501872,5.318352059925093,2.6466916354556806,3.9637952559300875,2.752808988764045,7.990012484394507,5.730337078651686,1.9225967540574282,2.1161048689138577,6.242197253433209,5.3870162297128585,3.17103620474407,2.471910112359551,2.671660424469413,7.553058676654182,4.675405742821473,3.077403245942572,6.198501872659176,4.66916354556804,5.174781523096129,5.68039950062422,7.927590511860175,3.202247191011236,4.868913857677903,5.580524344569288,7.0536828963795255,7.553058676654182,4.831460674157303,3.5518102372034956,4.588014981273409,4.8626716604244695,3.1273408239700373,7.428214731585518,4.906367041198502,3.732833957553059,7.116104868913857,3.258426966292135,4.8626716604244695,5.493133583021224,5.8863920099875156,7.0536828963795255,5.199750312109863,7.428214731585518,7.303370786516854,5.3745318352059925,4.313358302122348,2.4157303370786516,3.3333333333333335,7.990012484394507,5.181023720349563,4.506866416978776,2.259675405742821,7.8027465667915115,5.543071161048689,6.616729088639201,3.2833957553058677,5.062421972534332,4.868913857677903,7.17852684144819,1.8851435705368291,3.732833957553059,3.408239700374532,4.151061173533084,7.365792759051186,2.696629213483146,6.616729088639201,5.942571785268415,5.5305867665418225, +5.480649188514358,7.0536828963795255,4.1260923845193505,6.991260923845194,5.099875156054932,5.087390761548065,2.034956304619226,4.881398252184769,2.68414481897628,4.282147315855181,4.943820224719102,2.9962546816479403,1.7228464419475658,2.0474406991260925,3.1210986267166043,7.615480649188515,6.367041198501872,4.612983770287141,3.4332084893882646,2.9525593008739075,5.636704119850187,7.116104868913857,4.425717852684145,7.365792759051186,6.554307116104869,2.696629213483146,2.4219725343320846,2.15980024968789,3.6641697877652937,5.543071161048689,1.7290886392009988,2.908863920099875,6.367041198501872,5.337078651685393,2.671660424469413,3.982521847690387,2.7840199750312107,7.990012484394507,5.7553058676654185,1.9475655430711611,2.134831460674157,6.30461922596754,5.411985018726591,3.202247191011236,2.5031210986267167,2.696629213483146,7.615480649188515,4.712858926342073,3.108614232209738,6.223470661672909,4.694132334581773,5.212234706616729,5.705368289637952,7.927590511860175,3.227215980024969,4.887640449438202,5.611735330836455,7.116104868913857,7.553058676654182,4.8626716604244695,3.5705368289637955,4.612983770287141,4.893882646691636,3.1460674157303368,7.49063670411985,4.931335830212235,3.7515605493133584,7.17852684144819,3.2771535580524347,4.887640449438202,5.5181023720349565,5.917602996254682,7.116104868913857,5.230961298377029,7.428214731585518,7.365792759051186,5.393258426966292,4.3508114856429465,2.4406991260923845,3.3645443196004994,8.05243445692884,5.212234706616729,4.538077403245943,2.278401997503121,7.8027465667915115,5.568039950062421,6.616729088639201,3.3146067415730336,5.087390761548065,4.900124843945068,7.17852684144819,1.9101123595505618,3.764044943820225,3.4332084893882646,4.18227215980025,7.365792759051186,2.7340823970037453,6.679151061173534,5.967540574282147,5.555555555555556, +5.511860174781523,7.116104868913857,4.157303370786517,6.991260923845194,5.1248439450686645,5.1123595505617985,2.0536828963795255,4.906367041198502,2.715355805243446,4.307116104868914,4.9687890137328345,3.027465667915106,1.7478152309612984,2.0724094881398254,3.1460674157303368,7.677902621722847,6.367041198501872,4.644194756554308,3.4581772784019975,2.977528089887641,5.667915106117353,7.17852684144819,4.450686641697877,7.365792759051186,6.616729088639201,2.727840199750312,2.453183520599251,2.184769038701623,3.6953807740324596,5.568039950062421,1.7540574282147314,2.9400749063670415,6.429463171036204,5.3620474406991265,2.690387016229713,4.00749063670412,2.82147315855181,8.05243445692884,5.7802746566791505,1.9662921348314608,2.15980024968789,6.30461922596754,5.443196004993759,3.2397003745318353,2.5280898876404496,2.7215980024968793,7.615480649188515,4.7440699126092385,3.1460674157303368,6.242197253433209,4.725343320848939,5.243445692883895,5.730337078651686,7.990012484394507,3.2521847690387014,4.906367041198502,5.636704119850187,7.17852684144819,7.553058676654182,4.887640449438202,3.589263420724095,4.631710362047441,4.925093632958801,3.17103620474407,7.49063670411985,4.956304619225968,3.776529338327091,7.17852684144819,3.3021223470661676,4.912609238451935,5.549313358302123,5.948813982521848,7.116104868913857,5.2559300873907615,7.49063670411985,7.365792759051186,5.418227215980025,4.382022471910113,2.4656679151061174,3.4019975031210987,8.11485642946317,5.243445692883895,4.575530586766542,2.303370786516854,7.865168539325843,5.593008739076155,6.679151061173534,3.3458177278401995,5.118601747815231,4.931335830212235,7.240948813982522,1.9288389513108615,3.7952559300873907,3.4581772784019975,4.219725343320849,7.428214731585518,2.7652933832709112,6.679151061173534,5.998751560549313,5.580524344569288, +5.543071161048689,7.116104868913857,4.194756554307116,7.0536828963795255,5.149812734082397,5.1373283395755305,2.0786516853932584,4.931335830212235,2.740324594257179,4.325842696629214,4.987515605493134,3.0524344569288386,1.766541822721598,2.1036204744069913,3.17103620474407,7.677902621722847,6.429463171036204,4.675405742821473,3.4831460674157304,2.9962546816479403,5.69912609238452,7.17852684144819,4.475655430711611,7.428214731585518,6.616729088639201,2.752808988764045,2.4843945068664173,2.209737827715356,3.732833957553059,5.593008739076155,1.7790262172284643,2.977528089887641,6.429463171036204,5.380774032459426,2.715355805243446,4.032459425717852,2.852684144818976,8.05243445692884,5.805243445692884,1.9850187265917605,2.184769038701623,6.30461922596754,5.468164794007491,3.2709113607990012,2.5593008739076155,2.752808988764045,7.677902621722847,4.781523096129837,3.1772784019975036,6.30461922596754,4.750312109862672,5.280898876404494,5.7553058676654185,8.05243445692884,3.2709113607990012,4.931335830212235,5.667915106117353,7.17852684144819,7.615480649188515,4.912609238451935,3.607990012484395,4.65043695380774,4.956304619225968,3.1960049937578026,7.553058676654182,4.975031210986267,3.7952559300873907,7.17852684144819,3.3270911360799,4.937578027465668,5.580524344569288,5.980024968789014,7.17852684144819,5.280898876404494,7.49063670411985,7.365792759051186,5.436953807740325,4.419475655430712,2.4906367041198503,3.439450686641698,8.11485642946317,5.274656679151062,4.606741573033708,2.322097378277154,7.865168539325843,5.617977528089888,6.679151061173534,3.3770287141073654,5.143570536828964,4.962546816479401,7.240948813982522,1.9538077403245941,3.826466916354557,3.4831460674157304,4.250936329588015,7.49063670411985,2.8027465667915106,6.741573033707866,6.023720349563047,5.605493133583021, +5.574282147315855,7.17852684144819,4.225967540574282,7.0536828963795255,5.174781523096129,5.15605493133583,2.1036204744069913,4.956304619225968,2.7715355805243447,4.3508114856429465,5.0062421972534334,3.0836454431960054,1.7915106117353308,2.134831460674157,3.1960049937578026,7.677902621722847,6.429463171036204,4.70661672908864,3.508114856429463,3.0212234706616727,5.724094881398252,7.240948813982522,4.500624219725343,7.428214731585518,6.616729088639201,2.7840199750312107,2.515605493133583,2.2347066167290888,3.764044943820225,5.617977528089888,1.8039950062421974,3.0087390761548067,6.429463171036204,5.405742821473158,2.7340823970037453,4.051186017478152,2.8901373283395753,8.11485642946317,5.830212234706617,2.00374531835206,2.209737827715356,6.367041198501872,5.493133583021224,3.3021223470661676,2.5905118601747814,2.777777777777778,7.677902621722847,4.812734082397004,3.2084893882646695,6.30461922596754,4.781523096129837,5.312109862671661,5.786516853932584,8.05243445692884,3.295880149812734,4.950062421972534,5.692883895131087,7.240948813982522,7.615480649188515,4.943820224719102,3.6267166042446943,4.675405742821473,4.987515605493134,3.214731585518102,7.553058676654182,5.0,3.8202247191011236,7.240948813982522,3.352059925093633,4.962546816479401,5.611735330836455,6.0174781523096135,7.17852684144819,5.312109862671661,7.553058676654182,7.428214731585518,5.455680399500624,4.450686641697877,2.515605493133583,3.470661672908864,8.177278401997503,5.305867665418227,4.637952559300874,2.340823970037453,7.927590511860175,5.64294631710362,6.741573033707866,3.408239700374532,5.168539325842697,4.9937578027465666,7.303370786516854,1.978776529338327,3.857677902621723,3.5143570536828963,4.282147315855181,7.49063670411985,2.8339575530586765,6.741573033707866,6.048689138576779,5.6242197253433215, +5.599250936329588,7.17852684144819,4.257178526841448,7.116104868913857,5.199750312109863,5.181023720349563,2.122347066167291,4.987515605493134,2.8027465667915106,4.375780274656679,5.031210986267166,3.114856429463171,1.8102372034956304,2.1660424469413235,3.2209737827715355,7.740324594257178,6.491885143570538,4.737827715355805,3.5268414481897628,3.0399500624219726,5.7553058676654185,7.240948813982522,4.525593008739076,7.49063670411985,6.679151061173534,2.8152309612983775,2.546816479400749,2.259675405742821,3.7952559300873907,5.64294631710362,1.8289637952559301,3.0399500624219726,6.491885143570538,5.430711610486892,2.7590511860174782,4.0761548064918856,2.9213483146067416,8.11485642946317,5.855181023720349,2.0287141073657926,2.2347066167290888,6.367041198501872,5.524344569288389,3.3333333333333335,2.6217228464419473,2.8027465667915106,7.740324594257178,4.843945068664169,3.245942571785269,6.367041198501872,4.806491885143571,5.343320848938826,5.811485642946318,8.11485642946317,3.320848938826467,4.9687890137328345,5.724094881398252,7.240948813982522,7.677902621722847,4.9687890137328345,3.651685393258427,4.694132334581773,5.0187265917602994,3.2397003745318353,7.615480649188515,5.0187265917602994,3.8389513108614235,7.240948813982522,3.3770287141073654,4.987515605493134,5.64294631710362,6.048689138576779,7.17852684144819,5.337078651685393,7.553058676654182,7.428214731585518,5.480649188514358,4.488139825218477,2.5405742821473156,3.508114856429463,8.239700374531834,5.337078651685393,4.675405742821473,2.3657927590511862,7.927590511860175,5.667915106117353,6.741573033707866,3.439450686641698,5.19350811485643,5.031210986267166,7.303370786516854,2.00374531835206,3.888888888888889,3.5393258426966296,4.31960049937578,7.553058676654182,2.871410736579276,6.803995006242197,6.073657927590512,5.6491885143570535, +5.630461922596755,7.240948813982522,4.294631710362047,7.116104868913857,5.224719101123595,5.205992509363296,2.1473158551810236,5.012484394506866,2.8339575530586765,4.394506866416979,5.049937578027466,3.139825218476904,1.8352059925093633,2.1910112359550564,3.245942571785269,7.740324594257178,6.491885143570538,4.769038701622971,3.5518102372034956,3.0649188514357055,5.786516853932584,7.303370786516854,4.55056179775281,7.49063670411985,6.679151061173534,2.84019975031211,2.578027465667915,2.2846441947565546,3.826466916354557,5.667915106117353,1.8539325842696628,3.077403245942572,6.491885143570538,5.449438202247191,2.7840199750312107,4.1011235955056184,2.958801498127341,8.177278401997503,5.8739076154806495,2.0474406991260925,2.259675405742821,6.367041198501872,5.549313358302123,3.370786516853933,2.6466916354556806,2.8339575530586765,7.740324594257178,4.881398252184769,3.2771535580524347,6.367041198501872,4.837702871410737,5.380774032459426,5.836454431960051,8.11485642946317,3.3458177278401995,4.9937578027465666,5.749063670411985,7.303370786516854,7.677902621722847,4.9937578027465666,3.6704119850187267,4.712858926342073,5.049937578027466,3.258426966292135,7.615480649188515,5.043695380774032,3.8639200998751564,7.240948813982522,3.4019975031210987,5.012484394506866,5.674157303370786,6.079900124843945,7.240948813982522,5.3620474406991265,7.615480649188515,7.428214731585518,5.499375780274657,4.519350811485642,2.565543071161049,3.5393258426966296,8.239700374531834,5.36828963795256,4.70661672908864,2.3845193508114857,7.990012484394507,5.692883895131087,6.741573033707866,3.470661672908864,5.218476903870163,5.062421972534332,7.365792759051186,2.0287141073657926,3.920099875156055,3.564294631710362,4.3508114856429465,7.553058676654182,2.902621722846442,6.803995006242197,6.098626716604246,5.674157303370786, +5.66167290886392,7.303370786516854,4.325842696629214,7.17852684144819,5.249687890137328,5.224719101123595,2.1722846441947565,5.0374531835206,2.8589263420724094,4.419475655430712,5.074906367041199,3.17103620474407,1.8601747815230962,2.2222222222222223,3.2709113607990012,7.8027465667915115,6.554307116104869,4.800249687890138,3.576779026217228,3.0836454431960054,5.811485642946318,7.303370786516854,4.569288389513109,7.553058676654182,6.741573033707866,2.871410736579276,2.602996254681648,2.309612983770287,3.857677902621723,5.692883895131087,1.8789013732833957,3.108614232209738,6.491885143570538,5.474406991260924,2.8027465667915106,4.1260923845193505,2.990012484394507,8.177278401997503,5.8988764044943816,2.066167290886392,2.278401997503121,6.429463171036204,5.574282147315855,3.4019975031210987,2.6779026217228465,2.8589263420724094,7.8027465667915115,4.912609238451935,3.3146067415730336,6.429463171036204,4.868913857677903,5.411985018726591,5.861423220973783,8.177278401997503,3.370786516853933,5.012484394506866,5.7802746566791505,7.365792759051186,7.677902621722847,5.024968789013733,3.689138576779026,4.737827715355805,5.081148564294631,3.2833957553058677,7.677902621722847,5.068664169787765,3.882646691635456,7.303370786516854,3.4269662921348316,5.0374531835206,5.705368289637952,6.111111111111111,7.240948813982522,5.393258426966292,7.615480649188515,7.49063670411985,5.524344569288389,4.55056179775281,2.5905118601747814,3.576779026217228,8.302122347066168,5.399500624219725,4.737827715355805,2.4094881398252186,7.990012484394507,5.711610486891385,6.803995006242197,3.5018726591760303,5.243445692883895,5.093632958801498,7.365792759051186,2.0536828963795255,3.951310861423221,3.595505617977528,4.382022471910113,7.615480649188515,2.9400749063670415,6.866416978776529,6.123595505617978,5.69912609238452, +5.692883895131087,7.303370786516854,4.357053682896379,7.17852684144819,5.274656679151062,5.249687890137328,2.1910112359550564,5.062421972534332,2.8901373283395753,4.444444444444445,5.093632958801498,3.202247191011236,1.8789013732833957,2.253433208489388,3.295880149812734,7.8027465667915115,6.554307116104869,4.831460674157303,3.6017478152309614,3.102372034956305,5.842696629213483,7.365792759051186,4.594257178526841,7.553058676654182,6.741573033707866,2.902621722846442,2.634207240948814,2.33458177278402,3.888888888888889,5.711610486891385,1.9038701622971288,3.1460674157303368,6.554307116104869,5.493133583021224,2.8277153558052435,4.144818976279651,3.027465667915106,8.239700374531834,5.9238451935081144,2.091136079900125,2.303370786516854,6.429463171036204,5.599250936329588,3.4332084893882646,2.7091136079900124,2.8838951310861427,7.8027465667915115,4.943820224719102,3.3458177278401995,6.429463171036204,4.893882646691636,5.449438202247191,5.8863920099875156,8.177278401997503,3.3957553058676653,5.031210986267166,5.805243445692884,7.365792759051186,7.740324594257178,5.049937578027466,3.7078651685393256,4.7565543071161045,5.1123595505617985,3.3021223470661676,7.677902621722847,5.087390761548065,3.9076154806491883,7.303370786516854,3.451935081148564,5.062421972534332,5.736579275905119,6.1485642946317105,7.240948813982522,5.418227215980025,7.677902621722847,7.49063670411985,5.543071161048689,4.588014981273409,2.6154806491885143,3.6142322097378274,8.302122347066168,5.430711610486892,4.775280898876405,2.428214731585518,8.05243445692884,5.736579275905119,6.803995006242197,3.533083645443196,5.268414481897628,5.1248439450686645,7.365792759051186,2.0724094881398254,3.982521847690387,3.620474406991261,4.413233458177278,7.677902621722847,2.9712858926342074,6.866416978776529,6.1485642946317105,5.717852684144819, +5.724094881398252,7.365792759051186,4.394506866416979,7.240948813982522,5.299625468164794,5.274656679151062,2.215980024968789,5.087390761548065,2.9213483146067416,4.463171036204744,5.118601747815231,3.233458177278402,1.9038701622971288,2.2846441947565546,3.320848938826467,7.865168539325843,6.616729088639201,4.8626716604244695,3.6267166042446943,3.1273408239700373,5.8739076154806495,7.365792759051186,4.619225967540574,7.615480649188515,6.803995006242197,2.9275905118601746,2.66541822721598,2.359550561797753,3.920099875156055,5.736579275905119,1.9288389513108615,3.1772784019975036,6.554307116104869,5.5181023720349565,2.8464419475655434,4.169787765293384,3.058676654182272,8.239700374531834,5.948813982521848,2.1098626716604243,2.328339575530587,6.429463171036204,5.630461922596755,3.464419475655431,2.7340823970037453,2.9151061173533086,7.865168539325843,4.9812734082397006,3.3770287141073654,6.491885143570538,4.925093632958801,5.480649188514358,5.917602996254682,8.239700374531834,3.4144818976279647,5.056179775280899,5.836454431960051,7.428214731585518,7.740324594257178,5.074906367041199,3.7265917602996255,4.775280898876405,5.143570536828964,3.3270911360799,7.740324594257178,5.1123595505617985,3.926342072409488,7.303370786516854,3.4769038701622974,5.081148564294631,5.767790262172285,6.179775280898876,7.303370786516854,5.449438202247191,7.677902621722847,7.49063670411985,5.561797752808988,4.619225967540574,2.640449438202247,3.6454431960049942,8.3645443196005,5.461922596754057,4.806491885143571,2.453183520599251,8.05243445692884,5.761548064918852,6.866416978776529,3.564294631710362,5.293383270911361,5.15605493133583,7.428214731585518,2.097378277153558,4.013732833957553,3.6454431960049942,4.450686641697877,7.677902621722847,3.0024968789013733,6.928838951310862,6.173533083645444,5.742821473158552, +5.7553058676654185,7.365792759051186,4.425717852684145,7.240948813982522,5.324594257178527,5.293383270911361,2.2409488139825218,5.118601747815231,2.9525593008739075,4.488139825218477,5.1373283395755305,3.258426966292135,1.9288389513108615,2.3158551810237205,3.3458177278401995,7.865168539325843,6.616729088639201,4.893882646691636,3.651685393258427,3.1460674157303368,5.8988764044943816,7.428214731585518,4.644194756554308,7.615480649188515,6.803995006242197,2.958801498127341,2.696629213483146,2.3845193508114857,3.951310861423221,5.761548064918852,1.9538077403245941,3.2084893882646695,6.616729088639201,5.536828963795256,2.871410736579276,4.194756554307116,3.0961298377028714,8.302122347066168,5.97378277153558,2.128589263420724,2.35330836454432,6.491885143570538,5.655430711610487,3.5018726591760303,2.7652933832709112,2.9400749063670415,7.865168539325843,5.012484394506866,3.4144818976279647,6.491885143570538,4.950062421972534,5.5181023720349565,5.942571785268415,8.302122347066168,3.439450686641698,5.074906367041199,5.867665418227216,7.428214731585518,7.8027465667915115,5.106117353308365,3.745318352059925,4.800249687890138,5.181023720349563,3.352059925093633,7.740324594257178,5.131086142322098,3.951310861423221,7.365792759051186,3.5018726591760303,5.106117353308365,5.799001248439451,6.210986267166042,7.303370786516854,5.474406991260924,7.740324594257178,7.553058676654182,5.586766541822722,4.656679151061174,2.6591760299625467,3.682896379525593,8.426966292134832,5.493133583021224,4.837702871410737,2.471910112359551,8.11485642946317,5.786516853932584,6.866416978776529,3.595505617977528,5.318352059925093,5.19350811485643,7.428214731585518,2.122347066167291,4.044943820224719,3.6704119850187267,4.4818976279650435,7.740324594257178,3.0399500624219726,6.928838951310862,6.20474406991261,5.767790262172285, +5.786516853932584,7.428214731585518,4.463171036204744,7.240948813982522,5.34956304619226,5.318352059925093,2.259675405742821,5.143570536828964,2.977528089887641,4.51310861423221,5.15605493133583,3.2896379525593007,1.9475655430711611,2.340823970037453,3.370786516853933,7.927590511860175,6.679151061173534,4.925093632958801,3.6766541822721597,3.17103620474407,5.930087390761548,7.428214731585518,4.66916354556804,7.677902621722847,6.866416978776529,2.990012484394507,2.727840199750312,2.4094881398252186,3.982521847690387,5.786516853932584,1.978776529338327,3.245942571785269,6.616729088639201,5.561797752808988,2.8963795255930087,4.219725343320849,3.1273408239700373,8.302122347066168,5.998751560549313,2.1473158551810236,2.3782771535580522,6.491885143570538,5.68039950062422,3.533083645443196,2.7965043695380776,2.965043695380774,7.927590511860175,5.049937578027466,3.4456928838951315,6.491885143570538,4.9812734082397006,5.549313358302123,5.967540574282147,8.302122347066168,3.464419475655431,5.093632958801498,5.892634207240949,7.49063670411985,7.8027465667915115,5.131086142322098,3.764044943820225,4.818976279650437,5.212234706616729,3.370786516853933,7.8027465667915115,5.15605493133583,3.970037453183521,7.365792759051186,3.5205992509363297,5.131086142322098,5.830212234706617,6.242197253433209,7.365792759051186,5.499375780274657,7.740324594257178,7.553058676654182,5.605493133583021,4.687890137328339,2.68414481897628,3.714107365792759,8.426966292134832,5.524344569288389,4.875156054931336,2.4968789013732833,8.11485642946317,5.811485642946318,6.866416978776529,3.6267166042446943,5.343320848938826,5.224719101123595,7.49063670411985,2.1473158551810236,4.0761548064918856,3.701622971285893,4.51310861423221,7.8027465667915115,3.0711610486891385,6.991260923845194,6.229712858926342,5.786516853932584, +5.81772784019975,7.428214731585518,4.49438202247191,7.303370786516854,5.3745318352059925,5.337078651685393,2.2846441947565546,5.168539325842697,3.0087390761548067,4.531835205992509,5.181023720349563,3.320848938826467,1.9725343320848938,2.3720349563046192,3.3957553058676653,7.927590511860175,6.679151061173534,4.950062421972534,3.701622971285893,3.1897627965043696,5.961298377028713,7.49063670411985,4.694132334581773,7.677902621722847,6.866416978776529,3.0149812734082393,2.7590511860174782,2.4344569288389515,4.013732833957553,5.811485642946318,2.00374531835206,3.2771535580524347,6.616729088639201,5.586766541822722,2.9151061173533086,4.238451935081149,3.1647940074906367,8.3645443196005,6.023720349563047,2.1722846441947565,2.4032459425717856,6.554307116104869,5.711610486891385,3.564294631710362,2.8277153558052435,2.9962546816479403,7.927590511860175,5.081148564294631,3.4769038701622974,6.554307116104869,5.0062421972534334,5.580524344569288,5.992509363295881,8.3645443196005,3.4893882646691634,5.118601747815231,5.9238451935081144,7.553058676654182,7.8027465667915115,5.15605493133583,3.7827715355805243,4.837702871410737,5.243445692883895,3.3957553058676653,7.8027465667915115,5.181023720349563,3.9950062421972534,7.365792759051186,3.545568039950062,5.15605493133583,5.861423220973783,6.30461922596754,7.365792759051186,5.5305867665418225,7.8027465667915115,7.553058676654182,5.6242197253433215,4.725343320848939,2.7091136079900124,3.7515605493133584,8.489388264669165,5.555555555555556,4.906367041198502,2.515605493133583,8.177278401997503,5.836454431960051,6.928838951310862,3.6579275905118602,5.36828963795256,5.2559300873907615,7.49063670411985,2.1722846441947565,4.107365792759051,3.7265917602996255,4.55056179775281,7.8027465667915115,3.108614232209738,6.991260923845194,6.242197253433209,5.811485642946318, +5.842696629213483,7.49063670411985,4.525593008739076,7.303370786516854,5.405742821473158,5.3620474406991265,2.309612983770287,5.19350811485643,3.0399500624219726,4.556803995006242,5.199750312109863,3.352059925093633,1.9975031210986267,2.4032459425717856,3.420724094881398,7.990012484394507,6.741573033707866,4.9812734082397006,3.7265917602996255,3.214731585518102,5.986267166042447,7.49063670411985,4.719101123595506,7.740324594257178,6.928838951310862,3.046192259675406,2.7840199750312107,2.459425717852684,4.044943820224719,5.836454431960051,2.0287141073657926,3.3083645443196006,6.679151061173534,5.605493133583021,2.9400749063670415,4.263420724094882,3.1960049937578026,8.3645443196005,6.0424469413233455,2.1910112359550564,2.428214731585518,6.554307116104869,5.736579275905119,3.595505617977528,2.852684144818976,3.0212234706616727,7.990012484394507,5.1123595505617985,3.5143570536828963,6.554307116104869,5.0374531835206,5.617977528089888,6.0174781523096135,8.3645443196005,3.5143570536828963,5.1373283395755305,5.948813982521848,7.553058676654182,7.865168539325843,5.187265917602996,3.801498127340824,4.8626716604244695,5.274656679151062,3.4144818976279647,7.865168539325843,5.199750312109863,4.013732833957553,7.428214731585518,3.5705368289637955,5.181023720349563,5.8863920099875156,6.30461922596754,7.365792759051186,5.555555555555556,7.8027465667915115,7.615480649188515,5.6491885143570535,4.7565543071161045,2.7340823970037453,3.7827715355805243,8.551810237203496,5.586766541822722,4.937578027465668,2.5405742821473156,8.177278401997503,5.855181023720349,6.928838951310862,3.689138576779026,5.393258426966292,5.287141073657928,7.553058676654182,2.1972534332084894,4.138576779026217,3.7515605493133584,4.581772784019975,7.865168539325843,3.139825218476904,7.0536828963795255,6.30461922596754,5.836454431960051, +5.8739076154806495,7.49063670411985,4.563046192259676,7.365792759051186,5.430711610486892,5.3870162297128585,2.328339575530587,5.218476903870163,3.0711610486891385,4.581772784019975,5.224719101123595,3.3770287141073654,2.016229712858926,2.4344569288389515,3.4456928838951315,7.990012484394507,6.741573033707866,5.012484394506866,3.7515605493133584,3.233458177278402,6.0174781523096135,7.553058676654182,4.7440699126092385,7.740324594257178,6.928838951310862,3.077403245942572,2.8152309612983775,2.4843945068664173,4.082397003745319,5.861423220973783,2.0536828963795255,3.3458177278401995,6.679151061173534,5.630461922596755,2.958801498127341,4.288389513108614,3.233458177278402,8.426966292134832,6.067415730337078,2.209737827715356,2.446941323345818,6.554307116104869,5.761548064918852,3.6329588014981273,2.8838951310861427,3.046192259675406,7.990012484394507,5.149812734082397,3.545568039950062,6.616729088639201,5.068664169787765,5.6491885143570535,6.048689138576779,8.426966292134832,3.533083645443196,5.162297128589263,5.980024968789014,7.615480649188515,7.865168539325843,5.212234706616729,3.826466916354557,4.881398252184769,5.305867665418227,3.439450686641698,7.865168539325843,5.224719101123595,4.038701622971286,7.428214731585518,3.595505617977528,5.205992509363296,5.917602996254682,6.367041198501872,7.428214731585518,5.580524344569288,7.865168539325843,7.615480649188515,5.667915106117353,4.794007490636704,2.7590511860174782,3.8202247191011236,8.551810237203496,5.617977528089888,4.975031210986267,2.5593008739076155,8.239700374531834,5.880149812734083,6.991260923845194,3.7203495630461925,5.418227215980025,5.318352059925093,7.553058676654182,2.2222222222222223,4.169787765293384,3.776529338327091,4.612983770287141,7.865168539325843,3.1772784019975036,7.0536828963795255,6.30461922596754,5.861423220973783, +5.905118601747815,7.553058676654182,4.594257178526841,7.365792759051186,5.455680399500624,5.405742821473158,2.35330836454432,5.249687890137328,3.0961298377028714,4.600499375780275,5.243445692883895,3.408239700374532,2.0411985018726595,2.4656679151061174,3.470661672908864,8.05243445692884,6.803995006242197,5.043695380774032,3.776529338327091,3.258426966292135,6.048689138576779,7.553058676654182,4.769038701622971,7.8027465667915115,6.991260923845194,3.102372034956305,2.8464419475655434,2.5093632958801497,4.1136079900124844,5.8863920099875156,2.0786516853932584,3.3770287141073654,6.679151061173534,5.6491885143570535,2.9837702871410734,4.313358302122348,3.2646691635455682,8.426966292134832,6.092384519350812,2.2347066167290888,2.471910112359551,6.616729088639201,5.786516853932584,3.6641697877652937,2.9151061173533086,3.077403245942572,8.05243445692884,5.181023720349563,3.5830212234706615,6.616729088639201,5.093632958801498,5.686641697877653,6.073657927590512,8.426966292134832,3.5580524344569286,5.181023720349563,6.004993757802747,7.615480649188515,7.927590511860175,5.237203495630462,3.8451935081148565,4.900124843945068,5.337078651685393,3.464419475655431,7.927590511860175,5.243445692883895,4.057428214731585,7.428214731585518,3.620474406991261,5.230961298377029,5.948813982521848,6.367041198501872,7.428214731585518,5.611735330836455,7.865168539325843,7.615480649188515,5.686641697877653,4.825218476903871,2.7840199750312107,3.857677902621723,8.614232209737828,5.64294631710362,5.0062421972534334,2.5842696629213484,8.239700374531834,5.905118601747815,6.991260923845194,3.7515605493133584,5.443196004993759,5.34956304619226,7.615480649188515,2.2409488139825218,4.200998751560549,3.8077403245942576,4.65043695380774,7.927590511860175,3.2084893882646695,7.116104868913857,6.30461922596754,5.880149812734083, +5.936329588014981,7.553058676654182,4.6254681647940075,7.428214731585518,5.480649188514358,5.430711610486892,2.3782771535580522,5.274656679151062,3.1273408239700373,4.6254681647940075,5.268414481897628,3.439450686641698,2.066167290886392,2.4906367041198503,3.495630461922597,8.05243445692884,6.803995006242197,5.074906367041199,3.801498127340824,3.2771535580524347,6.073657927590512,7.615480649188515,4.787765293383271,7.8027465667915115,6.991260923845194,3.1335830212234708,2.8776529338327093,2.5343320848938826,4.144818976279651,5.9113607990012484,2.1036204744069913,3.4144818976279647,6.741573033707866,5.674157303370786,3.0087390761548067,4.332084893882647,3.3021223470661676,8.489388264669165,6.117353308364544,2.253433208489388,2.4968789013732833,6.616729088639201,5.81772784019975,3.6953807740324596,2.9400749063670415,3.102372034956305,8.05243445692884,5.212234706616729,3.6142322097378274,6.679151061173534,5.1248439450686645,5.717852684144819,6.098626716604246,8.489388264669165,3.5830212234706615,5.199750312109863,6.036204744069912,7.677902621722847,7.927590511860175,5.268414481897628,3.8639200998751564,4.925093632958801,5.36828963795256,3.4831460674157304,7.927590511860175,5.268414481897628,4.082397003745319,7.49063670411985,3.6454431960049942,5.2559300873907615,5.980024968789014,6.429463171036204,7.428214731585518,5.636704119850187,7.927590511860175,7.677902621722847,5.711610486891385,4.8626716604244695,2.808988764044944,3.888888888888889,8.614232209737828,5.674157303370786,5.043695380774032,2.602996254681648,8.302122347066168,5.930087390761548,6.991260923845194,3.7827715355805243,5.468164794007491,5.3870162297128585,7.615480649188515,2.2659176029962547,4.2322097378277155,3.83270911360799,4.681647940074906,7.990012484394507,3.245942571785269,7.116104868913857,6.367041198501872,5.905118601747815, +5.967540574282147,7.615480649188515,4.662921348314606,7.428214731585518,5.50561797752809,5.455680399500624,2.397003745318352,5.299625468164794,3.1585518102372037,4.65043695380774,5.287141073657928,3.464419475655431,2.084893882646692,2.521847690387016,3.5205992509363297,8.11485642946317,6.866416978776529,5.106117353308365,3.826466916354557,3.3021223470661676,6.104868913857677,7.615480649188515,4.812734082397004,7.8027465667915115,7.0536828963795255,3.1647940074906367,2.908863920099875,2.5593008739076155,4.176029962546816,5.936329588014981,2.128589263420724,3.4456928838951315,6.741573033707866,5.692883895131087,3.027465667915106,4.357053682896379,3.3333333333333335,8.489388264669165,6.142322097378277,2.272159800249688,2.521847690387016,6.616729088639201,5.842696629213483,3.732833957553059,2.9712858926342074,3.1273408239700373,8.11485642946317,5.249687890137328,3.6454431960049942,6.679151061173534,5.149812734082397,5.7553058676654185,6.123595505617978,8.551810237203496,3.607990012484395,5.224719101123595,6.061173533083646,7.740324594257178,7.927590511860175,5.293383270911361,3.882646691635456,4.943820224719102,5.399500624219725,3.508114856429463,7.990012484394507,5.293383270911361,4.1011235955056184,7.49063670411985,3.6704119850187267,5.280898876404494,6.01123595505618,6.429463171036204,7.49063670411985,5.66167290886392,7.927590511860175,7.677902621722847,5.730337078651686,4.893882646691636,2.8339575530586765,3.926342072409488,8.67665418227216,5.705368289637952,5.074906367041199,2.6279650436953808,8.302122347066168,5.955056179775282,7.0536828963795255,3.81398252184769,5.493133583021224,5.418227215980025,7.677902621722847,2.2908863920099876,4.263420724094882,3.857677902621723,4.712858926342073,7.990012484394507,3.2771535580524347,7.17852684144819,6.367041198501872,5.930087390761548, +5.998751560549313,7.615480649188515,4.694132334581773,7.49063670411985,5.5305867665418225,5.474406991260924,2.4219725343320846,5.324594257178527,3.183520599250936,4.66916354556804,5.305867665418227,3.495630461922597,2.1098626716604243,2.5530586766541825,3.545568039950062,8.11485642946317,6.866416978776529,5.1373283395755305,3.8514357053682895,3.320848938826467,6.1360799001248445,7.677902621722847,4.837702871410737,7.865168539325843,7.0536828963795255,3.1897627965043696,2.933832709113608,2.5842696629213484,4.207240948813983,5.961298377028713,2.153558052434457,3.4769038701622974,6.741573033707866,5.717852684144819,3.0524344569288386,4.382022471910113,3.370786516853933,8.551810237203496,6.167290886392011,2.2908863920099876,2.546816479400749,6.679151061173534,5.867665418227216,3.764044943820225,3.0024968789013733,3.1585518102372037,8.11485642946317,5.280898876404494,3.682896379525593,6.741573033707866,5.181023720349563,5.786516853932584,6.1485642946317105,8.551810237203496,3.6329588014981273,5.243445692883895,6.092384519350812,7.740324594257178,7.990012484394507,5.318352059925093,3.9013732833957557,4.962546816479401,5.430711610486892,3.5268414481897628,7.990012484394507,5.312109862671661,4.1260923845193505,7.553058676654182,3.6953807740324596,5.305867665418227,6.0424469413233455,6.491885143570538,7.49063670411985,5.692883895131087,7.990012484394507,7.677902621722847,5.749063670411985,4.931335830212235,2.8589263420724094,3.957553058676654,8.739076154806492,5.736579275905119,5.106117353308365,2.6466916354556806,8.3645443196005,5.980024968789014,7.0536828963795255,3.8451935081148565,5.5181023720349565,5.449438202247191,7.677902621722847,2.3158551810237205,4.294631710362047,3.888888888888889,4.7440699126092385,8.05243445692884,3.3083645443196006,7.17852684144819,6.429463171036204,5.955056179775282, +6.029962546816479,7.677902621722847,4.725343320848939,7.49063670411985,5.555555555555556,5.499375780274657,2.446941323345818,5.34956304619226,3.214731585518102,4.694132334581773,5.33083645443196,3.5268414481897628,2.134831460674157,2.5842696629213484,3.5705368289637955,8.177278401997503,6.928838951310862,5.168539325842697,3.870162297128589,3.3458177278401995,6.161048689138577,7.677902621722847,4.8626716604244695,7.865168539325843,7.0536828963795255,3.2209737827715355,2.965043695380774,2.6092384519350813,4.238451935081149,5.986267166042447,2.1785268414481895,3.5143570536828963,6.803995006242197,5.742821473158552,3.0711610486891385,4.400749063670412,3.4019975031210987,8.551810237203496,6.186017478152309,2.3158551810237205,2.571785268414482,6.679151061173534,5.8988764044943816,3.7952559300873907,3.033707865168539,3.183520599250936,8.177278401997503,5.312109862671661,3.714107365792759,6.741573033707866,5.212234706616729,5.81772784019975,6.179775280898876,8.614232209737828,3.6579275905118602,5.262172284644195,6.117353308364544,7.8027465667915115,7.990012484394507,5.34956304619226,3.920099875156055,4.987515605493134,5.461922596754057,3.5518102372034956,8.05243445692884,5.337078651685393,4.144818976279651,7.553058676654182,3.7203495630461925,5.33083645443196,6.073657927590512,6.491885143570538,7.553058676654182,5.717852684144819,7.990012484394507,7.740324594257178,5.774032459425719,4.962546816479401,2.8838951310861427,3.9950062421972534,8.739076154806492,5.767790262172285,5.143570536828964,2.671660424469413,8.3645443196005,6.004993757802747,7.116104868913857,3.8764044943820224,5.543071161048689,5.480649188514358,7.740324594257178,2.340823970037453,4.31960049937578,3.9138576779026217,4.781523096129837,8.11485642946317,3.3458177278401995,7.240948813982522,6.429463171036204,5.97378277153558, +6.061173533083646,7.677902621722847,4.762796504369538,7.49063670411985,5.580524344569288,5.524344569288389,2.4656679151061174,5.380774032459426,3.245942571785269,4.719101123595506,5.34956304619226,3.5580524344569286,2.153558052434457,2.6154806491885143,3.589263420724095,8.177278401997503,6.928838951310862,5.199750312109863,3.8951310861423223,3.3645443196004994,6.192259675405743,7.740324594257178,4.887640449438202,7.927590511860175,7.116104868913857,3.2521847690387014,2.9962546816479403,2.634207240948814,4.269662921348314,6.01123595505618,2.203495630461923,3.545568039950062,6.803995006242197,5.761548064918852,3.0961298377028714,4.425717852684145,3.439450686641698,8.614232209737828,6.210986267166042,2.33458177278402,2.596754057428215,6.679151061173534,5.9238451935081144,3.826466916354557,3.058676654182272,3.2084893882646695,8.177278401997503,5.34956304619226,3.7515605493133584,6.803995006242197,5.237203495630462,5.855181023720349,6.20474406991261,8.614232209737828,3.6766541822721597,5.287141073657928,6.1485642946317105,7.8027465667915115,8.05243445692884,5.3745318352059925,3.938826466916354,5.0062421972534334,5.493133583021224,3.5705368289637955,8.05243445692884,5.355805243445693,4.169787765293384,7.553058676654182,3.745318352059925,5.355805243445693,6.104868913857677,6.554307116104869,7.553058676654182,5.742821473158552,8.05243445692884,7.740324594257178,5.792759051186017,4.9937578027465666,2.908863920099875,4.02621722846442,8.801498127340825,5.799001248439451,5.174781523096129,2.690387016229713,8.426966292134832,6.023720349563047,7.116104868913857,3.9076154806491883,5.568039950062421,5.511860174781523,7.740324594257178,2.3657927590511862,4.3508114856429465,3.938826466916354,4.812734082397004,8.11485642946317,3.3770287141073654,7.240948813982522,6.429463171036204,5.998751560549313, +6.086142322097379,7.740324594257178,4.794007490636704,7.553058676654182,5.605493133583021,5.543071161048689,2.4906367041198503,5.405742821473158,3.2771535580524347,4.737827715355805,5.3745318352059925,3.5830212234706615,2.1785268414481895,2.640449438202247,3.6142322097378274,8.177278401997503,,,3.920099875156055,3.3895131086142323,6.223470661672909,7.740324594257178,4.912609238451935,7.927590511860175,7.116104868913857,3.2771535580524347,3.027465667915106,2.6591760299625467,4.300873907615481,6.036204744069912,2.2284644194756553,3.576779026217228,6.803995006242197,5.786516853932584,3.1210986267166043,4.450686641697877,3.470661672908864,8.614232209737828,6.235955056179775,2.35330836454432,2.6154806491885143,6.741573033707866,5.948813982521848,3.8639200998751564,3.089887640449438,3.2397003745318353,8.239700374531834,,3.7827715355805243,6.803995006242197,5.268414481897628,5.8863920099875156,,8.67665418227216,3.701622971285893,5.305867665418227,6.179775280898876,,8.05243445692884,5.399500624219725,3.957553058676654,5.024968789013733,5.5305867665418225,3.595505617977528,8.11485642946317,5.380774032459426,4.188514357053683,7.615480649188515,3.764044943820225,5.380774032459426,6.1360799001248445,6.554307116104869,7.553058676654182,5.774032459425719,8.05243445692884,7.740324594257178,5.811485642946318,5.031210986267166,2.933832709113608,4.063670411985019,,5.830212234706617,5.205992509363296,2.7091136079900124,,6.048689138576779,7.116104868913857,3.938826466916354,5.593008739076155,5.549313358302123,,2.3907615480649187,4.382022471910113,3.9637952559300875,4.843945068664169,,3.4144818976279647,7.240948813982522,6.491885143570538,6.023720349563047, +6.117353308364544,7.8027465667915115,4.831460674157303,7.553058676654182,5.630461922596755,5.568039950062421,2.515605493133583,5.430711610486892,3.3021223470661676,4.762796504369538,5.393258426966292,3.6142322097378274,2.203495630461923,2.671660424469413,3.639200998751561,8.239700374531834,,,3.9450686641697876,3.408239700374532,6.242197253433209,7.8027465667915115,4.937578027465668,7.990012484394507,7.17852684144819,3.3083645443196006,3.058676654182272,2.68414481897628,4.332084893882647,6.061173533083646,2.253433208489388,3.6142322097378274,6.866416978776529,5.805243445692884,3.139825218476904,4.475655430711611,3.508114856429463,8.67665418227216,6.242197253433209,2.3782771535580522,2.640449438202247,6.741573033707866,5.97378277153558,3.8951310861423223,3.1210986267166043,3.2646691635455682,8.239700374531834,,3.81398252184769,6.866416978776529,5.293383270911361,5.9238451935081144,,8.67665418227216,,5.324594257178527,6.20474406991261,,8.05243445692884,5.430711610486892,3.9762796504369535,5.049937578027466,5.561797752808988,3.620474406991261,8.11485642946317,5.405742821473158,4.213483146067416,7.615480649188515,3.7890137328339577,5.405742821473158,6.167290886392011,6.616729088639201,7.615480649188515,5.799001248439451,8.11485642946317,7.8027465667915115,5.836454431960051,5.062421972534332,,4.1011235955056184,,5.861423220973783,5.243445692883895,2.7340823970037453,,6.073657927590512,7.17852684144819,3.970037453183521,5.617977528089888,5.580524344569288,,2.4094881398252186,4.413233458177278,3.9950062421972534,4.881398252184769,,3.4456928838951315,7.303370786516854,6.491885143570538,6.048689138576779, +6.1485642946317105,7.8027465667915115,4.8626716604244695,7.615480649188515,5.655430711610487,5.593008739076155,2.5343320848938826,5.455680399500624,3.3333333333333335,4.787765293383271,5.418227215980025,3.6454431960049942,2.2222222222222223,2.702871410736579,3.6641697877652937,8.239700374531834,,,3.970037453183521,3.4269662921348316,6.30461922596754,7.8027465667915115,4.962546816479401,7.990012484394507,7.17852684144819,3.339575530586767,3.089887640449438,2.7091136079900124,4.3632958801498125,6.086142322097379,2.272159800249688,3.6454431960049942,6.866416978776529,5.830212234706617,3.1647940074906367,4.49438202247191,3.545568039950062,8.67665418227216,6.30461922596754,2.397003745318352,2.66541822721598,6.741573033707866,6.004993757802747,3.926342072409488,3.1460674157303368,3.2896379525593007,8.302122347066168,,,6.866416978776529,5.324594257178527,5.955056179775282,,8.739076154806492,,5.34956304619226,6.235955056179775,,8.11485642946317,5.455680399500624,4.001248439450687,5.068664169787765,5.593008739076155,3.639200998751561,8.177278401997503,5.424469413233458,4.2322097378277155,7.615480649188515,3.81398252184769,5.430711610486892,6.198501872659176,6.616729088639201,7.615480649188515,5.830212234706617,8.11485642946317,7.8027465667915115,5.855181023720349,5.099875156054932,,4.132334581772784,,5.892634207240949,5.274656679151062,2.752808988764045,,6.098626716604246,7.17852684144819,4.001248439450687,5.6491885143570535,5.611735330836455,,2.4344569288389515,4.444444444444445,4.019975031210986,4.912609238451935,,3.4831460674157304,7.303370786516854,6.554307116104869,6.067415730337078, +,7.865168539325843,4.893882646691636,,5.68039950062422,5.611735330836455,2.5593008739076155,,3.3645443196004994,4.806491885143571,5.436953807740325,3.6766541822721597,2.247191011235955,2.7340823970037453,3.689138576779026,8.302122347066168,,,3.9950062421972534,3.451935081148564,6.30461922596754,7.865168539325843,4.987515605493134,8.05243445692884,7.240948813982522,3.3645443196004994,3.114856429463171,2.7340823970037453,4.400749063670412,6.111111111111111,2.2971285892634206,3.682896379525593,6.866416978776529,5.848938826466916,3.183520599250936,4.519350811485642,3.576779026217228,8.739076154806492,6.30461922596754,2.4157303370786516,2.690387016229713,6.803995006242197,6.029962546816479,3.957553058676654,3.1772784019975036,3.3146067415730336,8.302122347066168,,,6.928838951310862,5.34956304619226,5.986267166042447,,8.801498127340825,,5.36828963795256,6.242197253433209,,8.11485642946317,5.480649188514358,4.019975031210986,5.087390761548065,5.6242197253433215,3.6641697877652937,8.177278401997503,5.449438202247191,4.257178526841448,7.677902621722847,3.8389513108614235,5.455680399500624,6.229712858926342,6.679151061173534,7.615480649188515,5.855181023720349,8.177278401997503,7.8027465667915115,5.880149812734083,5.131086142322098,,4.169787765293384,,5.9238451935081144,5.305867665418227,2.777777777777778,,6.123595505617978,7.240948813982522,4.032459425717852,5.674157303370786,5.64294631710362,,2.459425717852684,4.475655430711611,4.044943820224719,4.943820224719102,,3.5143570536828963,7.365792759051186,6.554307116104869,6.092384519350812, +,7.865168539325843,4.931335830212235,,5.705368289637952,5.636704119850187,2.5842696629213484,,3.3957553058676653,4.831460674157303,5.455680399500624,3.701622971285893,2.272159800249688,2.7652933832709112,3.714107365792759,,,,4.019975031210986,3.470661672908864,6.367041198501872,7.865168539325843,5.0062421972534334,,7.240948813982522,3.3957553058676653,3.1460674157303368,2.7590511860174782,4.431960049937578,6.1360799001248445,,3.714107365792759,6.928838951310862,5.8739076154806495,3.2084893882646695,4.544319600499376,3.6142322097378274,8.739076154806492,6.30461922596754,2.4406991260923845,2.715355805243446,6.803995006242197,6.054931335830212,3.9950062421972534,3.2084893882646695,3.3458177278401995,8.3645443196005,,,6.928838951310862,5.380774032459426,6.023720349563047,,8.801498127340825,,5.3870162297128585,6.30461922596754,,8.177278401997503,5.50561797752809,4.038701622971286,5.1123595505617985,5.655430711610487,3.682896379525593,8.239700374531834,5.468164794007491,4.275905118601748,7.677902621722847,3.8639200998751564,5.480649188514358,6.242197253433209,6.679151061173534,7.677902621722847,5.880149812734083,8.177278401997503,7.865168539325843,5.8988764044943816,5.168539325842697,,,,5.955056179775282,5.343320848938826,2.7965043695380776,,6.1485642946317105,7.240948813982522,4.063670411985019,5.69912609238452,5.674157303370786,,2.4843945068664173,4.506866416978776,4.069912609238452,4.9812734082397006,,3.5518102372034956,7.365792759051186,6.616729088639201,6.117353308364544, +,7.927590511860175,4.962546816479401,,5.730337078651686,5.655430711610487,2.602996254681648,,3.420724094881398,4.850187265917603,5.480649188514358,3.732833957553059,2.2908863920099876,2.790262172284644,3.7390761548064915,,,,4.044943820224719,3.495630461922597,6.367041198501872,7.927590511860175,5.031210986267166,,7.303370786516854,3.4269662921348316,3.1772784019975036,2.7840199750312107,4.463171036204744,,,3.745318352059925,6.928838951310862,5.8988764044943816,3.233458177278402,4.569288389513109,3.6454431960049942,8.801498127340825,6.367041198501872,2.459425717852684,2.740324594257179,6.866416978776529,6.086142322097379,4.02621722846442,3.2397003745318353,3.370786516853933,8.3645443196005,,,6.991260923845194,5.411985018726591,6.054931335830212,,8.863920099875156,,5.411985018726591,6.30461922596754,,8.177278401997503,5.536828963795256,4.057428214731585,5.131086142322098,5.686641697877653,3.7078651685393256,8.239700374531834,5.493133583021224,4.294631710362047,7.677902621722847,3.888888888888889,5.50561797752809,6.30461922596754,6.741573033707866,7.677902621722847,5.9113607990012484,8.239700374531834,7.865168539325843,5.917602996254682,5.199750312109863,,,,5.986267166042447,5.3745318352059925,2.82147315855181,,6.173533083645444,7.240948813982522,4.094881398252185,5.724094881398252,5.705368289637952,,2.5093632958801497,4.538077403245943,4.1011235955056184,5.012484394506866,,3.5830212234706615,7.428214731585518,,6.1360799001248445, +,7.927590511860175,4.9937578027465666,,5.7553058676654185,5.68039950062422,2.6279650436953808,,3.451935081148564,4.875156054931336,5.499375780274657,3.764044943820225,2.3158551810237205,2.82147315855181,3.764044943820225,,,,4.069912609238452,3.5143570536828963,6.367041198501872,7.990012484394507,5.056179775280899,,7.303370786516854,3.4581772784019975,3.2084893882646695,2.808988764044944,4.49438202247191,,,3.7827715355805243,6.928838951310862,5.917602996254682,3.2521847690387014,,3.682896379525593,8.801498127340825,6.367041198501872,2.478152309612984,2.7590511860174782,6.866416978776529,6.111111111111111,4.057428214731585,3.2646691635455682,3.3957553058676653,8.426966292134832,,,6.991260923845194,5.436953807740325,6.092384519350812,,8.863920099875156,,5.430711610486892,6.367041198501872,,8.239700374531834,5.561797752808988,4.0761548064918856,5.149812734082397,5.717852684144819,3.7265917602996255,8.302122347066168,5.5181023720349565,4.31960049937578,7.740324594257178,3.9138576779026217,5.5305867665418225,6.30461922596754,6.741573033707866,7.740324594257178,5.936329588014981,8.239700374531834,7.865168539325843,5.942571785268415,5.237203495630462,,,,6.0174781523096135,5.405742821473158,2.84019975031211,,6.192259675405743,7.303370786516854,4.1260923845193505,5.749063670411985,5.742821473158552,,2.5343320848938826,4.569288389513109,4.1260923845193505,5.043695380774032,,3.6142322097378274,7.428214731585518,,6.161048689138577, +,7.990012484394507,5.031210986267166,,5.7802746566791505,5.705368289637952,,,3.4831460674157304,4.900124843945068,5.524344569288389,3.7952559300873907,2.340823970037453,2.852684144818976,3.7890137328339577,,,,4.094881398252185,3.5393258426966296,6.429463171036204,7.990012484394507,5.081148564294631,,7.365792759051186,3.4831460674157304,3.2397003745318353,2.8339575530586765,4.525593008739076,,,3.81398252184769,6.991260923845194,,3.2771535580524347,,3.714107365792759,8.863920099875156,6.429463171036204,2.4968789013732833,2.7840199750312107,6.866416978776529,6.1360799001248445,4.0886392009987516,3.295880149812734,,8.426966292134832,,,7.0536828963795255,5.468164794007491,6.123595505617978,,8.926342072409488,,5.455680399500624,6.367041198501872,,8.239700374531834,,4.094881398252185,5.174781523096129,5.749063670411985,3.7515605493133584,8.302122347066168,5.536828963795256,4.33832709113608,7.740324594257178,3.938826466916354,5.555555555555556,,6.803995006242197,7.740324594257178,5.961298377028713,8.302122347066168,7.927590511860175,5.961298377028713,5.268414481897628,,,,6.048689138576779,5.443196004993759,2.865168539325843,,6.217228464419476,7.303370786516854,4.157303370786517,5.774032459425719,5.774032459425719,,2.5530586766541825,4.600499375780275,4.151061173533084,5.081148564294631,,3.651685393258427,,,6.186017478152309, +,,5.062421972534332,,5.805243445692884,,,,3.5143570536828963,4.918851435705368,5.543071161048689,3.8202247191011236,2.359550561797753,2.8838951310861427,3.81398252184769,,,,4.119850187265917,3.5580524344569286,6.429463171036204,8.05243445692884,5.106117353308365,,7.365792759051186,3.5143570536828963,3.2709113607990012,2.8589263420724094,4.556803995006242,,,3.8451935081148565,6.991260923845194,,3.295880149812734,,3.7515605493133584,8.863920099875156,6.429463171036204,2.521847690387016,2.808988764044944,6.928838951310862,6.161048689138577,4.1260923845193505,3.3270911360799,,8.489388264669165,,,7.0536828963795255,5.493133583021224,6.161048689138577,,,,5.474406991260924,6.429463171036204,,8.239700374531834,,4.1136079900124844,5.19350811485643,5.7802746566791505,3.776529338327091,8.3645443196005,5.561797752808988,4.3632958801498125,7.740324594257178,3.9637952559300875,5.580524344569288,,6.803995006242197,,5.992509363295881,8.302122347066168,7.927590511860175,5.980024968789014,5.305867665418227,,,,6.079900124843945,5.474406991260924,2.8838951310861427,,6.242197253433209,7.365792759051186,4.18227215980025,5.799001248439451,5.805243445692884,,2.578027465667915,4.631710362047441,4.18227215980025,5.1123595505617985,,3.682896379525593,,,6.210986267166042, +,,5.093632958801498,,5.830212234706617,,,,3.5393258426966296,4.943820224719102,5.568039950062421,3.8514357053682895,2.3845193508114857,2.908863920099875,3.8389513108614235,,,,4.144818976279651,3.5830212234706615,6.491885143570538,,5.131086142322098,,7.428214731585518,3.545568039950062,3.295880149812734,2.8838951310861427,4.588014981273409,,,3.882646691635456,6.991260923845194,,3.320848938826467,,,8.926342072409488,6.429463171036204,2.5405742821473156,2.8339575530586765,6.928838951310862,,,3.352059925093633,,8.489388264669165,,,7.116104868913857,5.524344569288389,6.192259675405743,,,,5.493133583021224,6.429463171036204,,8.302122347066168,,4.132334581772784,5.212234706616729,5.811485642946318,3.7952559300873907,8.3645443196005,5.580524344569288,4.382022471910113,7.8027465667915115,3.9887640449438204,5.605493133583021,,6.866416978776529,,6.0174781523096135,8.3645443196005,7.927590511860175,6.004993757802747,5.337078651685393,,,,6.111111111111111,5.50561797752809,2.908863920099875,,6.242197253433209,7.365792759051186,4.213483146067416,5.823970037453184,5.836454431960051,,2.602996254681648,4.662921348314606,4.207240948813983,5.143570536828964,,3.7203495630461925,,,6.229712858926342, +,,5.131086142322098,,5.855181023720349,,,,3.5705368289637955,4.9687890137328345,5.586766541822722,3.882646691635456,2.4094881398252186,2.9400749063670415,3.8639200998751564,,,,4.169787765293384,3.6017478152309614,6.491885143570538,,5.15605493133583,,7.428214731585518,3.5705368289637955,3.3270911360799,2.908863920099875,4.619225967540574,,,3.9138576779026217,7.0536828963795255,,3.3458177278401995,,,8.926342072409488,6.491885143570538,2.5593008739076155,2.8589263420724094,6.928838951310862,,,3.383270911360799,,8.551810237203496,,,7.116104868913857,,,,,,5.5181023720349565,6.491885143570538,,8.302122347066168,,4.151061173533084,5.237203495630462,5.842696629213483,3.8202247191011236,8.426966292134832,5.605493133583021,4.406991260923846,7.8027465667915115,4.00749063670412,5.630461922596755,,,,6.0424469413233455,8.3645443196005,7.990012484394507,6.023720349563047,5.3745318352059925,,,,,5.543071161048689,2.9275905118601746,,6.30461922596754,7.428214731585518,4.244694132334582,5.848938826466916,5.867665418227216,,2.6279650436953808,4.694132334581773,4.2322097378277155,5.174781523096129,,3.7515605493133584,,,6.242197253433209, +,,5.162297128589263,,,,,,3.6017478152309614,4.987515605493134,5.605493133583021,3.9076154806491883,2.428214731585518,2.9712858926342074,,,,,4.194756554307116,3.6267166042446943,6.554307116104869,,5.181023720349563,,7.49063670411985,3.6017478152309614,3.3583021223470664,2.933832709113608,4.65043695380774,,,,7.0536828963795255,,3.3645443196004994,,,8.98876404494382,,2.5842696629213484,2.8838951310861427,6.991260923845194,,,3.4144818976279647,,8.551810237203496,,,7.116104868913857,,,,,,5.536828963795256,6.491885143570538,,8.3645443196005,,4.176029962546816,5.2559300873907615,5.880149812734083,3.8389513108614235,8.426966292134832,5.6242197253433215,4.425717852684145,7.8027465667915115,4.032459425717852,,,,,6.073657927590512,8.426966292134832,7.990012484394507,6.0424469413233455,5.405742821473158,,,,,,2.9525593008739075,,,7.428214731585518,,5.8739076154806495,5.905118601747815,,,,4.257178526841448,5.212234706616729,,,,,6.30461922596754, +,,,,,,,,3.6329588014981273,5.012484394506866,5.630461922596755,3.938826466916354,2.453183520599251,3.0024968789013733,,,,,4.213483146067416,3.6454431960049942,6.554307116104869,,5.205992509363296,,7.49063670411985,3.6329588014981273,,2.958801498127341,4.681647940074906,,,,7.0536828963795255,,3.3895131086142323,,,8.98876404494382,,2.602996254681648,2.908863920099875,6.991260923845194,,,,,,,,7.17852684144819,,,,,,5.555555555555556,6.491885143570538,,8.3645443196005,,4.194756554307116,5.274656679151062,5.9113607990012484,3.8639200998751564,8.489388264669165,5.6491885143570535,4.450686641697877,,4.057428214731585,,,,,6.098626716604246,8.426966292134832,7.990012484394507,6.067415730337078,,,,,,,2.9712858926342074,,,7.428214731585518,,5.8988764044943816,5.936329588014981,,,,4.288389513108614,5.243445692883895,,,,,6.30461922596754, +,,,,,,,,3.6579275905118602,5.0374531835206,5.6491885143570535,,2.471910112359551,3.033707865168539,,,,,,3.6704119850187267,6.616729088639201,,5.224719101123595,,7.553058676654182,,,2.9837702871410734,4.712858926342073,,,,7.116104868913857,,3.408239700374532,,,9.051186017478152,,,2.9275905118601746,6.991260923845194,,,,,,,,7.17852684144819,,,,,,5.580524344569288,6.554307116104869,,,,4.213483146067416,5.299625468164794,5.942571785268415,3.888888888888889,8.489388264669165,,4.4694132334581775,,4.082397003745319,,,,,6.123595505617978,8.489388264669165,8.05243445692884,6.086142322097379,,,,,,,2.9962546816479403,,,7.49063670411985,,5.9238451935081144,5.967540574282147,,,,,5.274656679151062,,,,,6.30461922596754, +,,,,,,,,3.689138576779026,5.056179775280899,,,2.4968789013732833,3.058676654182272,,,,,,3.689138576779026,6.616729088639201,,5.249687890137328,,7.553058676654182,,,3.0087390761548067,,,,,7.116104868913857,,3.4332084893882646,,,9.051186017478152,,,2.9525593008739075,7.0536828963795255,,,,,,,,7.240948813982522,,,,,,,,,,,4.2322097378277155,5.318352059925093,5.97378277153558,3.9076154806491883,8.551810237203496,,4.49438202247191,,4.107365792759051,,,,,6.154806491885144,8.489388264669165,8.05243445692884,6.104868913857677,,,,,,,3.0149812734082393,,,7.49063670411985,,5.948813982521848,5.998751560549313,,,,,,,,,,6.367041198501872, +,,,,,,,,3.7203495630461925,,,,,3.089887640449438,,,,,,3.714107365792759,6.679151061173534,,5.274656679151062,,7.553058676654182,,,3.033707865168539,,,,,,,3.4581772784019975,,,9.113607990012484,,,2.977528089887641,,,,,,,,,7.240948813982522,,,,,,,,,,,4.250936329588015,5.337078651685393,6.004993757802747,3.9325842696629216,8.551810237203496,,,,4.132334581772784,,,,,6.179775280898876,8.551810237203496,8.05243445692884,6.129837702871411,,,,,,,3.0399500624219726,,,7.553058676654182,,5.97378277153558,6.029962546816479,,,,,,,,,,6.367041198501872, +,,,,,,,,,,,,,3.1210986267166043,,,,,,3.732833957553059,6.679151061173534,,5.299625468164794,,,,,3.058676654182272,,,,,,,,,,9.113607990012484,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.269662921348314,5.3620474406991265,6.036204744069912,3.951310861423221,8.614232209737828,,,,,,,,,6.210986267166042,8.551810237203496,8.11485642946317,6.1485642946317105,,,,,,,3.058676654182272,,,7.553058676654182,,,,,,,,,,,,,6.367041198501872, +,,,,,,,,,,,,,3.15230961298377,,,,,,3.7515605493133584,6.741573033707866,,5.324594257178527,,,,,3.0836454431960054,,,,,,,,,,9.176029962546817,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.288389513108614,5.380774032459426,6.067415730337078,3.9762796504369535,8.614232209737828,,,,,,,,,6.235955056179775,,8.11485642946317,6.167290886392011,,,,,,,3.077403245942572,,,7.553058676654182,,,,,,,,,,,,,6.429463171036204, +,,,,,,,,,,,,,,,,,,,,6.741573033707866,,,,,,,,,,,,,,,,,9.176029962546817,,,,,,,,,,,,,,,,,,,,,,,,5.399500624219725,6.098626716604246,,8.67665418227216,,,,,,,,,6.242197253433209,,8.11485642946317,6.192259675405743,,,,,,,3.102372034956305,,,7.615480649188515,,,,,,,,,,,,,6.429463171036204, +,,,,,,,,,,,,,,,,,,,,6.803995006242197,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5.424469413233458,,,,,,,,,,,,6.30461922596754,,,6.210986267166042,,,,,,,3.1210986267166043,,,7.615480649188515,,,,,,,,,,,,,, +3.651685393258427,5.074906367041199,2.1161048689138577,5.305867665418227,3.589263420724095,3.7265917602996255,0.6554307116104868,3.3021223470661676,0.9051186017478152,2.908863920099875,3.6641697877652937,1.223470661672909,0.35268414481897625,0.24968789013732834,1.647940074906367,5.855181023720349,4.4818976279650435,2.7590511860174782,1.9600499375780276,1.6541822721598003,3.8951310861423223,5.224719101123595,2.9712858926342074,5.474406991260924,4.800249687890138,0.9488139825218477,0.6173533083645443,0.6616729088639202,1.7602996254681649,4.057428214731585,0.24781523096129837,0.8926342072409489,5.099875156054932,4.001248439450687,1.317103620474407,2.5842696629213484,0.717852684144819,6.179775280898876,4.313358302122348,0.7116104868913858,0.6928838951310862,4.956304619225968,3.8077403245942576,1.2359550561797754,0.7365792759051186,1.079900124843945,5.724094881398252,2.702871410736579,1.0923845193508115,4.444444444444445,2.9837702871410734,3.183520599250936,4.132334581772784,5.81772784019975,1.797752808988764,3.6267166042446943,3.9076154806491883,4.875156054931336,6.029962546816479,3.2397003745318353,2.4032459425717856,3.3645443196004994,2.9837702871410734,1.8102372034956304,5.6491885143570535,3.5830212234706615,2.446941323345818,5.855181023720349,1.8164794007490637,3.3957553058676653,3.6766541822721597,3.957553058676654,5.705368289637952,3.595505617977528,5.593008739076155,6.104868913857677,4.138576779026217,2.303370786516854,0.9550561797752809,1.2796504369538078,5.730337078651686,3.3645443196004994,2.5343320848938826,0.9800249687890138,5.930087390761548,4.1260923845193505,5.1248439450686645,1.4544319600499376,3.576779026217228,2.958801498127341,5.436953807740325,0.466916354556804,1.9101123595505618,1.8352059925093633,2.1972534332084894,5.031210986267166,0.6928838951310862,4.856429463171036,4.425717852684145,4.157303370786517, +3.682896379525593,5.1123595505617985,2.153558052434457,5.33083645443196,3.6142322097378274,3.745318352059925,0.6803995006242198,3.3270911360799,0.9363295880149812,2.933832709113608,3.682896379525593,1.2546816479400749,0.3757802746566792,0.27965043695380776,1.6729088639200997,5.880149812734083,4.51310861423221,2.790262172284644,1.9850187265917605,1.6791510611735332,3.920099875156055,5.262172284644195,2.9962546816479403,5.50561797752809,4.831460674157303,0.9737827715355806,0.6491885143570537,0.686641697877653,1.7915106117353308,4.082397003745319,0.2727840199750312,0.9300873907615481,5.1248439450686645,4.019975031210986,1.34207240948814,2.6092384519350813,0.7490636704119851,6.210986267166042,4.33832709113608,0.7303370786516854,0.717852684144819,4.975031210986267,3.8389513108614235,1.2671660424469413,0.7677902621722846,1.104868913857678,5.7553058676654185,2.7340823970037453,1.1235955056179776,4.475655430711611,3.0087390761548067,3.214731585518102,4.157303370786517,5.855181023720349,1.8164794007490637,3.651685393258427,3.9325842696629216,4.912609238451935,6.054931335830212,3.2709113607990012,2.4219725343320846,3.383270911360799,3.0149812734082393,1.8289637952559301,5.68039950062422,3.607990012484395,2.4656679151061174,5.880149812734083,1.8414481897627966,3.420724094881398,3.7078651685393256,3.9887640449438204,5.730337078651686,3.6267166042446943,5.6242197253433215,6.129837702871411,4.16354556803995,2.340823970037453,0.9800249687890138,1.3108614232209737,5.767790262172285,3.3895131086142323,2.571785268414482,0.9987515605493134,5.961298377028713,4.151061173533084,5.149812734082397,1.4856429463171037,3.6017478152309614,2.990012484394507,5.468164794007491,0.49063670411985016,1.941323345817728,1.8601747815230962,2.2347066167290888,5.068664169787765,0.7303370786516854,4.887640449438202,4.450686641697877,4.18227215980025, +3.714107365792759,5.143570536828964,2.184769038701623,5.3620474406991265,3.639200998751561,3.7702871410736583,0.7053682896379525,3.3583021223470664,0.9675405742821472,2.958801498127341,3.7078651685393256,1.2796504369538078,0.39825218476903873,0.3096129837702871,1.6978776529338326,5.9113607990012484,4.544319600499376,2.82147315855181,2.009987515605493,1.6978776529338326,3.951310861423221,5.293383270911361,3.0149812734082393,5.536828963795256,4.856429463171036,1.0049937578027466,0.6803995006242198,0.7116104868913858,1.8227215980024971,4.107365792759051,0.29712858926342073,0.9612983770287141,5.143570536828964,4.044943820224719,1.3670411985018727,2.634207240948814,0.7865168539325842,6.242197253433209,4.3632958801498125,0.7553058676654182,0.7428214731585518,5.0,3.8639200998751564,1.2983770287141074,0.7927590511860175,1.1298377028714106,5.786516853932584,2.7715355805243447,1.161048689138577,4.506866416978776,3.0399500624219726,3.245942571785269,4.188514357053683,5.892634207240949,1.8414481897627966,3.6704119850187267,3.9637952559300875,4.950062421972534,6.086142322097379,3.295880149812734,2.446941323345818,3.4019975031210987,3.046192259675406,1.8539325842696628,5.711610486891385,3.6329588014981273,2.4906367041198503,5.8988764044943816,1.8664169787765295,3.4456928838951315,3.7390761548064915,4.019975031210986,5.7553058676654185,3.651685393258427,5.655430711610487,6.1485642946317105,4.18227215980025,2.3720349563046192,1.0049937578027466,1.348314606741573,5.805243445692884,3.420724094881398,2.602996254681648,1.0237203495630463,5.992509363295881,4.176029962546816,5.174781523096129,1.5168539325842696,3.6267166042446943,3.0212234706616727,5.499375780274657,0.5149812734082396,1.9725343320848938,1.8851435705368291,2.2659176029962547,5.106117353308365,0.7615480649188515,4.918851435705368,4.475655430711611,4.207240948813983, +3.745318352059925,5.174781523096129,2.215980024968789,5.3870162297128585,3.6641697877652937,3.7952559300873907,0.7240948813982522,3.383270911360799,0.9987515605493134,2.977528089887641,3.7265917602996255,1.3108614232209737,0.4213483146067416,0.33957553058676654,1.7228464419475658,5.942571785268415,4.575530586766542,2.8464419475655434,2.034956304619226,1.7228464419475658,3.982521847690387,5.324594257178527,3.0399500624219726,5.568039950062421,4.887640449438202,1.0362047440699127,0.7053682896379525,0.7365792759051186,1.8539325842696628,4.132334581772784,0.32209737827715357,0.9987515605493134,5.168539325842697,4.069912609238452,1.3857677902621723,2.6591760299625467,0.8177278401997503,6.30461922596754,4.388264669163545,0.7740324594257179,0.7677902621722846,5.0187265917602994,3.888888888888889,1.3358302122347065,0.8239700374531835,1.161048689138577,5.81772784019975,2.8027465667915106,1.1922596754057428,4.538077403245943,3.0649188514357055,3.2833957553058677,4.213483146067416,5.930087390761548,1.8664169787765295,3.6953807740324596,3.9887640449438204,4.987515605493134,6.111111111111111,3.320848938826467,2.4656679151061174,3.4269662921348316,3.0836454431960054,1.8726591760299625,5.736579275905119,3.651685393258427,2.5093632958801497,5.9238451935081144,1.8913857677902621,3.470661672908864,3.7702871410736583,4.057428214731585,5.774032459425719,3.6766541822721597,5.686641697877653,6.167290886392011,4.200998751560549,2.4032459425717856,1.0299625468164793,1.3795255930087391,5.848938826466916,3.451935081148564,2.634207240948814,1.042446941323346,6.023720349563047,4.200998751560549,5.199750312109863,1.5480649188514357,3.651685393258427,3.0524344569288386,5.524344569288389,0.5387016229712859,2.00374531835206,1.9101123595505618,2.2971285892634206,5.149812734082397,0.7990012484394506,4.950062421972534,4.500624219725343,4.225967540574282, +3.776529338327091,5.212234706616729,2.253433208489388,5.418227215980025,3.689138576779026,3.81398252184769,0.7490636704119851,3.408239700374532,1.0237203495630463,3.0024968789013733,3.745318352059925,1.34207240948814,0.44382022471910115,0.36953807740324596,1.7415730337078652,5.97378277153558,4.606741573033708,2.8776529338327093,2.0599250936329585,1.7415730337078652,4.00749063670412,5.355805243445693,3.0649188514357055,5.599250936329588,4.918851435705368,1.0611735330836456,0.7365792759051186,0.7615480649188515,1.8851435705368291,4.157303370786517,0.3464419475655431,1.0299625468164793,5.187265917602996,4.0886392009987516,1.410736579275905,2.6779026217228465,0.8551810237203495,6.30461922596754,4.413233458177278,0.7927590511860175,0.7927590511860175,5.043695380774032,3.920099875156055,1.3670411985018727,0.8551810237203495,1.1860174781523096,5.848938826466916,2.8339575530586765,1.229712858926342,4.563046192259676,3.0961298377028714,3.3146067415730336,4.238451935081149,5.961298377028713,1.8913857677902621,3.714107365792759,4.019975031210986,5.024968789013733,6.1360799001248445,3.352059925093633,2.4843945068664173,3.4456928838951315,3.114856429463171,1.8976279650436954,5.767790262172285,3.6766541822721597,2.5343320848938826,5.942571785268415,1.916354556803995,3.495630461922597,3.801498127340824,4.0886392009987516,5.799001248439451,3.7078651685393256,5.717852684144819,6.192259675405743,4.225967540574282,2.4406991260923845,1.0549313358302121,1.4169787765293382,5.8863920099875156,3.4831460674157304,2.671660424469413,1.0674157303370786,6.054931335830212,4.225967540574282,5.224719101123595,1.5792759051186018,3.6766541822721597,3.089887640449438,5.555555555555556,0.5630461922596754,2.034956304619226,1.941323345817728,2.328339575530587,5.187265917602996,0.8302122347066168,4.975031210986267,4.531835205992509,4.250936329588015, +3.801498127340824,5.243445692883895,2.2846441947565546,5.443196004993759,3.714107365792759,3.8389513108614235,0.7740324594257179,3.4332084893882646,1.0549313358302121,3.027465667915106,3.7702871410736583,1.373283395755306,0.466916354556804,0.3995006242197253,1.766541822721598,5.998751560549313,4.637952559300874,2.908863920099875,2.084893882646692,1.766541822721598,4.038701622971286,5.3870162297128585,3.089887640449438,5.630461922596755,4.943820224719102,1.0923845193508115,0.7677902621722846,0.7865168539325842,1.916354556803995,4.18227215980025,0.3714107365792759,1.0611735330836456,5.212234706616729,4.1136079900124844,1.4294631710362047,2.702871410736579,0.8863920099875156,6.30461922596754,4.438202247191011,0.8114856429463172,0.8177278401997503,5.062421972534332,3.9450686641697876,1.3982521847690388,0.8801498127340824,1.2109862671660423,5.880149812734083,2.871410736579276,1.260923845193508,4.594257178526841,3.1210986267166043,3.352059925093633,4.263420724094882,5.998751560549313,1.916354556803995,3.732833957553059,4.051186017478152,5.062421972534332,6.161048689138577,3.3770287141073654,2.5031210986267167,3.464419475655431,3.1460674157303368,1.916354556803995,5.799001248439451,3.6953807740324596,2.5530586766541825,5.967540574282147,1.941323345817728,3.5205992509363297,3.83270911360799,4.119850187265917,5.823970037453184,3.732833957553059,5.749063670411985,6.210986267166042,4.244694132334582,2.471910112359551,1.079900124843945,1.4544319600499376,5.9238451935081144,3.5143570536828963,2.702871410736579,1.0861423220973783,6.086142322097379,4.244694132334582,5.249687890137328,1.6104868913857677,3.701622971285893,3.1210986267166043,5.586766541822722,0.5867665418227216,2.066167290886392,1.9662921348314608,2.3657927590511862,5.224719101123595,0.867665418227216,5.0062421972534334,4.556803995006242,4.275905118601748, +3.83270911360799,5.274656679151062,2.3158551810237205,5.474406991260924,3.7390761548064915,3.857677902621723,0.7927590511860175,3.4581772784019975,1.0861423220973783,3.046192259675406,3.7890137328339577,1.3982521847690388,0.4893882646691636,0.42946317103620474,1.7915106117353308,6.029962546816479,4.66916354556804,2.9400749063670415,2.1098626716604243,1.7852684144818978,4.069912609238452,5.418227215980025,3.114856429463171,5.66167290886392,4.975031210986267,1.1235955056179776,0.7990012484394506,0.8114856429463172,1.9475655430711611,4.207240948813983,0.39637952559300876,1.0986267166042447,5.230961298377029,4.132334581772784,1.4544319600499376,2.727840199750312,0.9238451935081149,6.367041198501872,4.456928838951311,0.8364544319600499,0.8426966292134832,5.087390761548065,3.970037453183521,1.4294631710362047,0.9113607990012486,1.2421972534332086,5.9113607990012484,2.902621722846442,1.2921348314606742,4.6254681647940075,3.15230961298377,3.383270911360799,4.288389513108614,6.036204744069912,1.9350811485642945,3.7578027465667914,4.0761548064918856,5.099875156054932,6.186017478152309,3.4019975031210987,2.521847690387016,3.4893882646691634,3.1772784019975036,1.941323345817728,5.830212234706617,3.7203495630461925,2.578027465667915,5.986267166042447,1.9662921348314608,3.545568039950062,3.8639200998751564,4.151061173533084,5.848938826466916,3.7578027465667914,5.7802746566791505,6.229712858926342,4.263420724094882,2.5093632958801497,1.104868913857678,1.4856429463171037,5.961298377028713,3.545568039950062,2.7340823970037453,1.1111111111111112,6.117353308364544,4.269662921348314,5.274656679151062,1.6416978776529338,3.7265917602996255,3.15230961298377,5.611735330836455,0.6104868913857677,2.097378277153558,1.9912609238451935,2.397003745318352,5.262172284644195,0.898876404494382,5.0374531835206,4.581772784019975,4.294631710362047, +3.8639200998751564,5.312109862671661,2.35330836454432,5.499375780274657,3.764044943820225,3.882646691635456,0.8177278401997503,3.4893882646691634,1.1173533083645444,3.0711610486891385,3.81398252184769,1.4294631710362047,0.5124843945068664,0.45942571785268416,1.8164794007490637,6.061173533083646,4.700374531835206,2.9712858926342074,2.128589263420724,1.8102372034956304,4.094881398252185,5.449438202247191,3.139825218476904,5.692883895131087,5.0062421972534334,1.1485642946317103,0.8302122347066168,0.8364544319600499,1.978776529338327,4.2322097378277155,0.4207240948813982,1.1298377028714106,5.2559300873907615,4.157303370786517,1.4794007490636705,2.746566791510612,0.9550561797752809,6.367041198501872,4.4818976279650435,0.8551810237203495,0.8614232209737829,5.106117353308365,3.9950062421972534,1.466916354556804,0.9425717852684146,1.2671660424469413,5.942571785268415,2.9400749063670415,1.3295880149812733,4.656679151061174,3.183520599250936,3.4144818976279647,4.31960049937578,6.067415730337078,1.9600499375780276,3.776529338327091,4.107365792759051,5.1373283395755305,6.210986267166042,3.4332084893882646,2.5405742821473156,3.508114856429463,3.2084893882646695,1.9662921348314608,5.861423220973783,3.745318352059925,2.596754057428215,6.01123595505618,1.9912609238451935,3.5705368289637955,3.8951310861423223,4.188514357053683,5.867665418227216,3.7890137328339577,5.811485642946318,6.242197253433209,4.288389513108614,2.5405742821473156,1.1298377028714106,1.523096129837703,6.004993757802747,3.576779026217228,2.7715355805243447,1.1298377028714106,6.1485642946317105,4.294631710362047,5.299625468164794,1.6729088639200997,3.7515605493133584,3.183520599250936,5.64294631710362,0.6367041198501873,2.128589263420724,2.0224719101123596,2.428214731585518,5.305867665418227,0.9363295880149812,5.068664169787765,4.606741573033708,4.31960049937578, +3.8951310861423223,5.343320848938826,2.3845193508114857,5.5305867665418225,3.7890137328339577,3.9076154806491883,0.8426966292134832,3.5143570536828963,1.1423220973782773,3.0961298377028714,3.83270911360799,1.4606741573033708,0.534956304619226,0.4893882646691636,1.8414481897627966,6.086142322097379,4.7315855181023725,3.0024968789013733,2.153558052434457,1.8289637952559301,4.1260923845193505,5.480649188514358,3.1647940074906367,5.724094881398252,5.0374531835206,1.1797752808988764,0.8614232209737829,0.8614232209737829,2.016229712858926,4.257178526841448,0.44569288389513106,1.161048689138577,5.274656679151062,4.176029962546816,1.4981273408239701,2.7715355805243447,0.9925093632958802,6.429463171036204,4.506866416978776,0.8739076154806492,0.8863920099875156,5.131086142322098,4.02621722846442,1.4981273408239701,0.9737827715355806,1.2921348314606742,5.97378277153558,2.9712858926342074,1.3607990012484397,4.681647940074906,3.2084893882646695,3.451935081148564,4.344569288389513,6.104868913857677,1.9850187265917605,3.7952559300873907,4.132334581772784,5.174781523096129,6.235955056179775,3.4581772784019975,2.5593008739076155,3.5268414481897628,3.2397003745318353,1.9850187265917605,5.892634207240949,3.764044943820225,2.6217228464419473,6.029962546816479,2.016229712858926,3.595505617977528,3.926342072409488,4.219725343320849,5.892634207240949,3.81398252184769,5.842696629213483,6.242197253433209,4.307116104868914,2.578027465667915,1.1548064918851435,1.554307116104869,6.0424469413233455,3.607990012484395,2.8027465667915106,1.1548064918851435,6.179775280898876,4.31960049937578,5.324594257178527,1.704119850187266,3.776529338327091,3.214731585518102,5.674157303370786,0.6616729088639202,2.15980024968789,2.0474406991260925,2.4656679151061174,5.343320848938826,0.9675405742821472,5.099875156054932,4.631710362047441,4.344569288389513, +3.926342072409488,5.3745318352059925,2.4157303370786516,5.555555555555556,3.81398252184769,3.926342072409488,0.8614232209737829,3.5393258426966296,1.1735330836454432,3.114856429463171,3.857677902621723,1.4918851435705367,0.5580524344569288,0.519350811485643,1.8664169787765295,6.117353308364544,4.762796504369538,3.033707865168539,2.1785268414481895,1.8476903870162298,4.157303370786517,5.511860174781523,3.1897627965043696,5.7553058676654185,5.062421972534332,1.2109862671660423,0.8863920099875156,0.8863920099875156,2.0474406991260925,4.282147315855181,0.4700374531835206,1.198501872659176,5.299625468164794,4.200998751560549,1.523096129837703,2.7965043695380776,1.0237203495630463,6.429463171036204,4.531835205992509,0.898876404494382,0.9113607990012486,5.149812734082397,4.051186017478152,1.529338327091136,0.9987515605493134,1.3233458177278403,6.004993757802747,3.0024968789013733,1.3982521847690388,4.712858926342073,3.2397003745318353,3.4831460674157304,4.369538077403246,6.142322097378277,2.009987515605493,3.8202247191011236,4.16354556803995,5.212234706616729,6.242197253433209,3.4831460674157304,2.578027465667915,3.5518102372034956,3.2709113607990012,2.009987515605493,5.9238451935081144,3.7890137328339577,2.640449438202247,6.054931335830212,2.0411985018726595,3.620474406991261,3.957553058676654,4.250936329588015,5.917602996254682,3.8451935081148565,5.8739076154806495,6.30461922596754,4.325842696629214,2.6092384519350813,1.1797752808988764,1.591760299625468,6.079900124843945,3.639200998751561,2.8339575530586765,1.1735330836454432,6.210986267166042,4.344569288389513,5.34956304619226,1.735330836454432,3.801498127340824,3.245942571785269,5.705368289637952,0.6803995006242198,2.1910112359550564,2.0724094881398254,2.4968789013732833,5.380774032459426,0.9987515605493134,5.131086142322098,4.656679151061174,4.369538077403246, +3.957553058676654,5.411985018726591,2.453183520599251,5.586766541822722,3.8389513108614235,3.951310861423221,0.8863920099875156,3.564294631710362,1.2047440699126093,3.139825218476904,3.8764044943820224,1.5168539325842696,0.5811485642946317,0.548689138576779,1.8913857677902621,6.1485642946317105,4.794007490636704,3.0649188514357055,2.203495630461923,1.8726591760299625,4.18227215980025,5.543071161048689,3.214731585518102,5.786516853932584,5.093632958801498,1.2359550561797754,0.9176029962546817,0.9113607990012486,2.0786516853932584,4.307116104868914,0.4950062421972534,1.229712858926342,5.318352059925093,4.225967540574282,1.5418227215980027,2.82147315855181,1.0611735330836456,6.491885143570538,4.556803995006242,0.9176029962546817,0.9363295880149812,5.174781523096129,4.0761548064918856,1.5605493133583022,1.0299625468164793,1.348314606741573,6.036204744069912,3.0399500624219726,1.4294631710362047,4.7440699126092385,3.2646691635455682,3.5205992509363297,4.394506866416979,6.173533083645444,2.034956304619226,3.8389513108614235,4.188514357053683,5.249687890137328,6.30461922596754,3.5143570536828963,2.596754057428215,3.5705368289637955,3.3021223470661676,2.0287141073657926,5.955056179775282,3.8077403245942576,2.66541822721598,6.073657927590512,2.0599250936329585,3.6454431960049942,3.982521847690387,4.282147315855181,5.942571785268415,3.870162297128589,5.905118601747815,6.30461922596754,4.3508114856429465,2.6466916354556806,1.2047440699126093,1.6229712858926344,6.117353308364544,3.6704119850187267,2.871410736579276,1.198501872659176,6.242197253433209,4.369538077403246,5.3745318352059925,1.766541822721598,3.826466916354557,3.2833957553058677,5.730337078651686,0.7053682896379525,2.2222222222222223,2.097378277153558,2.5280898876404496,5.424469413233458,1.0362047440699127,5.15605493133583,4.681647940074906,4.388264669163545, +3.9887640449438204,5.443196004993759,2.4843945068664173,5.611735330836455,3.8639200998751564,3.9762796504369535,0.9113607990012486,3.589263420724095,1.2359550561797754,3.1647940074906367,3.8951310861423223,1.5480649188514357,0.6036204744069913,0.5786516853932584,1.916354556803995,6.179775280898876,4.825218476903871,3.0961298377028714,2.2284644194756553,1.8913857677902621,4.213483146067416,5.574282147315855,3.233458177278402,5.81772784019975,5.1248439450686645,1.2671660424469413,0.9488139825218477,0.9363295880149812,2.1098626716604243,4.332084893882647,0.5199750312109862,1.2671660424469413,5.337078651685393,4.244694132334582,1.5667915106117354,2.84019975031211,1.0923845193508115,6.491885143570538,4.581772784019975,0.9363295880149812,0.9612983770287141,5.199750312109863,4.1011235955056184,1.5980024968789013,1.0611735330836456,1.373283395755306,6.067415730337078,3.0711610486891385,1.4606741573033708,4.775280898876405,3.295880149812734,3.5518102372034956,4.419475655430712,6.210986267166042,2.0599250936329585,3.857677902621723,4.219725343320849,5.287141073657928,6.30461922596754,3.5393258426966296,2.6217228464419473,3.589263420724095,3.3333333333333335,2.0536828963795255,5.986267166042447,3.83270911360799,2.68414481897628,6.098626716604246,2.084893882646692,3.6704119850187267,4.013732833957553,4.31960049937578,5.961298377028713,3.8951310861423223,5.936329588014981,6.30461922596754,4.369538077403246,2.6779026217228465,1.229712858926342,1.6604244694132335,6.154806491885144,3.701622971285893,2.902621722846442,1.2172284644194757,6.30461922596754,4.394506866416979,5.399500624219725,1.797752808988764,3.8514357053682895,3.3146067415730336,5.761548064918852,0.7303370786516854,2.253433208489388,2.128589263420724,2.565543071161049,5.461922596754057,1.0674157303370786,5.187265917602996,4.70661672908864,4.413233458177278, +4.019975031210986,5.474406991260924,2.521847690387016,5.64294631710362,3.888888888888889,3.9950062421972534,0.9300873907615481,3.620474406991261,1.260923845193508,3.183520599250936,3.920099875156055,1.5792759051186018,0.6242197253433208,0.6086142322097379,1.941323345817728,6.20474406991261,4.856429463171036,3.1273408239700373,2.253433208489388,1.916354556803995,4.244694132334582,5.605493133583021,3.258426966292135,5.848938826466916,5.149812734082397,1.2983770287141074,0.9800249687890138,0.9612983770287141,2.1410736579275906,4.357053682896379,0.5443196004993758,1.2983770287141074,5.3620474406991265,4.269662921348314,1.591760299625468,2.865168539325843,1.1298377028714106,6.554307116104869,4.606741573033708,0.9550561797752809,0.9862671660424469,5.218476903870163,4.132334581772784,1.6292134831460674,1.0861423220973783,1.404494382022472,6.098626716604246,3.102372034956305,1.4981273408239701,4.800249687890138,3.3270911360799,3.589263420724095,4.450686641697877,6.242197253433209,2.0786516853932584,3.882646691635456,4.244694132334582,5.324594257178527,6.367041198501872,3.564294631710362,2.640449438202247,3.6142322097378274,3.3645443196004994,2.0786516853932584,6.0174781523096135,3.857677902621723,2.7091136079900124,6.117353308364544,2.1098626716604243,3.6953807740324596,4.044943820224719,4.3508114856429465,5.986267166042447,3.926342072409488,5.967540574282147,6.367041198501872,4.388264669163545,2.715355805243446,1.2484394506866416,1.6978776529338326,6.198501872659176,3.732833957553059,2.933832709113608,1.2359550561797754,6.30461922596754,4.413233458177278,5.424469413233458,1.8227215980024971,3.8764044943820224,3.3458177278401995,5.792759051186017,0.7553058676654182,2.2846441947565546,2.153558052434457,2.596754057428215,5.499375780274657,1.104868913857678,5.218476903870163,4.737827715355805,4.438202247191011, +4.044943820224719,5.511860174781523,2.5530586766541825,5.667915106117353,3.9138576779026217,4.019975031210986,0.9550561797752809,3.6454431960049942,1.2921348314606742,3.2084893882646695,3.938826466916354,1.6042446941323347,0.6491885143570537,0.6367041198501873,1.9662921348314608,6.235955056179775,4.887640449438202,3.1585518102372037,2.278401997503121,1.9350811485642945,4.269662921348314,5.64294631710362,3.2833957553058677,5.880149812734083,5.181023720349563,1.3233458177278403,1.0112359550561798,0.9862671660424469,2.1722846441947565,4.382022471910113,0.5692883895131086,1.3295880149812733,5.380774032459426,4.288389513108614,1.6104868913857677,2.8901373283395753,1.16729088639201,6.554307116104869,4.6254681647940075,0.9800249687890138,1.0112359550561798,5.243445692883895,4.157303370786517,1.6604244694132335,1.1173533083645444,1.4294631710362047,6.129837702871411,3.139825218476904,1.529338327091136,4.831460674157303,3.352059925093633,3.620474406991261,4.475655430711611,6.30461922596754,2.1036204744069913,3.9013732833957557,4.275905118601748,5.3620474406991265,6.367041198501872,3.595505617977528,2.6591760299625467,3.6329588014981273,3.3957553058676653,2.097378277153558,6.048689138576779,3.8764044943820224,2.727840199750312,6.1360799001248445,2.134831460674157,3.7203495630461925,4.0761548064918856,4.382022471910113,6.01123595505618,3.951310861423221,5.998751560549313,6.367041198501872,4.413233458177278,2.746566791510612,1.2734082397003745,1.7290886392009988,6.235955056179775,3.764044943820225,2.9712858926342074,1.260923845193508,6.367041198501872,4.438202247191011,5.449438202247191,1.8539325842696628,3.9013732833957557,3.3770287141073654,5.81772784019975,0.7802746566791511,2.3158551810237205,2.1785268414481895,2.6279650436953808,5.536828963795256,1.136079900124844,5.249687890137328,4.762796504369538,4.463171036204744, +4.0761548064918856,5.543071161048689,2.5842696629213484,5.69912609238452,3.938826466916354,4.044943820224719,0.9800249687890138,3.6704119850187267,1.3233458177278403,3.233458177278402,3.9637952559300875,1.6354556803995006,0.6741573033707865,0.6679151061173533,1.9912609238451935,6.242197253433209,4.918851435705368,3.1897627965043696,2.303370786516854,1.9600499375780276,4.300873907615481,5.674157303370786,3.3083645443196006,5.9113607990012484,5.212234706616729,1.3545568039950062,1.0362047440699127,1.0112359550561798,2.203495630461923,4.406991260923846,0.5942571785268415,1.3670411985018727,5.405742821473158,4.313358302122348,1.6354556803995006,2.9151061173533086,1.198501872659176,6.616729088639201,4.65043695380774,0.9987515605493134,1.0299625468164793,5.262172284644195,4.18227215980025,1.6978776529338326,1.1485642946317103,1.4544319600499376,6.161048689138577,3.17103620474407,1.5605493133583022,4.8626716604244695,3.383270911360799,3.651685393258427,4.500624219725343,6.30461922596754,2.128589263420724,3.920099875156055,4.300873907615481,5.399500624219725,6.367041198501872,3.620474406991261,2.6779026217228465,3.651685393258427,3.4332084893882646,2.122347066167291,6.079900124843945,3.9013732833957557,2.752808988764045,6.161048689138577,2.15980024968789,3.745318352059925,4.107365792759051,4.413233458177278,6.036204744069912,3.9762796504369535,6.029962546816479,6.367041198501872,4.431960049937578,2.7840199750312107,1.2983770287141074,1.766541822721598,6.30461922596754,3.7952559300873907,3.0024968789013733,1.2796504369538078,6.367041198501872,4.463171036204744,5.480649188514358,1.8851435705368291,3.926342072409488,3.408239700374532,5.848938826466916,0.8052434456928839,2.3470661672908864,2.203495630461923,2.66541822721598,5.580524344569288,1.1735330836454432,5.280898876404494,4.787765293383271,4.4818976279650435, +4.107365792759051,5.574282147315855,2.6217228464419473,5.724094881398252,3.9637952559300875,4.063670411985019,0.9987515605493134,3.6953807740324596,1.3545568039950062,3.2521847690387014,3.982521847690387,1.6666666666666667,0.6928838951310862,0.6991260923845194,2.016229712858926,6.30461922596754,4.950062421972534,3.2209737827715355,2.328339575530587,1.978776529338327,4.332084893882647,5.705368289637952,3.3333333333333335,5.942571785268415,5.237203495630462,1.3857677902621723,1.0674157303370786,1.0362047440699127,2.2347066167290888,4.431960049937578,0.618601747815231,1.3982521847690388,5.424469413233458,4.332084893882647,1.6541822721598003,2.933832709113608,1.2359550561797754,6.616729088639201,4.675405742821473,1.017478152309613,1.0549313358302121,5.287141073657928,4.213483146067416,1.7290886392009988,1.1797752808988764,1.4856429463171037,6.192259675405743,3.202247191011236,1.5980024968789013,4.893882646691636,3.408239700374532,3.689138576779026,4.525593008739076,6.367041198501872,2.153558052434457,3.9450686641697876,4.332084893882647,5.436953807740325,6.429463171036204,3.6454431960049942,2.696629213483146,3.6766541822721597,3.464419475655431,2.1410736579275906,6.111111111111111,3.920099875156055,2.7715355805243447,6.179775280898876,2.184769038701623,3.7702871410736583,4.138576779026217,4.444444444444445,6.054931335830212,4.00749063670412,6.061173533083646,6.429463171036204,4.450686641697877,2.8152309612983775,1.3233458177278403,1.797752808988764,6.30461922596754,3.826466916354557,3.0399500624219726,1.3046192259675407,6.429463171036204,4.488139825218477,5.50561797752809,1.916354556803995,3.951310861423221,3.4456928838951315,5.880149812734083,0.8239700374531835,2.3782771535580522,2.2347066167290888,2.696629213483146,5.617977528089888,1.2047440699126093,5.312109862671661,4.812734082397004,4.506866416978776, +4.138576779026217,5.611735330836455,2.6529338327091136,5.7553058676654185,3.9887640449438204,4.0886392009987516,1.0237203495630463,3.7265917602996255,1.3795255930087391,3.2771535580524347,4.00749063670412,1.6978776529338326,0.717852684144819,0.7303370786516854,2.0411985018726595,6.30461922596754,4.9812734082397006,3.2521847690387014,2.35330836454432,2.00374531835206,4.357053682896379,5.736579275905119,3.3583021223470664,5.967540574282147,5.268414481897628,1.410736579275905,1.0986267166042447,1.0611735330836456,2.2659176029962547,4.456928838951311,0.6429463171036205,1.4294631710362047,5.449438202247191,4.357053682896379,1.6791510611735332,2.958801498127341,1.2671660424469413,6.679151061173534,4.700374531835206,1.042446941323346,1.079900124843945,5.305867665418227,4.238451935081149,1.7602996254681649,1.2047440699126093,1.5106117353308364,6.223470661672909,3.2397003745318353,1.6292134831460674,4.918851435705368,3.439450686641698,3.7203495630461925,4.55056179775281,6.367041198501872,2.1785268414481895,3.9637952559300875,4.3632958801498125,5.474406991260924,6.429463171036204,3.6766541822721597,2.715355805243446,3.6953807740324596,3.495630461922597,2.1660424469413235,6.1360799001248445,3.9450686641697876,2.7965043695380776,6.20474406991261,2.209737827715356,3.7952559300873907,4.169787765293384,4.4818976279650435,6.079900124843945,4.032459425717852,6.092384519350812,6.429463171036204,4.475655430711611,2.8464419475655434,1.348314606741573,1.8352059925093633,6.367041198501872,3.857677902621723,3.0711610486891385,1.3233458177278403,6.429463171036204,4.51310861423221,5.5305867665418225,1.9475655430711611,3.9762796504369535,3.4769038701622974,5.905118601747815,0.8489388264669163,2.4094881398252186,2.259675405742821,2.727840199750312,5.655430711610487,1.2359550561797754,5.337078651685393,4.837702871410737,4.531835205992509, +4.169787765293384,5.64294631710362,2.68414481897628,5.7802746566791505,4.013732833957553,4.1136079900124844,1.048689138576779,3.7515605493133584,1.410736579275905,3.3021223470661676,4.02621722846442,1.7228464419475658,0.7428214731585518,0.7553058676654182,2.066167290886392,6.367041198501872,5.012484394506866,3.2833957553058677,2.3782771535580522,2.0224719101123596,4.388264669163545,5.767790262172285,3.383270911360799,5.998751560549313,5.299625468164794,1.4419475655430714,1.1298377028714106,1.0861423220973783,2.2971285892634206,4.4818976279650435,0.6679151061173533,1.466916354556804,5.468164794007491,4.382022471910113,1.704119850187266,2.9837702871410734,1.3046192259675407,6.679151061173534,4.725343320848939,1.0611735330836456,1.104868913857678,5.33083645443196,4.263420724094882,1.7915106117353308,1.2359550561797754,1.5355805243445693,6.242197253433209,3.2709113607990012,1.6666666666666667,4.950062421972534,3.464419475655431,3.7578027465667914,4.581772784019975,6.429463171036204,2.1972534332084894,3.9887640449438204,4.388264669163545,5.511860174781523,6.491885143570538,3.701622971285893,2.7340823970037453,3.714107365792759,3.5268414481897628,2.184769038701623,6.167290886392011,3.9637952559300875,2.8152309612983775,6.223470661672909,2.2347066167290888,3.8202247191011236,4.200998751560549,4.51310861423221,6.104868913857677,4.057428214731585,6.123595505617978,6.429463171036204,4.49438202247191,2.8838951310861427,1.373283395755306,1.8726591760299625,6.367041198501872,3.888888888888889,3.102372034956305,1.348314606741573,6.491885143570538,4.538077403245943,5.555555555555556,1.978776529338327,4.001248439450687,3.508114856429463,5.936329588014981,0.8739076154806492,2.4406991260923845,2.2846441947565546,2.7590511860174782,5.69912609238452,1.2734082397003745,5.36828963795256,4.8626716604244695,4.556803995006242, +4.200998751560549,5.674157303370786,2.7215980024968793,5.811485642946318,4.038701622971286,4.132334581772784,1.0674157303370786,3.776529338327091,1.4419475655430714,3.320848938826467,4.044943820224719,1.7540574282147314,0.7615480649188515,0.7865168539325842,2.091136079900125,6.367041198501872,5.043695380774032,3.3146067415730336,2.4032459425717856,2.0474406991260925,4.419475655430712,5.799001248439451,3.408239700374532,6.029962546816479,5.324594257178527,1.4731585518102372,1.161048689138577,1.1111111111111112,2.328339575530587,4.506866416978776,0.6928838951310862,1.4981273408239701,5.493133583021224,4.400749063670412,1.7228464419475658,3.0087390761548067,1.3358302122347065,6.741573033707866,4.750312109862672,1.079900124843945,1.1298377028714106,5.34956304619226,4.288389513108614,1.8289637952559301,1.2671660424469413,1.5605493133583022,6.30461922596754,3.3083645443196006,1.6978776529338326,4.9812734082397006,3.495630461922597,3.7890137328339577,4.606741573033708,6.429463171036204,2.2222222222222223,4.00749063670412,4.419475655430712,5.549313358302123,6.491885143570538,3.7265917602996255,2.752808988764045,3.7390761548064915,3.5580524344569286,2.209737827715356,6.198501872659176,3.9887640449438204,2.84019975031211,6.242197253433209,2.259675405742821,3.8451935081148565,4.2322097378277155,4.544319600499376,6.123595505617978,4.0886392009987516,6.1485642946317105,6.491885143570538,4.519350811485642,2.9151061173533086,1.3982521847690388,1.9038701622971288,6.429463171036204,3.920099875156055,3.139825218476904,1.3670411985018727,6.491885143570538,4.563046192259676,5.580524344569288,2.009987515605493,4.02621722846442,3.5393258426966296,5.967540574282147,0.898876404494382,2.4656679151061174,2.3158551810237205,2.7965043695380776,5.736579275905119,1.3046192259675407,5.399500624219725,4.887640449438202,4.575530586766542, +4.2322097378277155,5.711610486891385,2.752808988764045,5.836454431960051,4.063670411985019,4.157303370786517,1.0923845193508115,3.801498127340824,1.4731585518102372,3.3458177278401995,4.069912609238452,1.7852684144818978,0.7865168539325842,0.8177278401997503,2.1161048689138577,6.429463171036204,5.074906367041199,3.3458177278401995,2.428214731585518,2.066167290886392,4.444444444444445,5.830212234706617,3.4332084893882646,6.061173533083646,5.355805243445693,1.4981273408239701,1.1922596754057428,1.136079900124844,2.3657927590511862,4.525593008739076,0.717852684144819,1.5355805243445693,5.511860174781523,4.425717852684145,1.7478152309612984,3.027465667915106,1.373283395755306,6.741573033707866,4.769038701622971,1.104868913857678,1.1548064918851435,5.3745318352059925,4.31960049937578,1.8601747815230962,1.2921348314606742,1.591760299625468,6.30461922596754,3.339575530586767,1.7290886392009988,5.012484394506866,3.5268414481897628,3.826466916354557,4.631710362047441,6.491885143570538,2.247191011235955,4.02621722846442,4.444444444444445,5.586766541822722,6.491885143570538,3.7578027465667914,2.7715355805243447,3.7578027465667914,3.589263420724095,2.2347066167290888,6.229712858926342,4.013732833957553,2.8589263420724094,6.242197253433209,2.2846441947565546,3.870162297128589,4.263420724094882,4.575530586766542,6.1485642946317105,4.1136079900124844,6.179775280898876,6.491885143570538,4.538077403245943,2.9525593008739075,1.4232209737827717,1.941323345817728,6.491885143570538,3.9450686641697876,3.17103620474407,1.3920099875156053,6.554307116104869,4.581772784019975,5.605493133583021,2.0411985018726595,4.057428214731585,3.5705368289637955,5.992509363295881,0.9238451935081149,2.4968789013732833,2.340823970037453,2.8277153558052435,5.774032459425719,1.34207240948814,5.430711610486892,4.912609238451935,4.600499375780275, +4.263420724094882,5.742821473158552,2.7840199750312107,5.867665418227216,4.0886392009987516,4.18227215980025,1.1173533083645444,3.826466916354557,1.4981273408239701,3.370786516853933,4.0886392009987516,1.8164794007490637,0.8114856429463172,0.8489388264669163,2.1410736579275906,6.429463171036204,5.106117353308365,3.3770287141073654,2.453183520599251,2.091136079900125,4.475655430711611,5.861423220973783,3.4581772784019975,6.092384519350812,5.3870162297128585,1.529338327091136,1.2172284644194757,1.161048689138577,2.397003745318352,4.55056179775281,0.7428214731585518,1.5667915106117354,5.5305867665418225,4.444444444444445,1.766541822721598,3.0524344569288386,1.404494382022472,6.803995006242197,4.794007490636704,1.1235955056179776,1.1735330836454432,5.393258426966292,4.344569288389513,1.8913857677902621,1.3233458177278403,1.616729088639201,6.367041198501872,3.370786516853933,1.766541822721598,5.0374531835206,3.5518102372034956,3.857677902621723,4.656679151061174,6.554307116104869,2.272159800249688,4.051186017478152,4.475655430711611,5.6242197253433215,6.554307116104869,3.7827715355805243,2.7965043695380776,3.776529338327091,3.620474406991261,2.253433208489388,6.242197253433209,4.032459425717852,2.8838951310861427,6.30461922596754,2.303370786516854,3.8951310861423223,4.294631710362047,4.612983770287141,6.173533083645444,4.138576779026217,6.210986267166042,6.491885143570538,4.556803995006242,2.9837702871410734,1.4481897627965044,1.9725343320848938,6.491885143570538,3.9762796504369535,3.202247191011236,1.410736579275905,6.554307116104869,4.606741573033708,5.630461922596755,2.0724094881398254,4.082397003745319,3.6017478152309614,6.023720349563047,0.9488139825218477,2.5280898876404496,2.3657927590511862,2.8589263420724094,5.811485642946318,1.373283395755306,5.461922596754057,4.943820224719102,4.6254681647940075, +4.288389513108614,5.774032459425719,2.82147315855181,5.892634207240949,4.1136079900124844,4.200998751560549,1.136079900124844,3.857677902621723,1.529338327091136,3.3895131086142323,4.1136079900124844,1.8414481897627966,0.8302122347066168,0.8801498127340824,2.1660424469413235,6.491885143570538,5.1373283395755305,3.408239700374532,2.471910112359551,2.1098626716604243,4.500624219725343,5.892634207240949,3.4769038701622974,6.123595505617978,5.418227215980025,1.5605493133583022,1.2484394506866416,1.1860174781523096,2.428214731585518,4.575530586766542,0.7677902621722846,1.5980024968789013,5.555555555555556,4.4694132334581775,1.7915106117353308,3.077403245942572,1.4419475655430714,6.803995006242197,4.818976279650437,1.1423220973782773,1.198501872659176,5.418227215980025,4.369538077403246,1.9225967540574282,1.3545568039950062,1.6416978776529338,6.367041198501872,3.408239700374532,1.797752808988764,5.068664169787765,3.5830212234706615,3.888888888888889,4.681647940074906,6.554307116104869,2.2971285892634206,4.069912609238452,4.500624219725343,5.66167290886392,6.554307116104869,3.8077403245942576,2.8152309612983775,3.801498127340824,3.651685393258427,2.278401997503121,6.30461922596754,4.057428214731585,2.902621722846442,6.30461922596754,2.328339575530587,3.920099875156055,4.325842696629214,4.644194756554308,6.198501872659176,4.169787765293384,6.242197253433209,6.554307116104869,4.581772784019975,3.0212234706616727,1.4731585518102372,2.009987515605493,6.554307116104869,4.00749063670412,3.2397003745318353,1.435705368289638,6.616729088639201,4.631710362047441,5.655430711610487,2.1036204744069913,4.107365792759051,3.639200998751561,6.054931335830212,0.9737827715355806,2.5593008739076155,2.3907615480649187,2.8963795255930087,5.855181023720349,1.410736579275905,5.493133583021224,4.9687890137328345,4.644194756554308, +4.31960049937578,5.805243445692884,2.852684144818976,5.9238451935081144,4.144818976279651,4.225967540574282,1.161048689138577,3.882646691635456,1.5605493133583022,3.4144818976279647,4.132334581772784,1.8726591760299625,0.8551810237203495,0.9051186017478152,2.1910112359550564,6.491885143570538,5.162297128589263,3.439450686641698,2.4968789013732833,2.128589263420724,4.531835205992509,5.9238451935081144,3.5018726591760303,6.154806491885144,5.443196004993759,1.585518102372035,1.2796504369538078,1.2109862671660423,2.459425717852684,4.600499375780275,0.7927590511860175,1.6354556803995006,5.574282147315855,4.488139825218477,1.8164794007490637,3.0961298377028714,1.4731585518102372,6.866416978776529,4.843945068664169,1.161048689138577,1.223470661672909,5.443196004993759,4.400749063670412,1.9600499375780276,1.3857677902621723,1.6729088639200997,6.429463171036204,3.439450686641698,1.8352059925093633,5.099875156054932,3.607990012484395,3.926342072409488,4.712858926342073,6.616729088639201,2.322097378277154,4.0886392009987516,4.531835205992509,5.69912609238452,6.616729088639201,3.8389513108614235,2.8339575530586765,3.8202247191011236,3.682896379525593,2.2971285892634206,6.30461922596754,4.0761548064918856,2.9275905118601746,6.30461922596754,2.35330836454432,3.9450686641697876,4.357053682896379,4.675405742821473,6.217228464419476,4.194756554307116,6.30461922596754,6.554307116104869,4.600499375780275,3.0524344569288386,1.4981273408239701,2.0411985018726595,6.554307116104869,4.038701622971286,3.2709113607990012,1.4544319600499376,6.616729088639201,4.656679151061174,5.68039950062422,2.134831460674157,4.132334581772784,3.6704119850187267,6.079900124843945,0.9925093632958802,2.5905118601747814,2.4219725343320846,2.9275905118601746,5.892634207240949,1.4419475655430714,5.5181023720349565,4.9937578027465666,4.66916354556804, +4.3508114856429465,5.842696629213483,2.8901373283395753,5.948813982521848,4.169787765293384,4.244694132334582,1.1860174781523096,3.9076154806491883,1.585518102372035,3.439450686641698,4.151061173533084,1.9038701622971288,0.8801498127340824,0.9363295880149812,2.209737827715356,6.554307116104869,5.19350811485643,3.470661672908864,2.521847690387016,2.153558052434457,4.563046192259676,5.955056179775282,3.5268414481897628,6.186017478152309,5.474406991260924,1.616729088639201,1.3108614232209737,1.2359550561797754,2.4906367041198503,4.6254681647940075,0.8177278401997503,1.6666666666666667,5.599250936329588,4.51310861423221,1.8352059925093633,3.1210986267166043,1.5106117353308364,6.866416978776529,4.868913857677903,1.1860174781523096,1.2484394506866416,5.461922596754057,4.425717852684145,1.9912609238451935,1.410736579275905,1.6978776529338326,6.429463171036204,3.470661672908864,1.8664169787765295,5.131086142322098,3.639200998751561,3.957553058676654,4.737827715355805,6.616729088639201,2.340823970037453,4.1136079900124844,4.556803995006242,5.736579275905119,6.616729088639201,3.8639200998751564,2.852684144818976,3.8389513108614235,3.714107365792759,2.322097378277154,6.367041198501872,4.1011235955056184,2.9463171036204745,6.367041198501872,2.3782771535580522,3.970037453183521,4.382022471910113,4.70661672908864,6.242197253433209,4.225967540574282,6.30461922596754,6.554307116104869,4.619225967540574,3.089887640449438,1.523096129837703,2.0786516853932584,6.616729088639201,4.069912609238452,3.3021223470661676,1.4794007490636705,6.679151061173534,4.681647940074906,5.705368289637952,2.1660424469413235,4.157303370786517,3.701622971285893,6.111111111111111,1.017478152309613,2.6217228464419473,2.446941323345818,2.958801498127341,5.930087390761548,1.4794007490636705,5.549313358302123,5.0187265917602994,4.694132334581773, +4.382022471910113,5.8739076154806495,2.9213483146067416,5.980024968789014,4.194756554307116,4.269662921348314,1.2047440699126093,3.9325842696629216,1.616729088639201,3.4581772784019975,4.176029962546816,1.9350811485642945,0.898876404494382,0.9675405742821472,2.2347066167290888,6.554307116104869,5.224719101123595,3.5018726591760303,2.546816479400749,2.1722846441947565,4.588014981273409,5.992509363295881,3.5518102372034956,6.217228464419476,5.50561797752809,1.647940074906367,1.34207240948814,1.260923845193508,2.521847690387016,4.65043695380774,0.8426966292134832,1.6978776529338326,5.617977528089888,4.538077403245943,1.8601747815230962,3.1460674157303368,1.5418227215980027,6.928838951310862,4.893882646691636,1.2047440699126093,1.2734082397003745,5.48689138576779,4.450686641697877,2.0224719101123596,1.4419475655430714,1.7228464419475658,6.491885143570538,3.508114856429463,1.8976279650436954,5.15605493133583,3.6641697877652937,3.9950062421972534,4.762796504369538,6.679151061173534,2.3657927590511862,4.132334581772784,4.588014981273409,5.774032459425719,6.616729088639201,3.888888888888889,2.871410736579276,3.8639200998751564,3.745318352059925,2.3470661672908864,6.367041198501872,4.1260923845193505,2.9712858926342074,6.367041198501872,2.4032459425717856,3.9950062421972534,4.413233458177278,4.7440699126092385,6.242197253433209,4.250936329588015,6.367041198501872,6.616729088639201,4.644194756554308,3.1210986267166043,1.5480649188514357,2.1161048689138577,6.679151061173534,4.1011235955056184,3.339575530586767,1.4981273408239701,6.679151061173534,4.70661672908864,5.730337078651686,2.1972534332084894,4.18227215980025,3.732833957553059,6.142322097378277,1.042446941323346,2.6529338327091136,2.471910112359551,2.9962546816479403,5.97378277153558,1.5106117353308364,5.580524344569288,5.043695380774032,4.719101123595506, +4.413233458177278,5.905118601747815,2.9525593008739075,6.004993757802747,4.219725343320849,4.294631710362047,1.229712858926342,3.957553058676654,1.647940074906367,3.4831460674157304,4.194756554307116,1.9600499375780276,0.9238451935081149,0.9987515605493134,2.259675405742821,6.616729088639201,5.2559300873907615,3.5268414481897628,2.571785268414482,2.1972534332084894,4.619225967540574,6.023720349563047,3.576779026217228,6.242197253433209,5.5305867665418225,1.6729088639200997,1.373283395755306,1.285892634207241,2.5530586766541825,4.675405742821473,0.867665418227216,1.735330836454432,5.64294631710362,4.556803995006242,1.8789013732833957,3.17103620474407,1.5792759051186018,6.928838951310862,4.918851435705368,1.223470661672909,1.2983770287141074,5.50561797752809,4.475655430711611,2.0536828963795255,1.4731585518102372,1.7540574282147314,6.491885143570538,3.5393258426966296,1.9350811485642945,5.187265917602996,3.6953807740324596,4.02621722846442,4.787765293383271,6.679151061173534,2.3907615480649187,4.151061173533084,4.612983770287141,5.811485642946318,6.679151061173534,3.920099875156055,2.8901373283395753,3.882646691635456,3.7827715355805243,2.3657927590511862,6.429463171036204,4.144818976279651,2.990012484394507,6.429463171036204,2.428214731585518,4.019975031210986,4.444444444444445,4.775280898876405,6.30461922596754,4.275905118601748,6.367041198501872,6.616729088639201,4.662921348314606,3.1585518102372037,1.5730337078651684,2.1473158551810236,6.679151061173534,4.132334581772784,3.370786516853933,1.523096129837703,6.741573033707866,4.7315855181023725,5.7553058676654185,2.2284644194756553,4.207240948813983,3.764044943820225,6.167290886392011,1.0674157303370786,2.68414481897628,2.4968789013732833,3.027465667915106,6.01123595505618,1.5418227215980027,5.611735330836455,5.068664169787765,4.737827715355805, +4.444444444444445,5.942571785268415,2.990012484394507,6.036204744069912,4.244694132334582,4.313358302122348,1.2546816479400749,3.9887640449438204,1.6791510611735332,3.508114856429463,4.219725343320849,1.9912609238451935,0.9488139825218477,1.0299625468164793,2.2846441947565546,6.616729088639201,5.287141073657928,3.5580524344569286,2.596754057428215,2.215980024968789,4.65043695380774,6.054931335830212,3.6017478152309614,6.30461922596754,5.561797752808988,1.704119850187266,1.3982521847690388,1.3108614232209737,2.5842696629213484,4.700374531835206,0.8926342072409489,1.766541822721598,5.66167290886392,4.581772784019975,1.9038701622971288,3.1897627965043696,1.6104868913857677,6.991260923845194,4.937578027465668,1.2484394506866416,1.3233458177278403,5.5305867665418225,4.506866416978776,2.091136079900125,1.4981273408239701,1.7790262172284643,6.554307116104869,3.5705368289637955,1.9662921348314608,5.218476903870163,3.7265917602996255,4.057428214731585,4.812734082397004,6.741573033707866,2.4157303370786516,4.176029962546816,4.644194756554308,5.848938826466916,6.679151061173534,3.9450686641697876,2.908863920099875,3.9013732833957557,3.81398252184769,2.3907615480649187,6.429463171036204,4.169787765293384,3.0149812734082393,6.429463171036204,2.453183520599251,4.044943820224719,4.475655430711611,4.806491885143571,6.30461922596754,4.307116104868914,6.429463171036204,6.616729088639201,4.681647940074906,3.1897627965043696,1.5980024968789013,2.184769038701623,6.741573033707866,4.16354556803995,3.4019975031210987,1.5418227215980027,6.741573033707866,4.750312109862672,5.7802746566791505,2.259675405742821,4.2322097378277155,3.801498127340824,6.198501872659176,1.0923845193508115,2.715355805243446,2.5280898876404496,3.058676654182272,6.048689138576779,1.5792759051186018,5.64294631710362,5.093632958801498,4.762796504369538, +4.475655430711611,5.97378277153558,3.0212234706616727,6.061173533083646,4.269662921348314,4.33832709113608,1.2734082397003745,4.013732833957553,1.704119850187266,3.5268414481897628,4.238451935081149,2.0224719101123596,0.9675405742821472,1.0549313358302121,2.309612983770287,6.616729088639201,5.318352059925093,3.589263420724095,2.6217228464419473,2.2409488139825218,4.675405742821473,6.086142322097379,3.6267166042446943,6.30461922596754,5.593008739076155,1.735330836454432,1.4294631710362047,1.3358302122347065,2.6154806491885143,4.725343320848939,0.9176029962546817,1.8039950062421974,5.686641697877653,4.600499375780275,1.9288389513108615,3.214731585518102,1.647940074906367,6.991260923845194,4.962546816479401,1.2671660424469413,1.34207240948814,5.549313358302123,4.531835205992509,2.122347066167291,1.529338327091136,1.8039950062421974,6.554307116104869,3.607990012484395,1.9975031210986267,5.249687890137328,3.7515605493133584,4.094881398252185,4.843945068664169,6.803995006242197,2.4406991260923845,4.194756554307116,4.675405742821473,5.8863920099875156,6.741573033707866,3.970037453183521,2.9275905118601746,3.926342072409488,3.8451935081148565,2.4094881398252186,6.491885143570538,4.188514357053683,3.033707865168539,6.429463171036204,2.478152309612984,4.069912609238452,4.506866416978776,4.837702871410737,6.367041198501872,4.332084893882647,6.429463171036204,6.679151061173534,4.70661672908864,3.227215980024969,1.6229712858926344,2.215980024968789,6.803995006242197,4.194756554307116,3.439450686641698,1.5667915106117354,6.803995006242197,4.775280898876405,5.805243445692884,2.2908863920099876,4.257178526841448,3.83270911360799,6.229712858926342,1.1173533083645444,2.746566791510612,2.5530586766541825,3.089887640449438,6.086142322097379,1.6104868913857677,5.674157303370786,5.118601747815231,4.787765293383271, +4.506866416978776,6.004993757802747,3.0524344569288386,6.092384519350812,4.294631710362047,4.3632958801498125,1.2983770287141074,4.038701622971286,1.735330836454432,3.5518102372034956,4.263420724094882,2.0474406991260925,0.9925093632958802,1.0861423220973783,2.33458177278402,6.679151061173534,5.34956304619226,3.620474406991261,2.6466916354556806,2.259675405742821,4.70661672908864,6.117353308364544,3.651685393258427,6.367041198501872,5.617977528089888,1.7602996254681649,1.4606741573033708,1.3607990012484397,2.6466916354556806,4.750312109862672,0.9425717852684146,1.8352059925093633,5.705368289637952,4.6254681647940075,1.9475655430711611,3.2397003745318353,1.6791510611735332,7.0536828963795255,4.987515605493134,1.285892634207241,1.3670411985018727,5.574282147315855,4.556803995006242,2.153558052434457,1.5605493133583022,1.8352059925093633,6.616729088639201,3.639200998751561,2.034956304619226,5.274656679151062,3.7827715355805243,4.1260923845193505,4.868913857677903,6.803995006242197,2.4656679151061174,4.213483146067416,4.700374531835206,5.9238451935081144,6.741573033707866,3.9950062421972534,2.9463171036204745,3.9450686641697876,3.8764044943820224,2.4344569288389515,6.491885143570538,4.213483146067416,3.058676654182272,6.491885143570538,2.5031210986267167,4.094881398252185,4.538077403245943,4.868913857677903,6.367041198501872,4.357053682896379,6.491885143570538,6.679151061173534,4.725343320848939,3.258426966292135,1.647940074906367,2.253433208489388,6.803995006242197,4.225967540574282,3.470661672908864,1.585518102372035,6.803995006242197,4.800249687890138,5.830212234706617,2.322097378277154,4.282147315855181,3.8639200998751564,6.242197253433209,1.136079900124844,2.777777777777778,2.578027465667915,3.1273408239700373,6.129837702871411,1.647940074906367,5.69912609238452,5.149812734082397,4.812734082397004, +4.538077403245943,6.0424469413233455,3.089887640449438,6.117353308364544,4.31960049937578,4.382022471910113,1.3233458177278403,4.063670411985019,1.766541822721598,3.576779026217228,4.282147315855181,2.0786516853932584,1.017478152309613,1.1173533083645444,2.359550561797753,6.679151061173534,5.380774032459426,3.651685393258427,2.671660424469413,2.2846441947565546,4.737827715355805,6.1485642946317105,3.6766541822721597,6.367041198501872,5.6491885143570535,1.7915106117353308,1.4918851435705367,1.3857677902621723,2.68414481897628,4.775280898876405,0.9675405742821472,1.8664169787765295,5.724094881398252,4.65043695380774,1.9725343320848938,3.2646691635455682,1.7166042446941323,7.0536828963795255,5.012484394506866,1.3046192259675407,1.3920099875156053,5.593008739076155,4.588014981273409,2.184769038701623,1.591760299625468,1.8601747815230962,6.616729088639201,3.6766541822721597,2.066167290886392,5.305867665418227,3.8077403245942576,4.16354556803995,4.893882646691636,6.866416978776529,2.4843945068664173,4.238451935081149,4.7315855181023725,5.961298377028713,6.741573033707866,4.02621722846442,2.9712858926342074,3.9637952559300875,3.9076154806491883,2.453183520599251,6.554307116104869,4.238451935081149,3.077403245942572,6.491885143570538,2.5280898876404496,4.1136079900124844,4.569288389513109,4.906367041198502,6.367041198501872,4.388264669163545,6.491885143570538,6.679151061173534,4.7440699126092385,3.2896379525593007,1.6729088639200997,2.2846441947565546,6.866416978776529,4.257178526841448,3.5018726591760303,1.6042446941323347,6.866416978776529,4.825218476903871,5.855181023720349,2.35330836454432,4.307116104868914,3.8951310861423223,6.30461922596754,1.161048689138577,2.808988764044944,2.6092384519350813,3.1585518102372037,6.167290886392011,1.6791510611735332,5.730337078651686,5.174781523096129,4.831460674157303, +4.563046192259676,6.073657927590512,3.1210986267166043,6.1485642946317105,4.344569288389513,4.406991260923846,1.348314606741573,4.0886392009987516,1.797752808988764,3.595505617977528,4.300873907615481,2.1098626716604243,1.0362047440699127,1.1485642946317103,2.3845193508114857,6.741573033707866,5.411985018726591,3.682896379525593,2.696629213483146,2.303370786516854,4.762796504369538,6.179775280898876,3.6953807740324596,6.429463171036204,5.68039950062422,1.8227215980024971,1.523096129837703,1.410736579275905,2.715355805243446,4.800249687890138,0.9925093632958802,1.9038701622971288,5.749063670411985,4.66916354556804,1.9975031210986267,3.2833957553058677,1.7478152309612984,7.116104868913857,5.0374531835206,1.3295880149812733,1.4169787765293382,5.617977528089888,4.612983770287141,2.2222222222222223,1.616729088639201,1.8851435705368291,6.679151061173534,3.7078651685393256,2.1036204744069913,5.337078651685393,3.8389513108614235,4.194756554307116,4.918851435705368,6.866416978776529,2.5093632958801497,4.257178526841448,4.7565543071161045,5.998751560549313,6.803995006242197,4.051186017478152,2.990012484394507,3.9887640449438204,3.938826466916354,2.478152309612984,6.554307116104869,4.257178526841448,3.102372034956305,6.491885143570538,2.546816479400749,4.138576779026217,4.600499375780275,4.937578027465668,6.429463171036204,4.413233458177278,6.554307116104869,6.741573033707866,4.769038701622971,3.3270911360799,1.6978776529338326,2.322097378277154,6.866416978776529,4.288389513108614,3.5393258426966296,1.6292134831460674,6.866416978776529,4.850187265917603,5.880149812734083,2.3845193508114857,4.332084893882647,3.926342072409488,6.30461922596754,1.1860174781523096,2.84019975031211,2.634207240948814,3.1897627965043696,6.20474406991261,1.7166042446941323,5.761548064918852,5.199750312109863,4.856429463171036, +4.594257178526841,6.104868913857677,3.15230961298377,6.173533083645444,4.369538077403246,4.431960049937578,1.3670411985018727,4.119850187265917,1.8227215980024971,3.620474406991261,4.325842696629214,2.1410736579275906,1.0611735330836456,1.1797752808988764,2.4094881398252186,6.741573033707866,5.443196004993759,3.714107365792759,2.7215980024968793,2.328339575530587,4.794007490636704,6.210986267166042,3.7203495630461925,6.429463171036204,5.705368289637952,1.8476903870162298,1.554307116104869,1.435705368289638,2.746566791510612,4.825218476903871,1.0112359550561798,1.9350811485642945,5.767790262172285,4.694132334581773,2.016229712858926,3.3083645443196006,1.7852684144818978,7.116104868913857,5.062421972534332,1.348314606741573,1.4419475655430714,5.636704119850187,4.637952559300874,2.253433208489388,1.647940074906367,1.916354556803995,6.679151061173534,3.7390761548064915,2.134831460674157,5.36828963795256,3.8639200998751564,4.2322097378277155,4.943820224719102,6.928838951310862,2.5343320848938826,4.282147315855181,4.787765293383271,6.036204744069912,6.803995006242197,4.0761548064918856,3.0087390761548067,4.00749063670412,3.970037453183521,2.5031210986267167,6.616729088639201,4.282147315855181,3.1210986267166043,6.554307116104869,2.571785268414482,4.16354556803995,4.631710362047441,4.9687890137328345,6.429463171036204,4.438202247191011,6.554307116104869,6.741573033707866,4.787765293383271,3.3583021223470664,1.7228464419475658,2.359550561797753,6.928838951310862,4.31960049937578,3.5705368289637955,1.647940074906367,6.928838951310862,4.875156054931336,5.905118601747815,2.4157303370786516,4.357053682896379,3.9637952559300875,6.367041198501872,1.2109862671660423,2.871410736579276,2.6591760299625467,3.227215980024969,6.242197253433209,1.7478152309612984,5.792759051186017,5.224719101123595,4.881398252184769, +4.6254681647940075,6.142322097378277,3.1897627965043696,6.20474406991261,4.394506866416979,4.450686641697877,1.3920099875156053,4.144818976279651,1.8539325842696628,3.6454431960049942,4.344569288389513,2.1660424469413235,1.079900124843945,1.2047440699126093,2.4344569288389515,6.803995006242197,5.474406991260924,3.745318352059925,2.746566791510612,2.3470661672908864,4.825218476903871,6.242197253433209,3.745318352059925,6.491885143570538,5.736579275905119,1.8789013732833957,1.5792759051186018,1.4606741573033708,2.777777777777778,4.850187265917603,1.0362047440699127,1.9662921348314608,5.792759051186017,4.712858926342073,2.0411985018726595,3.3333333333333335,1.8164794007490637,7.17852684144819,5.081148564294631,1.3670411985018727,1.466916354556804,5.66167290886392,4.662921348314606,2.2846441947565546,1.6791510611735332,1.941323345817728,6.741573033707866,3.776529338327091,2.1660424469413235,5.393258426966292,3.8951310861423223,4.263420724094882,4.9687890137328345,6.928838951310862,2.5593008739076155,4.300873907615481,4.812734082397004,6.073657927590512,6.866416978776529,4.107365792759051,3.027465667915106,4.02621722846442,4.001248439450687,2.521847690387016,6.616729088639201,4.300873907615481,3.1460674157303368,6.554307116104869,2.596754057428215,4.188514357053683,4.662921348314606,5.0,6.429463171036204,4.4694132334581775,6.616729088639201,6.741573033707866,4.812734082397004,3.3957553058676653,1.7478152309612984,2.3907615480649187,6.991260923845194,4.3508114856429465,3.6017478152309614,1.6729088639200997,6.928838951310862,4.893882646691636,5.930087390761548,2.446941323345818,4.382022471910113,3.9950062421972534,6.367041198501872,1.2359550561797754,2.902621722846442,2.68414481897628,3.258426966292135,6.30461922596754,1.7852684144818978,5.823970037453184,5.249687890137328,4.906367041198502, +4.656679151061174,6.173533083645444,3.2209737827715355,6.229712858926342,4.419475655430712,4.475655430711611,1.4169787765293382,4.169787765293384,1.8851435705368291,3.6641697877652937,4.369538077403246,2.1972534332084894,1.104868913857678,1.2359550561797754,2.459425717852684,6.803995006242197,5.50561797752809,3.776529338327091,2.7715355805243447,2.3720349563046192,4.850187265917603,6.30461922596754,3.7702871410736583,6.491885143570538,5.767790262172285,1.9101123595505618,1.6104868913857677,1.4856429463171037,2.808988764044944,4.875156054931336,1.0611735330836456,2.00374531835206,5.811485642946318,4.737827715355805,2.0599250936329585,3.3583021223470664,1.8539325842696628,7.17852684144819,5.106117353308365,1.3920099875156053,1.4856429463171037,5.686641697877653,4.694132334581773,2.3158551810237205,1.704119850187266,1.9662921348314608,6.741573033707866,3.8077403245942576,2.203495630461923,5.424469413233458,3.926342072409488,4.294631710362047,5.0,6.991260923845194,2.5842696629213484,4.31960049937578,4.843945068664169,6.111111111111111,6.866416978776529,4.132334581772784,3.046192259675406,4.051186017478152,4.032459425717852,2.546816479400749,6.679151061173534,4.325842696629214,3.1647940074906367,6.554307116104869,2.6217228464419473,4.213483146067416,4.694132334581773,5.0374531835206,6.491885143570538,4.49438202247191,6.616729088639201,6.803995006242197,4.831460674157303,3.4269662921348316,1.772784019975031,2.428214731585518,6.991260923845194,4.382022471910113,3.639200998751561,1.6916354556803994,6.991260923845194,4.918851435705368,5.955056179775282,2.478152309612984,4.406991260923846,4.02621722846442,6.429463171036204,1.260923845193508,2.933832709113608,2.715355805243446,3.2896379525593007,6.30461922596754,1.8164794007490637,5.855181023720349,5.274656679151062,4.925093632958801, +4.687890137328339,6.20474406991261,3.258426966292135,6.242197253433209,4.444444444444445,4.500624219725343,1.435705368289638,4.194756554307116,1.916354556803995,3.689138576779026,4.388264669163545,2.2284644194756553,1.1298377028714106,1.2671660424469413,2.4843945068664173,6.866416978776529,5.536828963795256,3.8077403245942576,2.7965043695380776,2.3907615480649187,4.881398252184769,6.30461922596754,3.7952559300873907,6.554307116104869,5.799001248439451,1.9350811485642945,1.6416978776529338,1.5106117353308364,2.84019975031211,4.900124843945068,1.0861423220973783,2.034956304619226,5.836454431960051,4.7565543071161045,2.084893882646692,3.3770287141073654,1.8851435705368291,7.240948813982522,5.131086142322098,1.410736579275905,1.5106117353308364,5.705368289637952,4.719101123595506,2.35330836454432,1.735330836454432,1.9975031210986267,6.803995006242197,3.8389513108614235,2.2347066167290888,5.455680399500624,3.951310861423221,4.332084893882647,5.024968789013733,7.0536828963795255,2.602996254681648,4.344569288389513,4.868913857677903,6.1485642946317105,6.866416978776529,4.157303370786517,3.0649188514357055,4.069912609238452,4.063670411985019,2.565543071161049,6.679151061173534,4.3508114856429465,3.1897627965043696,6.616729088639201,2.6466916354556806,4.238451935081149,4.725343320848939,5.068664169787765,6.491885143570538,4.519350811485642,6.679151061173534,6.803995006242197,4.850187265917603,3.464419475655431,1.797752808988764,2.459425717852684,7.0536828963795255,4.413233458177278,3.6704119850187267,1.7166042446941323,6.991260923845194,4.943820224719102,5.980024968789014,2.5093632958801497,4.431960049937578,4.057428214731585,6.429463171036204,1.285892634207241,2.965043695380774,2.740324594257179,3.3270911360799,6.367041198501872,1.8476903870162298,5.880149812734083,5.299625468164794,4.950062421972534, +4.719101123595506,6.242197253433209,3.2896379525593007,6.30461922596754,4.4694132334581775,4.519350811485642,1.4606741573033708,4.219725343320849,1.941323345817728,3.714107365792759,4.413233458177278,2.259675405742821,1.1485642946317103,1.2983770287141074,2.5093632958801497,6.866416978776529,5.568039950062421,3.8389513108614235,2.82147315855181,2.4157303370786516,4.912609238451935,6.367041198501872,3.8202247191011236,6.554307116104869,5.823970037453184,1.9662921348314608,1.6729088639200997,1.5355805243445693,2.871410736579276,4.925093632958801,1.1111111111111112,2.0724094881398254,5.855181023720349,4.781523096129837,2.1098626716604243,3.4019975031210987,1.9225967540574282,7.240948813982522,5.15605493133583,1.4294631710362047,1.5355805243445693,5.730337078651686,4.7440699126092385,2.3845193508114857,1.766541822721598,2.0224719101123596,6.803995006242197,3.8764044943820224,2.272159800249688,5.48689138576779,3.982521847690387,4.3632958801498125,5.049937578027466,7.0536828963795255,2.6279650436953808,4.3632958801498125,4.900124843945068,6.186017478152309,6.928838951310862,4.188514357053683,3.0836454431960054,4.0886392009987516,4.094881398252185,2.5905118601747814,6.741573033707866,4.369538077403246,3.2084893882646695,6.616729088639201,2.671660424469413,4.263420724094882,4.750312109862672,5.099875156054932,6.491885143570538,4.55056179775281,6.679151061173534,6.803995006242197,4.875156054931336,3.495630461922597,1.8227215980024971,2.4968789013732833,7.116104868913857,4.444444444444445,3.7078651685393256,1.735330836454432,7.0536828963795255,4.9687890137328345,6.01123595505618,2.5405742821473156,4.456928838951311,4.0886392009987516,6.491885143570538,1.3046192259675407,2.9962546816479403,2.7652933832709112,3.3583021223470664,6.429463171036204,1.8851435705368291,5.9113607990012484,5.324594257178527,4.975031210986267, +4.750312109862672,6.30461922596754,3.320848938826467,6.30461922596754,4.49438202247191,4.544319600499376,1.4856429463171037,4.250936329588015,1.9725343320848938,3.732833957553059,4.431960049937578,2.2846441947565546,1.1735330836454432,1.3295880149812733,2.5343320848938826,6.928838951310862,5.599250936329588,3.870162297128589,2.84019975031211,2.4344569288389515,4.937578027465668,6.367041198501872,3.8451935081148565,6.616729088639201,5.855181023720349,1.9975031210986267,1.704119850187266,1.5605493133583022,2.902621722846442,4.950062421972534,1.136079900124844,2.1036204744069913,5.880149812734083,4.806491885143571,2.128589263420724,3.4269662921348316,1.9600499375780276,7.303370786516854,5.181023720349563,1.4544319600499376,1.5605493133583022,5.749063670411985,4.775280898876405,2.4157303370786516,1.797752808988764,2.0474406991260925,6.866416978776529,3.9076154806491883,2.303370786516854,5.511860174781523,4.00749063670412,4.400749063670412,5.074906367041199,7.116104868913857,2.6529338327091136,4.382022471910113,4.931335830212235,6.223470661672909,6.928838951310862,4.213483146067416,3.102372034956305,4.1136079900124844,4.132334581772784,2.6092384519350813,6.741573033707866,4.394506866416979,3.227215980024969,6.616729088639201,2.696629213483146,4.288389513108614,4.781523096129837,5.131086142322098,6.554307116104869,4.575530586766542,6.741573033707866,6.866416978776529,4.893882646691636,3.533083645443196,1.8476903870162298,2.5343320848938826,7.116104868913857,4.475655430711611,3.7390761548064915,1.7602996254681649,7.0536828963795255,4.9937578027465666,6.036204744069912,2.571785268414482,4.4818976279650435,4.119850187265917,6.491885143570538,1.3295880149812733,3.027465667915106,2.790262172284644,3.3895131086142323,6.429463171036204,1.916354556803995,5.942571785268415,5.355805243445693,4.9937578027465666, +4.781523096129837,6.30461922596754,3.3583021223470664,6.367041198501872,4.519350811485642,4.563046192259676,1.5043695380774034,4.275905118601748,2.00374531835206,3.7578027465667914,4.450686641697877,2.3158551810237205,1.198501872659176,1.3545568039950062,2.5593008739076155,6.928838951310862,5.630461922596755,3.9013732833957557,2.865168539325843,2.453183520599251,4.9687890137328345,6.429463171036204,3.870162297128589,6.616729088639201,5.8863920099875156,2.0287141073657926,1.7290886392009988,1.585518102372035,2.933832709113608,4.975031210986267,1.161048689138577,2.134831460674157,5.8988764044943816,4.825218476903871,2.153558052434457,3.4456928838951315,1.9912609238451935,7.303370786516854,5.205992509363296,1.4731585518102372,1.585518102372035,5.774032459425719,4.800249687890138,2.446941323345818,1.8227215980024971,2.0786516853932584,6.866416978776529,3.938826466916354,2.33458177278402,5.543071161048689,4.038701622971286,4.431960049937578,5.099875156054932,7.116104868913857,2.6779026217228465,4.406991260923846,4.956304619225968,6.242197253433209,6.991260923845194,4.238451935081149,3.1273408239700373,4.132334581772784,4.16354556803995,2.634207240948814,6.803995006242197,4.413233458177278,3.2521847690387014,6.679151061173534,2.7215980024968793,4.313358302122348,4.812734082397004,5.168539325842697,6.554307116104869,4.606741573033708,6.741573033707866,6.866416978776529,4.912609238451935,3.564294631710362,1.8726591760299625,2.565543071161049,7.17852684144819,4.500624219725343,3.7702871410736583,1.7790262172284643,7.116104868913857,5.0187265917602994,6.061173533083646,2.602996254681648,4.506866416978776,4.157303370786517,6.491885143570538,1.3545568039950062,3.058676654182272,2.82147315855181,3.420724094881398,6.491885143570538,1.9538077403245941,5.97378277153558,5.380774032459426,5.0187265917602994, +4.806491885143571,6.367041198501872,3.3895131086142323,6.367041198501872,4.544319600499376,4.588014981273409,1.529338327091136,4.300873907615481,2.034956304619226,3.7827715355805243,4.475655430711611,2.3470661672908864,1.2172284644194757,1.3857677902621723,2.5842696629213484,6.991260923845194,5.66167290886392,3.9325842696629216,2.8901373283395753,2.478152309612984,5.0,6.429463171036204,3.8951310861423223,6.679151061173534,5.9113607990012484,2.0536828963795255,1.7602996254681649,1.6104868913857677,2.965043695380774,5.0,1.1860174781523096,2.1722846441947565,5.917602996254682,4.850187265917603,2.1722846441947565,3.470661672908864,2.0287141073657926,7.365792759051186,5.230961298377029,1.4918851435705367,1.6104868913857677,5.792759051186017,4.825218476903871,2.4843945068664173,1.8539325842696628,2.1036204744069913,6.928838951310862,3.9762796504369535,2.3720349563046192,5.574282147315855,4.063670411985019,4.4694132334581775,5.131086142322098,7.17852684144819,2.702871410736579,4.425717852684145,4.987515605493134,6.30461922596754,6.991260923845194,4.269662921348314,3.1460674157303368,4.151061173533084,4.194756554307116,2.6591760299625467,6.803995006242197,4.438202247191011,3.2709113607990012,6.679151061173534,2.746566791510612,4.33832709113608,4.843945068664169,5.199750312109863,6.616729088639201,4.631710362047441,6.803995006242197,6.866416978776529,4.937578027465668,3.6017478152309614,1.8976279650436954,2.602996254681648,7.17852684144819,4.531835205992509,3.8077403245942576,1.8039950062421974,7.116104868913857,5.043695380774032,6.086142322097379,2.634207240948814,4.531835205992509,4.188514357053683,6.554307116104869,1.3795255930087391,3.0836454431960054,2.8464419475655434,3.4581772784019975,6.491885143570538,1.9850187265917605,6.004993757802747,5.405742821473158,5.043695380774032, +4.837702871410737,6.367041198501872,3.420724094881398,6.367041198501872,4.569288389513109,4.612983770287141,1.554307116104869,4.325842696629214,2.0599250936329585,3.801498127340824,4.49438202247191,2.3720349563046192,1.2421972534332086,1.4169787765293382,2.6092384519350813,6.991260923845194,5.692883895131087,3.9637952559300875,2.9151061173533086,2.4968789013732833,5.024968789013733,6.491885143570538,3.9138576779026217,6.679151061173534,5.942571785268415,2.084893882646692,1.7915106117353308,1.6354556803995006,2.9962546816479403,5.024968789013733,1.2109862671660423,2.203495630461923,5.942571785268415,4.868913857677903,2.1972534332084894,3.495630461922597,2.0599250936329585,7.365792759051186,5.249687890137328,1.5106117353308364,1.6354556803995006,5.81772784019975,4.850187265917603,2.515605493133583,1.8851435705368291,2.128589263420724,6.928838951310862,4.00749063670412,2.4032459425717856,5.605493133583021,4.094881398252185,4.500624219725343,5.15605493133583,7.17852684144819,2.727840199750312,4.444444444444445,5.012484394506866,6.30461922596754,6.991260923845194,4.294631710362047,3.1647940074906367,4.176029962546816,4.225967540574282,2.6779026217228465,6.866416978776529,4.463171036204744,3.295880149812734,6.679151061173534,2.7715355805243447,4.3632958801498125,4.875156054931336,5.230961298377029,6.616729088639201,4.656679151061174,6.803995006242197,6.928838951310862,4.956304619225968,3.6329588014981273,1.9225967540574282,2.634207240948814,7.240948813982522,4.563046192259676,3.8389513108614235,1.8227215980024971,7.17852684144819,5.062421972534332,6.111111111111111,2.66541822721598,4.556803995006242,4.219725343320849,6.554307116104869,1.404494382022472,3.114856429463171,2.871410736579276,3.4893882646691634,6.554307116104869,2.0224719101123596,6.036204744069912,5.430711610486892,5.068664169787765, +4.868913857677903,6.429463171036204,3.4581772784019975,6.429463171036204,4.594257178526841,4.631710362047441,1.5730337078651684,4.357053682896379,2.091136079900125,3.826466916354557,4.519350811485642,2.4032459425717856,1.2671660424469413,1.4481897627965044,2.634207240948814,7.0536828963795255,5.724094881398252,3.9950062421972534,2.9400749063670415,2.521847690387016,5.056179775280899,6.491885143570538,3.938826466916354,6.741573033707866,5.97378277153558,2.1161048689138577,1.8227215980024971,1.6604244694132335,3.033707865168539,5.049937578027466,1.2359550561797754,2.2347066167290888,5.961298377028713,4.893882646691636,2.2222222222222223,3.5205992509363297,2.097378277153558,7.428214731585518,5.274656679151062,1.5355805243445693,1.6541822721598003,5.836454431960051,4.881398252184769,2.546816479400749,1.9101123595505618,2.15980024968789,6.991260923845194,4.044943820224719,2.4344569288389515,5.630461922596755,4.1260923845193505,4.531835205992509,5.181023720349563,7.240948813982522,2.746566791510612,4.4694132334581775,5.043695380774032,6.367041198501872,7.0536828963795255,4.31960049937578,3.183520599250936,4.194756554307116,4.257178526841448,2.702871410736579,6.866416978776529,4.4818976279650435,3.3146067415730336,6.741573033707866,2.790262172284644,4.388264669163545,4.906367041198502,5.262172284644195,6.616729088639201,4.687890137328339,6.803995006242197,6.928838951310862,4.975031210986267,3.6704119850187267,1.941323345817728,2.671660424469413,7.303370786516854,4.594257178526841,3.870162297128589,1.8476903870162298,7.17852684144819,5.087390761548065,6.1360799001248445,2.696629213483146,4.588014981273409,4.250936329588015,6.616729088639201,1.4294631710362047,3.1460674157303368,2.8963795255930087,3.5205992509363297,6.616729088639201,2.0536828963795255,6.061173533083646,5.455680399500624,5.087390761548065, +4.900124843945068,6.429463171036204,3.4893882646691634,6.429463171036204,4.619225967540574,4.656679151061174,1.5980024968789013,4.382022471910113,2.122347066167291,3.8451935081148565,4.538077403245943,2.4344569288389515,1.285892634207241,1.4731585518102372,2.6529338327091136,7.0536828963795255,5.7553058676654185,4.02621722846442,2.965043695380774,2.5405742821473156,5.087390761548065,6.554307116104869,3.9637952559300875,6.741573033707866,5.998751560549313,2.1410736579275906,1.8539325842696628,1.6853932584269664,3.0649188514357055,5.074906367041199,1.260923845193508,2.272159800249688,5.986267166042447,4.912609238451935,2.2409488139825218,3.5393258426966296,2.128589263420724,7.428214731585518,5.299625468164794,1.554307116104869,1.6791510611735332,5.861423220973783,4.906367041198502,2.578027465667915,1.941323345817728,2.184769038701623,6.991260923845194,4.0761548064918856,2.471910112359551,5.66167290886392,4.151061173533084,4.569288389513109,5.205992509363296,7.303370786516854,2.7715355805243447,4.488139825218477,5.068664169787765,6.429463171036204,7.0536828963795255,4.3508114856429465,3.202247191011236,4.213483146067416,4.288389513108614,2.7215980024968793,6.928838951310862,4.506866416978776,3.339575530586767,6.741573033707866,2.8152309612983775,4.413233458177278,4.937578027465668,5.299625468164794,6.679151061173534,4.712858926342073,6.866416978776529,6.928838951310862,5.0,3.701622971285893,1.9662921348314608,2.702871410736579,7.303370786516854,4.6254681647940075,3.9076154806491883,1.8664169787765295,7.240948813982522,5.1123595505617985,6.161048689138577,2.727840199750312,4.612983770287141,4.282147315855181,6.616729088639201,1.4481897627965044,3.1772784019975036,2.9275905118601746,3.5580524344569286,6.616729088639201,2.091136079900125,6.092384519350812,5.480649188514358,5.1123595505617985, +4.931335830212235,6.491885143570538,3.5205992509363297,6.491885143570538,4.644194756554308,4.681647940074906,1.6229712858926344,4.406991260923846,2.153558052434457,3.870162297128589,4.563046192259676,2.4656679151061174,1.3108614232209737,1.5043695380774034,2.6779026217228465,7.116104868913857,5.786516853932584,4.057428214731585,2.990012484394507,2.565543071161049,5.1123595505617985,6.554307116104869,3.9887640449438204,6.803995006242197,6.029962546816479,2.1722846441947565,1.8851435705368291,1.710362047440699,3.0961298377028714,5.099875156054932,1.285892634207241,2.303370786516854,6.004993757802747,4.937578027465668,2.2659176029962547,3.564294631710362,2.1660424469413235,7.49063670411985,5.324594257178527,1.5730337078651684,1.704119850187266,5.8863920099875156,4.931335830212235,2.6154806491885143,1.9725343320848938,2.209737827715356,7.0536828963795255,4.107365792759051,2.5031210986267167,5.692883895131087,4.18227215980025,4.600499375780275,5.230961298377029,7.303370786516854,2.7965043695380776,4.506866416978776,5.099875156054932,6.429463171036204,7.116104868913857,4.375780274656679,3.2209737827715355,4.238451935081149,4.31960049937578,2.746566791510612,6.928838951310862,4.525593008739076,3.3583021223470664,6.741573033707866,2.84019975031211,4.438202247191011,4.9687890137328345,5.33083645443196,6.679151061173534,4.737827715355805,6.866416978776529,6.991260923845194,5.0187265917602994,3.732833957553059,1.9912609238451935,2.740324594257179,7.365792759051186,4.656679151061174,3.938826466916354,1.8913857677902621,7.240948813982522,5.1373283395755305,6.186017478152309,2.7590511860174782,4.637952559300874,4.31960049937578,6.679151061173534,1.4731585518102372,3.2084893882646695,2.9525593008739075,3.589263420724095,6.679151061173534,2.122347066167291,6.123595505617978,5.50561797752809,5.1373283395755305, +4.962546816479401,6.491885143570538,3.5580524344569286,6.491885143570538,4.66916354556804,4.700374531835206,1.6416978776529338,4.431960049937578,2.1785268414481895,3.8951310861423223,4.581772784019975,2.4906367041198503,1.3358302122347065,1.5355805243445693,2.702871410736579,7.116104868913857,5.81772784019975,4.0886392009987516,3.0149812734082393,2.5842696629213484,5.143570536828964,6.616729088639201,4.013732833957553,6.803995006242197,6.061173533083646,2.203495630461923,1.9101123595505618,1.735330836454432,3.1273408239700373,5.118601747815231,1.3108614232209737,2.340823970037453,6.029962546816479,4.962546816479401,2.2846441947565546,3.589263420724095,2.1972534332084894,7.49063670411985,5.34956304619226,1.5980024968789013,1.7290886392009988,5.905118601747815,4.962546816479401,2.6466916354556806,2.00374531835206,2.2409488139825218,7.0536828963795255,4.144818976279651,2.5405742821473156,5.724094881398252,4.207240948813983,4.637952559300874,5.262172284644195,7.365792759051186,2.82147315855181,4.531835205992509,5.1248439450686645,6.491885143570538,7.116104868913857,4.400749063670412,3.2397003745318353,4.257178526841448,4.3508114856429465,2.7715355805243447,6.991260923845194,4.55056179775281,3.383270911360799,6.803995006242197,2.865168539325843,4.463171036204744,5.0,5.3620474406991265,6.679151061173534,4.769038701622971,6.928838951310862,6.991260923845194,5.0374531835206,3.7702871410736583,2.016229712858926,2.777777777777778,7.428214731585518,4.687890137328339,3.970037453183521,1.9101123595505618,7.303370786516854,5.162297128589263,6.210986267166042,2.790262172284644,4.662921348314606,4.3508114856429465,6.679151061173534,1.4981273408239701,3.2397003745318353,2.977528089887641,3.620474406991261,6.741573033707866,2.153558052434457,6.154806491885144,5.5305867665418225,5.162297128589263, +4.9937578027465666,6.554307116104869,3.589263420724095,6.554307116104869,4.694132334581773,4.725343320848939,1.6666666666666667,4.456928838951311,2.209737827715356,3.9138576779026217,4.600499375780275,2.521847690387016,1.3545568039950062,1.5667915106117354,2.727840199750312,7.17852684144819,5.848938826466916,4.119850187265917,3.0399500624219726,2.6092384519350813,5.174781523096129,6.616729088639201,4.038701622971286,6.866416978776529,6.086142322097379,2.2284644194756553,1.941323345817728,1.7602996254681649,3.1585518102372037,5.143570536828964,1.3358302122347065,2.3720349563046192,6.048689138576779,4.9812734082397006,2.309612983770287,3.6142322097378274,2.2347066167290888,7.553058676654182,5.3745318352059925,1.616729088639201,1.7540574282147314,5.930087390761548,4.987515605493134,2.6779026217228465,2.0287141073657926,2.2659176029962547,7.116104868913857,4.176029962546816,2.571785268414482,5.749063670411985,4.238451935081149,4.66916354556804,5.287141073657928,7.365792759051186,2.8464419475655434,4.55056179775281,5.15605493133583,6.491885143570538,7.116104868913857,4.431960049937578,3.258426966292135,4.275905118601748,4.382022471910113,2.790262172284644,6.991260923845194,4.575530586766542,3.4019975031210987,6.803995006242197,2.8901373283395753,4.488139825218477,5.031210986267166,5.393258426966292,6.741573033707866,4.794007490636704,6.928838951310862,6.991260923845194,5.062421972534332,3.801498127340824,2.0411985018726595,2.808988764044944,7.428214731585518,4.719101123595506,4.00749063670412,1.9350811485642945,7.303370786516854,5.187265917602996,6.235955056179775,2.82147315855181,4.687890137328339,4.382022471910113,6.741573033707866,1.523096129837703,3.2709113607990012,3.0087390761548067,3.6579275905118602,6.741573033707866,2.1910112359550564,6.186017478152309,5.561797752808988,5.181023720349563, +5.024968789013733,6.554307116104869,3.6267166042446943,6.554307116104869,4.719101123595506,4.750312109862672,1.6916354556803994,4.488139825218477,2.2409488139825218,3.938826466916354,4.6254681647940075,2.5530586766541825,1.3795255930087391,1.5980024968789013,2.752808988764045,7.17852684144819,5.880149812734083,4.151061173533084,3.0649188514357055,2.6279650436953808,5.199750312109863,6.679151061173534,4.063670411985019,6.866416978776529,6.117353308364544,2.259675405742821,1.9725343320848938,1.7852684144818978,3.1897627965043696,5.168539325842697,1.3607990012484397,2.4032459425717856,6.073657927590512,5.0062421972534334,2.33458177278402,3.6329588014981273,2.2659176029962547,7.553058676654182,5.393258426966292,1.6354556803995006,1.7790262172284643,5.948813982521848,5.012484394506866,2.715355805243446,2.0599250936329585,2.2908863920099876,7.116104868913857,4.207240948813983,2.602996254681648,5.7802746566791505,4.269662921348314,4.700374531835206,5.312109862671661,7.428214731585518,2.865168539325843,4.575530586766542,5.181023720349563,6.554307116104869,7.17852684144819,4.456928838951311,3.2771535580524347,4.300873907615481,4.413233458177278,2.8152309612983775,7.0536828963795255,4.594257178526841,3.4269662921348316,6.803995006242197,2.9151061173533086,4.51310861423221,5.062421972534332,5.424469413233458,6.741573033707866,4.818976279650437,6.991260923845194,7.0536828963795255,5.081148564294631,3.8389513108614235,2.066167290886392,2.8464419475655434,7.49063670411985,4.750312109862672,4.038701622971286,1.9538077403245941,7.365792759051186,5.212234706616729,6.242197253433209,2.852684144818976,4.712858926342073,4.413233458177278,6.741573033707866,1.5480649188514357,3.3021223470661676,3.033707865168539,3.689138576779026,6.803995006242197,2.2222222222222223,6.217228464419476,5.586766541822722,5.205992509363296, +5.056179775280899,6.616729088639201,3.6579275905118602,6.616729088639201,4.7440699126092385,4.769038701622971,1.710362047440699,4.51310861423221,2.272159800249688,3.9637952559300875,4.644194756554308,2.5842696629213484,1.404494382022472,1.6229712858926344,2.777777777777778,7.17852684144819,5.9113607990012484,4.18227215980025,3.089887640449438,2.6529338327091136,5.230961298377029,6.679151061173534,4.0886392009987516,6.928838951310862,6.1485642946317105,2.2908863920099876,2.00374531835206,1.8102372034956304,3.2209737827715355,5.19350811485643,1.3857677902621723,2.4406991260923845,6.092384519350812,5.024968789013733,2.35330836454432,3.6579275905118602,2.303370786516854,7.615480649188515,5.418227215980025,1.6541822721598003,1.8039950062421974,5.97378277153558,5.0374531835206,2.746566791510612,2.091136079900125,2.322097378277154,7.17852684144819,4.244694132334582,2.640449438202247,5.811485642946318,4.294631710362047,4.737827715355805,5.337078651685393,7.428214731585518,2.8901373283395753,4.594257178526841,5.212234706616729,6.616729088639201,7.17852684144819,4.4818976279650435,3.3021223470661676,4.31960049937578,4.444444444444445,2.8339575530586765,7.0536828963795255,4.619225967540574,3.4456928838951315,6.866416978776529,2.9400749063670415,4.538077403245943,5.093632958801498,5.461922596754057,6.803995006242197,4.850187265917603,6.991260923845194,7.0536828963795255,5.099875156054932,3.870162297128589,2.091136079900125,2.8776529338327093,7.49063670411985,4.781523096129837,4.069912609238452,1.9725343320848938,7.365792759051186,5.230961298377029,6.30461922596754,2.8838951310861427,4.737827715355805,4.444444444444445,6.803995006242197,1.5730337078651684,3.3333333333333335,3.058676654182272,3.7203495630461925,6.803995006242197,2.259675405742821,6.242197253433209,5.611735330836455,5.230961298377029, +5.081148564294631,6.616729088639201,3.689138576779026,6.616729088639201,4.775280898876405,4.794007490636704,1.735330836454432,4.538077403245943,2.2971285892634206,3.982521847690387,4.66916354556804,2.6092384519350813,1.4232209737827717,1.6541822721598003,2.8027465667915106,7.240948813982522,5.942571785268415,4.213483146067416,3.114856429463171,2.671660424469413,5.262172284644195,6.741573033707866,4.1136079900124844,6.928838951310862,6.179775280898876,2.3158551810237205,2.034956304619226,1.8352059925093633,3.2521847690387014,5.218476903870163,1.410736579275905,2.471910112359551,6.111111111111111,5.049937578027466,2.3782771535580522,3.682896379525593,2.33458177278402,7.615480649188515,5.443196004993759,1.6791510611735332,1.8227215980024971,5.992509363295881,5.068664169787765,2.777777777777778,2.1161048689138577,2.3470661672908864,7.17852684144819,4.275905118601748,2.671660424469413,5.842696629213483,4.325842696629214,4.769038701622971,5.3620474406991265,7.49063670411985,2.9151061173533086,4.612983770287141,5.243445692883895,6.616729088639201,7.240948813982522,4.51310861423221,3.320848938826467,4.33832709113608,4.4818976279650435,2.8589263420724094,7.116104868913857,4.637952559300874,3.470661672908864,6.866416978776529,2.965043695380774,4.563046192259676,5.118601747815231,5.493133583021224,6.803995006242197,4.875156054931336,7.0536828963795255,7.0536828963795255,5.1248439450686645,3.9076154806491883,2.1161048689138577,2.9151061173533086,7.553058676654182,4.812734082397004,4.107365792759051,1.9975031210986267,7.428214731585518,5.2559300873907615,6.30461922596754,2.9151061173533086,4.762796504369538,4.475655430711611,6.803995006242197,1.5980024968789013,3.3645443196004994,3.0836454431960054,3.7515605493133584,6.866416978776529,2.2908863920099876,6.30461922596754,5.636704119850187,5.2559300873907615, +5.1123595505617985,6.679151061173534,3.7265917602996255,6.679151061173534,4.800249687890138,4.818976279650437,1.7602996254681649,4.563046192259676,2.328339575530587,4.00749063670412,4.687890137328339,2.640449438202247,1.4481897627965044,1.6853932584269664,2.8277153558052435,7.240948813982522,5.97378277153558,4.238451935081149,3.139825218476904,2.696629213483146,5.287141073657928,6.741573033707866,4.132334581772784,6.991260923845194,6.20474406991261,2.3470661672908864,2.066167290886392,1.8601747815230962,3.2833957553058677,5.243445692883895,1.435705368289638,2.5031210986267167,6.1360799001248445,5.068664169787765,2.397003745318352,3.7078651685393256,2.3720349563046192,7.677902621722847,5.468164794007491,1.6978776529338326,1.8476903870162298,6.0174781523096135,5.093632958801498,2.808988764044944,2.1473158551810236,2.3720349563046192,7.240948813982522,4.307116104868914,2.7091136079900124,5.867665418227216,4.3508114856429465,4.806491885143571,5.393258426966292,7.553058676654182,2.9400749063670415,4.637952559300874,5.268414481897628,6.679151061173534,7.240948813982522,4.538077403245943,3.339575530586767,4.3632958801498125,4.51310861423221,2.8776529338327093,7.116104868913857,4.662921348314606,3.4893882646691634,6.866416978776529,2.990012484394507,4.588014981273409,5.149812734082397,5.524344569288389,6.803995006242197,4.900124843945068,7.0536828963795255,7.116104868913857,5.143570536828964,3.938826466916354,2.1410736579275906,2.9463171036204745,7.615480649188515,4.843945068664169,4.138576779026217,2.016229712858926,7.428214731585518,5.280898876404494,6.367041198501872,2.9463171036204745,4.787765293383271,4.51310861423221,6.866416978776529,1.616729088639201,3.3957553058676653,3.114856429463171,3.7890137328339577,6.928838951310862,2.328339575530587,6.30461922596754,5.66167290886392,5.274656679151062, +5.143570536828964,6.679151061173534,3.7578027465667914,6.679151061173534,4.825218476903871,4.837702871410737,1.7790262172284643,4.588014981273409,2.359550561797753,4.032459425717852,4.712858926342073,2.671660424469413,1.4731585518102372,1.7166042446941323,2.852684144818976,7.303370786516854,6.004993757802747,4.269662921348314,3.1647940074906367,2.715355805243446,5.318352059925093,6.803995006242197,4.157303370786517,6.991260923845194,6.235955056179775,2.3782771535580522,2.091136079900125,1.8851435705368291,3.3146067415730336,5.268414481897628,1.4606741573033708,2.5405742821473156,6.154806491885144,5.093632958801498,2.4219725343320846,3.7265917602996255,2.4032459425717856,7.677902621722847,5.493133583021224,1.7166042446941323,1.8726591760299625,6.036204744069912,5.118601747815231,2.8464419475655434,2.1785268414481895,2.4032459425717856,7.240948813982522,4.344569288389513,2.740324594257179,5.8988764044943816,4.382022471910113,4.837702871410737,5.418227215980025,7.553058676654182,2.965043695380774,4.656679151061174,5.299625468164794,6.679151061173534,7.303370786516854,4.563046192259676,3.3583021223470664,4.382022471910113,4.544319600499376,2.902621722846442,7.17852684144819,4.687890137328339,3.5143570536828963,6.928838951310862,3.0149812734082393,4.612983770287141,5.181023720349563,5.555555555555556,6.866416978776529,4.931335830212235,7.116104868913857,7.116104868913857,5.168539325842697,3.9762796504369535,2.1660424469413235,2.9837702871410734,7.615480649188515,4.875156054931336,4.169787765293384,2.0411985018726595,7.49063670411985,5.305867665418227,6.367041198501872,2.977528089887641,4.812734082397004,4.544319600499376,6.866416978776529,1.6416978776529338,3.4269662921348316,3.139825218476904,3.8202247191011236,6.928838951310862,2.359550561797753,6.367041198501872,5.686641697877653,5.299625468164794, +5.174781523096129,6.741573033707866,3.7890137328339577,6.679151061173534,4.850187265917603,4.8626716604244695,1.8039950062421974,4.619225967540574,2.3845193508114857,4.051186017478152,4.7315855181023725,2.702871410736579,1.4918851435705367,1.7478152309612984,2.8776529338327093,7.303370786516854,6.036204744069912,4.300873907615481,3.183520599250936,2.740324594257179,5.34956304619226,6.803995006242197,4.18227215980025,7.0536828963795255,6.242197253433209,2.4032459425717856,2.122347066167291,1.9101123595505618,3.3458177278401995,5.293383270911361,1.4856429463171037,2.571785268414482,6.179775280898876,5.118601747815231,2.446941323345818,3.7515605493133584,2.4406991260923845,7.740324594257178,5.5181023720349565,1.7415730337078652,1.8976279650436954,6.061173533083646,5.149812734082397,2.8776529338327093,2.209737827715356,2.428214731585518,7.303370786516854,4.375780274656679,2.7715355805243447,5.930087390761548,4.406991260923846,4.875156054931336,5.443196004993759,7.615480649188515,2.990012484394507,4.675405742821473,5.324594257178527,6.741573033707866,7.303370786516854,4.594257178526841,3.3770287141073654,4.400749063670412,4.575530586766542,2.9275905118601746,7.17852684144819,4.70661672908864,3.533083645443196,6.928838951310862,3.033707865168539,4.637952559300874,5.212234706616729,5.593008739076155,6.866416978776529,4.956304619225968,7.116104868913857,7.116104868913857,5.187265917602996,4.00749063670412,2.1910112359550564,3.0212234706616727,7.677902621722847,4.906367041198502,4.207240948813983,2.0599250936329585,7.49063670411985,5.33083645443196,6.367041198501872,3.0024968789013733,4.837702871410737,4.575530586766542,6.928838951310862,1.6666666666666667,3.4581772784019975,3.1647940074906367,3.8514357053682895,6.991260923845194,2.397003745318352,6.367041198501872,5.711610486891385,5.324594257178527, +5.205992509363296,6.803995006242197,3.826466916354557,6.741573033707866,4.875156054931336,4.887640449438202,1.8289637952559301,4.644194756554308,2.4157303370786516,4.0761548064918856,4.750312109862672,2.727840199750312,1.5168539325842696,1.772784019975031,2.902621722846442,7.365792759051186,6.067415730337078,4.332084893882647,3.2084893882646695,2.7590511860174782,5.3745318352059925,6.866416978776529,4.207240948813983,7.0536828963795255,6.30461922596754,2.4344569288389515,2.153558052434457,1.9350811485642945,3.383270911360799,5.318352059925093,1.5106117353308364,2.6092384519350813,6.198501872659176,5.1373283395755305,2.4656679151061174,3.776529338327091,2.471910112359551,7.740324594257178,5.543071161048689,1.7602996254681649,1.9225967540574282,6.079900124843945,5.174781523096129,2.908863920099875,2.2347066167290888,2.453183520599251,7.303370786516854,4.413233458177278,2.808988764044944,5.961298377028713,4.438202247191011,4.906367041198502,5.468164794007491,7.615480649188515,3.0087390761548067,4.700374531835206,5.355805243445693,6.803995006242197,7.303370786516854,4.619225967540574,3.3957553058676653,4.425717852684145,4.606741573033708,2.9463171036204745,7.240948813982522,4.7315855181023725,3.5580524344569286,6.991260923845194,3.058676654182272,4.662921348314606,5.243445692883895,5.6242197253433215,6.866416978776529,4.987515605493134,7.17852684144819,7.17852684144819,5.205992509363296,4.044943820224719,2.215980024968789,3.0524344569288386,7.740324594257178,4.937578027465668,4.238451935081149,2.084893882646692,7.553058676654182,5.355805243445693,6.429463171036204,3.033707865168539,4.8626716604244695,4.606741573033708,6.928838951310862,1.6916354556803994,3.4893882646691634,3.1897627965043696,3.888888888888889,7.0536828963795255,2.428214731585518,6.367041198501872,5.736579275905119,5.34956304619226, +5.237203495630462,6.803995006242197,3.857677902621723,6.741573033707866,4.900124843945068,4.906367041198502,1.8476903870162298,4.66916354556804,2.446941323345818,4.1011235955056184,4.775280898876405,2.7590511860174782,1.5418227215980027,1.8039950062421974,2.9275905118601746,7.365792759051186,6.092384519350812,4.3632958801498125,3.233458177278402,2.777777777777778,5.405742821473158,6.866416978776529,4.2322097378277155,7.116104868913857,6.30461922596754,2.4656679151061174,2.184769038701623,1.9600499375780276,3.4144818976279647,5.343320848938826,1.5355805243445693,2.640449438202247,6.223470661672909,5.162297128589263,2.4906367041198503,3.7952559300873907,2.5093632958801497,7.740324594257178,5.561797752808988,1.7790262172284643,1.9475655430711611,6.104868913857677,5.199750312109863,2.9400749063670415,2.2659176029962547,2.478152309612984,7.365792759051186,4.444444444444445,2.84019975031211,5.986267166042447,4.4694132334581775,4.937578027465668,5.493133583021224,7.677902621722847,3.033707865168539,4.719101123595506,5.380774032459426,6.803995006242197,7.365792759051186,4.644194756554308,3.4144818976279647,4.444444444444445,4.637952559300874,2.9712858926342074,7.240948813982522,4.750312109862672,3.576779026217228,6.991260923845194,3.0836454431960054,4.687890137328339,5.274656679151062,5.655430711610487,6.928838951310862,5.012484394506866,7.17852684144819,7.17852684144819,5.230961298377029,4.0761548064918856,2.2409488139825218,3.089887640449438,7.740324594257178,4.9687890137328345,4.269662921348314,2.1036204744069913,7.553058676654182,5.3745318352059925,6.429463171036204,3.0649188514357055,4.887640449438202,4.637952559300874,6.928838951310862,1.7166042446941323,3.5205992509363297,3.2209737827715355,3.920099875156055,7.0536828963795255,2.459425717852684,6.429463171036204,5.761548064918852,5.36828963795256, +5.268414481897628,6.866416978776529,3.888888888888889,6.803995006242197,4.925093632958801,4.931335830212235,1.8726591760299625,4.694132334581773,2.478152309612984,4.119850187265917,4.794007490636704,2.790262172284644,1.5605493133583022,1.8352059925093633,2.9525593008739075,7.428214731585518,6.123595505617978,4.394506866416979,3.258426966292135,2.8027465667915106,5.436953807740325,6.928838951310862,4.257178526841448,7.116104868913857,6.367041198501872,2.4906367041198503,2.215980024968789,1.9850187265917605,3.4456928838951315,5.36828963795256,1.5605493133583022,2.671660424469413,6.242197253433209,5.181023720349563,2.5093632958801497,3.8202247191011236,2.5405742821473156,7.8027465667915115,5.586766541822722,1.797752808988764,1.9662921348314608,6.129837702871411,5.224719101123595,2.977528089887641,2.2971285892634206,2.5093632958801497,7.365792759051186,4.475655430711611,2.871410736579276,6.0174781523096135,4.49438202247191,4.975031210986267,5.524344569288389,7.677902621722847,3.058676654182272,4.737827715355805,5.411985018726591,6.866416978776529,7.365792759051186,4.675405742821473,3.4332084893882646,4.463171036204744,4.66916354556804,2.990012484394507,7.303370786516854,4.775280898876405,3.6017478152309614,6.991260923845194,3.108614232209738,4.712858926342073,5.305867665418227,5.686641697877653,6.928838951310862,5.0374531835206,7.240948813982522,7.17852684144819,5.249687890137328,4.107365792759051,2.2659176029962547,3.1210986267166043,7.8027465667915115,5.0,4.307116104868914,2.128589263420724,7.615480649188515,5.399500624219725,6.491885143570538,3.0961298377028714,4.912609238451935,4.675405742821473,6.991260923845194,1.7415730337078652,3.5518102372034956,3.245942571785269,3.951310861423221,7.116104868913857,2.4968789013732833,6.429463171036204,5.792759051186017,5.393258426966292, +5.299625468164794,6.866416978776529,3.926342072409488,6.803995006242197,4.950062421972534,4.950062421972534,1.8976279650436954,4.719101123595506,2.5031210986267167,4.144818976279651,4.818976279650437,2.8152309612983775,1.585518102372035,1.8664169787765295,2.977528089887641,7.428214731585518,6.154806491885144,4.425717852684145,3.2833957553058677,2.82147315855181,5.461922596754057,6.928838951310862,4.282147315855181,7.17852684144819,6.367041198501872,2.521847690387016,2.2409488139825218,2.009987515605493,3.4769038701622974,5.393258426966292,1.585518102372035,2.7091136079900124,6.242197253433209,5.205992509363296,2.5343320848938826,3.8451935081148565,2.578027465667915,7.8027465667915115,5.611735330836455,1.8227215980024971,1.9912609238451935,6.1485642946317105,5.2559300873907615,3.0087390761548067,2.322097378277154,2.5343320848938826,7.428214731585518,4.51310861423221,2.908863920099875,6.048689138576779,4.525593008739076,5.0062421972534334,5.549313358302123,7.740324594257178,3.0836454431960054,4.762796504369538,5.436953807740325,6.866416978776529,7.428214731585518,4.700374531835206,3.451935081148564,4.488139825218477,4.700374531835206,3.0149812734082393,7.303370786516854,4.794007490636704,3.620474406991261,7.0536828963795255,3.1335830212234708,4.737827715355805,5.337078651685393,5.724094881398252,6.991260923845194,5.068664169787765,7.240948813982522,7.240948813982522,5.268414481897628,4.144818976279651,2.2908863920099876,3.1585518102372037,7.8027465667915115,5.031210986267166,4.33832709113608,2.1473158551810236,7.615480649188515,5.424469413233458,6.491885143570538,3.1273408239700373,4.937578027465668,4.70661672908864,6.991260923845194,1.7602996254681649,3.5830212234706615,3.2709113607990012,3.9887640449438204,7.17852684144819,2.5280898876404496,6.491885143570538,5.81772784019975,5.418227215980025, +5.324594257178527,6.928838951310862,3.957553058676654,6.866416978776529,4.975031210986267,4.975031210986267,1.916354556803995,4.750312109862672,2.5343320848938826,4.169787765293384,4.837702871410737,2.8464419475655434,1.6104868913857677,1.8976279650436954,3.0024968789013733,7.49063670411985,6.186017478152309,4.456928838951311,3.3083645443196006,2.8464419475655434,5.493133583021224,6.991260923845194,4.307116104868914,7.17852684144819,6.429463171036204,2.5530586766541825,2.272159800249688,2.034956304619226,3.508114856429463,5.418227215980025,1.6104868913857677,2.740324594257179,6.30461922596754,5.224719101123595,2.5593008739076155,3.870162297128589,2.6092384519350813,7.865168539325843,5.636704119850187,1.8414481897627966,2.016229712858926,6.173533083645444,5.280898876404494,3.0399500624219726,2.35330836454432,2.5593008739076155,7.428214731585518,4.544319600499376,2.9400749063670415,6.079900124843945,4.55056179775281,5.043695380774032,5.574282147315855,7.8027465667915115,3.108614232209738,4.781523096129837,5.468164794007491,6.928838951310862,7.428214731585518,4.725343320848939,3.4769038701622974,4.506866416978776,4.7315855181023725,3.033707865168539,7.365792759051186,4.818976279650437,3.6454431960049942,7.0536828963795255,3.1585518102372037,4.762796504369538,5.36828963795256,5.7553058676654185,6.991260923845194,5.093632958801498,7.303370786516854,7.240948813982522,5.293383270911361,4.176029962546816,2.3158551810237205,3.1960049937578026,7.865168539325843,5.062421972534332,4.375780274656679,2.1722846441947565,7.677902621722847,5.449438202247191,6.491885143570538,3.1585518102372037,4.962546816479401,4.737827715355805,7.0536828963795255,1.7852684144818978,3.6142322097378274,3.3021223470661676,4.019975031210986,7.17852684144819,2.565543071161049,6.491885143570538,5.842696629213483,5.436953807740325, +5.355805243445693,6.928838951310862,3.9887640449438204,6.866416978776529,5.0,5.0,1.941323345817728,4.775280898876405,2.565543071161049,4.188514357053683,4.856429463171036,2.8776529338327093,1.6292134831460674,1.9225967540574282,3.027465667915106,7.49063670411985,6.217228464419476,4.488139825218477,3.3333333333333335,2.865168539325843,5.524344569288389,6.991260923845194,4.332084893882647,7.240948813982522,6.429463171036204,2.578027465667915,2.303370786516854,2.0599250936329585,3.5393258426966296,5.443196004993759,1.6354556803995006,2.7715355805243447,6.30461922596754,5.249687890137328,2.578027465667915,3.888888888888889,2.6466916354556806,7.865168539325843,5.66167290886392,1.8601747815230962,2.0411985018726595,6.192259675405743,5.305867665418227,3.0711610486891385,2.3845193508114857,2.5905118601747814,7.49063670411985,4.575530586766542,2.977528089887641,6.104868913857677,4.581772784019975,5.074906367041199,5.599250936329588,7.8027465667915115,3.1335830212234708,4.800249687890138,5.493133583021224,6.991260923845194,7.428214731585518,4.750312109862672,3.495630461922597,4.525593008739076,4.762796504369538,3.058676654182272,7.365792759051186,4.843945068664169,3.6641697877652937,7.0536828963795255,3.183520599250936,4.787765293383271,5.399500624219725,5.786516853932584,6.991260923845194,5.118601747815231,7.303370786516854,7.240948813982522,5.312109862671661,4.213483146067416,2.340823970037453,3.227215980024969,7.927590511860175,5.087390761548065,4.406991260923846,2.1910112359550564,7.677902621722847,5.474406991260924,6.554307116104869,3.1897627965043696,4.987515605493134,4.769038701622971,7.0536828963795255,1.8102372034956304,3.6454431960049942,3.3270911360799,4.051186017478152,7.240948813982522,2.596754057428215,6.554307116104869,5.867665418227216,5.461922596754057, +5.3870162297128585,6.991260923845194,4.02621722846442,6.928838951310862,5.024968789013733,5.0187265917602994,1.9662921348314608,4.800249687890138,2.596754057428215,4.213483146067416,4.881398252184769,2.908863920099875,1.6541822721598003,1.9538077403245941,3.0524344569288386,7.553058676654182,6.242197253433209,4.519350811485642,3.3583021223470664,2.8901373283395753,5.549313358302123,7.0536828963795255,4.3508114856429465,7.240948813982522,6.491885143570538,2.6092384519350813,2.33458177278402,2.084893882646692,3.5705368289637955,5.468164794007491,1.6541822721598003,2.808988764044944,6.30461922596754,5.274656679151062,2.602996254681648,3.9138576779026217,2.6779026217228465,7.927590511860175,5.686641697877653,1.8851435705368291,2.066167290886392,6.217228464419476,5.337078651685393,3.108614232209738,2.4157303370786516,2.6154806491885143,7.49063670411985,4.612983770287141,3.0087390761548067,6.1360799001248445,4.606741573033708,5.1123595505617985,5.6242197253433215,7.865168539325843,3.15230961298377,4.825218476903871,5.524344569288389,6.991260923845194,7.49063670411985,4.781523096129837,3.5143570536828963,4.55056179775281,4.794007490636704,3.0836454431960054,7.428214731585518,4.8626716604244695,3.689138576779026,7.116104868913857,3.2084893882646695,4.812734082397004,5.430711610486892,5.81772784019975,7.0536828963795255,5.149812734082397,7.365792759051186,7.303370786516854,5.33083645443196,4.244694132334582,2.3657927590511862,3.2646691635455682,7.927590511860175,5.118601747815231,4.438202247191011,2.215980024968789,7.740324594257178,5.499375780274657,6.554307116104869,3.2209737827715355,5.012484394506866,4.800249687890138,7.116104868913857,1.8352059925093633,3.6766541822721597,3.352059925093633,4.082397003745319,7.240948813982522,2.634207240948814,6.554307116104869,5.892634207240949,5.48689138576779, +5.418227215980025,6.991260923845194,4.057428214731585,6.928838951310862,5.049937578027466,5.043695380774032,1.9850187265917605,4.825218476903871,2.6217228464419473,4.238451935081149,4.900124843945068,2.933832709113608,1.6791510611735332,1.9850187265917605,3.077403245942572,7.553058676654182,6.30461922596754,4.55056179775281,3.383270911360799,2.908863920099875,5.580524344569288,7.0536828963795255,4.375780274656679,7.303370786516854,6.491885143570538,2.640449438202247,2.3657927590511862,2.1098626716604243,3.6017478152309614,5.493133583021224,1.6791510611735332,2.84019975031211,6.367041198501872,5.293383270911361,2.6217228464419473,3.938826466916354,2.715355805243446,7.927590511860175,5.711610486891385,1.9038701622971288,2.091136079900125,6.235955056179775,5.3620474406991265,3.139825218476904,2.4406991260923845,2.640449438202247,7.553058676654182,4.644194756554308,3.0399500624219726,6.167290886392011,4.637952559300874,5.143570536828964,5.655430711610487,7.865168539325843,3.1772784019975036,4.843945068664169,5.555555555555556,7.0536828963795255,7.49063670411985,4.806491885143571,3.533083645443196,4.569288389513109,4.831460674157303,3.102372034956305,7.428214731585518,4.887640449438202,3.7078651685393256,7.116104868913857,3.233458177278402,4.837702871410737,5.461922596754057,5.855181023720349,7.0536828963795255,5.174781523096129,7.365792759051186,7.303370786516854,5.355805243445693,4.282147315855181,2.3907615480649187,3.295880149812734,7.990012484394507,5.149812734082397,4.475655430711611,2.2347066167290888,7.740324594257178,5.524344569288389,6.616729088639201,3.2521847690387014,5.0374531835206,4.831460674157303,7.116104868913857,1.8601747815230962,3.701622971285893,3.3770287141073654,4.119850187265917,7.303370786516854,2.66541822721598,6.616729088639201,5.917602996254682,5.511860174781523, +5.449438202247191,7.0536828963795255,4.094881398252185,6.928838951310862,5.074906367041199,5.068664169787765,2.009987515605493,4.850187265917603,2.6529338327091136,4.257178526841448,4.925093632958801,2.965043695380774,1.6978776529338326,2.016229712858926,3.102372034956305,7.615480649188515,6.30461922596754,4.581772784019975,3.408239700374532,2.933832709113608,5.611735330836455,7.116104868913857,4.400749063670412,7.303370786516854,6.554307116104869,2.66541822721598,2.397003745318352,2.134831460674157,3.6329588014981273,5.5181023720349565,1.704119850187266,2.8776529338327093,6.367041198501872,5.318352059925093,2.6466916354556806,3.9637952559300875,2.752808988764045,7.990012484394507,5.730337078651686,1.9225967540574282,2.1161048689138577,6.242197253433209,5.3870162297128585,3.17103620474407,2.471910112359551,2.671660424469413,7.553058676654182,4.675405742821473,3.077403245942572,6.198501872659176,4.66916354556804,5.174781523096129,5.68039950062422,7.927590511860175,3.202247191011236,4.868913857677903,5.580524344569288,7.0536828963795255,7.553058676654182,4.831460674157303,3.5518102372034956,4.588014981273409,4.8626716604244695,3.1273408239700373,7.428214731585518,4.906367041198502,3.732833957553059,7.116104868913857,3.258426966292135,4.8626716604244695,5.493133583021224,5.8863920099875156,7.0536828963795255,5.199750312109863,7.428214731585518,7.303370786516854,5.3745318352059925,4.313358302122348,2.4157303370786516,3.3333333333333335,7.990012484394507,5.181023720349563,4.506866416978776,2.259675405742821,7.8027465667915115,5.543071161048689,6.616729088639201,3.2833957553058677,5.062421972534332,4.868913857677903,7.17852684144819,1.8851435705368291,3.732833957553059,3.408239700374532,4.151061173533084,7.365792759051186,2.696629213483146,6.616729088639201,5.942571785268415,5.5305867665418225, +5.480649188514358,7.0536828963795255,4.1260923845193505,6.991260923845194,5.099875156054932,5.087390761548065,2.034956304619226,4.881398252184769,2.68414481897628,4.282147315855181,4.943820224719102,2.9962546816479403,1.7228464419475658,2.0474406991260925,3.1210986267166043,7.615480649188515,6.367041198501872,4.612983770287141,3.4332084893882646,2.9525593008739075,5.636704119850187,7.116104868913857,4.425717852684145,7.365792759051186,6.554307116104869,2.696629213483146,2.4219725343320846,2.15980024968789,3.6641697877652937,5.543071161048689,1.7290886392009988,2.908863920099875,6.367041198501872,5.337078651685393,2.671660424469413,3.982521847690387,2.7840199750312107,7.990012484394507,5.7553058676654185,1.9475655430711611,2.134831460674157,6.30461922596754,5.411985018726591,3.202247191011236,2.5031210986267167,2.696629213483146,7.615480649188515,4.712858926342073,3.108614232209738,6.223470661672909,4.694132334581773,5.212234706616729,5.705368289637952,7.927590511860175,3.227215980024969,4.887640449438202,5.611735330836455,7.116104868913857,7.553058676654182,4.8626716604244695,3.5705368289637955,4.612983770287141,4.893882646691636,3.1460674157303368,7.49063670411985,4.931335830212235,3.7515605493133584,7.17852684144819,3.2771535580524347,4.887640449438202,5.5181023720349565,5.917602996254682,7.116104868913857,5.230961298377029,7.428214731585518,7.365792759051186,5.393258426966292,4.3508114856429465,2.4406991260923845,3.3645443196004994,8.05243445692884,5.212234706616729,4.538077403245943,2.278401997503121,7.8027465667915115,5.568039950062421,6.616729088639201,3.3146067415730336,5.087390761548065,4.900124843945068,7.17852684144819,1.9101123595505618,3.764044943820225,3.4332084893882646,4.18227215980025,7.365792759051186,2.7340823970037453,6.679151061173534,5.967540574282147,5.555555555555556, +5.511860174781523,7.116104868913857,4.157303370786517,6.991260923845194,5.1248439450686645,5.1123595505617985,2.0536828963795255,4.906367041198502,2.715355805243446,4.307116104868914,4.9687890137328345,3.027465667915106,1.7478152309612984,2.0724094881398254,3.1460674157303368,7.677902621722847,6.367041198501872,4.644194756554308,3.4581772784019975,2.977528089887641,5.667915106117353,7.17852684144819,4.450686641697877,7.365792759051186,6.616729088639201,2.727840199750312,2.453183520599251,2.184769038701623,3.6953807740324596,5.568039950062421,1.7540574282147314,2.9400749063670415,6.429463171036204,5.3620474406991265,2.690387016229713,4.00749063670412,2.82147315855181,8.05243445692884,5.7802746566791505,1.9662921348314608,2.15980024968789,6.30461922596754,5.443196004993759,3.2397003745318353,2.5280898876404496,2.7215980024968793,7.615480649188515,4.7440699126092385,3.1460674157303368,6.242197253433209,4.725343320848939,5.243445692883895,5.730337078651686,7.990012484394507,3.2521847690387014,4.906367041198502,5.636704119850187,7.17852684144819,7.553058676654182,4.887640449438202,3.589263420724095,4.631710362047441,4.925093632958801,3.17103620474407,7.49063670411985,4.956304619225968,3.776529338327091,7.17852684144819,3.3021223470661676,4.912609238451935,5.549313358302123,5.948813982521848,7.116104868913857,5.2559300873907615,7.49063670411985,7.365792759051186,5.418227215980025,4.382022471910113,2.4656679151061174,3.4019975031210987,8.11485642946317,5.243445692883895,4.575530586766542,2.303370786516854,7.865168539325843,5.593008739076155,6.679151061173534,3.3458177278401995,5.118601747815231,4.931335830212235,7.240948813982522,1.9288389513108615,3.7952559300873907,3.4581772784019975,4.219725343320849,7.428214731585518,2.7652933832709112,6.679151061173534,5.998751560549313,5.580524344569288, +5.543071161048689,7.116104868913857,4.194756554307116,7.0536828963795255,5.149812734082397,5.1373283395755305,2.0786516853932584,4.931335830212235,2.740324594257179,4.325842696629214,4.987515605493134,3.0524344569288386,1.766541822721598,2.1036204744069913,3.17103620474407,7.677902621722847,6.429463171036204,4.675405742821473,3.4831460674157304,2.9962546816479403,5.69912609238452,7.17852684144819,4.475655430711611,7.428214731585518,6.616729088639201,2.752808988764045,2.4843945068664173,2.209737827715356,3.732833957553059,5.593008739076155,1.7790262172284643,2.977528089887641,6.429463171036204,5.380774032459426,2.715355805243446,4.032459425717852,2.852684144818976,8.05243445692884,5.805243445692884,1.9850187265917605,2.184769038701623,6.30461922596754,5.468164794007491,3.2709113607990012,2.5593008739076155,2.752808988764045,7.677902621722847,4.781523096129837,3.1772784019975036,6.30461922596754,4.750312109862672,5.280898876404494,5.7553058676654185,8.05243445692884,3.2709113607990012,4.931335830212235,5.667915106117353,7.17852684144819,7.615480649188515,4.912609238451935,3.607990012484395,4.65043695380774,4.956304619225968,3.1960049937578026,7.553058676654182,4.975031210986267,3.7952559300873907,7.17852684144819,3.3270911360799,4.937578027465668,5.580524344569288,5.980024968789014,7.17852684144819,5.280898876404494,7.49063670411985,7.365792759051186,5.436953807740325,4.419475655430712,2.4906367041198503,3.439450686641698,8.11485642946317,5.274656679151062,4.606741573033708,2.322097378277154,7.865168539325843,5.617977528089888,6.679151061173534,3.3770287141073654,5.143570536828964,4.962546816479401,7.240948813982522,1.9538077403245941,3.826466916354557,3.4831460674157304,4.250936329588015,7.49063670411985,2.8027465667915106,6.741573033707866,6.023720349563047,5.605493133583021, +5.574282147315855,7.17852684144819,4.225967540574282,7.0536828963795255,5.174781523096129,5.15605493133583,2.1036204744069913,4.956304619225968,2.7715355805243447,4.3508114856429465,5.0062421972534334,3.0836454431960054,1.7915106117353308,2.134831460674157,3.1960049937578026,7.677902621722847,6.429463171036204,4.70661672908864,3.508114856429463,3.0212234706616727,5.724094881398252,7.240948813982522,4.500624219725343,7.428214731585518,6.616729088639201,2.7840199750312107,2.515605493133583,2.2347066167290888,3.764044943820225,5.617977528089888,1.8039950062421974,3.0087390761548067,6.429463171036204,5.405742821473158,2.7340823970037453,4.051186017478152,2.8901373283395753,8.11485642946317,5.830212234706617,2.00374531835206,2.209737827715356,6.367041198501872,5.493133583021224,3.3021223470661676,2.5905118601747814,2.777777777777778,7.677902621722847,4.812734082397004,3.2084893882646695,6.30461922596754,4.781523096129837,5.312109862671661,5.786516853932584,8.05243445692884,3.295880149812734,4.950062421972534,5.692883895131087,7.240948813982522,7.615480649188515,4.943820224719102,3.6267166042446943,4.675405742821473,4.987515605493134,3.214731585518102,7.553058676654182,5.0,3.8202247191011236,7.240948813982522,3.352059925093633,4.962546816479401,5.611735330836455,6.0174781523096135,7.17852684144819,5.312109862671661,7.553058676654182,7.428214731585518,5.455680399500624,4.450686641697877,2.515605493133583,3.470661672908864,8.177278401997503,5.305867665418227,4.637952559300874,2.340823970037453,7.927590511860175,5.64294631710362,6.741573033707866,3.408239700374532,5.168539325842697,4.9937578027465666,7.303370786516854,1.978776529338327,3.857677902621723,3.5143570536828963,4.282147315855181,7.49063670411985,2.8339575530586765,6.741573033707866,6.048689138576779,5.6242197253433215, +5.599250936329588,7.17852684144819,4.257178526841448,7.116104868913857,5.199750312109863,5.181023720349563,2.122347066167291,4.987515605493134,2.8027465667915106,4.375780274656679,5.031210986267166,3.114856429463171,1.8102372034956304,2.1660424469413235,3.2209737827715355,7.740324594257178,6.491885143570538,4.737827715355805,3.5268414481897628,3.0399500624219726,5.7553058676654185,7.240948813982522,4.525593008739076,7.49063670411985,6.679151061173534,2.8152309612983775,2.546816479400749,2.259675405742821,3.7952559300873907,5.64294631710362,1.8289637952559301,3.0399500624219726,6.491885143570538,5.430711610486892,2.7590511860174782,4.0761548064918856,2.9213483146067416,8.11485642946317,5.855181023720349,2.0287141073657926,2.2347066167290888,6.367041198501872,5.524344569288389,3.3333333333333335,2.6217228464419473,2.8027465667915106,7.740324594257178,4.843945068664169,3.245942571785269,6.367041198501872,4.806491885143571,5.343320848938826,5.811485642946318,8.11485642946317,3.320848938826467,4.9687890137328345,5.724094881398252,7.240948813982522,7.677902621722847,4.9687890137328345,3.651685393258427,4.694132334581773,5.0187265917602994,3.2397003745318353,7.615480649188515,5.0187265917602994,3.8389513108614235,7.240948813982522,3.3770287141073654,4.987515605493134,5.64294631710362,6.048689138576779,7.17852684144819,5.337078651685393,7.553058676654182,7.428214731585518,5.480649188514358,4.488139825218477,2.5405742821473156,3.508114856429463,8.239700374531834,5.337078651685393,4.675405742821473,2.3657927590511862,7.927590511860175,5.667915106117353,6.741573033707866,3.439450686641698,5.19350811485643,5.031210986267166,7.303370786516854,2.00374531835206,3.888888888888889,3.5393258426966296,4.31960049937578,7.553058676654182,2.871410736579276,6.803995006242197,6.073657927590512,5.6491885143570535, +5.630461922596755,7.240948813982522,4.294631710362047,7.116104868913857,5.224719101123595,5.205992509363296,2.1473158551810236,5.012484394506866,2.8339575530586765,4.394506866416979,5.049937578027466,3.139825218476904,1.8352059925093633,2.1910112359550564,3.245942571785269,7.740324594257178,6.491885143570538,4.769038701622971,3.5518102372034956,3.0649188514357055,5.786516853932584,7.303370786516854,4.55056179775281,7.49063670411985,6.679151061173534,2.84019975031211,2.578027465667915,2.2846441947565546,3.826466916354557,5.667915106117353,1.8539325842696628,3.077403245942572,6.491885143570538,5.449438202247191,2.7840199750312107,4.1011235955056184,2.958801498127341,8.177278401997503,5.8739076154806495,2.0474406991260925,2.259675405742821,6.367041198501872,5.549313358302123,3.370786516853933,2.6466916354556806,2.8339575530586765,7.740324594257178,4.881398252184769,3.2771535580524347,6.367041198501872,4.837702871410737,5.380774032459426,5.836454431960051,8.11485642946317,3.3458177278401995,4.9937578027465666,5.749063670411985,7.303370786516854,7.677902621722847,4.9937578027465666,3.6704119850187267,4.712858926342073,5.049937578027466,3.258426966292135,7.615480649188515,5.043695380774032,3.8639200998751564,7.240948813982522,3.4019975031210987,5.012484394506866,5.674157303370786,6.079900124843945,7.240948813982522,5.3620474406991265,7.615480649188515,7.428214731585518,5.499375780274657,4.519350811485642,2.565543071161049,3.5393258426966296,8.239700374531834,5.36828963795256,4.70661672908864,2.3845193508114857,7.990012484394507,5.692883895131087,6.741573033707866,3.470661672908864,5.218476903870163,5.062421972534332,7.365792759051186,2.0287141073657926,3.920099875156055,3.564294631710362,4.3508114856429465,7.553058676654182,2.902621722846442,6.803995006242197,6.098626716604246,5.674157303370786, +5.66167290886392,7.303370786516854,4.325842696629214,7.17852684144819,5.249687890137328,5.224719101123595,2.1722846441947565,5.0374531835206,2.8589263420724094,4.419475655430712,5.074906367041199,3.17103620474407,1.8601747815230962,2.2222222222222223,3.2709113607990012,7.8027465667915115,6.554307116104869,4.800249687890138,3.576779026217228,3.0836454431960054,5.811485642946318,7.303370786516854,4.569288389513109,7.553058676654182,6.741573033707866,2.871410736579276,2.602996254681648,2.309612983770287,3.857677902621723,5.692883895131087,1.8789013732833957,3.108614232209738,6.491885143570538,5.474406991260924,2.8027465667915106,4.1260923845193505,2.990012484394507,8.177278401997503,5.8988764044943816,2.066167290886392,2.278401997503121,6.429463171036204,5.574282147315855,3.4019975031210987,2.6779026217228465,2.8589263420724094,7.8027465667915115,4.912609238451935,3.3146067415730336,6.429463171036204,4.868913857677903,5.411985018726591,5.861423220973783,8.177278401997503,3.370786516853933,5.012484394506866,5.7802746566791505,7.365792759051186,7.677902621722847,5.024968789013733,3.689138576779026,4.737827715355805,5.081148564294631,3.2833957553058677,7.677902621722847,5.068664169787765,3.882646691635456,7.303370786516854,3.4269662921348316,5.0374531835206,5.705368289637952,6.111111111111111,7.240948813982522,5.393258426966292,7.615480649188515,7.49063670411985,5.524344569288389,4.55056179775281,2.5905118601747814,3.576779026217228,8.302122347066168,5.399500624219725,4.737827715355805,2.4094881398252186,7.990012484394507,5.711610486891385,6.803995006242197,3.5018726591760303,5.243445692883895,5.093632958801498,7.365792759051186,2.0536828963795255,3.951310861423221,3.595505617977528,4.382022471910113,7.615480649188515,2.9400749063670415,6.866416978776529,6.123595505617978,5.69912609238452, +5.692883895131087,7.303370786516854,4.357053682896379,7.17852684144819,5.274656679151062,5.249687890137328,2.1910112359550564,5.062421972534332,2.8901373283395753,4.444444444444445,5.093632958801498,3.202247191011236,1.8789013732833957,2.253433208489388,3.295880149812734,7.8027465667915115,6.554307116104869,4.831460674157303,3.6017478152309614,3.102372034956305,5.842696629213483,7.365792759051186,4.594257178526841,7.553058676654182,6.741573033707866,2.902621722846442,2.634207240948814,2.33458177278402,3.888888888888889,5.711610486891385,1.9038701622971288,3.1460674157303368,6.554307116104869,5.493133583021224,2.8277153558052435,4.144818976279651,3.027465667915106,8.239700374531834,5.9238451935081144,2.091136079900125,2.303370786516854,6.429463171036204,5.599250936329588,3.4332084893882646,2.7091136079900124,2.8838951310861427,7.8027465667915115,4.943820224719102,3.3458177278401995,6.429463171036204,4.893882646691636,5.449438202247191,5.8863920099875156,8.177278401997503,3.3957553058676653,5.031210986267166,5.805243445692884,7.365792759051186,7.740324594257178,5.049937578027466,3.7078651685393256,4.7565543071161045,5.1123595505617985,3.3021223470661676,7.677902621722847,5.087390761548065,3.9076154806491883,7.303370786516854,3.451935081148564,5.062421972534332,5.736579275905119,6.1485642946317105,7.240948813982522,5.418227215980025,7.677902621722847,7.49063670411985,5.543071161048689,4.588014981273409,2.6154806491885143,3.6142322097378274,8.302122347066168,5.430711610486892,4.775280898876405,2.428214731585518,8.05243445692884,5.736579275905119,6.803995006242197,3.533083645443196,5.268414481897628,5.1248439450686645,7.365792759051186,2.0724094881398254,3.982521847690387,3.620474406991261,4.413233458177278,7.677902621722847,2.9712858926342074,6.866416978776529,6.1485642946317105,5.717852684144819, +5.724094881398252,7.365792759051186,4.394506866416979,7.240948813982522,5.299625468164794,5.274656679151062,2.215980024968789,5.087390761548065,2.9213483146067416,4.463171036204744,5.118601747815231,3.233458177278402,1.9038701622971288,2.2846441947565546,3.320848938826467,7.865168539325843,6.616729088639201,4.8626716604244695,3.6267166042446943,3.1273408239700373,5.8739076154806495,7.365792759051186,4.619225967540574,7.615480649188515,6.803995006242197,2.9275905118601746,2.66541822721598,2.359550561797753,3.920099875156055,5.736579275905119,1.9288389513108615,3.1772784019975036,6.554307116104869,5.5181023720349565,2.8464419475655434,4.169787765293384,3.058676654182272,8.239700374531834,5.948813982521848,2.1098626716604243,2.328339575530587,6.429463171036204,5.630461922596755,3.464419475655431,2.7340823970037453,2.9151061173533086,7.865168539325843,4.9812734082397006,3.3770287141073654,6.491885143570538,4.925093632958801,5.480649188514358,5.917602996254682,8.239700374531834,3.4144818976279647,5.056179775280899,5.836454431960051,7.428214731585518,7.740324594257178,5.074906367041199,3.7265917602996255,4.775280898876405,5.143570536828964,3.3270911360799,7.740324594257178,5.1123595505617985,3.926342072409488,7.303370786516854,3.4769038701622974,5.081148564294631,5.767790262172285,6.179775280898876,7.303370786516854,5.449438202247191,7.677902621722847,7.49063670411985,5.561797752808988,4.619225967540574,2.640449438202247,3.6454431960049942,8.3645443196005,5.461922596754057,4.806491885143571,2.453183520599251,8.05243445692884,5.761548064918852,6.866416978776529,3.564294631710362,5.293383270911361,5.15605493133583,7.428214731585518,2.097378277153558,4.013732833957553,3.6454431960049942,4.450686641697877,7.677902621722847,3.0024968789013733,6.928838951310862,6.173533083645444,5.742821473158552, +5.7553058676654185,7.365792759051186,4.425717852684145,7.240948813982522,5.324594257178527,5.293383270911361,2.2409488139825218,5.118601747815231,2.9525593008739075,4.488139825218477,5.1373283395755305,3.258426966292135,1.9288389513108615,2.3158551810237205,3.3458177278401995,7.865168539325843,6.616729088639201,4.893882646691636,3.651685393258427,3.1460674157303368,5.8988764044943816,7.428214731585518,4.644194756554308,7.615480649188515,6.803995006242197,2.958801498127341,2.696629213483146,2.3845193508114857,3.951310861423221,5.761548064918852,1.9538077403245941,3.2084893882646695,6.616729088639201,5.536828963795256,2.871410736579276,4.194756554307116,3.0961298377028714,8.302122347066168,5.97378277153558,2.128589263420724,2.35330836454432,6.491885143570538,5.655430711610487,3.5018726591760303,2.7652933832709112,2.9400749063670415,7.865168539325843,5.012484394506866,3.4144818976279647,6.491885143570538,4.950062421972534,5.5181023720349565,5.942571785268415,8.302122347066168,3.439450686641698,5.074906367041199,5.867665418227216,7.428214731585518,7.8027465667915115,5.106117353308365,3.745318352059925,4.800249687890138,5.181023720349563,3.352059925093633,7.740324594257178,5.131086142322098,3.951310861423221,7.365792759051186,3.5018726591760303,5.106117353308365,5.799001248439451,6.210986267166042,7.303370786516854,5.474406991260924,7.740324594257178,7.553058676654182,5.586766541822722,4.656679151061174,2.6591760299625467,3.682896379525593,8.426966292134832,5.493133583021224,4.837702871410737,2.471910112359551,8.11485642946317,5.786516853932584,6.866416978776529,3.595505617977528,5.318352059925093,5.19350811485643,7.428214731585518,2.122347066167291,4.044943820224719,3.6704119850187267,4.4818976279650435,7.740324594257178,3.0399500624219726,6.928838951310862,6.20474406991261,5.767790262172285, +5.786516853932584,7.428214731585518,4.463171036204744,7.240948813982522,5.34956304619226,5.318352059925093,2.259675405742821,5.143570536828964,2.977528089887641,4.51310861423221,5.15605493133583,3.2896379525593007,1.9475655430711611,2.340823970037453,3.370786516853933,7.927590511860175,6.679151061173534,4.925093632958801,3.6766541822721597,3.17103620474407,5.930087390761548,7.428214731585518,4.66916354556804,7.677902621722847,6.866416978776529,2.990012484394507,2.727840199750312,2.4094881398252186,3.982521847690387,5.786516853932584,1.978776529338327,3.245942571785269,6.616729088639201,5.561797752808988,2.8963795255930087,4.219725343320849,3.1273408239700373,8.302122347066168,5.998751560549313,2.1473158551810236,2.3782771535580522,6.491885143570538,5.68039950062422,3.533083645443196,2.7965043695380776,2.965043695380774,7.927590511860175,5.049937578027466,3.4456928838951315,6.491885143570538,4.9812734082397006,5.549313358302123,5.967540574282147,8.302122347066168,3.464419475655431,5.093632958801498,5.892634207240949,7.49063670411985,7.8027465667915115,5.131086142322098,3.764044943820225,4.818976279650437,5.212234706616729,3.370786516853933,7.8027465667915115,5.15605493133583,3.970037453183521,7.365792759051186,3.5205992509363297,5.131086142322098,5.830212234706617,6.242197253433209,7.365792759051186,5.499375780274657,7.740324594257178,7.553058676654182,5.605493133583021,4.687890137328339,2.68414481897628,3.714107365792759,8.426966292134832,5.524344569288389,4.875156054931336,2.4968789013732833,8.11485642946317,5.811485642946318,6.866416978776529,3.6267166042446943,5.343320848938826,5.224719101123595,7.49063670411985,2.1473158551810236,4.0761548064918856,3.701622971285893,4.51310861423221,7.8027465667915115,3.0711610486891385,6.991260923845194,6.229712858926342,5.786516853932584, +5.81772784019975,7.428214731585518,4.49438202247191,7.303370786516854,5.3745318352059925,5.337078651685393,2.2846441947565546,5.168539325842697,3.0087390761548067,4.531835205992509,5.181023720349563,3.320848938826467,1.9725343320848938,2.3720349563046192,3.3957553058676653,7.927590511860175,6.679151061173534,4.950062421972534,3.701622971285893,3.1897627965043696,5.961298377028713,7.49063670411985,4.694132334581773,7.677902621722847,6.866416978776529,3.0149812734082393,2.7590511860174782,2.4344569288389515,4.013732833957553,5.811485642946318,2.00374531835206,3.2771535580524347,6.616729088639201,5.586766541822722,2.9151061173533086,4.238451935081149,3.1647940074906367,8.3645443196005,6.023720349563047,2.1722846441947565,2.4032459425717856,6.554307116104869,5.711610486891385,3.564294631710362,2.8277153558052435,2.9962546816479403,7.927590511860175,5.081148564294631,3.4769038701622974,6.554307116104869,5.0062421972534334,5.580524344569288,5.992509363295881,8.3645443196005,3.4893882646691634,5.118601747815231,5.9238451935081144,7.553058676654182,7.8027465667915115,5.15605493133583,3.7827715355805243,4.837702871410737,5.243445692883895,3.3957553058676653,7.8027465667915115,5.181023720349563,3.9950062421972534,7.365792759051186,3.545568039950062,5.15605493133583,5.861423220973783,6.30461922596754,7.365792759051186,5.5305867665418225,7.8027465667915115,7.553058676654182,5.6242197253433215,4.725343320848939,2.7091136079900124,3.7515605493133584,8.489388264669165,5.555555555555556,4.906367041198502,2.515605493133583,8.177278401997503,5.836454431960051,6.928838951310862,3.6579275905118602,5.36828963795256,5.2559300873907615,7.49063670411985,2.1722846441947565,4.107365792759051,3.7265917602996255,4.55056179775281,7.8027465667915115,3.108614232209738,6.991260923845194,6.242197253433209,5.811485642946318, +5.842696629213483,7.49063670411985,4.525593008739076,7.303370786516854,5.405742821473158,5.3620474406991265,2.309612983770287,5.19350811485643,3.0399500624219726,4.556803995006242,5.199750312109863,3.352059925093633,1.9975031210986267,2.4032459425717856,3.420724094881398,7.990012484394507,6.741573033707866,4.9812734082397006,3.7265917602996255,3.214731585518102,5.986267166042447,7.49063670411985,4.719101123595506,7.740324594257178,6.928838951310862,3.046192259675406,2.7840199750312107,2.459425717852684,4.044943820224719,5.836454431960051,2.0287141073657926,3.3083645443196006,6.679151061173534,5.605493133583021,2.9400749063670415,4.263420724094882,3.1960049937578026,8.3645443196005,6.0424469413233455,2.1910112359550564,2.428214731585518,6.554307116104869,5.736579275905119,3.595505617977528,2.852684144818976,3.0212234706616727,7.990012484394507,5.1123595505617985,3.5143570536828963,6.554307116104869,5.0374531835206,5.617977528089888,6.0174781523096135,8.3645443196005,3.5143570536828963,5.1373283395755305,5.948813982521848,7.553058676654182,7.865168539325843,5.187265917602996,3.801498127340824,4.8626716604244695,5.274656679151062,3.4144818976279647,7.865168539325843,5.199750312109863,4.013732833957553,7.428214731585518,3.5705368289637955,5.181023720349563,5.8863920099875156,6.30461922596754,7.365792759051186,5.555555555555556,7.8027465667915115,7.615480649188515,5.6491885143570535,4.7565543071161045,2.7340823970037453,3.7827715355805243,8.551810237203496,5.586766541822722,4.937578027465668,2.5405742821473156,8.177278401997503,5.855181023720349,6.928838951310862,3.689138576779026,5.393258426966292,5.287141073657928,7.553058676654182,2.1972534332084894,4.138576779026217,3.7515605493133584,4.581772784019975,7.865168539325843,3.139825218476904,7.0536828963795255,6.30461922596754,5.836454431960051, +5.8739076154806495,7.49063670411985,4.563046192259676,7.365792759051186,5.430711610486892,5.3870162297128585,2.328339575530587,5.218476903870163,3.0711610486891385,4.581772784019975,5.224719101123595,3.3770287141073654,2.016229712858926,2.4344569288389515,3.4456928838951315,7.990012484394507,6.741573033707866,5.012484394506866,3.7515605493133584,3.233458177278402,6.0174781523096135,7.553058676654182,4.7440699126092385,7.740324594257178,6.928838951310862,3.077403245942572,2.8152309612983775,2.4843945068664173,4.082397003745319,5.861423220973783,2.0536828963795255,3.3458177278401995,6.679151061173534,5.630461922596755,2.958801498127341,4.288389513108614,3.233458177278402,8.426966292134832,6.067415730337078,2.209737827715356,2.446941323345818,6.554307116104869,5.761548064918852,3.6329588014981273,2.8838951310861427,3.046192259675406,7.990012484394507,5.149812734082397,3.545568039950062,6.616729088639201,5.068664169787765,5.6491885143570535,6.048689138576779,8.426966292134832,3.533083645443196,5.162297128589263,5.980024968789014,7.615480649188515,7.865168539325843,5.212234706616729,3.826466916354557,4.881398252184769,5.305867665418227,3.439450686641698,7.865168539325843,5.224719101123595,4.038701622971286,7.428214731585518,3.595505617977528,5.205992509363296,5.917602996254682,6.367041198501872,7.428214731585518,5.580524344569288,7.865168539325843,7.615480649188515,5.667915106117353,4.794007490636704,2.7590511860174782,3.8202247191011236,8.551810237203496,5.617977528089888,4.975031210986267,2.5593008739076155,8.239700374531834,5.880149812734083,6.991260923845194,3.7203495630461925,5.418227215980025,5.318352059925093,7.553058676654182,2.2222222222222223,4.169787765293384,3.776529338327091,4.612983770287141,7.865168539325843,3.1772784019975036,7.0536828963795255,6.30461922596754,5.861423220973783, +5.905118601747815,7.553058676654182,4.594257178526841,7.365792759051186,5.455680399500624,5.405742821473158,2.35330836454432,5.249687890137328,3.0961298377028714,4.600499375780275,5.243445692883895,3.408239700374532,2.0411985018726595,2.4656679151061174,3.470661672908864,8.05243445692884,6.803995006242197,5.043695380774032,3.776529338327091,3.258426966292135,6.048689138576779,7.553058676654182,4.769038701622971,7.8027465667915115,6.991260923845194,3.102372034956305,2.8464419475655434,2.5093632958801497,4.1136079900124844,5.8863920099875156,2.0786516853932584,3.3770287141073654,6.679151061173534,5.6491885143570535,2.9837702871410734,4.313358302122348,3.2646691635455682,8.426966292134832,6.092384519350812,2.2347066167290888,2.471910112359551,6.616729088639201,5.786516853932584,3.6641697877652937,2.9151061173533086,3.077403245942572,8.05243445692884,5.181023720349563,3.5830212234706615,6.616729088639201,5.093632958801498,5.686641697877653,6.073657927590512,8.426966292134832,3.5580524344569286,5.181023720349563,6.004993757802747,7.615480649188515,7.927590511860175,5.237203495630462,3.8451935081148565,4.900124843945068,5.337078651685393,3.464419475655431,7.927590511860175,5.243445692883895,4.057428214731585,7.428214731585518,3.620474406991261,5.230961298377029,5.948813982521848,6.367041198501872,7.428214731585518,5.611735330836455,7.865168539325843,7.615480649188515,5.686641697877653,4.825218476903871,2.7840199750312107,3.857677902621723,8.614232209737828,5.64294631710362,5.0062421972534334,2.5842696629213484,8.239700374531834,5.905118601747815,6.991260923845194,3.7515605493133584,5.443196004993759,5.34956304619226,7.615480649188515,2.2409488139825218,4.200998751560549,3.8077403245942576,4.65043695380774,7.927590511860175,3.2084893882646695,7.116104868913857,6.30461922596754,5.880149812734083, +5.936329588014981,7.553058676654182,4.6254681647940075,7.428214731585518,5.480649188514358,5.430711610486892,2.3782771535580522,5.274656679151062,3.1273408239700373,4.6254681647940075,5.268414481897628,3.439450686641698,2.066167290886392,2.4906367041198503,3.495630461922597,8.05243445692884,6.803995006242197,5.074906367041199,3.801498127340824,3.2771535580524347,6.073657927590512,7.615480649188515,4.787765293383271,7.8027465667915115,6.991260923845194,3.1335830212234708,2.8776529338327093,2.5343320848938826,4.144818976279651,5.9113607990012484,2.1036204744069913,3.4144818976279647,6.741573033707866,5.674157303370786,3.0087390761548067,4.332084893882647,3.3021223470661676,8.489388264669165,6.117353308364544,2.253433208489388,2.4968789013732833,6.616729088639201,5.81772784019975,3.6953807740324596,2.9400749063670415,3.102372034956305,8.05243445692884,5.212234706616729,3.6142322097378274,6.679151061173534,5.1248439450686645,5.717852684144819,6.098626716604246,8.489388264669165,3.5830212234706615,5.199750312109863,6.036204744069912,7.677902621722847,7.927590511860175,5.268414481897628,3.8639200998751564,4.925093632958801,5.36828963795256,3.4831460674157304,7.927590511860175,5.268414481897628,4.082397003745319,7.49063670411985,3.6454431960049942,5.2559300873907615,5.980024968789014,6.429463171036204,7.428214731585518,5.636704119850187,7.927590511860175,7.677902621722847,5.711610486891385,4.8626716604244695,2.808988764044944,3.888888888888889,8.614232209737828,5.674157303370786,5.043695380774032,2.602996254681648,8.302122347066168,5.930087390761548,6.991260923845194,3.7827715355805243,5.468164794007491,5.3870162297128585,7.615480649188515,2.2659176029962547,4.2322097378277155,3.83270911360799,4.681647940074906,7.990012484394507,3.245942571785269,7.116104868913857,6.367041198501872,5.905118601747815, +5.967540574282147,7.615480649188515,4.662921348314606,7.428214731585518,5.50561797752809,5.455680399500624,2.397003745318352,5.299625468164794,3.1585518102372037,4.65043695380774,5.287141073657928,3.464419475655431,2.084893882646692,2.521847690387016,3.5205992509363297,8.11485642946317,6.866416978776529,5.106117353308365,3.826466916354557,3.3021223470661676,6.104868913857677,7.615480649188515,4.812734082397004,7.8027465667915115,7.0536828963795255,3.1647940074906367,2.908863920099875,2.5593008739076155,4.176029962546816,5.936329588014981,2.128589263420724,3.4456928838951315,6.741573033707866,5.692883895131087,3.027465667915106,4.357053682896379,3.3333333333333335,8.489388264669165,6.142322097378277,2.272159800249688,2.521847690387016,6.616729088639201,5.842696629213483,3.732833957553059,2.9712858926342074,3.1273408239700373,8.11485642946317,5.249687890137328,3.6454431960049942,6.679151061173534,5.149812734082397,5.7553058676654185,6.123595505617978,8.551810237203496,3.607990012484395,5.224719101123595,6.061173533083646,7.740324594257178,7.927590511860175,5.293383270911361,3.882646691635456,4.943820224719102,5.399500624219725,3.508114856429463,7.990012484394507,5.293383270911361,4.1011235955056184,7.49063670411985,3.6704119850187267,5.280898876404494,6.01123595505618,6.429463171036204,7.49063670411985,5.66167290886392,7.927590511860175,7.677902621722847,5.730337078651686,4.893882646691636,2.8339575530586765,3.926342072409488,8.67665418227216,5.705368289637952,5.074906367041199,2.6279650436953808,8.302122347066168,5.955056179775282,7.0536828963795255,3.81398252184769,5.493133583021224,5.418227215980025,7.677902621722847,2.2908863920099876,4.263420724094882,3.857677902621723,4.712858926342073,7.990012484394507,3.2771535580524347,7.17852684144819,6.367041198501872,5.930087390761548, +5.998751560549313,7.615480649188515,4.694132334581773,7.49063670411985,5.5305867665418225,5.474406991260924,2.4219725343320846,5.324594257178527,3.183520599250936,4.66916354556804,5.305867665418227,3.495630461922597,2.1098626716604243,2.5530586766541825,3.545568039950062,8.11485642946317,6.866416978776529,5.1373283395755305,3.8514357053682895,3.320848938826467,6.1360799001248445,7.677902621722847,4.837702871410737,7.865168539325843,7.0536828963795255,3.1897627965043696,2.933832709113608,2.5842696629213484,4.207240948813983,5.961298377028713,2.153558052434457,3.4769038701622974,6.741573033707866,5.717852684144819,3.0524344569288386,4.382022471910113,3.370786516853933,8.551810237203496,6.167290886392011,2.2908863920099876,2.546816479400749,6.679151061173534,5.867665418227216,3.764044943820225,3.0024968789013733,3.1585518102372037,8.11485642946317,5.280898876404494,3.682896379525593,6.741573033707866,5.181023720349563,5.786516853932584,6.1485642946317105,8.551810237203496,3.6329588014981273,5.243445692883895,6.092384519350812,7.740324594257178,7.990012484394507,5.318352059925093,3.9013732833957557,4.962546816479401,5.430711610486892,3.5268414481897628,7.990012484394507,5.312109862671661,4.1260923845193505,7.553058676654182,3.6953807740324596,5.305867665418227,6.0424469413233455,6.491885143570538,7.49063670411985,5.692883895131087,7.990012484394507,7.677902621722847,5.749063670411985,4.931335830212235,2.8589263420724094,3.957553058676654,8.739076154806492,5.736579275905119,5.106117353308365,2.6466916354556806,8.3645443196005,5.980024968789014,7.0536828963795255,3.8451935081148565,5.5181023720349565,5.449438202247191,7.677902621722847,2.3158551810237205,4.294631710362047,3.888888888888889,4.7440699126092385,8.05243445692884,3.3083645443196006,7.17852684144819,6.429463171036204,5.955056179775282, +6.029962546816479,7.677902621722847,4.725343320848939,7.49063670411985,5.555555555555556,5.499375780274657,2.446941323345818,5.34956304619226,3.214731585518102,4.694132334581773,5.33083645443196,3.5268414481897628,2.134831460674157,2.5842696629213484,3.5705368289637955,8.177278401997503,6.928838951310862,5.168539325842697,3.870162297128589,3.3458177278401995,6.161048689138577,7.677902621722847,4.8626716604244695,7.865168539325843,7.0536828963795255,3.2209737827715355,2.965043695380774,2.6092384519350813,4.238451935081149,5.986267166042447,2.1785268414481895,3.5143570536828963,6.803995006242197,5.742821473158552,3.0711610486891385,4.400749063670412,3.4019975031210987,8.551810237203496,6.186017478152309,2.3158551810237205,2.571785268414482,6.679151061173534,5.8988764044943816,3.7952559300873907,3.033707865168539,3.183520599250936,8.177278401997503,5.312109862671661,3.714107365792759,6.741573033707866,5.212234706616729,5.81772784019975,6.179775280898876,8.614232209737828,3.6579275905118602,5.262172284644195,6.117353308364544,7.8027465667915115,7.990012484394507,5.34956304619226,3.920099875156055,4.987515605493134,5.461922596754057,3.5518102372034956,8.05243445692884,5.337078651685393,4.144818976279651,7.553058676654182,3.7203495630461925,5.33083645443196,6.073657927590512,6.491885143570538,7.553058676654182,5.717852684144819,7.990012484394507,7.740324594257178,5.774032459425719,4.962546816479401,2.8838951310861427,3.9950062421972534,8.739076154806492,5.767790262172285,5.143570536828964,2.671660424469413,8.3645443196005,6.004993757802747,7.116104868913857,3.8764044943820224,5.543071161048689,5.480649188514358,7.740324594257178,2.340823970037453,4.31960049937578,3.9138576779026217,4.781523096129837,8.11485642946317,3.3458177278401995,7.240948813982522,6.429463171036204,5.97378277153558, +6.061173533083646,7.677902621722847,4.762796504369538,7.49063670411985,5.580524344569288,5.524344569288389,2.4656679151061174,5.380774032459426,3.245942571785269,4.719101123595506,5.34956304619226,3.5580524344569286,2.153558052434457,2.6154806491885143,3.589263420724095,8.177278401997503,6.928838951310862,5.199750312109863,3.8951310861423223,3.3645443196004994,6.192259675405743,7.740324594257178,4.887640449438202,7.927590511860175,7.116104868913857,3.2521847690387014,2.9962546816479403,2.634207240948814,4.269662921348314,6.01123595505618,2.203495630461923,3.545568039950062,6.803995006242197,5.761548064918852,3.0961298377028714,4.425717852684145,3.439450686641698,8.614232209737828,6.210986267166042,2.33458177278402,2.596754057428215,6.679151061173534,5.9238451935081144,3.826466916354557,3.058676654182272,3.2084893882646695,8.177278401997503,5.34956304619226,3.7515605493133584,6.803995006242197,5.237203495630462,5.855181023720349,6.20474406991261,8.614232209737828,3.6766541822721597,5.287141073657928,6.1485642946317105,7.8027465667915115,8.05243445692884,5.3745318352059925,3.938826466916354,5.0062421972534334,5.493133583021224,3.5705368289637955,8.05243445692884,5.355805243445693,4.169787765293384,7.553058676654182,3.745318352059925,5.355805243445693,6.104868913857677,6.554307116104869,7.553058676654182,5.742821473158552,8.05243445692884,7.740324594257178,5.792759051186017,4.9937578027465666,2.908863920099875,4.02621722846442,8.801498127340825,5.799001248439451,5.174781523096129,2.690387016229713,8.426966292134832,6.023720349563047,7.116104868913857,3.9076154806491883,5.568039950062421,5.511860174781523,7.740324594257178,2.3657927590511862,4.3508114856429465,3.938826466916354,4.812734082397004,8.11485642946317,3.3770287141073654,7.240948813982522,6.429463171036204,5.998751560549313, +6.086142322097379,7.740324594257178,4.794007490636704,7.553058676654182,5.605493133583021,5.543071161048689,2.4906367041198503,5.405742821473158,3.2771535580524347,4.737827715355805,5.3745318352059925,3.5830212234706615,2.1785268414481895,2.640449438202247,3.6142322097378274,8.177278401997503,,,3.920099875156055,3.3895131086142323,6.223470661672909,7.740324594257178,4.912609238451935,7.927590511860175,7.116104868913857,3.2771535580524347,3.027465667915106,2.6591760299625467,4.300873907615481,6.036204744069912,2.2284644194756553,3.576779026217228,6.803995006242197,5.786516853932584,3.1210986267166043,4.450686641697877,3.470661672908864,8.614232209737828,6.235955056179775,2.35330836454432,2.6154806491885143,6.741573033707866,5.948813982521848,3.8639200998751564,3.089887640449438,3.2397003745318353,8.239700374531834,,3.7827715355805243,6.803995006242197,5.268414481897628,5.8863920099875156,,8.67665418227216,3.701622971285893,5.305867665418227,6.179775280898876,,8.05243445692884,5.399500624219725,3.957553058676654,5.024968789013733,5.5305867665418225,3.595505617977528,8.11485642946317,5.380774032459426,4.188514357053683,7.615480649188515,3.764044943820225,5.380774032459426,6.1360799001248445,6.554307116104869,7.553058676654182,5.774032459425719,8.05243445692884,7.740324594257178,5.811485642946318,5.031210986267166,2.933832709113608,4.063670411985019,,5.830212234706617,5.205992509363296,2.7091136079900124,,6.048689138576779,7.116104868913857,3.938826466916354,5.593008739076155,5.549313358302123,,2.3907615480649187,4.382022471910113,3.9637952559300875,4.843945068664169,,3.4144818976279647,7.240948813982522,6.491885143570538,6.023720349563047, +6.117353308364544,7.8027465667915115,4.831460674157303,7.553058676654182,5.630461922596755,5.568039950062421,2.515605493133583,5.430711610486892,3.3021223470661676,4.762796504369538,5.393258426966292,3.6142322097378274,2.203495630461923,2.671660424469413,3.639200998751561,8.239700374531834,,,3.9450686641697876,3.408239700374532,6.242197253433209,7.8027465667915115,4.937578027465668,7.990012484394507,7.17852684144819,3.3083645443196006,3.058676654182272,2.68414481897628,4.332084893882647,6.061173533083646,2.253433208489388,3.6142322097378274,6.866416978776529,5.805243445692884,3.139825218476904,4.475655430711611,3.508114856429463,8.67665418227216,6.242197253433209,2.3782771535580522,2.640449438202247,6.741573033707866,5.97378277153558,3.8951310861423223,3.1210986267166043,3.2646691635455682,8.239700374531834,,3.81398252184769,6.866416978776529,5.293383270911361,5.9238451935081144,,8.67665418227216,,5.324594257178527,6.20474406991261,,8.05243445692884,5.430711610486892,3.9762796504369535,5.049937578027466,5.561797752808988,3.620474406991261,8.11485642946317,5.405742821473158,4.213483146067416,7.615480649188515,3.7890137328339577,5.405742821473158,6.167290886392011,6.616729088639201,7.615480649188515,5.799001248439451,8.11485642946317,7.8027465667915115,5.836454431960051,5.062421972534332,,4.1011235955056184,,5.861423220973783,5.243445692883895,2.7340823970037453,,6.073657927590512,7.17852684144819,3.970037453183521,5.617977528089888,5.580524344569288,,2.4094881398252186,4.413233458177278,3.9950062421972534,4.881398252184769,,3.4456928838951315,7.303370786516854,6.491885143570538,6.048689138576779, +6.1485642946317105,7.8027465667915115,4.8626716604244695,7.615480649188515,5.655430711610487,5.593008739076155,2.5343320848938826,5.455680399500624,3.3333333333333335,4.787765293383271,5.418227215980025,3.6454431960049942,2.2222222222222223,2.702871410736579,3.6641697877652937,8.239700374531834,,,3.970037453183521,3.4269662921348316,6.30461922596754,7.8027465667915115,4.962546816479401,7.990012484394507,7.17852684144819,3.339575530586767,3.089887640449438,2.7091136079900124,4.3632958801498125,6.086142322097379,2.272159800249688,3.6454431960049942,6.866416978776529,5.830212234706617,3.1647940074906367,4.49438202247191,3.545568039950062,8.67665418227216,6.30461922596754,2.397003745318352,2.66541822721598,6.741573033707866,6.004993757802747,3.926342072409488,3.1460674157303368,3.2896379525593007,8.302122347066168,,,6.866416978776529,5.324594257178527,5.955056179775282,,8.739076154806492,,5.34956304619226,6.235955056179775,,8.11485642946317,5.455680399500624,4.001248439450687,5.068664169787765,5.593008739076155,3.639200998751561,8.177278401997503,5.424469413233458,4.2322097378277155,7.615480649188515,3.81398252184769,5.430711610486892,6.198501872659176,6.616729088639201,7.615480649188515,5.830212234706617,8.11485642946317,7.8027465667915115,5.855181023720349,5.099875156054932,,4.132334581772784,,5.892634207240949,5.274656679151062,2.752808988764045,,6.098626716604246,7.17852684144819,4.001248439450687,5.6491885143570535,5.611735330836455,,2.4344569288389515,4.444444444444445,4.019975031210986,4.912609238451935,,3.4831460674157304,7.303370786516854,6.554307116104869,6.067415730337078, +,7.865168539325843,4.893882646691636,,5.68039950062422,5.611735330836455,2.5593008739076155,,3.3645443196004994,4.806491885143571,5.436953807740325,3.6766541822721597,2.247191011235955,2.7340823970037453,3.689138576779026,8.302122347066168,,,3.9950062421972534,3.451935081148564,6.30461922596754,7.865168539325843,4.987515605493134,8.05243445692884,7.240948813982522,3.3645443196004994,3.114856429463171,2.7340823970037453,4.400749063670412,6.111111111111111,2.2971285892634206,3.682896379525593,6.866416978776529,5.848938826466916,3.183520599250936,4.519350811485642,3.576779026217228,8.739076154806492,6.30461922596754,2.4157303370786516,2.690387016229713,6.803995006242197,6.029962546816479,3.957553058676654,3.1772784019975036,3.3146067415730336,8.302122347066168,,,6.928838951310862,5.34956304619226,5.986267166042447,,8.801498127340825,,5.36828963795256,6.242197253433209,,8.11485642946317,5.480649188514358,4.019975031210986,5.087390761548065,5.6242197253433215,3.6641697877652937,8.177278401997503,5.449438202247191,4.257178526841448,7.677902621722847,3.8389513108614235,5.455680399500624,6.229712858926342,6.679151061173534,7.615480649188515,5.855181023720349,8.177278401997503,7.8027465667915115,5.880149812734083,5.131086142322098,,4.169787765293384,,5.9238451935081144,5.305867665418227,2.777777777777778,,6.123595505617978,7.240948813982522,4.032459425717852,5.674157303370786,5.64294631710362,,2.459425717852684,4.475655430711611,4.044943820224719,4.943820224719102,,3.5143570536828963,7.365792759051186,6.554307116104869,6.092384519350812, +,7.865168539325843,4.931335830212235,,5.705368289637952,5.636704119850187,2.5842696629213484,,3.3957553058676653,4.831460674157303,5.455680399500624,3.701622971285893,2.272159800249688,2.7652933832709112,3.714107365792759,,,,4.019975031210986,3.470661672908864,6.367041198501872,7.865168539325843,5.0062421972534334,,7.240948813982522,3.3957553058676653,3.1460674157303368,2.7590511860174782,4.431960049937578,6.1360799001248445,,3.714107365792759,6.928838951310862,5.8739076154806495,3.2084893882646695,4.544319600499376,3.6142322097378274,8.739076154806492,6.30461922596754,2.4406991260923845,2.715355805243446,6.803995006242197,6.054931335830212,3.9950062421972534,3.2084893882646695,3.3458177278401995,8.3645443196005,,,6.928838951310862,5.380774032459426,6.023720349563047,,8.801498127340825,,5.3870162297128585,6.30461922596754,,8.177278401997503,5.50561797752809,4.038701622971286,5.1123595505617985,5.655430711610487,3.682896379525593,8.239700374531834,5.468164794007491,4.275905118601748,7.677902621722847,3.8639200998751564,5.480649188514358,6.242197253433209,6.679151061173534,7.677902621722847,5.880149812734083,8.177278401997503,7.865168539325843,5.8988764044943816,5.168539325842697,,,,5.955056179775282,5.343320848938826,2.7965043695380776,,6.1485642946317105,7.240948813982522,4.063670411985019,5.69912609238452,5.674157303370786,,2.4843945068664173,4.506866416978776,4.069912609238452,4.9812734082397006,,3.5518102372034956,7.365792759051186,6.616729088639201,6.117353308364544, +,7.927590511860175,4.962546816479401,,5.730337078651686,5.655430711610487,2.602996254681648,,3.420724094881398,4.850187265917603,5.480649188514358,3.732833957553059,2.2908863920099876,2.790262172284644,3.7390761548064915,,,,4.044943820224719,3.495630461922597,6.367041198501872,7.927590511860175,5.031210986267166,,7.303370786516854,3.4269662921348316,3.1772784019975036,2.7840199750312107,4.463171036204744,,,3.745318352059925,6.928838951310862,5.8988764044943816,3.233458177278402,4.569288389513109,3.6454431960049942,8.801498127340825,6.367041198501872,2.459425717852684,2.740324594257179,6.866416978776529,6.086142322097379,4.02621722846442,3.2397003745318353,3.370786516853933,8.3645443196005,,,6.991260923845194,5.411985018726591,6.054931335830212,,8.863920099875156,,5.411985018726591,6.30461922596754,,8.177278401997503,5.536828963795256,4.057428214731585,5.131086142322098,5.686641697877653,3.7078651685393256,8.239700374531834,5.493133583021224,4.294631710362047,7.677902621722847,3.888888888888889,5.50561797752809,6.30461922596754,6.741573033707866,7.677902621722847,5.9113607990012484,8.239700374531834,7.865168539325843,5.917602996254682,5.199750312109863,,,,5.986267166042447,5.3745318352059925,2.82147315855181,,6.173533083645444,7.240948813982522,4.094881398252185,5.724094881398252,5.705368289637952,,2.5093632958801497,4.538077403245943,4.1011235955056184,5.012484394506866,,3.5830212234706615,7.428214731585518,,6.1360799001248445, +,7.927590511860175,4.9937578027465666,,5.7553058676654185,5.68039950062422,2.6279650436953808,,3.451935081148564,4.875156054931336,5.499375780274657,3.764044943820225,2.3158551810237205,2.82147315855181,3.764044943820225,,,,4.069912609238452,3.5143570536828963,6.367041198501872,7.990012484394507,5.056179775280899,,7.303370786516854,3.4581772784019975,3.2084893882646695,2.808988764044944,4.49438202247191,,,3.7827715355805243,6.928838951310862,5.917602996254682,3.2521847690387014,,3.682896379525593,8.801498127340825,6.367041198501872,2.478152309612984,2.7590511860174782,6.866416978776529,6.111111111111111,4.057428214731585,3.2646691635455682,3.3957553058676653,8.426966292134832,,,6.991260923845194,5.436953807740325,6.092384519350812,,8.863920099875156,,5.430711610486892,6.367041198501872,,8.239700374531834,5.561797752808988,4.0761548064918856,5.149812734082397,5.717852684144819,3.7265917602996255,8.302122347066168,5.5181023720349565,4.31960049937578,7.740324594257178,3.9138576779026217,5.5305867665418225,6.30461922596754,6.741573033707866,7.740324594257178,5.936329588014981,8.239700374531834,7.865168539325843,5.942571785268415,5.237203495630462,,,,6.0174781523096135,5.405742821473158,2.84019975031211,,6.192259675405743,7.303370786516854,4.1260923845193505,5.749063670411985,5.742821473158552,,2.5343320848938826,4.569288389513109,4.1260923845193505,5.043695380774032,,3.6142322097378274,7.428214731585518,,6.161048689138577, +,7.990012484394507,5.031210986267166,,5.7802746566791505,5.705368289637952,,,3.4831460674157304,4.900124843945068,5.524344569288389,3.7952559300873907,2.340823970037453,2.852684144818976,3.7890137328339577,,,,4.094881398252185,3.5393258426966296,6.429463171036204,7.990012484394507,5.081148564294631,,7.365792759051186,3.4831460674157304,3.2397003745318353,2.8339575530586765,4.525593008739076,,,3.81398252184769,6.991260923845194,,3.2771535580524347,,3.714107365792759,8.863920099875156,6.429463171036204,2.4968789013732833,2.7840199750312107,6.866416978776529,6.1360799001248445,4.0886392009987516,3.295880149812734,,8.426966292134832,,,7.0536828963795255,5.468164794007491,6.123595505617978,,8.926342072409488,,5.455680399500624,6.367041198501872,,8.239700374531834,,4.094881398252185,5.174781523096129,5.749063670411985,3.7515605493133584,8.302122347066168,5.536828963795256,4.33832709113608,7.740324594257178,3.938826466916354,5.555555555555556,,6.803995006242197,7.740324594257178,5.961298377028713,8.302122347066168,7.927590511860175,5.961298377028713,5.268414481897628,,,,6.048689138576779,5.443196004993759,2.865168539325843,,6.217228464419476,7.303370786516854,4.157303370786517,5.774032459425719,5.774032459425719,,2.5530586766541825,4.600499375780275,4.151061173533084,5.081148564294631,,3.651685393258427,,,6.186017478152309, +,,5.062421972534332,,5.805243445692884,,,,3.5143570536828963,4.918851435705368,5.543071161048689,3.8202247191011236,2.359550561797753,2.8838951310861427,3.81398252184769,,,,4.119850187265917,3.5580524344569286,6.429463171036204,8.05243445692884,5.106117353308365,,7.365792759051186,3.5143570536828963,3.2709113607990012,2.8589263420724094,4.556803995006242,,,3.8451935081148565,6.991260923845194,,3.295880149812734,,3.7515605493133584,8.863920099875156,6.429463171036204,2.521847690387016,2.808988764044944,6.928838951310862,6.161048689138577,4.1260923845193505,3.3270911360799,,8.489388264669165,,,7.0536828963795255,5.493133583021224,6.161048689138577,,,,5.474406991260924,6.429463171036204,,8.239700374531834,,4.1136079900124844,5.19350811485643,5.7802746566791505,3.776529338327091,8.3645443196005,5.561797752808988,4.3632958801498125,7.740324594257178,3.9637952559300875,5.580524344569288,,6.803995006242197,,5.992509363295881,8.302122347066168,7.927590511860175,5.980024968789014,5.305867665418227,,,,6.079900124843945,5.474406991260924,2.8838951310861427,,6.242197253433209,7.365792759051186,4.18227215980025,5.799001248439451,5.805243445692884,,2.578027465667915,4.631710362047441,4.18227215980025,5.1123595505617985,,3.682896379525593,,,6.210986267166042, +,,5.093632958801498,,5.830212234706617,,,,3.5393258426966296,4.943820224719102,5.568039950062421,3.8514357053682895,2.3845193508114857,2.908863920099875,3.8389513108614235,,,,4.144818976279651,3.5830212234706615,6.491885143570538,,5.131086142322098,,7.428214731585518,3.545568039950062,3.295880149812734,2.8838951310861427,4.588014981273409,,,3.882646691635456,6.991260923845194,,3.320848938826467,,,8.926342072409488,6.429463171036204,2.5405742821473156,2.8339575530586765,6.928838951310862,,,3.352059925093633,,8.489388264669165,,,7.116104868913857,5.524344569288389,6.192259675405743,,,,5.493133583021224,6.429463171036204,,8.302122347066168,,4.132334581772784,5.212234706616729,5.811485642946318,3.7952559300873907,8.3645443196005,5.580524344569288,4.382022471910113,7.8027465667915115,3.9887640449438204,5.605493133583021,,6.866416978776529,,6.0174781523096135,8.3645443196005,7.927590511860175,6.004993757802747,5.337078651685393,,,,6.111111111111111,5.50561797752809,2.908863920099875,,6.242197253433209,7.365792759051186,4.213483146067416,5.823970037453184,5.836454431960051,,2.602996254681648,4.662921348314606,4.207240948813983,5.143570536828964,,3.7203495630461925,,,6.229712858926342, +,,5.131086142322098,,5.855181023720349,,,,3.5705368289637955,4.9687890137328345,5.586766541822722,3.882646691635456,2.4094881398252186,2.9400749063670415,3.8639200998751564,,,,4.169787765293384,3.6017478152309614,6.491885143570538,,5.15605493133583,,7.428214731585518,3.5705368289637955,3.3270911360799,2.908863920099875,4.619225967540574,,,3.9138576779026217,7.0536828963795255,,3.3458177278401995,,,8.926342072409488,6.491885143570538,2.5593008739076155,2.8589263420724094,6.928838951310862,,,3.383270911360799,,8.551810237203496,,,7.116104868913857,,,,,,5.5181023720349565,6.491885143570538,,8.302122347066168,,4.151061173533084,5.237203495630462,5.842696629213483,3.8202247191011236,8.426966292134832,5.605493133583021,4.406991260923846,7.8027465667915115,4.00749063670412,5.630461922596755,,,,6.0424469413233455,8.3645443196005,7.990012484394507,6.023720349563047,5.3745318352059925,,,,,5.543071161048689,2.9275905118601746,,6.30461922596754,7.428214731585518,4.244694132334582,5.848938826466916,5.867665418227216,,2.6279650436953808,4.694132334581773,4.2322097378277155,5.174781523096129,,3.7515605493133584,,,6.242197253433209, +,,5.162297128589263,,,,,,3.6017478152309614,4.987515605493134,5.605493133583021,3.9076154806491883,2.428214731585518,2.9712858926342074,,,,,4.194756554307116,3.6267166042446943,6.554307116104869,,5.181023720349563,,7.49063670411985,3.6017478152309614,3.3583021223470664,2.933832709113608,4.65043695380774,,,,7.0536828963795255,,3.3645443196004994,,,8.98876404494382,,2.5842696629213484,2.8838951310861427,6.991260923845194,,,3.4144818976279647,,8.551810237203496,,,7.116104868913857,,,,,,5.536828963795256,6.491885143570538,,8.3645443196005,,4.176029962546816,5.2559300873907615,5.880149812734083,3.8389513108614235,8.426966292134832,5.6242197253433215,4.425717852684145,7.8027465667915115,4.032459425717852,,,,,6.073657927590512,8.426966292134832,7.990012484394507,6.0424469413233455,5.405742821473158,,,,,,2.9525593008739075,,,7.428214731585518,,5.8739076154806495,5.905118601747815,,,,4.257178526841448,5.212234706616729,,,,,6.30461922596754, +,,,,,,,,3.6329588014981273,5.012484394506866,5.630461922596755,3.938826466916354,2.453183520599251,3.0024968789013733,,,,,4.213483146067416,3.6454431960049942,6.554307116104869,,5.205992509363296,,7.49063670411985,3.6329588014981273,,2.958801498127341,4.681647940074906,,,,7.0536828963795255,,3.3895131086142323,,,8.98876404494382,,2.602996254681648,2.908863920099875,6.991260923845194,,,,,,,,7.17852684144819,,,,,,5.555555555555556,6.491885143570538,,8.3645443196005,,4.194756554307116,5.274656679151062,5.9113607990012484,3.8639200998751564,8.489388264669165,5.6491885143570535,4.450686641697877,,4.057428214731585,,,,,6.098626716604246,8.426966292134832,7.990012484394507,6.067415730337078,,,,,,,2.9712858926342074,,,7.428214731585518,,5.8988764044943816,5.936329588014981,,,,4.288389513108614,5.243445692883895,,,,,6.30461922596754, +,,,,,,,,3.6579275905118602,5.0374531835206,5.6491885143570535,,2.471910112359551,3.033707865168539,,,,,,3.6704119850187267,6.616729088639201,,5.224719101123595,,7.553058676654182,,,2.9837702871410734,4.712858926342073,,,,7.116104868913857,,3.408239700374532,,,9.051186017478152,,,2.9275905118601746,6.991260923845194,,,,,,,,7.17852684144819,,,,,,5.580524344569288,6.554307116104869,,,,4.213483146067416,5.299625468164794,5.942571785268415,3.888888888888889,8.489388264669165,,4.4694132334581775,,4.082397003745319,,,,,6.123595505617978,8.489388264669165,8.05243445692884,6.086142322097379,,,,,,,2.9962546816479403,,,7.49063670411985,,5.9238451935081144,5.967540574282147,,,,,5.274656679151062,,,,,6.30461922596754, +,,,,,,,,3.689138576779026,5.056179775280899,,,2.4968789013732833,3.058676654182272,,,,,,3.689138576779026,6.616729088639201,,5.249687890137328,,7.553058676654182,,,3.0087390761548067,,,,,7.116104868913857,,3.4332084893882646,,,9.051186017478152,,,2.9525593008739075,7.0536828963795255,,,,,,,,7.240948813982522,,,,,,,,,,,4.2322097378277155,5.318352059925093,5.97378277153558,3.9076154806491883,8.551810237203496,,4.49438202247191,,4.107365792759051,,,,,6.154806491885144,8.489388264669165,8.05243445692884,6.104868913857677,,,,,,,3.0149812734082393,,,7.49063670411985,,5.948813982521848,5.998751560549313,,,,,,,,,,6.367041198501872, +,,,,,,,,3.7203495630461925,,,,,3.089887640449438,,,,,,3.714107365792759,6.679151061173534,,5.274656679151062,,7.553058676654182,,,3.033707865168539,,,,,,,3.4581772784019975,,,9.113607990012484,,,2.977528089887641,,,,,,,,,7.240948813982522,,,,,,,,,,,4.250936329588015,5.337078651685393,6.004993757802747,3.9325842696629216,8.551810237203496,,,,4.132334581772784,,,,,6.179775280898876,8.551810237203496,8.05243445692884,6.129837702871411,,,,,,,3.0399500624219726,,,7.553058676654182,,5.97378277153558,6.029962546816479,,,,,,,,,,6.367041198501872, +,,,,,,,,,,,,,3.1210986267166043,,,,,,3.732833957553059,6.679151061173534,,5.299625468164794,,,,,3.058676654182272,,,,,,,,,,9.113607990012484,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.269662921348314,5.3620474406991265,6.036204744069912,3.951310861423221,8.614232209737828,,,,,,,,,6.210986267166042,8.551810237203496,8.11485642946317,6.1485642946317105,,,,,,,3.058676654182272,,,7.553058676654182,,,,,,,,,,,,,6.367041198501872, +,,,,,,,,,,,,,3.15230961298377,,,,,,3.7515605493133584,6.741573033707866,,5.324594257178527,,,,,3.0836454431960054,,,,,,,,,,9.176029962546817,,,,,,,,,,,,7.303370786516854,,,,,,,,,,,4.288389513108614,5.380774032459426,6.067415730337078,3.9762796504369535,8.614232209737828,,,,,,,,,6.235955056179775,,8.11485642946317,6.167290886392011,,,,,,,3.077403245942572,,,7.553058676654182,,,,,,,,,,,,,6.429463171036204, +,,,,,,,,,,,,,,,,,,,,6.741573033707866,,,,,,,,,,,,,,,,,9.176029962546817,,,,,,,,,,,,,,,,,,,,,,,,5.399500624219725,6.098626716604246,,8.67665418227216,,,,,,,,,6.242197253433209,,8.11485642946317,6.192259675405743,,,,,,,3.102372034956305,,,7.615480649188515,,,,,,,,,,,,,6.429463171036204, +,,,,,,,,,,,,,,,,,,,,6.803995006242197,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5.424469413233458,,,,,,,,,,,,6.30461922596754,,,6.210986267166042,,,,,,,3.1210986267166043,,,7.615480649188515,,,,,,,,,,,,,, diff --git a/lessons/files/files.md b/lessons/files/files.md index 78632af..2acf993 100644 --- a/lessons/files/files.md +++ b/lessons/files/files.md @@ -1,3 +1,5 @@ # Using Files This section will teach you how to read and write files using Python. + +To work through the examples practice files can be {download}`downloaded here<./practice_files/practice_files.zip>` diff --git a/lessons/files/practice_files/README.md b/lessons/files/practice_files/README.md new file mode 100644 index 0000000..6752d7f --- /dev/null +++ b/lessons/files/practice_files/README.md @@ -0,0 +1,3 @@ +# Practise Files + +If adding more files please also add them into the compressed zip folder to allow easy downloading \ No newline at end of file diff --git a/lessons/files/practice_files/practice_files.zip b/lessons/files/practice_files/practice_files.zip new file mode 100644 index 0000000000000000000000000000000000000000..649ae63926a95d26afe6d4a2a01ab2758a957194 GIT binary patch literal 34146 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