Регистрация Правила Главная форума Поиск |
0
- 19.05.2017 - 19:40
|
Для тех, кому не лень размяться в арифметике - Задача : Составить наикратчайшую функцию, вычисляющую У от Х. Имеем Таблицу значений из двух колонок Х, У . У= f(x); Написать ф-цию на 1Сv77. А можно и на любом языке, важен алгоритм. Сравнивать длину кода будем по коду в 77. | | |
1
- 19.05.2017 - 19:42
| Таблица Параметр (х) - может принимать целые положительные значения от 0 до бесконечности. Дополнительные условия задачи, вся функция должна уместиться в одну строку, т.е использовать ";" для разделения операторов в середине строки нельзя пример: в=10;а=в+1;у=а*х; // не зачет. Надо так: у = х*(а+в) ; У кого код окажется самый короткий, значит у того самый длинный Кто решит, тоже не показывает свое решение до поры до времени, просто сообщает сколько символов вся строка СтрДлина("у = х*(а+в) ;"); ? p.s. знакомым с решением этой задачи по публикации на другом форуме просьба не выдавать решение. | | |
2
- 19.05.2017 - 19:46
|
Начнем пожалуй так: Я угадаю эту формулу со 100 букв :) | | |
3
- 19.05.2017 - 20:07
| Ничего не понял, как можно что-то написать не имея конкретных значений пар {x,y**? Про что ваще речь ? Самое короткое это y = x. | | |
4
- 19.05.2017 - 20:10
|
3-USSR > конкретные значения в Таблица Там ссылка спрятана. Плоховасто отображаются ссылки. https://cloud.mail.ru/public/41KG/UkKPLUoLn | | |
5
- 19.05.2017 - 20:21
|
Оформление не считаем, типа Функция Перем .... // и так далее у=f(x); КонецФункции считаем длину (кол-во символов без пробел) самой формулы. у=f(x); | | |
6
- 19.05.2017 - 20:59
|
Ты точно уверен в таблице? У меня вопрос вызывают значения у при х= 43, 44, 45 а также при х = 56, 57, 58 так то формула бы получилась несложная, но вот эти две ... "триады".. хм.. выбиваются из ряда... или это правильно, чтобы не было так уж легко? | | |
7
- 19.05.2017 - 21:06
| Ты это товой, "выбиваются", сейчас удалят тему за политику :) Все там цифры правильные, утвержденные Верховным советом и одобренные правительством. Задача имеет вполне себе прикладное применение. А вот логику ряда многим бы хотелось понять, но не только лишь все это могут. | | |
8
- 19.05.2017 - 21:11
|
эх.. а жаль.. ладно, завтра подумаем еще. | | |
9
- 19.05.2017 - 21:17
|
Исходники, можно сверить цифры а то мало ли чего Шух с недоперепития напечатал :) https://cloud.mail.ru/public/2MB5/xzW7mYrbU | | |
10
- 19.05.2017 - 21:22
| Я не понял... надо написать функцию именно и только для данной таблички? | | |
11
- 19.05.2017 - 21:26
|
Я несколько упростил задачу, чтобы не париться с округлением. Округлять-то мы умеем. Или нет? На самом деле параметр х - не из натурального ряда чисел, и может принимать дробные положительные значения с округлением вверх, те есть х = 30.01 должен округлиться до 31. | | |
12
- 19.05.2017 - 21:30
|
10-Гена > да, именно для этой Для тех, кто не понял, написать ф-цию для этой же таблички с округлением вверх :) Параметр (х) может принимать положительные значения, но до сотых :) например при х = 45.01, вычислить у. | | |
13
- 19.05.2017 - 21:55
|
Я не одноэсник, поэтому в экселе: =ЕСЛИ(ОКРУГЛВВЕРХ(A1;0)>61;256;ЕСЛИ(ОКРУГЛВВЕРХ(A1 ;0)>44;ОКРУГЛВНИЗ(3,52*ОКРУГЛВВЕРХ(A1;0)+37,85;0); ЕСЛИ(ОКРУГЛВВЕРХ(A1;0)<29;0;ОКРУГЛВНИЗ(3,5*ОКРУГЛВ ВЕРХ(A1;0)+38;0)))) | | |
14
- 19.05.2017 - 22:01
|
13-Гена >это конечно круто, но даже без "у=" у тебя уже 172 символа получилось :) | | |
15
- 19.05.2017 - 22:04
| Гена, ты напиши алгоритм просто. Как физик | | |
16
- 19.05.2017 - 22:12
|
14-Шухер > можно сначала определить в ячейке B1 =ОКРУГЛВВЕРХ(A1;0) тогда в С1: =ЕСЛИ(B1>61;256;ЕСЛИ(B1>44;ОКРУГЛВНИЗ(3,52*B1+37,8 5;0);ЕСЛИ(B1<29;0;ОКРУГЛВНИЗ(3,5*B1+38;0)))) | | |
17
- 20.05.2017 - 07:31
|
16-Гена >Принимается округление вверх в другой ячейке. Итак, Гена может угадать формулу с 97 букв :) 97 букв раз, 97 букв ... Кто меньше 97 предложит ? | | |
18
- 20.05.2017 - 09:01
|
Решение у Гены, переписанное на v77, выглядит покороче, чем в екселе. При проверке обнаружил, что 1С и Ексель по разному трактует ф-цию округления вниз. в 1С так посчитает: окр(3.52*46+37.85,0,0) = 200 ОКРУГЛВНИЗ(3,52*46+37,85;0) =199 Зато замена в 1С ф-ции Окр() на Цел(), которая соответствует ексельской ОКРУГЛВНИЗ, позволила укоротить нашу формулу еще на 4 символа. | | |
19
- 20.05.2017 - 09:34
|
Алгоритм Гены, переписанный из Ехеля на 1С, уложился в 66 символов. (Переписав её немного по другому, можно еще выиграть несколько символов, но я его оставляю, как у Гены, естественно - в переводе с иностранного ) Итак, Гена угадает слово с 66 букв. 66 букв раз ... Кто меньше? | | |
20
- 21.05.2017 - 04:22
| Задача была написать в 1С, пока программисты вникали в тех задание, непрограммист Гена глянул, и с лёту написал функцию в С1. p.s. Ирли Бёрд, тимбукту, ну типа уже можно смеяться, каламбурчик :) | | |
21
- 21.05.2017 - 04:39
| Без использования логических операторов если(), можно описать данный ряд чисел? Так сказать чиста научно, существует математическая модель этого набора цифр? Вот так например,- достали свои логарифмические линейки, поелозили ползунками и высчитали, чему равен У при Х таком-то, без всяких условных переходов. | | |
22
- 21.05.2017 - 11:35
| Цитата:
Очевидно можно избавиться лишь от первого "ЕСЛИ", воспользовавшись тем, что значения в таблице не должны превышать 256: =МИН(256;ЕСЛИ(B1>44;ОКРУГЛВНИЗ(3,52*B1+37,8 5;0);ЕСЛИ(B1<29;0;ОКРУГЛВНИЗ(3,5*B1+38;0)))) Но это так, косметическая правка, основная заслуга все равно принадлежит Гене. | | |
23
- 21.05.2017 - 11:49
| ?(f,F1,F2) | | |
24
- 21.05.2017 - 12:18
| Йес, кэп! | | |
25
- 21.05.2017 - 15:14
| Этот элегантный трюк позволяет выиграть три символа. | | |
26
- 21.05.2017 - 16:37
|
110 + x + <некая подфункция (x-29)/2> 7.7 нет под рукой как-то так подумалось Отредактировано qweqwe123123; 21.05.2017 в 16:38. Причина: йцуйцуййй | | |
27
- 21.05.2017 - 16:53
|
что-то в этом роде, проверить не могу y=?(X>28,?(x>62,256,Окр(2,5*(x-29))+110+29,0); | | |
28
- 21.05.2017 - 16:54
|
точнее вот y=?(X>28,?(x>62,256,Окр(2,5*(x-29))+110+X,0); | | |
29
- 21.05.2017 - 17:01
| а, не. в конце чегой-то заколбасилось не туда. | | |
30
- 21.05.2017 - 17:06
| Пиши, мы переведем :) Можешь как Гена в С1 писать :) | | |
31
- 21.05.2017 - 17:13
| вместо 2.5 подставить 2.5345 | | |
32
- 21.05.2017 - 17:24
|
31-Зелёный тролль > вроде правильно считает, щас проверю кавычку одну пропустил закрывающую | | |
33
- 21.05.2017 - 17:38
|
31-Зелёный тролль > Круто! Работает, молодец Итак, Зеленый может угадать Слово с 50-ти букв! 50 букв Раз! ... | | |
34
- 21.05.2017 - 17:44
|
Небольшой недочет с Окр() Надо указывать жестко параметры округления - Окр(ч, 0, 1) а то можно нарваться на ошибку, из за нестандартных настроек пользователя. | | |
35
- 21.05.2017 - 17:51
| Цитата:
если ты так настаиваешь елозь. у=0,0009х^2+3.4519х+38,307 естественно, результат не забыть округлить. по обычным правилам математики | | |
36
- 21.05.2017 - 17:58
|
одно ЕСЛИ все равно остается, тут я пас. ну в общем как-то так: Y=ОКР(МИН(256,?(X>28,0.0009*X*X+3.4519*X+38.307,0) )) | | |
37
- 21.05.2017 - 18:06
|
2.5345 на 2.535 ещё символ сэкономится ))) | | |
38
- 21.05.2017 - 18:07
|
36-Блондинка в шок > да, а то у тебя везде >0 результат и растет без ограничений. Сейчас проверим, что дает квадратное уравнение | | |
39
- 21.05.2017 - 18:07
| 36-Блондинка в шок > ого! :-) | |
| Интернет-форум Краснодарского края и Краснодара |