CDE
This commit is contained in:
parent
518da4a923
commit
764da6cbbb
6144 changed files with 83610 additions and 11 deletions
59
Task/Box-the-compass/C++/box-the-compass.cpp
Normal file
59
Task/Box-the-compass/C++/box-the-compass.cpp
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
#include <string>
|
||||
#include <boost/array.hpp>
|
||||
#include <boost/assign/list_of.hpp>
|
||||
#include <boost/format.hpp>
|
||||
#include <boost/foreach.hpp>
|
||||
#include <iostream>
|
||||
#include <math.h>
|
||||
using std::string;
|
||||
using namespace boost::assign;
|
||||
|
||||
int get_Index(float angle)
|
||||
{
|
||||
return static_cast<int>(floor(angle / 11.25 +0.5 )) % 32 + 1;
|
||||
}
|
||||
|
||||
string get_Abbr_From_Index(int i)
|
||||
{
|
||||
static boost::array<std::string, 32> points(list_of
|
||||
("N")("NbE")("NNE")("NEbN")("NE")("NEbE")("ENE")("EbN")
|
||||
("E")("EbS")("ESE")("SEbE")("SE")("SEbS")("SSE")("SbE")
|
||||
("S")("SbW")("SSW")("SWbS")("SW")("SWbW")("WSW")("WbS")
|
||||
("W")("WbN")("WNW")("NWbW")("NW")("NWbN")("NNW")("NbW"));
|
||||
return points[i-1];
|
||||
}
|
||||
|
||||
string Build_Name_From_Abbreviation(string a)
|
||||
{
|
||||
string retval;
|
||||
for (int i = 0; i < a.size(); ++i){
|
||||
if ((1 == i) && (a[i] != 'b') && (a.size() == 3)) retval += "-";
|
||||
switch (a[i]){
|
||||
case 'N' : retval += "north"; break;
|
||||
case 'S' : retval += "south"; break;
|
||||
case 'E' : retval += "east"; break;
|
||||
case 'W' : retval += "west"; break;
|
||||
case 'b' : retval += " by "; break;
|
||||
}
|
||||
}
|
||||
retval[0] = toupper(retval[0]);
|
||||
return retval;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
boost::array<float,33> headings(list_of
|
||||
(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));
|
||||
int i;
|
||||
boost::format f("%1$4d %2$-20s %3$_7.2f");
|
||||
|
||||
BOOST_FOREACH(float a, headings)
|
||||
{
|
||||
i = get_Index(a);
|
||||
std::cout << f % i % Build_Name_From_Abbreviation(get_Abbr_From_Index(i)) % a << std::endl;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
34
Task/Box-the-compass/D/box-the-compass.d
Normal file
34
Task/Box-the-compass/D/box-the-compass.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 capitalize(points[cast(int)floor(testD % 32)]);
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
23
Task/Box-the-compass/Euphoria/box-the-compass.euphoria
Normal file
23
Task/Box-the-compass/Euphoria/box-the-compass.euphoria
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
constant names = {"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"}
|
||||
|
||||
function deg2ind(atom degree)
|
||||
return remainder(floor(degree*32/360+.5),32)+1
|
||||
end function
|
||||
|
||||
sequence degrees
|
||||
degrees = {}
|
||||
for i = 0 to 32 do
|
||||
degrees &= i*11.25 + 5.62*(remainder(i+1,3)-1)
|
||||
end for
|
||||
|
||||
integer j
|
||||
for i = 1 to length(degrees) do
|
||||
j = deg2ind(degrees[i])
|
||||
printf(1, "%6.2f %2d %-22s\n", {degrees[i], j, names[j]})
|
||||
end for
|
||||
Loading…
Add table
Add a link
Reference in a new issue