Имя: Пароль:
1C
1С v8
вычисление факториала. Как вычислить факториал?
0 YamEgor
 
13.11.20
14:18
Добрый день подскажите что такое факториал и как он вычисляется? на собеседовании дали такое задание : "Нахождение факториала от числа, заданного в переменной N"
1 mikecool
 
13.11.20
14:20
ээээ, это  же школьная программа
а так - рекурсия
2 polosov
 
13.11.20
14:21
(0) Серьезно не знаешь? И не знаешь где посмотреть?
Не возьмут программистом с такими навыками.
3 polosov
 
13.11.20
14:22
(1) Цикла достаточно ж вроде.
4 mikecool
 
13.11.20
14:23
(3) да я как то решал в школе, так в памяти и осталась рекурсия )
5 ДенисЧ
 
13.11.20
14:25
6 acht
 
13.11.20
14:26
(0)  Вот, держи:

Процедура КнопкаВыполнитьНажатие(Кнопка)

    ПеременнаяN = 0;
    Если ВвестиЗначение(ПеременнаяN, "Введите значение переменной N") Тогда
        Факториал = 0;
        Если ВвестиЗначение(Факториал, "Введите значение факториала N") Тогда
            Предупреждение("Значение факториала " + ПеременнаяN + " равно " + Факториал);
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры
7 ДенисЧ
 
13.11.20
14:26
(4) to iterate is human to recurse divine (Питер Дойч)
8 Kassern
 
13.11.20
14:46
(0) Чтоб ты понимал факториал 5 равен: 5!=1*2*3*4*5=120
Дальше думаю и школьник разберется как в цикле для N числа посчитать факториал.
9 vladko
 
13.11.20
14:51
(0) я тоже при приёме собеседования задавал сразу сходу придумать алгоритм вычисления факториала от числа. Сразу видно, если ли алгоритмическое мышление у кандидата в падаваны или нет.
10 Kassern
 
13.11.20
14:54
(9) У меня в свое время была другая задачка, но тоже интересная при приеме. Есть 2 числа А,Б нужно поменять значения переменных местами без использования третьей переменной.
11 ДенисЧ
 
13.11.20
14:59
(10)
#!\user\bin\python
# заполнение данных

(b,a)=(a,b)

# вывод результата

)))
12 Asmody
 
13.11.20
15:01
(11) в первой строке какая-то фигня
13 Волшебник
 
13.11.20
15:02
(1) Лучше циклом
14 Малыш Джон
 
13.11.20
15:04
Серьезно?  "Что такое факториал?" ???
15 ДенисЧ
 
13.11.20
15:06
(12) s\user\usr\
16 ДенисЧ
 
13.11.20
15:06
s/\\/\/\
17 Kassern
 
13.11.20
15:08
(11) Давай еще обертку ком сделаем чтобы вызывать скрипты питона сразу из 1с)
18 Ненавижу 1С
 
гуру
13.11.20
15:09
на собеседовании надо уметь разными способами
19 acht
 
13.11.20
15:14
(10) Упражнение из первого тома Кнута, примерно 18 страница:
Докажите, что если n - целое число, n > 2, то уравнение x^n + y^n = z^n неразрешимо в целых положительных числах x, y, z
=)
20 ДенисЧ
 
13.11.20
15:15
(17) Ком устаревшая технология. Нужен хппт-сервис и 7 микросервисов с лоад-балансером.
21 Волшебник
 
13.11.20
15:15
(18) За вычисление факториала рекурсией можно бить по рукам. Дело в том, что при достаточно большом N возникнет переполнение стека и 1С вылетит с дампом, только мяукнув в технологический журнал. Ошибки не будет, сразу вылет.
22 ДенисЧ
 
13.11.20
15:15
(19) Решение есть?
23 ДенисЧ
 
13.11.20
15:15
(21) Не вылетит. Раньше переполнение по размеру числа будет
24 acht
 
13.11.20
15:17
(22) "автор данной книги будет очень признателен, если ему сообщат решение как можно быстрее (при условии, что оно правильно)"
25 Kassern
 
13.11.20
15:17
(17) А для большего изврата можно поднять fastAPI через питон и воткнуть на гет запрос ответ с нужными значениями переменных. в 1с через html документ воткнуть js скрипт, который обратиться нужному ресурсу по кнопке и отобразит полученные данные)
26 acht
 
13.11.20
15:19
(25) При этом используя авторизацию openid, это важно!
27 Волшебник
 
13.11.20
15:23
(23) Проверил. Вылетает
28 Lama12
 
13.11.20
15:35
(8) Не забудь сказать что 0!=1. :-)
29 Lama12
 
13.11.20
15:37
(19) Это вроде одна из задач тысячелетия.
30 RomanYS
 
13.11.20
15:39
(29) Теорема Ферма, вроде решена уже.
(24) автору сообщили уже :)?
31 ДенисЧ
 
13.11.20
15:40
(27) Да и фиг с ней. Поставь 64бит клиента
(29) Обычно это люди называют теоремой Ферма...
(30) Полностью - нет. Доказаны теоремы, которые к ней сводятся
32 ДенисЧ
 
13.11.20
15:41
(28) 0 != 1 === true...
33 Lama12
 
13.11.20
15:43
(30) Вот блин. Не узнал ее. :-( Старею.
34 dmpl
 
13.11.20
15:45
(19) Правильный ответ на собеседовании: "Какое это отношение имеет к программированию? Есть задача - надо решать."
35 Ненавижу 1С
 
гуру
13.11.20
15:45
(21) не надо никого бить, надо просто уметь и таким способом
36 Волшебник
 
13.11.20
15:48
(31) 64-битный клиент не поможет, потому что переполняется стековая память, а не память кучи.
37 Малыш Джон
 
13.11.20
15:50
(31) а за что же тогда Абелевскую премию дали?
38 RomanYS
 
13.11.20
15:51
(31) Ну проверять решение я не полезу :), но поверю вики (и обрывкам воспоминаний), что доказана полностью и ещё в прошлом тысячелетии
https://ru.wikipedia.org/wiki/Великая_теорема_Ферма
39 ДенисЧ
 
13.11.20
15:55
(37) (38) Ну и фиг с ним, не из моего кармана (если) выдали... )))
Я не очень слежу за таким.
Доказали - так доказали, лишили меня удовльствия на пенсии покорпеть
40 Kigo_Kigo
 
13.11.20
15:58
(10)
А= А*Б;
Б =А/Б;
А=А/Б; )))
41 NeiTRoN4ik
 
13.11.20
16:08
(40) ога, например 0 и 3 ))
42 Kassern
 
13.11.20
16:16
(41) ахах я спецом про 0 не написал)) думал попадется кто нить) я сам в свое время, когда решал так же замутил через умножение, на что мне так же на 0 ткнули)
43 Kigo_Kigo
 
13.11.20
16:17
(41) ладно пойдем другим путем,
а= а+б
б=а-б
а=а-б
44 Малыш Джон
 
13.11.20
16:17
(40)  Неплохо))

А = Ln(B)/Ln(A);
B = B^(1/A);
A = A^B;
45 Малыш Джон
 
13.11.20
16:18
(43) но это то уж банально и неинтересно)
46 Kigo_Kigo
 
13.11.20
16:19
(43) Кстати по мат правила работает и для отрицательных чисел, причем (40) плохо стработает с дробными частями из-за округления )))
47 Chameleon1980
 
13.11.20
16:28
крепкий орешек
48 Kassern
 
13.11.20
16:32
(44) В конце наверное вместо A^B нужно B^A
49 Малыш Джон
 
13.11.20
16:34
(48) да, верно)
50 Bigbro
 
13.11.20
16:38
для больших N понадобятся специальные методы,
а так циклом конечно
51 YamEgor
 
13.11.20
16:43
Нифига столько написали пока я думал !!
   Факториал = 1;    
   Для Сч = 1 По ЧислоN Цикл
         Факториал = факториал * Сч;
   КонецЦикла;
вот так будет ))
есть еще задачи написать?
52 Ненавижу 1С
 
гуру
13.11.20
16:48
Процедура ВыражениеВычислить(Команда)
    
    А = 4.25;
    Б = 4;

    Для й=1 По 100 Цикл
        Ц = Шаг(А,Б);            
        Б = А;
        А = Ц;        
    КонецЦикла;
    
КонецПроцедуры


Функция Шаг(А,Б)

    Возврат 108 - (815-1500/Б)/А;    

КонецФункции


Чему будет равно Ц в результате?
53 YamEgor
 
13.11.20
17:03
Сделать матрицу случайных чисел 5 x 5. Вывести пользователю. Получить по исходной матрице транспонированную матрицу. Вывести пользователю.


не пойму как это: Сделать матрицу случайных чисел 5 x 5?
И что такое транспонированную матрицу?
54 NeiTRoN4ik
 
13.11.20
17:07
(53) 1 - двумерный массив. 2 - примерно, как в (5)  =)
55 Ненавижу 1С
 
гуру
13.11.20
17:22
(53) надо прокаичать математическое образование
https://ru.wikipedia.org/wiki/Транспонированная_матрица
56 RomanYS
 
13.11.20
17:24
(52) Это для устного счёта или можно в 1С загнать?
57 Ненавижу 1С
 
гуру
13.11.20
17:27
(56) в 1С оно дает 100
но верный ответ должен быть близок к 5
58 RomanYS
 
13.11.20
17:29
(57) Но это код на 1С, поэтому "верный" звучит двусмысленно :)
59 МихаилМ
 
13.11.20
17:46
на ис  один человек развлекся факториалом

http://catalog.mista.ru/1c/articles/1256963/
http://catalog.mista.ru/1c/articles/1257170/
60 YamEgor
 
13.11.20
17:53
вот еще: Убрать условный оператор «Если» из следующего блока (А может принимать значение 0 или Если (А = 0) Тогда
    B = 2;
Иначе
    В = 1;
КонецЕсли;

не пойму что здесь надо?
61 Ботаник Гарден Меран
 
13.11.20
17:59
Можно в Excel быстро состряпать.
4.64473684210522
62 Ботаник Гарден Меран
 
13.11.20
17:59
Предыдущий к (52).
63 DTX 4th
 
13.11.20
18:00
Теорему ферма доказали таки??? Круто
Последнее, что я помню - кто-то выкатил доказательство, но оно было сложным, а все остальные уже задолбались проверять неправильные доказательства, и все как-то застыло на месте)
Побольше бы таких веток)

(52) В чем прикол?
64 Ненавижу 1С
 
гуру
13.11.20
18:01
(60) в = а+2;
65 Ненавижу 1С
 
гуру
13.11.20
18:03
(58) из-за ошибок округления результат скатывается к неверному пределу
66 RomanYS
 
13.11.20
18:09
(65) Причины понятны, только код на 1С не надо давать, а то доказать что результат не верный де-юре уже нельзя)
67 RomanYS
 
13.11.20
18:10
(64) прикол?
В = ?(А = 0, 2, 1);
68 Ботаник Гарден Меран
 
13.11.20
18:19
(60)
Это задача не про 1С.
y = 2-ЗНАК(x)*ЗНАК(x)
69 YamEgor
 
13.11.20
18:28
(67) ага, кажется так!
70 Ненавижу 1С
 
гуру
13.11.20
18:41
(67) ну формально да, но условный оператор остался
71 bolder
 
13.11.20
18:41
(0) Адекватный работодатель. Думаю у него еще не мало вопросов!
72 Провинциальный 1сник
 
13.11.20
18:59
Если факториал большой (больше n>100), то смысла его считать циклом нет, надо считать по формуле Стирлинга
https://ru.wikipedia.org/wiki/Формула_Стирлинга
73 СвинТуз
 
13.11.20
18:59
(21)
На собеседованиях есть вопрос по рекурсии?
74 Креатив
 
13.11.20
19:08
В (60) задание написано криво. Не хватает скобки. Думаю, что если всё переписать аккуратно, то код упростится до
в=2;
75 Волшебник
 
13.11.20
19:25
(73) Да. Приведите пример полезного применения рекурсии при автоматизации экономической деятельности предприятия, т.е. не вычисление факториала.
76 bolder
 
13.11.20
19:33
(75) Ежедневный пример -УПП и ERP, получение структуры изделия в рекурсии.
77 rphosts
 
13.11.20
19:34
(27) Эээээ, у меня скажем так 8.2.13 при сложении в рекурсии 1+2+3+4... скажем так вылеты были между 5К и 6К. На более старших релизах не пробовал
78 МихаилМ
 
13.11.20
19:36
79 YamEgor
 
13.11.20
19:37
(71) вот еще один:
4.
Реализовать алгоритм в 1С
Вводятся целые числа a и b. Гарантируется, что a не превосходит b. Выведите (через пробел) все четные числа от a до b (включительно).

я так и не понял сколько там чисел между a и b? или от фонаря  взять?
80 Конструктор1С
 
13.11.20
19:39
(1) рекурсия для факториала не нужна, достаточно цикла
81 Креатив
 
13.11.20
19:40
(79)Это уж совсем просто. Цикл для от а до b. Если остаток от деления счётчика на 2 равен нулю, то число чётное.
82 Волшебник
 
13.11.20
19:41
(79) их там примерно (b-a)/2
83 Волшебник
 
13.11.20
19:41
(81) медленно.
Надо найти первое чётное и затем циклом +2, +2...
84 Конструктор1С
 
13.11.20
19:42
Ай, блин. Уже наотвечали про цикл...
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший