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
C#-Code
Top-Level-Anweisung

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); }

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}"); } } }

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();