Skip to content

HedgeHawk/Adventskranz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Adventskranz 🕯️🕯️🕯️🕯️

Dieses Repository zeigt eine Formel, um für ein beliebiges Datum die Anzahl brennender Kerzen auf einem Adventskranz zu berechnen.

Das Adventskranz-Problem

Ein Adventskranz hat 4 Kerzen, die in der Adventszeit zwischen den 4 Adventssonntagen vor Heiligabend (24.12.) nach und nach an den Sonntagen angezündet werden. Es kann daher jedem Datum eine Anzahl Kerzen zugeordnet werden. Hierbei muss berücksichtigt werden, dass die Adventssonntage jedes Jahr an anderen Daten liegen. Beispiel für 2021:

Datum Kerzen
28.11.2021 🕯️
05.12.2021 🕯️🕯️
12.12.2021 🕯️🕯️🕯️
19.12.2021 🕯️🕯️🕯️🕯️

Die längstmögliche Adventszeit dauert 28 Tage. Wie zum Beispiel 2022 fällt dann der 1. Advent auf den 27.11. und Heiligabend ist an einem Samstag. Die kürzestmögliche Adventszeit dauert 22 Tage, wenn wie im Jahr 2023 Heiligabend der 4. Adventssonntag ist. Die Tabelle zeigt für alle möglichen Kombinationen aus Monat, Tag und Wochentag die jeweilige Anzahl brennender Kerzen.

Monat mo Tag des Monats dy Adventstag a 1 (So) 2 (Mo) 3 (Di) 4 (Mi) 5 (Do) 6 (Fr) 7 (Sa)
November 27 1 1
November 28 2 1 1
November 29 3 1 1 1
November 30 4 1 1 1 1
Dezember 1 5 1 1 1 1 1
Dezember 2 6 1 1 1 1 1 1
Dezember 3 7 1 1 1 1 1 1 1
Dezember 4 8 2 1 1 1 1 1 1
Dezember 5 9 2 2 1 1 1 1 1
Dezember 6 10 2 2 2 1 1 1 1
Dezember 7 11 2 2 2 2 1 1 1
Dezember 8 12 2 2 2 2 2 1 1
Dezember 9 13 2 2 2 2 2 2 1
Dezember 10 14 2 2 2 2 2 2 2
Dezember 11 15 3 2 2 2 2 2 2
Dezember 12 16 3 3 2 2 2 2 2
Dezember 13 17 3 3 3 2 2 2 2
Dezember 14 18 3 3 3 3 2 2 2
Dezember 15 19 3 3 3 3 3 2 2
Dezember 16 20 3 3 3 3 3 3 2
Dezember 17 21 3 3 3 3 3 3 3
Dezember 18 22 4 3 3 3 3 3 3
Dezember 19 23 4 4 3 3 3 3 3
Dezember 20 24 4 4 4 3 3 3 3
Dezember 21 25 4 4 4 4 3 3 3
Dezember 22 26 4 4 4 4 4 3 3
Dezember 23 27 4 4 4 4 4 4 3
Dezember 24 28 4 4 4 4 4 4 4

Die Adventskranz-Formel

Zur Berechnung der Kerzenzahl aus dem Tag dy des Monats mo wird zunächst als Hilfsgröße der Adventstag a für die hier relevanten 28 Tage vor Heiligabend eingeführt.

int adventstag(int dy, int mo){
switch (mo)
  {
    case 11: //November
      return dy - 26;
    case 12: //Dezember
      return dy + 4;
    default:
      return 0;
  }
}

Mit Hilfe des Adventstags a und dem Wochentag dow (Sonntag=1) kann die Kerzenzahl k bestimmt werden.

int candles(int a, int dow){
  return (a-dow+7)/7;
}

Code

Header-only Library: advent.h

Test

Example: main.cpp

g++ main.cpp -o advent
./advent

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks