• Сортировка по повторным ячейкам в Excel?

    @Rioran
    Excel & VBA senior
    Если сортировка нужна в самом исходном документе и ответ Константина лично Вам не подходит: можете сделать вспомогательный столбец, в котором функцией COUNTIFS / СЧЁТЕСЛИМН можно подсчитать сколько раз номер из текущей строки встречается в столбце. И уже по этому вспомогательному столбцу можно сделать сортировку по убыванию.
    Ответ написан
    Комментировать
  • Создание чат-квеста. Как это сделать?

    @Rioran
    Excel & VBA senior
    Здравствуйте. Как раз на днях делаю похожую вещь, но в HTML+JS. Да, Ваш проект можно реализовать на Java - на ней и сложнее вещи делаются. Правда, если речь о приложении для Android - нужно будет мимоходом вникнуть в нюансы xml, возможно JSON или ещё чего. Ваш вопрос в целом довольно широкий и отвечать на него конкретикой сложно. Но всё же вот несколько моих личных предвзятых советов. Вам нужно декомпозировать Вашу задачу на отдельные части:
    1). Прописать дерево сюжета. Какие вопросы приводят к каким последствиям. У меня это реализовано через JSON: rioran.ru/js/lit-rpg-questions.js чтобы можно было динамически подходить к количеству ответов на вопрос. Впрочем, имеет смысл хранить в табличном виде - так легче редактировать.
    2). Продумать элементы механики. Участвуют ли дополнительные характеристики, инвентарь героя? Ограничивают ли они варианты ответов? По ссылке в пункте "1" у меня также часть механик "зашиты" в вопросы. Например, параметр "change_health" содержит массив значений, индекс которых соответствует индексу выбранного игроком ответа. А на основной странице rioran.ru/lit-rpg реализованы процедуры обработки этого параметра, если он в вопросе есть. Язык JavaScript, может отличаться от Java местами, хотя в чём-то похож.
    3). Продумать и реализовать интерфейс, с которым будет работать игрок. Если речь о формате псевдо-чата с героем, то можно:
    - нижнюю часть экрана отвести под кнопки авто-выбора ответа. То есть, герой спрашивает "Как мне поступить? Мои варианты: 1 ... 2 ... 3..." и кнопки с номерами появляются внизу. Вам нужно будет научиться генерировать произвольное количество кнопок, научиться выравнивать их по ширине чтобы они нормально заполняли экран (рекомендую цепляться за % ширины, так как на разных экранах пиксели будут разными), научиться присваивать кнопкам выполнение соответствующей команды (идею можно подсмотреть в моём демо, где у меня реализован выбор нескольких значений). Также почерпнуть дополнительные идеи реализации кнопок можно, посмотрев на их реализацию в Telegram, например.
    - Часть экрана выше области для кнопок можно отвести под поле для ввода произвольного текста. Это создаст атмосферность чата и позволит игроку, например, представиться и давать имена каким-нибудь объектам. В мобильном приложении это делается созданием базового поля для ввода текста. Нужно будет прописать процедуру для очистки этого поля ввода.
    - И, наконец, основную часть экрана будет занимать поле псевдо-чата. Имеет смысл делать его через WebView класс https://developer.android.com/guide/webapps нужно будет научиться добавлять поля с текстом, научиться давать этим полям ширину, например 95% от экрана, и задавать разный отступ репликам игрока например вправо, репликам собеседника влево. С треугольником, указывающим на сторону говорящего - для начала рекомендую забить, красивый элемент который необязателен, но сожрёт кучу времени. Лучше пилить в последнюю очередь. Все сообщения будут бесконечно добавляться снизу и игрок всегда сможет проследить всю историю переписки. В WebView, который основан на HTML, это сделать будет относительно просто.
    Хочу отметить, что для стартового проекта Вы выбрали относительно простую и интересную идею, что уже половина успеха. Советую реализовать в такой минимальной конфигурации и любые усложнения делать уже после того, как эта версия будет готова (например, идея для усложнения: игрок может переключаться между чатами с несколькими героями). Если опыта в программировании мало - предельно упрощайте механики и держите в узде фантазию. А то рискуете бросить проект не закончив. Расчитывайте, что для среднего человека без опыта программирования Ваша идея может занять около недели работы с утра до вечера. Без учёта дерева вопросов-ответов. Удачи!
    Ответ написан
    Комментировать
  • Как найти в каком диапазоне находится число?

    @Rioran
    Excel & VBA senior
    Мой вариант. Список встроен в функцию, на вход получаем строго "а". Всё, что будет больше ПРЕДпоследнего элемента - запишется в последнюю группу, даже если больше последнего элемента.

    def group_place(a):
        l = [100, 200, 300, 400, 500]
        for i in range(0, len(l)):
            if a <= l[i]: break
        return i
    Ответ написан
    Комментировать
  • Почему python неправильно делит с остатком?

    @Rioran
    Excel & VBA senior
    Дело в том, что при делении с остатком - остаток должен быть положительным. А это значит, что при делении с остатком отрицательных чисел нам нужно положительный остаток искать от МЕНЬШЕГО числа. Вот и получается, что при делении с остатком 42 на 10 мы отбрасываем меньшую, делимую на цело часть: 40. Остаётся 2. Так и при делении -42 с остатком мы отбрасываем меньшую, делимую на цело часть: -50, оставляя положительный остаток до -42 равный: -50 - (-42) = -50 + 42 = 8.
    Ответ написан
    Комментировать
  • Как сделать построчный вывод python?

    @Rioran
    Excel & VBA senior
    До кучи предлагаю альтернативный вариант без циклов.
    text = "'Hockey','Basketball','Auto','Lezy','Soccer','Sverxderzhava'"
    array = text.replace("'", "").split(",")
    array = list(filter(lambda x: (len(x)>=5) and (len(x)<=10), array))
    print("\n".join(array))
    Ответ написан
    Комментировать
  • Поиск значений в Pandas?

    @Rioran
    Excel & VBA senior
    Есть удобная функция - startswith, она тут хорошо подойдёт.

    import pandas as pd
    df = pd.DataFrame(['Zbx_login', 'Zbx_login1', 'Zbx_login2', 'Elg_login1', 'Elg_login3', 'Elg_login2'], columns=['name'])
    df_filtered = df[df.name.str.startswith('Elg_')]
    df_filtered
    Ответ написан
    Комментировать
  • Expected: expression, откуда ошибка компилятора VBA?

    @Rioran
    Excel & VBA senior
    Никита, здравствуйте.

    Между методом DataSeries и его аргументом Rowcol надо поставить пробел.

    Ссылка на официальную справку Микрософт ЗДЕСЬ.

    Update: не видел, что в комментарии к своему ответу rosperitus уже озвучил про пробел.
    Ответ написан
    Комментировать
  • Каким должен LMS?

    @Rioran
    Excel & VBA senior
    Давно как пользователь работал с одной LMS. Расскажу как помню. Обращаю внимание, в реальной LMS некоторые данные относятся к личным, подлежащим особой защите/шифрованию. Проект, в идеале, должен быть доступен всем с планшетов, телефонов, стационарных ПК и информационных терминалов (а-ля терминалы возле магазинов, где деньги на телефон кладёшь). Форма аутентификации логин/пароль. Интеграция с почтовыми сервисами и с сервисами рассылки СМС. Приложение было рассчитано на следующие группы пользователей:

    1). Интерфейс для учащегося.

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

    2). Интерфейс для преподавателя.

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

    3). Интерфейс для родителей.

    Повторяет интерфейс учащегося с поправкой: только чтение. Возможность закрытой переписки с преподавателями и директорам по частным вопросам учащегося. Просмотр медицинской карточки.

    4). Интерфейс для врача.

    Содержит информацию, дублирующую медицинскую карточку учащегося. Расписание прививок и прочих медицинских мероприятий.

    5). Интерфейс для сотрудника отдела кадров / директора.

    Доступ к управлению по личным делам всех учащихся, включая абитуриентов, и сотрудников учебного заведения. Возможность зачислить в учебное заведение учащегося, подавшего заявку через интернет-портал. Возможность распечатывать документацию по формам, утверждённым Министерством Образования. Возможность сформировать расписание на ВСЁ учебное заведение на заданный период.

    6). Интерфейс для разработчика.

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

    Честно говоря, это уже на несколько дипломов тянет. Я думаю, один алгоритм составления расписания - уже сам по себе диплом. Даже если на полноценное учебное заведение он будет работать день или два подряд.
    Ответ написан
    1 комментарий