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

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 3031 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" и "и" тоже, говорят, похожи.

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

Перебираем символы в слове, ищем набор, в котором присутствует символ, формируем варианты слова с перебором символов.
Оставьте свое сообщение
Вакансии
Программист 1С
Казань
зарплата от 150 000 руб.
Полный день

Программист 1С:ERP
Москва
зарплата от 100 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С (удаленно)
Самара
зарплата от 230 000 руб. до 230 000 руб.
Полный день

Руководитель группы разработки 1С
Москва
зарплата от 250 000 руб. до 250 000 руб.
Полный день