Ответы пользователя по тегу Программирование
  • Какой лучший алгоритм для поиска оптимального пути через определённые точки?

    tsarevfs
    @tsarevfs
    C++ developer
    Очень похоже на динамику. Можно попробовать построить граф (полный?) из ключевых точек. Предпосчитать расстояние между вершинами по карте (A*).
    Далее вы либо можете либо просто придумать хитрые веса для ребер на основе длинны и рейтинга достопримечательностей в инцидентных вершинах. В этом случае нужен путь максимального веса.
    Иначе надо искать путь максимального веса с ограничением на длину. Наверняка люди не захотят обходить весь город. Вроде бы по ссылке описывается что-то подобное.
    Ответ написан
    3 комментария
  • Как начать программировать серьезно?

    tsarevfs
    @tsarevfs
    C++ developer
    С++ тяжелее в изучении, но позволяет глубже понять как работает программа. Актуальность java и С++ одинаково высока. C++ это высокопроизводительные приложения, gamedev. На Java часто пишут серверное ПО, Enterprise software.
    Изучение синтаксиса языка это 10%. Могу посоветовать книгу Философия С++. Практически сразу стоит изучать то, что называют "алгоритмы и структуры данных". Книги: Кормен, Кнут.
    Желательно писать как можно больше кода.
    Ответ написан
    Комментировать
  • Что такое машинный эпсилон?

    tsarevfs
    @tsarevfs
    C++ developer
    Корректное определение звучит так:
    FLT_EPSILON: This is the difference between 1 and the smallest floating point number of type float that is greater than 1.

    Разница между 1 и минимальным чилом представимым в float большим 1. Говорить о том, что:
    Машинный эпсилон - это минимальная разница между числами, которую компьютер в состоянии различить.

    не правильно, потому, что как вы заметили, числа меньше FLT_EPSILON вполне представимы в float и вы вполне можете с ними работать.
    Дело в том, что плотность чисел представимых в float не постоянна. Расстояние между 2 такими соседними числами может быть меньше FLT_EPSILON в окресности нуля. И наоборот для значений близких к MAX_FLOAT разница между соседними значениями может быть больше 1.
    В python тип float соответствует типу двойной точности(64 бита) и в нем представимы все целые числа. Если же воспользоваться 32-битным вариантом, то можно получить "странное" поведение. Следующий код зацикливается.
    import sys
    from numpy import float32
    a = float32(sys.float_info.max)
    while a > sys.float_info.max - 10000:
       a -= 1
    Ответ написан
    1 комментарий
  • Стек есть зарезервированный участок памяти на оперативно запоминающем устройстве?

    tsarevfs
    @tsarevfs
    C++ developer
    Все зависит от языка, платформы и ОС.
    Когда говорят о куче, обычно подразумевают динамическое выделение памяти. На старте приложение не резервирует память в куче, а делает это по мере необходимости.
    Если вы пишите например на C++ под платформу x86, то память под стек (несколько мегабайт) резервируется в самом начале работы приложения и освобождается только при его завершении.
    Для разных языков то как реализован стек может сильно отличаться, важно лишь то что это обязательная часть механизма работы функций. Именно через него передаются аргументы, возвращается результат. На нем могут создаваться локальные переменные для функций.
    Интерпретируемые языки могут быть устроены сильно по разному. Но в большинстве случаев они ведут себя так, как будто у них есть стек и куча.
    Ответ написан
  • Поможете вспомнить язык программирования по логотипу?

    tsarevfs
    @tsarevfs
    C++ developer
    Написал скрипт на python скачивающий картинки по запросу "<имя языка> logo" из гугла.
    import os
    import sys
    import time
    from urllib import FancyURLopener
    import urllib2
    import urllib
    import simplejson
    
    
    # Start FancyURLopener with defined version 
    class MyOpener(FancyURLopener): 
        version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'
    myopener = MyOpener()
    
    
    def request(searchTerm, max_count):
      # Set count to 0
      count= 0
      searchTermQuote = urllib.quote(searchTerm + ' language logo', '')
      for i in range(0, 10):
          # Notice that the start changes for each iteration in order to request a new set of images for each loop
          url = ('https://ajax.googleapis.com/ajax/services/search/images?' + 'v=1.0&q=' + searchTermQuote + '&start=' + str(i*4) + '&userip=MyIP')
          print url
          request = urllib2.Request(url, None, {'Referer': 'testing'})
          response = urllib2.urlopen(request)
    
          # Get results using JSON
          results = simplejson.load(response)
          data = results['responseData']
          dataInfo = data['results']
    
          # Iterate for each result and get unescaped url
          for myUrl in dataInfo:
              count = count + 1
              print myUrl['unescapedUrl']
    
              searchTermSafe = ''.join([c for c in searchTerm if c.isalnum() or c == '.'])
    
              name = os.path.join('imgs', searchTermSafe + str(count) + '.jpg')
              myopener.retrieve(myUrl['unescapedUrl'], name)
              if count >= max_count:
                return
    
    
    def main():
      languages_list = open('list.txt', 'r').readlines()
      for language in languages_list:
        try:
          request(language, 1)
        except:
          print "error with request" + language
        time.sleep(1)
    
    
    if __name__ == '__main__':
      main()

    Сейчас он трудится над списком из 256 языков.

    UPD:
    Единственное, хоть как-то подходящее под описание Rexx language:
    rexxla.gif
    Ответ написан
  • Выбор языка программирования для моделирования физических процессов?

    tsarevfs
    @tsarevfs
    C++ developer
    Зависит от сложности моделей. Если вы хотите демонстрировать задачи школьного уровня, то pyhon + numpy + pygame позволит очень быстро создать такое приложение. Создание приложения не требующего установки python и библиотек для него вполне возможно. Однако скорее всего это придется делать под каждую ОС отдельно (сам код. конечно, будет кроссплатформенным).
    Ответ написан
    Комментировать
  • Что лучше изучать для программирования игр - C# или C++?

    tsarevfs
    @tsarevfs
    C++ developer
    Возможно, проще будет изучить C# и начать работать с Unity. Изучение С++ гораздо более сложный путь, но именно на нем пишут серьезные движки для игр.
    Unity это очень мощный, но все же конструктор для игр. Если если вы хотите написать игру самостоятельно или небольшой командой, это отличный выбор. Если ваша цель работа в крупной GameDev фирме, то C++ будет более востребован.
    Учтите, что переход на другой язык намного проще изучения первого. Так что выбирайте исходя из ваших планов на ближайшие 2-3 года.
    Ответ написан
    Комментировать
  • Почему уже задавленное условие попадает в else?

    tsarevfs
    @tsarevfs
    C++ developer
    У первого if нет else. Все следующие проверки выполняются при a=1 обычным образом. В таких случаях удобно использовать сокращенную запись else if — elif
    a = int(input())
    b = a % 10
    c = a % 100
    if a == 1:
        print(a, 'программист')
    elif (b == 1 and not c == 11 and not a == 1):
        print(a, 'программист')
    elif((b == 2 or b == 3 or b == 4) and not(c == 12 or c == 13 or c == 14)):
        print(a, 'программиста')
    else:
        print(a, 'программистов')
    Ответ написан
    Комментировать
  • Какие языки помогут лучше всего понять указатели и рекурсии?

    tsarevfs
    @tsarevfs
    C++ developer
    Самые сложные это, конечно, громко сказано. Языки, как уже говорили С++, С, Pascal.
    Чтобы разобраться с указателями, посмотрите (а лучше напишите сами) как работают списки: односвязный и двусвязный.
    Для рекурсии стандартная задача - числа фиббоначи. Чуть более сложная - обход графа в глубину.
    Вам задано n - количество городов и k - количество дорог. Далее записаны k пар чисел - (a_i, b_i), которые означают что из города a_i есть дорога в город b_i. Найдите все города в которые можно добраться из города с номером 1. Например для 6 городов и 4 дорог входные данные:
    6 4
    1 3
    3 5
    6 4
    2 6
    ответ:
    1 3 5
    Ответ написан
    Комментировать
  • Примеры классов в программировании?

    tsarevfs
    @tsarevfs
    C++ developer
    Когда программы становятся большими, очень хочется, чтобы при изменении одного куска не ломалось все остальное. Для этого программы разбиваются на части, взаимодействующие через некоторые интерфейсы. Чем этих связей меньше, тем проще поддерживать такой код.
    Переменная(private) в классе лучше глобальной тем, что доступ к ней имеет только сам класс. В таком случае я могу при написании класса рассчитывать, что свои данные меняю только я, поэтому в каждый момент времени они непротиворечивы. Например класс Square описывает квадрат, у которого мы хотим задавать длину стороны и спрашивать его площадь.
    class Square
    {
      void setSide(double side)
      {
        side_ = side;
        area_ = side * side;
      }
      double getSide()
      {
        return side_;
      }
      double getArea()
      {
        return area_;
      }
    private:
      double side_;
      double area_;
    }


    В процедурном варианте кто-то может изменить длину стороны и забыть (сам дурак, но если параметров не два а несколько десятков, помнить о всех закономерностях затруднительно) изменить площадь, в таком случае, он начнет получать неправильные результаты.
    Еще прочитайте про наследование, оно используется очень часто.
    Про enum можно не забивать голову пока.
    Ответ написан
    2 комментария
  • Как перемножить скобки и получить многочлен?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    Для разбора выражения проще всего использовать перевод в польскую запись (можете использовать метод рекурсивного спуска он немного сложнее, но универсальней).
    Далее опишите класс Poly для многочлена. Определите для него операции для сложения и умножения (перегрузив соответствующие операторы или просто определив методы add и mul). Сам многочлен удобно представлять в виде вектора (массива), i-й элемент которого это коэффициент при x^i.
    Ответ написан
  • По каким источникам можно выучить Паскаль для сдачи ЕГЭ (с нуля)?

    tsarevfs
    @tsarevfs
    C++ developer
    Почитайте Окулова например. Порешайте задания за разные года. Особо глубоких знаний языка для экзамена не потребуется.
    Ответ написан
    Комментировать
  • Какой путь создания java-приложения с ноля до работающего?

    tsarevfs
    @tsarevfs
    C++ developer
    Idea (community edition)
    jdk под вашу версию ОС.
    Интерактивный туториал (на английском)
    Г. Шилдт Java руководство для начинающих

    Если вам хочется заниматься именно играми, посмотрите на Unity3d. С его помощью можно сделать игру практически не программируя.
    Ответ написан
    Комментировать
  • ЯП Си: Можно ли созадать функцию в структуре?

    tsarevfs
    @tsarevfs
    C++ developer
    Методы можно создавать в C++ но не в C. Однако и на C пишут в объектно ориентированном стиле. Например, можно договориться описывать методы как функции, префикс имени которых совпадает с именем класса, а в качестве первого параметра передается указатель на экземпляр класса:
    struct Car
    {
    	int speed;
    	int pos_x;
    	int pos_y;
    };
    void Car_set_pos(struct Car * car, int x, int y)
    {
    	car->pos_x = x;
    	car->pos_y = y;
    }
    void Car_print_speed(struct Car * car)
    {
    	printf("%d\n", car->speed);
    }
    Ответ написан
    Комментировать
  • Как изменить скрипты в клиентской 3D игре?

    tsarevfs
    @tsarevfs
    C++ developer
    Есть такая штука, компилятор. В некотором смысле это шифрование, но необратимое. Исходный код в его изначальном виде получить не удастся. Есть программы, дизассемблеры, которые позволяют получить самый низкоуровневый код из скомпилированного кода. Однако, производители игр обычно не любят, чтобы в их коде кто-то копался и производят обфускацию. Поэтому чтобы разобраться в коде другой игры нужно приложить кучу усилий.
    Другое дело, что раз кто-то этим занимался, вы можете поискать существующие решения. Возможно вы найдете файлы для английского языка.
    Ответ написан
    1 комментарий
  • Насколько сейчас актуален c++ ?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    Возможно все. Работа есть, в СПБ а тем более в Москве ее много. Платят в среднем чуть меньше чем Java разработчикам. Работать и учиться будет тяжеле чем на той же Java. Пишут realtime или высокопроизводительные приложения, игры, мультимедиа, системное и индустриальное ПО, science-related ПО. Java больше популярна в enterprise (банки, финансы) и в вебе на серверах (Яндекс например). Стоит или нет решать вам.
    Ответ написан
    Комментировать
  • Какие существуют интересные задачи с применением нейронных сетей?

    tsarevfs
    @tsarevfs
    C++ developer
    Я когда курсовик по ML делал, пытался погоду на завтра предсказать по данным с метеостанции. На вопрос "будет ли завтра теплее?" получалось с точностью 61% отвечать.
    Ответ написан
  • Где найти интересные задачи по с++ разного уровня?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    http://acmp.ru/
    Еще в школе мне очень понравилось решать такую задачу:
    Дана строка длины L (30 < L < 1000), представляющая собой предложение на русском языке, зашифрованное шифром цезаря с неизвестным сдвигом K (0 < K < 33). Выведите исходное предложение.
    Например:
    input.txt "Цхчёкхюфвр юлтхилс - дщх щхщ, сщх клтжлщ йжкхшщп зло ъкхихтгшщипё."
    output.txt "Порядочный человек - это тот, кто делает гадости без удовольствия."
    Ответ написан
    2 комментария
  • Что правильно прописать в данном случае в код?

    tsarevfs
    @tsarevfs
    C++ developer
    А так не пробовали?
    Ответ написан
    Комментировать
  • Как сделать виджет для блокировки клавиатуры Ubuntu?

    tsarevfs
    @tsarevfs
    C++ developer
    На питоне будет проще. Гуглится добавление иконки в трей, ну и в колбеке делаете, то что руками прописывали.
    Ответ написан
    3 комментария