|
Создание простой анаграммы | ☑ | ||
---|---|---|---|---|
0
Akinetsu
28.10.21
✎
20:14
|
На форме вводится произвольное предложение. В предложениях допускаются только буквы кириллицы и латиницы, знаки пунктуации.
Считается что слово может состоять строго из букв, цифр, символа "_". Остальные символы считаются знаками пунктуации. По нажатию на кнопку необходимо развернуть все слова введенного текста задом на перед. Пример 1 Ввели - Hello World!!! Получили - olleH dlroW!!! Пример 2 Вввели - Hi, Jack) How are you? Получили - iH, kcaJ) woH era uoy? Я довольно давно не занимался кодингом в 1С, да и то, когда занимался, то совсем немного. В общем мне нужна помощь, как делать подобные вещи. Я уже запутался, какой цикл делать и как вынести в разрешенные или запрещенные символы те, или иные вещи. |
|||
1
МихаилМ
28.10.21
✎
20:16
|
в поиск. было уже.
|
|||
2
Akinetsu
28.10.21
✎
20:19
|
(1) А можно ссылочку, а то я найти не могу.
|
|||
3
Злопчинский
28.10.21
✎
20:22
|
А вам круто сделать или тупо?
|
|||
4
Злопчинский
28.10.21
✎
20:23
|
если тупо
стандартно делим на слова. перебираем все слова каждое слово перебираем буква сзаду наперед. перевернутые слова снова склеиваем в предложение. не забыаем про зпт, тчк, всклзнак итд - по сути они являются однобуквенными словами |
|||
5
Akinetsu
28.10.21
✎
20:25
|
(4) И какой у этого код? Хотя бы пример.
|
|||
6
МихаилМ
28.10.21
✎
20:34
|
(2) алгоритмический кретинизм тут у многих.
но умение пользоваться поисковыми сервисами интернет - минимальное требование. это форум цеховой . так что Вам здесь не место. |
|||
7
Garykom
гуру
28.10.21
✎
20:44
|
(5) скажи а зарплату за тебя тоже другие получать будут?
|
|||
8
RomanYS
28.10.21
✎
20:47
|
(6) Что так жестко-то?
(0) задачка прикольная и реально алгоритмическая (навыков и специфики 1С не нужно совсем). Руки чешутся написать красиво, но сдержусь. Попробуй что-нибудь написать сам, тебя конечно обольют г-ном, но есть шанс что помогут. |
|||
9
Akinetsu
28.10.21
✎
20:47
|
(7) Скажи, а ты любой запрос о помощи в чем-либо воспринимаешь в контексте наглого использования чужих ресурсов?
|
|||
10
takefive
28.10.21
✎
20:54
|
Функция Развернуть(Слово)
Результат = ""; Для НомерСимвола = 1 По СтрДлина(Слово) Цикл Результат = Сред(Слово, НомерСимвола, 1) + Результат; КонецЦикла; Возврат Результат; КонецФункции Процедура Сформировать(Предложение) Результат = ""; Строки = СтрЗаменить(Предложение, " ", Символы.ПС); Для НомерСтроки = 1 По СтрЧислоСтрок(Строки) Цикл Слово = СтрПолучитьСтроку(Строки, НомерСтроки); Результат = Результат + " " + Развернуть(Слово); КонецЦикла; Сообщить(Результат); КонецПроцедуры |
|||
11
МихаилМ
28.10.21
✎
20:55
|
(8) я такие задачки делал классе в 6-м . для взрослого человека - задача не интересная.
для человека с подростковым менталитетом - здесь не уместная. т.к. это взрослый форум. невзирая на то что когда форум создавался, ВР было лет 20. |
|||
12
HawkEye
28.10.21
✎
20:56
|
(0) в чем проблема то разбить предложение на слова и каждое из них перевернуть?
|
|||
13
Garykom
гуру
28.10.21
✎
21:00
|
(9) Еврей?
|
|||
14
RomanYS
28.10.21
✎
21:01
|
(10) Знаки препинания не учтены
(11) прелесть подобных задач, что их сложность одинакова для 6классника и профессионала. А вся специфичные функции типа СтрРазделить здесь слабо помогают |
|||
15
Garykom
гуру
28.10.21
✎
21:02
|
(9) Ты бы хоть показал что сам смог
Или написал алгоритм как собираешься задачу решать Имхо пока вижу что у тебя ничего не выйдет к сожалению в этом деле Даже если ты каким то чудом сделаешь тестовое и возьмут на стажировку за тарелку супа то очень быстро сам бросишь |
|||
16
Asmody
28.10.21
✎
21:02
|
на мисте есть специальный сервис для переворачивания строк. можешь использовать его
https://mista.ru/strrev?mista |
|||
17
Garykom
гуру
28.10.21
✎
21:03
|
(14) Неа
У профессионала есть дофига способов решить задачу Например почему бы не тупо написать конечный автомат с перебором символов по одному и стеком? |
|||
18
RomanYS
28.10.21
✎
21:03
|
(16) 👍 :)))
|
|||
19
Garykom
гуру
28.10.21
✎
21:04
|
(16) предлагаешь делать http запросы по каждому слову?
|
|||
20
RomanYS
28.10.21
✎
21:04
|
(17) >> перебором символов по одному и стеком
Это и есть "красиво" и одинаково доступно и школьнику в т.ч. |
|||
21
Tatitutu
28.10.21
✎
21:05
|
(0) создай тз или массив
С двумя столбцами Число и символ Циклом пробеги по строке 1 символ 2 символ ... Отсортируй тз по первой колонки Прочитай тз и создай новую строку |
|||
22
Asmody
28.10.21
✎
21:05
|
(19) сервис для разбивания строки на подстроки пока в разработке
|
|||
23
RomanYS
28.10.21
✎
21:05
|
(19) можно взломать мисту и украсть алгоритм
|
|||
24
Tatitutu
28.10.21
✎
21:11
|
//если совсем просто
//или сделай рекурсию) Колсим=стрдлина(твоя_фраза) ; Новстр="" ; Для сч=1 по колсим цикл Новстр=сред(колсим, сч, 1)+новстр; Конеццикла; Сообщить(новстр) ; |
|||
25
Garykom
гуру
28.10.21
✎
21:12
|
1. Нужна функция/код которая по входному символу определит это буква, цифра или "_"
Или наоборот функция которая "Остальные символы считаются знаками пунктуации" 2. Надо пробежаться по строке и найти все "пунктуации" 3. Все что между пунктуациями развернуть |
|||
26
trad
28.10.21
✎
21:12
|
(19) можно и одним запросом обойтись
|
|||
27
RomanYS
28.10.21
✎
21:12
|
Для каждого символа Цикл
Если ЭтоБуква Тогда СимволВНачалоБуфера Иначе БуферВРезультат БуферОчистить СимволВРезультат КонецЕсли КонецЦикла БуферВРезультат |
|||
28
Garykom
гуру
28.10.21
✎
21:13
|
(25)+ учитывая что буквы могут быть рус, лат и т.д. и разный регистр
|
|||
29
trad
28.10.21
✎
21:14
|
(0) третее предложение твоего ТЗ противоречит второму
|
|||
30
RomanYS
28.10.21
✎
21:14
|
(24) перечитай условие, слова не нужно переставлять
|
|||
31
Garykom
гуру
28.10.21
✎
21:19
|
Напомните плиз в 1С КодСимвола() там для кириллицы все в одном интервале?
|
|||
32
RomanYS
28.10.21
✎
21:21
|
(31) не удержался)
Нет |
|||
33
Garykom
гуру
28.10.21
✎
21:21
|
(31)+ условие
Если (КодСимвола(ТекСимвол)>=КодСимвола("А")) И (КодСимвола(ТекСимвол)<=КодСимвола("я")) Тогда прокатит? |
|||
34
Garykom
гуру
28.10.21
✎
21:21
|
(32) жаль
|
|||
35
RomanYS
28.10.21
✎
21:23
|
(33) Зачем КодСимвола? 1С корректно сравнивает строки(символы)
|
|||
36
Garykom
гуру
28.10.21
✎
21:23
|
(35) ты думаешь я это помню?
|
|||
37
RomanYS
28.10.21
✎
21:27
|
(33) с "Ё" не прокатит)))
|
|||
38
acht
28.10.21
✎
21:27
|
(19) Это микросервис, он так работает.
|
|||
39
RomanYS
28.10.21
✎
21:27
|
(16) кириллица некорректно обрабатывается)
|
|||
40
Garykom
гуру
28.10.21
✎
21:27
|
(36)+ я вот только сча вспомнил что можно числа >0 и 0 как Истина и Ложь в условиях
|
|||
41
Garykom
гуру
28.10.21
✎
21:29
|
(37) ну тогда строку символов "букв" забить самое простое и искать в ней
|
|||
42
RomanYS
28.10.21
✎
21:32
|
(41) проще
ЭтоБуква = ((С >= "а") И (С <= "Я")) или (С = "_") или .... |
|||
43
Garykom
гуру
28.10.21
✎
21:32
|
(41)
Функция ЭтоБуква(ТекСимвол) Буквы = "ABC...XYZ...abc..xyzАБВ...эюя012...9"; Возврат Булево(Найти(Буквы, ТекСимвол)); КонецЕсли; |
|||
44
RomanYS
28.10.21
✎
21:36
|
(43) Ещё прикольнее
ЭтоБуква = Врег(С) <> Нрег(С);//цифры и "_" нужно отдельно проверить |
|||
45
Garykom
гуру
28.10.21
✎
21:39
|
(44) во пойдет
|
|||
46
Asmody
28.10.21
✎
21:43
|
(39) Ну так оно побайтово разворачивает, а кириллица в utf-8 – это 2 байта, библиотеку надо.
|
|||
47
Asmody
28.10.21
✎
21:46
|
(44) Для иврита или грузинского, например,
не сработает |
|||
48
Garykom
гуру
28.10.21
✎
21:48
|
(47) в ТЗ только латиница и кириллица
выноса в функцию достаточно для решения, если что ее допилить )) |
|||
49
pechkin
28.10.21
✎
21:49
|
Более сложный вариант задачи.
Перевернуть слово, оставив все небуквы на своем месте |
|||
50
Garykom
гуру
28.10.21
✎
21:50
|
(49) неа не сложней
небуквы в шаблон-матрицу, затем буквами заполняем пустые места в матрице только что считать разделителем слов? |
|||
51
RomanYS
28.10.21
✎
21:52
|
(49) что должно получиться из "аб_вгд"?
|
|||
52
Homer
28.10.21
✎
22:01
|
Процедура ПриОткрытии()
Текст = "Hi, Jack) How are you?"; //Текст = "Hello World!!!"; КонецПроцедуры Процедура КнопкаВыполнитьНажатие(Кнопка) Результат = ""; Для НомерСимвола = 1 По СтрДлина(Текст) Цикл мСимвол = Сред(Текст, НомерСимвола, 1); мСимвол = ПроверкаСимвола(мСимвол); Результат = Результат + Строка(мСимвол); КонецЦикла; Сформировать(Результат); КонецПроцедуры Функция ПроверкаСимвола(мСимвол) мКодСимвола = КодСимвола(мСимвол); Если НЕ мКодСимвола = 32 и мКодСимвола < 65 Тогда мСимвол = " @@" + Строка(мСимвол); КонецЕсли; Возврат мСимвол; КонецФункции Процедура Сформировать(Предложение) Результат = ""; Строки = СтрЗаменить(Предложение, " @", Символы.ПС); Строки = СтрЗаменить(Предложение, " ", Символы.ПС); Для НомерСтроки = 1 По СтрЧислоСтрок(Строки) Цикл Слово = СтрПолучитьСтроку(Строки, НомерСтроки); Результат = Результат + Развернуть(Слово); КонецЦикла; Результат = СтрЗаменить(Результат,"@"," "); Сообщить(Результат); КонецПроцедуры Функция Развернуть(Слово) Результат = ""; Для НомерСимвола = 1 По СтрДлина(Слово) Цикл мСимвол = Сред(Слово, НомерСимвола, 1); Если мСимвол = "@" Тогда Возврат СтрЗаменить(Слово,"@",""); КонецЕсли; Результат = мСимвол + Результат; КонецЦикла; Возврат " " + Результат; КонецФункции |
|||
53
Asmody
28.10.21
✎
22:02
|
(49) судя по этой странице https://unicode-table.com/ru/alphabets/ понять что такое "небуква" – нифига не тривиальное занятие
|
|||
54
Garykom
гуру
28.10.21
✎
22:04
|
(52) 1. Много буков
2. Ниасилил ты, ошибки у тебя |
|||
55
RomanYS
28.10.21
✎
22:07
|
(52) ой, не красиво. И кстати показательно в контексте(11): такое решение шестиклассник не напишет, а красивое может
|
|||
56
Garykom
гуру
28.10.21
✎
22:08
|
(55) кстати да
студент в смысле кандидат в стажеры в принципе не способен написать идеально правильное решение надо обязательно ошибки оставлять (незначительные) - это еще когда курсовые/контрольные на заказ делал )) |
|||
57
mikecool
28.10.21
✎
22:10
|
Результат = Новый Массив;
Для Сч = 1 По СтрДлина(НашаСтрока) Цикл ОдинСимвол = Сред(НашаСтрока, 1, 1); Если Результат.Количество() = 0 тогда Результат.Добавить(ОдинСимвол); Иначе Результат.Вставить(0, ОдинСимвол); КонецЕсли; КонецЦикла; Вывести массив в прямом порядке, мне лень |
|||
58
mikecool
28.10.21
✎
22:10
|
+57 да и массив тут лишний, можжно сразу строку формировать
|
|||
59
RomanYS
28.10.21
✎
22:17
|
(57) смотри (30)
|
|||
60
nodrama
28.10.21
✎
22:29
|
Остался вопрос. Какая ситуация должна случится в базе 1с что бы понадобилось в 1с перевернуть где то слова задом на перед. Или это так для общего развития ?
|
|||
61
RomanYS
28.10.21
✎
22:31
|
(60) вероятно тест. Для простого теста прямо огонь-задачка
|
|||
62
mikecool
28.10.21
✎
22:35
|
(60) они не перешли на 19 платформу, но внедряют арабам конфигу
|
|||
63
МихаилМ
28.10.21
✎
23:48
|
||||
64
Asmody
28.10.21
✎
23:55
|
(46) я зарелизил 2ю версию сервиса-переворачивателя! теперь оно поддерживает кириллицу!
https://mista.ru/strrev?кириллица |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |