Pull to refresh
5
@go-prologread⁠-⁠only

User

Send message

Предикаты нужно воспринимать так:
строка соответствует шаблону если строку можно превратить в список атомов и шаблон можно превратить в список атомов и список из строки соответствует правилу соответствия шаблону

Ну, это был намек на unit testing ),
функции типа Assert.AreEqual(expected, actual)
тест зеленый — ok, иначе выведет сообщение…
Спасибо, протестировал,
на такой реализации получаем одну ошибку
isMatch(aa, a)->ok
isMatch(aa, *)->ok
isMatch(cb, ?a)->ok
isMatch(adceb, *a*b)->failed:expected-true
isMatch(acdcb, a*c?b)->ok
isMatch(aab, c*a*b)->ok
isMatch(mississippi, m??*ss*?i*pi)->ok
isMatch(abefcdgiescdfimde, ab*cd?i*de)->ok
isMatch(zacabz, *a?b*)->ok
isMatch(leetcode, *e*t?d*)->ok
isMatch(aaaa, ***a)->ok
isMatch(b, *?*?*)->ok
isMatch(aabbccbbccdd, a*b*c*d)->ok
true


Точно, именно навыки программистов и приводят к обилию ошибок в программах, потому как есть возможность реализовать задачу попроще. А если реализовывать задачу правильно, то нужно вникать в ее суть, а декларативный язык и заставляет этим заниматься.
Спасибо,
вот тут можно попробовать самому:
swish.swi-prolog.org/p/Wildcard%20Matching.pl
Тут надо смотреть тест, в нем проверка на false
:-assert_are_equal(isMatch(leetcode,'*e*t?d*'),false).
А сообщение о правильном прохождении.

Information

Rating
Does not participate
Registered
Activity