Skip to content

Commit

Permalink
Add Palindromic Number in Beef (#3734)
Browse files Browse the repository at this point in the history
  • Loading branch information
rzuckerm authored Jan 22, 2024
1 parent 33ac050 commit 5977043
Showing 1 changed file with 69 additions and 0 deletions.
69 changes: 69 additions & 0 deletions archive/b/beef/PalindromicNumber.bf
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
using System;

namespace PalindromicNumber;

class Program
{
public static void Usage()
{
Console.WriteLine("Usage: please input a non-negative integer");
Environment.Exit(0);
}

public static Result<T> ParseInt<T>(StringView str)
where T : IParseable<T>
{
StringView trimmedStr = scope String(str);
trimmedStr.Trim();

// T.Parse ignores single quotes since they are treat as digit separators -- e.g. 1'000
if (trimmedStr.Contains('\''))
{
return .Err;
}

return T.Parse(trimmedStr);
}

public static bool PalindromicNumber<T>(T val)
where T: IInteger
{
String str = scope String();
val.ToString(str);
bool isPalindromic = true;
for (int left = 0, right = str.Length - 1; left < right; left++, right--)
{
if (str[left] != str[right])
{
isPalindromic = false;
break;
}
}

return isPalindromic;
}

public static int Main(String[] args)
{
if (args.Count < 1 || args[0].Length < 1)
{
Usage();
}

int32 val = 0;
switch (ParseInt<int32>(args[0]))
{
case .Ok(out val):
if (val < 0)
{
Usage();
}
case .Err:
Usage();
}

bool result = PalindromicNumber<int32>(val);
Console.WriteLine(result ? "true" : "false");
return 0;
}
}

0 comments on commit 5977043

Please sign in to comment.