Ad
  • Custom User Avatar
  • Custom User Avatar
  • Custom User Avatar

    no you havnt ur blind

  • Custom User Avatar

    Got it, you're right! Thx! 🙏🏻

    However, test cases do not test Unicode, only ASCII.

    "Never do that!" sounds extreme. The intention of Kumite is to challenge and not repeat past solutions.

    This was to similar to the previous 🤷🏻

        public static int SameCase(char a, char b)
        {
            if (!char.IsLetter(a) || !char.IsLetter(b)) return -1;
            return char.ToUpper(a) == char.ToUpper(b) ? 1 : 0;
        }
    
  • Custom User Avatar

    Because Unicode

  • Custom User Avatar

    Because Unicode

  • Custom User Avatar

    TRUE! I've seen it on a map. 🔭😏

  • Custom User Avatar

    you are wrong because the earht is flat

  • Custom User Avatar

    Boxing won't occur here.

    char.IsUpper takes a char and returns a bool.

    bool (or System.Boolean) has a Equals(bool) override, so the compiler won't choose the Object.Equals(Object) method.

    Using == is still better practice, though, as

    1. it's more idiomatic; and
    2. it avoids having to perform a method call (Equals), though the I'm nearly positive bool.Equals(bool) would be inlined
  • Custom User Avatar

    The ValueType class that all structs implicitly inherit don't have a generic implementation so only the object base class' .Equals method is implemented, meaning you'll have to go through expensive boxing for a simple comparison. This can even involve reflection

    See here https://source.dot.net/#System.Private.CoreLib/src/System/ValueType.cs

    Fortunately, seemingly all value types provided by .NET implement their own .Equals method to avoid boxing. So do record structs

  • Custom User Avatar

    Fixed.

  • Custom User Avatar

    Task description for C language contains an error in the given example. The length of the array is 23, not 20.

  • Custom User Avatar

    First letter check, after it case check. Then you don't need IsUpper.

    public static int SameCase(char a, char b) =>
    !(Char.IsLetter(a) && Char.IsLetter(b)) ? -1 : (Char.IsLower(a) == Char.IsLower(b) ? 1 : 0);

  • Custom User Avatar

    I like your point about matching the letter cases, but the initial problem assumes there will be tests without letters (i.e. Kata.SameCase( 'a', '~') ) for which you should output '-1'.

  • Custom User Avatar
    public class Kata {
      public static int SameCase(char a, char b) =>(char.IsLower(a) == char.IsLower(b))? 1 : 0;
    }
    

    If you are calling this function you are working on letters so don't bother checking for that. You also can use == instead of checking for true values since technically two false values would suffice as well (meaning that both letters are uppercase).