Перебор символов

1. Devilion 08.01.21 19:42 Сейчас в теме
Добрый день, нужна помощь, хотелось бы посмотреть, на рабочий вариант
Есть текстовая переменная (нужно реализовать ее ввод), далее по тексту слово, длиной 2-4 символа, слово может содержать символы русского и английского алфавита и цифры.
Суть задания , нужно получить список схожих по написанию слов с похожими русскими, английскими символами или цифрами. Нужно сделать различаемое оформление символов из разных наборов (а – русская, A – английская). Так же нужно учесть, что, 0 (ноль) похож на русскую и английскую букву О.
Реквизит - поле ввода, в который будут вноситься данные, по нажатию на кнопку отрабатывает код и выводится всё в таблицу значений, которая будет на форме
Например: есть слово 'АP0', результатом обработки должен быть список вида:
АРO
AРo
AР0
AрO
Aрo
Aр0
aРO
aРo
aР0
aрO
aрo
aр0
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. user856012 13 08.01.21 19:55 Сейчас в теме
(1)
Например: есть слово 'АP0', результатом обработки должен быть список вида:
АНO
И чем символ "P" похож на символ "Н"? Тем, что они расположены на одной клавише?
5. Devilion 08.01.21 19:57 Сейчас в теме
(4)Извиняюсь, слово указал не правильно(задачу нашел просто на просторах интернета, вот сейчас заинтересовало решение), что написал изначальное слово другое, должно быть слово АН0
9. user856012 13 08.01.21 20:07 Сейчас в теме
(5)
задачу нашел просто на просторах интернета
То есть, практического смысла она не несет?
вот сейчас заинтересовало решение
Ну так решайте! Или, как гласит один из законов Мерфи: "Сложность программы растет до тех пор, пока не превысит способности программиста" - тот самый случай? ;)

Я бы за обозначенную сумму мог бы описать алгоритм на словах, но писать готовый код... нафиг-нафиг, желаю удачи!
2. XAKEP 08.01.21 19:50 Сейчас в теме
0
6
3
8
------------------
о
б
з
в
---------------

не совсем понял, это глаза будут определять ?
---------------------
вход откуда и выход куда ?
3. Devilion 08.01.21 19:52 Сейчас в теме
(2) Реквизит - поле ввода, в который будут вноситься данные, по нажатию на кнопку отрабатывает код и выводится всё в Таблицу значений, которая будет на форме
6. XAKEP 08.01.21 19:58 Сейчас в теме
(3)
это на русском, но я ничего не понял :)

ввод нельзя ограничить только буквами и одного алфавита....?
или потом проверять,где есть буквы, похожие на цифры :)
7. Devilion 08.01.21 19:59 Сейчас в теме
(6)Да, слово может быть Аз, а может быть АнЗ0
8. XAKEP 08.01.21 20:04 Сейчас в теме
(7)
как это может быть Аз АнЗ0
----------------
есть человек
он набирает в поле ввода
( что ему хочется или слепым методом )
конкретно слепым, что набирает, что попало :)

---------------------
потом это куда идет и для чего эта затея ?
10. Devilion 08.01.21 20:09 Сейчас в теме
(8)Задача была взята их интернета, хотелось посмотреть на готовый вариант, как это всё работает, потому есть есть варианты на c# python, а вот на 1с не понимаю, как работает,

можно учесть тот момент, что введёные данные могут быть только АР0 или ар0 допустим или ан0 или АН0
11. XAKEP 08.01.21 20:12 Сейчас в теме
(10)
вам вознаграждение умножить на 100
конкретно подать задачу и ждите результат от желающих :)
18. starik-2005 3036 09.01.21 12:12 Сейчас в теме
(10) ну так с питона в 1С адаптировать достаточно легко код. Есть множ5ство алгоритмов, определяющих схожеть - по звучанию, по написанию, ... Не так давно на ифостарте была публикация про это. Все, полагаю, сводится к тому, чтобы найти расстояние между похожими буквами. Чем оно больше, тем меньше коэффициент "похожести". Ну и считать буквы одинакового написания (или цифру НОЛЬ, как букву "○") одинаковыми.
12. XAKEP 08.01.21 20:20 Сейчас в теме
Постулаты программирования Туатмена


2. Самая опасная ошибка обнаруживается тогда, когда программа функционирует уже полгода.

это про 1с :)
13. Devilion 08.01.21 20:21 Сейчас в теме
(12)это я знаю, вот только еще не работаю, не так давно начал изучение 1с(примерно месяца полтора назад), хотелось глянуть, как такое вообще работает
14. XAKEP 08.01.21 20:22 Сейчас в теме
Компьтерные законы по Голубу

1. Нечеткая формулировка целей проекта используется для того, чтобы избежать неприятных минут при определении предполагаемых затрат на осуществление этих целей.


а это ? :)
15. Devilion 08.01.21 20:23 Сейчас в теме
(14)Честно скажу, вроде бы понятно, что и как должно отрабатывать, как более понятную формулировку дать, не совсем понимаю, сейчас только дополню, откуда число берётся и куда выводится
16. XAKEP 08.01.21 20:25 Сейчас в теме
Руководство по системному программированию Штейнбаха

Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать.
17. user856012 13 08.01.21 20:35 Сейчас в теме
М-да. "Плоды раздумья" Козьмы Пруткова:

"Если у тебя есть фонтан, заткни его, дай отдохнуть и фонтану"
Nefilimus; +1 Ответить
19. VicGuru 10.01.21 21:31 Сейчас в теме
примерно так, нужное соответствие дополнить

&НаСервере
Процедура РазложитьНаСервере()
	
	СоответствиеСимволов = Новый Соответствие;
	СоответствиеСимволов.Вставить("о", "0");
	СоответствиеСимволов.Вставить("А", "A");

	
	ДлинаСтроки =  СтрДлина(СокрЛП(Строка));
	
	Массив = Новый Массив(ДлинаСтроки, 4);
	
	Для ИндексСтроки = 1 По ДлинаСтроки Цикл
		
		ТекущийСимвол = Сред(Строка, ИндексСтроки, 1); 
		Массив[ИндексСтроки-1][0] = ВРег(ТекущийСимвол);
  		Массив[ИндексСтроки-1][1] = НРег(ТекущийСимвол);
		
		ТекущийСимволСооветствия = СоответствиеСимволов.Получить(Врег(ТекущийСимвол));
		
		Если ТекущийСимволСооветствия <> Неопределено Тогда
			Если ТипЗнч(ТекущийСимволСооветствия) = тип("Число") Тогда
				Массив[ИндексСтроки-1][2] = ТекущийСимволСооветствия;
			Иначе	
				Массив[ИндексСтроки-1][2] = ВРег(ТекущийСимволСооветствия);
	  			Массив[ИндексСтроки-1][3] = НРег(ТекущийСимволСооветствия);
			КонецЕсли;	
		Конецесли;
	
	КонецЦикла;	
	
	СписокВариантов = Новый СписокЗначений;
	
	ЗаполнитьСтроку(СписокВариантов, "", Массив, ДлинаСтроки-1, 0);
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьСтроку(СписокВариантов, текСтрока, Массив, МаксИндекс, текИндекс)
	
	Если текИндекс<=МаксИндекс Тогда
		Для ИндексМассиваВложенный = 0 По 3 Цикл 
			Если ЗначениеЗаполнено(Массив[текИндекс][ИндексМассиваВложенный]) Тогда
			    ЗаполнитьСтроку(СписокВариантов, текСтрока+ Массив[текИндекс][ИндексМассиваВложенный], Массив, МаксИндекс, текИндекс+1);
			Конецесли;	
		конецЦикла;	
	ИначеЕсли текИндекс = МаксИндекс+1 Тогда
		СписокВариантов.Добавить(текСтрока);
	КонецЕсли;	
	
Конецпроцедуры	
Показать
user1503726; +1 Ответить
20. JohnGalt 57 19.01.21 15:24 Сейчас в теме
Нужно определить предел схожести. "u" и "и" тоже, говорят, похожи.

А по реализации предлагаю сделать наборы похожих символов. Хранить в регистре или в справочнике с табчастью. Или хранить в строках наборы символов, потом в цикле перебирать. Для ускорения получения нужных наборов предлагаю сделать регистр с фиксированным набором символов, чтобы осуществлять по ним поиск.

Перебираем символы в слове, ищем набор, в котором присутствует символ, формируем варианты слова с перебором символов.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот