Имя: Пароль:
IT
 
Задачи для тестирования программистов
0 pmb
 
01.10.09
14:01
Какие задания можно дать программистам для тестирования на знание общих принципов структурного программирования?
Типа сортировки одномерного массива, но это конечно очень просто.
1 Irbis
 
01.10.09
14:03
(0) Зачем тестировать? Бери с испытательным сроком. Чуть что коленом под зад.
2 Ненавижу 1С
 
гуру
01.10.09
14:03
(0) Дан массив из 99 элементов - целых чисел от 1 до 100, все элементы различны. Соответственно одно значение пропущено. Оптимальным способом найти пропущенное значение.
3 DGorgoN
 
01.10.09
14:04
Выборка максимального/минимального числа.
4 DGorgoN
 
01.10.09
14:04
(2) а язык программирования указывается?
5 pmb
 
01.10.09
14:05
(2), (3) спасибо.
(1) не охота проходной двор устраивать :)
6 pmb
 
01.10.09
14:05
(4) 1С :)
7 Ненавижу 1С
 
гуру
01.10.09
14:05
(0) город?
8 dimaldinho
 
01.10.09
14:06
(0) Есть два отсортированных массива. Нужно слить в один отсортированный.
9 Широкий
 
01.10.09
14:06
(2) Массив отсортирован?
10 Lama12
 
01.10.09
14:07
(2)Отсортировать и далее методом половинного деления и сравнения секций вычислить отсутствующее.
11 dimaldinho
 
01.10.09
14:07
(9)Нет, "оптимальным образом" = за один цикл
12 NS
 
01.10.09
14:07
(8) проще уж тогда попросить написать сортировку слиянием (фоннеймана)
13 Lama12
 
01.10.09
14:08
(11)Тогда складывать с переменой знаков.
14 Irbis
 
01.10.09
14:08
(9) Зачем?
15 Lama12
 
01.10.09
14:08
(13)Бред написал...
16 Irbis
 
01.10.09
14:09
(9)5150-сумма элементов массива
17 NS
 
01.10.09
14:09
(9) Конечно нет.
(2) Сумму посчитать?
18 DGorgoN
 
01.10.09
14:09
(6) см (2).
ТзМассив.Сортировать("Числа+");
Для к = 1 по 100 Цикл
Если к <> ТзМассив.ПолучитьЗначение(к, "Числа") Тогда
  Сообщить(к);
  возврат; (или прервать - что угодно)
КонецЕсли;
КонецЦикла;
Я принят? :)
19 DGorgoN
 
01.10.09
14:10
(10) ну можно и так
20 NS
 
01.10.09
14:10
(18) Врятли...
21 Lama12
 
01.10.09
14:10
Сумма арифметическай последовательности до 100 минус сумма массива.
22 NS
 
01.10.09
14:11
(19) И десять не принят. Сложность алгоритма значем что такое?
23 Ненавижу 1С
 
гуру
01.10.09
14:12
Не, ребята в (2) массив и его не надо сортировать
(17) совершенно верно сумму и вычесть ее из полной суммы элементов, которая считается просто
24 Irbis
 
01.10.09
14:12
Задачей похожей на (2) Эйлера в детстве учитель наказать пытался.
25 Irbis
 
01.10.09
14:12
(23) Типа я в (16) угадал?
26 DGorgoN
 
01.10.09
14:13
(22) затраты времени и других ресурсов различными алгоритмами, предназначенными для решения одной и той же задачи, при больших объемах входных данных.
27 DGorgoN
 
01.10.09
14:13
(23) это не наш метод
28 Ненавижу 1С
 
гуру
01.10.09
14:14
(25) только сумма 101*100/2=5050<>5150
29 DGorgoN
 
01.10.09
14:15
Только вот на практике такие задачи как в (0) редко встречаются. В основном - дано n элементов
30 Lama12
 
01.10.09
14:15
(22)(24)Да поняли уже... Задачка с Хомнета. А я то дурак с тех пор и даже не задумывался над оптимальными решениями... а было это года 4 назад.
31 Irbis
 
01.10.09
14:16
(28) И правда...
32 ado
 
01.10.09
14:17
33 DGorgoN
 
01.10.09
14:18
(32) (0) с оного?
34 Ненавижу 1С
 
гуру
01.10.09
14:20
Написать программу определения количества 2*N -значных билетов, у которых сумма первых N десятичных цифр равна сумме N последних десятичных цифр; при этом N -произвольное натуральное число.
35 ado
 
01.10.09
14:22
(33) Нет, просто я предлагаю (0) оттуда задачи свистнуть ;-)
36 Irbis
 
01.10.09
14:22
Попроси посчитать сумму ряда (2^(2*N))/((N+2)!) с точностью 0.00000000001.
37 Lama12
 
01.10.09
14:25
(36) Не надо издеваться... давайте еще калькулятор 48 разрядный попросим написать...
38 marvak
 
01.10.09
14:25
(0) Имхо, все эти тесты на сортировки оторваны от реальной работы и не дадут полного представления об уровне кандидата.
Тем более в жизни он сортировать будет так ТЗ.Сортировать(...)

:)

Дай ему лучше какую-нить задачку типа - выбрать такие-то документы из таблицы по такому-то критерию (как он выберет - запросом или нет?), обработать их потом, например заменить одну единицу измерения в табличной части на другую, записать лог обработки в выходной файл (Текстовый или Ексель).

Задание простое, но скорость и качество его выполнения дадут примерное представление об уровне кандидадта.

или задай вопрос - посчитай в уме, скока будет два в десятой степени
и оцени время ответа

:)
39 Lama12
 
01.10.09
14:25
(35) Там задачи простые... только одна много писанины требует.
40 Irbis
 
01.10.09
14:25
(37) А никакой издевки и нет. Даже факториал вычислять при этом не придется
41 Ненавижу 1С
 
гуру
01.10.09
14:28
(40) экспонента рулит?
42 Lama12
 
01.10.09
14:28
(40)Да понятно, просто тогда эта задачка на математику а не на программирование.
43 Широкий
 
01.10.09
14:28
(2)
Процедура ОпределитьПропущенноеЧисло(МассивДанных)
   СуммаМассива=0;
   
   РазмерМассива=МассивДанных.Количество();
   ОбщаяСумма=РазмерМассива+1;
   
   Для сч=1 По РазмерМассива Цикл
       СуммаМассива=СуммаМассива+МассивДанных[сч-1];
       ОбщаяСумма=ОбщаяСумма+сч;
   КонецЦикла;
   
   Сообщить("Пропущено число "+(ОбщаяСумма-СуммаМассива));
КонецПроцедуры
44 NS
 
01.10.09
14:28
(34) Слишком заезжена она была в конце восьмидесятых. Все знают как решать.
45 pmb
 
01.10.09
14:28
(38) сейчас приходят люди, которые н знаю что такое массив, структура и объект. Так что пусть сортируют ;)
Что касается прикладной части - то тут будет что спросить. Хочу оценить еще общий уровень
46 pmb
 
01.10.09
14:29
(3) нет. Это далеко за пределами нерезиновой ;)
47 pmb
 
01.10.09
14:29
(46) -> (33)
48 Ненавижу 1С
 
гуру
01.10.09
14:30
(43)
ОбщаяСумма=РазмерМассива+1;
это зачем?
и вообще зачем в цикле вычислять ОбщаяСумма ?
49 Lama12
 
01.10.09
14:30
(45)Спроси названия алгоритмов сортировки. Мне пока больше двух никто не называл. И то 2 назвала девочка с красным дипломом профильным.
50 Irbis
 
01.10.09
14:30
(41) Нет.
51 Irbis
 
01.10.09
14:31
(42) Это на сообразительность.
52 DGorgoN
 
01.10.09
14:31
(38) Ты офигел - 2 в десятой степени - такого даже я на память сразу не вспомню :)
53 Ненавижу 1С
 
гуру
01.10.09
14:31
(50) давай колись
54 DGorgoN
 
01.10.09
14:31
(49) Опять таки алгоритмов куча и я по ним курсовик писал в колледже - но щас прсои, помню толкьо пузырька
55 Широкий
 
01.10.09
14:32
(48) Так.. что первое пришло на ум
Вот упрощенно

Процедура ОпределитьПропущенноеЧисло(МассивДанных)
   РазмерМассива=МассивДанных.Количество();
   ПропущенноеЧисло=РазмерМассива+1;
   
   Для сч=1 По РазмерМассива Цикл
       ПропущенноеЧисло=ПропущенноеЧисло+сч-МассивДанных[сч-1];
   КонецЦикла;
   
   Сообщить("Пропущено число "+ПропущенноеЧисло);
КонецПроцедуры
56 DGorgoN
 
01.10.09
14:32
Вообще про щасливые билетики можно тоже вспомнить
57 Lama12
 
01.10.09
14:32
(45)Еще вопрос - что такое индексы. Плюсы и минусы их использования.
Может ли индекс занимать памяти меньше чем данные которые он индексирует. Чем отличается просто индекс от кластерного индекса.
58 Irbis
 
01.10.09
14:33
Подели N+1 член ряда на N. Это общий коэффициент домножения зависящий от N. Когда следующий рассчитанный член ряда меньше точности вычисления прекращаются
59 Ненавижу 1С
 
гуру
01.10.09
14:33
(52) два в десятой каждый программист должен знать 1024
(44) без перебора знают?
60 Lama12
 
01.10.09
14:33
(54)Вот... пузырька вспоминали 20%...
61 pmb
 
01.10.09
14:33
(57) это уже БД :)
62 DGorgoN
 
01.10.09
14:34
(57) и чем?
63 Ненавижу 1С
 
гуру
01.10.09
14:34
(58) ну да, но факториал приходится считать
я думал что-то новое
64 DGorgoN
 
01.10.09
14:34
(60) А что самое распространённое тогда?
65 Lama12
 
01.10.09
14:35
(60)Самое распространенное - незнаю...
66 Lama12
 
01.10.09
14:35
65+ Т.е. такое ответ.
67 pmb
 
01.10.09
14:35
Кому интересно вспомнилось есть две переменные, необходимо поменять в них значения не используя третьей переменной
68 Irbis
 
01.10.09
14:36
(63) Не приходится. Рассчитанный предыдущий результат умножается на коэффициент. Какой факториал?
69 ДенисЧ
 
01.10.09
14:36
(67) Какого типа переменные? :-)
70 Ненавижу 1С
 
гуру
01.10.09
14:36
(67) поменяй две строковые переменные
71 pmb
 
01.10.09
14:36
вообще идеальны задачи на работу с ТЗ, массивами, структурами. Но вспомнить сходу не могу ничего
72 DGorgoN
 
01.10.09
14:36
(66) см (49) - какой самый распространённый алгоритм?
73 pmb
 
01.10.09
14:36
(70) как ?
74 Ненавижу 1С
 
гуру
01.10.09
14:37
(68) предыдущий результат умножается на коэффициент - это и есть факториал
75 pmb
 
01.10.09
14:37
а = 4
в = 5

нужно
а = 5
в = 4
76 Ненавижу 1С
 
гуру
01.10.09
14:37
(73) это вопрос к (67)
77 Irbis
 
01.10.09
14:38
(74) В лоб ведь сам факториал не считается!
78 Lama12
 
01.10.09
14:38
79 DGorgoN
 
01.10.09
14:39
(67) старая фишка :)
80 ДенисЧ
 
01.10.09
14:39
(75)
X := X XOR Y
Y := X XOR Y
X := X XOR Y
81 DGorgoN
 
01.10.09
14:41
X=X+Y;
Y=X-Y;
X=X-Y;
как то так тоже можно
82 ДенисЧ
 
01.10.09
14:42
(81) ТОлько переполнение вылетит :-)
83 Волшебник
 
модератор
01.10.09
14:44
Поиск критического пути на графе.
Не совсем простая, но и не очень сложная рекурсивная функция.
84 DGorgoN
 
01.10.09
14:44
(82) Ну это уже ограничение платформы, а не алгоритма (с) :)
85 DGorgoN
 
01.10.09
14:45
(83) расшифруй "критического"
86 ДенисЧ
 
01.10.09
14:45
(83) А с лёту оцени её сложность :-)
87 marvak
 
01.10.09
14:46
(52) 2 в 8 = 256
а там дальше уже легко сообразишь

:)
88 Волшебник
 
модератор
01.10.09
14:46
(85) Читай теорию графов.
89 Irbis
 
01.10.09
14:47
Проверь умеет ли упрощать логические выражения (правило Де Моргана, карты Карно и т. п.)
90 AndreyLan
 
01.10.09
14:47
(0) Для тестирования программиста 1С лучше дать более-или менее реальную задачу (например из задачника на специалиста по платформе), а уж потом посмотреть насколько правильно он решит ее с методологической точки зрения, так и по механизмам внутренней реализации, ИМХО.
91 Волшебник
 
модератор
01.10.09
14:47
Тут есть определения и описание метода "эстафеты"
http://ru.wikipedia.org/wiki/Критический_путь
92 DGorgoN
 
01.10.09
14:48
(91) спасибо - уже прочитал, вспомнил
93 Aprobator
 
01.10.09
14:48
(0) гы - даны два периода Нач1 Кон1, Нач2 Кон2 - найти пересечение оптимальным способом )
94 Aprobator
 
01.10.09
14:49
(90) дык речь не про 1С вроде.
95 AndreyLan
 
01.10.09
14:50
(94) В (6) сказано про 1С
96 Aprobator
 
01.10.09
14:50
(95) опс - не увидел.
97 Irbis
 
01.10.09
14:51
(94), (95) в (6) не более чем язык реализации.
98 Оболтус
 
01.10.09
14:51
Кстати, вот может кто мне объяснит?

В университете нас учили всем этим сортировкам, математике, поиску путей на графе и т.д. Пришел на работу - ни разу еще не потребовалось. Все что помнил - все забыл (правда, если будет интернет и/или литература - вспомнить все не проблема). Так нафига на собеседовании спрашивать математику? Ведь 99% 1С-ников можно на математике завалить...
99 Волшебник
 
модератор
01.10.09
14:52
Вот ещё задачка на сообразительность.

Есть регистр "Графики работ", измерение "Календарь", "Дата", ресурс "Рабочий день" (булево).
Написать функцию
ПолучитьДатуОкончания(Календарь, ДатаНачала, ДлительностьВРабочихДнях)
Примечание: Функция должна использовать запрос.
100 pmb
 
01.10.09
14:52
(93) в одно условие можно нарисовать :)
101 Волшебник
 
модератор
01.10.09
14:53
(98) А у нас в конфигурации критические пути успешно рассчитываются и используются в отчётах модуля "управление проектами".
102 ДенисЧ
 
01.10.09
14:54
(98) А мне требовалось знание всего курса матанализа, дифуравнений и ИСО... Может, работу нужно выбирать? :-)
103 Ёпрст
 
гуру
01.10.09
14:54
(93) (Нач1<=Кон2)И(Кон1<=Нач2)
104 acsent
 
01.10.09
14:57
Лучше дать задачу на поиск информации в инете
105 Оболтус
 
01.10.09
15:00
(101) :)

(102)Нужно, но, имхо, по другому. Для 1С-ника еще могу понять требование знать факторный анализ, кластерный, да хоть те же нейронные сети... А вот знание всего курса дифуравнений... нафик, нафик такую работу. :)
106 Волесвет
 
01.10.09
15:01
(0) рыбак рыбака видит издалека... потому что -  один подумает что эвона напридумывали от мозгоклюи а другой ну что за детский сад мозгоклюйство одно а не задача... и итого)) мозгоклюй вы братец)
107 Ёпрст
 
гуру
01.10.09
15:02
(102) один раз потребовалось знание уравнения прямой, для написания арканоида в клюшках..
:)
108 AndreyLan
 
01.10.09
15:05
(98)+1  Нужно решать конкретную задачу. А проверять память ... Странно как-то это. Понадобится использование мат. алгоритма в конкретной задаче, найдем его описание и используем, а вот перед собеседованием перечитывать матан или функан это бред)))
109 DGorgoN
 
01.10.09
15:05
(105) ээ - ну ты загнул..
110 ДенисЧ
 
01.10.09
15:07
(105) А мне тогда было интересней, чем сейчас :-)
111 ДенисЧ
 
01.10.09
15:08
(107) Бездельник и лентяй :-)
112 Оболтус
 
01.10.09
15:08
(109)Ну, немножко есть. :)
113 DGorgoN
 
01.10.09
15:10
3д движок может еще написать? без wrml?
114 Ёпрст
 
гуру
01.10.09
15:11
(111) не то слово...
115 ДенисЧ
 
01.10.09
15:12
(114) ТО слово матофильтр не пропустит :-)
116 wason
 
01.10.09
15:14
(99)
запроч=новый запрос("
выбрать
 рег.календарь
из регистрысведений.графикработ как рег
где рег.период>=&датаначала
   и рег.рабочийдень=Истина
упорядочить по
   период");
запрос.установитьпараметр("&датаначала",датаначала);
рез=запрос.выполнить().выгрузить();
возврат рез[количесвторабочихдней].календарь;
117 Sidney
 
01.10.09
15:16
(2)Точно в Хомнете было. Я им сказал, надо из n+1 вычесть n должна получиться единица, если это не так - вуаля :)
118 GreyK
 
01.10.09
15:17
(0) На Мисте таких задачек на проверку много, ну вот например:
Как получить все дни в месяце(периоде)? :)
119 NS
 
01.10.09
15:21
(49) Видимо контингент такой...
Шелла, простые вставки, банарная вставка, Фон-неймана, КвикСорт, корпоративная (по дереву) и т.д. И самое главное - конечно-же любую без проблем напишу на месте.
120 Ненавижу 1С
 
гуру
01.10.09
15:26
(118) тех кто сидит на мисте на работу нельзя брать
121 Lama12
 
01.10.09
15:28
(119)Ух ты!
Сам разбирался только 4 (Шелла, простые вставки, КвикСорт, пузырек) об остальных только заню...
122 Ёпрст
 
гуру
01.10.09
15:31
(119) и сортировку естественным 2-х путёвым слиянием ?
:)
123 Ёпрст
 
гуру
01.10.09
15:32
(121) почитай томики Кнута, на досуге..
124 ДенисЧ
 
01.10.09
15:32
(123) ТОлько творе издание, а не третье...
125 ДенисЧ
 
01.10.09
15:32
*второе
126 Lama12
 
01.10.09
15:33
(125) А что в третьем не так?
127 ДенисЧ
 
01.10.09
15:37
(126) Излишни мудрёно. Для понимания сложновато. Сначала второе, потом третье.
128 Megas
 
01.10.09
15:38
(11)
Тз.Сортировать("Цифры возр");

Для каждого СтрокаТЗ из ТЗ цикл
 Если СтрокаТЗ.НомерСтроки <> СтрокаТЗ.Цифры тогда
   Сообщить("Пропущенное число "+ СтрокаТЗ.НомерСтроки );
 КонецЕсли;
КонецЦикла;
129 NS
 
01.10.09
15:42
(122) Метод часто используется в реализации итеративной восходящей сортировки MergeSort? Это? С инетом конечно напишу, а так - не проходили нигде.
130 NS
 
01.10.09
15:44
Вру, проходили внешнюю сортировку на сборах на союз. Там нечто подобное используется.
131 DenLaDen
 
01.10.09
15:45
Мне на одном собеседовании предложили на 1С написать решение задачи: даны два поля на шахматной доске, нужно конем пройти от одного к другому.
132 NS
 
01.10.09
15:46
Короче а чем в фоннеймане не естественное двухпутевое слияние? И чем Мерже-сорт от него отличается? Помоему это и есть. Там кода-то 15 строк.
133 Aprobator
 
02.10.09
12:42
то Ёпрст3 - вот так поточнее будет)%

Если (Нач1<= Кон2) И (Кон1>= Нач2) Тогда
     НачПересеч = Максимум(Нач1, Нач2);
     КонПересеч = Минимум(Кон1, Кон2);
Иначе
    // Нет пересечения
КонецЕсли;
134 Ёпрст
 
гуру
02.10.09
12:45
(133) Чего точнее ?
135 Aprobator
 
02.10.09
12:53
(134) написанного в (103).
136 Ёпрст
 
гуру
02.10.09
12:54
(132) на сколько я помню, это просто разновидность.. Есть 2-х, 4-х.. путёвое
137 Ненавижу 1С
 
гуру
02.10.09
12:55
Дана строка, состоящая только из символов: ( ) [ ]
Требуется проверить, что данная строка удовлетворяет правильной скобочной последовательности (скобки должны открывать и закрываться одним видом)
138 Ёпрст
 
гуру
02.10.09
12:56
(137) это к лисповодам надо..
:)
139 DimG
 
02.10.09
12:59
Не стал бы решать всякие синтетические тесты при тестирования для приема на работу. Имхо, это глупо и ни о чем конкретно не говорит. Все наверное видели что пишет какой нить дельфист который месяц в 1с, новые методы и функции изобретает из-за того что банально языка 1С не знает. Зато задачки такие щелкает на раз.
140 Ненавижу 1С
 
гуру
02.10.09
13:01
(139) это понятно, но...
библиотеку можно выучить за определенное время, а вот структурное мышление поиметь
141 DimG
 
02.10.09
13:06
(140) тот кто выучил уже все это забыл :)
142 Ёпрст
 
гуру
02.10.09
13:08
(140)
так покатит ? :)
Если (СтрЧислоВхождений(Стр,"(")=СтрЧислоВхождений(Стр,")"))
        И(СтрЧислоВхождений(Стр,"]")=СтрЧислоВхождений(Стр,"["))
        И(Найти(Стр,")")>Найти(Стр,"("))И(Найти(Стр,"]")>Найти(Стр,"["))
        И(СтрДлина(Стр)%2=0) Тогда
           Сообщить("ес");
   Иначе
           Сообщить("нет");
   КонецЕсли;
143 Aprobator
 
02.10.09
13:09
(137) вроде ничего сложного. Бежим по строке посимвольно и если скобка открытая, то в зависимости от скобки добавляем в массив значение 1 или 2. Если скобка закрытая, то проверяем значение последнего элемента в массиве. Если все путем, то последний элемент массива удаляем, иначе ОШИБКА. Если все чики пок, то в конце массив должен быть пустой.
144 Aprobator
 
02.10.09
13:12
(142) и как эта конструкция отреагирует на строку типа ([)]?
145 Ёпрст
 
гуру
02.10.09
13:15
(144) от работает "правильно" по условию задачи:
>>>скобки должны открывать и закрываться одним видом

:)
146 Ненавижу 1С
 
гуру
02.10.09
13:16
(143) "Если все путем"
поясните
147 Ненавижу 1С
 
гуру
02.10.09
13:17
(145) это ([)] неправильная конструкция
148 Aprobator
 
02.10.09
13:17
(146) если закрытая скобка соответствует  предыдущей открытой.
149 Alexor
 
02.10.09
13:18
Если на 7.7. то прошу из таблицы значений удалить строки удовлетворяющие определенному условию.

Половина кандидатов отсеивается сразу.
150 Ёпрст
 
гуру
02.10.09
13:18
(146) то, что скобки одного вида только.. типа ] не может закрыть (  - это ошибка.
151 Ёпрст
 
гуру
02.10.09
13:18
(147) Ха.. это нигде не сказано в условии задачи, если что.
152 Aprobator
 
02.10.09
13:19
+ (148) Типа 1 это (
2 это [. Соответственно для скобки ) значение последнего элемента должно быть 1, а для ] - 2.
153 Ненавижу 1С
 
гуру
02.10.09
13:19
+(147)
точное определение:
1. пустая строка правильная
2. если строка С правильная, то строки "["+C+"]" и "("+С+")" правильные
3. если С1 и С2 правильные, то строка С1+С2 правильная
154 ДенисЧ
 
02.10.09
13:21
(153) Определение неточное :-)
155 Ненавижу 1С
 
гуру
02.10.09
13:22
(154) почему?
156 Aprobator
 
02.10.09
13:23
+(152) и естественно, что на момент проверки размер массива не может быть равен 0.
157 Aprobator
 
02.10.09
13:24
+(155) присоединяюсь к вопросу - почему?
158 Ёпрст
 
гуру
02.10.09
13:24
(156) А вот тут ошибка, судя по (153)
:)
159 Aprobator
 
02.10.09
13:24
(158) где?
160 Ёпрст
 
гуру
02.10.09
13:25
(159)
>>>пустая строка правильная
>>>размер массива не может быть равен 0.
161 Ненавижу 1С
 
гуру
02.10.09
13:27
и продолжение (137), для числа скобок  N (строки длиной 2*N) найти общее число правильных скобочных последовательностей
N=1 ответ 2
N=2 ответ 8
162 Ненавижу 1С
 
гуру
02.10.09
13:28
(160) ну с пустой строкой думаю можно разобраться отдельно
163 Ненавижу 1С
 
гуру
02.10.09
13:29
+(161) ну и для любителей, обобщение этих задач на K видов скобок
164 Aprobator
 
02.10.09
13:32
(161) если по моей методике то общее количество правильных скобочных последовательностей = максимальный размер массива (за все время его существования), где все без ошибок.
165 Ёпрст
 
гуру
02.10.09
13:32
Ладно, дополню тогда:

   Если (СтрЧислоВхождений(Стр,"(")=СтрЧислоВхождений(Стр,")"))
        И(СтрЧислоВхождений(Стр,"]")=СтрЧислоВхождений(Стр,"["))
        И(Найти(Стр,")")>Найти(Стр,"("))И(Найти(Стр,"]")>Найти(Стр,"["))
        И(СтрДлина(Стр)%2=0)И(Найти(Стр,"(]")=0)И(Найти(Стр,"[)")=0) Тогда
           Сообщить("ес");
   Иначе
           Сообщить("нет");
   КонецЕсли;
166 Aprobator
 
02.10.09
13:34
(165) а как здесь отслеживается последовательность следования скобок?
167 Ёпрст
 
гуру
02.10.09
13:34
(164) Нифига падобного!

(((((((] - размер массива будет каким ? 7 ? :)
168 Ёпрст
 
гуру
02.10.09
13:35
(166) Ну, а что не так ?
169 Aprobator
 
02.10.09
13:35
(167) где все без ошибок. В (164) это дописано. Т.е. при выполнении всех условий.
170 ДенисЧ
 
02.10.09
13:36
(155) ()[] под него не попадает
171 ДенисЧ
 
02.10.09
13:36
А хотя нет, прогнал, сорри.
172 Ёпрст
 
гуру
02.10.09
13:36
+167 тут промах, "где все без ошибок." не заметил..
:)
А вот ежели с ошибками - то тупо счётчик удаления скобок.или 2 счетчика для разных скобок.
173 Aprobator
 
02.10.09
13:37
+(169) хотя да - количество правильных скобок можно будет увидеть только при условии полного обнуления массива в конце. Здесь же потребуется счетчик закрытия скобок.
174 NS
 
02.10.09
13:47
Две рекурсивные процедуры - "(" и "["
Увеличиваем глобальный счетчик при выходе из них. Выход поиском соответствующей закрывающей скобки.

Задача намного проще вычисления скобочного выражения. А скобочное выражение - олимпиадная задача на час писанины.
175 NS
 
02.10.09
13:48
Можно одну процедуру, вид скобок как параметр.
176 Ненавижу 1С
 
гуру
02.10.09
13:49
(174) да ладно проще, простое скобочное определяется тупым перебором за один проход без использования доп. структур кроме единственного счетчика
177 Ненавижу 1С
 
гуру
02.10.09
13:51
178 NS
 
02.10.09
13:55
(176) Я говорю не про определение, а про вычисление.
179 Ненавижу 1С
 
гуру
02.10.09
13:57
(178) и я про тоже, ты предлагаешь рекурсию, а в случае одного вида скобок она не понадобится
180 NS
 
02.10.09
13:59
(179) Для вычисления скобочного выражения необходим либо стек либо рекурсия, и не надо спорить :)
При наличии вложенных скобок - даже при одном виде.

Для вычисления количества правильных вложенных - достаточно конечно счетчиков по числу видов скобок.
181 Ёпрст
 
гуру
02.10.09
14:03
(180) для проверки - один цикл и привет...
182 NS
 
02.10.09
14:08
(181) А для вычисления - цикла недостаточно. :)
183 Ненавижу 1С
 
гуру
02.10.09
14:08
какой ты категоричный:
С=0;
Для й=1 по СтрДлина(МояСтрока) Цикл
 Символ = Сред(МояСтрока,й,1);
 Если Символ="(" Тогда
   С=С+1;
 ИначеЕсли Символ="(" Тогда
   С=С-1;
 КонецЕсли;
 Если С<0 Тогда
   Возврат Ложь;
 КонецЕсли;
КонецЦикла;
Возврат (С=0);
184 Ненавижу 1С
 
гуру
02.10.09
14:09
(182) для вычисления чего?
185 NS
 
02.10.09
14:09
(183) Это к какому посту?
(184) Я не знаю что можно вычислить в скобочном выражении кроме его значения.
186 Ёпрст
 
гуру
02.10.09
14:11
(183) Какая то хня написана :))
187 Ненавижу 1С
 
гуру
02.10.09
14:12
(185) какое значение? ты внимательно читал условия? там говорилось про строку скобок и все, остальное твоя фантазия
188 Ненавижу 1С
 
гуру
02.10.09
14:13
(186) почему? 0-0
189 Ёпрст
 
гуру
02.10.09
14:13
(188) Условие на 2 открытые скобки ?
:)))
190 NS
 
02.10.09
14:14
(187) Что моя фантазия? Я написал что посчитать число правильных скобок можно методом аналогичным методу вычисления скобочного выражения. Потом сказал что для вычисления скобочного выражения необходим либо стек либо рекурсия. Фантазия в чем?
191 Ненавижу 1С
 
гуру
02.10.09
14:14
(183) это для NS который говорил, что для одного вида скобок не достаточно простого цикла, но он видимо решал свою задачу, отличную от предложенной
192 Ёпрст
 
гуру
02.10.09
14:14
А еще, что вернёт )( , например ?
193 NS
 
02.10.09
14:15
(191) Пост. Номер поста приведи моего.
194 Ненавижу 1С
 
гуру
02.10.09
14:15
(192) описАлся:
ИначеЕсли Символ=")" Тогда
195 Ненавижу 1С
 
гуру
02.10.09
14:16
(193) я понял, ты начал рассуждать уже о другом, а я на волне задачи
196 Ёпрст
 
гуру
02.10.09
14:17
(194) Ок, а как на счет (192) ?
:)
197 Ненавижу 1С
 
гуру
02.10.09
14:17
(196) вернет ложь
198 NS
 
02.10.09
14:18
(192) Заводим счетчики по числу чкобок. В случае отрицательного значения любого счетчика - ERROR.
199 NS
 
02.10.09
14:18
+(198) Конечно по числу видов скобок имеется в виду.
200 Ёпрст
 
гуру
02.10.09
14:19
(197) Это с какого перепугу ? Вернёт 0 ... а ложь у тебя - <0
201 Ненавижу 1С
 
гуру
02.10.09
14:19
(198) я даже (183) написал (описка исправлена в (194))
202 Ненавижу 1С
 
гуру
02.10.09
14:20
(200)
там вообще то еще
Если С<0 Тогда
  Возврат Ложь;
КонецЕсли;
203 Guk
 
02.10.09
14:20
я бы теорему Пуанкаре дал доказать. очень уж название нравится...
204 Ненавижу 1С
 
гуру
02.10.09
14:21
+(202) после первого символа
205 Ёпрст
 
гуру
02.10.09
14:21
(202) точно.. ужо без подсветки код не воспринимается..
Аналогично тому, как раньше с подсветкой..
206 los_hooliganos
 
02.10.09
14:25
"Типа сортировки одномерного массива, но это конечно очень просто."

А шо такое массив?
207 los_hooliganos
 
02.10.09
14:26
(203)
А смог бы ты сейчас доказать теорему Пифагора?
208 NS
 
02.10.09
14:28
(207) Даже я помню доказательство построением квадрата.
209 Guk
 
02.10.09
14:30
(207) я даже не помню зачем на темя Ньютона яблоко упало, а ты мне про какого-то Пифагора. это про штаны што ле?...
210 los_hooliganos
 
02.10.09
14:30
(207) Я такое док-во тоже помню, но в школе доказывали по другому.
211 los_hooliganos
 
02.10.09
14:30
210 к (208)
212 NS
 
02.10.09
14:31
(210) Вроде в школе доказывали именно так.
213 los_hooliganos
 
02.10.09
14:31
Че кстати такое структурное прграммирование? Шо это за зверь?
214 los_hooliganos
 
02.10.09
14:32
(212) Типа строим квадраты, доказываем равенство площадей, так?
Не нас как-то по другому учили, но я уже не вспомню)
215 ДенисЧ
 
02.10.09
14:32
(213) Не заморачивайся
216 luns
 
02.10.09
14:35
корректировкой записей регистров меняешь себестоимость номенклатуры.
потом проводишь документ реализации.
потом корректировку отменяешь.
требуешь объяснить почему на момент списания неверная себестоимость (не сходиться с остатком партий) не перепроводя документа реализации.
217 los_hooliganos
 
02.10.09
14:37
(216) это задача такая?
218 NS
 
02.10.09
14:38
(214) Нет,получается внутрнний квадрат и внешний. Во внутреннем в два раза меньше треугольников, значит площадь его в два раза меньше.
219 luns
 
02.10.09
14:38
создаешь пустую обработку с расширением epf, сохраняешь
берешь внешний отчет с расширением ert меняешь расширение на epf, сохраняешь
открываешь обе обработки в конфигураторе и спрашиваешь почему они обе пустые но у одной из них размер в десять раз больше.
220 luns
 
02.10.09
14:38
(217) Ну типа да. Имитация ошибки пользователей.
221 los_hooliganos
 
02.10.09
14:44
(216) ну я бы перепровел его первым делом.
бредовая задача.
222 los_hooliganos
 
02.10.09
14:45
(219) Ну это понятно, все внешние обработки пишут в себя метаданные конфигурации.
223 luns
 
02.10.09
14:45
(221) А если период закрытый?
224 Ненавижу 1С
 
гуру
02.10.09
14:46
в школе было два доказательства (не меньше двух):
по учебнику Атанасяна через площади квадрата
по учебнику Погорелова через косинусы углов и основное тригонометрическое тождество, опираясь на курс алгебры
кстати последнее довольно спорно, так как основное тригонометрическое тождество уже в алгебре доказывалось через теорему Пифагора
225 luns
 
02.10.09
14:46
(222) Ты не понял. Возьми внешнюю обработку с кодом, формам, реквизитами.
Поменяй расширение. Открой в конфигураторе и увидишь ;)
226 RNOBODY
 
02.10.09
14:49
(0) Я, своим кандидатам даю следующую задачку:
Обменять значения двух переменных, в зависимости от третьей (а = 1, б = 0, если в = 0 и наоборот, если в = 1). Предоставить минимум десять различных решений.

И теоретическая подготовка и смекалка видны сразу. А так-же усидчивость и умение решать задачу до конца.
227 los_hooliganos
 
02.10.09
14:49
(225) А это все ваши восьмерочные штучки.
228 NS
 
02.10.09
14:50
(224)  Доказательство в наше время проходили в начальной школе (не помню факультатив или нет) - какая тригонометрия может быть в начальной школе? :)
229 los_hooliganos
 
02.10.09
14:50
(224) а геометрия уже в начальной была?
230 los_hooliganos
 
02.10.09
14:52
Автор попроси кандидата написать пример коррелированого подзапроса.
И теоретическая подготовка и смекалка видны сразу.
231 luns
 
02.10.09
14:52
никогда не понимал, почему при приеме на работу 1с-ника, больше всех интересуют сортировки и прочая муть, а не то знает ли он типовые конфы с которыми ему работать...
232 NS
 
02.10.09
14:55
(229) Вроде с третьего класса азы, а в четвертом уже во всю.
233 los_hooliganos
 
02.10.09
14:57
(231) Потому что писать будем свое и с нуля.
234 NS
 
02.10.09
15:03
И знания типовых требуются, но кроме знания типовых требуется обычно умение рассмотреть все возможные варианты, написание читаемого, безошибочного и бастрого кода. Причем быстрое написание быстрого кода. А без знания основных алгоритмов этого не сделаешь. 1сник - прикладник. И должен иметь все качества и знания необходимые прикладнику, в том числе и умение быстро найти в интернете нужную информацию по поставленной задаче. Но - не зная основных алгоритмов и даже их название - ничего в интрнете не найдешь. А даже найдя - хрен знает сколько времени будешь разбираться.
235 luns
 
02.10.09
15:10
(233) Ну и что что с нуля? Зачем изобретать велосипеды если основные механизмы в любой конфе похожи и уже есть в типовых?
С трудом могу представить конфу на 1с где нужна сложная сортировка или огромных сравнение массивов.
(234) Насчет алгоритмов согласен, но в 1с они более высокого уровня так сказать, т.е. хорошее знание типовых (в том числе и изнутри) более ценно.
236 NS
 
02.10.09
15:12
(235) Посмотри ветки - постоянно возникают вопросы требующие понимания сложности алгоритма и нормальной релизации. А решают обычно как? "1С не позволяет сделать нормальное решение, поэтому отчет будет формироваться долго"
237 luns
 
02.10.09
15:17
(236) В принципе согласен. Но проблемы с производительностью как правило возникают из-за неверно созданной структуры данных, кривых запросов и не знания некоторых особенностей 1с (например что нужные для вывода поля надо сразу в запросе получить, а не через точку дергать при обходе выборки)
Т.е. я имею ввиду что тестовые задания должны быть именно такими: 1с-ыми что ли. А не программерскими в чистом виде.
Отличный вариант для проверки, это сложный запрос с ошибкой.
238 Ёпрст
 
гуру
02.10.09
15:35
Ну вот, самый простой вопрос (баянистый): на Земной шарик, по экватору, натянули верёвку, затем веревку разрезают и вставляют еще 1 метр верёвки. Веревку "натягивают" равномерно. Вопрос: сможет ли через "щель" Земля-верёвка пролезть кошка ?
239 Jolly Roger
 
02.10.09
15:37
(238) команду КВН набираешь?
240 ДенисЧ
 
02.10.09
15:39
(238) Кошка - она такая скотина, что прлезет везде :-)
241 luns
 
02.10.09
15:40
Так вот и я о том же.
Разве что предприятие веревки выпускать будет ;)
Гораздо полезнее спросить как правильно приход-расход в остаточные регистры делать.
242 Jolly Roger
 
02.10.09
15:41
академические алгоритмы и вопросы "аля гугл" при тестировании одинэсника - лажа полнейшая...
243 luns
 
02.10.09
15:41
Хотя задачка интересная.
244 NS
 
02.10.09
15:42
Какова вероятность что среди 40-ка случайно взятых людей найдутся хотя-бы два с одинаковой датой рождения?
245 Ёпрст
 
гуру
02.10.09
15:44
(244) 10% ?
246 luns
 
02.10.09
15:45
(244) Тоже клевая задачка. Мне как то один товарищ с пеной у рта доказывал что такое невозможно, даже увидев решение...
Пару споров на этом выйграл )))))
Теория вероятности она такая...
247 los_hooliganos
 
05.10.09
06:13
(244) 40/365
248 los_hooliganos
 
05.10.09
06:20
(238) не сможет. вот если бы километрик.
249 Rie
 
05.10.09
06:23
(241) Для чего полезнее? Вопрос о регистрах отметает людей, не имеющих понятия о том, как работает 1С. Но если человек знает, как работает 1С - то ещё далеко не факт, что он обладает умом и сообразительностью.
250 los_hooliganos
 
05.10.09
06:30
(249) ты лучше подскажи как правильно 244 решить. я уже всю голову себе сломал.
251 Rie
 
05.10.09
06:33
(250) Всего 365^40 вариантов дней рождения. Несовпадающих - 365!/325!.
252 Rie
 
05.10.09
06:36
+(251) Считать влом. Но видно, что совпадающих - гораздо больше 50%.
253 los_hooliganos
 
05.10.09
06:38
(252) ну это конечно ничего что вероятность больше 1.
254 Rie
 
05.10.09
06:41
(253) Почему "больше 1"?
Подели второе на первое и вычти из 1 - это и будет вероятность.
365!/325!>365^40
255 Rie
 
05.10.09
06:41
+(254) То есть, меньше, конечно же :-)
256 los_hooliganos
 
05.10.09
06:44
(255) у меня эксель отказался такой факториал считать.
257 Rie
 
05.10.09
06:46
(256) А не надо факториал считать.
Отношение факториалов - это просто произведение от 325 до 365.
Можно сразу на 365 делить каждый раз - чтобы степень автоматом считалась.
258 Rie
 
05.10.09
06:49
+(257) Точнее, произведение от 326 до 365.
259 los_hooliganos
 
05.10.09
06:58
так что ли?
( 365^40- 365!/325!)/ 365^40
260 los_hooliganos
 
05.10.09
07:01
получилось 89%
но считал не я а наши экономисты.
так что не знаю правда или нет.
но это что-то много.
261 Moriarti
 
05.10.09
07:02
Я, в свое время, давал новичкам задачу нарисовать ...календарик.
Входные данные: месяц и год (в любом виде, хоть "06, 2009", хоть "июль, 2009")
На любом языке реализуется, хоть Delphi, хоть SQL

В любом случае - тут тебе и работа с массивами/таблицами и просто проверяется общая адекватность человека.
Обычно помогая и тыкаю носом в документацию, раздел "работа с датами"

Такого за 10 лет насмотрелся, вы не поверите.
262 Moriarti
 
05.10.09
07:05
Вот кстати, на 1С80 календарик, сам для себя на заре изучения написал:

/////////////////////////////
Процедура РасчитатьНажатие(Элемент)
Месяц.Очистить();
Неделя = Месяц.Добавить();
Дата2 = НачалоМесяца(ЭтотОбъект.Дата1);

Для i = 1 По День(КонецМесяца(ТекущаяДата())) Цикл
 Если ДеньНедели(Дата(Год(Дата2), Месяц(Дата2), i)) = 1 Тогда
  Неделя.Пн = i;
 ИначеЕсли ДеньНедели(Дата(Год(Дата2), Месяц(Дата2), i)) = 2 Тогда
  Неделя.Вт = i;
 ИначеЕсли ДеньНедели(Дата(Год(Дата2), Месяц(Дата2), i)) = 3 Тогда
  Неделя.Ср = i;
 ИначеЕсли ДеньНедели(Дата(Год(Дата2), Месяц(Дата2), i)) = 4 Тогда
  Неделя.Чт = i;
 ИначеЕсли ДеньНедели(Дата(Год(Дата2), Месяц(Дата2), i)) = 5 Тогда
  Неделя.Пт = i;
 ИначеЕсли ДеньНедели(Дата(Год(Дата2), Месяц(Дата2), i)) = 6 Тогда
  Неделя.Сб = i;
 ИначеЕсли ДеньНедели(Дата(Год(Дата2), Месяц(Дата2), i)) = 7 Тогда
  Неделя.Вс = i;
 КонецЕсли;

 Если ДеньНедели(Дата(Год(Дата2), Месяц(Дата2), i)) = 7 тогда
        Неделя = Месяц.Добавить();
 КонецЕсли;
КонецЦикла;
КонецПроцедуры
/////////////////////////////
263 Rie
 
05.10.09
07:06
(260) Почему много?

Вероятность совпадения одного с днём рождения кого-то из остальных ты привёл в (247) (только там не 40, а 39). Если не совпали - то берём второго и считаем вероятность совпадения для него (исключив первого, разумеется). И т.д. И все эти вероятности - суммируются.
264 los_hooliganos
 
05.10.09
07:07
те 89% это нормально?
265 Rie
 
05.10.09
07:12
(264) Посчитал. Около 89% и получил.
По идее, что-то подобное и должно быть.
266 los_hooliganos
 
05.10.09
07:15
(265) как то не очень вериться. ну да ладно, соглашусь.
267 Rie
 
05.10.09
07:18
(266) Проверь на малом числе - например, на 4 и на 5. Уже будет наглядно видно, что вероятность растёт.
268 los_hooliganos
 
05.10.09
07:27
(267) щас посчитаем.
269 los_hooliganos
 
05.10.09
07:27
лучшие экономисты аналитики занимаются расчетом.)
270 los_hooliganos
 
05.10.09
07:30
Получилось 1,6% и 2,7%
271 los_hooliganos
 
05.10.09
07:30
Для 4х и 5ти соот-но.
272 Rie
 
05.10.09
07:39
(271) Сделай табличку в Excel. Первый столбец - числа от 365 до 2, второй - первый, делённый на 365, третий - ПРОИЗВ(R1C:R<номерстроки>C).
273 Rie
 
05.10.09
07:40
+(273) Понедельник - день тяжёлый :-)
ПРОИЗВ(R1C[-1]:RC[-1])
274 los_hooliganos
 
05.10.09
07:43
опять ошибка.
так что ли?)
ПРОИЗВ(R1C[-1]:R1C[-1])
275 Rie
 
05.10.09
07:45
(274) ПРОИЗВЕД
276 Rie
 
05.10.09
07:46
+(275) Говорю же, понедельник - день тяжёлый :-)
Только не R1C[-1]:R1C[-1], а именно R1C[-1]:RC[-1]
277 los_hooliganos
 
05.10.09
07:48
и что это такое? вероятность родиться в какой-то день?
278 Rie
 
05.10.09
07:52
(277) Вероятность несовпадения дней рождения.
279 los_hooliganos
 
05.10.09
07:56
На 57 наступает практически 100%