Как стать автором
Обновить
-1
0

Пользователь

Отправить сообщение
Правда, я никогда не слышал протестов в духе «я девочка, всегда хотела работать в сталеплавильном цеху

А от мужчин вы когда-нибудь слышали "всегда хотел работать в сталеплавильном цеху"? Ваш круг общения вообще пересекается с заводскими работягами?

Как человек, немного знакомый с гитом, хочу добавить несколько замечаний:
Это имеет два важных последствия:

Переприменяя коммиты, git создает новые.
Вообще говоря, два важных последствия не имеют прямого отношения к rebase-у. Уникальным идентификатором коммита в гите является хэш, который вычисляется, в частности и по хэшу родительских коммитов. Поэтому естественно, что при ответвлении от другого родителя идентификатор поменяется.

Git rebase переприменяет коммиты, не уничтожая старые.
Все команды гита, изменяющие состояние репозитория, обычно не уничтожают неиспользуемые объекты. Из-за этого в гите довольно сложно необратимо повредить репозиторий) Для очистки объектов существуют специальные команды типа git gc.

Я думаю, что куда больше проблем, чем при нарушении «золотого правила», возникает вот здесь:
Естественно, Анна пулит.
Если вы хоть немного знакомы с гитом, никогда не делайте git pull. git pull — это команда, придуманная, чтобы немного облегчить работу с гитом новичкам. Правильная последовательность действий такая:
  • git fetch — чтобы забрать все изменения из удаленного репозитория.
  • изучение текущего состояния удаленной ветки (сравнение коммитов со своими, просмотр изменений и т.п.).
  • В зависимости от того, что там оказалось, вы можете в своей локальной копии ветки захотеть сделать либо fast forward либо rebase либо merge либо reset либо пойти к коллегам разбираться, почему в ветке фигня. А возможно, что придется переписать часть своих изменений.
Все эти вопросы в корне некоррекны вот почему: привязывая смысл вашей работы к метрике, вы теряете смысл. Чтобы ответить на вопрос, к какому рейтингу стремиться или о чем писать, вам надо понимать, для кого вы пишете пост.
Чтобы нанять одного специалиста, вам не нужно 200к просмотров, вам нужен один правильный просмотр
Ну так это не значит, что не нужно использовать метрики. Это значит, что выбирать метрику нужно правильно. Например, количество желающих устроиться на работу.
Человек чувствуют себя хорошо живущим, если у него есть соседи живущие хуже чем он.

Статистику, подтверждающее это утверждение, вы, конечно, приводить не будете) Хотя, казалось бы, проверяется простым опросом.

Учителя нужны, и нужда в них не ослабнет никогда.

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

Я бы добавил The Stanley Parable — за нетривиальную подачу и работу с игроком.
Фактически я хочу легализовать поведение компилятора, когда место под объект выделяется в стеке вызывающей функции, а вызов конструктора происходит в вызываемой функции.

Это невозможно легализовать средствами языка (синтаксически), поскольку в стандарте C++ стек вообще не упоминается применительно к вызову функций, и компиляторы вольны реализовывать функции, как им угодно.

Однако, в C++17 все будет работать так, как вы хотите, и не иначе: возвращаемые значения будут сразу конструироваться на нужном месте (guaranteed copy elision).
В студенчестве ответственность есть, только человек не понимает, что она есть, и в чем она заключается. А если понимает, то посвящает большую часть времени учебе.
Глянул вариант от 2Alias и решил попробовать свои силы — реализовать алгоритм для тех же 250 чисел с теми же отсечениями.

Получилось вот что (C++11)
#include <iostream>
#include <algorithm>
#include <chrono>

using std::cout;
using std::endl;

using work_num = long long;
using index_num = unsigned int;

constexpr index_num elements_count = 250;

inline work_num pow5(index_num n) {
  const work_num pow2 = n * n;
  return pow2 * pow2 * n;
}

int main() {
  auto start = std::chrono::steady_clock::now();

  work_num powers[elements_count];
  for (index_num i = 0; i < elements_count; ++i) {
    powers[i] = pow5(i);
  }

  // a^5 + b^5 + c^5 + d^5 = e^5
  for (index_num a = 1; a < elements_count; ++a) {
    for (index_num b = a + 1; b < elements_count; ++b) {
      for (index_num c = b + 1; c < elements_count; ++c) {
        for (index_num d = c + 1; d < elements_count; ++d) {
          work_num sum = powers[a] + powers[b] + powers[c] + powers[d];
          if (std::binary_search(powers, powers + elements_count, sum)) {
            work_num* e_ptr = std::lower_bound(powers, powers + elements_count, sum);

            auto end = std::chrono::steady_clock::now();
            cout << a << " " << b << " " << c << " " << d << " " << (e_ptr - powers) << endl;
            cout << "Time: " << std::chrono::duration<double, std::milli>(end - start).count() << "ms" << endl;

            exit(0);
          }
        }
      }
    }
  }

  auto end = std::chrono::steady_clock::now();
  cout << "Time: " << std::chrono::duration<double, std::milli>(end - start).count() << "ms" << endl;
}


Работает на 28% быстрее оригинала. Вывод — для решения задачи нужно пользоваться наиболее подходящими средствами языка. В данном случае, ни вектор ни map не нужны, а лучше всего подходит бинарный поиск по отсортированном массиву. А рекурсию лучше заменить на вложенные циклы.
12 ...
17

Информация

В рейтинге
Не участвует
Откуда
Новосибирск, Новосибирская обл., Россия
Зарегистрирован
Активность