|
Задача на самый короткий код | ☑ | ||
---|---|---|---|---|
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
|
|
|||
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.
Жалко времени покумекать нету - надо выделку делать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |