Имя: Пароль:
IT
 
СтрЗаменить()
,
0 Wobland
 
16.04.12
13:38
В тексте требуется заменить все буквы "А" на буквы "Б", а все буквы "Б" - на буквы "А".
Ограничения.
1) из инструментов есть только СтрЗаменить(), которая применяется на весь текст сразу;
2) алфавит языка нам неизвестен. может встретиться любой вообразимый символ. знаем только, что есть А и Б.

я справился за пять замен. говорят, можно за четыре.
1 PuhUfa
 
16.04.12
13:40
A - Aвременная
Б - Бвременная
Авременная - Б
Бвременная - А
2 Wobland
 
16.04.12
13:40
заметка по поводу второго условия. мы не можем в заменах использовать, к примеру, В, т.к. этого символа может не оказаться в алфавите текста
3 zdas
 
16.04.12
13:41
(0) текст из любых символов может состоять?
4 birkoFFFF
 
16.04.12
13:42
(1) Тогда уж:
A - Aвременная
Б - А
Авременная - Б
5 Wobland
 
16.04.12
13:42
(3) всё, что можно только вообразить ;)
6 Wobland
 
16.04.12
13:43
(1)(4) нет в языке символа "в", приехали
7 zdas
 
16.04.12
13:45
что-то типа:
8 orefkov
 
16.04.12
13:45
(4)
Допустим текст "Бвременная" станет "Б"
9 Азат
 
16.04.12
13:46
А -> БББ
Б -> ААА

ААА -> Б
БББ -> А

что-то типа такого
10 zdas
 
16.04.12
13:46
+7
А - %А%
Б - %Б%
%А% - Б
%Б% - А
11 PuhUfa
 
16.04.12
13:46
(6) "Aвременная" это лишь условное обозначение
12 PR
 
16.04.12
13:46
(0) Мда, я смотрю, задача-то просто ужас-ужас.
Пять замен — это серьезно, да.
Как-то даже стремно предлагать классический вариант с тремя заменами.

УИ = Строка(Новый УникальныйИдентификатор);
Т = СтрЗаменить(Т, "А", УИ);
Т = СтрЗаменить(Т, "Б", "А");
Т = СтрЗаменить(Т, УИ, "Б");
13 Азат
 
16.04.12
13:47
(12) а ограничение 1 для тебя не действует?
14 zdas
 
16.04.12
13:47
(12) мож не в 1с решение?)
15 picom
 
16.04.12
13:47
(12) я неуспел, только временную переменную хотел просто X
16 Ёпрст
 
16.04.12
13:47
(12) конечно стрёмно, ибо это не верно
17 Wobland
 
16.04.12
13:47
(12) Строка(Новый УникальныйИдентификатор);
допустим, здесь есть "0", а в алфавите текста "0" отсутствует
18 Wobland
 
16.04.12
13:48
(14) мне удобней было проверяться именно в 1С. не принципиально
19 PR
 
16.04.12
13:48
(13) А что там такого ужасного?
20 Wobland
 
16.04.12
13:49
(9) "БББ" во что превратится?
21 Fish
 
16.04.12
13:49
(19) Нету функции Строка и УникальныйИдентификатор
22 PR
 
16.04.12
13:50
(17) А, то есть мы говорим про теоретические задачи на базе практической 1С?
Или вообще (14)?
23 Fish
 
16.04.12
13:50
(0) А такой вариант:
А -> АБ
Б -> БА
АБА -> Б
БА -> А
24 Wobland
 
16.04.12
13:51
(22) теория. 1С тут только потому, что удобней проверять, ибо СтрЗаменить() уже есть
25 Ёпрст
 
16.04.12
13:51
(22) в (12) один хрен не верный код при любой задаче.
Ибо в УИ может быть буква Б
26 Wobland
 
16.04.12
13:52
(23) вылетел на "ббб"
27 zdas
 
16.04.12
13:53
(26) числа не могут быть в принципе?
28 Wobland
 
16.04.12
13:53
(27) "1" - строка
29 PR
 
16.04.12
13:53
(25) Ну да, в УИ еще надо все "Б" заменить на "ДаОдинХренРаботает" :))
30 Dolly_EV
 
16.04.12
14:01
(0)
Процедура Сформировать()
   лТекст=СтрЗаменить(лТекст,ПеремА,ПеремА+ПеремА+ПеремБ);
   лТекст=СтрЗаменить(лТекст,ПеремБ,ПеремБ+ПеремБ+ПеремА);
   лТекст=СтрЗаменить(лТекст,ПеремА+ПеремА+ПеремБ+ПеремБ+ПеремА,ПеремБ);
   лТекст=СтрЗаменить(лТекст,ПеремБ+ПеремБ+ПеремА,ПеремА);
КонецПроцедуры

погонял, вроде все правильно делает в разных сочетаниях А и Б
31 Ёпрст
 
16.04.12
14:05
(30) АБ - болт
32 Dolly_EV
 
16.04.12
14:05
(31) проверь ,все Ок, не болт
33 Wobland
 
16.04.12
14:07
(30)
   лТекст=СтрокаЗапроса;
   ПеремА="А";
   ПеремБ="Б";
   лТекст=СтрЗаменить(лТекст,ПеремА,ПеремА+ПеремА+ПеремБ);
   лТекст=СтрЗаменить(лТекст,ПеремБ,ПеремБ+ПеремБ+ПеремА);
   лТекст=СтрЗаменить(лТекст,ПеремА+ПеремА+ПеремБ+ПеремБ+ПеремА,ПеремБ);
   лТекст=СтрЗаменить(лТекст,ПеремБ+ПеремБ+ПеремА,ПеремА);
   Сообщить(Стр);

баба -> баба
34 Ёпрст
 
16.04.12
14:08
(32) да вроде работает..

АБ
лТекст=СтрЗаменить(лТекст,ПеремА,ПеремА+ПеремА+ПеремБ);
ААББ
лТекст=СтрЗаменить(лТекст,ПеремБ,ПеремБ+ПеремБ+ПеремА);
ААББАББА
лТекст=СтрЗаменить(лТекст,ПеремА+ПеремА+ПеремБ+ПеремБ+ПеремА,ПеремБ);
БББА
лТекст=СтрЗаменить(лТекст,ПеремБ+ПеремБ+ПеремА,ПеремА);
БА
35 PR
 
16.04.12
14:11
Тогда

1. А -> АА
2. Б -> АБ
3. АА -> Б
4. АБ -> А
36 Wobland
 
16.04.12
14:13
(33) мой косяк. надо было Сообщить(лТекст) делать ;)
37 Dolly_EV
 
16.04.12
14:14
(33)
Процедура Сформировать()
   лТекст=СтрЗаменить(лТекст,А,А+А+Б);
   лТекст=СтрЗаменить(лТекст,Б,Б+Б+А);
   лТекст=СтрЗаменить(лТекст,А+А+Б+Б+А,Б);
   лТекст=СтрЗаменить(лТекст,Б+Б+А,А);
КонецПроцедуры

БАБА =АБАБ

На форме:
А - Строка,1
Б - Строка,1
лТекст - Строка, многострочная

короче, мне "5"))
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн