Jdi na navigaci předmětu

2. Porovnání (Newtonův fraktál)

Porovnání jednotlivých řešení po měkkém deadline druhého úkolu.

using CSV, DataFrames
"""

    record_rank!(data_frame, column)

Pomocná hodnotící funkce přidělující body do sloupce `score` tabulky
`data_frame` podle pořadí ve sloupci `column` (seřazeném).

"""
function record_rank!(data_frame::DataFrame, column::Symbol)
    rank = 1
    value = first(data_frame[!, column])

    for row in eachrow(data_frame)
        if ismissing(row[column])
            row[:score] += 42
            continue
        elseif ismissing(value)
            value = row[column]
        elseif row[column] != value
            value = row[column]
            rank += 1
        end

        row[:score] += rank
    end
end;

Načtení dat, smazání username a přidání "skórovacího" sloupce a výpis základních statistik datasetu.

df = CSV.read("benchmark02.csv", DataFrame)
df[!, "score"] .= 0
select!(df, Not(:username))
describe(df)
11×7 DataFrame
Rowvariablemeanminmedianmaxnmissingeltype
SymbolUnion…AnyUnion…AnyInt64Type
1nickAeloria of the Seven Sigilskalvotom0String
2code118.52942120.01901Union{Missing, Int64}
3comment38.9021430.01311Union{Missing, Int64}
4correctness0.942308false1.0true0Bool
5newton_t2776.931.1232991.783614.382Union{Missing, Float64}
6newton_m0.000.002Union{Missing, Int64}
7constructor_t1.40008e6201.06.46416e57.58687e62Union{Missing, Float64}
8constructor_m3.21603e7240002083.20003e7480003842Union{Missing, Int64}
9compute_t1.00658e91.19308e88.3802e86.20475e92Union{Missing, Float64}
10compute_m2.93956e81441.28e861049243202Union{Missing, Int64}
11score0.000.000Int64

Do měření započítávám pouze odevzdání, která počítají správné výsledky na jednoduchém případu.

Dále mezi hodnocené zařazuji i své odevzdání (nick kalvotom), kód vygenerovaný pomocí ChatGPT (nick chatgpt).

df = df[df[:, :correctness], :];

Parametry kódu

Počet řádek kódu. Čím méně, tím lépe, což ale vždy neplatí, že. Měření pomocí nástroje cloc.

sort!(df, :code)
record_rank!(df, :code)
show(df[!,[:nick, :code, :score]], allrows=true)
49×3 DataFrame
 Row  nick                               code    score 
      String                             Int64?  Int64 
─────┼──────────────────────────────────────────────────
   1 │ Orlien Silverchant                     73      1
   2 │ Zytherin the Forgotten                 75      2
   3 │ Ilyrien Dawnpetal                      81      3
   4 │ Rhovar Mistborn                        90      4
   5 │ Morvain Duskwalker                     92      5
   6 │ Galdur the Wise                        93      6
   7 │ Erenwyn the Whispering                 93      6
   8 │ Elithar Dawnseeker                     94      7
   9 │ Seraphyne Windwhisper                  95      8
  10 │ Talvorn Runebreaker                    96      9
  11 │ Caelwyn of the Crystal Spire           97     10
  12 │ Cyralis Moonbinder                     97     10
  13 │ Sareth the Verdant                     98     11
  14 │ Dravok the Gloomed                     98     11
  15 │ kalvotom                              100     12
  16 │ Tirvian Shadowmantle                  100     12
  17 │ Maranelle Frostpetal                  110     13
  18 │ Maerilith Stormweaver                 111     14
  19 │ Thauren the Wandering                 111     14
  20 │ Althira Starweaver                    111     14
  21 │ Eldaric Runehand                      113     15
  22 │ Vessryn Bloodsong                     114     16
  23 │ Lyssara Moonveil                      115     17
  24 │ Korvath the Obsidian                  119     18
  25 │ Talmek the Shattered                  120     19
  26 │ Mirelda Starbloom                     122     20
  27 │ Faelora Nightbloom                    122     20
  28 │ Yseline Frostwhisper                  122     20
  29 │ Kerron the Unseen                     123     21
  30 │ Selvethra of the Whispering Woods     124     22
  31 │ Vyrion the Eternal                    126     23
  32 │ Aeloria of the Seven Sigils           126     23
  33 │ Thalendir Brightflame                 129     24
  34 │ Velmaris Lightbinder                  132     25
  35 │ Korthen Deepflame                     134     26
  36 │ Gorvath Ironchant                     134     26
  37 │ Zerathorn the Pale                    135     27
  38 │ Xandor the Arcane                     135     27
  39 │ Valtheris of the Amber Flame          135     27
  40 │ Thamior Embercloak                    138     28
  41 │ Lunara Dreambinder                    141     29
  42 │ Nimriel the Golden                    143     30
  43 │ Dromek the Bound                      143     30
  44 │ chatgpt                               144     31
  45 │ Ivenar Spellforge                     155     32
  46 │ Orren Emberforge                      160     33
  47 │ Velindra the Azure                    172     34
  48 │ Bramor the Tempest                    179     35
  49 │ Eldwyn of the Shimmering Vale         190     36

Počet řádek komentářů (včetně docstringů). Zde naopak čím více, tím lépe.

sort!(df, :comment, rev=true)
record_rank!(df, :comment)
show(df[!,[:nick, :comment, :score]], allrows=true)
49×3 DataFrame
 Row  nick                               comment  score 
      String                             Int64?   Int64 
─────┼───────────────────────────────────────────────────
   1 │ Bramor the Tempest                     131     36
   2 │ Eldaric Runehand                       119     17
   3 │ Eldwyn of the Shimmering Vale          118     39
   4 │ Faelora Nightbloom                      87     24
   5 │ Maerilith Stormweaver                   65     19
   6 │ Kerron the Unseen                       64     27
   7 │ Ilyrien Dawnpetal                       61     10
   8 │ Dromek the Bound                        61     37
   9 │ Orlien Silverchant                      60      9
  10 │ chatgpt                                 60     39
  11 │ Xandor the Arcane                       55     36
  12 │ Aeloria of the Seven Sigils             49     33
  13 │ Talmek the Shattered                    47     30
  14 │ Zerathorn the Pale                      45     39
  15 │ Rhovar Mistborn                         43     17
  16 │ Korthen Deepflame                       42     40
  17 │ Seraphyne Windwhisper                   41     23
  18 │ Velmaris Lightbinder                    41     40
  19 │ Nimriel the Golden                      41     45
  20 │ Morvain Duskwalker                      40     21
  21 │ Thamior Embercloak                      40     44
  22 │ Lunara Dreambinder                      36     46
  23 │ Vessryn Bloodsong                       32     34
  24 │ Korvath the Obsidian                    32     36
  25 │ kalvotom                                31     31
  26 │ Valtheris of the Amber Flame            30     47
  27 │ Cyralis Moonbinder                      29     31
  28 │ Selvethra of the Whispering Woods       27     44
  29 │ Thalendir Brightflame                   26     47
  30 │ Caelwyn of the Crystal Spire            25     34
  31 │ Orren Emberforge                        24     58
  32 │ Maranelle Frostpetal                    23     39
  33 │ Yseline Frostwhisper                    23     46
  34 │ Gorvath Ironchant                       23     52
  35 │ Lyssara Moonveil                        22     44
  36 │ Tirvian Shadowmantle                    21     40
  37 │ Galdur the Wise                         20     35
  38 │ Talvorn Runebreaker                     20     38
  39 │ Dravok the Gloomed                      20     40
  40 │ Zytherin the Forgotten                  19     32
  41 │ Elithar Dawnseeker                      19     37
  42 │ Erenwyn the Whispering                  18     37
  43 │ Althira Starweaver                      18     45
  44 │ Vyrion the Eternal                      18     54
  45 │ Thauren the Wandering                   17     46
  46 │ Sareth the Verdant                      16     44
  47 │ Velindra the Azure                      15     68
  48 │ Mirelda Starbloom                       14     55
  49 │ Ivenar Spellforge                       14     67

Metoda newton

Test efektivity a paměťové náročnosti metody newton, která provádí čistě iterace. Rychlost (čas, první tabulka) je přepočtena relativně vzhledem k nejrychlejšímu řešení. Druhá tabulka není normalizována, ani to nejde, vzhledem k nulovým hodnotám.

Pozor, chatgpt sice vychází nejrychleji, ale v kódu dotčeném kódu je chyba, která výpočet ukončí dříve (s nesprávným výsledkem).

sort!(df, :newton_t)
df[!, :newton_t] /= df[1, :newton_t]
record_rank!(df, :newton_t)
show(df[!,[:nick, :newton_t, :score]], allrows=true)
49×3 DataFrame
 Row  nick                               newton_t  score 
      String                             Float64   Int64 
─────┼────────────────────────────────────────────────────
   1 │ chatgpt                                1.0      40
   2 │ kalvotom                            1827.94     33
   3 │ Eldaric Runehand                    1838.82     20
   4 │ Ilyrien Dawnpetal                   1906.2      14
   5 │ Maerilith Stormweaver               1941.92     24
   6 │ Dravok the Gloomed                  1942.91     46
   7 │ Kerron the Unseen                   1953.79     34
   8 │ Caelwyn of the Crystal Spire        1968.73     42
   9 │ Elithar Dawnseeker                  1991.49     46
  10 │ Vessryn Bloodsong                   2006.43     44
  11 │ Selvethra of the Whispering Woods   2011.28     55
  12 │ Morvain Duskwalker                  2013.26     33
  13 │ Mirelda Starbloom                   2020.28     68
  14 │ Thauren the Wandering               2023.15     60
  15 │ Althira Starweaver                  2083.7      60
  16 │ Orlien Silverchant                  2089.54     25
  17 │ Rhovar Mistborn                     2110.42     34
  18 │ Aeloria of the Seven Sigils         2134.26     51
  19 │ Vyrion the Eternal                  2236.27     73
  20 │ Galdur the Wise                     2436.53     55
  21 │ Lyssara Moonveil                    2445.53     65
  22 │ Valtheris of the Amber Flame        2507.96     69
  23 │ Velindra the Azure                  2570.4      91
  24 │ Lunara Dreambinder                  2590.19     70
  25 │ Maranelle Frostpetal                2650.74     64
  26 │ Faelora Nightbloom                  2677.45     50
  27 │ Talvorn Runebreaker                 2746.77     65
  28 │ Tirvian Shadowmantle                2754.56     68
  29 │ Bramor the Tempest                  2770.15     65
  30 │ Velmaris Lightbinder                2772.37     70
  31 │ Ivenar Spellforge                   2791.3      98
  32 │ Seraphyne Windwhisper               2797.97     55
  33 │ Thalendir Brightflame               2810.33     80
  34 │ Thamior Embercloak                  2817.01     78
  35 │ Yseline Frostwhisper                2817.01     80
  36 │ Erenwyn the Whispering              2828.14     72
  37 │ Dromek the Bound                    2849.29     73
  38 │ Zytherin the Forgotten              2885.02     69
  39 │ Cyralis Moonbinder                  2912.96     69
  40 │ Korvath the Obsidian                2937.44     75
  41 │ Korthen Deepflame                   2940.78     80
  42 │ Gorvath Ironchant                   2954.14     93
  43 │ Orren Emberforge                    2960.82    100
  44 │ Sareth the Verdant                  2966.38     87
  45 │ Nimriel the Golden                  2991.99     89
  46 │ Talmek the Shattered                2996.55     75
  47 │ Xandor the Arcane                   3060.11     82
  48 │ Zerathorn the Pale                  3105.85     86
  49 │ Eldwyn of the Shimmering Vale       3218.5      87

A pak paměť ve stejném experimentu, čím méně, tím lépe.

sort!(df, :newton_m)
record_rank!(df, :newton_m)
show(df[!, [:nick, :newton_m, :score]], allrows=true)
49×3 DataFrame
 Row  nick                               newton_m  score 
      String                             Int64?    Int64 
─────┼────────────────────────────────────────────────────
   1 │ chatgpt                                   0     41
   2 │ kalvotom                                  0     34
   3 │ Eldaric Runehand                          0     21
   4 │ Ilyrien Dawnpetal                         0     15
   5 │ Maerilith Stormweaver                     0     25
   6 │ Dravok the Gloomed                        0     47
   7 │ Kerron the Unseen                         0     35
   8 │ Caelwyn of the Crystal Spire              0     43
   9 │ Elithar Dawnseeker                        0     47
  10 │ Vessryn Bloodsong                         0     45
  11 │ Selvethra of the Whispering Woods         0     56
  12 │ Morvain Duskwalker                        0     34
  13 │ Mirelda Starbloom                         0     69
  14 │ Thauren the Wandering                     0     61
  15 │ Althira Starweaver                        0     61
  16 │ Orlien Silverchant                        0     26
  17 │ Rhovar Mistborn                           0     35
  18 │ Aeloria of the Seven Sigils               0     52
  19 │ Vyrion the Eternal                        0     74
  20 │ Galdur the Wise                           0     56
  21 │ Lyssara Moonveil                          0     66
  22 │ Valtheris of the Amber Flame              0     70
  23 │ Velindra the Azure                        0     92
  24 │ Lunara Dreambinder                        0     71
  25 │ Maranelle Frostpetal                      0     65
  26 │ Faelora Nightbloom                        0     51
  27 │ Talvorn Runebreaker                       0     66
  28 │ Tirvian Shadowmantle                      0     69
  29 │ Bramor the Tempest                        0     66
  30 │ Velmaris Lightbinder                      0     71
  31 │ Ivenar Spellforge                         0     99
  32 │ Seraphyne Windwhisper                     0     56
  33 │ Thalendir Brightflame                     0     81
  34 │ Thamior Embercloak                        0     79
  35 │ Yseline Frostwhisper                      0     81
  36 │ Erenwyn the Whispering                    0     73
  37 │ Dromek the Bound                          0     74
  38 │ Zytherin the Forgotten                    0     70
  39 │ Cyralis Moonbinder                        0     70
  40 │ Korvath the Obsidian                      0     76
  41 │ Korthen Deepflame                         0     81
  42 │ Gorvath Ironchant                         0     94
  43 │ Orren Emberforge                          0    101
  44 │ Sareth the Verdant                        0     88
  45 │ Nimriel the Golden                        0     90
  46 │ Talmek the Shattered                      0     76
  47 │ Xandor the Arcane                         0     83
  48 │ Zerathorn the Pale                        0     87
  49 │ Eldwyn of the Shimmering Vale             0     88

Konstruktor Newton

Test konstruktoru typu Newton z pohledu časové a paměťové náročnosti. Jak vidíte, i zde jde velký prostor pro zamyšlení.

sort!(df, :constructor_t)
df[!, :constructor_t] /= df[1, :constructor_t]
record_rank!(df, :constructor_t)
show(df[!,[:nick, :constructor_t, :score]], allrows=true)
49×3 DataFrame
 Row  nick                               constructor_t  score 
      String                             Float64        Int64 
─────┼─────────────────────────────────────────────────────────
   1 │ Dravok the Gloomed                       1.0         48
   2 │ Ilyrien Dawnpetal                        1.34328     17
   3 │ Faelora Nightbloom                       1.34328     53
   4 │ Tirvian Shadowmantle                     1.39801     72
   5 │ Korthen Deepflame                        1.39801     84
   6 │ Eldaric Runehand                         1.44279     25
   7 │ Valtheris of the Amber Flame             1.49254     75
   8 │ Caelwyn of the Crystal Spire             1.49751     49
   9 │ Elithar Dawnseeker                       1.54229     54
  10 │ Erenwyn the Whispering                   1.54229     80
  11 │ Orlien Silverchant                       1.54726     34
  12 │ Rhovar Mistborn                          1.59701     44
  13 │ Thalendir Brightflame                    1.59701     90
  14 │ Vyrion the Eternal                       1.6194      84
  15 │ kalvotom                                 1.64677     45
  16 │ Xandor the Arcane                        1.64677     94
  17 │ Vessryn Bloodsong                        1.69652     57
  18 │ Kerron the Unseen                        1.74129     48
  19 │ Maranelle Frostpetal                     1.84577     79
  20 │ Selvethra of the Whispering Woods        1.89055     71
  21 │ Thauren the Wandering                    1.9403      77
  22 │ Aeloria of the Seven Sigils              2.29353     69
  23 │ Velmaris Lightbinder                    20.5846      89
  24 │ Talvorn Runebreaker                     21.7836      85
  25 │ Zerathorn the Pale                    2960.41       107
  26 │ Althira Starweaver                    3471.58        82
  27 │ Orren Emberforge                      4879.07       123
  28 │ Bramor the Tempest                    4907.43        89
  29 │ Mirelda Starbloom                     6755.69        93
  30 │ Thamior Embercloak                    8835.09       104
  31 │ Galdur the Wise                      12349.2         82
  32 │ Lunara Dreambinder                   12506.7         98
  33 │ Sareth the Verdant                   12670.1        116
  34 │ Yseline Frostwhisper                 12805.1        110
  35 │ Morvain Duskwalker                   12842.9         64
  36 │ chatgpt                              13658.0         72
  37 │ Seraphyne Windwhisper                13837.8         88
  38 │ Talmek the Shattered                 14098.6        109
  39 │ Cyralis Moonbinder                   14140.8        104
  40 │ Dromek the Bound                     14385.5        109
  41 │ Lyssara Moonveil                     14788.7        102
  42 │ Maerilith Stormweaver                15070.0         62
  43 │ Eldwyn of the Shimmering Vale        15644.0        126
  44 │ Ivenar Spellforge                    15870.4        138
  45 │ Velindra the Azure                   16190.6        132
  46 │ Zytherin the Forgotten               17227.4        111
  47 │ Korvath the Obsidian                 17666.9        118
  48 │ Nimriel the Golden                   18624.9        133
  49 │ Gorvath Ironchant                    37745.6        138
sort!(df, :constructor_m)
record_rank!(df, :constructor_m)
show(df[!, [:nick, :constructor_m, :score]], allrows=true)
49×3 DataFrame
 Row  nick                               constructor_m  score 
      String                             Int64?         Int64 
─────┼─────────────────────────────────────────────────────────
   1 │ Dravok the Gloomed                      24000208     49
   2 │ Ilyrien Dawnpetal                       32000296     19
   3 │ Faelora Nightbloom                      32000296     55
   4 │ Tirvian Shadowmantle                    32000296     74
   5 │ Korthen Deepflame                       32000296     86
   6 │ Eldaric Runehand                        32000296     27
   7 │ Caelwyn of the Crystal Spire            32000296     51
   8 │ Elithar Dawnseeker                      32000296     56
   9 │ Erenwyn the Whispering                  32000296     82
  10 │ Orlien Silverchant                      32000296     36
  11 │ Rhovar Mistborn                         32000296     46
  12 │ Vyrion the Eternal                      32000296     86
  13 │ kalvotom                                32000296     47
  14 │ Xandor the Arcane                       32000296     96
  15 │ Vessryn Bloodsong                       32000296     59
  16 │ Maranelle Frostpetal                    32000296     81
  17 │ Selvethra of the Whispering Woods       32000296     73
  18 │ Thauren the Wandering                   32000296     79
  19 │ Aeloria of the Seven Sigils             32000296     71
  20 │ Velmaris Lightbinder                    32000296     91
  21 │ Talvorn Runebreaker                     32000296     87
  22 │ Zerathorn the Pale                      32000296    109
  23 │ Althira Starweaver                      32000296     84
  24 │ Orren Emberforge                        32000296    125
  25 │ Bramor the Tempest                      32000296     91
  26 │ Mirelda Starbloom                       32000296     95
  27 │ Thamior Embercloak                      32000296    106
  28 │ Galdur the Wise                         32000296     84
  29 │ Lunara Dreambinder                      32000296    100
  30 │ Sareth the Verdant                      32000296    118
  31 │ Yseline Frostwhisper                    32000296    112
  32 │ Morvain Duskwalker                      32000296     66
  33 │ chatgpt                                 32000296     74
  34 │ Seraphyne Windwhisper                   32000296     90
  35 │ Talmek the Shattered                    32000296    111
  36 │ Cyralis Moonbinder                      32000296    106
  37 │ Dromek the Bound                        32000296    111
  38 │ Lyssara Moonveil                        32000296    104
  39 │ Maerilith Stormweaver                   32000296     64
  40 │ Ivenar Spellforge                       32000296    140
  41 │ Velindra the Azure                      32000296    134
  42 │ Korvath the Obsidian                    32000296    120
  43 │ Nimriel the Golden                      32000296    135
  44 │ Gorvath Ironchant                       32000296    140
  45 │ Valtheris of the Amber Flame            32000312     78
  46 │ Thalendir Brightflame                   32000360     94
  47 │ Kerron the Unseen                       32000408     53
  48 │ Eldwyn of the Shimmering Vale           32000424    132
  49 │ Zytherin the Forgotten                  48000384    118

Metoda compute!

Test metody provádějící samotný výpočet a následné přiřazení výsledků k nalezeným kořenům. Opět testuji časovou a paměťovou náročnost.

sort!(df, :compute_t)
df[!, :compute_t] /= df[1, :compute_t]
record_rank!(df, :compute_t)
show(df[!,[:nick, :compute_t, :score]], allrows=true)
49×3 DataFrame
 Row  nick                               compute_t  score 
      String                             Float64    Int64 
─────┼─────────────────────────────────────────────────────
   1 │ Maerilith Stormweaver                1.0         65
   2 │ Thamior Embercloak                   3.7785     108
   3 │ Eldaric Runehand                     4.59084     30
   4 │ Selvethra of the Whispering Woods    4.62282     77
   5 │ Dravok the Gloomed                   4.81458     54
   6 │ kalvotom                             4.88751     53
   7 │ Caelwyn of the Crystal Spire         4.92029     58
   8 │ Kerron the Unseen                    5.06916     61
   9 │ Ilyrien Dawnpetal                    5.07804     28
  10 │ Mirelda Starbloom                    5.23881    105
  11 │ Morvain Duskwalker                   5.26121     77
  12 │ Vessryn Bloodsong                    5.3744      71
  13 │ Vyrion the Eternal                   5.58315     99
  14 │ Valtheris of the Amber Flame         6.41484     92
  15 │ Lyssara Moonveil                     6.4501     119
  16 │ Orlien Silverchant                   6.45402     52
  17 │ Velindra the Azure                   6.48516    151
  18 │ Rhovar Mistborn                      6.51762     64
  19 │ Thauren the Wandering                6.56443     98
  20 │ Lunara Dreambinder                   6.5742     120
  21 │ Galdur the Wise                      6.61648    105
  22 │ Talmek the Shattered                 6.83866    133
  23 │ Althira Starweaver                   6.8615     107
  24 │ Faelora Nightbloom                   6.95021     79
  25 │ Yseline Frostwhisper                 6.99482    137
  26 │ Bramor the Tempest                   7.05321    117
  27 │ Maranelle Frostpetal                 7.06329    108
  28 │ Velmaris Lightbinder                 7.07012    119
  29 │ Tirvian Shadowmantle                 7.072      103
  30 │ Xandor the Arcane                    7.18818    126
  31 │ Gorvath Ironchant                    7.19101    171
  32 │ Cyralis Moonbinder                   7.21077    138
  33 │ Aeloria of the Seven Sigils          7.22134    104
  34 │ Dromek the Bound                     7.23148    145
  35 │ Ivenar Spellforge                    7.31605    175
  36 │ Sareth the Verdant                   7.33179    154
  37 │ Korvath the Obsidian                 7.48923    157
  38 │ Zerathorn the Pale                   8.05274    147
  39 │ Nimriel the Golden                   8.08771    174
  40 │ Thalendir Brightflame                8.15173    134
  41 │ Erenwyn the Whispering               8.16038    123
  42 │ Talvorn Runebreaker                  8.48894    129
  43 │ Orren Emberforge                     8.50647    168
  44 │ Zytherin the Forgotten               8.56994    162
  45 │ Eldwyn of the Shimmering Vale        8.59489    177
  46 │ Korthen Deepflame                    8.74319    132
  47 │ Elithar Dawnseeker                   9.06717    103
  48 │ Seraphyne Windwhisper                9.75367    138
  49 │ chatgpt                             52.0062     123

A pak paměť, čím méně, tím lépe.

sort!(df, :compute_m)
record_rank!(df, :compute_m)
show(df[!, [:nick, :compute_m, :score]], allrows=true)
49×3 DataFrame
 Row  nick                               compute_m   score 
      String                             Int64?      Int64 
─────┼──────────────────────────────────────────────────────
   1 │ Talmek the Shattered                      144    134
   2 │ Selvethra of the Whispering Woods        1056     79
   3 │ Caelwyn of the Crystal Spire         40001024     61
   4 │ Eldaric Runehand                     96000000     34
   5 │ Dravok the Gloomed                   96000000     58
   6 │ Vessryn Bloodsong                    96000000     75
   7 │ Gorvath Ironchant                    96000000    175
   8 │ Eldwyn of the Shimmering Vale        96000000    181
   9 │ Maerilith Stormweaver               128000000     70
  10 │ kalvotom                            128000000     58
  11 │ Kerron the Unseen                   128000000     66
  12 │ Ilyrien Dawnpetal                   128000000     33
  13 │ Mirelda Starbloom                   128000000    110
  14 │ Morvain Duskwalker                  128000000     82
  15 │ Vyrion the Eternal                  128000000    104
  16 │ Valtheris of the Amber Flame        128000000     97
  17 │ Lunara Dreambinder                  128000000    125
  18 │ Galdur the Wise                     128000000    110
  19 │ Faelora Nightbloom                  128000000     84
  20 │ Yseline Frostwhisper                128000000    142
  21 │ Bramor the Tempest                  128000000    122
  22 │ Maranelle Frostpetal                128000000    113
  23 │ Velmaris Lightbinder                128000000    124
  24 │ Tirvian Shadowmantle                128000000    108
  25 │ Xandor the Arcane                   128000000    131
  26 │ Cyralis Moonbinder                  128000000    143
  27 │ Dromek the Bound                    128000000    150
  28 │ Ivenar Spellforge                   128000000    180
  29 │ Sareth the Verdant                  128000000    159
  30 │ Korvath the Obsidian                128000000    162
  31 │ Zerathorn the Pale                  128000000    152
  32 │ Velindra the Azure                  128016144    157
  33 │ Lyssara Moonveil                    144000000    126
  34 │ Nimriel the Golden                  160000624    182
  35 │ Orlien Silverchant                  176000000     61
  36 │ Rhovar Mistborn                     176000000     73
  37 │ Aeloria of the Seven Sigils         176000000    113
  38 │ Thalendir Brightflame               176000000    143
  39 │ Erenwyn the Whispering              176000000    132
  40 │ Zytherin the Forgotten              176000000    171
  41 │ Thamior Embercloak                  256000576    118
  42 │ Korthen Deepflame                   391497760    143
  43 │ Thauren the Wandering               407497760    110
  44 │ Althira Starweaver                  407497760    119
  45 │ Talvorn Runebreaker                 407497760    141
  46 │ Orren Emberforge                    407497760    180
  47 │ Elithar Dawnseeker                  593829600    116
  48 │ Seraphyne Windwhisper               639296000    152
  49 │ chatgpt                            6104924320    138

Závěrečná tabulka

Zaznamenávali jsme v každé kategorii (sdílené) pořadí. Čím nižší hodnota, tím lepší výsledek.

sort!(df, :score)
show(df[!,[:nick, :score]], allrows=true)
49×2 DataFrame
 Row  nick                               score 
      String                             Int64 
─────┼──────────────────────────────────────────
   1 │ Ilyrien Dawnpetal                     33
   2 │ Eldaric Runehand                      34
   3 │ Dravok the Gloomed                    58
   4 │ kalvotom                              58
   5 │ Caelwyn of the Crystal Spire          61
   6 │ Orlien Silverchant                    61
   7 │ Kerron the Unseen                     66
   8 │ Maerilith Stormweaver                 70
   9 │ Rhovar Mistborn                       73
  10 │ Vessryn Bloodsong                     75
  11 │ Selvethra of the Whispering Woods     79
  12 │ Morvain Duskwalker                    82
  13 │ Faelora Nightbloom                    84
  14 │ Valtheris of the Amber Flame          97
  15 │ Vyrion the Eternal                   104
  16 │ Tirvian Shadowmantle                 108
  17 │ Mirelda Starbloom                    110
  18 │ Galdur the Wise                      110
  19 │ Thauren the Wandering                110
  20 │ Maranelle Frostpetal                 113
  21 │ Aeloria of the Seven Sigils          113
  22 │ Elithar Dawnseeker                   116
  23 │ Thamior Embercloak                   118
  24 │ Althira Starweaver                   119
  25 │ Bramor the Tempest                   122
  26 │ Velmaris Lightbinder                 124
  27 │ Lunara Dreambinder                   125
  28 │ Lyssara Moonveil                     126
  29 │ Xandor the Arcane                    131
  30 │ Erenwyn the Whispering               132
  31 │ Talmek the Shattered                 134
  32 │ chatgpt                              138
  33 │ Talvorn Runebreaker                  141
  34 │ Yseline Frostwhisper                 142
  35 │ Cyralis Moonbinder                   143
  36 │ Thalendir Brightflame                143
  37 │ Korthen Deepflame                    143
  38 │ Dromek the Bound                     150
  39 │ Zerathorn the Pale                   152
  40 │ Seraphyne Windwhisper                152
  41 │ Velindra the Azure                   157
  42 │ Sareth the Verdant                   159
  43 │ Korvath the Obsidian                 162
  44 │ Zytherin the Forgotten               171
  45 │ Gorvath Ironchant                    175
  46 │ Ivenar Spellforge                    180
  47 │ Orren Emberforge                     180
  48 │ Eldwyn of the Shimmering Vale        181
  49 │ Nimriel the Golden                   182