LINUX.ORG.RU

Ответ на: комментарий от PolarFox

Имеется в виду оператор like?

Nagwal ★★★★
() автор топика

Да во всех есть. вот пример условия, где сравниваются на примерно равность 2 переменные:
if (true):
print «Примерно равно»

Tark ★★
()

Сдаётся мне, такой оператор в любом языке легко организуется с помощью сравнения равно/неравно и оператора округления.

kranky ★★★★★
()
Ответ на: комментарий от Nagwal

>А для строк? Или вообще для двух произвольных объектов?
Мой намек был не понят. Сформируйте критерий по которым 2 строки могут быть объявлены примерно равными.

Tark ★★
()
Ответ на: собственно... от metar

А зачем?

Чтобы было:)

А вообще навеянно рабочей задачкой, там как-раз необходимо находить _примерно_ одинаковые куски текста. Т.е. текст до и после легкой правки орфографии например.

Nagwal ★★★★
() автор топика

>где в стнадартную библиотеку или в операторы самого языка кроме сравнения равно/неравно включен оператор/функция примерно_равно?

Речь о чем-то типа soundex, который дает оценку схожести звучания двух рандомных слов?

Absurd ★★★
()
Ответ на: комментарий от Tark

Мой намек был не понят. Сформируйте критерий по которым 2 строки могут быть объявлены примерно равными.

libastral.so =)))

Nagwal ★★★★
() автор топика
Ответ на: комментарий от BlackHawk

>а для строк считаем количество отличающихся символов, например
«стол»,«не стол»,«стопл». Похожие строки?

Tark ★★
()
Ответ на: комментарий от Absurd

Речь о чем-то типа soundex, который дает оценку схожести звучания двух рандомных слов?

Речь об эзотерических языках программирования, поскольку Talks.

Nagwal ★★★★
() автор топика
Ответ на: комментарий от BlackHawk

Кого-то мне ваша аватарка напоминает :3

svr4
()
Ответ на: комментарий от Nagwal

>libastral.so =)))
Тогда зачем городить огород, можно же использовать функцию:
void *made_what_I_want(void *parameters, ...)

Tark ★★
()
Ответ на: комментарий от Nagwal

>>Речь о чем-то типа soundex, который дает оценку схожести звучания двух рандомных слов?

Речь об эзотерических языках программирования, поскольку Talks.

Есть эзотерический язык (название не помню), где даже print «Hello world» на tty может кинуть экзепшен. Можно предположить что там и сравнение через == работает с некоторой долей здорового хаоса.

Absurd ★★★
()
Ответ на: комментарий от ados

Складываешь байт коды символов и сравниваешь с допустимой погрешностью, что тут сложного?

А я и не говорю, что задачка особо сложная.

Nagwal ★★★★
() автор топика

И после этого в обязательном порядке пишешь для любых сочетаний объектов «примерные компараторы». Предлагаю срочно придумать такой язык и внедрить его на сибирские каторги.

stevejobs ★★★★☆
()

abs(a-b)<q

где a и b сравниваемые величины, q - допустимая разность заначений.

Куда проже реализовать это сравнение для нужного класса чем искать подхлдящий язык

Liteblackk
()
Ответ на: комментарий от Liteblackk

> Куда проже реализовать это сравнение для нужного класса чем искать подхлдящий язык

ты видимо нихрена не понимаешь программировании, этот подход называется «язык под задачу».

Rastafarra ★★★★
()
Ответ на: комментарий от Liteblackk

для строк думаю правильнее будет проверять совпадетие i-х символов на равенство и установить максимальное количество несовпадающих на полусумму длин строк либо на длину максимальной строки. все зависит от задачи

Liteblackk
()
Ответ на: комментарий от Rastafarra

иногда проще создать свою функцию чем искать полностью удовлетворяющую требованиям.

если такой знающий подскажи язык в котором «привет» и «превед» были бы эквивалентны а «привет» и «птивет» нет?

Liteblackk
()
Ответ на: комментарий от Rastafarra

>этот подход называется «язык под задачу».
Я думал, что этот метод скорее к политике и менеджменту относится.

Tark ★★
()

Можно две строки скормить генератору речи, а потом проверить корелляцию бинарных данных у двух WAV - файлов. Такие дала.

Absurd ★★★
()
Ответ на: комментарий от Rastafarra

> этот подход называется «язык под задачу».

и вот люди, одержимые сей идеей, городят DSL на каждый чих, хотя всё тысячу раз придумано до них.
Оператор нечеткого равенства обладает одинаковой юзабильностью с методом типа Object.fuzzyEquals(Object source). Зачем еще городить для этого «принципиально новый язык»?

stevejobs ★★★★☆
()

Делаешь интерфейс, и наворачиваешь на него.

Разбиваешь на слова/предложения текст, сравниваешь последовательно слова и предложения.

Сравнивать побайтово — бред сивый кобылы.

tensai_cirno ★★★★★
()
Ответ на: комментарий от Liteblackk

aspell под эту задачу, наверное, можно прикрутить.

Yareg ★★★
()
Ответ на: комментарий от annulen

>> но точно есть какой-то язык с оператором «please»

Причём оно там применяется свободно, но если компилятор в итоге не насчитает достаточного количества волшебных слов, программа не соберётся. Вроде, так :)

GotF ★★★★★
()

Сделай. Возьми diff, например, и считай отношение количества различий к длине строк.

abraziv_whiskey ★★★★★
()

В пхпшечке есть чудесные функции levenshtein, soundex и (тут барабанная дробь) similar_text!

Оператор в плюсах можешь переопределить сам.

KDE41user
()
Ответ на: комментарий от KDE41user

Оператор в плюсах можешь переопределить сам.
Оператор ... переопределить

ненависть!

stevejobs ★★★★☆
()
Ответ на: комментарий от Nagwal

>Т.е. текст до и после легкой правки орфографии например.

считайте расстояние между словами по Левенштейну, и родственные функции. в MySQL имеются FullText индексы, может они немного помогут. А вообще, стОит такое дорого, пропорционально квадрату длинны слов, есть конечно эвристики...

drBatty ★★
()

Качаете исходники stardict'а и внимательно изучаете механизм сравнения слов по критерию «нечеткий запрос».

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Nagwal

>Речь об эзотерических языках программирования, поскольку Talks.

б-г с вами! какая эзотерика? это стандартная фича пхп.

drBatty ★★
()

> где в стнадартную библиотеку или в операторы самого языка кроме сравнения равно/неравно включен оператор/функция примерно_равно?

Посмотрите BABBAGE. Хотя, возможно, там лишь оператор «может быть равно». Если нет и такого - пошлите предложение группе разработчиков.

atrus ★★★★★
()
Ответ на: комментарий от Nagwal

> А вообще навеянно рабочей задачкой, там как-раз необходимо находить _примерно_ одинаковые куски текста. Т.е. текст до и после легкой правки орфографии например.

«расстояние» Яро-Винкеля или Яро

Joe_Bishop
()
Ответ на: комментарий от atrus

спасибо. поржал: http://www.vspu.ac.ru/~chul/humor/babbage/babbage.htm

для Ъ Избранное:

DON'N DO WHILE NOT (не выполнять несмотря на) этот цикл не выполняется, если контролируемое условие не является ложным (или если это полдень в Пятницу); DIDN'T DO (не выполнялось) цикл выполняется один раз и прекращает дальнейшее выполнение каких-либо циклов;

CAN'T DO (невозможно делать) выполнение цикла не может продолжаться;

WON'T DO (отказ выполнять) центральный процессор приостанавливает выполнение программы, так как обнаруживает погрешности в коде выполняемого цикла программы; выполнение программы может быть возобновлено, если на пульте будет набрано «May I?» («Можно мне?»);

WIGHT DO (можно не выполнять) зависит от того какое решение будет принято центральным процессором; выполнение, если CPU находится в рабочем состоянии; прекращение выполнения, если CPU в состоянии останова, или если CPU в состоянии останова по ошибке;

DO ONTO OTHERS (во всем, как хотите, чтобы поступали с вами, так поступайте и вы с другими) используется при записи основного цикла систем, работающих в режиме разделения времени, с целью использования в этих системах единого способа реализации взаимоотношений между отдельными пользователями;

DO BACH (изобразить Баха) используется для записи временных циклов для музыки, генерируемой с помощью ЭВМ (определение нужного ритма).

В каждом структурном языке, отвечающем самым последним требованиям, имеется оператор CASE для реализации многоходового ветвления. Так в языке ALGOL имеется опретор CASE с индексацией, а в языке PASCAL оператор с идентификацией. Т.е. в этих языках выбор не очень велик. В языке BABBAGE, напротив, имеется целый ряд операторов этого класса:

JUST IN CASE (на всякмй случай) предназначен для обработки запасных пояснений и вводимых в последнюю минуту сведений; разрешает пользователю выполнять умножение на ноль с целью исправления, если случайно выпонено деление на ноль; разрешается также выполнение обратного (восстанавливающего) действия и после случайного выполненитя умножения;

BRIFF CASE (случай краткой записи) предназначен для обеспечения краткости программы;

OPEN AND SHUT CASE (случай «открыть и закрыть») при использовании этого оператора никакого доказательства правильности не требуется;

IN ANY CASE (в любом случае) этот оператор всегда означает рабочее состояние;

HOPELESS CASE (безнадежный случай) этот оператор всегда означает нерабочее состояние;

BASKET CASE (безвыходное состояние) оператор действительно означает безвыходное состояние.

drBatty ★★
()

Вы хотите сделать ИИ с женской логикой или робота-девушку?

firestarter ★★★☆
()

а что значит «примерно равно» и по какому принципу оно должно работать для разных типов данных?

yoghurt ★★★★★
()

оператор/функция примерно_равно?

«Если А = Б с вероятностью 3/4»? Хотеть... посмотреть, что из этого кто-нибудь сделает.

Xenesz ★★★★
()

Есть в Питоне мегаудабная вешь:

from difflib import get_close_matches
В свое время разгрёб ею Авгиевы конюшни.

mclaudt
()
Ответ на: комментарий от annulen

annulen> не знаю, но точно есть какой-то язык с оператором «please»
INTERCAL, ага

hdfan2
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.