|
v7: Конкурс последнего дня Мисты | ☑ | ||
---|---|---|---|---|
0
Прохожий
27.08.12
✎
13:09
|
Если есть ПолеВвода1 и ПолеВвода2, то любой пытливый ум напишет очень скоро алгоритм:
... с = СтрДлина(ПолеВвода1); ПолеВвода = ""; Для а = 1 по с Цикл ПолеВвода = ПолеВвода + Сред(ПолеВвода1, С - а + 1, 1); КонецЦикла; ПолеВвода2 = ПолеВвода; ... Но у любой мысли есть тысяча воплощений. Этот алгоритм САМЫЙ ОЧЕВИДНЫЙ. Пишем свой самый-самый алгоритм. |
|||
1
PR
27.08.12
✎
13:09
|
Выдыхай.
|
|||
2
Sh1ko
27.08.12
✎
13:11
|
В Казахстане трава созрела?
|
|||
3
Wobland
27.08.12
✎
13:11
|
я думаю, эта трава имеет точное латинское наименование
|
|||
4
YHVVH
27.08.12
✎
13:11
|
шо это? куда писать, зачем писать, кому писать?
|
|||
5
Wobland
27.08.12
✎
13:11
|
(4) мы о траве
|
|||
6
DGorgoN
27.08.12
✎
13:12
|
Лятят перелетные птицы..
|
|||
7
Рэйв
27.08.12
✎
13:12
|
(0)Пьем,курим или грибоедствуем?
|
|||
8
Прохожий
27.08.12
✎
13:12
|
(2) Тебе достается самый веселый вариант. Уговорил.
(4) Ты можешь написать самый сомнительный алгоритм. |
|||
9
DGorgoN
27.08.12
✎
13:13
|
В общем запишу как вандализм и спам.
|
|||
10
Рэйв
27.08.12
✎
13:13
|
вроде ж разгар рабочего дня, а ТС уже в хлам:-)
|
|||
11
Андрюха
27.08.12
✎
13:14
|
(0) Самый короткий
ПолеВвода2 = ПолеВвода1; |
|||
12
Андрюха
27.08.12
✎
13:15
|
(11)+ А не, тебе же надо реверс строки
|
|||
13
DGorgoN
27.08.12
✎
13:15
|
(11) Ему бы протрезветь
|
|||
14
DGorgoN
27.08.12
✎
13:17
|
Переименовал и открыл снова.
|
|||
15
Андрюха
27.08.12
✎
13:17
|
(0) Вот так если
ПолеВвода2 = "";
|
|||
16
Sh1ko
27.08.12
✎
13:18
|
прекратите, демоны!
|
|||
17
Прохожий
27.08.12
✎
13:19
|
(15) Самый похожий алгоритм.
|
|||
18
Прохожий
27.08.12
✎
13:19
|
+(17) Я бы сказал, Самсунг...
|
|||
19
Sh1ko
27.08.12
✎
13:19
|
полеввода2 = 1адовВелоП;
|
|||
20
Прохожий
27.08.12
✎
13:21
|
(19) Смело.
|
|||
21
Sh1ko
27.08.12
✎
13:21
|
(20) у меня работает, ничонезнаю
|
|||
22
Прохожий
27.08.12
✎
13:22
|
Думаем, не ленимся...
|
|||
23
oleg_prg
27.08.12
✎
13:22
|
(0) Курить, так курить!!!
тогда уж 4-ю строчку замени на ПолеВвода = ПолеВвода + Сред(ПолеВвода1, С - а + Число(Сред(Лог10(НачГода(ТекущаяДата())),Число(Сред(Лог10(НачГода(ТекущаяДата())),7,1))+6,Число(Сред(Лог10(НачГода(ТекущаяДата())),7,1)))), Число(Сред(Лог10(НачГода(ТекущаяДата())),7,Число(Сред(Лог10(НачГода(ТекущаяДата())),7,1))))); |
|||
24
Прохожий
27.08.12
✎
13:24
|
(23) Самый скурпулезный.
|
|||
25
Прохожий
27.08.12
✎
13:26
|
(3) Т.Е. ты можешь написать этот алгоритм на латыни?
|
|||
26
Ranger_83
27.08.12
✎
13:27
|
ПолеВвода2 = Реверс(ПолеВвода1);
|
|||
27
Wobland
27.08.12
✎
13:28
|
(25) я не употребляю. а когда перепью, на мисту не хожу
|
|||
28
Прохожий
27.08.12
✎
13:28
|
(26) ты, наверное, архитектор...
|
|||
29
Прохожий
27.08.12
✎
13:28
|
(27) Боишься нас?
|
|||
30
ILM
гуру
27.08.12
✎
13:28
|
Через массивы букв и СтрЗаменить ещё не писали?
|
|||
31
Прохожий
27.08.12
✎
13:29
|
(30) Писали, много раз. Но признаться боятся.
|
|||
32
Прохожий
27.08.12
✎
13:31
|
Через регистр расчета и правила вытеснения разных видов расчетов ещё не было...
|
|||
33
zladenuw
27.08.12
✎
13:31
|
Процедура Сформировать()
ПолеВвода = ""; ПолеВвода2 = ""; ПолеВвода = СокрЛП(ПолеВвода1); Для Сч = 1 По СтрДлина(СокрЛП(ПолеВвода1)) Цикл Символ = Прав(ПолеВвода,1); ПолеВвода2 = СокрЛП(ПолеВвода2)+Символ; ПолеВвода = СтрЗаменить(ПолеВвода,Символ,""); КонецЦикла; КонецПроцедуры |
|||
34
ILM
гуру
27.08.12
✎
13:31
|
Я тоже уже весь дрожу
|
|||
35
del123
27.08.12
✎
13:34
|
Извращаться так извращаться :D
Сообщение = ЭлементыФормы.Полеввода1.Значение; Длина = СтрДлина(Сообщение); Стр1 = ""; Стр2 = ""; для ы = 1 по окр(Длина / 2, 0,0) цикл Стр1 = Сред(Сообщение, ы, 1) + Стр1 ; Стр2 = Стр2 + Сред(Сообщение, длина - ы + 1, 1); конеццикла; если окр(Длина / 2, 0,0) <> Длина / 2 тогда Сообщить(Стр2 + Сред(Сообщение, окр(Длина / 2, 0,0) + 1, 1) + Стр1); иначе Сообщить(Стр2 + Стр1); конецесли; |
|||
36
Прохожий
27.08.12
✎
13:35
|
(34) Пить не умеешь.
|
|||
37
Прохожий
27.08.12
✎
13:35
|
(35) Это прием в артиллерии называется "вилка"...
|
|||
38
Прохожий
27.08.12
✎
13:36
|
Народ отхлынул, но оставшиеся стали трудиться продуктивно...
|
|||
39
D_Pavel
27.08.12
✎
13:38
|
Пока ЗначениеЗаполнено(ПолеВвода1) Цикл
ПолеВвода2 = ПолеВвода2 + Прав(ПолеВвода1, 1); ПолеВвода1 = Лев(ПолеВвода1, СтрДлина(ПолеВвода1) - 1 ); КонецЦикла; |
|||
40
le_
27.08.12
✎
13:39
|
В VBS есть StrReverse().
|
|||
41
D_Pavel
27.08.12
✎
13:40
|
(38) Народ не отхлынул, скрипты отлаживают
|
|||
42
Андрюха
27.08.12
✎
13:41
|
... и пишут внешние компоненты
|
|||
43
zladenuw
27.08.12
✎
13:42
|
перем Скрипт;
Функция ИнверсияСтроки(Стр) Скрипт.language="vbscript"; Возврат Скрипт.Eval("StrReverse("""+Стр+""")"); КонецФункции Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl"); |
|||
44
Прохожий
27.08.12
✎
13:44
|
(40) Вопрос: как сделать простую страницу, которая будет выворачивать мисту наизнанку? 15:45
|
|||
45
Прохожий
27.08.12
✎
13:44
|
(43) Назовем его Алгоритм перехватчика...
|
|||
46
Шевген
27.08.12
✎
13:45
|
ПолеВвода = "";
Для Сч = 1 По СтрДлина(ПолеВвода1) Цикл ПолеВвода = ?(Сч = СтрДлина(ПолеВвода1), "", " + ") + "Сред(ПолеВвода1, " + Сч + ", 1)" + ПолеВвода; КонецЦикла; Сообщить(Шаблон("[" + ПолеВвода + "]")); |
|||
47
Прохожий
27.08.12
✎
13:46
|
(39) Алгоритм шифрования. ПолеВвода1 стирается и повторить нельзя.
|
|||
48
D_Pavel
27.08.12
✎
13:47
|
(47) Вместо ПолеВвода1 можно использовать временную переменную если нужно сохранить.
|
|||
49
Прохожий
27.08.12
✎
13:50
|
(48) Типичное решение 1С: Если хотите чтобы работало корректно можете переписать...
|
|||
50
pofigos
27.08.12
✎
13:54
|
(0)
с = СтрДлина(ПолеВвода1); ПолеВвода = ""; Для а = 1 по с Цикл ПолеВвода = ПолеВвода + Прав(ПолеВвода1,1); ПолеВвода1 = Лев(ПолеВвода1,) КонецЦикла; ПолеВвода2 = ПолеВвода; |
|||
51
pofigos
27.08.12
✎
13:55
|
не то блин (
|
|||
52
zladenuw
27.08.12
✎
13:57
|
(45) тут явно грибами попахивает. надо дунуть. а то чуда не будет :)
|
|||
53
YHVVH
27.08.12
✎
13:57
|
косяк по кругу пустили, заразная вещь.
|
|||
54
Прохожий
27.08.12
✎
14:01
|
(52,53) У вас слишком много странных букв в никах. Даже подозрительные встречаются.
|
|||
55
Шевген
27.08.12
✎
14:02
|
Вот еще вариант для любителей грибов:
Процедура Сформировать() ПолеВвода = """"""; С = СтрДлина(ПолеВвода1); Для Сч = -С По -1 Цикл ПолеВвода = ПолеВвода + " + Сред(ПолеВвода1, " + (-Сч) + ", 1)"; КонецЦикла; ПолеВвода2 = Шаблон("[" + ПолеВвода + "]"); //Сообщить(Шаблон("[" + ПолеВвода + "]")); КонецПроцедуры |
|||
56
Прохожий
27.08.12
✎
14:03
|
(55) Осталось через мнимые числа закоординироваться и мы перейдем к приличной алгебре...
|
|||
57
Азазелло
27.08.12
✎
14:04
|
Функция ПодСтр(Стр)
ДлСтр = СтрДлина(Стр); Если ДлСтр > 0 Тогда Возврат Прав(Стр, 1) + ПодСтр(Лев(Стр, ДлСтр - 1)); КонецЕсли; КонецФункции Процедура Сформировать() ПолеВвода2 = ПодСтр(ПолеВвода1); КонецПроцедуры |
|||
58
Прохожий
27.08.12
✎
14:04
|
(57) Чё она делает?
|
|||
59
Азазелло
27.08.12
✎
14:05
|
(58) как что? строку переворачивает...
|
|||
60
Азазелло
27.08.12
✎
14:06
|
+(59) согласен, название не удачное )
|
|||
61
Прохожий
27.08.12
✎
14:07
|
+(58) Единственный алгоритм без цикла. Ещё и с рекурсией... Щаз проверим, щаз проверим, щаз проверим, щаз проверим, щаз проверим.....
|
|||
62
Азазелло
27.08.12
✎
14:09
|
(61) ну тогда озвучивай критерий "самой-самости" алгоритма )
|
|||
63
Шевген
27.08.12
✎
14:09
|
Интерпретация
Процедура Сформировать() С = СтрДлина(ПолеВвода1); Для Сч = 1 По С Цикл ПолеВвода2 = ПолеВвода2 + Лев(Прав(ПолеВвода1, Сч), 1); КонецЦикла; Сообщить(ПолеВвода2); КонецПроцедуры |
|||
64
Шевген
27.08.12
✎
14:10
|
Хм... рекурсия...
|
|||
65
zladenuw
27.08.12
✎
14:11
|
я за +(57)
|
|||
66
orefkov
27.08.12
✎
14:15
|
Функция Реверс(стр)
Возврат ?(СтрДлина(стр) = 0, "", Прав(стр, 1) + Реверс(Лев(стр, СтрДлина(стр) - 1))); КонецФункции |
|||
67
Прохожий
27.08.12
✎
14:16
|
(62) У тебя самосамый одинэсный алгоритм. Всегда побеждает тот, к то пишет небесконечную рекурсию. Ибо ничего сложнее рекурсии одноэснеги писать не умеют.
Если только черными запросами не перебьют... |
|||
68
orefkov
27.08.12
✎
14:20
|
Блин, опередили с рекурсией.
|
|||
69
Прохожий
27.08.12
✎
14:22
|
(68) Теперь нужно ждать новую платформу...
|
|||
70
Азазелло
27.08.12
✎
14:22
|
(68) у (0) рекурсия не в почете )
(67) нет, мы еще умеем без использования доп. переменных поместить в А мин. значение, в Б - максимальное )) |
|||
71
Прохожий
27.08.12
✎
14:23
|
(70) С сохранением значений?
|
|||
72
Азазелло
27.08.12
✎
14:29
|
(71) нет. Есть 2 переменные. А и Б. Числовые. нужно сделать так, чтобы в А было мин. значение, в Б - максимальное. Без использования вспомогательных переменных.
|
|||
73
Ranger_83
27.08.12
✎
14:32
|
(66)твой вариант рекурсии более точный,чем в (57)
|
|||
74
Азазелло
27.08.12
✎
14:35
|
(73) ну да, у меня там после проверки условия не хватает Возврат "";
|
|||
75
Ranger_83
27.08.12
✎
14:36
|
(73)значит пока второе место :)
|
|||
76
Прохожий
27.08.12
✎
14:37
|
(75) Ну конечно, первое место у (0)
|
|||
77
Ranger_83
27.08.12
✎
14:42
|
(76)участник (0) вне конкуренции(конкурса)
|
|||
78
Прохожий
27.08.12
✎
14:46
|
(77) Только для (0) весь конкурс и устраивался. Пора бы уже привыкнуть.
"Когда-то я был первым из однёрки певцов" (с) Макаревич. |
|||
79
Азазелло
27.08.12
✎
14:46
|
(76) ну не знаю, мне больше самым очевидным кажется
Для Сч = 1 По СтрДлина(ПолеВвода1) Цикл ПолеВвода2 = Сред(ПолеВвода1, Сч, 1) + ПолеВвода2; КонецЦикла; |
|||
80
Aleksey
27.08.12
✎
14:49
|
(0) Если ПолеВвода1 реквизит на форме, тогда у тебя ошибка в коде ибо в случае если реквизит ограниченной длины строка
с = СтрДлина(ПолеВвода1); вернет длину реквизита, а не длину его значения |
|||
81
Прохожий
27.08.12
✎
14:51
|
(80) Он неограниченный и многострочный... И мультиязычный.
|
|||
82
smaharbA
27.08.12
✎
14:55
|
Берите из зада
|
|||
83
Прохожий
27.08.12
✎
15:03
|
Самый ленивый алгоритм:
... Сообщить("Внимательно скопируйте все буквы в обратном порядке используя левую и правую кнопки мыши. Благодарим за содействие."); ... |
|||
84
Азазелло
27.08.12
✎
15:06
|
Еще один вариант рекурсии, с меньшим числом итераций
Функция Перевертыш(Стр) ДлСтр = СтрДлина(Стр); Если ДлСтр >= 2 Тогда Возврат Перевертыш(Прав(Стр, Цел(ДлСтр / 2))) + Сред(Стр, Цел(ДлСтр / 2) + 1, ДлСтр % 2) + Перевертыш(Лев(Стр, Цел(ДлСтр / 2))); КонецЕсли; Возврат Стр; КонецФункции |
|||
85
Прохожий
27.08.12
✎
15:08
|
(84) Ты чемпион. Уверенное второе место.
|
|||
86
Азазелло
27.08.12
✎
15:09
|
(85) вот блин ))
|
|||
87
Skylark
27.08.12
✎
15:22
|
А кто имеем ум, тот сочти число Зверя...
|
|||
88
smaharbA
27.08.12
✎
15:22
|
Пока ПустоеЗначение(Стр1)=0 Цикл
Стр2=Стр2+Прав(Стр1,1); Стр1=Сред(Стр1,1,СтрДлина(Стр1)-1); КонецЦикла; Для Сч=1 По СтрДлина(Стр1) Цикл Стр2=Стр2+Симв(КодСимв(Прав(Стр1,Сч))); КонецЦикла; Х=""; Для Сч=1 По СтрДлина(Стр1) Цикл Х="Сред(Стр1,"+Сч+",1)+"+Х; КонецЦикла; Сообщить(Шаблон("["+Х+"""""]")); |
|||
89
Прохожий
27.08.12
✎
15:42
|
(88) Самый красный алгоритм.... Хотя у (23) тоже могло получиться красно
. |
|||
90
Прохожий
28.08.12
✎
06:35
|
Расслабились?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |