Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
34
Task/Box-the-compass/D/box-the-compass-1.d
Normal file
34
Task/Box-the-compass/D/box-the-compass-1.d
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
import std.stdio, std.string, std.math, std.array;
|
||||
|
||||
struct boxTheCompass {
|
||||
immutable static string[32] points;
|
||||
|
||||
pure nothrow static this() {
|
||||
immutable cardinal = ["north", "east", "south", "west"];
|
||||
immutable desc = ["1", "1 by 2", "1-C", "C by 1", "C",
|
||||
"C by 2", "2-C", "2 by 1"];
|
||||
|
||||
foreach (immutable i; 0 .. 4) {
|
||||
immutable s1 = cardinal[i];
|
||||
immutable s2 = cardinal[(i + 1) % 4];
|
||||
immutable sc = (s1 == "north" || s1 == "south") ?
|
||||
(s1 ~ s2) : (s2 ~ s1);
|
||||
foreach (immutable j; 0 .. 8)
|
||||
points[i * 8 + j] = desc[j].replace("1", s1).
|
||||
replace("2", s2).replace("C", sc);
|
||||
}
|
||||
}
|
||||
|
||||
static string opCall(in double degrees) pure /*nothrow*/ {
|
||||
immutable testD = (degrees / 11.25) + 0.5;
|
||||
return points[cast(int)floor(testD % 32)].capitalize;
|
||||
}
|
||||
}
|
||||
|
||||
void main() {
|
||||
foreach (immutable i; 0 .. 33) {
|
||||
immutable heading = i * 11.25 + [0, 5.62, -5.62][i % 3];
|
||||
writefln("%s\t%18s\t%s", i % 32 + 1,
|
||||
heading.boxTheCompass, heading);
|
||||
}
|
||||
}
|
||||
24
Task/Box-the-compass/D/box-the-compass-2.d
Normal file
24
Task/Box-the-compass/D/box-the-compass-2.d
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
void main() {
|
||||
import std.stdio;
|
||||
|
||||
immutable box = [
|
||||
"North", "North by east", "North-northeast", "Northeast by north",
|
||||
"Northeast", "Northeast by east", "East-northeast", "East by north",
|
||||
"East", "East by south", "East-southeast", "Southeast by east",
|
||||
"Southeast", "Southeast by south", "South-southeast", "South by east",
|
||||
"South", "South by west", "South-southwest", "Southwest by south",
|
||||
"Southwest", "Southwest by west", "West-southwest", "West by south",
|
||||
"West", "West by north", "West-northwest", "Northwest by west",
|
||||
"Northwest", "Northwest by north", "North-northwest", "North by west"];
|
||||
|
||||
immutable angles = [
|
||||
0.0, 16.87, 16.88, 33.75, 50.62, 50.63, 67.5, 84.37, 84.38,
|
||||
101.25, 118.12, 118.13, 135.0, 151.87, 151.88, 168.75, 185.62,
|
||||
185.63, 202.5, 219.37, 219.38, 236.25, 253.12, 253.13, 270.0,
|
||||
286.87, 286.88, 303.75, 320.62, 320.63, 337.5, 354.37, 354.38];
|
||||
|
||||
foreach (immutable phi; angles) {
|
||||
immutable i = (cast(int)(phi * 32.0 / 360.0 + 0.5)) % 32;
|
||||
writefln("%2d %18s %6.2f", i + 1, box[i], phi);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue