Digital FXtbook
Easy Contacts
  • Home
    • Software
    • The Author
    • Former Students Hall of Fame
    • A tribute....
    • Treasure Hunt
  • Video Game Training
    • 3d Motion Graphics >
      • Unity >
        • Unity Essentials >
          • Unity's Interface >
            • Our First Assignment
          • Modeling and Level Design >
            • The Essentials
            • The Floor is Lava Name Project
            • ProBuilder >
              • ProBuilder Image Planes
              • ProBuilder Steve Modeling
              • ProBuilder Steve Texturing
          • Programming >
            • Getting Started with Scripting
            • Default Scripting
            • Scripting a Game Object
          • Real Time Audio >
            • Adding Background Music
            • 3-d Audio effects
          • 2d Essentials >
            • 2d Game Objects
            • Objects on 2d Game Objects
        • Creative Core >
          • Introduction to Creative Core
          • Shaders and Materials
          • Lighting
          • Animation
          • VFX
          • Cameras
          • Post Processing
          • Audio
          • User Interface
          • Proto-Typing
    • C# Programming >
      • Visual Studios >
        • First Program >
          • Getting input from the User
        • Comments >
          • PsuedoCode
        • Variable Types >
          • AlphaNumeric Variables
          • Numeric Variables
          • Putting it all together
        • Operators >
          • Assignment and Arithmetic Operators >
            • Use of Parenthesis
            • When is Easter??
          • Comparison and Logical Operators >
            • Logical Data, Illogical Assignment
          • Random Class
        • Conditional Statements >
          • Number validator
          • Number tester
          • Speed Camera
        • Loops >
          • For Loops >
            • Adding Numbers
          • For Each Loops
        • Arrays >
          • Simple Arrays
          • Complex Arrays
      • Intro to Unity >
        • Unity Essentials >
          • Unity's Interface
          • The Essentials
          • Programming >
            • Getting Started with Scripting
            • Default Scripting
            • Scripting a Game Object
        • Intro to Programming 1 >
          • Player Control 1 >
            • Player Control 1.2
            • Player Control 1.3
            • Player Control 1.4
          • Player Control 2 >
            • Player Control 2.2
            • Player Control 2.3
            • Player Control 2.4
          • Player Control Challenge
        • Intro to Programming 2 >
          • Sound and Effects >
            • Sound and Effects 3.2
            • Sound and Effects 3.3
            • Sound and Effects 3.4
          • GamePlay
          • User Interface
          • Feedback and Testing
          • Next Steps
        • Intro to Programming 3 >
          • Manage Scene Flow and Data
          • Apply Object-Oriented Principles
    • Modeling and Rigging >
      • Modeling >
        • Introduction: The Temple
        • Name Text Curve
        • Character Modeling >
          • Minecraft Steve
          • Minecraft Steve UV
          • Roblox Character modeling
          • Big Daddy
          • Character Modeling Legion the Geth
          • Character Modeling Geth Armor
        • Weapons >
          • Minecraft Tools and Weapons
          • Minecraft Movie Pickaxe
          • Minecraft Movie Sword
          • Thor's Hammer
          • Hammer
          • LOL Sword
          • Sword of Light
          • Buzz Axe
          • Weapon
      • Rigging >
        • Intro to Rigging
        • Controls
        • Rigging Basics
        • Rigging Creating Skeletons
        • Rigging: Body Controls
        • Rigging: Hands
        • Rigging: Skinning
        • Smooth Skinning
      • Animation >
        • Character Animation
    • Advanced >
      • Modeling >
        • Image Planes
        • Polygon Modeling >
          • Coke Can
          • Low Polygon Character
          • Character Modeling Legion the Geth
          • Character Modeling Geth Armor
          • Face Modeling
        • NURBS Modeling >
          • Intro to NURBS
          • Lofting
          • CV Curves
          • Organic Modeling
          • Autombile
      • Linda Training >
        • Advanced Modeling >
          • Modeling Basics
          • Modeling Room Objects
      • Texturing
      • Rigging >
        • Rigging with HumanIK
        • Smooth Skinning
  • Student Films
    • Advanced Student's movies
    • Beginning Student's movies
  • Links
    • BPA >
      • BPA Computer Modeling
    • The Top Six Animation Schools
    • The Top Video Game Design Schools

Zeller's Congruence

In this lesson we are going to figure out what day of the week it is after being given any given set of dates. 

Have you ever wondered how to find a weekday for any (past or future) date?

Okay, you can check it in a calendar (you probably have one on your smartphone), but this is no solution for a coder.

One of the most popular algorithms for this task is the so-called "Zeller's congruence".

Sounds complicated?

Nothing could be further from the truth, and we're going to show you exactly that.

You'll need three values:

year number (int – let's assume that we're interested only in dates from the 20th and 21st centuries);
month number (int – 1 to 12);
day number (int – 1 to it depends)

Be patient – this will take a while:

1. Decrease month number by 2;
2. if month number becomes less than 0, increment it by 12 and decrement year by 1;
3. take month number and multiply it by 83 and divide it by 32;
4. add day number to month;
5. add year number to month;
6. add year/4 to month;
7. subtract year/100 from month;
8. add year/400 to month;
9. find the remainder of dividing month by 7;
10. Congrats! A weekday number is ready for you! 0 – Sunday, 1 – Monday, ... and so on.


We want you to write a code which finds a weekday number for a date entered by a user.

The program should ask the user for the year, month and day (in this order) and output a value indicating a weekday. Make your code as smart as possible. Test your code using the data we've provided. 



​Sample code

None for this lesson.....



​Assignment

Build the program described above and get it to work correctly. To make sure that it is working correctly here are some dates that you can use to test it against.

Example input
2016
2
10

Example output
3

Example input
2000
1
1

Example output
6 

Example input
1999
12
31

Example output
5

Example input
1964
12
21

Example output
​1 

EXTRA CREDIT!!!

Instead of outputting some stupid number, like 0-6, write an extra line or two of code to have it print out the actual day of the week.
So.... understanding that;

0 = Sunday
1 = Monday
2 = Tuesday
3 = Wednesday
4 = Thursday
5 = Friday
6 = Saturday

​Have the code print out Monday instead of 0 and so on.
Proudly powered by Weebly