1
0
Fork 0

statistics stub

main
Sebastian Steger 2025-08-20 15:40:18 +02:00
parent dab8a36c8f
commit c8a5cfa4d5
3 changed files with 130 additions and 0 deletions

View File

@ -0,0 +1,16 @@
# Assignment - Statistics
The file `08-statistics/data.csv` contains random data of students. It consists of the following columns:
- first name
- last name
- study subject
The rest of the columns -- and that number may vary -- contain points for different tasks. The first row is a header.
Your task is to Write a program that reads a filename from standard input. The corresponding csv-file shall be parsed and then the following statistics shall be computed and printed to standard output:
- the best student, i.e. the student with the most accumulated points (name and points shall be printed)
- the average points of all rows for each subject (subject and average points shall be printed in ascending order)
Implement your solution in the file `08-statistics/statistics.hs` and upload the file to moodle.

View File

@ -0,0 +1,97 @@
First Name,Last Name,Subject,Task1,Task2,Task3,Task4,Task5
Alice,Johnson,IB,87,45,68,92,33
Bob,Smith,CSB,56,79,42,88,12
Charlie,Williams,IMB,73,94,35,64,89
David,Brown,UIB,41,59,77,29,83
Emma,Jones,IB,99,21,48,75,56
Frank,Garcia,CSB,32,81,94,55,23
Grace,Miller,IMB,74,53,61,95,39
Henry,Davis,UIB,90,40,28,76,65
Isabella,Rodriguez,IB,57,86,72,49,100
Jack,Martinez,CSB,64,31,59,97,14
Liam,Hernandez,IMB,85,67,50,78,41
Mia,Lopez,UIB,44,92,33,56,81
Noah,Gonzalez,IB,68,39,74,82,47
Olivia,Wilson,CSB,95,20,62,53,34
Paul,Anderson,IMB,29,88,49,31,77
Sophia,Thomas,UIB,81,56,93,42,69
Ethan,Moore,IB,47,77,65,59,92
Zoe,Taylor,CSB,38,95,40,70,58
Lucas,Harris,IMB,99,45,83,62,37
Ava,Clark,UIB,53,66,91,85,29
Benjamin,Walker,IB,71,58,80,34,61
Chloe,Hall,CSB,76,23,67,47,94
Daniel,Allen,IMB,39,82,55,90,73
Ella,Young,UIB,86,32,99,60,25
James,King,IB,42,75,48,93,57
Madison,Wright,CSB,63,54,72,51,88
Nathan,Scott,IMB,91,37,79,68,45
Emma,Green,UIB,50,89,31,77,61
Jacob,Baker,IB,74,69,58,46,97
Emily,Adams,CSB,88,41,66,79,30
Samuel,Nelson,IMB,33,85,92,40,50
Sophia,Carter,UIB,69,47,71,58,94
Alexander,Mitchell,IB,57,98,36,61,82
Victoria,Perez,CSB,92,28,64,73,49
William,Roberts,IMB,45,76,89,55,31
Ella,Turner,UIB,78,59,41,96,68
Daniel,Phillips,IB,60,32,85,71,43
Natalie,Campbell,CSB,55,74,99,28,79
Mason,Parker,IMB,93,50,39,82,66
Hannah,Evans,UIB,48,69,57,95,22
Christopher,Edwards,IB,90,88,34,53,72
Lucy,Collins,CSB,31,46,81,77,56
Gabriel,Stewart,IMB,65,79,62,90,44
Avery,Morris,UIB,80,23,47,36,97
Ryan,Ross,IB,58,71,83,45,74
Sophie,Reed,CSB,99,33,60,81,51
Isaac,Adams,IMB,42,92,30,57,85
Leah,Bennett,UIB,76,64,55,89,39
Tyler,Barnes,IB,67,40,78,95,20
Scarlett,Morgan,CSB,34,84,91,47,53
John,White,IMB,89,25,72,69,98
Eleanor,James,UIB,54,58,49,87,62
Caleb,Wood,IB,31,100,37,46,81
Amelia,Hill,CSB,73,45,79,66,50
Julian,Scott,IMB,97,34,89,22,76
Charlotte,Bryant,UIB,63,92,41,88,32
Isaiah,Mitchell,IB,81,68,52,39,74
Lily,Foster,CSB,56,97,44,85,29
Elijah,Howard,IMB,70,61,36,90,99
Peyton,Washington,UIB,49,82,67,31,75
Xavier,Cook,IB,88,55,93,42,64
Nora,Bailey,CSB,37,72,57,96,47
Owen,Rivera,IMB,59,30,80,77,91
Harper,Cooper,UIB,50,99,33,28,65
Eli,Fisher,IB,78,40,85,92,53
Mila,Harrison,CSB,62,47,71,89,31
Adam,Romero,IMB,34,66,98,42,75
Stella,Patel,UIB,96,39,54,87,68
Carson,Cox,IB,42,55,79,100,27
Luna,Sanders,CSB,88,74,46,29,83
Connor,Henderson,IMB,97,32,53,60,98
Brooklyn,Bishop,UIB,45,90,61,72,31
Andrew,Griffin,IB,58,42,87,65,49
Natalia,Russell,CSB,70,23,74,56,92
Jason,Myers,IMB,81,67,35,48,79
Alexa,Hayes,UIB,37,98,55,93,42
Christian,Long,IB,64,71,82,45,57
Zoey,Gibson,CSB,90,54,38,100,73
Brayden,Graham,IMB,39,89,66,53,31
Maya,Sullivan,UIB,85,77,62,94,25
Jaxon,Ford,IB,48,35,100,71,83
Claire,Wallace,CSB,59,46,88,38,76
Dominic,Cole,IMB,78,92,44,67,50
Eva,Jenkins,UIB,100,29,53,79,61
Riley,Perkins,IB,55,97,31,84,30
Leo,Brooks,CSB,72,40,91,45,99
Hailey,Reynolds,IMB,31,58,77,90,28
Aaron,Fox,UIB,83,72,61,35,48
Kennedy,Stevens,IB,41,66,85,92,53
Sebastian,Webb,CSB,99,33,60,81,51
Melanie,Ward,IMB,76,64,55,89,39
Adrian,Bishop,UIB,67,40,78,95,20
Jasmine,Cook,IB,34,84,91,47,53
Miles,Barnes,CSB,89,25,72,69,98
Savannah,Wood,IMB,54,58,49,87,62
Hudson,Hill,UIB,31,100,37,46,81
1 First Name Last Name Subject Task1 Task2 Task3 Task4 Task5
2 Alice Johnson IB 87 45 68 92 33
3 Bob Smith CSB 56 79 42 88 12
4 Charlie Williams IMB 73 94 35 64 89
5 David Brown UIB 41 59 77 29 83
6 Emma Jones IB 99 21 48 75 56
7 Frank Garcia CSB 32 81 94 55 23
8 Grace Miller IMB 74 53 61 95 39
9 Henry Davis UIB 90 40 28 76 65
10 Isabella Rodriguez IB 57 86 72 49 100
11 Jack Martinez CSB 64 31 59 97 14
12 Liam Hernandez IMB 85 67 50 78 41
13 Mia Lopez UIB 44 92 33 56 81
14 Noah Gonzalez IB 68 39 74 82 47
15 Olivia Wilson CSB 95 20 62 53 34
16 Paul Anderson IMB 29 88 49 31 77
17 Sophia Thomas UIB 81 56 93 42 69
18 Ethan Moore IB 47 77 65 59 92
19 Zoe Taylor CSB 38 95 40 70 58
20 Lucas Harris IMB 99 45 83 62 37
21 Ava Clark UIB 53 66 91 85 29
22 Benjamin Walker IB 71 58 80 34 61
23 Chloe Hall CSB 76 23 67 47 94
24 Daniel Allen IMB 39 82 55 90 73
25 Ella Young UIB 86 32 99 60 25
26 James King IB 42 75 48 93 57
27 Madison Wright CSB 63 54 72 51 88
28 Nathan Scott IMB 91 37 79 68 45
29 Emma Green UIB 50 89 31 77 61
30 Jacob Baker IB 74 69 58 46 97
31 Emily Adams CSB 88 41 66 79 30
32 Samuel Nelson IMB 33 85 92 40 50
33 Sophia Carter UIB 69 47 71 58 94
34 Alexander Mitchell IB 57 98 36 61 82
35 Victoria Perez CSB 92 28 64 73 49
36 William Roberts IMB 45 76 89 55 31
37 Ella Turner UIB 78 59 41 96 68
38 Daniel Phillips IB 60 32 85 71 43
39 Natalie Campbell CSB 55 74 99 28 79
40 Mason Parker IMB 93 50 39 82 66
41 Hannah Evans UIB 48 69 57 95 22
42 Christopher Edwards IB 90 88 34 53 72
43 Lucy Collins CSB 31 46 81 77 56
44 Gabriel Stewart IMB 65 79 62 90 44
45 Avery Morris UIB 80 23 47 36 97
46 Ryan Ross IB 58 71 83 45 74
47 Sophie Reed CSB 99 33 60 81 51
48 Isaac Adams IMB 42 92 30 57 85
49 Leah Bennett UIB 76 64 55 89 39
50 Tyler Barnes IB 67 40 78 95 20
51 Scarlett Morgan CSB 34 84 91 47 53
52 John White IMB 89 25 72 69 98
53 Eleanor James UIB 54 58 49 87 62
54 Caleb Wood IB 31 100 37 46 81
55 Amelia Hill CSB 73 45 79 66 50
56 Julian Scott IMB 97 34 89 22 76
57 Charlotte Bryant UIB 63 92 41 88 32
58 Isaiah Mitchell IB 81 68 52 39 74
59 Lily Foster CSB 56 97 44 85 29
60 Elijah Howard IMB 70 61 36 90 99
61 Peyton Washington UIB 49 82 67 31 75
62 Xavier Cook IB 88 55 93 42 64
63 Nora Bailey CSB 37 72 57 96 47
64 Owen Rivera IMB 59 30 80 77 91
65 Harper Cooper UIB 50 99 33 28 65
66 Eli Fisher IB 78 40 85 92 53
67 Mila Harrison CSB 62 47 71 89 31
68 Adam Romero IMB 34 66 98 42 75
69 Stella Patel UIB 96 39 54 87 68
70 Carson Cox IB 42 55 79 100 27
71 Luna Sanders CSB 88 74 46 29 83
72 Connor Henderson IMB 97 32 53 60 98
73 Brooklyn Bishop UIB 45 90 61 72 31
74 Andrew Griffin IB 58 42 87 65 49
75 Natalia Russell CSB 70 23 74 56 92
76 Jason Myers IMB 81 67 35 48 79
77 Alexa Hayes UIB 37 98 55 93 42
78 Christian Long IB 64 71 82 45 57
79 Zoey Gibson CSB 90 54 38 100 73
80 Brayden Graham IMB 39 89 66 53 31
81 Maya Sullivan UIB 85 77 62 94 25
82 Jaxon Ford IB 48 35 100 71 83
83 Claire Wallace CSB 59 46 88 38 76
84 Dominic Cole IMB 78 92 44 67 50
85 Eva Jenkins UIB 100 29 53 79 61
86 Riley Perkins IB 55 97 31 84 30
87 Leo Brooks CSB 72 40 91 45 99
88 Hailey Reynolds IMB 31 58 77 90 28
89 Aaron Fox UIB 83 72 61 35 48
90 Kennedy Stevens IB 41 66 85 92 53
91 Sebastian Webb CSB 99 33 60 81 51
92 Melanie Ward IMB 76 64 55 89 39
93 Adrian Bishop UIB 67 40 78 95 20
94 Jasmine Cook IB 34 84 91 47 53
95 Miles Barnes CSB 89 25 72 69 98
96 Savannah Wood IMB 54 58 49 87 62
97 Hudson Hill UIB 31 100 37 46 81

View File

@ -0,0 +1,17 @@
import Data.List (nub, sortOn)
import System.IO
-- separator -> Input -> Separated Input
-- split :: Char -> String -> [String]
-- data Entry =
-- averages :: [Entry] -> [(String, Float)]
-- content -> Entries
-- parse :: String -> [Entry]
main :: IO ()
main = do
putStrLn "Enter a filename: "
putStrLn "..."