Имя: Пароль:
1C
 
Тестовое задание
,
0 Одинесю
 
09.09.16
12:08
Не, ну не могу устроиться на работу и все. Все предложения типа таких -
Написать программу на 1С. Программа должна выводить пирамиду простых чисел, как показано на рисунке ниже.

Перед выводом программа должна запросить число N – высоту пирамиды.

http://hostingkartinok.com/show-image.php?id=d525a93e0c235c5073c4fc15174321ed

На...я это в 1с, может я не догоняю.
221 PR
 
09.09.16
22:40
(220) А если догонят, вшей в воротник цианистый калий, всё, лишь бы не работать!
222 bolder
 
10.09.16
00:30
(0) Задание на программиста.У меня заняло час - многовато наверное.Вот результат до 99 уровня (10 с на моей машинке).
http://itmages.ru/image/view/4861336/69eed377
223 bolder
 
10.09.16
00:33
(222) +Наверное перемудрил: у меня пирамида только из простых состоит.
224 Garykom
 
гуру
10.09.16
01:03
(223) угу настоящий программист, с 1-го раза ТЗ нифига не понял ))

на 3-ку решил, ибо раскраску ячеек не использовал...
225 Torquader
 
10.09.16
01:06
(224) Нет - покрасил он как раз всё правильно, только заполнил - не так, как было в задании.
226 Garykom
 
гуру
10.09.16
01:07
(225) Вот именно что не так покрасил... цвет только 1... а должно быть по ТЗ два разных ))
227 Garykom
 
гуру
10.09.16
01:10
Гм подумалось а это случаем не какая то формула? Кол-во чисел на ступеньке это арифметическая прогрессия с шагом 2.

Т.е. "кол-во ячеек на ступени" = "номер ступени" * 2 - 1

А дальше?
228 Garykom
 
гуру
10.09.16
01:14
(227)+ Далее для каждой ступени:
"номер ступени" - "значения 1-я ячейки"

1 - 1
2 - 2
3 - 5
4 - 10
5 - 17
6 - 26
7 - 37

Какая формула?
229 Torquader
 
10.09.16
01:25
A(N)=SUMi=1..N
230 Torquader
 
10.09.16
01:25
A{N}=SUM{i=1..N}{2*i-1}
231 Torquader
 
10.09.16
01:27
Вообще-то, сумма арифметической прогрессии с шагом 2.
232 Garykom
 
гуру
10.09.16
01:30
(231) Ты не умничай ты через "номер ступени" и "номер ячейки на ступени" вырази ))
233 Garykom
 
гуру
10.09.16
01:32
(232)+ Тогда задачка в 2 простейших вложенных цикла... И функцию определения простоты.
234 Torquader
 
10.09.16
01:37
A{N}={N*N}+1
235 Torquader
 
10.09.16
01:39
Вообще-то, там ничего делать не надо.
Рисуем пирамиду исходя из N.
То есть таблица шириной 2N+1 и высотой N
И просто циклом идём и заполняем.
Для каждого вызываем проверку АНеПростоеЛиОно - и меняем фон.
236 Fram
 
10.09.16
01:41
(235) эээ.. а почему ширина 2N+1?
237 Torquader
 
10.09.16
01:43
(236) Ну, может быть, 2N-1.
238 Fram
 
10.09.16
01:43
(235) может все таки 2N-1?
239 Torquader
 
10.09.16
01:44
(238) Я тоже из тех программистов, которые ТЗ до конца не читают.
240 Garykom
 
гуру
10.09.16
01:56
Итого формула значения ячейки f(НомерСтупени,НомерЯчейкиНаСтупени) = (НомерСтупени-1)^2+1+НомерЯчейкиНаСтупени
241 Garykom
 
гуру
10.09.16
01:57
(240)+ Сорри лишняя единица

f(НомерСтупени,НомерЯчейкиНаСтупени) = (НомерСтупени-1)^2+НомерЯчейкиНаСтупени
242 Garykom
 
гуру
10.09.16
02:01

КоличествоСтупеней = ..
Для НомерСтупени = 1 По КоличествоСтупеней Цикл
  КоличествоЯчеекНаСтупени = НомерСтупени * 2 - 1;
  Для НомерЯчейкиНаСтупени = 1 По КоличествоЯчеекНаСтупени Цикл
    ЗначениеЯчейки =  (НомерСтупени-1)*(НомерСтупени-1) + НомерЯчейкиНаСтупени;
    // делаем шо нуна
  КонецЦикла;
КонецЦикла
243 Torquader
 
10.09.16
02:27
Функция ЭтоПростоеЧисло(пчЧисло,пмПростыеЧисла)
    Если пчЧисло=1 Тогда
        Возврат ИСТИНА;
    КонецЕсли;
    лчКорень=Exp(Log(пчЧисло)0.5);
    лчМакс=пмПростыеЧисла.Количество();
    Для лч=1 По лчМакс Цикл
        лчПростое=пмПростыеЧисла[лч-1];
        Если лчКорень<лчПростое Тогда
            Прервать;
        КонецЕсли;
        лчРезультат=пчЧисло/лчПростое;
        Если(Цел(лчРезультат)
лчПростое)=пчЧисло Тогда
            Возврат ЛОЖЬ;
        КонецЕсли;
    КонецЦикла;
    пмПростыеЧисла.Добавить(пчЧисло);
    Возврат ИСТИНА;
КонецФункции

Процедура КнопкаВыполнитьНажатие(Кнопка)
    // Вставить содержимое обработчика.
    Если фчВысота<1 Тогда
        Сообщить("(!)Это разве высота:"+Строка(фчВысота));
        Возврат;
    КонецЕсли;
    лтд=Новый ТабличныйДокумент;
    лчЧисло=1;
    лмПростыеЧисла=Новый Массив;
    Для лчСтрока=1 По фчВысота Цикл
        Для лчПозиция=(фчВысота-лчСтрока+1)По(фчВысота+лчСтрока-1)Цикл
            лобл=лтд.Область(лчСтрока,лчПозиция);
            лобл.Текст=Формат(лчЧисло);
            Если ЭтоПростоеЧисло(лчЧисло,лмПростыеЧисла)=ИСТИНА Тогда
                лобл.ЦветФона=Новый Цвет(255,255,0);
            КонецЕсли;
            лчЧисло=лчЧисло+1;
        КонецЦикла;
    КонецЦикла;
    лтд.Показать("Пирамида");
КонецПроцедуры
244 Salimbek
 
10.09.16
09:51
(243) Сугубо имха, т.к. мы все равно пробегаем все числа, то проще использовать "Решето Эратосфена".
245 Одинесю
 
10.09.16
09:57
О как, даже сильные форума сего затруднения испытали...
246 Salimbek
 
10.09.16
10:14
(245) Придумать задачку много проще, чем ее сделать. Например, дана строка С, состоящая из цифр, и число К - показывающее - сколько цифр можно заменить. Нужно в ответе вывести или максимальный палиндром, получаемый за K замен, или "-1", если палиндром получить нельзя.
Длина(С) и К<10^5
Например
К=1
С="3493"
Ответ: "3993"
К=3
С="092282"
Ответ: "992299"
К=1
С="0011"
Ответ: "-1"
247 Одинесю
 
10.09.16
10:49
(246) Так в том и вопрос - кто такие задачки придумывает и нужны ли они реально работодателю.
248 Starhan
 
13.09.16
14:32
Ну вот для примера рабочая задачка

Нужно что бы по определенному признаку допустим галка в справочнике номенклатура

Пользователь мог видеть эту номенклатуру в списке, Но не мог изменять ее и выбирать в любом документе.
249 xafavute
 
13.09.16
14:39
(247) смотря сколько кандидатов у них.
Если чрезмерно, как в гугле, то можно и такие задачки давать
250 Торин
 
13.09.16
14:40
Вот еще для примера совершенно реальная задача -- есть координаты точки -- широта и долгота. Есть координаты точек МКАДа, требуется определить находится ли точка внутри МКАДа или снаружи... Точки на МКАДе заданы через каждый километр...
251 Торин
 
13.09.16
14:42
Задачка решается десятью строчками кода...
252 Torquader
 
13.09.16
14:46
(250) Ну, если человек сплайны умеет строить - то проблем нет, а если не умеет, то пусть отрезками мучается.
253 igork1966
 
13.09.16
14:46
(251) Нет смысла в такой задаче на собеседовании с программистом 1С. Очень специфическая задача.
254 DomovoiAtakue
 
13.09.16
14:53
(252)Вы так говорите как будто сплайнами легче)))
(253)Не знает что такое система координат?

Если у программиста проблемы с задачами на мышление, может стоит задуматься что он за программист и прокачать немного логику, математику, кругозор?
255 Fragster
 
гуру
13.09.16
14:53
(253) да ты что? автоматизировать тарифную зону по адресу, координаты из адреса получить через api яндекс карт...
256 DomovoiAtakue
 
13.09.16
14:54
+(254)А не только зазубренными шаблона писать.
257 DomovoiAtakue
 
13.09.16
14:54
*шаблонами
258 igork1966
 
13.09.16
14:56
(255) На собеседовании нет смысла.
259 DomovoiAtakue
 
13.09.16
14:57
(258)А что на собеседовании спрашивать, чтоб узнать умеет человек думать?
260 DomovoiAtakue
 
13.09.16
14:59
На Экзамене в универ по информатике какие задачи дают?
261 igork1966
 
13.09.16
15:01
(259) Запрос написать средней сложности как вариант

А задача в (250) решается с помощью гугла, не очень долго.
Но требовать чтобы прог обязательно сталкивался с такой задачей и помнил алгоритм, лишнее...
262 Fragster
 
гуру
13.09.16
15:05
(261) в этом и проблема - решается она не с помощью гугла, а с помощью бумажки и ручки
263 DomovoiAtakue
 
13.09.16
15:06
(261)"Но требовать чтобы прог обязательно сталкивался с такой задачей и помнил алгоритм, лишнее..."
Вот такие программисты - не есть программисты и их пытаются отсеять. Мозг дан чтоб не зубрить алгоритмы, а чтоб самому за секунды придумывать решения.
264 xafavute
 
13.09.16
15:06
(262) это уже больше математическая задача а не программерская
265 DomovoiAtakue
 
13.09.16
15:08
Все что в этой задаче надо знать это что такое система координат и я зык программирования. Все остальное чисто ваш уровень логики.
266 igork1966
 
13.09.16
15:09
(262) И решишь это не оптимально.
267 Fragster
 
гуру
13.09.16
15:11
(266) критерий "оптимальности"? оптимизировать надо после замеров. навскидку есть два пути - через площади треугольников (тут надо знать, да. ну, или нарисовать и придумать) и через отрезки (более очевидный). и оба этих способа вполне себе работают.
надо только знать их ограничения
268 DailyLookingOnA Sunse
 
13.09.16
15:11
(111)
Запрос про два последних курса валюты есть на партнерском форуме, он простой как 3 копейки.
Но в реальной работе он мне понадобился 1 раз за десяток лет.
Поэтому и знают его 3 человека из 200.
269 Fragster
 
гуру
13.09.16
15:13
(268) его не надо "знать". надо придумать, как имеющимися средствами подучить нужный результат.
270 Fragster
 
гуру
13.09.16
15:14
(267)+ способ с треугольниками работает для выпуклых многоугольников, с отрезками - для любых
271 igork1966
 
13.09.16
15:16
(268) Можно определить как знает SQL. А в (250) определишь сталкивался ли с подобной задачей и как давно.
272 DomovoiAtakue
 
13.09.16
15:17
Эх гуманитарии)))) Вас вот и проверяют способны ли вы придумать что-то, когда закончатся шаблоны?
273 Nuobu
 
13.09.16
15:18
(272) Моё внутреннее чутьё подсказывает, что это не случится никогда.
274 DomovoiAtakue
 
13.09.16
15:19
У меня был предмет методы алгоритмизации. Там было около 40 алгоритмов на 40-60 строк каждый. Так вот особо одаренные вызубрили эти алгоритмы) Никто из них не стал программистом)
275 Торин
 
13.09.16
15:19
Ззадачка из 250 легко решается если вспомнить что интеграл по контуру от точки внутри контура равен нулю. Это т.н. "интегральная теорема Коши"
276 ifso
 
13.09.16
15:20
(269)
> имеющимися средствами
средства не ограничиваются?
277 DailyLookingOnA Sunse
 
13.09.16
15:21
(271)
И с такой сталкивался, только не по работе.
Или во время школы, когда занимательные задачи по математике решал, или в вузе.
278 Fragster
 
гуру
13.09.16
15:27
(276) ручка, бумага, комп с одноэской
279 igork1966
 
13.09.16
15:28
(268) А там знать нечего. Если ты знаешь SQL и представляешь что такое регистр сведений, то он пишется без труда. Причем по мне бы достаточно было описать способ решения. И это проверят знание в принципе одного из основных инструментов 1С программиста...
280 xafavute
 
13.09.16
15:28
(278) А может задачку ту самую по геометрии задать, где нужноугол в треугольнике найти?
281 DomovoiAtakue
 
13.09.16
15:30
(273)Ну все еще держится благодаря мисте и таким прогам которые за всех всё делают)
282 ViSo76
 
13.09.16
15:32
(281) ..., ну вы держитесь :)
283 DomovoiAtakue
 
13.09.16
15:33
(280)Трупроги и ту решат)
284 DailyLookingOnA Sunse
 
13.09.16
15:36
(279)
"Если ты знаешь SQL" (C)
Ну так я B пишу, что это знание, а со мной спорят.
285 DailyLookingOnA Sunse
 
13.09.16
15:37
я и пишу
286 DomovoiAtakue
 
13.09.16
15:38
(284)Тебе говорят что надо знать язык запросов но не каждый запрос под задачу. Запрос надо придумывать, а не заранее знать.
287 DailyLookingOnA Sunse
 
13.09.16
15:44
Я и смотрю, как 150 постов придумывали, что простое число нужно делить на другие простые. А это чуть ли не школьная классика.
288 DomovoiAtakue
 
13.09.16
15:45
(287)Так вроде тема не о том смогут ли решить проги эту задачу, а о том надо ли ее решать.
289 DomovoiAtakue
 
13.09.16
15:46
*надо ли ее решать на собеседовании, что проверяют таки образом.
290 Fragster
 
гуру
13.09.16
15:47
(289) таким образом проверяют, что ты немного знаешь синтаксис языка 1с, работу с табличными документами и формами. Ну и можешь логически мыслить.
291 DailyLookingOnA Sunse
 
13.09.16
15:47
На хабре есть довольно большое обсуждение про то, что нужно уметь прогу, и не одно.
По результатам вроде алгоритмы не на первом месте.
292 DomovoiAtakue
 
13.09.16
15:48
(291)Поэтому на хабре и нет программистов) Есть ходячие энциклопедии, а что делать с этими знаниями они не знают)
293 DomovoiAtakue
 
13.09.16
15:49
Прог - это человек составляющий алгоритмы. Как может это быть не главным?) Это то без чего он не прог)
294 igork1966
 
13.09.16
15:51
Вот кстати задача, вроде и по языку запросов... но на собеседование я бы ее не дал...

Получить из справочника запросом коды справочника без разделителя. (например, там точка в коде)

PS. Модификация задачи получения некого текстового поля (содержащего значения с разделителями) в виде списка.
295 Fragster
 
гуру
13.09.16
15:59
(294) вопрос в вырезании текста из строки запросом, или фильтрации данных?
296 igork1966
 
13.09.16
16:01
(295) получить из:

123.334.1
123.334.2

вот такое:

1233341
1233342
297 igork1966
 
13.09.16
16:02
(296) + в запросе конечно
298 Fragster
 
гуру
13.09.16
16:04
(296)(297) вот это как раз забивание гвоздей микроскопом. гораздо эффективнее сделать это другими средствами
299 igork1966
 
13.09.16
16:06
(298) Ну мне понадобилось в отчете... где один из источников данных формируется из внешнего источника. Их потом соединить нужно было...
300 Fragster
 
гуру
13.09.16
16:07
(299) ну так ничего не мешает сделать сначала отфильтрованные данные, а потом запихать их как набор данных в СКД. причем из СКД даже фильтры можно брать
301 igork1966
 
13.09.16
16:09
(300) Поскольку я знал КАК, то мне проще было в запросе сразу обработать.
302 ViSo76
 
13.09.16
16:16
(301) ПОДСТРОКА рулит при известном формате
303 Fragster
 
гуру
13.09.16
16:19
(301) представляю печальную скорость, с которой это работало. ну и всякие соединения, таблицы с цифрами, которые для этого необходимы....
сложность доработки, опять же. через год, или просто другому программисту разбираться в этом доставит незабываемое удовольствие
304 Fragster
 
гуру
13.09.16
16:20
(302) без формата тоже можно. но делать произведение таблиц ради замены символов - несколько странно
305 igork1966
 
13.09.16
16:21
(302) не известный заранее формат
306 igork1966
 
13.09.16
16:24
(303) Не заметил сколько бы существенного замедления. ВТ использовал для справочника, индексированную.
307 igork1966
 
13.09.16
16:25
(306) + данных не слишком много.
308 ifso
 
13.09.16
17:32
(278) типа, из средств незапросы не исключаются?

(293) угу, и тут алгоритмисту поступает от вышестоящего: "Сделать фсё!"
309 Fragster
 
гуру
13.09.16
17:44
(308).1 ну, если в тестовом задании написано "запросом" то незапросы исключаются. а если это отчет и надо данные вытянуть из внешнего источника - то вполне предобработку данных можно сделать перед запросом
310 ifso
 
13.09.16
17:58
(309)
> если в тестовом задании написано "запросом" то незапросы
> исключаются
а если в тестовом "стоя на голове" и/или "с закрытыми глазами" и/или "без рук"?
ну а чё, для в некий цирк вполне себе требования, не?
311 ViSo76
 
13.09.16
18:02
(310) Бывает что таскать на клиента, а потом обратно не айс
312 Fragster
 
гуру
13.09.16
18:27
(310) да, тестовое задание надо сделать точно так, как в задании, а потом написать в комментарии, почему так делать не надо.
313 Fragster
 
гуру
13.09.16
18:27
на то оно и тестовое
314 ifso
 
13.09.16
18:40
(212)
> тестовое задание надо сделать ..., а потом написать в
> комментарии
а потом упасть и отжаться, не?)

(313) угу, тестовое - визитка тестирующей стороны

зы злые языки клевещут, мол коегдеунаспорой путают тесты, экзамены и конкурсы
315 iceman2112
 
13.09.16
18:46
(212( Если бы ты интегралы решать умел, вопросы такие не постил.
316 Fragster
 
гуру
13.09.16
19:00
(314).1 тогда у тебя будет как в (0)
317 ifso
 
13.09.16
19:30
(316) вангуешь или накаркиваешь?)
всенепременные злые языки клевещут, что на подобный (0) бдсм согласятся либо с амбициями попользовать самих тестировщиков, либо "тряпки"

http://www.anekdot.ru/id/-10093341/
318 DomovoiAtakue
 
14.09.16
02:08
(308)2)Кто такой алгоритмист? Понапридумывали делений для дворников, как менеджеров 100500 делений, а по русски просто продавец. Ну и поступит задача "Сделать все" ну и сделает все, ибо прог это человек, который может решить все.
319 Никулин Леонид
 
14.09.16
09:18
Немного накрыло...

КоличествоСтрокВСтроке = 1;
    СчетчикЧисел = 1;
    ЭтоПерваяИтерация = Истина;
    НужноСделатьПереносСтроки = Ложь;
    
    Для СчетчикСтрок=1 По КоличествоСтрок Цикл    //КоличествоСтрок-это реквизит формы
        
        Если Не ЭтоПерваяИтерация Тогда        
            КоличествоСтрокВСтроке = КоличествоСтрокВСтроке + 2;
            Для Количество=1 По КоличествоСтрокВСтроке Цикл
                СчетчикЧисел = СчетчикЧисел+1;
                Сообщить(СчетчикЧисел);
                //
                                НужноСделатьПереносСтроки = Ложь;
            КонецЦикла;
        Иначе
            Сообщить(СчетчикЧисел);    
            
            НужноСделатьПереносСтроки = Истина;
                        НужноСделатьПереносСтроки = Ложь;
            
            ЭтоПерваяИтерация = Ложь;    
    
        КонецЕсли;
        
    Сообщить("*");        
    НужноСделатьПереносСтроки = Истина;
320 Никулин Леонид
 
14.09.16
09:19
(319) + КонецЦикла;
конечно)