Discordian date: Difference between revisions

no edit summary
(→‎{{header|JavaScript}}: Modified to return same output syntax as unix ddate + module.exports - James McGuigan, 2/Chaos/3183)
No edit summary
Line 1,863:
DiscordianDate[2012,3,1]
-> Today is Setting Orange, Chaos 60, YOLD 3178</pre>
 
=={{header|Pascal}}==
<lang Pascal>
program ddate;
{
This program is free software, it's done it's time
and paid for it's crime. You can copy, edit and use this
software under the terms of the GNU GPL v3 or later.
 
Copyright Pope Englebert Finklestien,
On this day Boomtime, the 71st day of Confusion in the YOLD 3183
 
This program will print out the current date in Erisian format as specified in
 
P R I N C I P I A D I S C O R D I A
 
If you run it with a date it the command line in european format (dd mm yy) it
will print the equvolent Discordian date. If you omit the year and month the
current Anerisiean month and year as assumed.
 
POPE Englebert Finklestien.
}
uses Sysutils;
 
var
YY,MM,DD : word;
YOLD : Boolean;
Hedgehog: integer;
Eris: string;
snub: string;
chaotica: string;
midget: string;
bob: string;
 
 
Anerisiandaysinmonth: array[1..12] of integer = (31,28,31,30,31,30,31,31,30,31,30,31);
 
 
 
procedure anerisiandate;
{ tHIS JUST GETS THE DATE INTO THE DD,MM,YY VARIABLES }
begin
DeCodeDate(date,yy,mm,dd);
end;
 
procedure BORIS;
{ This just tests to see if we are in a leap year }
var
snafu : boolean;
begin
snafu := False;
if (yy mod 4 = 0) then snafu := True;
if ((yy mod 100 = 0) and (yy mod 400 <> 0)) then snafu := False;
if ((snafu) and (mm = 2 ) and (dd=29)) then YOLD := True;
end;
 
function hodgepodge: integer;
{ This returns the total number of days since the year began.
It doesn't bother with leap years at all.
I get a wierd optical illusion looking at the until in this }
var
fnord : integer;
begin
Hedgehog := 1;
hodgepodge := 0;
fnord :=0;
if (mm > 1) then repeat
fnord := fnord + Anerisiandaysinmonth[Hedgehog];
Hedgehog := Hedgehog +1;
until Hedgehog = mm;
fnord := fnord + dd;
hodgepodge := fnord;
end;
 
 
function treesaregreen(): string;
{Returns the YOLD as a string}
 
begin
treesaregreen := IntTOStr(yy+1166);
end;
 
procedure GRAYFACE;
{This calculates everything, but does not bother much about leap years}
var
wrestle: integer;
Thwack: string;
begin
Hedgehog := hodgepodge;
wrestle := 0;
Thwack := 'th';
{set bob to the name of the holyday or St. Tibs day }
bob := 'St. Tibs Day';
if (Hedgehog = 5 ) then bob := 'Mungday';
if (Hedgehog = 50 ) then bob := 'Chaoflux';
if (Hedgehog = 78 ) then bob := 'Mojoday';
if (Hedgehog = 123) then bob := 'Discoflux';
if (Hedgehog = 151) then bob := 'Syaday';
if (Hedgehog = 196) then bob := 'Confuflux';
if (Hedgehog = 224) then bob := 'Zaraday';
if (Hedgehog = 269) then bob := 'Bureflux';
if (Hedgehog = 297) then bob := 'Maladay';
if (Hedgehog = 342) then bob := 'Afflux';
{Not doing things the usual way
Lets find the week day and count the number of
5 day weeks all at the same time}
while (Hedgehog > 5) do begin
Hedgehog := Hedgehog -5;
wrestle := Wrestle + 1;
end;
if (Hedgehog = 1) then snub := 'Sweetmorn' ;
if (Hedgehog = 2) then snub := 'BoomTime';
if (Hedgehog = 3) then snub := 'Pungenday';
if (Hedgehog = 4) then snub := 'Prickle-Prickle';
if (Hedgehog = 5) then snub := 'Setting Orange';
{Now to set the Season name}
chaotica:='The Aftermath';
if ((wrestle < 59) and (Hedgehog < 3)) then chaotica := 'Bureaucracy';
if ((wrestle < 44) and (Hedgehog < 5)) then chaotica := 'Confusion';
if ((wrestle < 30) and (Hedgehog < 2)) then chaotica := 'Discord';
if ((wrestle < 15) and (Hedgehog < 4)) then chaotica := 'Chaos';
{Now all we need the day of the season}
wrestle := (wrestle*5)+Hedgehog;
while (wrestle >73) do wrestle := wrestle -73;
{pick the appropriate day postfix, allready set to th}
if (wrestle in [1,21,31,41,51,61,71]) then Thwack:='st';
if (wrestle in [2,22,32,42,52,62,72]) then Thwack:='nd';
if (wrestle in [3,23,33,43,53,63,73]) then Thwack:='rd';
{Check to see if it is a holy day, if so bob will have
the right holyday name already, including St Tibs Day}
if (wrestle in [5,50]) then YOLD := True;
{I love this line of code}
midget := IntToStr(wrestle) + Thwack;
end;
 
 
{The main program starts here}
begin
anerisiandate;
if (ParamCount >=1) then dd := StrTOInt(ParamStr(1));
if (ParamCount >=2) then mm := StrToInt(ParamStr(2));
if (ParamCount =3) then yy := StrToInt(ParamStr(3));
BORIS;
GRAYFACE;
{ The only thing to bother about is holy days and St Tibs day }
Eris := 'Today is: ' + snub +' the ' + midget +' day of the season of ' + chaotica;
if (YOLD) then begin
Eris := 'Celebrate for today, ' + snub + ' the ' + midget + ' day of ' +chaotica + ' is the holy day of ' + bob;
end;
{The only place we deal with St. Tibs Day}
if ((YOLD) and ((mm=2) and (dd=29))) then Eris := 'Celebrate ' + bob + ' Chaos';
{This next line applies to all possibilities}
Eris := Eris + ' YOLD ' + treesaregreen;
WriteLn(Eris);
end.
</lang>
{{Out}}
<pre>
 
./ddate
Today is: Setting Orange the 1st day of the season of The Aftermath YOLD 3183
./ddate 12
Celebrate for today, Prickle-Prickle the 5th day of The Aftermath is the holy day of Zaraday YOLD 3183
./ddate 13 5
Today is: Pungenday the 60th day of the season of Confusion YOLD 3183
./ddate 29 2 2020
Celebrate St. Tibs Day Chaos YOLD 3186
</pre>
 
=={{header|Perl}}==
Anonymous user