Edge Rewrite
// request.cf · coarse context

A page that knows where it met you.

Only coarse request metadata is shown. This demo does not display or persist visitor IP addresses.

Country
US
Cloudflare location
CMH
Connection
HTTP/2
Language
Not provided

Ray ID: a2a9d1144a900d7f

Jump to content

Draft:Pastafarian calendar

From Wikipedia, the free encyclopedia

The Pastafarian calendar, referred to in its specification as the "Calendar of the Secret of the Sauce and the Names of the Days", is a non-intuitive calendar based on a deterministic algorithm and was most likely created by the Flying Spaghetti Monster. Its full specification is given in The Scroll of the Appointed Times.[1]

The algorithm takes an ordered pair of days as input: the calculation day, on which the calculation is performed, and the target day, whose Pastafarian date is to be determined. The output is a five-part date consisting of a year number, a cutlet name, the day within the cutlet, a month name, and the day within the month.

Unlike conventional calendars, the resulting date does not depend on the target day alone. It also depends on the calculation day. The same target day may therefore receive a different date when the calculation is performed on a different day; given the same ordered pair of days, however, the algorithm always produces the same result.

A Pastafarian date consequently depends on both the target day and the calculation day from which it was computed. This distinguishes the system from calendars in which every day has a fixed date. The structure of the years, cutlets and months likewise varies with the calculation day. Months need not consist of consecutive days, and years do not have a fixed length.

Background and origin

[edit source]

The Scroll of the Appointed Times presents the calendar in deliberately archaic language and gives elements of the algorithm figurative names such as "drops", "bowls", "stones", "gates", "cutlets" and "seals". Behind this terminology is a detailed computational mechanism: intermediate values are generated recursively, fed into state variables, and used to select alternatives from ordered sets.

The constants, grinding sequences and complete lists required for an exact implementation are given in the original specification.[1] The description below summarizes the principles of the system, the structure of its output, and some of its mathematical and practical consequences.

Principle of operation

[edit source]

The algorithm converts the two days into numerical values, processes them through a deterministic mechanism, and uses the result to determine the structure of the relevant year and the components of the date.

ordered pair of days → input values → computational mechanism → year structure → date

Five basic counts are derived from the ordered pair:

  • the calculation count – the unique number assigned to the calculation day;
  • the target count – the unique number assigned to the target day;
  • the distance count – the number of days separating the two days, plus one;
  • the sum count – the sum of the calculation count and the target count;
  • the direction count – 1 if the target day precedes the calculation day, 2 if the two days are identical, and 3 if the target day follows it.

Reversing the order of the two days generally changes these values and may therefore alter the entire result.

Component Dependence
Foundation day and day numbering Fixed by the specification
The Great Count, the stones, and the rules governing drops and bowls Fixed by the specification
Lists of cutlet and month names Fixed by the specification
Sequence of cutlet gates and structure of the years Determined relative to the calculation day
Year 5000 and the boundaries of the other years Determined relative to the calculation day
Division of a year into cutlets and months, and the names assigned to those units Determined relative to the calculation day
The year, cutlet and month containing the target day Determined by locating the target day within the structure generated for the calculation day
Final five-part date Depends on both the calculation day and the target day

Changing the target day while keeping the calculation day fixed does not create a new calendar structure; it merely locates a different day within the structure already generated for that calculation day. Changing the calculation day, by contrast, may change the structure itself.

Foundation day and day numbering

[edit source]

The specification establishes a fixed foundation day. In the proleptic Gregorian calendar, this is 22 December 41,222 BC. The foundation day is not the first day of the calendar, but a reference point from which all other days are measured in both directions.[1]

The foundation day is assigned the number 1. Later days receive odd numbers, while earlier days receive even numbers:

where is the foundation day and is the number of days from the foundation day to the given day.

The numbering around the foundation day is therefore:

Day Number
Third day before the foundation day 6
Second day before it 4
First day before it 2
Foundation day 1
First day after it 3
Second day after it 5
Third day after it 7

The numbering is one-to-one, but it does not preserve chronological order. Its stated purpose is to make the calculation possible without requiring an understanding of the concept of negative numbers.

Drop-and-bowl mechanism

[edit source]

The "sauce" operations are performed modulo a fixed number called the Great Count:

After most arithmetic operations, a value in the range 1 through is retained. When the ordinary remainder would be zero, is used instead. In modern notation:

This distinction is significant because zero never occurs among the stored state values, although an ordinary zero remainder may still occur when a position in a list is selected.

The computational mechanism is based on a sequence of intermediate values called drops and six state variables called bowls. These values are calculated in a fixed order from the input and are then used to select the alternatives from which the date is constructed.

The six bowls serve as state variables for producing those selections. Drops are poured into them, with each drop selecting one of the 720 permutations of the bowl order. After the pouring stage, the bowls are stirred cyclically. In every stirring round, all six new contents are calculated from the previous state before any of them are replaced; an already updated bowl may not be used to calculate another bowl during the same round.

A particular question is submitted to the mechanism by means of a seal, a number identifying the type of selection being requested. The contents of the selected bowl, the seal and the next bowl in the cycle generate a sequence of answer numbers. These numbers are used to select elements from ordered lists of gates, partitions, permutations, interleavings and names.

When the number of available choices does not divide , rejection sampling is used. Values above the largest multiple of the number of choices that does not exceed are rejected, and the next value in the answer sequence is considered instead. This prevents modulo bias when mapping an answer number to a choice. It does not, by itself, establish that all choices occur with equal frequency across all possible pairs of input days.

Generation of gates and years

[edit source]

All structures described from this point onward are calculated relative to a fixed calculation day. Changing that day may change the cutlet gates, year boundaries, internal divisions and unit names.

A cutlet gate is a possible boundary between units of time. The foundation day is itself a cutlet gate, and further gates are generated from it in both chronological directions. The distance between two consecutive gates is selected from 922 possibilities, after which 41 is added, giving a distance of between 42 and 963 days. The sequence is deterministic, but is not periodic or uniform.

A year begins on the day after its opening gate and ends on its closing gate. For any fixed calculation day, each day belongs to exactly one year.

Year 5000

[edit source]

The algorithm first constructs the set of possible years containing the calculation day. A candidate year must contain at least six gate intervals, be at least 252 days long, and be no longer than 5,778 days.[1]

Candidate years are ordered from shortest to longest, with ties broken in favor of the earlier opening gate. One candidate is selected using the bowls and is assigned the number 5000.

Year 5000 is therefore not a fixed historical period. It is selected anew relative to the calculation day, and the sequence of all other years is then constructed in both directions from it.

The algorithm is designed so that when the calculation day and the target day are the same, that day always falls in Year 5000. Within the Pastafarian interpretation of the calendar, this is not a temporary state in which the world is "currently" in Year 5000 and will later enter Year 5001. Rather, it is treated as a permanent feature of creation: the world was created already 5,000 years old, so the calendrical age of the "present" is always 5000.

This is a variation on the Pastafarian creation myth, according to which the Flying Spaghetti Monster created the universe with the appearance of an ancient past and supplied evidence suggesting an age greater than its actual age.[2] In this interpretation, 5000 is not the number of years elapsed since a fixed moment of creation; it functions as a constant creation-age of the world from the perspective of the calculation day.

Other years

[edit source]

The next year begins after the closing gate of the known year, while the preceding year ends at its opening gate. In each direction, the algorithm selects one valid adjacent year from the candidates adjoining the year already established.

Years are numbered consecutively: 5001, 5002 and so on in the forward direction, and 4999, 4998 and so on in the backward direction. Year 1 is followed backward by Year 0, which is in turn followed by years with negative numbers.

Cutlets and months

[edit source]

Cutlets

[edit source]

Each year is divided into between 6 and 17 cutlets. A cutlet is a unit of time consisting of a positive integral number of gate intervals and is therefore at least 42 days long.

The number of cutlets and the distribution of gate intervals among them are selected from ordered sets. If the calculation day itself falls on an internal gate of the year, only divisions in which a cutlet ends at that gate are retained.

Cutlet names are selected without replacement from a fixed list. The list includes, among others, names corresponding to "Bronze", "Fox", "Four Ninths", the invented name "Palgurash", and "The Empty Jug".[1]

Months

[edit source]

Each year is divided into between 3 and 47 months. Every month contains between 4 and 123 days, and the sum of the month lengths is equal to the length of the year.

If is the length of the year, the possible number of months lies in the range:

Month lengths are selected from ordered sequences whose sum is and whose individual values lie within the permitted range.

Months are not necessarily contiguous blocks. Their days may be interleaved throughout the year, subject to the condition that the first occurrence of an earlier month precedes the first occurrence of every later month, and that the final occurrences appear in the same order.

The day within a month is the number of times that month has occurred from the beginning of the year through the target day. It is therefore not necessarily the number of days elapsed since the beginning of a contiguous month-long interval.

Month names are selected without replacement from a fixed list containing, among others, names corresponding to "Clay", "Toothpaste", "Three Fifths", the invented name "Karshumav", and "The Closed Door". The complete lists of cutlet and month names are given in the specification.[1]

The division of a year into cutlets and its division into months are independent partitions and do not form a shared hierarchy. Cutlets are contiguous portions of the year bounded by cutlet gates, whereas the assignment of days to months is determined separately by the month-interleaving procedure.

A month is therefore not a subdivision of a cutlet, nor does a cutlet necessarily consist of whole months. Knowing the cutlet to which a day belongs does not determine its month.

The meaning of the day number also differs between the two units. The day within a cutlet is the day's chronological position in that cutlet, counted consecutively from its beginning. The day within a month, by contrast, is the number of occurrences of that month in the year's interleaving up to and including the target day.

Two consecutive days within a cutlet therefore always have consecutive cutlet-day numbers, but they need not belong to the same month and need not have consecutive month-day numbers.

Date format

[edit source]

The result of the calculation contains exactly five components, in the following order:

  1. year number;
  2. cutlet name;
  3. day within the cutlet;
  4. month name;
  5. day within the month.

For a calculation day and a target day , the algorithm first calculates the five basic counts. These determine the bowl state, after which the year containing , its division into cutlets and months, and the names of those units are selected.

The resulting five-tuple may be written in the form:

Year [number], Cutlet "[name]", day [number] of the cutlet, Month "[name]", day [number] of the month.

For illustration of the format alone, without implying that the following is an actually calculated date:

Year 5000, Cutlet "The Empty Jug", day 117 of the cutlet, Month "Toothpaste", day 9 of the month.

The specification prohibits adding a sixth component to the official result. Intermediate data may be supplied separately.

Example

[edit source]

For example, when both the calculation day and the target day are 7 August 2026, the day number is 31,591,013. Because the two input days are identical, the five basic counts are:

  • calculation count – 31,591,013;
  • target count – 31,591,013;
  • distance count – 1;
  • sum count – 63,182,026;
  • direction count – 2.

These five values are fed into the drop-and-bowl mechanism. This determines the structure corresponding to the calculation day and selects the year, the cutlet partition, the month partition and the unit names.

In this example, the resulting five-tuple is:

Year 5000, Cutlet "Laughter", day 307 of the cutlet, Month "Tar", day 46 of the month.

The example illustrates the principal stages of the calculation but does not display the intermediate values of all the drops and bowls.

Mathematical and computational properties

[edit source]

Well-definedness and determinism

[edit source]

The specification describes a deterministic function from the ordered pair (calculation day, target day) to a single five-part date. The day numbering is one-to-one; every stage is determined by the preceding stages; sets of alternatives are ordered according to explicit rules; gate distances are positive and bounded; and, for any fixed calculation day, years are constructed consecutively without overlap.

The rejection-sampling procedure terminates because the sequence of answer numbers traverses all values in its range before returning to its starting point.

Under the rules of the system, every ordered pair of days therefore corresponds to one result, and the calculation terminates after a finite number of steps.

Computational complexity

[edit source]

Implementing the algorithm involves substantial combinatorial computation. Producing a date requires calculating the drops and bowls, generating gates, locating the appropriate year, counting ordered partitions, selecting permutations and constructing the month interleaving.

The sets of possible choices can be extremely large. An efficient implementation therefore cannot enumerate all of them explicitly; it must instead use techniques such as combinatorial ranking and unranking, dynamic programming and caching.

The specification defines a deterministic and well-defined function, but that does not imply that a simple or computationally inexpensive implementation exists.

Characteristics and practical use

[edit source]

Dependence on the calculation day

[edit source]

A Pastafarian date is not a fixed property of the target day. A document that records only the five-part date, without identifying the calculation day, omits part of the input from which that date was derived.

The specification likewise does not define an inverse conversion function that takes only a five-part Pastafarian date and returns a unique absolute day.

Using the calendar to schedule a future event therefore requires the parties to agree not only on the Pastafarian date but also on the calculation day from which it was computed. A date calculated today for a future event may differ from the date obtained when the event day actually arrives. Recalculating a past event may even change its assignment to a month or to other parts of the year.

For example, with 7 August 2026 as the calculation day, that same day falls on day 307 of the cutlet "Laughter" and day 46 of the month "Tar". When the calculation is instead performed on the following day, 8 August 2026, that day's own date falls on day 308 of the cutlet "Wheat" and day 58 of the month "Joy". If 7 August is recalculated from the perspective of 8 August, however, the former day 46 of "Tar" becomes day 60 of the month "Yolk".

Calculation day Target day Cutlet Day in cutlet Day in month Month
7 August 2026 7 August 2026 Laughter 307 46 Tar
8 August 2026 8 August 2026 Wheat 308 58 Joy
8 August 2026 7 August 2026 Wheat 307 60 Yolk

The first and third rows refer to the same target day, but the different calculation day changes its month assignment. The example shows that a Pastafarian date is not a permanent label attached to a day, but the result of a function of two days.

For a fixed calculation day, the system can nevertheless be regarded as defining a complete calendar: the year boundaries, cutlets, months and their names are established for that calculation day, after which different target days may be located within the resulting structure.

When the calculation day changes, that structure is recalculated. There is therefore no single fixed Pastafarian calendar covering the entire timeline.

Structure of years and months

[edit source]

Year 5000 is selected anew around the calculation day, and a year may be between 252 and 5,778 days long. Year numbers therefore do not identify fixed historical periods.

The length of a year also does not follow the solar cycle, the lunar cycle or the seasons; the gates and partitions are produced by the algorithm rather than by astronomical observation.

Because days belonging to one month may be interspersed with days belonging to other months, expressions such as "the beginning of the month", "the end of the month", "three days into the month" and "next month" require special definitions and do not necessarily have their ordinary calendrical meanings.

The names and numbers alone are likewise not necessarily sufficient to determine which of two Pastafarian dates comes earlier.

Documentation, software and time zones

[edit source]

An almanac produced on a particular day describes the year structure from the perspective of that calculation day. It is therefore not a fixed calendar that can be maintained merely by replacing a page at the beginning of each new year.

Software systems that assume a year is a fixed sequence of contiguous months cannot represent the calendar without a fundamental change to their data model.

The specification accepts days rather than times and does not prescribe a time zone for determining the civil day. An implementation that accepts a local date and time must therefore introduce an external rule defining when the calculation day changes.

Two implementations can consequently perform the calendar algorithm itself identically while still selecting different calculation days near midnight if they use different time zones.

Complexity and usefulness

[edit source]

The complexity of the calendar arises from its computational mechanism rather than from an astronomical or calendrical requirement for dividing time.

Determinism guarantees that every pair of inputs produces a single result, but it does not guarantee that the result is convenient for a shared dating system. The calendar can be viewed as a context-dependent mixing function whose outputs are labelled with the names of calendrical units.

A complete implementation may make use of advanced combinatorial algorithms, yet it remains substantially more complicated than date conversion in conventional calendars. The time saved by not having to remember the number of days in each month is more than recovered during the calculation of the 46 drops.

Embedding the calendar in a website

[edit source]

The Pastafarian calendar can be embedded in a website that permits externally loaded JavaScript by using the following code:

<script type="module"
        src="https://cdn.jsdelivr.net/gh/bwtbdyqtmsprytgydym-cpu/pastafari-calendar@main/browser/pastafari-date.js">
</script>

<pastafari-date></pastafari-date>

Humor and parodic interpretation

[edit source]

The instability of the calendar can be interpreted as part of its parody: the system is defined with considerable precision while resisting many ordinary uses of a calendar.

No Pastafarian wall calendar has been documented; to remain correct under the system, such a calendar would have to be regenerated every day, including the dates assigned to days that had already passed. Nor is there any known employer who has paid salaries "at the end of the month" according to the system, perhaps because the end of one month may occur after other months have already appeared and disappeared.

No institution, community or individual is known to use the calendar as its sole dating system, and no case has been documented in which two people arranged a meeting using only a Pastafarian date and arrived at the same place on the same day. The success rate of such coordination has not been measured, if only because too few participants have been found who agreed on which date had been set. In one unrepresentative sample of a single month, several beginnings, one ending and no agreement as to the location of the middle were found.

The instability and complexity of the calendar are therefore part of its unconventional character: although the system is defined by precise rules, its properties make ordinary calendrical tasks such as scheduling events, producing permanent calendars and converting dates difficult.

See also

[edit source]
[edit source]

References

[edit source]
  1. 1 2 3 4 5 6 The Scroll of the Appointed Times
  2. Henderson, Bobby (2006). "A Condensed History of the World". The Gospel of the Flying Spaghetti Monster. Villard. ISBN 978-0812976564.

Category:Calendars Category:Algorithms Category:Pasta Category:Flying Spaghetti Monster