![]() |
|
OFF: Нейронка на 1С | ☑ | ||
---|---|---|---|---|
0
maxab72
16.05.25
✎
11:03
|
Код нейронки на 1СПроцедура глНачальноеЗаполнениеСлоевИУзлов() Экспорт НаборЗаписей = РегистрыСведений.Расчет.СоздатьНаборЗаписей(); НаборЗаписей.Записать(ИСТИНА); Выборка = Справочники.Узлы.Выбрать(); Пока Выборка.Следующий() Цикл текСпрО = Выборка.ПолучитьОбъект(); текСпрО.ПометкаУдаления = Истина; текСпрО.Записать(); КонецЦикла; Помеченные = НайтиПомеченныеНаУдаление(); Найденные = Неопределено; УдалитьОбъекты(Помеченные, Ложь, Найденные); Для каждого Ссылка из Найденные Цикл СтрСообщения = "Объект не удален: " + СокрЛП(Ссылка[0]); СтрСсылка = ", используется в " + СокрЛП(Ссылка[1]); Сообщить (СтрСообщения + СтрСсылка); КонецЦикла; ВсегоСлоев = Константы.Слоев.Получить(); УзловВСлое = Константы.УзловВСлое.Получить(); // Входящие узлы 0-слоя НоваяГруппа = Справочники.Узлы.СоздатьГруппу(); НоваяГруппа.Наименование = "Слой 000"; НоваяГруппа.Записать(); Группа = НоваяГруппа.Ссылка; СпсУзловПредыдущегоСлоя = Новый СписокЗначений; Для счУзлов = 1 По УзловВСлое Цикл НовыйУзел = Справочники.Узлы.СоздатьЭлемент(); НовыйУзел.Родитель = Группа; НовыйУзел.Наименование = "Узел 000." + Прав("000" + Строка(счУзлов), 3); НовыйУзел.Слой = 0; НовыйУзел.НомерВСлое = счУзлов; НовыйУзел.Записать(); СпсУзловПредыдущегоСлоя.Добавить(НовыйУзел.Ссылка); КонецЦикла; // Узлы по слоям расчета СпсУзловНовогоСлоя = Новый СписокЗначений; Для счСлоев = 1 По ВсегоСлоев Цикл НоваяГруппа = Справочники.Узлы.СоздатьГруппу(); НоваяГруппа.Наименование = "Слой " + Прав("000" + Строка(счСлоев), 3); НоваяГруппа.Записать(); Группа = НоваяГруппа.Ссылка; СпсУзловНовогоСлоя.Очистить(); Для счУзлов = 1 По УзловВСлое Цикл НовыйУзел = Справочники.Узлы.СоздатьЭлемент(); НовыйУзел.Родитель = Группа; НовыйУзел.Наименование = "Узел " + Прав("000" + Строка(счСлоев), 3) + "." + Прав("000" + Строка(счУзлов), 3); НовыйУзел.Слой = счСлоев; НовыйУзел.НомерВСлое = счУзлов; Для каждого ЭлСпс Из СпсУзловПредыдущегоСлоя Цикл стрВес = НовыйУзел.Веса.Добавить(); стрВес.Узел = ЭлСпс.Значение; стрВес.Вес = 1; КонецЦикла; НовыйУзел.Записать(); СпсУзловНовогоСлоя.Добавить(НовыйУзел.Ссылка); КонецЦикла; СпсУзловПредыдущегоСлоя.Очистить(); Для каждого ЭлСпс Из СпсУзловНовогоСлоя Цикл СпсУзловПредыдущегоСлоя.Добавить(ЭлСпс.Значение); КонецЦикла; КонецЦикла; // Узел результата НовыйУзел = Справочники.Узлы.СоздатьЭлемент(); НовыйУзел.Родитель = Группа; НовыйУзел.Наименование = "Узел результата"; НовыйУзел.Слой = ВсегоСлоев + 1; НовыйУзел.НомерВСлое = 1; Для каждого ЭлСпс Из СпсУзловПредыдущегоСлоя Цикл стрВес = НовыйУзел.Веса.Добавить(); стрВес.Узел = ЭлСпс.Значение; стрВес.Вес = 1; КонецЦикла; НовыйУзел.Записать(); КонецПроцедуры Функция локПреобразоватьИзЧислаВДвоичноеЧисло(Знач Значение) Результат=""; Пока Значение > 0 цикл Остаток = Значение % 2; Результат1 = Сред("01", Остаток+1, 1); Значение = (Значение - Остаток) / 2; Результат = Результат1 + Результат; КонецЦикла; Возврат Результат; КонецФункции Функция локОбработатьВход(ВходящееЧисло = 0) СписокЗначенийВходящий = Новый СписокЗначений; ЧислоДвоичноеСтрокой = локПреобразоватьИзЧислаВДвоичноеЧисло(ВходящееЧисло); УзловВСлое = Константы.УзловВСлое.Получить(); ПервыеНули = "0"; Для ЧЦ = 1 По УзловВСлое Цикл ПервыеНули = ПервыеНули + "0"; КонецЦикла; ЧислоДвоичноеСтрокой = Прав(ПервыеНули + ЧислоДвоичноеСтрокой, УзловВСлое); ДлинаДвоичногоЧисла = СтрДлина(ЧислоДвоичноеСтрокой); Для ЧЦ = 1 По УзловВСлое Цикл СписокЗначенийВходящий.Добавить(Сред(ЧислоДвоичноеСтрокой, ЧЦ, 1)); КонецЦикла; Возврат СписокЗначенийВходящий; КонецФункции Функция локНайтиУзелПоСлоюИНомеру(Слой, Номер) Ответ = Справочники.Узлы.ПустаяСсылка(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Узлы.Ссылка КАК Ссылка |ИЗ | Справочник.Узлы КАК Узлы |ГДЕ | Узлы.Слой = &Слой | И Узлы.НомерВСлое = &Номер | И Узлы.ПометкаУдаления = ЛОЖЬ | И Узлы.ЭтоГруппа = ЛОЖЬ"; Запрос.УстановитьПараметр("Слой", Слой); Запрос.УстановитьПараметр("Номер", Номер); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Ответ = Выборка.Ссылка; КонецЕсли; Возврат Ответ; КонецФункции Функция глРасчетУзла(Узел) Экспорт Ответ = Ложь; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | УзлыВеса.Узел КАК Узел, | УзлыВеса.Вес * ЕСТЬNULL(Расчет.Значение, 0) КАК Значение |ПОМЕСТИТЬ ТЗУзлы |ИЗ | Справочник.Узлы.Веса КАК УзлыВеса | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Расчет КАК Расчет | ПО УзлыВеса.Узел = Расчет.Узел |ГДЕ | УзлыВеса.Ссылка = &Узел |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТЗУзлы.Узел) КАК КоличествоВходов |ПОМЕСТИТЬ ТЗКоличествоВходов |ИЗ | ТЗУзлы КАК ТЗУзлы |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | СУММА(ТЗУзлы.Значение) КАК СуммаВходов |ПОМЕСТИТЬ ТЗСуммаВходов |ИЗ | ТЗУзлы КАК ТЗУзлы |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВЫБОР КОГДА ТЗСуммаВходов.СуммаВходов >= ТЗКоличествоВходов.КоличествоВходов ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК Результат |ИЗ | ТЗКоличествоВходов КАК ТЗКоличествоВходов, | ТЗСуммаВходов КАК ТЗСуммаВходов"; Запрос.УстановитьПараметр("Узел", Узел); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Ответ = Выборка.Результат; КонецЕсли; Возврат Ответ; КонецФункции // глРасчетУзла() Функция глПроизвестиРасчет(ВходящееЧисло = 0) Экспорт Ответ = 0; СписокВходящий = локОбработатьВход(ВходящееЧисло); ВсегоСлоев = Константы.Слоев.Получить(); УзловВСлое = Константы.УзловВСлое.Получить(); // Заполняем входящий нулевой слой Для счУзлов = 1 По УзловВСлое Цикл текУзел = локНайтиУзелПоСлоюИНомеру(0, счУзлов); текЗначение = ?(СписокВходящий.Получить(счУзлов - 1) = "1", 1, 0); НаборЗаписей = РегистрыСведений.Расчет.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Узел.Установить(текУзел); НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Активность = Истина; НоваяЗапись.Узел = текУзел; НоваяЗапись.Значение = текЗначение; НаборЗаписей.Записать(Истина); КонецЦикла; // Включаем думатель Для счСлоев = 1 По ВсегоСлоев Цикл Для счУзлов = 1 По УзловВСлое Цикл текУзел = локНайтиУзелПоСлоюИНомеру(счСлоев, счУзлов); текЗначение = глРасчетУзла(текУзел); НаборЗаписей = РегистрыСведений.Расчет.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Узел.Установить(текУзел); НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Активность = Истина; НоваяЗапись.Узел = текУзел; НоваяЗапись.Значение = текЗначение; НаборЗаписей.Записать(Истина); КонецЦикла; КонецЦикла; // Запускаем анализатор текУзел = локНайтиУзелПоСлоюИНомеру(ВсегоСлоев + 1, 1); текЗначение = глРасчетУзла(текУзел); Ответ = текЗначение; Возврат Ответ; КонецФункции Процедура глОбучение(Ответ, ПравильныйОтвет) Экспорт ВсегоСлоев = Константы.Слоев.Получить(); СуммаСлоев = ВсегоСлоев * (ВсегоСлоев + 1) / 2; // Выбираем исправляемые узлы Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Расчет.Узел КАК Узел |ИЗ | РегистрСведений.Расчет КАК Расчет |ГДЕ | Расчет.Значение = &Ответ"; Запрос.УстановитьПараметр("Ответ", Ответ); Выборка = Запрос.Выполнить().Выбрать(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Расчет.Значение КАК Значение |ИЗ | РегистрСведений.Расчет КАК Расчет |ГДЕ | Расчет.Узел = &Узел"; Пока Выборка.Следующий() Цикл текУзел = Выборка.Узел.ПолучитьОбъект(); Если текУзел.Слой = 0 ИЛИ текУзел.Слой > ВсегоСлоев Тогда Продолжить; КонецЕсли; Для каждого стрВеса Из текУзел.Веса Цикл текУзелВход = стрВеса.Узел; текРезультат = 0; Запрос.УстановитьПараметр("Узел", текУзелВход); ВыборкаРезультат = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда текРезультат = Выборка.Значение; КонецЕсли; Если текРезультат = Ответ Тогда текДельта = ?(Ответ = ПравильныйОтвет, 1, -1) * текУзел.Слой / СуммаСлоев; стрВеса.Вес = стрВеса.Вес + текДельта; КонецЕсли; КонецЦикла; текУзел.Записать(); КонецЦикла; КонецПроцедуры Уже умеет отличать четные числа от нечетных. Если маленько допилить рашпилем, сможет управлять миром. |
|||
1
PLUT
16.05.25
✎
10:59
|
а следующее простое число умеет искать?
|
|||
2
maxab72
16.05.25
✎
11:03
|
(1) не учил. Отличать простое от не простого может, но пока с ошибками, мало учил.
и надо переделать анализатор, чтоб выдавал не просто да/нет, а число (увеличить число узлов с 1 до N в этом слое). |
|||
3
PLUT
16.05.25
✎
11:04
|
Наибольшим известным простым числом по состоянию на 2024 год является число Мерсенна 2136 279 841 − 1
© википедики |
|||
4
PLUT
16.05.25
✎
11:04
|
(3) ну вот как следующее найти, а х. его знает
|
|||
5
maxab72
16.05.25
✎
11:06
|
(4) совсем не сложно, берешь карандаш и лист бумаги и проверяешь все последующие число на делимость...
|
|||
6
PLUT
16.05.25
✎
11:14
|
(5) особенно если не собираешься это делать сам :)
|
|||
7
Злопчинский
16.05.25
✎
12:15
|
(5) хрен ли тут искать?
1 - простое, +2 =3 - простое, +2 = 5 - простое... методом индукции - к предыдущему простому добавляем +2 - получаем следующее простое. проверяем: 5 - простое, +2 = 7 - простое. Вуаля! |
|||
8
maxab72
16.05.25
✎
12:17
|
(7) пропустил 2 - оно тоже простое. то есть надо прибавлять не по 2, а по 1.
|
|||
9
PLUT
16.05.25
✎
12:20
|
а есть еще треугольные числа
Любое натуральное число представимо в виде суммы не более трёх треугольных чисел © Гаусс какой-то в 1796 году |
|||
10
Злопчинский
16.05.25
✎
12:21
|
(8)
|
|||
11
Злопчинский
16.05.25
✎
12:23
|
(9) вот они
|
|||
12
PLUT
16.05.25
✎
12:58
|
(7)
Число 1 — не является ни простым, ни составным числом, так как у него только один делитель — 1. Именно этим оно отличается от всех остальных натуральных чисел. Число 2 — первое наименьшее простое, единственное четное, простое число © тырнет |
|||
13
PR
16.05.25
✎
14:03
|
(7) Ну да, 7 + 2 = 9 тоже простое
Знаменитые простые числа Злопчинского |
|||
14
Garykom
гуру
16.05.25
✎
14:27
|
Интересно а существует ли формула/уравнение для простых чисел?
Чисто теоретически в виде кривой их можно представить, нечто вроде странной "синусоиды" |
|||
15
PLUT
16.05.25
✎
14:37
|
(14) школу прогуливал наверное?
много умов поломалось с поиском "формулы/функции" нахождения следующего простого числа... множество простых чисел бесконечно! © Евклид какой-то |
|||
16
Garykom
гуру
16.05.25
✎
14:43
|
(15) Если ты не понял сути то вероятно прогуливал не я
wiki:Синусоида тоже бесконечно пересекает ось абцисс для простых чисел чем дальше в стороны тем реже пересечения надо, волны разбегаются понятно речь о некой функции, которая приближенно отражает простые числа или на заданном интервале |
|||
17
PLUT
16.05.25
✎
14:45
|
(16) приближенно это как?
дроби не просто так существуют :) |
|||
18
PLUT
16.05.25
✎
14:47
|
вот тут про закономерности первая попавшаяся
https://habr.com/ru/articles/535124/ Риман какой-то формулу приближенную вывел Риман получил приближение, используя интегральный логарифм и нетривиальные нули дзета-функции Римана. Однако, это приближение верно, только если верна гипотеза Римана. Причём если гипотеза Римана верна, то оно является наилучшим. Гипотеза Римана до сих пор не доказана и не опровергнута ©пижжено оттуда |
|||
19
maxab72
16.05.25
✎
14:48
|
(16) гуглите дзета-функцию Римана.
|
|||
20
Garykom
гуру
16.05.25
✎
14:51
|
(18) (19) ага интересно
Также были выдвинуты гипотезы о возможной связи статистических свойств нетривиальных нулей дзета-функции Римана (а значит — и простых чисел) с явлениями квантовой физики, в частности — с квантовым хаосом |
|||
21
PR
16.05.25
✎
14:54
|
(14) Нет
|
|||
22
Garykom
гуру
16.05.25
✎
14:59
|
(21)
В 1735 году была установлена связь между простыми числами и π, когда Леонард Эйлер решил знаменитую Базельскую проблему
т.е. теоретически через Пи можно практически пока не придумали и не факт что придумают простую даже если придумают будет зависеть от точности некоего расчета |
|||
23
PLUT
16.05.25
✎
15:05
|
(22) криптоёптаграфия на простых числах построена
что произведение двух простых чисел (больших) известно, а вот результат этого произведения двух простых чисел обратно на два простых множителя разложить - а вот х.й вся надежда на квантовые компуктеры, когда много кубитов будет и скорость параллельных вычислений (ссуть перебор) будет огромной. может быть тогда... |
|||
24
Злопчинский
16.05.25
✎
16:14
|
(13) конечно 9 - простое. Или оно вызывает у вас сложности? ;-)
|
|||
25
Волшебник
16.05.25
✎
16:26
|
>> умеет отличать четные числа от нечетных
Функция Четное(а) Возврат а % 2 = 0; КонецФункции |
|||
26
PLUT
16.05.25
✎
16:28
|
все простые числа нечётные, кроме одного числа
|
|||
27
Fish
гуру
16.05.25
✎
16:30
|
(26) Но далеко не все нечетные числа - простые.
|
|||
28
PLUT
16.05.25
✎
16:31
|
(27) все лохлы - тридварасы, но не все тридварасы - лохлы :)
|
|||
29
maxab72
16.05.25
✎
16:32
|
(25) зато она это делает интеллектуально!
|
|||
30
hunter76
16.05.25
✎
16:35
|
(24) 9 делится на себя, на 1 и на 3
|
|||
31
Волшебник
16.05.25
✎
16:36
|
(29) зато она это делает неточно. Кому нужна нейронка, которая может ошибиться на простой вопрос?
|
|||
32
maxab72
16.05.25
✎
16:39
|
(31) зато со своей нечеткой логикой она (теоретически) может ответить на главный вопрос жизни, вселенной и всего такого.
|
|||
33
Fish
гуру
16.05.25
✎
16:41
|
(31) Человек тоже может ошибиться при ответе на простой вопрос. Кому нужны человеки?
|
|||
34
PLUT
16.05.25
✎
16:43
|
(33) врать нельзя, ошибиться можно
© цытаты великих |
|||
35
Fish
гуру
16.05.25
✎
16:46
|
(34) Кстати, как раз врать нейронки не умеют. Они всегда честны, даже когда несут полную чушь :))
|
|||
36
Krendel
16.05.25
✎
17:14
|
(35) квина, дипсик умеют, грок скорее всего уже тоже
|
|||
37
Timon1405
16.05.25
✎
18:52
|
(14) многочлен Матиясевича wiki:Простое_число
|
|||
38
maxab72
16.05.25
✎
20:03
|
(25) я переучил свою нейронку на умение отличать числа, имеющие в начале цифру 3 от остальных. Теперь переучите без кодирования свою функцию!
|
|||
39
Волшебник
16.05.25
✎
20:18
|
(38) Когда мне запрещают программировать, моя рука тянется к пистолету...
|
|||
40
maxab72
16.05.25
✎
20:22
|
(39) моя нейронка запомнила этот пост...
|
|||
41
Волшебник
16.05.25
✎
20:41
|
(40)
![]() |
|||
42
VS-1976
17.05.25
✎
15:18
|
(25) Ретроград...
А как же стильно, модно, молодёжно... |
|||
43
Волшебник
17.05.25
✎
18:06
|
(42) Можно и микроскопом гвозди забивать
|
|||
44
stix2010
19.05.25
✎
10:36
|
(0) Что еще нужно для запуска Skynet? Управление терминатором написано?
|
|||
45
Волшебник
19.05.25
✎
11:11
|
(44) Китайская компания ADA Space совместно с Чжэцзянской лабораторией (Zhejiang Lab), предполагает отказ от традиционных спутников связи и дистанционного зондирования в пользу принципиально нового класса орбитальных платформ — космических суперкомпьютеров с искусственным интеллектом.
https://habr.com/ru/companies/cloud4y/news/910572/ А вот и Скайнет... |
|||
46
1Снеговик
гуру
19.05.25
✎
11:35
|
(45) нафига компьютеры в космос запускать?
Они как раз будут целое здание занимать и питаться от АЭС. А обслуживать их как? В Космосе должны быть только датчики/оптика и средства связи. |
|||
47
Прохожий
19.05.25
✎
11:37
|
Остается главный вопрос - что грандиознее. Нейронка на 1С или шахматы от NS.
|
|||
48
Волшебник
19.05.25
✎
11:38
|
(46) В космосе хорошее охлаждение, бесплатное питание от солнечных панелей, недосягаемость для человеков с дубинками, широкий обзор поверхности.
|
|||
49
PLUT
19.05.25
✎
11:44
|
(48) в космосе хреновое охлаждение
вот тут про станцию Мир и как она перегревалась, хотя казалось бы - "минус" за бортом некислый https://habr.com/ru/companies/timeweb/articles/662457/ |
|||
50
maxab72
19.05.25
✎
12:15
|
(48) нет конвекционной передачи тепла, только излучением. хреновое охлаждение там. Это все равно что засунуть процессор в термос.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |