Рубрика «Песочница» - 198

В С++ существует несколько возможностей передачи массива в функцию.

  1. В С++ массивы можно инициализировать следующим образом:
    int arr[] = {p1, p2, p3, ...}; // длина массива определяется 
    после инициализации

    Как следствие, его можно передать в функцию таким же способом:

    void func(int arr[]){
    //your code
    }
  2. Еще один вариант — передать массив по указателю. Например:
    void func(int* arr){
    //your code
    }
    int arr[5] = {1, 2, 3, 4, 5};

    Мы привыкли обращаться к элементам массива по индексам, но попробуйте скомпилировать и запустить следующие строки:

    int main(){ 
       int arr[5] = {1, 2, 3, 4, 5};
       cout << arr << endl; //в данном случае мы увидим адрес начала массива 
        return 0; //его мы и передаем в массив
    }

При использовании любого из данных вариантов, перед нами становится вопрос определения длины полученного массива. Длину можно передавать через второй параметр в функцию.
Например:

void func(int* arr, int length){
//your code
}

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

int len(int* arr){
    int count = 0;
    while(*x++ < ?) count++;
    return count;
}

Крайне важно понять критерий по которому мы будем оценивать содержимое. В противном случае, можно получить не совсем то, что ожидалось.
Читать полностью »

Для начала немного несуществующих деревень и сёл

Сальтолово
Ничичи
Каверная Голяна
Придориусловка
Старотипенки
Кюканово
Кутюшевка
Верхний Стед
Сабаревка
Зеленокировка
Хадонские Выселки
Старый Куля
Октяга
Ржиново
Черемошно
Голодионово
Александрово-Полейково
Подлопаново
Малое Сусовое
Горы-Чусалы
Чубравяково


Зачем и почему

Всем привет, меня зовут Илья, я занимаюсь компьютационной биологией и биохимией, в свободное время я заставляю нейросети страдать ерундой.

Основываясь на аналогичных проектах (названия британских деревень, названия мест в Орегоне, названия различных цветов и их RGB), я решил научить нейросеть создавать названия несуществующих населенных пунктов

В качестве нейросети я решил воспользоваться torch-rnn, которую достаточно легко установить и настроить. Список городов и сел я нашел тут (можно скачать все в формате csv). С csv пришлось немного повозиться, чтобы привести ее к utf-8, после чего я запихнул ее в нейросеть и оставил на пару часов. Когда тренировка модели закончилась я взял небольшой сампл и получил следующий результат:

Читать полностью »

Про паттерн Builder сказано достаточно. Его достоинства очевидны. Есть изящные варианты замены (Элегантный Builder на Java) уменьшающие количество кода, и генераторы, вообще сводящие boilerplate на нет. Но иногда можно сделать еще проще, причем не прибегая к сторонним библиотекам.
Читать полностью »

в 0:00, , рубрики: Песочница

Месяца назад я получил свою первую работу и стал стажер-разработчиком, наша команда использует язык Scala. Мне кажется, все начинающие разработчики в первый день потерянные. одновременно наваливается куча новых имен, технологий, каких-то правил, да и мало ли что еще, абсолютно все для тебя ново, это же первая работа. В моем же случае я еще и не знал языка, на котором буду программировать, до момента собеседования я даже никогда о нем не слышал. Итог: в первый день я был в полном ауте. Спросите как тогда я вообще получил эту работу? Я знал Java, на собеседовании мне сказали что джависту перейти на скалу будет достаточно легко и можно не переживать. Но видимо чуть-чуть попереживать все же стоило, потому что первое время перед собой я видел просто экраны, заполненные текстом, в которых сходу была ясна едва ли половина.

Но больше дискомфорта приносило даже не то, что я чего-то не понимал, а то что там многое по-другому, да даже тип переменной идет после названия, а порой его вообще нет.

final String str = "abc"; //Java

val str = "abc" // Scala

Читать полностью »

Привет, читатель.

Важно для прочтения!

Если ты не против, то изучи ООП и Jav'y прежде, чем учить другие библиотеки. Ибо ты не будешь браться за физику, не выучив математику. Тут то же самое.

Сегодня мы будем писать простейшего бота Telegram, который будет отвечать на команды. Такая статья была, но писали бота на Питоне.

Почему я выбрал именно Jav'y

Java в плане ботов, серверов, плагинов да и вообще программ будет удобнее для меня.

1. Виртуальная машина хоть и долгая, но если обрабатывать события в несколько потоков, то будет работать быстро.(Вообще для многих серверов/мультиплеерных игр в одном потоке не всегда получится обрабатывать события, в Jav'e сделать это гораздо проще)

2. Наличие хорошей документации и Javadoc'ов, которые можно сделать для всех библиотек(не только для системных)

0. А что такое «бот»?

Бот — это профиль в соцсети/мессенджере(в данном случае Telegram) который отвечает на команды.( В любом случае все действия буду происходить после выполнения команды)

Тип чата с ботом — это переписка 1 на 1.

1.С чего же начинать?

Здесь качать библиотеку Telegram(обязательно with-dependiciens)

IDE можно выбрать любую, я бы порекомендовал eclipse.

Импотрируем библиотеку Телеграма и приступаем.
Читать полностью »

Недавно, при написании одного из проектов, столкнулся с проблемой отображения границ в таблицах. Никогда не думал, что могут возникнуть сложности в такой тривиальной задаче.
В чем суть? По дефолту вокруг каждой ячейки отображается своя рамка (рисунок 1). Мне необходимо было, чтобы отображалась одна линия между двумя ячейками (рисунок 2). Для этого я таблице задал border-collapse: collapse и толщину границы 1px.

image

Самое интересное начинается, если стиль границы поменять с solid на dashed (рисунок 3).Читать полностью »

в 0:00, , рубрики: Песочница

Появился порт ELMAH для ASP.NET Core: здесь

Как его использовать?

1) Установил NUGET пакет ElmahCore
2) Изменил Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();

    //Добавил
    services.AddElmah();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
       app.UseDeveloperExceptionPage();
       app.UseBrowserLink();
    }
    else
    {
       app.UseExceptionHandler("/Error");
    }

    //Добавил
    app.UseElmah();

    app.UseStaticFiles();

     app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller}/{action=Index}/{id?}");
         });
    }

Вуаля...

image

Читать полностью »

Приветствую! Хотел бы представить вам простенькую, но в то же время интересную задачку по программированию. Магический квадрат (волшебный квадрат) — это таблица заполненная числами таким образом, что сумма чисел в каждой строке, каждом столбце и на обеих диагоналях одинакова. Программка составлена на языке Python.

Волшебный квадрат - 1

# Создадим переменную равную наименьшему из 9-ти разрядного числа

counter = 100000000

Далее запускаем цикл пока не достигнем наибольшего 9-ти разрядного числа

while counter < 999999999:
# Разбиваем наще число на разряды
p = [int(n) for n in str(counter)]

 #Теперь складываем отдельные цифры и присваиваем результат
 #переменным согласно расположению в таблице
 diagonal_1   = p[0] + p[4] + p[8]
 diagonal_2   = p[2] + p[4] + p[6]
 gorizontal_1 = p[0] + p[1] + p[2]
 gorizontal_2 = p[3] + p[4] + p[5]
 gorizontal_3 = p[6] + p[7] + p[8]
 vertical_1   = p[0] + p[3] + p[6]
 vertical_2   = p[1] + p[4] + p[7]
 vertical_3   = p[2] + p[5] + p[8]

Завершающий этап: проверка всех вышеперечисленных переменных на равенство
и вывод результатов на экран


#Проверка на равенство
 if diagonal_1 == diagonal_2 and diagonal_1 == gorizontal_1 and diagonal_1 == vertical_1 and  gorizontal_1 == gorizontal_2 and gorizontal_1 == gorizontal_3 and vertical_1 == vertical_2 and vertical_1 == vertical_3 and vertical_1 == gorizontal_1 and vertical_1 == gorizontal_2 and vertical_1 == gorizontal_3:

  #Печать результатов
  print ( p[0], p[1], p[2] )
  print ( p[3], p[4], p[5] )
  print ( p[6], p[7], p[8] )
  print ( 'Счетчик равен: ', counter )
  print ('________________' )

 counter += 1

Читать полностью »

Это перевод статьи Andrew Clark. Оригинальная статься здесь.

Вступление

React Fiber — прогрессивная реализация ключевого алгоритма React. Это кульминационное достижение двухгодичных исследований команды разработчиков React.

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

Другие ключевые фичи включают возможность приостановки, отмены или переиспользования входящих обновлений DOM дерева, возможность приоритизации разных типов обновлений, а также — согласование примитивов.

Читать полностью »

Передо мной стояла следующая задача: сделать фильтрацию всех товаров в инфоблоке по одному свойству, сохранив штатный функционал и рабочий «Умный фильтр». Вы скажете, что в битриксе есть замечательный «умный» фильтр с его фасетными индексами, а я скажу, что да, он есть. Но давайте взглянем на исходные данные задачиЧитать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js