Является ли строка e-mail - Prolog

Узнай цену своей работы

Формулировка задачи:

Проверить, является ли введенная строка эл. адресом.

Решение задачи: «Является ли строка e-mail»

textual
Листинг программы
predicates
email(string)
email_work(string,integer)
allowed(char)
allowed_middle(char)
rule(char,integer,integer)
 
clauses
email(S):-email_work(S,0).
 
email_work("", 5).
email_work(S, N):-
  frontchar(S, C, R),
  rule(C, N, NN),
  email_work(R, NN).
 
rule('@', 1, 2).
rule('.', 3, 4).
rule(C, N, NN):-
  N mod 2 = 0,
  allowed(C),
  NN = N + 1.
rule(C, N, NN):-
  N mod 2 = 1,
  allowed_middle(C),
  NN = N - 1.
rule(C, N, N):-
  N mod 2 = 1,
  allowed(C).
 
allowed(C):-C>='0', C<='9'. 
allowed(C):-C>='a', C<='z'.
allowed(C):-C>='A', C<='Z'.
allowed_middle('.').
allowed_middle('_').
allowed_middle('-').

Объяснение кода листинга программы

В коде представлена программа на языке Prolog, которая проверяет, является ли строка адресом электронной почты. В коде определены следующие предикаты:

  1. email(S) - S это строка, которая может быть адресом электронной почты.
  2. email_work(S, N) - S это строка, которая может быть адресом электронной почты, а N это количество допустимых средних символов в адресе.
  3. allowed(C) - C это символ, который является допустимым средним символом в адресе электронной почты.
  4. allowed_middle(C) - C это символ, который является допустимым средним символом в адресе электронной почты.
  5. rule(C, N, NN) - C это первый символ адреса, N это количество допустимых первых символов, а NN это количество допустимых вторых символов. В коде определены следующие правила:
  6. Для пустой строки (S = ``) допустимо только 5 средних символов (N = 0).
  7. Если первый символ адреса является допустимым средним символом, то для него допустимо на 1 больше вторых символов, чем для предыдущего символа.
  8. Если первый символ адреса является допустимым символом, но не является допустимым средним символом, то для него допустимо на 1 больше вторых символов, чем для предыдущего символа.
  9. Если первый символ адреса является недопустимым символом, то для него допустимо на 1 больше вторых символов, чем для предыдущего символа. В коде также определены следующие утверждения:
  10. Для цифр допустимы только цифры (C >= '0' и C <= '9').
  11. Для букв допустимы только буквы (C >= 'a' и C <= 'z' или C >= 'A' и C <= 'Z').
  12. Допустимыми средними символами являются точка (C = '.'), подчеркивание (C = '_') и дефис (C = '-').

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5
Похожие ответы