Advertisement
yahorrr

Untitled

Sep 19th, 2022
915
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.84 KB | None | 0 0
  1. using System;
  2. using System.Reflection.Metadata.Ecma335;
  3.  
  4. namespace PalindromicNumberTask
  5. {
  6.     /// <summary>
  7.     /// Provides static method for working with integers.
  8.     /// </summary>
  9.     public static class NumbersExtension
  10.     {
  11.         /// <summary>
  12.         /// Determines if a number is a palindromic number, see https://en.wikipedia.org/wiki/Palindromic_number.
  13.         /// </summary>
  14.         /// <param name="number">Verified number.</param>
  15.         /// <returns>true if the verified number is palindromic number; otherwise, false.</returns>
  16.         /// <exception cref="ArgumentException"> Thrown when source number is less than zero. </exception>
  17.         public static bool IsPalindromicNumber(int number)
  18.         {
  19.             if (number < 0)
  20.             {
  21.                 throw new ArgumentException("number is less than 0", nameof(number));
  22.             }
  23.  
  24.             byte length = IntLength(number);
  25.  
  26.             return IsPalindromicNumberCore((int)Math.Pow(10, length - 1));
  27.  
  28.             bool IsPalindromicNumberCore(int pow)
  29.             {
  30.                 if (number < 10)
  31.                 {
  32.                     return true;
  33.                 }
  34.  
  35.                 if (number / pow != number % 10)
  36.                 {
  37.                     return false;
  38.                 }
  39.  
  40.                 number = (number % pow) / 10;
  41.  
  42.                 return IsPalindromicNumberCore(pow / 100);
  43.             }
  44.         }
  45.  
  46.         private static byte IntLength(int number) =>
  47.             number switch
  48.             {
  49.                 < 10 => 1,
  50.                 < 100 => 2,
  51.                 < 1000 => 3,
  52.                 < 10000 => 4,
  53.                 < 100000 => 5,
  54.                 < 1000000 => 6,
  55.                 < 10000000 => 7,
  56.                 < 100000000 => 8,
  57.                 < 1000000000 => 9,
  58.                 _ => 10
  59.             };
  60.     }
  61. }
  62.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement