Имя: Пароль:
1C
1С v8
Задача на самый короткий код
0 мистер игрек
 
04.04.12
12:53
Есть строка "/-\".
В цикла из сто строки надо чтоб эти символы чередовались.
1 butterbean
 
04.04.12
12:54
а теперь по-русски
2 Wobland
 
04.04.12
12:54
чо?
3 мистер игрек
 
04.04.12
12:56
Для а=1 по 100 Цикл
Если      а=1 тогда "/"
ИначеЕсли а=2 тогда "-"
ИначеЕсли а=3 тогда "\"
ИначеЕсли а=4 тогда "/"
ИначеЕсли а=5 тогда "-"

и так далее...

КонецЦикла;
4 Дикообразко
 
04.04.12
12:56
Если a mod 2 = 0  Тогда
Иначе
5 мистер игрек
 
04.04.12
12:57
(4) В языке 1с
6 Дикообразко
 
04.04.12
12:58
(5) %
7 Wobland
 
04.04.12
12:58
(5) а%3 анализируй
8 Дикообразко
 
04.04.12
12:58
Если a%2 = 0 Тогда
9 butterbean
 
04.04.12
12:58
(5) Если а%3=0 Тогда "\"
ИначеЕсли а%2=0 Тогда "-"
Иначе "-"
Конец
10 mirosh
 
04.04.12
12:58
а = 1;
Для б=1 по 100 Цикл

Если Если а=1 тогда "/"
ИначеЕсли а=2 тогда "-"
ИначеЕсли а=3 тогда "\"; a = 1 КонецЕсли;

КонецЦикла
11 Steel_Wheel
 
04.04.12
12:58
(5)
Если a % 3 = 0 Тогда
"\"
ИначеЕсли а % 2 = 0 Тогда
"_"
Иначе
"/"
КонецЕсли;
12 Defender aka LINN
 
04.04.12
13:01
Для Сч = 3 По 103 Цикл
   Сообщить(Сред(Строка, Сч%3+1, 1));
КонецЦикла;
13 Wingless
 
04.04.12
13:01
Сред("/-\",(а%3)+1,1)
14 мистер игрек
 
04.04.12
13:04
Все спасибо!
А что за чудо это % ?
Первый раз встречаюсь
15 Lama12
 
04.04.12
13:05
а = ?(а="/","-",?(а="-","\","/"))
И счетчик не нужен.
% - остаток от деления.
16 mirosh
 
04.04.12
13:05
(14) ну что, взяли на работу?))
17 Дикообразко
 
04.04.12
13:05
(14) самому слабо догадаться?
18 palpetrovich
 
04.04.12
13:08
вентилятор делаешь? ;)
19 ukolabrother
 
04.04.12
13:08
(14) это процент от твоей зарплаты, который надо передать в фонд голодающих одинесников мисты
20 Lama12
 
04.04.12
13:09
(18)Тоже так подумал. :)
Поэтому и предложил решение без счетчиков.
21 мистер игрек
 
04.04.12
13:09
(18) Нет, посложнее.
Бегущего человечка
22 palpetrovich
 
04.04.12
13:10
такие "штучки" в досе помнится в ходу  были :)
23 qeos
 
04.04.12
13:13
чото чепуха какаято..

страка = "";
для и=1 по 100/3 цикол
 страка=страка+"/-\";
конецЦикола;

не?
24 Deon
 
04.04.12
13:14
(23) А сотый символ де?
25 qeos
 
04.04.12
13:17
(24) порезать потом до длины..

еще короче - можно подготовить строку и тупо резать на нужное количество..

.. а еще проще сразу накопипастить

страка="/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\";
26 мистер игрек
 
04.04.12
13:19
(25) Если количество заранее неизвестно?
27 Ksandr
 
04.04.12
13:19
(4) (12) +100500
28 qeos
 
04.04.12
13:20
(26) если заранее неизвестно, то обрезанием через Лев(страка, 100)
29 Deon
 
04.04.12
13:20
(26) Значит надо побольше накопипастить
30 Defender aka LINN
 
04.04.12
13:22
(25) И? Надо выводить по 1 символу, есличо
31 qeos
 
04.04.12
13:26
(25) да?? это гдето в условиях было?
32 Reset
 
04.04.12
13:29
Для полноты вариантов ;)

А=Новый Массив;
А.Добавить("\");
А.Добавить("/");
А.Добавить("-");
///
Для Счетчик=1 по 100 цикл
 ТекЗначок=А[Счетчик%3];



СледующийЗначок=Новый Соответствие;
СледующийЗначок.Вставить("/","-");
СледующийЗначок.Вставить("-","\");
СледующийЗначок.Вставить("\","/");

///
ТекЗначок="\";
Для Счетчик=1 по 100 цикл
 ТекЗначок=СледующийЗначок[ТекЗначок];
 Сообщить(ТекЗначок);
33 мистер игрек
 
04.04.12
13:35
(32) Ты уверен?
34 Reset
 
04.04.12
13:36
(33) В чем?
35 Адинэснег
 
04.04.12
13:37
(34) есть мнение, что в (32) куита...
36 мистер игрек
 
04.04.12
13:37
(34) Что самый короткий код
37 Reset
 
04.04.12
13:38
(36) Что есть "Короткий"? :)
38 Deon
 
04.04.12
13:38
Кстати, в вентиляторе ещё есть значок |
39 Reset
 
04.04.12
13:38
+ (37) Я написал, что не претендую на что-то в первой фразе.
40 Адинэснег
 
04.04.12
13:41
(38) на него и нужно стремиться попасть при набрасывании
41 мистер игрек
 
04.04.12
13:45
т.е "%" остаток округляет?
42 Дикообразко
 
04.04.12
13:46
(41) нет
43 Дикообразко
 
04.04.12
13:46
Стаж: 7 г. 6 мес.  
3,14ец
44 Wern
 
04.04.12
13:47
% в 1с это остаток от деления одного числа на другое.
45 мистер игрек
 
04.04.12
13:49
(43) Шучу, знаю что такое mod. Просто незнал, что в 1С "%" используется в качестве mod
46 Адинэснег
 
04.04.12
13:50
кстати, эксперты утверждают, что например 6%3=6%2=6%1
47 СвинТуз
 
04.04.12
13:55
а="/-\";
Для ии=1 По 32 Цикл
а=а+а;
КонецЦикла;
а=а+"/";
48 Адинэснег
 
04.04.12
13:56
Соответствие = Новый Соответствие;
   Соответствие.Вставить(1,"/");
   Соответствие.Вставить(2,"-");
   Соответствие.Вставить(3,"\");
   й = 1;
   Для н=1 по 100 Цикл
       Сообщить(Соответствие.Получить(й));
       й = ?(й=3,1,й+1);
   КонецЦикла;
49 мистер игрек
 
04.04.12
13:59
(48) Круче этого не придумаешь:

Для Сч = 3 По 103 Цикл
   Сообщить(Сред("\-/", Сч%3+1, 1));
КонецЦикла;
50 Дикообразко
 
04.04.12
13:59
РупораАбсурда нет
51 СвинТуз
 
04.04.12
14:00
а="/-\";
Для ии=1 По 5 Цикл
а=а+а;
КонецЦикла;
а=а+"/-\/";
52 Адинэснег
 
04.04.12
14:02
(49) вин
53 Deon
 
04.04.12
14:03
(49) Теперь надо сравнить быстродействие
54 СвинТуз
 
04.04.12
14:04
(49)
ну да 100 итераций оно круто
вы кстати еще рекурсией попробуйте
вообще будет красота
55 Kashemir
 
04.04.12
14:04
а="/-\"; Пока СтрДлина(а) < 100 Цикл а = Лев(а+а,100); КонецЦикла;
56 мистер игрек
 
04.04.12
14:06
Интересно узнать, как % вычисляет остаток от деления.
Например,
4/3 = 1,33
5/3 = 1,66

Но как вычисляется, что 1,33 - это 1, а 1,66 - это 2 ?
57 Kashemir
 
04.04.12
14:08
(56) Все что нацело не поделилось и будет остатком
58 СвинТуз
 
04.04.12
14:08
а="/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/";


У меня самый короткий и быстрый код
я ВИН
59 Axel2009
 
04.04.12
14:12
а="/-\";
Для Сч = 1 По Цел(100/3) Цикл
б=б+а;
КонецЦикла;
б=б+Сред(а,100%2);
60 Axel2009
 
04.04.12
14:12
(56) иди математику учи 5го класса
61 Defender aka LINN
 
04.04.12
14:13
(56) 4/3 <> 1,33.
4/3 = 1 + 1/3.
62 Дикообразко
 
04.04.12
14:13
(56) ты в 2м классе что делал?
63 Дикообразко
 
04.04.12
14:13
похоже уже бухал по подъездам
64 Дикообразко
 
04.04.12
14:14
Стаж: 7 г. 6 мес.
65 Axel2009
 
04.04.12
14:16
100-Цел(100/3)*3 это равнозначно "%"
66 Reset
 
04.04.12
14:19
(59) Вариант :)

КоличествоЗначков=100;
Длина=3;
Строка="/-\";
Пока Длина<КоличествоЗначков цикл
   Строка=Строка+Строка;
   Длина=Длина+Длина;
КонецЦикла;
Строка=Лев(Строка,КоличествоЗначков);
67 Deon
 
04.04.12
14:25
А вот вам ещё забавненькое, но таки универсальное решение:

стр = "\-/";
Для Сч = 1 По 100 Цикл
   Сообщить( Лев(стр,1) );
   стр = сред(стр,2) + лев(стр,1);
КонецЦикла;
68 мистер игрек
 
04.04.12
14:29
(67) Объясни пож. Чем принципиально лучше твой код чем этот:

Для Сч = 3 По 103 Цикл
   Сообщить(Сред("\-/", Сч%3+1, 1));
КонецЦикла;
69 Deon
 
04.04.12
14:30
(68) Ну во-первых: ничем. Во-вторых: метод не зависит от длины строки. В-третьих: нет непонятного остатка от деления ;)
70 Deon
 
04.04.12
14:33
(68) А, во, я придумал. Мой метод можно использовать в цикле "Для Каждого", где нет переменной счетчика
71 Сияющий Асинхраль
 
04.04.12
14:35
(69) А чем тебе непонятен остаток от деления?
72 мистер игрек
 
04.04.12
14:37
(70) Тогда, получается твой код ВИН? Он более универсален.
Походу (12) без счетчика сдохнет.
73 azernot
 
04.04.12
14:38
Вентилятор

Стр = "/";
Для, Для каждого, Пока .. Цикл //Рабочий цикл
Стр = ?(Стр="/",Символ(8212),?(Стр = "\","|",?(Стр = "|","/","\")));
74 Deon
 
04.04.12
15:22
(71) Я про множество сообщений в этой теме, в которых обсуждается принцип работы оператора %
75 Сияющий Асинхраль
 
04.04.12
15:32
(74) Ну так, если большому количеству народа влом взять в руки ЖКК, то это не значит, что работа этого оператора недокументирована  или неоднозначна...
76 Deon
 
04.04.12
15:36
(75) А разве в ЖКК про него написано нечто большее, чем "% - остаток от деления нацело"?
77 Rizhij_Nikitos
 
04.04.12
15:41
Свои пять копеек хотел бы вставить, не увидел слишком такого
x=0;
Пока x<100 Тогда
строка=строка+"/-\";
x=x+3;
КонецЦикла;
78 qeos
 
04.04.12
15:43
а можно я скажу, что эта ветка глупейшая за сегодня?
79 Deon
 
04.04.12
15:43
Вообще, в ветке решают 2 разные задачи )))
Одна та, которая описана в (0)
Вторая та, которая нужна автору
80 Rizhij_Nikitos
 
04.04.12
15:47
согласен с (78), что ветка глупейшая, но мой код самый оптимальный)
81 Сияющий Асинхраль
 
04.04.12
15:54
(76) А разве учившимся в школе этой фразы не достаточно, чтобы Однозначно понять как работает этот оператор?
82 Deon
 
04.04.12
15:54
(80) Тока он нерабочий и выдаст строку в 102 знака
83 Deon
 
04.04.12
15:55
(81) Ну как видишь, не всем. К тому же он и правда используется довольно редко, так что про него, я думаю, многие забывают
84 Rizhij_Nikitos
 
04.04.12
15:56
ошибся) там x<99 =)
85 Aprobator
 
04.04.12
15:59

ИсхСтрока = "";
ПовторСимволы = "/-\-";
Для ПеремЦикла = 1 По 100 Цикл
   ИсхСтрока = ИсхСтрока + ПовторСимволы;
КонецЦикла;
86 Deon
 
04.04.12
15:59
(84) И получится у тебя строка из 99 символов, а не из 100
87 Aprobator
 
04.04.12
16:01
а млин - (3) не увидел.
88 Deon
 
04.04.12
16:01
(85) И чё будет? )
89 Aprobator
 
04.04.12
16:35
имхо, задачка то явно с подвохом. Коды символов по порядку 47, 45, 92.
Жалко времени покумекать нету - надо выделку делать.