Loading...
JonHanes avatar JonHanes 0 Точки

C# Fundamentals - Text Processing Ex. 1 - Valid Usernames

Hello everyone.

 

I'm trying to finish the exercise Valid Usernames here: https://judge.softuni.bg/Contests/Compete/Index/1217#0

However, the test only give me 40 for this exercise.

Both Zero tests go through successfully, so good luck trying to figure out what the issue is.

 

Problem description

Write a program that reads user names on a single line (joined by ", ") and prints all valid usernames.

A valid username is:

  • Has length between 3 and 16 characters

  • Contains only letters, numbers, hyphens and underscores

  • Has no redundant symbols before, after or in between

Examples

Input

Output

sh, too_long_username, !lleg@l ch@rs, jeffbutt

jeffbutt

Jeff, john45, ab, cd, peter-ivanov, @smith

Jeff

John45

peter-ivanov

 

This is my code.

The issue is most likely with redundant symbols, but what does that mean here in the end?

using System;

public class Program
{
    
    public static void Main()
    {
        string [] userNames = Console.ReadLine().Split(',');
        string userName;

        foreach (string un in userNames)
        {
            //Remove the whitespaces
            userName = un.Replace(" ", string.Empty);
            CheckIfValid(userName);
           
        }
    }

    public static void CheckIfValid(string userName)
    {
        bool isValid = true;
        bool containsHyphen = false;
        bool containsUnderscore = false;

        if (userName.Length >= 3 && userName.Length <= 16)
        {
            isValid = true;
        } else
        {
            isValid = false;
        }

        if (isValid)
        {
            foreach (char ch in userName)
            {
                if (Char.IsLetterOrDigit(ch))
                {
                    //Passed
                    
                }
                else if (ch == '-')
                {
                    //Passed
                    if (containsHyphen)
                    {
                        isValid = false;
                        break;
                    }
                    containsHyphen = true;
                } else if (ch == '_') {
                    if (containsUnderscore)
                    {
                        isValid = false;
                        break;
                    }
                    containsUnderscore = true;
                }
                else
                {
                    //Failed
                    isValid = false;
                    break;
                }
            }
        }
    
        if (isValid)
        {
            Console.WriteLine(userName);
        }
    }
}

 

On a totally unrelated note, why do we even have Judge system in place?

It's the absolute worst of the 3 environments I've had to use.

When I was studying in Finland I was using Test My Code which told you directly "Oh, try with the input x = 10 and y = -5, it seems you´re getting the wrong answer here" and this was super convenient because it told you what to watch out for.

It performed a lot of checks for each situation you might get wrong with your code.

Here the Judge system just tells you "Oh you have a mistake. You won´t learn anything here because I won´t tell you what the mistake is".

It´s ridiculous to me how you keep using such a primitive system, not to mention it´s very counterproductive for learning.

We are students, we cannot be expected to do this perfectly.

Sure it's a good lesson on life and how we cannot expect to always be guided, but this is a school.

You might us well just tell us to write the code on a piece of paper and tear it up if we get it wrong, that's how useful the Judge system is.

 

Either way, thank you for your time!

louisjames avatar louisjames 1 Точки

HP Printer Support Phone Number helpline is toll free. If you want help with HP printers, talk with our experts for HP Printer Support.

0
2
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.