Jdi na navigaci předmětu

1. Porovnání (Binomické koeficienty)

Porovnání jednotlivých řešení po tvrdém deadline prvního rozcvičkového a seznamovací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("benchmark01.csv", DataFrame)
df[!, "score"] .= 0
select!(df, Not(:username))
describe(df)
14×7 DataFrame
Rowvariablemeanminmedianmaxnmissingeltype
SymbolUnion…AnyUnion…AnyInt64Type
1nickAeloria of the Seven Sigilskalvotom0String
2code29.5769129.0491Union{Missing, Int64}
3comment18.5962018.0571Union{Missing, Int64}
4correctness0.943396false1.0true0Bool
5test_int64_t157.1521.9942.2141231.33Union{Missing, Float64}
6test_int64_m41.2800.019843Union{Missing, Int64}
7test_int64_c0.943396false1.0true0Bool
8test_bigint_t25301.51119.118996.0142324.02Union{Missing, Float64}
9test_bigint_m32861.576827344.01414242Union{Missing, Int64}
10test_bigint_c0.962264false1.0true0Bool
11test_cfloat64_t923.7262.435159.6834515.01Union{Missing, Float64}
12test_cfloat64_m710.61500.0368401Union{Missing, Int64}
13test_cfloat64_c0.981132false1.0true0Bool
14score0.000.000Int64

Do měření započítávám pouze odevzdání, která počítají správné výsledky v typech Int64, BigInt, Float64, Complex{Float64} a Complex{BigFloat}.

Dále mezi hodnocené zařazuji i své odevzdání (nick kalvotom), kód vygenerovaný pomocí ChatGPT (nick chatgpt) a vnitřní implementaci (zobecněného) binomického koeficientu dostupného v Julia ve formě binomial methody (nick julia, příslušný main.jl tak obsahuje pouze binom = binomial).

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)
50×3 DataFrame
 Row  nick                               code    score 
      String                             Int64?  Int64 
─────┼──────────────────────────────────────────────────
   1 │ julia                                   1      1
   2 │ Ilyrien Dawnpetal                      17      2
   3 │ Cyralis Moonbinder                     19      3
   4 │ Kerron the Unseen                      20      4
   5 │ Thalendir Brightflame                  21      5
   6 │ Vyrion the Eternal                     21      5
   7 │ Velindra the Azure                     22      6
   8 │ Bramor the Tempest                     22      6
   9 │ Orren Emberforge                       22      6
  10 │ Dravok the Gloomed                     23      7
  11 │ Maranelle Frostpetal                   23      7
  12 │ Lyssara Moonveil                       24      8
  13 │ Talvorn Runebreaker                    24      8
  14 │ Xandor the Arcane                      24      8
  15 │ Orlien Silverchant                     25      9
  16 │ kalvotom                               26     10
  17 │ Caelwyn of the Crystal Spire           26     10
  18 │ Erenwyn the Whispering                 26     10
  19 │ Sareth the Verdant                     26     10
  20 │ Aeloria of the Seven Sigils            26     10
  21 │ Zytherin the Forgotten                 26     10
  22 │ Eldaric Runehand                       28     11
  23 │ Maerilith Stormweaver                  28     11
  24 │ Gorvath Ironchant                      28     11
  25 │ Rhovar Mistborn                        29     12
  26 │ Althira Starweaver                     29     12
  27 │ Dromek the Bound                       29     12
  28 │ chatgpt                                30     13
  29 │ Thamior Embercloak                     30     13
  30 │ Morvain Duskwalker                     30     13
  31 │ Zerathorn the Pale                     30     13
  32 │ Velmaris Lightbinder                   30     13
  33 │ Galdur the Wise                        31     14
  34 │ Lunara Dreambinder                     31     14
  35 │ Sylthara the Veiled                    31     14
  36 │ Elithar Dawnseeker                     32     15
  37 │ Yseline Frostwhisper                   33     16
  38 │ Korthen Deepflame                      33     16
  39 │ Vessryn Bloodsong                      33     16
  40 │ Eldwyn of the Shimmering Vale          34     17
  41 │ Nimriel the Golden                     35     18
  42 │ Selvethra of the Whispering Woods      35     18
  43 │ Thauren the Wandering                  36     19
  44 │ Faelora Nightbloom                     37     20
  45 │ Valtheris of the Amber Flame           39     21
  46 │ Talmek the Shattered                   40     22
  47 │ Seraphyne Windwhisper                  44     23
  48 │ Mirelda Starbloom                      44     23
  49 │ Korvath the Obsidian                   49     24
  50 │ Ivenar Spellforge                      49     24

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)
50×3 DataFrame
 Row  nick                               comment  score 
      String                             Int64?   Int64 
─────┼───────────────────────────────────────────────────
   1 │ Eldwyn of the Shimmering Vale           57     18
   2 │ Eldaric Runehand                        41     13
   3 │ Morvain Duskwalker                      40     16
   4 │ Bramor the Tempest                      33     10
   5 │ Lunara Dreambinder                      33     18
   6 │ Althira Starweaver                      32     17
   7 │ Kerron the Unseen                       31     10
   8 │ Aeloria of the Seven Sigils             31     16
   9 │ Elithar Dawnseeker                      30     22
  10 │ Cyralis Moonbinder                      28     11
  11 │ Orren Emberforge                        28     14
  12 │ Dromek the Bound                        28     20
  13 │ Velmaris Lightbinder                    24     22
  14 │ Galdur the Wise                         24     23
  15 │ Seraphyne Windwhisper                   24     32
  16 │ Maerilith Stormweaver                   23     21
  17 │ chatgpt                                 22     24
  18 │ Thamior Embercloak                      22     24
  19 │ Maranelle Frostpetal                    21     19
  20 │ Talvorn Runebreaker                     21     20
  21 │ Sylthara the Veiled                     21     26
  22 │ Ivenar Spellforge                       21     36
  23 │ Orlien Silverchant                      20     22
  24 │ Rhovar Mistborn                         20     25
  25 │ Mirelda Starbloom                       20     36
  26 │ Caelwyn of the Crystal Spire            18     24
  27 │ Thauren the Wandering                   18     33
  28 │ Erenwyn the Whispering                  17     25
  29 │ Vessryn Bloodsong                       17     31
  30 │ Dravok the Gloomed                      16     23
  31 │ Faelora Nightbloom                      16     36
  32 │ Nimriel the Golden                      15     35
  33 │ kalvotom                                14     28
  34 │ Zytherin the Forgotten                  14     28
  35 │ Zerathorn the Pale                      13     32
  36 │ Vyrion the Eternal                      12     25
  37 │ Velindra the Azure                      12     26
  38 │ Lyssara Moonveil                        10     29
  39 │ Gorvath Ironchant                       10     32
  40 │ Korthen Deepflame                       10     37
  41 │ Xandor the Arcane                        9     30
  42 │ Ilyrien Dawnpetal                        7     25
  43 │ Talmek the Shattered                     7     45
  44 │ Valtheris of the Amber Flame             6     45
  45 │ Selvethra of the Whispering Woods        5     43
  46 │ Thalendir Brightflame                    4     31
  47 │ Korvath the Obsidian                     2     51
  48 │ julia                                    0     29
  49 │ Sareth the Verdant                       0     38
  50 │ Yseline Frostwhisper                     0     44

Int64

Test s oběma argumenty typy Int64. V testu počítáme vždy několik (všichni stejný) binomických koeficentů pro několik různých k. Zde je výsledek měření doby běhu, seřazeno relativně k nejrychlejšímu. Vzhledem k jednoduchosti metody odhaduji, že u prvních cca dvou desítek míst jde spíše o chybu měření. Poslední sloupec pro jistotu (znovu) zaznamenává správnost výsledků u tohoto konkrétního experimentu.

sort!(df, :test_int64_t)
df[!, :test_int64_t] /= df[1, :test_int64_t]
record_rank!(df, :test_int64_t)
show(df[!,[:nick, :test_int64_t, :score, :test_int64_c]], allrows=true)
50×4 DataFrame
 Row  nick                               test_int64_t  score  test_int64_c 
      String                             Float64       Int64  Bool         
─────┼──────────────────────────────────────────────────────────────────────
   1 │ Eldwyn of the Shimmering Vale           1.0         19          true
   2 │ Eldaric Runehand                        1.0         14          true
   3 │ Althira Starweaver                      1.0         18          true
   4 │ Kerron the Unseen                       1.0         11          true
   5 │ Dromek the Bound                        1.0         21          true
   6 │ Seraphyne Windwhisper                   1.0         33          true
   7 │ Orlien Silverchant                      1.0         23          true
   8 │ Erenwyn the Whispering                  1.0         26          true
   9 │ Dravok the Gloomed                      1.0         24          true
  10 │ Faelora Nightbloom                      1.0         37          true
  11 │ Nimriel the Golden                      1.0         36          true
  12 │ Velindra the Azure                      1.0         27          true
  13 │ Valtheris of the Amber Flame            1.0         46          true
  14 │ Gorvath Ironchant                       1.00451     34          true
  15 │ Maerilith Stormweaver                   1.00502     24          true
  16 │ Caelwyn of the Crystal Spire            1.01003     28          true
  17 │ Thauren the Wandering                   1.01003     37          true
  18 │ Velmaris Lightbinder                    1.01454     27          true
  19 │ Cyralis Moonbinder                      1.01505     17          true
  20 │ Sylthara the Veiled                     1.01505     32          true
  21 │ Korthen Deepflame                       1.01505     43          true
  22 │ Sareth the Verdant                      1.01505     44          true
  23 │ Yseline Frostwhisper                    1.01505     50          true
  24 │ chatgpt                                 1.11033     31          true
  25 │ kalvotom                                1.11033     35          true
  26 │ Zytherin the Forgotten                  1.11033     35          true
  27 │ Zerathorn the Pale                      1.11033     39          true
  28 │ Xandor the Arcane                       1.11033     37          true
  29 │ Korvath the Obsidian                    1.11033     58          true
  30 │ Maranelle Frostpetal                    1.11083     27          true
  31 │ Talvorn Runebreaker                     1.11535     29          true
  32 │ Ilyrien Dawnpetal                       1.11535     34          true
  33 │ Rhovar Mistborn                         1.12538     35          true
  34 │ Vessryn Bloodsong                       1.12538     41          true
  35 │ Lunara Dreambinder                      1.13039     29          true
  36 │ Orren Emberforge                        1.13039     25          true
  37 │ Aeloria of the Seven Sigils             1.41725     28          true
  38 │ Morvain Duskwalker                     35.5528      29          true
  39 │ Galdur the Wise                        40.8846      37          true
  40 │ Mirelda Starbloom                      61.1658      51          true
  41 │ Vyrion the Eternal                     87.3355      41          true
  42 │ julia                                 107.636       46          true
  43 │ Lyssara Moonveil                      125.64        47          true
  44 │ Talmek the Shattered                  340.879       64          true
  45 │ Thamior Embercloak                    462.402       44          true
  46 │ Bramor the Tempest                    465.327       31          true
  47 │ Ivenar Spellforge                     467.435       58          true
  48 │ Elithar Dawnseeker                    528.586       45          true
  49 │ Selvethra of the Whispering Woods     561.234       67          true
  50 │ Thalendir Brightflame                 617.503       56          true

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

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

BigInt

Stejný experiment s BigInt argumenty.

sort!(df, :test_bigint_t)
df[!, :test_bigint_t] /= df[1, :test_bigint_t]
record_rank!(df, :test_bigint_t)
show(df[!,[:nick, :test_bigint_t, :score, :test_bigint_c]], allrows=true)
50×4 DataFrame
 Row  nick                               test_bigint_t  score  test_bigint_c 
      String                             Float64        Int64  Bool          
─────┼────────────────────────────────────────────────────────────────────────
   1 │ julia                                    1.0         49           true
   2 │ Thalendir Brightflame                    1.55509     61           true
   3 │ Vyrion the Eternal                       9.0957      45           true
   4 │ kalvotom                                 9.97565     40           true
   5 │ Maerilith Stormweaver                   10.0853      30           true
   6 │ chatgpt                                 10.8775      38           true
   7 │ Dravok the Gloomed                      11.629       32           true
   8 │ Seraphyne Windwhisper                   12.9363      42           true
   9 │ Ivenar Spellforge                       12.9814      68           true
  10 │ Erenwyn the Whispering                  13.0712      37           true
  11 │ Zytherin the Forgotten                  13.5725      47           true
  12 │ Althira Starweaver                      13.6972      31           true
  13 │ Velindra the Azure                      14.123       41           true
  14 │ Vessryn Bloodsong                       15.139       56           true
  15 │ Sylthara the Veiled                     15.3221      48           true
  16 │ Zerathorn the Pale                      16.079       56           true
  17 │ Xandor the Arcane                       16.415       55           true
  18 │ Eldaric Runehand                        16.625       33           true
  19 │ Orlien Silverchant                      16.625       42           true
  20 │ Gorvath Ironchant                       16.6696      54           true
  21 │ Talmek the Shattered                    16.759       85           true
  22 │ Sareth the Verdant                      16.7769      66           true
  23 │ Orren Emberforge                        16.8126      48           true
  24 │ Thauren the Wandering                   16.9297      61           true
  25 │ Kerron the Unseen                       16.9744      36           true
  26 │ Valtheris of the Amber Flame            17.162       72           true
  27 │ Nimriel the Golden                      17.1629      63           true
  28 │ Faelora Nightbloom                      17.1759      65           true
  29 │ Mirelda Starbloom                       17.2523      80           true
  30 │ Maranelle Frostpetal                    17.2965      57           true
  31 │ Caelwyn of the Crystal Spire            17.5561      59           true
  32 │ Velmaris Lightbinder                    17.7218      59           true
  33 │ Rhovar Mistborn                         17.7446      68           true
  34 │ Aeloria of the Seven Sigils             17.8429      62           true
  35 │ Yseline Frostwhisper                    17.8778      85           true
  36 │ Morvain Duskwalker                      18.2455      65           true
  37 │ Cyralis Moonbinder                      18.9795      54           true
  38 │ Dromek the Bound                        19.1274      59           true
  39 │ Galdur the Wise                         19.3736      76           true
  40 │ Lyssara Moonveil                        19.6059      87           true
  41 │ Lunara Dreambinder                      20.0992      70           true
  42 │ Selvethra of the Whispering Woods       33.5716     109           true
  43 │ Bramor the Tempest                      35.9092      74           true
  44 │ Thamior Embercloak                      36.0522      88           true
  45 │ Eldwyn of the Shimmering Vale           37.7267      64           true
  46 │ Talvorn Runebreaker                     44.3964      75           true
  47 │ Korthen Deepflame                       57.158       90           true
  48 │ Korvath the Obsidian                    71.0482     106           true
  49 │ Elithar Dawnseeker                      76.4471      94           true
  50 │ Ilyrien Dawnpetal                      127.177       84           true

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

sort!(df, :test_bigint_m)
record_rank!(df, :test_bigint_m)
show(df[!, [:nick, :test_bigint_m, :score]], allrows=true)
50×3 DataFrame
 Row  nick                               test_bigint_m  score 
      String                             Int64?         Int64 
─────┼─────────────────────────────────────────────────────────
   1 │ julia                                        768     50
   2 │ Thalendir Brightflame                       1888     63
   3 │ kalvotom                                   14632     43
   4 │ Vyrion the Eternal                         17328     49
   5 │ Dravok the Gloomed                         18496     37
   6 │ Maerilith Stormweaver                      19680     36
   7 │ Seraphyne Windwhisper                      21000     49
   8 │ Vessryn Bloodsong                          23528     64
   9 │ chatgpt                                    23768     47
  10 │ Zerathorn the Pale                         26400     66
  11 │ Talmek the Shattered                       26400     95
  12 │ Aeloria of the Seven Sigils                26400     72
  13 │ Yseline Frostwhisper                       26400     95
  14 │ Ivenar Spellforge                          26456     79
  15 │ Thauren the Wandering                      26616     73
  16 │ Caelwyn of the Crystal Spire               26624     72
  17 │ Orlien Silverchant                         26912     56
  18 │ Morvain Duskwalker                         27288     80
  19 │ Zytherin the Forgotten                     27344     63
  20 │ Althira Starweaver                         27344     47
  21 │ Velindra the Azure                         27344     57
  22 │ Xandor the Arcane                          27344     71
  23 │ Eldaric Runehand                           27344     49
  24 │ Gorvath Ironchant                          27344     70
  25 │ Orren Emberforge                           27344     64
  26 │ Kerron the Unseen                          27344     52
  27 │ Rhovar Mistborn                            27344     84
  28 │ Lunara Dreambinder                         27344     86
  29 │ Erenwyn the Whispering                     27400     54
  30 │ Velmaris Lightbinder                       27400     76
  31 │ Faelora Nightbloom                         27464     83
  32 │ Sareth the Verdant                         27568     85
  33 │ Valtheris of the Amber Flame               27568     91
  34 │ Nimriel the Golden                         27568     82
  35 │ Mirelda Starbloom                          27568     99
  36 │ Maranelle Frostpetal                       27568     76
  37 │ Sylthara the Veiled                        27904     68
  38 │ Galdur the Wise                            29584     97
  39 │ Cyralis Moonbinder                         29920     76
  40 │ Lyssara Moonveil                           29992    110
  41 │ Dromek the Bound                           30088     83
  42 │ Talvorn Runebreaker                        46040    100
  43 │ Selvethra of the Whispering Woods          46200    135
  44 │ Bramor the Tempest                         48872    101
  45 │ Thamior Embercloak                         50208    116
  46 │ Eldwyn of the Shimmering Vale              54792     93
  47 │ Elithar Dawnseeker                         77144    124
  48 │ Korthen Deepflame                          85024    121
  49 │ Korvath the Obsidian                       85024    137
  50 │ Ilyrien Dawnpetal                         141424    116

ComplexF64

A konečně experiment se zobecněným kombinačním číslem, kde typ n uvažujeme ComplexF64.

sort!(df, :test_cfloat64_t)
df[!, :test_cfloat64_t] /= df[1, :test_cfloat64_t]
record_rank!(df, :test_cfloat64_t)
show(df[!,[:nick, :test_cfloat64_t, :score, :test_cfloat64_c]], allrows=true, allcols=true)
50×4 DataFrame
 Row  nick                               test_cfloat64_t  score  test_cfloat64_c 
      String                             Float64          Int64  Bool            
─────┼────────────────────────────────────────────────────────────────────────────
   1 │ Ivenar Spellforge                          1.0         80             true
   2 │ kalvotom                                   1.00131     45             true
   3 │ Eldaric Runehand                           1.00407     52             true
   4 │ Velmaris Lightbinder                       1.00769     80             true
   5 │ Aeloria of the Seven Sigils                1.01168     77             true
   6 │ Kerron the Unseen                          1.03012     58             true
   7 │ Velindra the Azure                         1.03061     64             true
   8 │ Rhovar Mistborn                            1.03061     91             true
   9 │ Althira Starweaver                         1.03145     55             true
  10 │ Gorvath Ironchant                          1.03155     79             true
  11 │ Erenwyn the Whispering                     1.03181     64             true
  12 │ Elithar Dawnseeker                         1.03239    135             true
  13 │ Lyssara Moonveil                           1.03444    122             true
  14 │ Orren Emberforge                           1.03532     77             true
  15 │ Sylthara the Veiled                        1.04176     82             true
  16 │ Eldwyn of the Shimmering Vale              1.05404    108             true
  17 │ Valtheris of the Amber Flame               1.06633    107             true
  18 │ Maerilith Stormweaver                      1.35127     53             true
  19 │ Seraphyne Windwhisper                      1.42592     67             true
  20 │ Talmek the Shattered                       1.60275    114             true
  21 │ Vessryn Bloodsong                          1.79643     84             true
  22 │ Zerathorn the Pale                         1.79885     87             true
  23 │ Xandor the Arcane                          1.82494     93             true
  24 │ Sareth the Verdant                         1.82596    108             true
  25 │ chatgpt                                    1.83266     71             true
  26 │ Orlien Silverchant                         1.8331      81             true
  27 │ Talvorn Runebreaker                        1.8331     125             true
  28 │ Faelora Nightbloom                         1.83382    109             true
  29 │ Ilyrien Dawnpetal                          1.85726    143             true
  30 │ Mirelda Starbloom                          1.8594     127             true
  31 │ Korvath the Obsidian                       1.8672     166             true
  32 │ Galdur the Wise                            1.86738    127             true
  33 │ Nimriel the Golden                         1.87005    113             true
  34 │ Maranelle Frostpetal                       1.87169    108             true
  35 │ Morvain Duskwalker                         1.87242    113             true
  36 │ Lunara Dreambinder                         1.87253    120             true
  37 │ Zytherin the Forgotten                     1.88342     98             true
  38 │ Caelwyn of the Crystal Spire               1.92127    108             true
  39 │ Dravok the Gloomed                         2.15927     74             true
  40 │ julia                                      2.40591     88             true
  41 │ Korthen Deepflame                          2.53902    160             true
  42 │ Vyrion the Eternal                         9.15911     89             true
  43 │ Dromek the Bound                          11.3731     124             true
  44 │ Cyralis Moonbinder                        11.6051     118             true
  45 │ Bramor the Tempest                        11.6383     144             true
  46 │ Thamior Embercloak                        11.7185     160             true
  47 │ Yseline Frostwhisper                      11.7528     140             true
  48 │ Thauren the Wandering                     11.7987     119             true
  49 │ Selvethra of the Whispering Woods         12.5112     182             true
  50 │ Thalendir Brightflame                    395.408      111             true

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

sort!(df, :test_int64_m)
record_rank!(df, :test_int64_m)
show(df[!, [:nick, :test_int64_m, :score]], allrows=true)
50×3 DataFrame
 Row  nick                               test_int64_m  score 
      String                             Int64?        Int64 
─────┼────────────────────────────────────────────────────────
   1 │ Ivenar Spellforge                             0     81
   2 │ kalvotom                                      0     46
   3 │ Eldaric Runehand                              0     53
   4 │ Velmaris Lightbinder                          0     81
   5 │ Aeloria of the Seven Sigils                   0     78
   6 │ Kerron the Unseen                             0     59
   7 │ Velindra the Azure                            0     65
   8 │ Rhovar Mistborn                               0     92
   9 │ Althira Starweaver                            0     56
  10 │ Gorvath Ironchant                             0     80
  11 │ Erenwyn the Whispering                        0     65
  12 │ Elithar Dawnseeker                            0    136
  13 │ Lyssara Moonveil                              0    123
  14 │ Orren Emberforge                              0     78
  15 │ Sylthara the Veiled                           0     83
  16 │ Eldwyn of the Shimmering Vale                 0    109
  17 │ Valtheris of the Amber Flame                  0    108
  18 │ Maerilith Stormweaver                         0     54
  19 │ Seraphyne Windwhisper                         0     68
  20 │ Talmek the Shattered                          0    115
  21 │ Vessryn Bloodsong                             0     85
  22 │ Zerathorn the Pale                            0     88
  23 │ Xandor the Arcane                             0     94
  24 │ Sareth the Verdant                            0    109
  25 │ chatgpt                                       0     72
  26 │ Orlien Silverchant                            0     82
  27 │ Talvorn Runebreaker                           0    126
  28 │ Faelora Nightbloom                            0    110
  29 │ Ilyrien Dawnpetal                             0    144
  30 │ Mirelda Starbloom                             0    128
  31 │ Korvath the Obsidian                          0    167
  32 │ Galdur the Wise                               0    128
  33 │ Nimriel the Golden                            0    114
  34 │ Maranelle Frostpetal                          0    109
  35 │ Morvain Duskwalker                            0    114
  36 │ Lunara Dreambinder                            0    121
  37 │ Zytherin the Forgotten                        0     99
  38 │ Caelwyn of the Crystal Spire                  0    109
  39 │ Dravok the Gloomed                            0     75
  40 │ Korthen Deepflame                             0    161
  41 │ Vyrion the Eternal                            0     90
  42 │ Dromek the Bound                              0    125
  43 │ Cyralis Moonbinder                            0    119
  44 │ Bramor the Tempest                            0    145
  45 │ Thamior Embercloak                            0    161
  46 │ Yseline Frostwhisper                          0    141
  47 │ Thauren the Wandering                         0    120
  48 │ Selvethra of the Whispering Woods             0    183
  49 │ julia                                        80     90
  50 │ Thalendir Brightflame                      1984    114

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)
50×2 DataFrame
 Row  nick                               score 
      String                             Int64 
─────┼──────────────────────────────────────────
   1 │ kalvotom                              46
   2 │ Eldaric Runehand                      53
   3 │ Maerilith Stormweaver                 54
   4 │ Althira Starweaver                    56
   5 │ Kerron the Unseen                     59
   6 │ Velindra the Azure                    65
   7 │ Erenwyn the Whispering                65
   8 │ Seraphyne Windwhisper                 68
   9 │ chatgpt                               72
  10 │ Dravok the Gloomed                    75
  11 │ Aeloria of the Seven Sigils           78
  12 │ Orren Emberforge                      78
  13 │ Gorvath Ironchant                     80
  14 │ Ivenar Spellforge                     81
  15 │ Velmaris Lightbinder                  81
  16 │ Orlien Silverchant                    82
  17 │ Sylthara the Veiled                   83
  18 │ Vessryn Bloodsong                     85
  19 │ Zerathorn the Pale                    88
  20 │ Vyrion the Eternal                    90
  21 │ julia                                 90
  22 │ Rhovar Mistborn                       92
  23 │ Xandor the Arcane                     94
  24 │ Zytherin the Forgotten                99
  25 │ Valtheris of the Amber Flame         108
  26 │ Eldwyn of the Shimmering Vale        109
  27 │ Sareth the Verdant                   109
  28 │ Maranelle Frostpetal                 109
  29 │ Caelwyn of the Crystal Spire         109
  30 │ Faelora Nightbloom                   110
  31 │ Nimriel the Golden                   114
  32 │ Morvain Duskwalker                   114
  33 │ Thalendir Brightflame                114
  34 │ Talmek the Shattered                 115
  35 │ Cyralis Moonbinder                   119
  36 │ Thauren the Wandering                120
  37 │ Lunara Dreambinder                   121
  38 │ Lyssara Moonveil                     123
  39 │ Dromek the Bound                     125
  40 │ Talvorn Runebreaker                  126
  41 │ Mirelda Starbloom                    128
  42 │ Galdur the Wise                      128
  43 │ Elithar Dawnseeker                   136
  44 │ Yseline Frostwhisper                 141
  45 │ Ilyrien Dawnpetal                    144
  46 │ Bramor the Tempest                   145
  47 │ Korthen Deepflame                    161
  48 │ Thamior Embercloak                   161
  49 │ Korvath the Obsidian                 167
  50 │ Selvethra of the Whispering Woods    183