Идеальные квадраты и комплексные числа

Публикация № 320848

Разработка - Практика программирования

Идеальные квадраты комплексные числа

В статье показано, как реализовать в 1С операции с комплексными числами, и приведен пример решения задачи на поиск идеальных квадратов.
 Трудно предположить, что когда-нибудь в бухгалтерском учете понадобятся действия с мнимой единицей. Тем не менее, ничто не мешает нам с помощью средств встроенного языка реализовать операции с комплексными числами.
 Хранить число мы будем в двумерном массиве, в одной ячейке - вещественную часть, в другой - мнимую. Вот и первая функция, которая применяется для создания числа указанного вида.
Function zNumber(Re,Im) Export
   arr=new array();
   arr.Add(Re);
   arr.Add(Im);
   
   return arr;
EndFunction  
В качестве аргументов мы передаем значения вещественной и мнимой части и функция возвращает нам заполненный массив. Теперь реализуем умножение комплексных чисел.
Function zMult(a,b) Export
   arr=new array();
   arr.Add(a[0]*b[0]-a[1]*b[1]);
   arr.Add(a[0]*b[1]+a[1]*b[0]);
   
   return arr;
EndFunction   

Аргументы функции - два комплексных числа, возвращаемое значение двумерный массив. Следующая функция позволяет возвести комплексное число в целую степень. 

Function zPower(z,p) Export
   
   if p=0 then
      arr=new array;
      arr.Add(1);
      arr.Add(0);
      return arr;
   endif;   
   
   if p=1 then
      return z;
   endif;   
   
   if (p%2)=0 then
      t=zPower(z,p/2);
      return zMult(t,t);
   endif;   
   
   return zMult(zPower(z,p-1),z);
EndFunction   

В приведенном коде мы пытаемся сократить требуемое количество операций умножения, заменяя четные степени возведением в квадрат. А вот еще одна элементарная функция, которая возвращает число сопряженное данному.

Function zConjugate(z) Export
   arr=new array();
   arr.Add(z[0]);
   arr.Add(-z[1]);
   
   return arr;
EndFunction   
 Теперь с помощью этого небольшого набора решим задачу нахождения представления числа в виде суммы квадратов.
Вспомним, что согласно основной теореме арифметики любое число можно выразить в виде произведения степеней простых чисел. Представление для простого числа состоит из самого простого числа. Пример простых чисел - 2,3,5,7,11,13... А вот число 65 - составное и оно равно произведению 5 и 13. Оказывается, что греческий математик Диофант, живший в III веке нашей эры, знал, что 65 это минимальное натуральное число, которое можно представить в виде суммы квадратов двумя различными способами
  1. 65=1*1+8*8
  2. 65=4*4+7*7 
Впрочем, греки знали пифагоровы тройки и подобные наблюдения вполне ожидаемы. Интереснее другое, Диофант объяснял подобное свойство числа 65 тем, что оно есть произведение двух чисел и 13, которые в свою очередь, тоже можно выразить как сумму квадратов.Оказывается, среди простых чисел в виде суммы квадратов можно записать только числа вида 4*k+1. В частности:
  • 5 =1*1+2*2
  • 13=2*2+3*3 
Настал момент вспомнить про комплексные числа. Если число можно записать как сумму квадратов, то оно раскладывается на комплексные множители, так 5=(2+i)(2-i), a 13=(3+2i)(3-2i). Группируя комплексные множители в разложении числа 65 различными способами, мы получим два разложения на сумму квадратов. А как нам перебрать все возможные комбинации ? Предлагается следующее решение. Если в разложение входит степень двойки, то она заменяется степенью комплексного числа(1+i), если в разложение входят степени простых чисел вида 4*k+3, то эти степени объединяются в одно число Q, которое записывается в виде (Q+0*i), если в разложение входит степень простого числа вида Z=4*k+1, то оно заменяется массивом комплексных чисел (Z**i)*(Zсопряженное**(p-i)), где i меняется от 0 до p (p - степень данного простого числа в разложении)..
Приведем код функций, которые нам понадобятся для приведенного алгоритма.
Function zGenerateVar(z,p) Export
    arr=new array;
    
    zCon=zConjugate(z);
    arr.Add(zPower(z,p));
    for i=1 to (p-1) do
       arr.Add(zMult(zPower(z,i),zPower(zCon,p-i)));
    enddo;    
    arr.Add(zPower(zCon,p));    
   
    return arr;
EndFunction   

Функция РазложитьНаПростыеМножители(вхЧисло,ПростыеЧисла)
   тЧисло=новый ОписаниеТипов("Число",,,новый КвалификаторыЧисла(19,0));
   разложение=новый ТаблицаЗначений;
   разложение.Колонки.Добавить("Множитель",тЧисло);
   разложение.Колонки.Добавить("Степень",тЧисло);
   
   если ПростыеЧисла.Найти(вхЧисло)<>Неопределено тогда
          нСтр=разложение.Добавить();
         нСтр.Множитель=вхЧисло;
         нСтр.Степень=1;
         возврат  разложение;
    конецесли;
   
   Граница=(вхЧисло-вхЧисло%2)/2;
   для каждого число из ПростыеЧисла цикл
      если число > Граница тогда
         прервать;
      конецесли;      
      если вхЧисло%число=0 тогда
         нСтр=разложение.Добавить();
         нСтр.Множитель=число;
         нСтр.Степень=1;
         н=число*число;
         пока  вхЧисло%н=0 цикл
            нСтр=разложение.Добавить();
            нСтр.Множитель=число;
             нСтр.Степень=1;
            н=н*число;
         конеццикла;    
      конецесли;      
   конеццикла;   
   
   разложение.Свернуть("Множитель","Степень");
   
   возврат разложение;
КонецФункции   
 Функция zGenerateVar формирует массив комплексных чисел [(Z**i)*(Zсопряженное**(p-i))Предназначение функции РазложитьНаПростыеМножители понятно из ее названия. Аргументами функции является разлагаемое число и массив простых чисел, функция возвращает таблицу значений с колонками Множитель и Степень. Теперь проговорим необходимую последовательность действий. 
Шаг 1. Подготовить таблицу простых чисел с коэффициентами разложения простого числа на сумму квадратов.
Шаг 2 Получим таблицу разложения исследуемого числа на множители.
Шаг 3. Сформируем массив, каждый элемент, которого - это тоже массив, содержащий варианты представления степени простого числа вида Z=4*k+1. Данное разложение нам возвращает функция zGenerateVar.
Шаг 4. С помощью рекуррентной функции получим все варианты представления числа как сумму двух квадратов.
Отметим, что представление числа в виде суммы квадратов возможно только тогда, когда в его разложении присутствуют простые числа вида 4*k+1, а простые числа вида 4*k+3 имеют четную степень, то есть входят в разложение, как полный квадрат. Никаких ограничений на наличие и степень двойки в каноническом представлении числа нет. Приведем фрагмент кода, который реализует второй и третий шаг нашего алгоритма.
      Decompose=РазложитьНаПростыеМножители(i,PrimeNumber);
      arr.Clear();
      Q=1; test=0;
      for each row in Decompose do
         n=row.Множитель;
         p=row.Степень;
         if n=2 then
            z=zNumber(1,1);
            vc=new array;
            vc.Add(zPower(z,p));
            arr.Add(vc);
         else
            find=vt.Find(n,"N");
            if find.a=0 then 
            if p%2=1 then  
                test=0; 
                break;  
             endif;
             Q=Q*n;
             for j=2 to p do
                  Q=Q*n;
             enddo;   
            else
               test=test+1;
               z=zNumber(find.a,find.b);
               arr.Add(zGenerateVar(z,p));
            endif;   
         endif;   
      enddo;
 Исследуемое число хранится в переменной i. В первой строке кода мы получаем разложение на простые множители. Затем в цикле обрабатываем таблицу с найденным разложением. Если после завершения цикла переменная test равна нулю, то данное число нельзя представить как сумму квадратов. Переменная Q хранит произведение степеней простых чисел 4*k+3. Массив arr содержит варианты разложения для остальных множителей канонического представления.
Теперь приведем код рекуррентной функции для получения вариантов разложения числа на сумму квадратов.
Function zSquare(arr,level,mult,Q)
   if level = arr.Count() then
      z=mult[0];
      imax=arr.Count()-1;
      for i=1 to imax do
         z=zMult(z,mult[i]);
      enddo;
      z0=z[0]*z[0];
      z1=z[1]*z[1];
      if z0*z1>0 then
        row=GaussPairs.Add();
        if z0>z1 then   
         row.a=Q*z0;
         row.b=Q*z1;
         else
         row.a=Q*z1;
         row.b=Q*z0;
          endif;
       endif; 
      return true;
   endif;   
   for each z in  arr[level] do
     mult[level]=z;    
     zSquare(arr,level+1,mult,Q);
   enddo;  
EndFunction   
Аргументы функции это: 
  • массив с вариантами arr;
  • переменная level говорит о том с каким элементом данного массива мы работаем на текущем шаге;
  • mult - массив в нем мы собираем все множители разложения;
  • назначение переменной Q мы объяснили в предыдущем абзаце. 
 Найденные разложения хранятся в таблице GaussPairs. Как можно использовать изложенную технику. Рассмотрим решение задачи, вариант которой можно найти в проекте Эйлер. Условия нашей задачи следующие:

Найдите  целые числа x > y > z > 0 такие, что x + y, x - y, x + z, x -z, y + z, y-z все являются квадратами целых чисел.

Введем обозначения: 
Введенные обозначения

Запишем следующие тождества:
x+y=(x+z)+(y-z)
x+y=(x-z)+(y+z)
отсюда получаем
Сумма квадратов
Соотношение (x+y)+(z-y)=(x+z) можно переписать в виде 

Еще один квадрат
Теперь идея решения понятна. Ищем такие числа, квадрат которых имеет несколько представлений в виде суммы квадратов. Условию задачи будут удовлетворять те из них, для которых выполняется условие, что d^2-f^2 есть полный квадрат. Здесь можно скачать обработку, в которой реализован данный алгоритм. Обработка написана для управляемого приложения.




Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Asmody 25.12.14 17:46 Сейчас в теме
Я бы числа в структуре хранил.
Function zNumber(Re,Im) Export
   return new Structure("r,i",Re,Im);
EndFunction  

Function zMult(a,b) Export
   retrun new Structure("r,i",
        a.r*b.r - a.i*b.i,
        a.r*b.i + a.i*b.r
   );
EndFunction   
Показать


воспринимается нагляднее
2. Denis S 29.01.15 22:43 Сейчас в теме
Можете привести пример использования комплексных чисел в типовой конфе? Решали ли Вы этим примером задачу из жизни?
3. scientes 244 30.01.15 09:40 Сейчас в теме
(2) Denis S, Хороший вопрос, впрочем я предугадал его появление и начал свою заметку фразой "Трудно предположить, что когда-нибудь в бухгалтерском учете понадобятся действия с мнимой единицей." Разумеется, в типовой конфигурации комплексные числа не присутствуют и вряд ли появятся. Изложенный пример, показывает как можно на встроенном языке решать задачи, которые абсолютно далеки от изначальной области применения платформы 1С:Предприятие.
Оставьте свое сообщение

См. также

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    36819    unichkin    46    

«Варп-двигатель» для «среза последних»

Практика программирования Бесплатно (free)

Решение, позволяющее получить данные, аналогичные "срезу последних" на два порядка быстрее.

10.08.2020    836    hobi    27    

1С: Документооборот, Data Science и Python

Документооборот и делопроизводство Математика и алгоритмы ДО Бесплатно (free)

В статье рассказывается о создании и обучении модели Data Science на языке Python и интеграции с системой 1С: Документооборот

04.08.2020    982    Vaganov_Alexey    4    

Не спеша, эффективно и правильно – путь разработки. Часть 3. Практика

Практика программирования Бесплатно (free)

Черновой вариант книги Никиты Зайцева, a.k.a.WildHare. Разработкой на платформе 1С автор занимается с 1996-го года, специализация — большие и по-хорошему страшные системы. Квалификация “Эксперт”, несколько успешных проектов класса “сверхтяжелая”. Успешные проекты ЦКТП. Четыре года работал в самой “1С”, из них два с половиной архитектором и ведущим разработчиком облачной Технологии 1cFresh. Ну — и так далее. Не хвастовства ради, а понимания для. Текст написан не фантазером-теоретиком, а экспертом, у которого за плечами почти двадцать три года инженерной практики на больших проектах.

29.06.2020    6639    WildHare    32    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    29345    tormozit    100    

Не спеша, эффективно и правильно – путь разработки. Часть 2. Теория

Практика программирования Бесплатно (free)

Черновой вариант книги Никиты Зайцева, a.k.a.WildHare. Разработкой на платформе 1С автор занимается с 1996-го года, специализация — большие и по-хорошему страшные системы. Квалификация “Эксперт”, несколько успешных проектов класса “сверхтяжелая”. Успешные проекты ЦКТП. Четыре года работал в самой “1С”, из них два с половиной архитектором и ведущим разработчиком облачной Технологии 1cFresh. Ну — и так далее. Не хвастовства ради, а понимания для. Текст написан не фантазером-теоретиком, а экспертом, у которого за плечами почти двадцать три года инженерной практики на больших проектах.

22.06.2020    8161    WildHare    23    

Не спеша, эффективно и правильно – путь разработки. Часть 1. Парадигма

Практика программирования Бесплатно (free)

Черновой вариант книги Никиты Зайцева, a.k.a.WildHare. Разработкой на платформе 1С автор занимается с 1996-го года, специализация — большие и по-хорошему страшные системы. Квалификация “Эксперт”, несколько успешных проектов класса “сверхтяжелая”. Успешные проекты ЦКТП. Четыре года работал в самой “1С”, из них два с половиной архитектором и ведущим разработчиком облачной Технологии 1cFresh. Ну — и так далее. Не хвастовства ради, а понимания для. Текст написан не фантазером-теоретиком, а экспертом, у которого за плечами почти двадцать три года инженерной практики на больших проектах.

15.06.2020    12314    WildHare    34    

Применение математических достижений в решении сложных задач бизнеса

Математика и алгоритмы Бесплатно (free)

Как правило, самые сложные задачи решаются с точки зрения математики очень легко. Но чтобы найти правильное решение, важно понять бизнес-цель, которую достигает эта задача. О практическом применении математических достижений для эффективного решения сложных задач бизнеса на конференции Infostart Event 2019 Inception рассказал Дмитрий Мишнов.

25.05.2020    3141    Mishnov    17    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012    77224    tormozit    131    

JSON в запросах DaJet QL

Практика программирования Бесплатно (free)

Практические примеры работы с JSON непосредственно в языке запросов. Перенос курсов валют между УТ и БП. Требуется SQL Server 2016 и выше.

24.04.2020    3644    zhichkin    6    

Визионное программирование

Практика программирования Бесплатно (free)

Новый способ программирования и его практическая демонстрация.

22.04.2020    4350    mkalimulin    111    

Улучшение пооперационного планирования в 1С:ERP 2.4 внешними средствами

Математика и алгоритмы Производительность и оптимизация (HighLoad) Бесплатно (free)

Задача построения оптимального производственного расписания требует сравнения тысяч и десятков тысяч вариантов. Выполнять такие вычисления средствами платформы 1С Предприятие нецелесообразно. Как реализовать пооперационное планирование с использованием генетических алгоритмов и параллельных вычислений в докладе на конференции Infostart Event 2019 Inception рассказал генеральный директор компании «ИНТЕХ» Сергей Сафаров.

02.03.2020    4775    ildarovich    7    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    47519    tormozit    40    

Использование машинного обучения для решения инцидентов. Практическое применение

Практика программирования Бесплатно (free)

Продолжаю (и заканчиваю) тему с автоматическим решением инцидентов. Перейдем от теории к практике.

25.02.2020    4063    Repich    9    

Использование машинного обучения для решения инцидентов

Практика программирования Бесплатно (free)

История о том, как я с помощью машинного обучения сокращал затраты на техподдержку.

18.02.2020    6585    Repich    17    

Часовой на страже логов

Практика программирования Инструментарий разработчика Бесплатно (free)

При поддержке решений, которые установлены у большого количества пользователей на различных системах, очень важно вовремя получать подробную информацию о возникших проблемах. О том, как собирать логи и анализировать полученные данные в трекере ошибок Sentry на конференции Infostart Event 2019 Inception рассказал Андрей Крапивин.

13.01.2020    6246    Scorpion4eg    8    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    43877    tormozit    74    

Приватный блокчейн и 1С популярно

Практика программирования Блокчейн Бесплатно (free)

Две предыдущие публикации на эту тему были сфокусированы преимущественно на технической стороне вопроса. Кроме того, их содержание оказалось понятным не каждому специалисту. В этой статье я постараюсь обяснить для всех и, что говорится, «на пальцах»: что такое приватный блокчейн, когда и зачем его следует применять и на что обратить внимание при использовании этой технологии в 1С.

02.09.2019    5937    mkalimulin    140    

Кодогенерация и метагенерация в 1С

Практика программирования Инструментарий разработчика Бесплатно (free)

В своем докладе на конференции INFOSTART EVENT 2018 EDUCATION Дмитрий Белозеров рассказал о разработке инструмента, позволяющего программно работать с метаданными 1С и писать скрипты для выполнения тех же действий, которые выполняет разработчик в конфигураторе –  с какими сложностями и нюансами пришлось столкнуться, и что получилось в итоге.

26.08.2019    8875    kirovsbis    28    

Интеграция сценарного тестирования в процесс разработки

Практика программирования Инструментарий разработчика Бесплатно (free)

Разработчик системы «Тестер» Дмитрий Решитко в своем докладе на конференции INFOSTART EVENT 2018 EDUCATION показывает, что процесс тестирования можно очень плотно интегрировать в процесс разработки, что внедрение тестирования – это возможность развития программиста как такового, позволяющая ему упорядочивать ход мыслей и оставаться «в фокусе». Навыки построения процесса кодирования на стыке с тестированием сокращают время на концентрацию, освобождают от страха перед изменениями и улучшают память разработчика.

08.07.2019    9002    grumagargler    7    

Развитие 1С программиста Промо

Практика программирования Личная эффективность Бесплатно (free)

Делюсь своим опытом и видением развития 1С программиста.

17.10.2018    20020    pashamak    62    

Управляй качеством кода 1С с помощью SonarQube

Практика программирования Россия Бесплатно (free)

Управляй техническом долгом проектов 1С с помощью SonarQube. В статье рассматривается пример применения SonarQube при разработке.

07.07.2019    37619    olegtymko    230    

Выдержки из книги Чистый код

Математика и алгоритмы Бесплатно (free)

Недавно я прочитал книгу "Чистый код" Роберта Мартина (Robert Cecil Martin). В ней описываются принципы организации и форматирование исходного кода программы так, чтобы в дальнейшем было легко поддерживать такой код. Эта книга является библией для многих программистов, но вот в среде программистов 1С, к сожалению, не очень распространено чтение подобной фундаментальной литературы. Книга более 400 страниц и так много порой лениво читать, да и времени всегда не хватает. По этому я решил выделить в виде цитирования по разделам самые важные моменты. А также снабдил текст своими примерами кода.

16.05.2019    10102    FreeArcher    105    

Выгрузка документа по условию

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    15861    m-rv    2    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    30007    m-rv    21    

Как прикрутить ГУИД к регистру сведений

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

... и немного теории обмена данными. В частности, разберем боль всех, кто пишет небанальные обмены данными: как набору записей регистра сведений назначить гуид и далее использовать его в обмене для идентификации этого набора.

16.04.2019    19878    m-rv    17    

О времени и 1С

Практика программирования Разработка Бесплатно (free)

Основы и особенности работы со временем в 1С. Как избавиться от боли при работе в разных часовых поясах. Что такое момент времени. И другое.

01.04.2019    32987    YPermitin    60    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Вариант решения задач с проведением по типовым регистрам нетиповыми регистраторами. Зачем - чтобы при сравнении конфигурации не обращать внимание на свойства регистров и исключить вероятность допущения горькой оплошности при обновлении информационных баз, заменив типы регистраторов основной конфигурации типами конфигурации поставщика. Для программных продуктов, имеющих в своем составе метаданных документ "Корректировка регистров"("Корректировка записей регистров").

05.12.2017    28000    itriot11    34    

Пример создания bridge (http api - tcp) для ККТ "Касса №1" ("К1-Ф")

Практика программирования ККМ Кассовые операции Кассовые операции Разработка Россия Бесплатно (free)

Пример создания bridge (http api - tcp) для ККТ "Касса №1" ("К1-Ф"). Данная статья будет полезна интеграторам, программистам, тем кто работает (интегрирует, разрабатывает) различное ТО либо железки. Версия и релиз технологической платформы не имеет значения.

17.03.2019    6485    dmarenin    1    

Быстрее чем INSERT! BULK-операции и примеры использования

Производительность и оптимизация (HighLoad) Практика программирования Внешние источники данных Перенос данных из 1C8 в 1C8 Разработка Бесплатно (free)

Microsoft SQL Server поддерживает так называемые BULK-операции, используемые для быстрого изменения больших объемов данных в базе. В статье пойдет речь о практических примерах их использования. Все примеры сделаны в контексте платформы 1С (а как иначе).

09.03.2019    23019    YPermitin    40    

Как писать понятные коммиты

Практика программирования Разработка Россия Бесплатно (free)

Как писать сообщения коммитов так, чтобы потом не было мучительно больно.

06.03.2019    12487    Scorpion4eg    35    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    75539    Serginio    108    

Что такое алгоритм?

Математика и алгоритмы Бесплатно (free)

Как ответить на этот вопрос и не попасть пальцем в небо.

25.02.2019    7835    mkalimulin    274    

Подготовка ребёнка к ЕГЭ по информатике. Часть шестнадцатая

Практика программирования Разработка Бесплатно (free)

Поиск выигрышной стратегии, завершающая статья.

22.02.2019    5654    vasilev2015    0    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    33749    ids79    40    

Подготовка ребёнка к ЕГЭ по информатике. Часть тринадцатая

Практика программирования Разработка Бесплатно (free)

Исправление ошибок в программе, часть вторая.

20.02.2019    5688    vasilev2015    3    

Тестер: частые вопросы Промо

Практика программирования v8 Бесплатно (free)

Ошибкам бой - тесты норма жизни!

25.07.2018    28894    grumagargler    28    

Подготовка ребёнка к ЕГЭ по информатике. Часть восьмая

Практика программирования Разработка Бесплатно (free)

Шифрование и дешифрование информации. Закон Фано

05.02.2019    5570    vasilev2015    1    

Расширяем свой багаж

Практика программирования Разработка Бесплатно (free)

Алгоритм решения возможной нетиповой задачи на собеседовании.

29.01.2019    6315    scientes    15    

Криптовалюты, а также иные взгляды на природу денег в терминах 1С

Математика и алгоритмы Бесплатно (free)

Это отчасти полемическая статья. Я задумал написать ее как ответ на другую хорошую статью о криптовалютах. Хотелось поспорить с некоторыми утверждениями автора, а ещё больше с некоторыми комментариями. А чтобы текст был более понятным для местной аудитории, я решил использовать, где только возможно, терминологию и практику 1С.

28.01.2019    6188    mkalimulin    89