• Состоит список только лишь из единиц, или нет?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    import random
    import numpy as np
    
    RANGE = 1000
    data = np.ones(RANGE)
    data[random.randint(0, RANGE)] = random.choice([1, 42])
    data = list(data)
    
    def check_ones1():
        result = True
        for im in data:
            if im != 1:
                result = False
                break
        return result
    
    def check_ones2():
        return all(map(lambda x:x==1, data))
    
    def check_ones3():
        return data.count(1) == len(data)
    
    assert check_ones1() == check_ones2() == check_ones3()
    
    print(check_ones1())

    Если один элемент - не единица:
    # False
    
    %timeit check_ones1()
    69.6 µs ± 779 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
    %timeit check_ones2()
    94 µs ± 936 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
    %timeit check_ones3()
    87.7 µs ± 633 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)


    если все единицы:
    # True
    
    %timeit check_ones1()
    93.5 µs ± 776 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
    %timeit check_ones2()
    124 µs ± 374 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
    %timeit check_ones3()
    86.9 µs ± 566 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
    Ответ написан
    Комментировать
  • Состоит список только лишь из единиц, или нет?

    @Wispik
    Писал в комментариях, напишу и как ответ
    Попробуй отсортировать список и проверить первый и последний элемент, должно работать быстрее чем перебор
    arr = [....]
    sorted(arr)
    if arr[0] == 1 and arr[-1] == 1:
        ...
    Ответ написан
  • Как получить высокий CTR на фрилансе?

    @AVKor
    Как получить высокий CTR на фрилансе?

    Нанять фрилансера с высоким CTR, чтобы он рассказал, как это делается.
    Ответ написан
    1 комментарий
  • Создание многопользовательского сервера на го?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Go язык общего назначения, так что все возможно.
    Плюсы его в простоте. Одном бинарнике, то есть все отлично

    1) раз мы делаем через WEB, то используем веб-сокеты? Есть ли какие-то еще интересные и практичные варианты для моей цели? Так же, интересует максимальное кол-во игроков? Как я понимаю это 64к человек на сервер? Или же нет?

    Я бы рекомендовал UDP. Один порт и все, пробивание файрволов и серых адресов описано.
    Кроме того в случае TCP добавляете второй IP и получаете N * 65000

    2) Как стоит разделять комнаты? Делать все в одном инстансе или для каждой комнаты свой отдельный? Хранить на одном сервере или для каждой комнаты свой личный?

    Все зависит от вашей логики. Я бы посоветовал мастер сервис, который раскидывает игрокам по воркерам и мигрирует с одного инстанса на другой как игрока так и комнату.

    3) Если на разных инстансах (или собственно серверах), то как в итоге соединять людей в них? В БД хранить порт комнаты на сервере или как то еще?

    В бд хранится общая конфигурация, в редисе текущий кэш для быстрого доступа

    4) Как при запуске GOшного инстанса сохранять и манипулировать им? Как указывать игрокам к какому подключаться?

    Есть мастер инстанс. Он же сигнальный сервер. Он отдает клиенту мета информацию о количестве серверов, игроках, пинге. Как вы там выберите не понятно, можно дать возможность пользователю выбрать, можно автоматом. В общем это уже архитектура
    Ответ написан
    4 комментария