C# :: Aufgabe #355
3 Lösungen
Liste aller zukünftigen Palindromtage in diesem Jahrtausend
Anfänger - C#
von hollst
- 12.02.2021 um 18:29 Uhr
Ein Datum (z. B. 12. Februar 2021) nennt man Palindromdatum, wenn es als Zahl geschrieben ein Palindrom ist (12022021, vorwärts gelesen identisch mit rückwärts gelesen).
Man schreibe ein Programm, das alle zukünftige Palindromtage bis zum 31. Dezember 2999 ausgibt.
Viel Spaß
Man schreibe ein Programm, das alle zukünftige Palindromtage bis zum 31. Dezember 2999 ausgibt.
Viel Spaß
Lösungen:
NET 5.x; C# 9.x; VS-2019
Top-Level-Anweisung
Top-Level-Anweisung
C#-Code
using System; using System.Linq; DateTime start = new(2021, 2, 12); // C# 9.x DateTime end = new(2999, 12, 31); while (start <= end) { var s = start.ToShortDateString().Replace(".", ""); if (s == string.Join("", s.Reverse())) Console.WriteLine(start.ToShortDateString()); start = start.AddDays(1); }
C#-Code
using System; namespace DatumPalindrome { class Program { static void Main(string[] args) { DateTime startDate = DateTime.Now; DateTime endDate = new DateTime(2999, 12, 31); DateTime iterationDay = startDate; int counter = 0; while(iterationDay < endDate) { char[] date = iterationDay.ToString("yyyyMMdd").ToCharArray(); if (date[0] == date[7] && date[1] == date[6] && date[2] == date[5] && date[3] == date[4]) { Console.WriteLine(iterationDay.ToString("yyyy/MM/dd")); counter++; } iterationDay = iterationDay.AddDays(1); } Console.WriteLine($"Anzahl: {counter}"); } } }
C#-Code
using static System.Console; //VS 2019 .Net 5.0.2 System.Text.StringBuilder sb = new System.Text.StringBuilder(); int[] tage_im_monat = new int[] { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 30 }; int start = 000, end = 10000; static string sx(string s, int x) => s.Length == x ? s : sx("0" + s, x); int count = 0; for (var i = start; i < end; i++) for (var j = 0; j < tage_im_monat.Length; j++) { string sm = sx((j + 1).ToString(), 2); for (var k = 0; k < tage_im_monat[j]; k++) { string st = sx((k + 1).ToString(), 2); string temp = st + sm + sx(i.ToString(), 4); bool bo_palindrom = true; for (var l = 0; l < 4; l++) if (temp[l] != temp[temp.Length - 1 - l]) bo_palindrom = false; if (bo_palindrom) { WriteLine($"{++count,3}: {temp} {int.Parse(temp.Substring(4)),4}"); sb.Append($"{temp}, "); } } } //System.IO.File.WriteAllText("erg_palindrom.txt", sb.ToString()); ReadKey();