Можно ли в 1С проверить, четное чиСло или нет без Цел и циклов? #352223


#0 by Гений 1С
Продолжим, т.к. ветка оказалась слишком длинной: Итак, нужно дать решение или доказать, что не существует решения для следующей задачи. Для любого натурального числа нужно проверить, является ли оно четным, с помощью арифметических операций + - / *. Возможно использовать условия. Запрещены операции преобразования в строку, округления и взятия целой части. При этом нельзя использовать циклы (явные или не явные - рекурсия), число итераций не должно быть пропорционально числу. Пока самый быстрый алгоритм (последовательное деление на 10 и анализ) имеет быстродействие, равное числу разрядов числа. Пока найден способ проверки делимости на 3. Решение задачи нужно в двух вариантах: 1. Когда разрядность вычислителя ограничена (например тогда 1/3*3 <> 1) 2. В чистом арифметическом виде (например тогда 1/3*3 = 1) Еще раз напоминаю, что задача не практическая, а просто головоломка. Автор знает, как проверять числа на четность, это просто логическая встряска мозга.
#1 by Гений 1С
Я вот думаю, может как-то делить на 2, потом умножать на 10, получим целое К. И анализировать К/(К-5)
#2 by vlsv
Перевести в строку и проанализировать окончание, четное или нет :)
#3 by Господин ПЖ
>>Автор знает, как проверять числа на четность это под вопросом...
#4 by SternZ
Давайте лучше числа Фибоначчи генерить - 1С и для этого как раз...
#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 Маркетолог
+ Если Синус = Запрещенная Функция Тогда          Сообщить("Пытаться использовать ряд Тейлора");      КонецЕсли;
#10 by SternZ
Если 1С - это религмя ... я - пас
#11 by Asirius
В из прошлой ветки, как и в из позапрошлой ветки доказательство для случая, когда 1/3*3<>1. Но видимо, автор не знает, что такое дробно-линейная функция, кривая конечного порядка и т.п.
#12 by Дядя Васька
Без тригонометрии всяко никак. Нужно просто представить на графике, как это не число не дели/умножай/в квадрат не возводи, все равно получается ровный график. Либо вообще прямая, либо кривая без скачков. А надо чтобы в зависимости от чет/нечет туда-сюда изменялось. А это явно какая-то синусоидальная.
#13 by Дядя Васька
как это не число не дели = как это число не дели
#14 by Дядя Васька
Да причем тут 1С... Задача чисто математическая.
#15 by SternZ
Вы серьезно ? Для четности числа ? И зачем для этого все это ?
#16 by SternZ
Неужели - а средствами 1С :) ? А средствами с++ - сальдо :) ?
#17 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С, а том возможно ли вычислить используя только +,-,/,*. Можешь просто на бумажке формулы нарисовать, какая разница..
#21 by Дядя Васька
А ты предлагаешь всем взять по лопате и в ОФФ'е обсуждать как сделать лестницу?
#22 by SternZ
Хе... И кому от этого будет польза ?
#23 by SternZ
А на фига ?
#24 by Дядя Васька
Ну как теорема Ферма, только для одинэсников :) От той тоже пользы никакой, но если бы все делали только то, что принесет выгоду здесь и сейчас, мы бы до сих пор на пальмах сидели.
#25 by SternZ
Я завтра встану утром и скажу - давайте уберем деленье
#26 by Темный Эльф
Предлагаешь, чтобы 1С-ники не просто так в ОФФ-ах трындели, а еще и электричество вырабатывали?
#27 by Дядя Васька
Даже если не убирать, все равно невозможно. Вроде. Нормального доказательства никто еще не привел.
#28 by Denjs
"фдесятке" ! ))) но..  гм... а вы готовы гарантировать 100% что сумма NN членов ряда "сойдется" с приемлемой точностью для любого целого числа? (или как там математическая терминология.. уже непомню) хотя ход интересный, мне понравился ) можно попробовать и другие функции которые в ряд раскладываются. например степенную - возводить (-1) в степень ряда - тут у нас ситуация попроще - достаточно сравнить с "0" -  т.е. проблема точности несколько решается... но вы готовы доказать что просуммировав заданное число членов ряда мы достигнем точности скажем менее 0.5 для _любого_ "аргумента функции"?
#29 by SternZ
И я к этому обычно подхожу так - есть авторы - у одного такой подход - у другого другой :) И почитал бы чуть...
#30 by Темный Эльф
От теоремы Ферма есть польза. Она послужила развитию математики вообще и теории чисел в частности. Что послужило основой для того, чтобы великовозрастные балбесы зарабатывали деньги щелканьем по клавишам...
#31 by Denjs
хотя вру. ряд тейлора - степенная функция, а степени низя использовать )
#32 by Дядя Васька
Не, ну сама по себе она никакой пользы не принесла. Просто в попытках ее решить были открыты новые методы.
#33 by SternZ
Ладно, Гений 1С, съезжу в Inet. что там говорят :)
#34 by Маркетолог
Доказать ничего не готов, на платформе 1С такие исследования не проводил.     Это для более молодых и энергичных. Таких как автор ветки.)))     Я лишь указал возможное направление поиска.
#35 by SternZ
ну, нет... Это сильнее , чем секс :) Где разум так побеждает :)
#36 by Маркетолог
Степень получаем умножением.     Т.к. цикл использовать нельзя)))))     То пишем очень длинный блок ИначеЕсли чтобы достичь заданной точности.
#37 by kot_bcc
Вот это уже похоже на задачу. Сколько за п.1? За п.2 уже не спрашиваю, ибо , .
#38 by NewNick
>>Автор знает, как проверять числа на четность, Да кто бы сомневался : Функция ПроверитьНаЧетность(НашеЧисло)    Результат = Новый Структура("Четное,Нечетное");        Если НашеЧисло = 0 Тогда        Результат.Четное = Истина;        Результат.Нечетное = Ложь;    ИначеЕсли НашеЧисло = 1 Тогда        Результат.Четное = Ложь;        Результат.Нечетное = Истина;    ИначеЕсли НашеЧисло = 2 Тогда        Результат.Четное = Истина;        Результат.Нечетное = Ложь;    ИначеЕсли НашеЧисло = 3 Тогда        Результат.Четное = Ложь;        Результат.Нечетное = Истина;    ИначеЕсли НашеЧисло = 4 Тогда        Результат.Четное = Истина;        Результат.Нечетное = Ложь;    ИначеЕсли НашеЧисло = 5 Тогда        Результат.Четное = Ложь;        Результат.Нечетное = Истина;    ИначеЕсли НашеЧисло = 6 Тогда        Результат.Четное = Истина;        Результат.Нечетное = Ложь;    ИначеЕсли НашеЧисло = 7 Тогда        Результат.Четное = Ложь;        Результат.Нечетное = Истина;    ИначеЕсли НашеЧисло = 8 Тогда        Результат.Четное = Истина;        Результат.Нечетное = Ложь;    ИначеЕсли НашеЧисло = 9 Тогда        Результат.Четное = Ложь;        Результат.Нечетное = Истина;        .....    ИначеЕсли НашеЧисло = 98 Тогда        Результат.Четное = Истина;        Результат.Нечетное = Ложь;    ИначеЕсли НашеЧисло = 99 Тогда        Результат.Четное = Ложь;        Результат.Нечетное = Истина;    КонецЕсли;    Возврат Результат; КонецФункции Почерк таланта! (с) Гений1С
#39 by kot_bcc
+ Да и я по п.2 в прошлой ветке уже намекал на p, q, и на Боба с Алисой...
#40 by Господин ПЖ
долби, сирожа, долби... не слушай никого...
#41 by kot_bcc
Так как там насчет суммы за вариант 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
#45 by Дядя Васька
11/2 = 5,5, 11/5,5=2 в школу! срочно в школу!!
#46 by Denjs
молодые да задорные не знают что есть такая весчЪ как "мат.ан." потому что тех кто знает - "не берут в космонавты".. тфу.. "в 1С.." в общем в 1С таких практически нет. потому и доказывать теоремы - не в стиле "молодых и задорных из 1С" ну... а (n)! тоже считать большими "еслями"? хотя с другой стороны, если можно будет доказать что мы сможем получит заданную точность для любого числа за заранее известное n членов ряда, то конечно все степенные функции и т.п. можно будет просто "развернуть" как "разворачивают" циклы. вообще думаю это надо рыть где-то в области теорем вида "доказательства сходимости ряда", а это связано с лимитами функций... ух плакала моя высшая математика 12 лет назад....
#47 by Denjs
+ для вообще доказательство данных вещей лежит не в 1С, а в области чистой "вышки". не думаю что из форумчан есть много тех, кто способен это сделать... заметье - пол дня прошло, 4 десятка постов, а о рядах только мы с вами разговариваем )
#48 by kot_bcc
Вы пока о рядах разговариваете - автор ветки попоздноужинать и еще подумать не может:)))) Где деньги, Зин?(с) Готов набросать решение варианта 1. Обещаю массу эстетического удовольствия:)))
#49 by kot_bcc
+ Упс - (с) ВВС:))))
#50 by Denjs
но полюбому Гению зачет за тему. )) я кажется начал получать удовольствие.. пока немного )))
#51 by Asirius
Нарисуй прямую линию - это график функции f(x) = x. Далее - каждая итерациа - это некое извращение над нарисованным графиком: * делает из графика прямой - параболу, далее - повышает порядок кривой. / делает из графика прямой - гиперболу, и далее тоже повышает порядок кривой. проверка условия >,= 0 - рвет график в n местах (где n - порядок кривой) +,- константа - сдвигает график и НИ ЕДИНОГО РАЗРЫВА не добавляет! А тебе по итогу надо получить бесконечное количество разрывов или кривую бесконечного порядка (например, синусоиду)- т.к. есть явная периодичность.
#52 by NewNick
неплохое доказательство того что нельзя определить является ли бесконечность четным или нечетным числом. а по сути топика задача аналогична получения из числа двоичной записи. порядок операций натуральный логарифм. думаю что возможно доказать что меньшим порядком обойтись нельзя.
#53 by kosts
Из серии "О боже и это работает"... Возврат СтрДлина(а/2) < СтрДлина((а+1)/2)
#54 by Дядя Васька
Ты не понял, числа должны числами остаться, в строки преобразовать любой дурак может...
#55 by kosts
Мне все понятно, это для разнообразия...
#56 by Гений 1С
У мужиков когда для разнообразия, называется б...во.
#57 by SternZ
По-моему, эта ветка это слово и есть - простите уж :)
#58 by Гений 1С
Ты просто не понял ее смысл!
#59 by ildus
пля, забанить надо Г..1с пожизненно, ибо это неизлечимо
#60 by Denjs
>>Г..1с о как) "Г-н ПЖ" есть. Теперь пудет "Г-н 1С"
#61 by SternZ
Вашу бы энергию да в мирных целях... Но - энтузязизм впечатляет...
#62 by SternZ
Это на 58
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С