Имя: Пароль:
LIFE
Жизнь прекрасна
OFF: задачка на собесе, раз уж пятница
, ,
0 DeeK
 
10.02.23
14:10
мне как-то задали задачу на собесе - есть два числа А и В (не равные), нужно используя только математические операторы, определить какое из них больше, а какое меньше

то есть без условий и сравнений

все это в рантайме 1С подразумевалось

пример:
a = 6
b = -2

min = ?
max = ?

Сообщить(min)
Сообщить(max)
1 Dmitry1c
 
10.02.23
14:14
(0) хороший детектор конторы, которую можно обойти стороной)
2 vovastar
 
10.02.23
14:16
(1) Судя по тому, что он на форуме, значит откупился.
3 PR
 
10.02.23
14:17
(0) Думаю, что это невозможно
Только математические операторы — это +, -, *, / и пр.
То есть по логике должно быть что-то типа Сообщить((a + b) / (a - b))
4 Chai Nic
 
10.02.23
14:18
min=Мин(a,b)
max=Макс(a,b)
Условий и сравнений нет. Задача выполнена.
5 PR
 
10.02.23
14:19
(4) Ты еще бы сортировку СЗ предложил
6 Dmitry1c
 
10.02.23
14:19
(4) это не математические операторы, это функции платформы
7 mistеr
 
10.02.23
14:20
Приходит грузчик на собес. После недолгой беседы и алкотеста - тестовое задание.

-- Вот пять мешков цемента, вот грузовик. Но одну руку мы вам свяжем за спиной.
8 DeeK
 
10.02.23
14:21
(1) я обошел)

зарубился с постановщиком, что задача задана некорректно, уточнил можно ли использовать функции встроенного языка, промямлила невнятно, что якобы нет, а когда услышал что ребята из их отдела ее решили, спросил как - показала листочек, где я вижу не 1с код, а просто математическую формулу где используют взятие по модулю, я сказал что взятие по модулю нельзя сделать без использования встроенных функций, сказал что я не шарю, и был я таков
9 ChMikle
 
10.02.23
14:21
(0) Назвал бы контору, чтобы люди время не тратили ...
10 Fish
 
10.02.23
14:22
(9) По правилам форума нельзя.
11 DeeK
 
10.02.23
14:22
(3) при такой формулировке я тоже сказал что невозможно, но разговор ушел в неконтролируемое пике, и там уже было бесполезно качать права
12 ChMikle
 
10.02.23
14:22
(10) на то они и правила ... :)
13 DeeK
 
10.02.23
14:23
(9) блин не помню, давно было
14 ChMikle
 
10.02.23
14:23
(11) а на какую позицию собеседовался ?
15 ChMikle
 
10.02.23
14:23
(13) зачем тогда сейчас решил этот камингаут ???
16 DeeK
 
10.02.23
14:23
(14) рядовой прог какой-то
17 DeeK
 
10.02.23
14:24
(15) ну задача на самом деле мне показалась интересной, попробовать ее выполнить все таки максимально математически
18 DeeK
 
10.02.23
14:24
я вот так родил
Сообщить((а+в)/2-sqrt(Pow((а-в)/2,2)));
Сообщить((а+в)/2+sqrt(Pow((а-в)/2,2)));
19 DeeK
 
10.02.23
14:25
(18) ну даже без pow можно, но без sqrt никак мне кажется
20 ChMikle
 
10.02.23
14:30
(16) на 1C - ка ?
21 DeeK
 
10.02.23
14:32
(20) да
22 Злопчинский
 
10.02.23
14:35
условие все иравно будет использоваться в любом случае при считывании результата, только вместо того чтобы это делать явно в коде, будет едалться неявно пользователем
вывелось 0 - ага, если 0 - это а меньше б, если 1 - наоборот.
условие будет присутсвовать в любом случае
23 Ботаник Гарден Меран
 
10.02.23
14:35
Раз уж к операторам причислили всё подряд.

Попытка
    Гы = Log(A-B)
    Сообщить("А больше");
Исключение
    Сообщить("B больше");
КонецПопытки;

ЗЫ.
И вообще, требовалось указать, КАКОЕ больше, а не максимум и минимум из двух.
24 ChMikle
 
10.02.23
14:35
(21) Поэтому 1С долго и была не птицей в "богемных кругах всяких сишников и ораклистов доморощенных", когда такие собеседование для 1С такими задачами проводили :))
25 ChMikle
 
10.02.23
14:36
там результат а-в достаточно вывести , чтобы смышленый человек понял какое из числе больше , а какое меньше....
26 DeeK
 
10.02.23
14:39
(24) ну все равно, в подобных темах тут, все равно фигурируют задачи аля два числа поменяй местами, то есть они встречаются, а по поводу репутации 1С мне все равно как-то
27 ChMikle
 
10.02.23
14:41
(26) я к тому, что задание не перекликается с задачей выявления профильного уровня подготовки кандидата от слова совсем :)
28 DeeK
 
10.02.23
14:42
(23) тоже верно, еще один повод зарубиться с постановщиком, а на деле это девочка, то ли консульт у них, я так не понял, но все отсылала на то, что в их отделе ее решили, значит решение стопроц есть, на мое возмущение про некорректность условия - ухмыльнулась, типа я тупой
29 DeeK
 
10.02.23
14:43
(27) собеседуют они, им решать что спрашивать, их проблемы, мое дело отказаться и уйти
30 Chai Nic
 
10.02.23
14:43
(6) Согласно синтакс-помощнику, это математические функции
31 Kassern
 
10.02.23
14:44
(0) Вроде уже обсуждали эту задачу на форуме.
"определить какое из них больше, а какое меньше " - я отрезками эту задачу решал.
Получилось вроде так:
(|а+б|-|а-б|)/2 = большее число
(|а+б|+|а-б|)/2 = меньшее число
32 Kassern
 
10.02.23
14:46
отрезок не может быть отрицательный, это и есть модуль.
33 Garykom
 
гуру
10.02.23
14:50
(31)
>(|а+б|-|а-б|)/2 = большее число
(|6+(-2)| - |6-(-2)|)/2 = (4 - 8)/2 = -4/2 = -2

>(|а+б|+|а-б|)/2 = меньшее число
(|6+(-2)| + |6-(-2)|)/2 = (4 + 8)/2 = 12/2 = 6

перепутал местами?
34 Kassern
 
10.02.23
14:51
(33) да, очепятался, там где + ->большее
35 Kassern
 
10.02.23
14:51
это и логично)
36 PR
 
10.02.23
15:01
(8) Интересно, чем поможет взятие по модулю при значениях 3 и 5
37 Kassern
 
10.02.23
15:01
(36) Там модуль в формуле нужен при разнице а и б
38 Kassern
 
10.02.23
15:02
ну и при сумме, если результат отрицательный
39 PR
 
10.02.23
15:03
(37) А, ну понял
Я обычно сразу торможу таких гениальных тестеров, типа нехрен придумывать всякую херобору, не имеющую никакого смысла
40 Kassern
 
10.02.23
15:07
(39) В принципе интересная задачка, но на собеседовании 1с программиста я бы ее не давал.
41 PR
 
10.02.23
15:09
(40) Те, кто дают на собеседовании такие задачи, отсеивают все адекватное, что перешагнуло их порог
42 Kassern
 
10.02.23
15:14
(41) Ну почему сразу все, какую-то часть) Есть же шанс, что человек отнесется к задаче серьезно и решит ее за условный час.
43 DeeK
 
10.02.23
15:27
(41) на моей практике собеседований, когда я уже собеседовал, меняли значений переменных местами около половины на ЗП 100+, но это в череде моих вопросов было первым и единственным случаем такого типа вопросов, чтобы реально отсеять сразу реальный неадекват, следующим этапом уже писали запросы
44 FirstLine Support
 
10.02.23
15:38
(43) потому что такого рода вопросы нужрно просто вызубрить, сам ты эту арифметику не изобретешь. Да даже чисто не поймешь, в какую сторону нужно думать.
45 mistеr
 
10.02.23
15:43
(44) Да ладно. Школьная же арифметика.

Если нужно отобрать тех, кто умеет и готов думать, очень хороший тест.

Или наоборот, тех, кто выдержит кодить строго по ТЗ и не лезть с вопросами и предложениями.
46 Kassern
 
10.02.23
15:43
(44) " такого рода вопросы нужрно просто вызубрить" не надо ничего зубрить, просто если голова соображает, то перепробовав множество вариантов, найдешь ответ.
Так же может быть на предприятии. К примеру завтра захотят новый функционал на предприятии, а в инете информации не будет для 1с. Если голова соображает, то найдете способ решить задачу, или предложить лучший вариант.
47 iddroide
 
10.02.23
15:50
Я такие задачки очень уважаю, считаю, что они как раз помогают проверить дружит ли 1С-ник с логикой, математикой и умеет ли программировать ВООБЩЕ, а не только типовые 1С-ные задачи, и умеет ли банально ГУГЛИТЬ. Никто не претендует на какой-то там пафос и необходимость знания 1С-ком АЛГОРИТМОВ, знанием которых так кичатся НАСТОЯЩИЕ программисты, которые не 1С-ники. Но надо же хоть немного уметь решать задачки, которые не про дебет-кредит, приход-расход и иже с ними. Задачки такие даем не на собеседовании, а после собеседования как второй этап - домашнюю работу, если кандидат понравился. Если и мы ему понравились, то возьмется человек. Если решение с ошибками, то мы еще потом даем человеку обратную связь и возможность довести решение до ума. Если решено не всё или много решено неправильно - нет без объяснений. Задачки разные, штук 8. На решение уходит в среднем часов 10. Скилл в предметной области пытаемся понять на собеседовании и на испытательном сроке. Но человек с хорошо подвешенным языком может классно себя преподнести, а тут ему еще задачки. У нас от задач никто не отказывался, но я читал мнение, что это оскорбление для соискателя. Хрен, конторе нужно отсеять болтунов. Проходили у нас, к сожалению, такие люди собеседование, а потом спрашивали чем процедура отличается от функции. Я и сам однажды решал подобные задачи для одной серьезной конторы. Там вообще половина задач по MS SQL была, потому что хороший 1С-ник по их мнению и в скуль должен уметь как надо.
P/S. Спорить ни с кем не собираюсь, не нравятся такие задачи - не решайте. Но в нашей конторе и поддержка и люди с зп от 240к такие задачи, в том числе, решали.
48 Злопчинский
 
10.02.23
15:58
взятие по модулю - по сути скрытый условный оператор. если уж решать задачу - то только + - / *
49 Злопчинский
 
10.02.23
16:00
(46) "перепробовав множество вариантов,"
в реальных задачах очень часто перебрать множество вариантов - нет ресурса. поэтому смотря кого ищем на работу...
50 Злопчинский
 
10.02.23
16:01
(46) вот у меня есть задачка от клиента. потенциально вижу три варианта решения. но надо пробовать какое окажется ближе к адекватному результату. клиенту я нихрена не выставлю 10 часов. максимум 2-3. а думать задаром - это я могу только если отпуск планирую....
51 Kassern
 
10.02.23
16:02
(49) А есть такие, кто тупо лапки свесят, толком не попробовав и говорят, либо "не шмогла", или это невозможно.
52 Kassern
 
10.02.23
16:05
(50) "а думать задаром " - так ведь вы не "за даром". Найдя оптимальный способ, который будет быстрым и более лояльным к клиенту, вы сможете в дальнейшем, как орешки, такие задачи решать, а может сделаете свое отраслевое решение. В общем вы вкладываетесь в свое развитие тратя на это часы.
53 FirstLine Support
 
10.02.23
16:09
(52) спасибо, посмеялся. Я лучше это время потрачу на новые функции агрегации СКД
54 Kassern
 
10.02.23
16:14
(53) Так ведь отчасти и получается. Человек, к примеру, сделал для кого-то модуль работы с почтой России. А потом все это дело причесал и уже продает другим. А можно было сделать для человека несколько костылей и забить, тратя время на новые функции агрегации СКД.
55 Новый1сник2
 
10.02.23
16:18
(52) так и происходит в основном с задачами с которыми не сталкивался (вкладываешься в развитие). только проблемка когда клиент просит предварительную оценку дать такой задачи.
56 FirstLine Support
 
10.02.23
16:20
(54) да потому что программист, получает знания, это всё равно что для торговца покупать товар. Программист же потом продаёт свои знания. А выгодней "купить" то, что можно продать МНОГО раз
57 Kassern
 
10.02.23
16:22
(56) А с чего вы решили, что (50) не получится продать "МНОГО раз"?
58 FirstLine Support
 
10.02.23
16:22
(55) смотря какая задача. Если это задача одноразовая, то её нет смысла "изучать". Этим может заниматься тольк джун, у которого все задачи новые, и все эти задачи его развивают
59 Mort
 
10.02.23
16:23
Нормальная задача. Если претендент догнал, что разницу можно подловить на корне из квадрата минуса, значит мозг теплится.
60 Kassern
 
10.02.23
16:24
(58) Зная любовь Злопа к клюшкам "вот у меня есть задачка от клиента. потенциально вижу три варианта решения", предполагаю, что один из вариантов, это сделать на них, чтобы не ковырять снеговика)
61 ChMikle
 
10.02.23
16:24
(54) >>. А можно было сделать для человека несколько костылей и забить, тратя время на новые функции агрегации СКД.
Вы сейчас серьезно ?! Чела берут  одинэсником работать и вместо того чтобы проверить его знания непосредственно функционала языка программирования на котором он свои нетленки для почты Россия лабать , его заставляют вместо функции макс или мин велосипед изобретать. Любой нормальный начальник у виска пальцем покрутит если ему такой способ определения большего числа предложат на языке 1С :)). Еще сортировку пузырьковым методом предложите сделать , чтобы из массива данных максимум выбрать в 1с. :)))
62 FirstLine Support
 
10.02.23
16:25
(57) потому что это те задачи, которые можно продать много раз, у меня лежат уже готовые
63 Kassern
 
10.02.23
16:26
(62) Но ведь у вас они откуда-то появились. Следовательно, вы так же определили задачу как потенциально выгодную. С чего вы решили, что тут не тот случай?
64 FirstLine Support
 
10.02.23
16:27
(63) джун решает всё подряд, оттуда и появились :)
65 Kassern
 
10.02.23
16:28
(61) Вы смешали 2 темы вместе... Это относилось к сообщению (50), что никак не связано с оценкой претендента на должность погромиста 1с
66 ChMikle
 
10.02.23
16:30
(650 тогда пардоньте :).
67 Михаил Козлов
 
10.02.23
19:07
Ловить ошибку в SQRT(a-b). Если нет - а>=b.
68 FirstLine Support
 
10.02.23
19:22
(67) заказчик изволит желать без условий. А у вас в первой же строчке "если". Ну как так-то..
69 Garykom
 
гуру
10.02.23
20:12
можно через (арк)тангенс и деление кстати
70 Сергиус
 
10.02.23
21:10
(0)a-b>b-a => a>b
71 Злопчинский
 
10.02.23
22:04
(60) Отчего это у меня "любовь к клюшкам"..? что умею то и ваяю. любовью это назвать трудно. а ваять на снеговике то же самое что ваял на клюшках - это уже на садомазо смахивает.
.
задача-то "тривиальная", неудовлетворенный спрос по заявкам клиентов. И вкрутить его хочется в существующую схему, а не переписать полконфы. вдобавок если учет ведется аккуратно - то проблем как-бы нет.. затык "если...."
;-)
72 FirstLine Support
 
10.02.23
22:10
(71) в восьмерке это решается отчетом на СКД за 15 мин. с перекурами. Если хорошо разбираться в системе обеспечения
73 Злопчинский
 
10.02.23
22:11
(72) ну, первый вариант я накидал тоже за 10-15 минут. получилась хрень.
74 FirstLine Support
 
10.02.23
22:16
(73) почему хрень-то? :) Неудовлетворенный спрос - это строки заказа с галкой "Отмена" и с какой-то там причиной отмены, которую скажет Заказчик.
75 Злопчинский
 
10.02.23
22:39
(74) это ты в снеговике такой умный ;-)
счет клиенту умеет выставлять на основании заказа клиента с обеспеченными строками (причем строка может быть обеспечена частично)? по факту поступления частичного необеспеченного товара - умеет выставлять счет на обеспеченный товар с учетом ранее выставленного счета (или иным образом реализовать такую схему, но чтобыбыло простот для юзера)..?
76 H A D G E H O G s
 
11.02.23
05:32
(47) а вот и эти, как их, неадекваты.
77 NorthWind
 
11.02.23
10:41
(0) тю... В попытке корень квадратный берем из а-б. Если управление перешло дальше, то максимум=а, минимум=б. Если првалилось в исключение, то там присваиваем максимум=б, минимум=а. Сообщаем. Все.
78 NorthWind
 
11.02.23
16:57
(31) +(77) если решать чистой арифметикой, то можно использовать такое правило, что расстояние от средней точки до конечных точек отрезка - это половина разности. Поскольку мы не знаем, какая из точек бОльшая, а какая меньшая, разность нужно взять по модулю. Если взять не по модулю, то может выйти так что максимум и минимум поменяются местами. При поиске среднего модуль не нужен.

Тогда имеем максимум (а+b)/2 + |a-b|/2
минимум (а+b)/2 - |a-b|/2

Как-то так.