Является ли строка 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, которая проверяет, является ли строка адресом электронной почты. В коде определены следующие предикаты:
- email(S) - S это строка, которая может быть адресом электронной почты.
- email_work(S, N) - S это строка, которая может быть адресом электронной почты, а N это количество допустимых средних символов в адресе.
- allowed(C) - C это символ, который является допустимым средним символом в адресе электронной почты.
- allowed_middle(C) - C это символ, который является допустимым средним символом в адресе электронной почты.
- rule(C, N, NN) - C это первый символ адреса, N это количество допустимых первых символов, а NN это количество допустимых вторых символов. В коде определены следующие правила:
- Для пустой строки (S = ``) допустимо только 5 средних символов (N = 0).
- Если первый символ адреса является допустимым средним символом, то для него допустимо на 1 больше вторых символов, чем для предыдущего символа.
- Если первый символ адреса является допустимым символом, но не является допустимым средним символом, то для него допустимо на 1 больше вторых символов, чем для предыдущего символа.
- Если первый символ адреса является недопустимым символом, то для него допустимо на 1 больше вторых символов, чем для предыдущего символа. В коде также определены следующие утверждения:
- Для цифр допустимы только цифры (C >= '0' и C <= '9').
- Для букв допустимы только буквы (C >= 'a' и C <= 'z' или C >= 'A' и C <= 'Z').
- Допустимыми средними символами являются точка (C = '.'), подчеркивание (C = '_') и дефис (C = '-').
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д