Имя: Пароль:
IT
 
Математика. Как вернуть 1, если послали больше либо равно 4, и 0 если иначе.
🠗 (Волшебник 05.05.2012 15:00)
,
0 Галахад
 
гуру
05.05.12
12:46
Возможно ли, используя математические действия, остаток от деления, процент, мин, макс, написать формулу.
Формула должна возвращать 1, если послали в формулу 4, и 0 если иначе.
1 Ненавижу 1С
 
гуру
05.05.12
12:47
аргумент может быть вообще любое число или есть ограничения?
2 Cube
 
05.05.12
12:47
Ответ = ?(Послали = 4, 1, 0);
3 Ненавижу 1С
 
гуру
05.05.12
12:48
(2) нельзя использовать wiki:Тернарная_условная_операция
4 Галахад
 
гуру
05.05.12
12:48
(1) Число положительное. Разрядность 15.2.
5 zva
 
05.05.12
12:49
0^(5-x), если не вегетарианец
6 zva
 
05.05.12
12:51
0^(4-x)
7 Starhan
 
05.05.12
12:51
1=(4+0)/(4-0)

:)
8 Ненавижу 1С
 
гуру
05.05.12
12:51
(6) 0^0 неопределено
9 Галахад
 
гуру
05.05.12
12:51
(2) См (3)

(5) Степени нету. Только простые действия:
- + / *
Целочисленное деление
Остаток от деления
Процент
Мин
Макс
10 Wobland
 
05.05.12
12:52
Число(Послали=4)
11 Ненавижу 1С
 
гуру
05.05.12
12:52
+(8) хотя 1С так не думает Pow(0,0)=1
12 DGorgoN
 
05.05.12
12:52
(8) Это число а не функция
13 wertyu
 
05.05.12
12:53
(6) тогда уж (x+1)^0
14 Cube
 
05.05.12
12:53
(10) Красиво!)
15 Галахад
 
гуру
05.05.12
12:53
(7) Что-то не понял.
А если вместо 4 подставить 5?
16 Ненавижу 1С
 
гуру
05.05.12
12:54
(12) этого числа нет, как нет и 0/0
17 xenos
 
05.05.12
12:55
Думаю копать надо в сторону: x/2-(x-2)
18 Ненавижу 1С
 
гуру
05.05.12
12:55
(0) это с какого собеседования?
19 Starhan
 
05.05.12
12:56
(15) Не правильно прочел условие :(
20 Starhan
 
05.05.12
12:58
(17) Тогда уж (4/2)/(4-2)
21 xenos
 
05.05.12
12:59
(20) при х=2 ошибка
22 Галахад
 
гуру
05.05.12
13:04
Похоже решил:

Мин( 1 ; Цел(Х/4) )
23 iamnub
 
05.05.12
13:04
(22)
Жирно - четверку то указывать явно!
24 iamnub
 
05.05.12
13:05
(22)
И x=40 = твоя функция вернет 1.
А нужно 0
25 Ненавижу 1С
 
гуру
05.05.12
13:06
(22) при Х=400 получаем 1, а надо 0
26 Krendel
 
05.05.12
13:07
(8) любое число в степени 0, дает единицу
27 Ненавижу 1С
 
гуру
05.05.12
13:08
(26) кроме нуля, где это неопределенность
28 Krendel
 
05.05.12
13:08
29 Krendel
 
05.05.12
13:08
В вики 0 ;-)
30 Krendel
 
05.05.12
13:09
а сорри.
31 Krendel
 
05.05.12
13:09
все прочел
32 Ненавижу 1С
 
гуру
05.05.12
13:09
(30) вот именно, там как раз написано
33 Галахад
 
гуру
05.05.12
13:10
Э-э-э, народ. Я тут облажался немного в условии.

Если больше или равно 4, то 1
Иначе 0
34 Ненавижу 1С
 
гуру
05.05.12
13:10
(33) пипец))
35 badboychik
 
05.05.12
13:12
Цел(Мин(Передали,4),4)
36 Starhan
 
05.05.12
13:12
(33) то то я и думаю что эито вы в (24)(25) за 40 и 400 схватили когда там 1 будет возвращать начиная от 5ти
37 iamnub
 
05.05.12
13:12
(33)
Да за такое банить надо
38 Ненавижу 1С
 
гуру
05.05.12
13:13
(35) поясни ))
39 iamnub
 
05.05.12
13:13
Короче.
40 badboychik
 
05.05.12
13:15
(38) че пояснять то тут )
передали 10 -> находим целую часть от деления 4/4 - это 1
передали 2 -> находим целую часть от деления 2/4 - это 0
41 iamnub
 
05.05.12
13:15
МАКС(ЦЕЛ(((X-2)+(X-2)-(X/2)*(X/2))+1)),0)

Судим.
42 Галахад
 
гуру
05.05.12
13:16
(35) В чем отличие от (22)?
43 badboychik
 
05.05.12
13:19
(42) вроде как ничем ) значит есть 2 способа
44 iamnub
 
05.05.12
13:22
(42)
мало того, что ты облажался в условии.

Что будет, если в твою формулу передать отрицательное число?
45 ptrtss
 
05.05.12
13:22
min(4,x)/3
?
46 ptrtss
 
05.05.12
13:23
а, не, лажа
47 ptrtss
 
05.05.12
13:24
а, не, с учетом "облажался в условии" - самое то
48 bahmet
 
05.05.12
13:24
(22)че за Цел? в условии нет такого
49 Ненавижу 1С
 
гуру
05.05.12
13:27
да кстати, Цел нет
50 Галахад
 
гуру
05.05.12
13:30
(44) см. (4)

(45) При х = 1, результат = 1/3

(48), (49) В (9) уточнение. Но даже без него
Мин( 1 ;  (Х/4 - ОстатокОтДеления(Х/4))
51 Snorkler
 
05.05.12
13:32
max(0, x-4)/(x-4)
Проблема только при х=4, но предел справа в этой точке равен 1, так что, вроде, соответствует поправленному условию.
52 Галахад
 
гуру
05.05.12
13:34
(51) Классно.
53 iamnub
 
05.05.12
13:37
Согласно (0) и (9)
Ответ в (44).
54 iamnub
 
05.05.12
13:38
Тьфу на, в (41)
55 NS
 
05.05.12
13:44
цел(макс(мин(x,4),0)/4)
56 NS
 
05.05.12
13:45
(55) -> (33)
57 xenos
 
05.05.12
14:11
(41) Работает.
58 xenos
 
05.05.12
14:31
(55)
При 5 будет выдавать значение 1
цел(макс(мин(x,4),0)/4)
59 Shaman100M
 
05.05.12
14:32
Цел(Макс(Мин(х-3,5-х),0))
60 Shaman100M
 
05.05.12
14:36
Цел(Макс((х-3)*(5-х),0)) примерно та же идея.
61 Shaman100M
 
05.05.12
14:39
а, Цел() не используется...
62 xenos
 
05.05.12
14:39
(61)Цел() надо на х накладывать
63 Shaman100M
 
05.05.12
14:42
ну, так тогда:

Макс((Цел(х)-3)*(5-Цел(х)),0)
64 Shaman100M
 
05.05.12
14:54
Макс(Мин(х-3-х%1,5-х+х%1),0)
вот, так, в соответствии с условиями задачи
65 NS
 
05.05.12
14:56
(58) и?
Читай (33)
66 Волшебник
 
05.05.12
15:00
За (33) топлю ветку
67 ptrtss
 
05.05.12
15:39
(50) Это целочисленное деление
68 Torquader
 
06.05.12
21:07
Max(0,X)/X - возвращает 0, если Х<=0 и 1, если X >0
Min(0,X)/X - возвращает 0, если X>=0 и 1, если X <0
То есть 1-(Max(0,X)/X)+(Min(0,X)/X) даст 1, только в 0.
Однако, нужно понимать, что у нас есть предельный переход, который, например, компьютеру будет не по зубам.
Надо от него избавится.
Рассмотрим Rest(X) - дробная часть от X - она задана на интервале [0,1)
Нужно получить функцию, которая даёт 1 в 0 и 0 на всём остальном интервале.
Целое(X)=X-Rest(X) - даёт максимальное целое число меньшее или равное нашему.
Предполагаем, что математическое целое (то есть Целое(-0.5)=-1).
Целое(X)+Целое(-X)=0 только если X у нас Х=0
На интервале (-1,0)=-1
На интервале (0,1)=-1
Другими словами, данная функция даёт значение 0, если число целое и -1, если нет.
1+(Целое(X)+Целое(-X)) - даёт 1 в целых числах и 0 в нецелых

Далее можем работать в целых числах (мы научились дробные переводить в целые)

Max(1,X)-Max(0,X) - в целых числах даёт 0 при Х>=1 и 1 при Х<=0
Min(X,0)-Min(X,-1) - в целых числах даёт 0 при X<=-1 и 1 при X>=0
Сложим эти выражения - получим 2 в 0 и 1 в остальных.
(Max(1,X)-Max(0,X)+Min(X,0)-Min(X,-1)-1)*(1+(Целое(X)+Целое(-X))) - получаем 1, если X=0 и 0, если X<>0
Далее, смещением можем подставить любую точку.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший