Several approaches are compared.
- Custom function
- Query package
- NormalizedQuantiles package
Results:
Method |Function| 8 elements|1,000 elements |10,000 elements|
julia> import Base: promote_rule, convert | |
julia> struct USD | |
value | |
end | |
julia> struct Painting | |
rating | |
end |
#!/bin/sh | |
# | |
# Generate PDF file from ipynb notebook. | |
# Several tricks are done to post-process the latex files. | |
if [ $# -ne 1 ]; then | |
echo "Usage: `basename $0` filename" | |
exit 1 | |
fi |
((* extends 'article.tplx' *)) | |
((* block commands *)) | |
((( super() ))) | |
% define custom margins | |
\geometry{verbose,tmargin=1in,bmargin=1in,lmargin=1in,rmargin=1in} | |
\renewcommand{\includegraphics}[1]{\Oldincludegraphics[width=\maxwidth]{#1}} | |
((* endblock commands *)) | |
((* block predoc *)) |
s,sw,s,ne,s,se,s,s,s,se,se,se,se,ne,ne,n,ne,ne,ne,ne,ne,s,ne,ne,ne,ne,n,n,n,n,n,n,se,n,n,n,se,s,ne,n,n,nw,n,n,n,nw,n,s,n,n,n,n,s,s,nw,se,nw,s,n,nw,nw,nw,nw,ne,sw,nw,nw,nw,n,se,nw,nw,n,s,n,sw,sw,nw,sw,nw,nw,nw,se,ne,sw,n,sw,sw,sw,n,sw,sw,sw,ne,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,se,nw,sw,sw,s,sw,s,s,s,s,sw,sw,sw,se,s,sw,s,n,sw,ne,s,s,n,nw,s,s,s,s,s,s,se,s,sw,s,sw,sw,s,s,s,s,s,s,s,nw,s,se,se,s,se,s,s,s,se,n,nw,se,s,se,s,s,n,se,ne,s,s,s,s,s,s,ne,se,s,nw,se,s,s,nw,s,s,se,s,s,se,se,se,se,se,s,se,se,se,s,s,se,se,s,se,se,se,se,se,s,se,se,s,se,se,s,s,se,s,se,se,s,se,n,s,sw,se,se,se,se,se,ne,se,se,sw,nw,ne,se,se,ne,se,se,ne,ne,se,ne,se,se,ne,se,s,se,ne,se,se,ne,n,se,se,sw,ne,se,se,se,ne,se,ne,nw,ne,nw,se,ne,se,se,se,se,se,nw,se,ne,s,nw,se,ne,ne,ne,ne,n,se,s,nw,ne,se,ne,se,ne,ne,ne,ne,ne,ne,ne,nw,ne,ne,ne,ne,ne,n,se,sw,ne,se,se,ne,s,se,ne,ne,ne,ne,ne,ne,ne,s,ne,ne,n,ne,ne,ne,ne,ne,ne,ne,ne,sw,ne,n,ne,n,ne,ne,sw,n,ne,ne,ne,s,ne,ne,ne,ne,ne,ne,ne,n,ne,ne,n,sw,s,ne,n,ne,ne,nw,ne,ne,se,n,n,ne,n,ne,ne,ne,ne,n,nw,ne,ne,ne,ne,ne,n, |
uxcplgxnkwbdwhrp | |
suerykeptdsutidb | |
dmrtgdkaimrrwmej | |
ztxhjwllrckhakut | |
gdnzurjbbwmgayrg | |
gjdzbtrcxwprtery | |
fbuqqaatackrvemm | |
pcjhsshoveaodyko | |
lrpprussbesniilv | |
mmsebhtqqjiqrusd |
>^^v^<>v<<<v<v^>>v^^^<v<>^^><^<<^vv>>>^<<^>><vv<<v^<^^><>>><>v<><>^^<^^^<><>>vv>vv>v<<^>v<>^>v<v^<>v>><>^v<<<<v^vv^><v>v^>>>vv>v^^^<^^<>>v<^^v<>^<vv^^<^><<>^>><^<>>><><vv><>v<<<><><>v><<>^^^^v>>^>^<v<<vv^^<v<^<^>^^v^^^^^v<><^v><<><^v^>v<<>^<>^^v^<>v<v^>v>^^<vv^v><^<>^v<><^><v^><><><<<<>^vv^>^vvvvv><><^<vv^v^v>v<<^<^^v^<>^<vv><v<v^v<<v<<^^>>^^^v^>v<><^vv<<^<>v<v><><v^^><v<>^^>^^>v^>^<<<<v><v<<>v><^v>^>><v^^<^>v<vvvv<>>>>>^v^^>v<v<^<vv>^>^vv^>vv^^v<<^<^^<>v>vv^v>><>>>v^>^>^^v<>^<v<<>^vv>v^<<v>v<<><v>^vvv<v<vvv^v<vv<v^^^>v><<^<>><v^^>^v^>>^v<^<><v<>>v^<>>v<>>v^^^><^>>vvvv>^v<^><<>>^<>^>vv><v<<>>^^>v^^^><^<<^^v>v<^<<>v>^^vvv^v^>v^<>^^<>v^v>v>v<v^>vv>^^v<>v>>^<>><>v>v^<<vvvv<vvv><v^<^>^v<>>^><v>><>^<v>v<v>vv^>>vvv<>v>v<v^>>^>>v<<>^<>^<>>>^v<<<^<^v>vv^>><<><v^>^v^^^v<>^^vv><>><>>^>v^<v<>v<>>^<<^v>^^^<>^v^><>v<<v>vv^>vv<<>>><<^v^<>v<vv>>>^^<>^><<^>vv>>^<<v^^vv<>>><v>v><^<v<<>>>^^<>>^<^v><>vv^^^v>vvv>^><<>^^>^<<v^<v<^v<<>vvv<^<<>^>^v<vv<^>vvv>v>vv^<v^><>>^vv<^^^vv><^vv<v^<><v^vvv><<^>^^><v<<vv^>v<vv<v>^<>^v<<>v<v^v^> |
foo2(filename, parsers; headers=true, delimiter=",", nrows=0) = open(filename) do f | |
if headers | |
hdr = split(readline(f), delimiter) | |
end | |
lines = nrows == 0 ? [] : Vector(undef, nrows) | |
r = 0 | |
while !eof(f) | |
line = readline(f) | |
row = map(x -> x[1](x[2]), zip(parsers, split(line, delimiter))) | |
r += 1 |
# see https://discourse.julialang.org/t/allocation-groupby/7505 | |
function groupby(v::AbstractVector{T}) where T | |
d = Dict{T,Vector{Int}}() | |
i = 1 | |
for x in v | |
if !haskey(d, x) | |
d[x] = [i] | |
else | |
push!(d[x], i) | |
end |
# fizz buzz the bit twiddling way
mymod(n,m,f) = mod(n, m) == 0 ? f : 0x00
fb(n) = ["None", "Fizz", "Buzz", "FizzBuzz"][1 + (mymod(n,3,0x01) | mymod(n,5,0x02))]
Results:
julia> fb.(collect(1:15))
15-element Array{String,1}: