Sobes.tech
Middle

როგორ შეიძლება შეამოწმოთ საზღვრები არა რიცხვითი, არამედ ანბანური სეგმენტით?

sobes.tech AI

პასუხი AI-სგან

შეზღუდული მნიშვნელობების შემოწმება ალფავიტურ ინტერვალში გულისხმობს პირველ და ბოლო დაშვებულ სიმბოლოს, ასევე სიმბოლოს პირდაპირ მის წინ და შემდეგ, თუ ისინი სიმბოლოთა ნაკრებში არსებობს:

მაგალითად, ველი, რომელიც მიიღებს კირილიცულ პატარა ასოებს (ა-я):

  • დაბალი ზღვარი:
    • 'ა' (პირველი დაშვებული სიმბოლო)
    • სიმბოლო 'ა'-ს წინ (თუ არის და არსებობს კოდირებაში)
  • ზედა ზღვარი:
    • 'я' (ბოლო დაშვებული სიმბოლო)
    • სიმბოლო 'я'-ს შემდეგ (თუ არის და არსებობს კოდირებაში)

დამატებით შეიძლება შემოწმდეს:

  • ცარიელი სტრიქონი: ""
  • ერთი სიმბოლოს სტრიქონი: 'ბ' (ნებისმიერი სიმბოლო ინტერვალში)
  • სინტეგრირებული სტრიქონი, რომელიც შეიცავს და ინტერვალში, და მის ფარგლებს გარეთ სიმბოლოებს: "абვA1"

ტესტირება მოიცავს ამ მნიშვნელობების გაგზავნას შეტანის ველში და სისტემის მოსალოდნელი ქცევის შემოწმებას: დაშვებული მნიშვნელობების მიღება და მიუღებელი მნიშვნელობების გამორიცხვა (ან სწორად დამუშავება):

Python კოდის მაგალითი:

# ფუნქცია, რომელიც ამოწმებს სტრიქონის კირილიცულ პატარა ასოებში ყოფნას
def validate_cyrillic_lowercase(text):
    import re
    return bool(re.fullmatch('[а-я]+', text))

# საზღვრის მნიშვნელობების ტესტი შემთხვევები
test_cases = {
    "დაბალი ზღვარი (პირველი სიმბოლო)": ('а', True),
    "დაბალი ზღვარი (მინიმუმზე წინ, არავალიდური)": ('`', False), # მაგალითი სიმბოლოს 'а'-ს წინ
    "ზედა ზღვარი (ბოლო სიმბოლო)": ('я', True),
    "ზედა ზღვარი (მინიმუმზე შემდეგი, არავალიდური)": ('{', False), # მაგალითი სიმბოლოს 'я'-ს შემდეგ
    "შიგნით ინტერვალი": ('абв', True),
    "ცარიელი სტრიქონი": ('', False),
    "ლათინური ასოები": ('abc', False),
    "ციფრები": ('123', False),
    "სპეციალური სიმბოლოები": ('@#$', False),
    "კირილიცული დიდი ასოები": ('АБВ', False),
    "შერეული სტრიქონი": ('абвA1', False)
}

# ტესტების შესრულება
for description, (value, expected) in test_cases.items():
    actual = validate_cyrillic_lowercase(value)
    assert actual == expected, f"ტესტი: {description}, მნიშვნელობა: '{value}', ელოდება: {expected}, მიღებულია: {actual}"
    print(f"ტესტი '{description}' წარმატებით დასრულდა.")