Quick actions

cmd+k|ctrl+k

Navigation

Languages

Guild war 2 release day

Snippet info

Language

Raku

Visibility

public

Author

frank576frank576

Created

2018-08-20T14:58:44Z

Updated

2018-08-20T14:58:44Z


multi sec2day ( $sec ) { $sec / (60*60*24) }
multi sec2day ( @sec ) { @sec.map: {sec2day( $_ )} }
sub mean(@d) { @d R/ [+] @d }
sub sd (@d) {
    my $mean = mean(@d);
    sqrt @d R/ [+] map (* - $mean)**2, @d
}
sub add_errorbar_on_95CL ( @d ) {
    my $range = 1.96*( sd(@d)/sqrt(@d.elems)); 
    my $mean = &mean(@d);
    ($mean - $range, $mean, $mean + $range)
}

# cannot use webspider package or istall all nostandard package
# put data on code is very ugly , but I dont'know how to hand this online codepad terminal
my @release_day = gather for <
				2018 6 26 
				2018 3 6 
				2017 11 28
				2017 9 22
				2017 7 25
				2017 5 2
				2017 2 8
				2016 11 21
				2016 9 20
				2016 7 26
				>
				-> $y, $m, $d { 
				 take DateTime.new(
					year    => $y,
					month   => $m,
					day     => $d
				);
};

my @release_interval = gather for 0..(@release_day.elems - 2) -> $i {
	take @release_day[$i] - @release_day[($i + 1)];
};

#say  sec2day(@release_interval);
#say  sec2day(&add_errorbar_on_95CL(@release_interval));
#say @release_day[0].later( day => $_ ) for sec2day(&add_errorbar_on_95CL(@release_interval)) ;

say "
Living World release log (form S3 ) {@release_day».Date} 

The days between individual Living World {&sec2day(@release_interval)».Int}(day)

The mean of release interval is { sec2day(&add_errorbar_on_95CL(@release_interval))[1] }(day)

add errorbar (95 Confidence interval) { sec2day(&add_errorbar_on_95CL(@release_interval))[0] }(day) ~ { sec2day(&add_errorbar_on_95CL(@release_interval))[2] }(day)

last release day = {@release_day[0].Date }

Next release day = { (@release_day[0].later( day => $_ ).Date for sec2day(&add_errorbar_on_95CL(@release_interval))) }
"
INFO