#0
by Гений 1С
Продолжим, т.к. ветка оказалась слишком длинной: Итак, нужно дать решение или доказать, что не существует решения для следующей задачи. Для любого натурального числа нужно проверить, является ли оно четным, с помощью арифметических операций + - / *. Возможно использовать условия. Запрещены операции преобразования в строку, округления и взятия целой части. При этом нельзя использовать циклы (явные или не явные - рекурсия), число итераций не должно быть пропорционально числу. Пока самый быстрый алгоритм (последовательное деление на 10 и анализ) имеет быстродействие, равное числу разрядов числа. Пока найден способ проверки делимости на 3. Решение задачи нужно в двух вариантах: 1. Когда разрядность вычислителя ограничена (например тогда 1/3*3 <> 1) 2. В чистом арифметическом виде (например тогда 1/3*3 = 1) Еще раз напоминаю, что задача не практическая, а просто головоломка. Автор знает, как проверять числа на четность, это просто логическая встряска мозга.
#1
by Гений 1С
Я вот думаю, может как-то делить на 2, потом умножать на 10, получим целое К. И анализировать К/(К-5)
#5
by SternZ
И Гений 1С - есть в стандарте и 2.5.9.2 - по алиментам и почтовым сборам - четкий процент... Нельзя ли сделать там ГРАМОТНО лесенку - ? Вы сможете - вместо этого обсуждения ?
#6
by SternZ
А если бы такую же ветку о сдельных нарядах ? Не об этом - а как вредность в нарядах, другие тарифы... Не верю, что Вы с этим не сталкивались...
#7
by Темный Эльф
Тебе в 44 посте твоей предыдущей ветки дали доказательство невозможности. Чего тебе еще надо?
#8
by Маркетолог
Процедура КнопкаВыполнитьНажатие(Кнопка) Pi=3.1415926535897932; Если SIN(Pi*НашеЧисло) = SIN(Pi) Тогда Предупреждение("Нечетное"); Иначе Предупреждение("Четное"); КонецЕсли; КонецПроцедуры
#9
by Маркетолог
+ Если Синус = Запрещенная Функция Тогда Сообщить("Пытаться использовать ряд Тейлора"); КонецЕсли;
#11
by Asirius
В из прошлой ветки, как и в из позапрошлой ветки доказательство для случая, когда 1/3*3<>1. Но видимо, автор не знает, что такое дробно-линейная функция, кривая конечного порядка и т.п.
#12
by Дядя Васька
Без тригонометрии всяко никак. Нужно просто представить на графике, как это не число не дели/умножай/в квадрат не возводи, все равно получается ровный график. Либо вообще прямая, либо кривая без скачков. А надо чтобы в зависимости от чет/нечет туда-сюда изменялось. А это явно какая-то синусоидальная.
#18
by Asirius
Доказательство невозможности построения функции для арифметики 1/3*3<>1. Проверка на делимость некого доробно-рационального выражения f(x) на число p равносильна получению некой информации остатка от деления самого x на число p. Т.е., максимум, чего мы сможем добиться, это информацию, что для набора p1, p2, .. pN X имеет остатки при делении на них: o1, o2, o3... oN Но множество таких X, опять-таки бесконечно - среди которых полно четных и нечетных чисел. А далее - как в из пр. ветки
#19
by SternZ
Я заниамаюсь сейчас обновлением 2572 на 2592 - кайф... Поэтому и зверею от вашего обсуждения...
#20
by Дядя Васька
+ Речь в общем-то не об 1С, а том возможно ли вычислить используя только +,-,/,*. Можешь просто на бумажке формулы нарисовать, какая разница..
#24
by Дядя Васька
Ну как теорема Ферма, только для одинэсников :) От той тоже пользы никакой, но если бы все делали только то, что принесет выгоду здесь и сейчас, мы бы до сих пор на пальмах сидели.
#26
by Темный Эльф
Предлагаешь, чтобы 1С-ники не просто так в ОФФ-ах трындели, а еще и электричество вырабатывали?
#27
by Дядя Васька
Даже если не убирать, все равно невозможно. Вроде. Нормального доказательства никто еще не привел.
#28
by Denjs
"фдесятке" ! ))) но.. гм... а вы готовы гарантировать 100% что сумма NN членов ряда "сойдется" с приемлемой точностью для любого целого числа? (или как там математическая терминология.. уже непомню) хотя ход интересный, мне понравился ) можно попробовать и другие функции которые в ряд раскладываются. например степенную - возводить (-1) в степень ряда - тут у нас ситуация попроще - достаточно сравнить с "0" - т.е. проблема точности несколько решается... но вы готовы доказать что просуммировав заданное число членов ряда мы достигнем точности скажем менее 0.5 для _любого_ "аргумента функции"?
#29
by SternZ
И я к этому обычно подхожу так - есть авторы - у одного такой подход - у другого другой :) И почитал бы чуть...
#30
by Темный Эльф
От теоремы Ферма есть польза. Она послужила развитию математики вообще и теории чисел в частности. Что послужило основой для того, чтобы великовозрастные балбесы зарабатывали деньги щелканьем по клавишам...
#32
by Дядя Васька
Не, ну сама по себе она никакой пользы не принесла. Просто в попытках ее решить были открыты новые методы.
#34
by Маркетолог
Доказать ничего не готов, на платформе 1С такие исследования не проводил. Это для более молодых и энергичных. Таких как автор ветки.))) Я лишь указал возможное направление поиска.
#36
by Маркетолог
Степень получаем умножением. Т.к. цикл использовать нельзя))))) То пишем очень длинный блок ИначеЕсли чтобы достичь заданной точности.
#38
by NewNick
>>Автор знает, как проверять числа на четность, Да кто бы сомневался : Функция ПроверитьНаЧетность(НашеЧисло) Результат = Новый Структура("Четное,Нечетное"); Если НашеЧисло = 0 Тогда Результат.Четное = Истина; Результат.Нечетное = Ложь; ИначеЕсли НашеЧисло = 1 Тогда Результат.Четное = Ложь; Результат.Нечетное = Истина; ИначеЕсли НашеЧисло = 2 Тогда Результат.Четное = Истина; Результат.Нечетное = Ложь; ИначеЕсли НашеЧисло = 3 Тогда Результат.Четное = Ложь; Результат.Нечетное = Истина; ИначеЕсли НашеЧисло = 4 Тогда Результат.Четное = Истина; Результат.Нечетное = Ложь; ИначеЕсли НашеЧисло = 5 Тогда Результат.Четное = Ложь; Результат.Нечетное = Истина; ИначеЕсли НашеЧисло = 6 Тогда Результат.Четное = Истина; Результат.Нечетное = Ложь; ИначеЕсли НашеЧисло = 7 Тогда Результат.Четное = Ложь; Результат.Нечетное = Истина; ИначеЕсли НашеЧисло = 8 Тогда Результат.Четное = Истина; Результат.Нечетное = Ложь; ИначеЕсли НашеЧисло = 9 Тогда Результат.Четное = Ложь; Результат.Нечетное = Истина; ..... ИначеЕсли НашеЧисло = 98 Тогда Результат.Четное = Истина; Результат.Нечетное = Ложь; ИначеЕсли НашеЧисло = 99 Тогда Результат.Четное = Ложь; Результат.Нечетное = Истина; КонецЕсли; Возврат Результат; КонецФункции Почерк таланта! (с) Гений1С
#42
by Гений 1С
не переводятся слепцы на земле мистинской.. ты сабж читал? О. Грамотный человек, молодец, Д.Вася! Надо иногда и моск разминать. Асирис, цитирую это доказательство: {{{{ Некоторая формализация задачи: Работаем только с истинно вещественными числами. То есть будем считать, что выражение вычисляется математически точно (машинно естественно не реализуемо). Без циклов означает, что независимо от входного значения будет использовано не более определенного числа итераций (возможно очень большого), ограниченного для всех входящих параметров одновременно. 1. Задача эквивалентна определению, что число целое. Достаточно поделить на 2. И наоборот, если целое, то удвоенное четное. 2. С помощью 4 арифметических операций можно получить дробно-линейные функции. Проверка на условия ><= может выявить знак этой функции (если сравниваем не с 0, то достаточно сделать вычитание этой функции и сравнивать таки с нулем). Эти функции меняют знак конечное число раз! Если условия вложенные, то есть «если то что посчитали>0 тогда посчитать вот это» означает, что на определенном участке знакопостоянства нужно применить другую функцию. 3. В силу конечности итераций разбиений на знакопостоянные куски будет конечное число. Но нам нужно получить множество целых чисел и только его. А оно дискретно и бесконечно: состоит из бесконечного ряда изолированных точек. Противоречие. }}}} Как минимум одна нестыковка - доказательство четности не есть доказательство целости. Т.к. при делении на 2 получается или число заканчивающееся на .0 или на .5, а нецелое число может заканчиватсья на .1, .123, .2342342, то бишь задача сложнее. А ваще я не вкурил это доказательство, может объяснишь для тупого 1сника?
#43
by Гений 1С
А если взять число Х и поделить его на Х/2. 10 / 5 = 2 11 / 6.5 = 1,6923076923076923076923076923077 12 / 6 = 2 17 / 8.5 = 2 (исключение) но уже ближе к истине...
#44
by StormyWind
>> 11 / 6.5 = 1,6923076923076923076923076923077 А это ещё что? о_О Я всегда думал, что 11/2 = 5.5
#46
by Denjs
молодые да задорные не знают что есть такая весчЪ как "мат.ан." потому что тех кто знает - "не берут в космонавты".. тфу.. "в 1С.." в общем в 1С таких практически нет. потому и доказывать теоремы - не в стиле "молодых и задорных из 1С" ну... а (n)! тоже считать большими "еслями"? хотя с другой стороны, если можно будет доказать что мы сможем получит заданную точность для любого числа за заранее известное n членов ряда, то конечно все степенные функции и т.п. можно будет просто "развернуть" как "разворачивают" циклы. вообще думаю это надо рыть где-то в области теорем вида "доказательства сходимости ряда", а это связано с лимитами функций... ух плакала моя высшая математика 12 лет назад....
#47
by Denjs
+ для вообще доказательство данных вещей лежит не в 1С, а в области чистой "вышки". не думаю что из форумчан есть много тех, кто способен это сделать... заметье - пол дня прошло, 4 десятка постов, а о рядах только мы с вами разговариваем )
#48
by kot_bcc
Вы пока о рядах разговариваете - автор ветки попоздноужинать и еще подумать не может:)))) Где деньги, Зин?(с) Готов набросать решение варианта 1. Обещаю массу эстетического удовольствия:)))
#50
by Denjs
но полюбому Гению зачет за тему. )) я кажется начал получать удовольствие.. пока немного )))
#51
by Asirius
Нарисуй прямую линию - это график функции f(x) = x. Далее - каждая итерациа - это некое извращение над нарисованным графиком: * делает из графика прямой - параболу, далее - повышает порядок кривой. / делает из графика прямой - гиперболу, и далее тоже повышает порядок кривой. проверка условия >,= 0 - рвет график в n местах (где n - порядок кривой) +,- константа - сдвигает график и НИ ЕДИНОГО РАЗРЫВА не добавляет! А тебе по итогу надо получить бесконечное количество разрывов или кривую бесконечного порядка (например, синусоиду)- т.к. есть явная периодичность.
#52
by NewNick
неплохое доказательство того что нельзя определить является ли бесконечность четным или нечетным числом. а по сути топика задача аналогична получения из числа двоичной записи. порядок операций натуральный логарифм. думаю что возможно доказать что меньшим порядком обойтись нельзя.
#54
by Дядя Васька
Ты не понял, числа должны числами остаться, в строки преобразовать любой дурак может...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Как проверить скопирован ли документ?
- V8: Нет аналога 7.7 ПустоеЗначение(). Как грамотно проверить, пустое или нет?
- Как проверить значение перечисления в запросе?
- Не удалось проверить целостность app-sentx, код возврата -1073741819
- проверить товар на вхождение в список
- Как узнать - Четное число или нет?
- Можно ли в 1С проверить, четное чиСло или нет без Цел и циклов?
- Можно ли в 1С проверить, четное чиСло или нет без Цел и циклов?
- как узнать - четное число или нет?
- Как проверить имеет ли переменная тип - число или нет? в 1С 8.2
- Как в запросе проверить целое число или дробное?
В этой группе 1С
- Из обработки 1С в Excel файл добавить макрос
- v7: Программно изменить дату операции
- КД2 перенос операций и субконто.
- Обход результата запроса и вывод итоговых сумм.
- Как из объектМетаданных получить ссылку на объект:
- Сверка объектов баз данных
- Невосстановимая ошибка Базы Данных Код: -4
- Отчет "Анализ заказов поставщику" в УТ 8.1
- Компьютеры поразил уникальный вирус (интересно как они цифровую подпись поделали)
- В подборе выбрана единица другого элемента справочника Номенклатура
- Выгрузка из 1С 8.0 файла в формате csv
- Как отобразить ИНН в Оборотно-сальдовой ведомости по счету
- 1С + ECOD
- Как изменить размер шрифта в стандартном макете СКД?
- как проверить существование файла на ftp 1с 7.7
- Как считаете на 1С Битрикс стоит разрабатывать сайт?
- Как создать периодическую константу в 1С8
- Руководство к УАТ 2 для весьмерки
- Перемещение товаров УТ 10.3
- Проверка в запросе на наличие субконто