From d2a2d1c85fd037cf95999bfbde1f80cb9fa37f5d Mon Sep 17 00:00:00 2001 From: Neil Smith Date: Mon, 17 Sep 2018 10:04:23 +0100 Subject: [PATCH 1/1] Initial commit with day 1 --- .gitignore | 42 +++++ README.html | 57 +++++++ README.md | 92 +++++++++++ Setup.hs | 2 + data/00-invites.txt | 200 ++++++++++++++++++++++++ data/small_invites.txt | 10 ++ modest.css | 219 +++++++++++++++++++++++++++ src/Main.hs | 5 + src/task0/task0.hs | 37 +++++ stack.yaml | 71 +++++++++ summerofcode2018soln.cabal | 28 ++++ summerofcode2018soln.sublime-project | 8 + 12 files changed, 771 insertions(+) create mode 100644 .gitignore create mode 100644 README.html create mode 100644 README.md create mode 100644 Setup.hs create mode 100644 data/00-invites.txt create mode 100644 data/small_invites.txt create mode 100644 modest.css create mode 100644 src/Main.hs create mode 100644 src/task0/task0.hs create mode 100644 stack.yaml create mode 100644 summerofcode2018soln.cabal create mode 100644 summerofcode2018soln.sublime-project diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..593051d --- /dev/null +++ b/.gitignore @@ -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 index 0000000..779917d --- /dev/null +++ b/README.html @@ -0,0 +1,57 @@ + + + + + + + Summer of Code 2018 + + + + + +

Code to solve the Summer of Code puzzles. These sample solutions are in Python and Haskell.

+

Python

+

I develop the solutions with Jupyter Lab.

+

Haskell

+

Learn you a Haskell, Introduction to Haskell 98, and Hackage are good resources.

+

The Stack documentation and How I Start: Haskell 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 for packages, so make sure you read the correct documentation for the packages included in it.

+

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.)

+ + diff --git a/README.md b/README.md new file mode 100644 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 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 index 0000000..9c3389f --- /dev/null +++ b/data/00-invites.txt @@ -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 index 0000000..814b59c --- /dev/null +++ b/data/small_invites.txt @@ -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 index 0000000..947a9ea --- /dev/null +++ b/modest.css @@ -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 index 0000000..9cd992d --- /dev/null +++ b/src/Main.hs @@ -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 index 0000000..ee7d578 --- /dev/null +++ b/src/task0/task0.hs @@ -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 index 0000000..e67f48d --- /dev/null +++ b/stack.yaml @@ -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 index 0000000..ddeb7ef --- /dev/null +++ b/summerofcode2018soln.cabal @@ -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 index 0000000..24db303 --- /dev/null +++ b/summerofcode2018soln.sublime-project @@ -0,0 +1,8 @@ +{ + "folders": + [ + { + "path": "." + } + ] +} -- 2.34.1