Initial commit with day 1
authorNeil Smith <neil.git@njae.me.uk>
Mon, 17 Sep 2018 09:04:23 +0000 (10:04 +0100)
committerNeil Smith <neil.git@njae.me.uk>
Mon, 17 Sep 2018 09:04:23 +0000 (10:04 +0100)
12 files changed:
.gitignore [new file with mode: 0644]
README.html [new file with mode: 0644]
README.md [new file with mode: 0644]
Setup.hs [new file with mode: 0644]
data/00-invites.txt [new file with mode: 0644]
data/small_invites.txt [new file with mode: 0644]
modest.css [new file with mode: 0644]
src/Main.hs [new file with mode: 0644]
src/task0/task0.hs [new file with mode: 0644]
stack.yaml [new file with mode: 0644]
summerofcode2018soln.cabal [new file with mode: 0644]
summerofcode2018soln.sublime-project [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..593051d
--- /dev/null
@@ -0,0 +1,42 @@
+# Extensionless files
+*
+!/**/
+!*.*
+
+# Haskell bits
+dist
+dist-*
+cabal-dev
+*.o
+*.hi
+*.chi
+*.chs.h
+*.dyn_o
+*.dyn_hi
+.hpc
+.hsenv
+.cabal-sandbox/
+cabal.sandbox.config
+*.prof
+*.aux
+*.hp
+*.eventlog
+.stack-work/
+cabal.project.local
+.HTF/
+
+# IPython / IHaskell notebook checkpoints
+.ipynb*
+
+# Sublime text
+*.sublime-workspace
+
+# Logs
+*.log
+
+# Profile exports
+*.ps
+
+# KDE
+.directory
+
diff --git a/README.html b/README.html
new file mode 100644 (file)
index 0000000..779917d
--- /dev/null
@@ -0,0 +1,57 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <meta http-equiv="Content-Style-Type" content="text/css" />
+  <meta name="generator" content="pandoc" />
+  <title>Summer of Code 2018</title>
+  <style type="text/css">code{white-space: pre;}</style>
+  <link rel="stylesheet" href="modest.css" type="text/css" />
+</head>
+<body>
+<div id="header">
+<h1 class="title">Summer of Code 2018</h1>
+</div>
+<p>Code to solve the <a href="https://learn2.open.ac.uk/course/view.php?id=206891">Summer of Code</a> puzzles. These sample solutions are in <a href="https://www.python.org/">Python</a> and <a href="https://wiki.haskell.org/Haskell">Haskell</a>.</p>
+<h1 id="python">Python</h1>
+<p>I develop the solutions with <a href="https://github.com/jupyterlab/">Jupyter Lab</a>.</p>
+<h1 id="haskell">Haskell</h1>
+<p><a href="http://learnyouahaskell.com/chapters">Learn you a Haskell</a>, <a href="https://www.haskell.org/tutorial/index.html">Introduction to Haskell 98</a>, and <a href="https://hackage.haskell.org/">Hackage</a> are good resources.</p>
+<p>The <a href="https://docs.haskellstack.org/en/stable/README/">Stack documentation</a> and <a href="http://howistart.org/posts/haskell/1/">How I Start: Haskell</a> are good sources of using the tools.</p>
+<h2 id="toolchain">Toolchain</h2>
+<p>I'm using the basic Haskell Platform installation, togeher with <code>stack</code> to manage the packages and dependencies (install with</p>
+<pre><code>$ sudo aptitude install haskell-platform haskell-stack</code></pre>
+<p>).</p>
+<h3 id="creating-the-repository-and-project">Creating the repository and project</h3>
+<p>Create the repository as normal: create the project in Gitolite, clone it, and insert the <code>.gitignore</code> and <code>README.md</code> files.</p>
+<p>There's just one package, with the code in sub-directories of the <code>src</code> directory. Each day will generate one (or more) entries in the <code>summerofcode2018soln.cabal</code> file.</p>
+<p>Create the basic <code>stack</code> project. This will create a new directory. Note that this new directory name can't have a hyphen-delimited word that's just digits, so the project will have to be <code>advent-of-code</code></p>
+<pre><code>stack new summerofcode2018soln --bare simple</code></pre>
+<p>Modify the <code>stack.yaml</code> file as needed, such as adding the <code>ghc-options</code> stanza.</p>
+<h3 id="creating-subsequent-days">Creating subsequent days</h3>
+<p>Each day lives in a separate directory within the <code>src</code> directory. It will also need it's own stanza in <code>summerofcode2018.cabal</code>.</p>
+<p>Compile with</p>
+<pre><code>stack build</code></pre>
+<p>or</p>
+<pre><code>stack build task1</code></pre>
+<p>Run with</p>
+<pre><code>stack exec task1</code></pre>
+<p>Run interactively with</p>
+<pre><code>stack ghci summerofcode2018soln:exe:task1</code></pre>
+<p>To profile, use</p>
+<pre><code>stack build --executable-profiling --library-profiling --ghc-options=&quot;-fprof-auto -rtsopts&quot; task1</code></pre>
+<p>then run with</p>
+<pre><code>stack exec -- task1 +RTS -p -hy</code></pre>
+<h2 id="packages">Packages</h2>
+<p>Stack is using the <a href="https://www.stackage.org/lts-12.9">12.9-lts resolver</a> for packages, so make sure you read the <a href="https://www.stackage.org/lts-12.9/docs">correct documentation for the packages included in it</a>.</p>
+<p>When you use a new package, use</p>
+<pre><code>stack solver</code></pre>
+<p>to see how the <code>stack.yaml</code> file needs to change, and</p>
+<pre><code>stack solver --update-yaml</code></pre>
+<p>to implement the changes.</p>
+<h1 id="readme">Readme</h1>
+<p>Build this readme file wth</p>
+<pre><code>pandoc -s README.md &gt; README.html</code></pre>
+<p>(Using the <a href="https://github.com/markdowncss/modest">Modest style</a>.)</p>
+</body>
+</html>
diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..6dad2b8
--- /dev/null
+++ b/README.md
@@ -0,0 +1,92 @@
+---
+title: "Summer of Code 2018"
+output: html_document
+css: modest.css
+---
+Code to solve the [Summer of Code](https://learn2.open.ac.uk/course/view.php?id=206891) puzzles. These sample solutions are in [Python](https://www.python.org/) and [Haskell](https://wiki.haskell.org/Haskell).
+
+# Python
+I develop the solutions with [Jupyter Lab](https://github.com/jupyterlab/).
+
+# Haskell
+
+[Learn you a Haskell](http://learnyouahaskell.com/chapters), [Introduction to Haskell 98](https://www.haskell.org/tutorial/index.html), and [Hackage](https://hackage.haskell.org/) are good resources.
+
+The [Stack documentation](https://docs.haskellstack.org/en/stable/README/) and [How I Start: Haskell](http://howistart.org/posts/haskell/1/) are good sources of using the tools. 
+
+## Toolchain
+
+I'm using the basic Haskell Platform installation, togeher with `stack` to manage the packages and dependencies (install with
+```
+$ sudo aptitude install haskell-platform haskell-stack
+```
+).
+
+### Creating the repository and project
+Create the repository as normal: create the project in Gitolite, clone it, and insert the `.gitignore` and `README.md` files.
+
+There's just one package, with the code in sub-directories of the `src` directory. Each day will generate one (or more) entries in the `summerofcode2018soln.cabal` file.
+
+Create the basic `stack` project. This will create a new directory. Note that this new directory name can't have a hyphen-delimited word that's just digits, so the project will have to be `advent-of-code`
+
+```
+stack new summerofcode2018soln --bare simple
+```
+
+Modify the `stack.yaml` file as needed, such as adding the `ghc-options` stanza. 
+
+### Creating subsequent days
+
+Each day lives in a separate directory within the `src` directory. It will also need it's own stanza in `summerofcode2018.cabal`.
+
+Compile with
+```
+stack build
+```
+or 
+```
+stack build task1
+```
+
+Run with
+```
+stack exec task1
+```
+
+Run interactively with
+```
+stack ghci summerofcode2018soln:exe:task1
+```
+
+To profile, use 
+```
+stack build --executable-profiling --library-profiling --ghc-options="-fprof-auto -rtsopts" task1
+```
+then run with
+```
+stack exec -- task1 +RTS -p -hy
+```
+
+## Packages
+
+Stack is using the [12.9-lts resolver](https://www.stackage.org/lts-12.9) for packages, so make sure you read the [correct documentation for the packages included in it](https://www.stackage.org/lts-12.9/docs).
+
+When you use a new package, use 
+
+```
+stack solver
+```
+to see how the `stack.yaml` file needs to change, and 
+```
+stack solver --update-yaml
+```
+to implement the changes.
+
+# Readme
+
+Build this readme file wth
+```
+pandoc -s README.md > README.html
+```
+
+(Using the [Modest style](https://github.com/markdowncss/modest).)
diff --git a/Setup.hs b/Setup.hs
new file mode 100644 (file)
index 0000000..9a994af
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/data/00-invites.txt b/data/00-invites.txt
new file mode 100644 (file)
index 0000000..9c3389f
--- /dev/null
@@ -0,0 +1,200 @@
+Caprice, Marlene, Carlie, Fatema, Glyn, Kaycee, Ainsley, Cloe, Zunaira, Tyrell, Annaliese, Ameera, Darrell, Caiden, Reyansh, Oran, Ebonie, Corben, Dionne, Dafydd, Harrison, Mikolaj, Tommy, Marley, Crystal, Aryan, Sebastian, Xena
+Tyler-Jay, Isaak, Salma, Alessandra, Rudra, Luqman, Momina, Ocean, Samson, Rea, Riaz, Mckenzie, Emily
+Ammaar, Freddy, Oran, Tanisha, Ishaan, Angel, Liberty, Savanna, Darrell, Tori, Shania, Arham, Jevon, Avni, Horace, Ethan, Rhiannon, Dante, Zoey, Kuba
+Brogan, Indie, Kendrick, Mahdi, Ethan, Abdulrahman, Misbah, Dafydd, Dolores, Otto, Rohan, Reid, Astrid, Ainsley, Ella-Mae, Charli, Preston, Ayaan, Karina, Bernadette
+Mahek, Nabil, Bertha, Eilidh, Sophie-Louise, Emma-Louise, Gia, Liberty, Rehan, Adem, Tori, Faizah, Ira, Mohammod, Elisabeth, Alexandros, Isabella, Eryk, Nathalie, Otto, Zunaira, Lani
+Mahek, Zaara, Ariana, Isma, Aryan, Elisabeth, Faizah, Tamika, Ira, Oran, Salman, Tessa, Alys, Gerard, Nyla, Killian, Ralphy, Zac, Cloe, Alessio, Corben, Karina
+Bronwyn, Abdul, Tommy, Rudra, Annie, Allegra, Ellesse, Rogan, Mysha, Alfred, Suman, Zoey
+Winifred, Zackery, Bernadette, Camilla, Edgar, Anabelle, Gerard, Marek, Emma-Louise, Dante, Kai, Aminah, Alastair, Prisha, Harrison, Rosina, Zarah, Kier, Yaqub, Roberta, Lillie-Rose, Izabelle, Ayaan, Adrienne, Hal, Tahir, Bertha, Nahla, Zaara, Muhamed, Natan, Rogan
+Emile, Jaeden, Caspian, Misbah, Evie-Mai, Zacharias, Liya, Mikayla, Chloe-Louise, Macauley, Michalina, Zarah, Usama, Mohammod, Harvie, Anabia, Bryn, Reyansh, Fearne, Kye, Shaan, Theo, Ellisha, Emily
+Freddy, Shania, Nabil, Alejandro, Christos, Adem, Lindsay, Avni, Beck, Nazifa, Usama, Mysha, Karina, Zaara, Ace, Jamelia, Rehan, Daisy-May, Fearne, Isla-Mae, Leonard, Tilly, Tessa, Alessio, Terri
+Momina, Woody, Savanna, Hassan, Elvis, Oliver, Reanne, Herbie, Bernadette, Sommer, Aizah, Rhydian, Preston, August, Haidar, Iona, Nyla, Otis, Ella-Louise, Poppy, Kristian, Nahla, Alfred, Leena, Natan, Rosa, Jordyn
+Jevan, Stacie, Annabell, Rosanna, Sanjay, Miller, Abdulrahman, Oliver, Kerri, Clara, Brogan, Jo, Deniz, Erika, Sulaiman, Vivien, Ella-Louise, Alina, Sultan, Alvin, Diego, Bob, Cyrus, Tilly, Toyah, Cloe, Reid, Derek
+Yaqub, Dionne, Aminah, Annabel, Michal, Merlin, Derek, Zishan, Kye, Colleen, Vienna, Bernadette, Isabella, Reagan, Jevan, Lillie-Rose, Indie
+Otis, Storm, Alina, Madison, Lilly-Rose, Tilly, Ella-Mae, Sonya, Marek, Tahir, Emanuel, Aditya, Eryk, Astrid, Caspian, Tori, Kye
+Chay, Leonard, Hal, Fenton, Nelson, Clara, Rachelle, Darsh, Eren, Erika, Vivien, Rhodri, Glyn, Jaeden, Toby, Kennedy, Steffan, Kristopher, Talha, Benito, Sachin, Mahek, Alfred, Poppy-Mae, Rosina, Harrison
+Troy, Evie, Nyla, Poppy, Jamelia, Sanaa, Tilly, Vivien, Rochelle, Abby, Mylee, Lillie-Rose, Diego, Sid, Abdulrahman, Sabiha, Angel, Lorelai, Lilly-Rose, Finlay
+Jamel, Mahdi, Jayden, Iona, Macauly, Lacey, Ayaan, Abby, Cerys
+Ammaar, Sanaa, Heath, Macauly, Kain, Harvie, Poppy-Mae, Sebastian, Nabil, Talitha, Annabel, Tyler-Jay, Haya, Jasleen, Alfred, Mahek, Neil, Zakk, Alvin, Annaliese, Niall, Emily, Elif, Terri, Elvis, Beck
+Huma, Rosina, Maira, Natan, Lilli, Crystal, Salma, Chay, Dante, Fatimah, Savanna, Christos, Ethan, Tilly
+Muhamed, Eilidh, Shuaib, Xena, Sachin, Storm, Bertram, Iman, Eamonn, Otis, Emma-Louise, Arjun, Darcie, Ralphy, Bob, Rhodri, Mary, Sidney, Emmie, Amos, Cayden, Rory, Caspar, Keelan, Jamel, Lorelai
+Zachariah, Mohammod, Kaitlyn, Mckenzie, Ishaan, Katya, Osman, Liya, Rosemary, Marek, Rosa, Lorelai, Liberty, Jamelia, Monica, Mustafa, Cassia, Leonie, Lindsay, Zakariah, Sonya, Letitia, Alina, Anabelle, Leena, Merlin, Shaan, Maciej, Rudra
+Kuba, Siena, Kai, Rogan, Maddie, Ameera, Aizah, Oran, Harvie, Niall, Macauley, Stan, Leena, Brogan, Annabel, Austen, Dolores, Maryam, Cosmo, Zaara, Kelly, Elvis, Charli, Stacey, Chloe-Louise, Jennie, Jarvis, Umer, Liana, Ace, Phillipa
+Tessa, Kajus, Ophelia, Jordyn, Cadence, Clara, Abby, Alfie-Lee, Jaeden, Areeba, Fiza, Elvis, Summer, Misbah, Natan, Christos, Kier, Finlay, Leonard, Darrell, Fannie, Savanna, Arham, Nazifa, Alys, Muhamed, Kendal, Astrid, Mark, Rhiannon
+Gia, Jo, Kobe, Mahek, Mahdi, Theo, Adem, Zackery, Niall, Kier, Carlie, Daisy-May, Kaycee, Talitha, Eilidh, Rory, Ace, Luci, Rosa, Steffan, Luka, Nelson
+Mariah, Sonya, Letitia, Rosanna, Reyansh, Maddie, Anabella, Rahma, Zachariah, Raj, Macauly, Annabell, Rogan
+Tanisha, Halima, Sila, Jacqueline, Summer, Karina, Akeel, Vivian, Hal, Lilly-Rose, Aditya, Shania, Preston
+Abdi, Cadence, Valentino, Vinay, Eren, Lorelai, Sidney, Stacey, Jordyn, Macauley, Harrison, Ishaan, Adem, Karson, Leona
+Jennie, Zac, Emile, Tilly, Jorden, Luka, Veronica, Salma, Zakariah, Oliver, Otto, Asim, Eilidh, Kenan, Ralphy, Zishan, Kendal, Niall, Maddie, Gia, Vivian, Kai
+Billie, Liberty, Eamonn, Hector, Cara, Keelan, Leonard, Micheal, Josephine, Connagh, Alexandros, Crystal, Inayah, Ocean, Evie, Zunaira, Perry, Zacharias, Usama, Maira, Whitney, Holly, Huma, Abdulrahman, Madeleine, Jez, Diego
+Halima, Zander, Abdul, Hector, Alina, Mckenzie, Tamika, Ayaz, Rochelle, Reagan, Erika, Akbar
+Sid, Tyler-Jay, Avni, Rhodri, Horace, Mahir, Harvie, Toyah, Maciej, Cristian, Kaitlyn, Hudson, Alessandra, Sachin, Stacey, Shania, Leyla, Nathalie, Annabell, Muhammed, Jorge, Kaycee, Alessio, Kelly, Ann-Marie, Dylan
+Alfred, Toby, Storm, Ozan, Troy, Amos, Poppy, Abdi, Suman
+Michalina, Gerald, Iram, Josie, Annaliese, Dionne, Lillie-Rose, Macauley, Leena, Huma, Sonya, Troy, Diego, Leona, Ayaz, Ainsley, Inayah, Ronald, Mahdi, Ace, Cyrus
+Asim, Cory, Ocean, Kendal, Freddy, Ann-Marie, Jorge, Kiefer, Alvin, Rogan, Monica, Haidar, Lindsay, Harper, Kain, Nojus, Emma-Louise, Zakk, Tessa, Shaan, Isabella, Sameera
+Sulaiman, Hector, Whitney, Tyrell, Mustafa, Baxter, Camilla, Poppy, Kaitlyn, Jaeden, Alessio, Saira, Fearne, Tamika, Tessa, Mark, Asim, Kajus, Daisy-May, Katya, Luqman, Austen, Ann-Marie, Kaycee, Heath
+Stacey, Cyrus, Michalina, Monica, Victoria, Rea, Gary, Jacqueline, Hal, Mckenzie, Kristopher, Winifred, Bert, Kendrick, Diego, Aleah, Tommy, Rory, Evie, Ozan, Stacie, Tamar, Mahdi, Natan, Mikolaj, Ross, Haya, Annalise, Christos
+Ronald, Rhydian, Aarron, Danyaal, August, Asmaa, Alvin, Rea, Nicholas, Anita, Can, Amanah, Reyansh
+Miller, Devonte, Kellie, Maisie, Marley, Madeleine, Ozan, Fenton, Hassan, Kristian, Lacey, Rhiannon, Zunaira, Maddie, Ethan, Reanna, Akeel, Lilian, Rochelle
+Mehreen, Arjun, Vienna, Ellenor, Zackery, Cody, Ira, Danyaal, Ann-Marie, Jo, Dionne, Salman, Mikayla, Elliott
+Tessa, Charli, Alejandro, Rory, Jamelia, Luqman, Sebastian, Bronwyn, Natasha, Devan, Alina, Crystal, Eren, Tilly, Sophie-Louise, Carlie, Kaycee, Zackery, Ella-Mae, Isma, Bertram, Ocean, Colleen, Chay, Kacper, Nadeem, Bertha, Dylan, Macauly, Ralphy, Bernadette, Zakariah
+Asim, Brogan, Tamar, Mysha, Darcie, Umer, Abdi, Huma, Hal, Woody, Amos, Rachelle, Cerys, Ella-Mae, Madison, Liana
+Darsh, Kelly, Gregg, Alessio, Fatimah, Rory, Rhiannon, Marley, Benito, Aryan, Veronica
+Zackery, Elyas, Alfred, Isla-Mae, Alvin, Madeleine, Amanah, Milla, Indie, Mustafa, Xena, Luqman, Leona, Naima, Olli, Keelan
+Zarah, Poppy, Preston, Akbar, Katya, Tyrell, Cosmo, Ella-Louise, Mariyam, Kain, Nahla, Faizah, Rachelle, Kacper, Talitha, Marlene, Lacey
+Holli, Mariana, Nadia, Rosina, Kuba, Talitha, Abby, Amos, Annabel, Kaycee, Jevon
+Rehan, Zoey, Rhydian, Kai, Mustafa, Umer, Elliott, Whitney, Mysha, Darsh, Emily, Fenton, Merlin, Usama, Tamar, Holli, Hudson, Cosmo, Aizah, Elvis, Nyla, Cyrus, Marek, Roberta, Jayden, Rosemary, Fearne, Kuba, Nahla, Karina
+Alina, Jevan, Jamel, Cerys, Mikolaj, Aisling, Skye, Allegra, Michalina, Baxter, Zackery, Fannie, Areeba, Kajus
+Miller, Rogan, Kennedy, Alexandros, Christos, Fenton, Dafydd, Shaquille, Elisabeth, Viola, Mehreen, Alessandra, Shania, Bernadette, Nojus, Leona, Kristian, Annaliese, Cadence, Kye, Josephine, Perry, Liberty, Kain, Tillie, Gregg, Annie, Theia
+Sabiha, Lilli, Derek, Rudra, Amanah, Suman, Can, Ella-Mae, Elliott, Millie, Sid, Neil, Ozan, Zachariah, Cory, Darcie, Nojus, Kieron, Adem, Rohan, Maddie, Lucille, Tommy, Sanaa, Savanna, Otto, Deniz, Woody, Annaliese, Momina, Ralphy, Nahla, Adrienne
+Tilly, August, Kieron, Alina, Leona, Evie-Mai, Tonya, Mariana, Tamika, Grayson, Nazifa, Annabell, Dylan, Dante, Miller, Mohammod, Bernadette, Natasha, Colleen, Kobe
+Jennie, Ronald, Oran, Shanai, Adem, Oliver, Lilly-Rose, Mysha, Siena, Izabelle, Ainsley, Kelly, Crystal, Jorden
+Nyla, Chloe-Louise, Marley, Jez, Baxter, Tessa, Dafydd, Charli, Kennedy, Kuba, Preston, Keelan, Jasmine, Hector, Anabella, Miller, Annaliese, Dustin, Rory, Troy, Isabella
+Ameera, Ralphy, Elle, Cloe, Angel, Lilly-Rose, Summer, Rosa, Reagan, Jamel, Michalina, Leonie, Alastair, Osman, Stacey, Ronald, Alfie-Lee, Ellisha, Momina, Keaton, Rosemary, Edgar, Poppy, Michal, Katya, Bruno, Caiden, Jamelia
+Kier, Harlow, Grayson, Harper, Chloe-Louise, Marley, Annaliese, Poppy-Mae, Dolores, Christos, Darrell, Jevan, Asmaa, Arjun, Ralphy, Shaquille, Riaz, Jez, Annabell, Suman, Zoey
+Caiden, Annalise, Finlay, Camilla, Grayson, Ann-Marie, Michalina, Kacper, Sulaiman, Sameera, Leona, Clara, Toby, Dante, Merlin, Josephine, Xena, Luci, Amira, Harlow, Phillipa
+Aditya, Fiza, Leja, Abdulrahman, Jaeden, Sid, Marlene, Gary, Sila, Chloe-Louise, Jamel, Ellenor, Ozan, Tanisha, Fatema, Daria, Muhammed, Josie, Kieron, Nelson
+Nelson, Crystal, Kenan, Akeel, Winifred, Edgar, Zachariah, Dante, Lindsay, Caiden, Salman, Momina, Oliver, Eamonn, Lorelai, Amira, Ariana, Mikolaj, Natasha, Shuaib, Prisha, Gregg, Aleah, Tilly
+Jo, Macauley, Amos, Aryan, Hudson, Mikayla, Anabia, Isla-Mae, Holli, Vinay, Talha, Phillipa, Harlow, Avni, Inayah, Eren
+Rohan, Rehan, Abdul, Javier, Xena, Nadeem, Austen, Winifred, Olli, Marjorie, Samson, Rochelle, Maddie, Vinay, Amanah, Shania, Jez, Harlow, Jaimee, Caspian, Ellesse, Irfan, Luqman, Rahma, Stan, Bruno, Avni, Zarah, Haya, Nadia
+Asmaa, Marjorie, August, Hudson, Nazifa, Hal, Clara, Maryam, Maciej, Kaydan, Ross, Zac, Hassan, Eilidh, Theo, Daria, Shuaib, Steffan
+Rea, Sultan, Rahma, Monica, Edgar, Ayaz, Stan, Xena, Luka, Luqman, Abdul, Tamika
+Aryan, Deniz, Karina, Monica, Alys, Ira, Woody, Alejandro, Rogan, Reanna, Otto, Sidney, Nadeem, Vinnie, Leena, Josephine, Salma, Kerri
+Karson, Kaycee, Madison, Leyla, Grayson, Kobe, Leonardo, Fatimah, Mika, Devan, Sultan, Killian, Dustin, Daria, Cadence, Ameera, Cody, Astrid, Kaitlyn, Harrison, Ronan, Chloe-Louise, Tillie, Shanai, Milla, Jo, Ebonie
+Tillie, Alvin, Sachin, Manav, Poppy, Prisha, Zoey, Gerald, Baxter, Annalise, Keelan, Beck, Horace, Alexandros, Reid, Momina, Natan, Lani, Nazifa, Can, Mylee
+Mariyam, Dolores, Benito, Hallie, Zaara, Tori, Cara, Zishan, Rhodri, Alessio, Whitney, Lilly-Rose, Mohammod, Clara, Fearne, Kaan, Jorge, Aarron, Tamar, Beck, Jasleen
+Frida, Emily, Rachelle, Vinnie, Niall, Gerald, Alvin, Tamar, Siena, Kerri, Valentino, Nabil, Tillie, Hallie, Aryan, Killian, Sameera, Eamonn, Elif, Mariana, Inayah, Ralphy, Annaliese, Rehan, Summer, Mustafa, Kaydan, Baxter, Tanisha, Fallon, Eilidh, Sila, Huma
+Sabiha, Hal, Bertha, Sid, Kenan, Angel, Woody, Marek, Skye, Bob, Ismael, Alejandro, Jaimee, Harper, Samson, Mylie, Tilly, Troy, Misbah, Maisy, Lindsay, Ozan, Areeba
+Areeba, Talitha, Sonya, Isaak, Zakariah, Woody, Elyas, Natasha, Rosina, Sila, Marley, Iman, Lindsay, Macauley
+Kaydan, Beck, Maddie, Nyla, Momina, Alfred, Ella-Louise, Sila, Danyaal, Neil, Hallie, Dante, Rohan, Leona, Ebonie, Lani, Faizah, Kiefer, Avni, Macauley, Indie, Lilian, Alfie-Lee, Lucille, Mikolaj, Jez, Hassan
+Mahir, Amos, Fiza, Sophie-Louise, Emmie, Ace, Alejandro, Isabella, Sommer, Nathalie, Anabia, Charli, Fatimah, Phillipa, Daisy-May, Chante, Aarron, Jevon, Asmaa, Kaycee, Nelson, Elliott
+Ismael, Shanai, Emile, Ariana, Naima, Benito, Leonie, Fatema, Macauley, Akbar, Kelly, Maciej, Gia, Maira, Stan, Misbah, Mustafa, Faizah, Annabell, Arham, Savanna, Bernadette, Shania, Jasmine, Ellisha, Kaan, Eren
+Jorge, Nicholas, Zarah, Faizah, Ralphy, Halima, Derek, Freddy, Ayaan, Gary, Shaquille, Tahir, Adrienne, Ronald, Harper, Mikolaj, Cadence, Osman
+Annie, Tanisha, Leonie, Cayden, Tilly, Haidar, Elvis, Beck, Aleah, Lilly-Rose, Jacqueline, Kaitlyn, Rahma, Evie, Reyansh, Kendrick, Benito, Shaan, Salman, Naeem, Tahir, Tillie, Kai, Hallie, Chay
+Maira, Inayah, Tanisha, Michalina, Dafydd, Mahdi, Sabiha, Yaseen
+Caiden, Mylee, Grayson, Fatema, Crystal, Ralphy, Rosina, Dolores, Daria, Eamonn, Reanna, Vivian, Kelly, Colleen, Can, Veronica, Ismael, Tessa, Ned
+Derek, Karson, Tre, Neil, Benito, Mckenzie, Jacqueline, Anabelle, Jordyn, Mysha, Alexandros, Jevon, Ned, Shaan, Rosa, Kaan, Cody, Alastair, Ocean, Macauly, Eamonn, Harper, Cadence
+Talitha, Ella-Mae, Salma, Rhiannon, Summer, Josephine, Cayden, Yaseen, Asim, Hector, Leonardo, Javier, Macauly, Fatimah, Winifred, Tamika, Alvin, Sanjay, Zarah, Crystal, Ross, Kiefer, Menaal, Caspian, Gia, Avni, Holli, Kaitlyn, Nabil, Anita, Stacie
+Woody, Lorelai, Luka, Rosa, Cristian, Tommy, Vienna, Shania, Luci, Aryan, Mark, Faizah, Deniz, Tyler-Jay, Lilian, Alfred, Inayah, Usama, Skye, Arjun, Bruno, Fiza, Killian, Kajus, Mahir
+Madeleine, Natasha, Zakariah, Mariana, Fenton, Bronwyn, Karson, Tessa, Dante, Leonard, Caiden, Sabiha, Herbie, Rueben, Hudson, Gregg
+Maira, Winifred, Dustin, Jaimee, Reanna, Cerys, Brogan, Aminah, Isla-Mae, Liberty, Ebonie, Herbie, Manisha, Salma, Kier
+Ellisha, Zarah, Viola, Harrison, Asmaa, Mary, Suman, Caiden, Elyas, Devonte, Liana, Kristian, Ross, Kacper, Sachin, Fannie, Millie, Annalise, Evie, Bertha, Darrell
+Gerard, Darcie, Isabella, Maryam, Darrell, Kuba, Dante, Rhiannon, Oliver, Ira, Jessica, Daisy-May, Harrison, Valentino, Leonie, Alastair, Manisha, Emily, Talha, Maisy, Pollyanna, Sulaiman, Vinay, Dustin, Stacey, Liberty, Kennedy, Terri
+Arjun, Inayah, Ameera, Zachariah, Kajus, Reid, Jordan, Humzah, Chloe-Louise, Stacie, Talha, Killian, Lilian, Ibraheem, Nicholas, Bert, Izabelle, Rosanna, Cory, Saira, Erika
+Tamika, Emily, Eryk, Jaime, Isma, Camilla, Jevon, Avni, Can, Michalina, Cyrus, Areeba, Nathalie, Zachariah, Salma, Ellenor, Hal, Liana, Stacey, Emanuel, Devonte, Vienna, Abdi, Rochelle, Jordan, Reyansh, Micheal, Mariah, Zarah, Mikayla
+Gerald, Fiza, Rhiannon, Kaan, Anita, Kelly, Cody, Caspian, Alessio, Chay, Ned, Can, Arjun, Rohan, Kaycee, Erika, Zoey, Poppy-Mae, Kier, Tilly, Harvie, Nadia, Annabell, Muhamed, Stacey, Daria, Irfan
+Cerys, Gerald, Maariyah, Isla-Mae, Gregg, Mylie, Jevon, Saira, Ned, Ayaz, Billie, Dionne, Tillie, Stacie, Mikayla, Lani, Nadeem, Mariah, Anabia, Maisie, Daisy-May, Gerard, Harvie, Emma-Louise, Marissa, Samson, Abdi, Frida, Tonya, Leonie
+Storm, Avni, Caiden, Beck, Gerald, Fenton, Lillie-Rose, Kelly, Faizah, Izabelle, Tamar, Ella-Louise, Inayah, Salman, Jordan, Oran, Areeba, Reyansh, Sonya, Siena, Rohit
+Shaquille, Gerard, Monica, Ann-Marie, Kristopher, Rehan, Poppy, Faizah, Theo, Iona, Jamel, Cadence, Avery, Rohan, Merlin
+Lorelai, Ayaz, Lilli, Grayson, Eamonn, Tanisha, Macauly, Reanne, Gia, Reanna, Madeleine, Elyas, Yaqub, Tre, Liya, Halima, Eryk, Naima
+Micheal, Kain, Fathima, Otis, Jasmine, Luka, Zacharias, Killian, Areeba, Cristian, Dolores, Mary, Vivian, Baxter, Bryn, Perry, Rosanna, Oran, Mariah, Kier, Kye, Bruno, Frida, Muhammed, Reagan, Beck, Kobe, Isha
+Rea, Beck, Preston, Kiefer, Darrell, Ellenor, Lilly-Rose, Maisie, Stan
+Keaton, Maisie, Amira, Sid, Woody, Javier, Herbie, Nathalie, Darsh, Isha, Zac, Rudra, Victoria, Glyn
+Iona, Roberta, Ella-Louise, Evie, Hallie, Stacie, Nicholas, Zarah, Ibraheem, Alastair, Lilian, Gerald, Eamonn, Milla, Freddy, Cyrus
+Sophie-Louise, Tommy, Ayaz, Crystal, Laurie, Vivian, Danyaal, Anabia, Alina, Ellisha, Arham, Leyla, Lindsay, Rachelle, Emile, Hector, Zishan, Muhamed, Allegra, Toby, Shanai
+Merlin, Cristian, Maddie, Sultan, Reid, Jessica, Zarah, Holly, August, Allegra, Amanah, Zachariah, Marley, Sabiha, Niall
+Frida, Asim, Annaliese, Ainsley, Savanna, Bruno, Ayaz, Isma, Alexandros, Cerys, Rohit, Rudra, Tessa, Muhammed, Glyn, Stan, Aditya, Siena
+Michaela, Isabella, Stacie, Keelan, Kennedy, Jordan, Osman, Hallie, Kain, Jaimee, Ronald, Tori, Mahek, Summer, Kendrick, Rueben, Clara, Austen
+Rhydian, Camilla, Jamelia, Neil, Rahma, Tonya, Hudson, Michal, Hallie, Toby, Austen, Maariyah, Zakk, Daria, Adrienne, Saira, Kelly, Poppy-Mae, Cory, Aryaan, Devonte, Clara, Elliott, Amanah, Annabel, Tre, Karson, Indie, Gregg, Mark, Luci, Jaeden
+Rhiannon, Hallie, Lindsay, Keaton, Leona, Mehreen, Elvis, Devonte, Lilli, Hector, Jayden, Muhamed, Ann-Marie, Anabia, Arjun, Isla-Mae, Jorge, Rehan, Tahir
+Elliott, Woody, Devonte, Alvin, Millie, Muhammed, Camilla, Liberty, Nathalie, Shaan, Vivian, Harlow, Isma, Abdi, Ammaar, Talha, Karina, Leona, Micheal, Talitha, Adrienne
+Muhammed, Edgar, Macauley, Hallie, Lucille, Ammaar, Tamika, Rahma, Ayaz, Preston, Alexandros, Cory, Ella-Louise, Samson, Shaan, Hudson, Evie-Mai, Tonya, Heath, Nelson
+Ozan, Holli, Dustin, Gia, Rosanna, Erika, Alastair, Alvin, Prisha, Nyla, Reanne, Nazifa, Rueben, Haya, Kuba, Millie, Pollyanna, Hallie, Mehreen, Kacper, Mysha
+Marlene, Kristian, Hassan, Devonte, Cara, Tre, Lindsay, Skye, Heath, Liya, Haidar, Lilly-Rose, Lani, Can, Harvie, Sanjay, Adrienne, Nadia, Leena, Isma, Shania, Huma, Maariyah, Humzah, Michal, Xena, Kerri, Misbah
+Liya, Diego, Niall, Ayaz, Stan, Izabelle, Alfred, Mylie, Rhydian, Leena, Woody, Iman, Reanna, Bob, Mckenzie, Alys, Emile, Annie, Baxter
+Hassan, Amira, Maddie, Vinnie, Ellesse, Shania, Harvie, Luqman, Elliott, Kaycee, Natan, Umer, Colleen, Zoey, Xena, Tamika, Anabella
+Sabiha, Salman, Deniz, Evie, Vienna, Cristian, Millie, Jasmine, Abdul, Victoria, Jevon, Abdulrahman, Derek, Grayson
+Cayden, Ellesse, Summer, Monica, Darcie, Maira, Jevon, Kennedy, Bertha, Annaliese, Cyrus, Abdulrahman, Ebonie, Sameera, Cassia, Rogan, Sila, Ethan, Joanna, Kelly, Letitia, Keaton, Fallon, Leonardo, Freddy
+Cody, Leena, Bruno, Theo, Deniz, Aryan, Carlie, Rosanna, Zishan, Dolores, Hal, Yaseen, Kaydan, Jaimee, Holli, Finlay, Kristopher, Adem, Annalise, Prisha, Bertram, Zac, Rhiannon, Lindsay, Eren, Kier
+Sebastian, Anabelle, Fenton, Inayah, Amira, Jo, Austen, Siena, Rhiannon, Keaton, Osman, Adem
+Ameera, Leona, Alys, Erika, Tilly, Zishan, Mahir
+Alejandro, Annabell, Ralphy, Josephine, Ronald, Sidney, Winifred, Sultan, August, Allegra, Umer, Tilly, Suman, Tamar, Grayson, Otto, Sid
+Joanna, Derek, Benito, Kajus, Cerys, Jo, Tilly, Zoey, Maja, Keelan, Macauly, Nyla, Vivien, Jamel
+Leonardo, Xena, Harvie, Bob, Kacper, Darrell, Kendal, Leona, Eamonn, Jarvis, Amira, Isma, Hassan, Storm, Lilly-Rose, Alys, Rosa, Marjorie, Kobe, Aryan, Bertram, Arjun, Zacharias
+Nadia, Beck, Finlay, Jordan, Karson, Benito, Clara, Tessa, Joanna, Shanai, Sebastian, Shuaib, Millie, Sonya, Kajus, Gregg, Mariana, Ellenor, Ellisha, Gerard, Rosanna, Grayson, Stacie
+Baxter, Siena, Chloe-Louise, Kacper, Leena, Ayaz, Rosanna, Astrid, Rahma, Rueben, Lacey, Jevon, Emerson, Alfred, Frida, Shaquille, Amira, Irfan, Asim, Jordyn, Gerard, Nojus, Joanna, Osman, Yaqub, Eren, Reanna, Reanne, Samson
+Sophie-Louise, Gerald, Emile, Diego, Jarvis, Asim, Kaycee, Sidney, Liberty, Toby, Rachelle, Horace, Reagan, Sabiha, Kellie, Pollyanna, Yaqub, Annabell, Ellesse, Emerson, Theo, Lindsay, Dylan, Umer, Cory, Adem, Steffan
+Harrison, Aditya, Zunaira, Karina, Muhammed, Veronica, Kaycee, Kaydan, Fatimah, Jo, Riaz, Mahir, Savanna, Ebonie, Sommer, Marjorie, Evie-Mai, Nelson, Kristopher, Otto, Alvin, Edgar, Lacey, Otis, Zacharias, Michalina, Maciej, Keaton, Liya, Mariyam, Troy
+Veronica, Ronald, Toby, Alfie-Lee, Terri, Alastair, Rhodri, Keaton, Kendrick, Elisabeth, Ayaan, Fiza, Aryan, Skye, Marley, Fearne, Katya, Miller, Letitia, Dustin, Bertha, Marjorie, Kuba, Kaitlyn, Ayaz, Sidney, Bert, Maisy, Kier, Astrid
+Vivian, Frida, Skye, Mariah, Marley, Kajus, Cory, Kristopher, Leonard, Evie
+Fatema, Rosemary, Kendrick, Iman, Haidar, Xena, Alessandra, Emma-Louise, Natasha, Lorelai, Inayah, Lacey, Alfie-Lee, Leonardo, Emily, Javier, Usama, Tahir, Rahma, Aryan, Tori, Hal, Winifred, Rohan, Riaz
+Elyas, Dafydd, Mylie, Jayden, Summer, Rehan, Devan, Heath, Annalise, Muhammed, Alejandro, Hudson, Dustin, Steffan, Elif, Hector, Woody, Roberta, Sulaiman
+Ismael, Kai, Irfan, Steffan, Mark, Jo, Poppy-Mae, Jasmine, Nojus, Storm, Tanisha, Cassia, Alejandro, Shania, Oran, Karina, Akbar, Tonya, Michal, Rueben, Iona, Veronica, Ronan, Demi, Reanna, Rosanna
+Zackery, Annabel, Ainsley, Kai, Mylee, Abdul, Perry, Maira, Tamanna, Lindsay, Nabil, Terri, Hector, Frida, Kuba, Aizah, Areeba, Elif, Rohit, Ellesse, Kaitlyn, Adem, Josie, Kacper, Cloe, Xena, Liya
+Jo, Baxter, Michalina, Elisabeth, Mylee, Harper, Ann-Marie, Ammaar, Holly, Rhodri, Vienna, Maisy, Hal, Darsh, Gregg, Emma-Louise, Cosmo, Leonard, Maja, Ace
+Liya, Ellenor, Reanne, Zoey, Ocean, Annaliese, Nelson, Annalise, Rhydian, Luqman, Rosa, Hassan, Marek, Madeleine, Misbah, Ozan, Finlay, Dylan
+Devan, August, Kellie, Isla-Mae, Rhydian, Millie, Winifred, Menaal, Sebastian, Zander, Annabel, Emile, Hal
+Tyrell, Chay, Anabella, Tilly, Mahek, Haidar, Jo, Natan, Jamelia, Viola, Lani
+Freddy, Zachariah, Rosina, Sanjay, Charli, Javier, Phillipa, Isha, Raj, Ellisha, Jevon
+Mahek, Faizah, Jorge, Harvie, Deniz, Mary, Annalise, Lilian, Darcie, Shaan, Bruno, Fallon, Lindsay, Victoria, Can, Rogan, Zander, Sebastian, Katya, Leonardo, Nazifa, Holli, Emily, Iona, Muhamed, Reid, Kelly
+Cara, Nadeem, Michal, Ebonie, Zakk, Sonya, Nathalie, Gerald, Tahir, Haidar, Emile, Jacqueline, Austen, Sidney, Kennedy, Tonya, Alfred
+Milla, Jamelia, Stacie, Kier, Cassia, Tommy, Baxter, Anabella, Danyaal, Sameera, Hallie, Edgar, Troy, Tre, Liya, Sid, Luka, Usama, Ayaan
+Zac, Kain, Toyah, Phillipa, Bertha, Kendal, Rudra, Grayson, Cerys, Josie, Lucille, Lani, Cadence, Maja, Talitha, Luqman, Veronica, Mikayla
+Marlene, Steffan, Indie, Gia, Josie, Emma-Louise, Ibraheem, Luka, Lilli, Irfan, Alfie-Lee, Nicholas, Lindsay, Rochelle, Millie, Mckenzie, Aizah, Merlin, Gary, Amira, Ira, Tonya
+Maja, Jamelia, Leonardo, Emma-Louise, Cory, Preston, Aarron, Vinnie, Mckenzie, Mikolaj
+Kieron, Hal, Jessica, Elvis, Angel, Indie, Nathalie, Vinnie, Harlow, Tamar, Vinay, Shuaib, Jaimee, Jordan, Annie, Nahla, Emile, Dante, August, Maja, Zaara, Dustin, Zacharias, Amira, Marley
+Devan, Kobe, Gerald, Jamel, Karson, Charli, Ralphy, Tori, Ammaar, Oran, Osman, Harvie, Ronald, Clara, Jevan, Hector, Tessa, Cyrus, Amanah, Mustafa, Halima, Troy, Reid
+Connagh, Finlay, Salman, Leena, Hal, Rosemary, Mahir, Naima, Reanne, Kristian, Olli, Jasmine, Neil, Skye
+Dylan, Chloe-Louise, Kerri, Edgar, Osman, Diego, Rohit, Zishan, Annalise, Bertram, Kuba, Adem, Darrell, Caiden, Zunaira, Zakk, Rohan, Jacqueline, Iman, Annaliese, Kristian, Akbar, Glyn, Jevan, Ralphy, Nicholas, Stacey
+Austen, Corben, Gia, Mylie, Raj, Asim, Otto, Abdulrahman, Isha, Alastair, Theo, Jordan, Areeba, Hudson
+Amira, Jo, Gerald, Ainsley, Kendal, Rahma, Alessio, Adrienne, Isma, Ace, Ishaan
+Jessica, Jasleen, Cyrus, Salma, Elisabeth, Dante, Victoria, Karina, Nyla, Marjorie, Bernadette, Iman, Stan, Leona, Ira, Zac, Micheal, Suman
+Sid, Derek, Elyas, Ann-Marie, Hudson, Alvin, Chloe-Louise, Manisha, Jasleen, Rosanna, Neil, Adrienne, Mariana, Ella-Louise, Stan, Zander, Zac, Vienna, Hal, Harper, Victoria, Baxter, Lacey
+Ammaar, Sachin, Kerri, Rochelle, Woody, Pollyanna, Caspian, Alfie-Lee, Cory, Elle, Sidney, Dolores, Lilian, Umer, Ace, Halima, Reanna, Nojus, Ariana, Kieron, Isaak, Oliver, Manisha, Horace, Osman, Evie, Marlene
+Miller, Adem, Bronwyn, Leja, Horace, Salman, Troy, Kaydan, Yaqub, Dylan, Rehan, Osman, Vinay, Ella-Louise, Fenton, Tanisha, Kennedy, Rea, Lucille, Talha, Crystal
+Alfred, Baxter, Dafydd, Bertha, Ismael, Cadence, Usama, Dustin, Nabil, Brogan, Shaquille, Rachelle, Ameera, Dionne, Frida, Tyler-Jay, Gary, Shuaib, Anabia, Connagh, Josie, Maisie, Rochelle, Toby, Reyansh, Victoria, Madeleine
+Lucille, Ellesse, Eryk, Rudra, Chay, Areeba, Chloe-Louise, Daisy-May, Fenton, Liya, Cosmo, Cadence, Asim, Elisabeth
+Mahir, Olli, Nelson, Crystal, Suman, Mary, Ronan, Cristian, Luci, Otis, Ariana, Can, Shanai, Aditya, Jennie, Astrid, Rudra, Derek, Jamelia, Leena, Bernadette, Kiefer, Jamel, Maciej, Nadeem, Kobe, Vinay
+Ace, Asmaa, Elif, Chloe-Louise, Mariana, Ariana, Zackery, Alessandra, Lucille, Alina, Kain, Reyansh, Devonte, Mahir, Tori, Jasmine, Dante, Toby, Steffan, Nicholas, Mylie, Nadeem, Reagan, Sanjay
+Colleen, Chloe-Louise, Caiden, Lacey, Abdul, Whitney, Holli, Liana, Elisabeth, Iman, Camilla, Emily, Ronald, Jacqueline, Mylee, Lillie-Rose, Kye, Ira, Alessio, Anabella, Halima, Rosemary, Areeba, Jaimee, Devan
+Theo, Roberta, Annalise, Killian, Luqman, Kieron, Osman, Emmie, Talha, Tessa, Maryam, Kaitlyn, Elliott, Muhammed, Mylie, Micheal, Caiden, Rosa, Yaqub, Prisha, Sachin, Emerson
+Nazifa, Reagan, Harrison, Woody, Adrienne, Ronan, Indie, Bertha, Annabell, Cloe, Milla, Muhammed, Monica, Mahdi
+Rosina, Elyas, Ayaz, Sonya, Ariana, Cayden, Karson, Ellenor, Ibraheem, Amanah, Aarron, Dante, Marek, Indie, Mary, Shuaib, Sanjay, Miller, Ayaan, Evie-Mai, Dylan, Toby, Darrell, Stacie, Nabil, Sommer, Cerys, Emerson, Rachelle
+Kendal, Ronald, Glyn, Tyrell, Tessa, Olli, Mariah, Viola, Baxter, Cloe, Holly, Vienna, Kaitlyn, Mohammod, Ross, Saira, Shanai, Killian, Huma, Liberty, Hallie, Luqman, Haya, Hal, Ayaan, Diego
+Cody, Veronica, Fannie, Nicholas, Ned, Shaquille, Michal, Hudson, Luqman, Zoey, Stan, Ethan, Kobe, Harrison, Elif, Mckenzie, Javier, Misbah, Billie, Kendal, Leena, Sultan, Winifred, Annabel, Aarron, Kain, Samson, Kenan, Mariana, Mohammod, Troy
+Kenan, Evie-Mai, Ronan, Leena, Kier, Annabell, Elif, Devan, Toby, Whitney, Zoey, Astrid, Ayaz, Niall, Vinnie, Mylie, Tilly, Holli, Zackery, Charli, Asim, Amanah, Kelly, Lilly-Rose, Tamika, Zunaira
+Storm, Rohit, Cory, Ismael, Luka, Annabel, Rochelle, Devonte, Ammaar, Demi, Gary, Suman, Clara, Rosina, Bertha, Aarron, Jarvis, Amos, Jayden, Ethan, Macauley, Hal, Sophie-Louise, Abdi, Crystal, Anabella, Savanna, Devan
+Deniz, Daria, Kiefer, Killian, Stan, Austen, Fenton, Gerard, Tessa, Kendal, Bert, Bob, Merlin, Bronwyn, Inayah
+Evie, Anastasia, Mustafa, Savanna, Whitney, Roberta, Heath, Beck, Hassan, Aditya, Shanai, Cody, Momina, Rosina, Ella-Mae, Shuaib, Kieron, Tyler-Jay, Oran, Kiefer, Angel, Macauly, Ellenor
+Mary, Sid, Aditya, Kieron, Merlin, Natan, Clara, Kye, Rosa, Harper, Leonie, Carlie, Aizah, Stacie, Gerard, Javier
+Eren, Shuaib, Muhammed, Daisy-May, Daria, Bert, Luka, Isaak, Colleen, Bernadette, Tahir, Rueben, Devonte, Kennedy, Finlay, Zishan, Storm, Elliott, Derek, Mariah, Stacie, Kieron, Harrison, Shaan, Evie-Mai, Jez, Mahir, Lacey
+Marlene, Mysha, Ibraheem, Ameera, Elyas, Darrell, Herbie, Eren, Winifred, Jimi, Kye, Connagh, Jamel, Rosemary, Clara, Milla, Jo, Alexandros, Isla-Mae, Amanah, Zac, Macauly, Momina, Huma, Jevan, Caspian, Summer, Lorelai, Ira, Troy
+Annalise, Vivien, Rogan, Cloe, Elif, Nadeem, Anita, Jevon, Kye, Winifred, Isaak, Haidar
+Fannie, Asmaa, Stacey, Javier, Jamelia, Gia, Cassia, Usama, Suman, Annabel, Sanjay, Annie, Sultan, Zander, Cadence, Kendrick, Tamar, Mylee, Josie, Maddie, Harrison, Ammaar, Oliver
+Billie, Gregg, Natasha, Mckenzie, Rhiannon, Ronan, Hudson, Tilly, Halima, Reanna, Ellisha, Aarron, Ned, Jez, Terri, Abdulrahman, Izabelle, Glyn, Ibraheem, Tre, Sultan, Ella-Louise, Kacper, Kaycee
+Madison, Shaan, Shanai, Bob, Usama, Tommy
+Izabelle, Jennie, Otis, Danyaal, Ismael, Jevan, Ralphy, Bernadette, Gerald, Ellisha, Umer, Rhiannon, Evie-Mai, Rosina, Humzah, Marley, Kaycee, Jaimee, Vivian, Reanna, Amanah, Kaydan, Mehreen, Ross, Mariah
+Gary, Deniz, Leona, Alfred, Billie, Zachariah, Merlin, Rohan, Holli, Colleen, Shaan, Jorden, Lilian, Rochelle, Ira, Jordan, Terri
+Caspian, Elvis, Sid, Cristian, Aleah, Abdulrahman, Abdul, Ariana, Annalise, Harrison, Charli, Kaycee, Jacqueline, Valentino, Naima, Hassan, Vivien, Ellenor, Mahir, Reyansh, Zacharias, Nahla, Oran, Edgar, Alessandra
+Fallon, Rosemary, Reagan, Winifred, Rahma, Ella-Mae, Bob, Sonya, Oliver, Ronald, Anabelle, Leonie, Reanna, Rochelle, Fatema
+Karson, Gerard, Kendal, Yaqub, Crystal, Amira
+Shaquille, Liberty, Mohammod, Ophelia, Chloe-Louise, Kye, Rueben, Ann-Marie, Neil, Alessandra, Cassia, Rhiannon, Cory, Alfred, Sidney, Izabelle, Michal, Prisha, Elle, Deniz, Sanaa, Ellenor, Aleah, Alessio
+Tillie, Asim, Lynsey, Katya, Alina, Irfan, Cadence, Xena, Rosanna, Jaeden, Harper, Cayden, Abdulrahman, Aryan, Hudson, Terri, Herbie, Caspian, Shania, Mary, Emma-Louise
+Isaak, Angel, Milla, Cloe, Usama, Austen, Nelson, Cadence, Vivian, Emily, Zishan, Rohit, Lilian, Talha, Abdulrahman, Salma, Tessa, Reyansh, Leonardo, Josie, Shaan, Anabella, Veronica, Keaton, Mylee, Abdi, Kye, Ralphy, Madison, Muhammed, Rhodri
+Yusef, Jasmine, Perry, Hallie, Eren, Zachariah, Zander, Holly, Deniz, Naima, Rochelle, Ralphy, Tamika, Tommy, Storm, Luka, Eilidh
+Zunaira, Shakira, August, Elliott, Cory, Siena, Rhiannon, Keaton, Areeba, Rosanna, Sebastian
+Gregg, Adyan, Rogan, Crystal, Heath, Harrison, Rosemary, Izabelle, Abdulrahman, Dante, Corben, Kye, Zac, Leonie, Storm, Vinay
+Aizah, Marjorie, Maryam, Oliver, Mahir, Naima, Micheal, Isma, Mary, Nathalie, Grayson, Roberta, Abdi, Ocean, Sonya, Mckenzie, Mustafa, Zakariah, Karina, Ned, Lillie-Rose, Nadia, Jo, Ameera
+Baxter, Reyansh, Toby, Amira, Benito, Zachariah, Leyla, Jo, Killian, Heath, Misbah, Elisabeth, Roberta, Millie, Adem, Yaseen, Summer, Mary, Michal, Dionne, Aryan, Harrison, Chloe-Louise, Kristian, Bernadette, Liana
+Maisy, Dylan, Devan, Kieron, Harlow, Rosina, Cerys, Kendrick, Natasha, Astrid, Prisha
+Carlie, Mahdi, Demi, Bruno, Whitney, Nicholas, Devan, Reid, Jayden, Frida, Ariana, Kerri, Eilidh, Micheal, Michal, Corben, Zarah, Katya, Avni, Luqman, Fiza, Crystal, Jez, Mylee, Anita, Lacey, Rhydian, Storm, Indie
+Otto, Sameera, Maciej, Veronica, Fatema, Humzah, Kiefer, Zakk, Lilly-Rose, Hal, Cadence, Alvin, Letitia, Tre, Zac, Tonya, Anabelle, Finlay, Cosmo, Ace, Hassan, Kieron, Vivien, Jordyn, Amos, Elliott, Beck, Sonya, Olli, Tyler-Jay, Gia
+Salma, Caiden, Lacey, Isaak, Mckenzie, Zarah, Michalina, Hudson, Zakariah, Tyrell, Ellenor, Mustafa, Phillipa, Abby, Zaara, Elvis, Marlene, Shaan, Karson, Mylie, Whitney, Siena, Fiza, Pollyanna, Elif, Bob, Kieron
+Ronald, Maryam, Hal, Zackery, Bert, Rohan, Faizah, Connar, Jordyn, Alfie-Lee, Javier, Theo, Rahma, Dylan, Umer, Kobe, Nabil
+Cerys, Killian, Kai, Gregg, Liya, Isaak, Katya, Madison, Javier, Daria, Savanna, Chloe-Louise, Woody, Abdi, Ella-Louise, Elif, Billie
+Maryam, Valentino, Otto, Grayson, Aryan, Cloe, Rachelle, Luqman, Kiefer, Savanna, Winifred, Elvis, Leonardo
+Ebonie, Rehan, Fatema, Maciej, Adrienne, Humzah, Eryk, Abdi, Kiefer, Emmie, Liberty, Aarron, Rohan, Maisy, Harlow, Vinnie, Gregg, Natasha, Asmaa, Nadeem, Kieron, Neil, Xena, Ayaan, Reyansh, Terri, Ethan, Darrell, Jez, Rochelle, Jaimee, Lilah
+Rohit, Nadia, Kiefer, Whitney, Emma-Louise, Darcie, Ellesse, Sonya, Theo, Iona, Harrison, Kieron, Bertram, Asmaa, Rehan, Rochelle, Benito, Bryn, Gregg, Cosmo, Haidar, Fannie, Jasleen, Billie
+Luci, Cerys, Ross, Nelson, Monica, Sila, Kendal, Alfie-Lee, Rudra, Liberty, Holly, Emile, Victoria, Karina, Viola, Kobe, Milla, Ronald, Dafydd, Joanna, Zackery, Holli, Neil, Ameera, Kacper, Rosa, Osman, Toyah, Demi, Devan
+Zackery, Jorden, Christos, Nadeem, Shaquille, Umer, Perry, Jessica, Izabelle, Lucille, Asim, Maja, Suman, Benito, Osman, Stan, Bob, Vienna, Macauley, Kieron, Lorelai, Iram, Sanjay, Kobe, Mylie
+Glyn, Joanna, Rea, Tommy, Kendal, Reyansh, Josie, Liana, Cody, Sanjay, Merlin, Millie, August, Erika, Cadence, Marlene, Emmie, Zaara, Umer, Niall, Lilli, Yaseen, Austen
+Eren, Menaal, Harrison, Mustafa, Fenton, Ned, Bronwyn, Anabella, Dante, Miller, August, Muhammed, Winifred, Frida, Bryn, Kieron, Maja, Tonya
+Fenton, Ebonie, Samson, Alina, Mahir, Jamel, Kaitlyn, Holli, Stan, Darcie, Reanna, Zakk, Tori, Akbar, Cassia, Erika, Zacharias
+Chloe-Louise, Nabil, Liberty, Phillipa, Annaliese, Ace, Sulaiman, Connagh, Elif, Fallon, Sid, Nyla, Colleen, Kye, Asim, Dante, Tonya, Mikayla, Bernadette, Sidney, Rosina, Annalise, Alina, Gerard
+Bruno, Ismael, Liya, Gregg, Leonard, Anita, Michalina, Sameera, Reid, Theo, Kain, Ozan, Merlin, Leonardo, Elisabeth, Stacie, Hassan, Akbar, Ayaan, Yaqub, Macauley, Jessica, Isma, Yaseen, Whitney, Shuaib, Cadence
+Izabelle, Rea, Mariana, Lindsay, Harrison, Muhamed, Sidney, Zarah, Elliott, Emile, Derek, Ophelia, Nazifa, Mylie, Siena, Alessio, Holly, Tommy, Macauley
+Aarron, Chloe-Louise, Rosemary, Winifred, Arham, Katya, Alastair, Haya, Fatema, Evie-Mai, Alessandra, Diego, Caspian, Tamika, Billie, Jasleen, Rohit, Jevon
+Cyrus, Ann-Marie, Kendal, Tessa, Elyas, Anita, Liana, Ophelia, Preston, Sophie-Louise, Daria, Isha, Ellesse, Isabella, Chay, Ayaan, Nojus, Monica, Ella-Mae, Ellisha, Alessio, Miller
+Jevon, Kaydan, Isha, Edgar, Nabil, Sila, Fearne, Alessio, Luci, Harlow, Toby, Rohan, Maariyah, Corben, Josephine, Kendrick, Umer, Alys, Ellenor, Muhammed, Mahdi, Isma, Horace, Skye, Shaan, Ismael
+Oliver, Mark, Ariana, Maciej, Toyah, Saira, Nelson, Eamonn, Derek, Cadence, Abdi, Maryam, Humzah, Cassia
+Jasleen, Rahma, Siena, Ainsley, Rudra, Misbah, Millie, Kai, Elliott, Nadia, Arham, Liana, Izabelle, Luka, Cloe, Jennie, Skye, Emma-Louise, Ellenor, Josephine, Kajus, Ella-Louise, Camilla, Kennedy
diff --git a/data/small_invites.txt b/data/small_invites.txt
new file mode 100644 (file)
index 0000000..814b59c
--- /dev/null
@@ -0,0 +1,10 @@
+Tilly, Daisy-May, Tori
+Iona, Deniz, Kobe, Grayson, Luka
+Demi, Reanne, Tori
+Dafydd, Reanne, Rohit, Kai, Iona, Nojus
+Tommy, Rosa, Demi
+Daisy-May, Tilly, Grayson, Deniz, Kobe, Tommy, Rohit
+Sultan, Iona, Dafydd, Rosa, Kobe, Devan
+Tilly, Rohit, Tori, Deniz, Kobe, Jennie
+Luka, Tori, Tommy
+Kobe, Rosa, Demi
diff --git a/modest.css b/modest.css
new file mode 100644 (file)
index 0000000..947a9ea
--- /dev/null
@@ -0,0 +1,219 @@
+@media print {
+  *,
+  *:before,
+  *:after {
+    background: transparent !important;
+    color: #000 !important;
+    box-shadow: none !important;
+    text-shadow: none !important;
+  }
+
+  a,
+  a:visited {
+    text-decoration: underline;
+  }
+
+  a[href]:after {
+    content: " (" attr(href) ")";
+  }
+
+  abbr[title]:after {
+    content: " (" attr(title) ")";
+  }
+
+  a[href^="#"]:after,
+  a[href^="javascript:"]:after {
+    content: "";
+  }
+
+  pre,
+  blockquote {
+    border: 1px solid #999;
+    page-break-inside: avoid;
+  }
+
+  thead {
+    display: table-header-group;
+  }
+
+  tr,
+  img {
+    page-break-inside: avoid;
+  }
+
+  img {
+    max-width: 100% !important;
+  }
+
+  p,
+  h2,
+  h3 {
+    orphans: 3;
+    widows: 3;
+  }
+
+  h2,
+  h3 {
+    page-break-after: avoid;
+  }
+}
+
+pre,
+code {
+  font-family: Menlo, Monaco, "Courier New", monospace;
+}
+
+pre {
+  padding: .5rem;
+  line-height: 1.25;
+  overflow-x: scroll;
+}
+
+a,
+a:visited {
+  color: #3498db;
+}
+
+a:hover,
+a:focus,
+a:active {
+  color: #2980b9;
+}
+
+.modest-no-decoration {
+  text-decoration: none;
+}
+
+html {
+  font-size: 12px;
+}
+
+@media screen and (min-width: 32rem) and (max-width: 48rem) {
+  html {
+    font-size: 15px;
+  }
+}
+
+@media screen and (min-width: 48rem) {
+  html {
+    font-size: 16px;
+  }
+}
+
+body {
+  line-height: 1.85;
+}
+
+p,
+.modest-p {
+  font-size: 1rem;
+  margin-bottom: 1.3rem;
+}
+
+h1,
+.modest-h1,
+h2,
+.modest-h2,
+h3,
+.modest-h3,
+h4,
+.modest-h4 {
+  margin: 1.414rem 0 .5rem;
+  font-weight: inherit;
+  line-height: 1.42;
+}
+
+h1,
+.modest-h1 {
+  margin-top: 0;
+  font-size: 3.998rem;
+}
+
+h2,
+.modest-h2 {
+  font-size: 2.827rem;
+}
+
+h3,
+.modest-h3 {
+  font-size: 1.999rem;
+}
+
+h4,
+.modest-h4 {
+  font-size: 1.414rem;
+}
+
+h5,
+.modest-h5 {
+  font-size: 1.121rem;
+}
+
+h6,
+.modest-h6 {
+  font-size: .88rem;
+}
+
+small,
+.modest-small {
+  font-size: .707em;
+}
+
+/* https://github.com/mrmrs/fluidity */
+
+img,
+canvas,
+iframe,
+video,
+svg,
+select,
+textarea {
+  max-width: 100%;
+}
+
+@import url(http://fonts.googleapis.com/css?family=Open+Sans+Condensed:300,300italic,700);
+
+@import url(http://fonts.googleapis.com/css?family=Arimo:700,700italic);
+
+html {
+  font-size: 18px;
+  max-width: 100%;
+}
+
+body {
+  color: #444;
+  font-family: 'Open Sans Condensed', sans-serif;
+  font-weight: 300;
+  margin: 0 auto;
+  max-width: 48rem;
+  line-height: 1.45;
+  padding: .25rem;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  font-family: Arimo, Helvetica, sans-serif;
+}
+
+h1,
+h2,
+h3 {
+  border-bottom: 2px solid #fafafa;
+  margin-bottom: 1.15rem;
+  padding-bottom: .5rem;
+  text-align: center;
+}
+
+blockquote {
+  border-left: 8px solid #fafafa;
+  padding: 1rem;
+}
+
+pre,
+code {
+  background-color: #fafafa;
+}
\ No newline at end of file
diff --git a/src/Main.hs b/src/Main.hs
new file mode 100644 (file)
index 0000000..9cd992d
--- /dev/null
@@ -0,0 +1,5 @@
+module Main where
+
+main :: IO ()
+main = do
+  putStrLn "hello world"
diff --git a/src/task0/task0.hs b/src/task0/task0.hs
new file mode 100644 (file)
index 0000000..ee7d578
--- /dev/null
@@ -0,0 +1,37 @@
+import qualified Data.HashMap.Strict as M
+import Data.List (foldl')        -- import the strict fold
+import Data.List.Split (splitOn)
+
+-- a key-value store for recording how often each name is seen
+type NameCount = M.HashMap String Int
+
+main :: IO ()
+main = do 
+        -- text <- readFile "data/small_invites.txt"
+        text <- readFile "data/00-invites.txt"
+        print $ part1 text
+        print $ part2 text
+
+-- use `words` here as I don't need to worry about the comma delimiters
+part1 :: String -> Int
+part1  = maximum . map (length . words) . lines 
+
+part2 :: String -> Int
+part2 inviteText = M.size popular
+    where -- split names on the delimieter, use `concatMap` to give just one long list
+          invites = concatMap (splitOn ", ") $ lines inviteText
+          -- count the names
+          invited = nameCounts invites
+          -- popular are those mentioned more than once
+          popular = M.filter (> 1) invited
+
+
+-- count how many times each name appears.
+-- It's a fold over the list of names, creating the name count HashMap.
+-- As each name is taken from the list, we find how many times we've seen it
+-- before, add one to it, then update the HashMap with the new count.
+nameCounts :: [String] -> NameCount
+nameCounts names = foldl' includeName M.empty names
+    where includeName nc name = M.insert name (1 + count name nc) nc
+          -- a default count of 0 for each name
+          count name = M.lookupDefault 0 name
\ No newline at end of file
diff --git a/stack.yaml b/stack.yaml
new file mode 100644 (file)
index 0000000..e67f48d
--- /dev/null
@@ -0,0 +1,71 @@
+# This file was automatically generated by 'stack init'
+#
+# Some commonly used options have been documented as comments in this file.
+# For advanced use and comprehensive documentation of the format, please see:
+# https://docs.haskellstack.org/en/stable/yaml_configuration/
+
+# Resolver to choose a 'specific' stackage snapshot or a compiler version.
+# A snapshot resolver dictates the compiler version and the set of packages
+# to be used for project dependencies. For example:
+#
+# resolver: lts-3.5
+# resolver: nightly-2015-09-21
+# resolver: ghc-7.10.2
+# resolver: ghcjs-0.1.0_ghc-7.10.2
+#
+# The location of a snapshot can be provided as a file or url. Stack assumes
+# a snapshot provided as a file might change, whereas a url resource does not.
+#
+# resolver: ./custom-snapshot.yaml
+# resolver: https://example.com/snapshots/2018-01-01.yaml
+resolver: lts-12.9
+
+# User packages to be built.
+# Various formats can be used as shown in the example below.
+#
+# packages:
+# - some-directory
+# - https://example.com/foo/bar/baz-0.0.2.tar.gz
+# - location:
+#    git: https://github.com/commercialhaskell/stack.git
+#    commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a
+# - location: https://github.com/commercialhaskell/stack/commit/e7b331f14bcffb8367cd58fbfc8b40ec7642100a
+#  subdirs:
+#  - auto-update
+#  - wai
+packages:
+- .
+# Dependency packages to be pulled from upstream that are not in the resolver
+# using the same syntax as the packages field.
+# (e.g., acme-missiles-0.3)
+# extra-deps: []
+
+# Override default flag values for local packages and extra-deps
+# flags: {}
+
+# Extra package databases containing global packages
+# extra-package-dbs: []
+
+# Control whether we use the GHC we find on the path
+# system-ghc: true
+#
+# Require a specific version of stack, using version ranges
+# require-stack-version: -any # Default
+# require-stack-version: ">=1.7"
+#
+# Override the architecture used by stack, especially useful on Windows
+# arch: i386
+# arch: x86_64
+#
+# Extra directories used by stack for building
+# extra-include-dirs: [/path/to/dir]
+# extra-lib-dirs: [/path/to/dir]
+#
+# Allow a newer minor version of GHC than the snapshot specifies
+# compiler-check: newer-minor
+
+ghc-options:
+  ! '$locals': -O2 -Wall -Wno-missing-signatures -threaded -rtsopts -with-rtsopts=-N
+
+extra-deps:
+- parsec-numbers-0.1.0
\ No newline at end of file
diff --git a/summerofcode2018soln.cabal b/summerofcode2018soln.cabal
new file mode 100644 (file)
index 0000000..ddeb7ef
--- /dev/null
@@ -0,0 +1,28 @@
+name:                summerofcode2018soln
+version:             0.1.0.0
+-- synopsis:
+-- description:
+homepage:            https://github.com/neilnjae/summerofcode2018soln#readme
+license:             BSD3
+license-file:        LICENSE
+author:              Neil Smith
+maintainer:          noone@njae.me.uk
+copyright:           2016 Neil Smith
+category:            None
+build-type:          Simple
+cabal-version:       >=1.10
+extra-source-files:  README.md
+
+executable summerofcode2018soln
+  hs-source-dirs:      src
+  main-is:             Main.hs
+  default-language:    Haskell2010
+  build-depends:       base >= 4.7 && < 5
+
+executable task0
+  hs-source-dirs:      src/task0
+  main-is:             task0.hs
+  default-language:    Haskell2010
+  build-depends:       base >= 4.7 && < 5
+                     , unordered-containers
+                     , split
\ No newline at end of file
diff --git a/summerofcode2018soln.sublime-project b/summerofcode2018soln.sublime-project
new file mode 100644 (file)
index 0000000..24db303
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "folders":
+       [
+               {
+                       "path": "."
+               }
+       ]
+}