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

    Sly_tom_cat
    @Sly_tom_cat
    .
    А чем именно ОТП TOTP, HOTP не подходят?

    Не нравится время и счетчик - засуньте на вход алгоритма хеш от вашего документа. Но только это будет уже не OTP, т.к. для одного документа всегда будет один и тот же пароль.
    Ответ написан
    2 комментария
  • Как написать код для определения суммарного объема вложенных друг в друга шаров?

    Sly_tom_cat
    @Sly_tom_cat
    .
    Не надо таких неоптимальных алгоритмов.
    Т.е. не надо каждый раз считать объем.

    У вас между стенками всех 12 шаров нет зазоров. т.е. можно весь этот объем считать общим. У нас есть:
    внутри шарообразная полость диаметром 10 и 12 слоев с 5 см стенками, т.е. каждый новый слой увеличивает диаметр на 10.

    Т.о. у вас наружный диаметр = 10 + 10 * 12 = 130

    Далее считаем объем по наружному диаметру и вычитаем объем полости (та же формула но по внутреннему диаметру)

    Никаких циклов - не надо.
    Ответ написан
    Комментировать
  • Что не так в коде (Python3)?

    Sly_tom_cat
    @Sly_tom_cat
    .
    Можно как dimonchik2013 предложил, а можно действительно сплитом и просто словарь использовать, set нужен только для отработки случая когда нужно с лексикографическим порядком разруливать.

    #!/usr/bin/env python3
    
    counts = dict()
    with open('input.txt', 'rt') as fin:
        for line in fin:
            for word in line.split():
                counts[word] = counts.get(word, 0) + 1
        max = 0
        max_word = set()
        for word, cnt in counts.items():
            if cnt > max:
                max_word = {word}
                max = cnt
            if cnt == max:
                max_word.add(word)
        with open('output.txt', 'wt') as fout:
            fout.write(min(max_word))


    Кстати у вас в коде нет ничего именно по поводу лексикографического порядка при выборе слова из списка (тех у которых максимальная встречаемость равна и максимальна).

    И еще: Файл одним чехом читать - не совсем правильно. В задаче он может и 1МБ, а в жизни может оказаться 1Тб - и вы сразу создадите краш с переполнением - не факт что этот краш нельзя использовать для взлома системы, например.
    Ответ написан
    Комментировать
  • Программирование 24/7?

    Sly_tom_cat
    @Sly_tom_cat
    .
    Помню писал я дипломную работу, просто сел и начал кодить, кодил, кодил (примерно 24/7 целую неделю) и понял я что код уже огромный, а решения и близко нет: куча ошибок, немерянный код по обработке исключений....
    Ну а когда я просто остановился и задумался, то достал конспект, нарисовал граф конечного автомата под свою задачу и за один вечер написал код, который нужно было.

    Да потом все-таки немного оформл обработку ошибок и прочую обвязку, но основной код был создан по картинке на листочке бумаги (часа 3 на рисование картинки и еще пара часов кодирования).

    Вот к чему я это вспомнил - потому, что кодингом многие задачи в принципе не решаются. Нужно головой (на листочке) сначала думать, а уже оформленное решение кодировать.

    И таких примеров в моей не слишком то программистской практике было много. Как только видишь что проект засыпается - нужно остановиться и переосмыслить все с самого начала, а уже потом начинать работу (возможно с самого начала).
    Но что важно заметить, иногда, не пройдя по неверному пути, и не поймешь: который на самом деле верный.... Так что, если не знаешь куда двигаться - можно начинать с тупого кодинга (но понимая, что очень вероятно все это пойдет в урну).
    Ответ написан
    Комментировать
  • Что не так в коде (Python3)?

    Sly_tom_cat
    @Sly_tom_cat
    .
    Без набора тестов - не понять какие не проходят.

    Кстати чтобы не считать количество итераций можно использовать под накопитель деталей которые нужно сделать - множество, а по окончанию алгоритма просто подсчитать число элементов в этом множестве.

    Да и в цикле - если вы идете по элементам списка то вам незачем идти по индексам, а потом получать элемент по индексу. Проще организовать цикл по самому списку тогда в переменной цикла у вас сразу будут элементы.

    Вот мой вариант вашего алгоритма (с озвученными выше изменениями):

    #!/usr/bin/env python3
    
    def do(n):
        tot.add(n)
        for i in arr[n-1]:
            if i not in tot:
                do(i)
    
    
    tot = set()
    arr = []
    for i in range(int(input())):
        arr.append(list(map(int,input().split())))
    do(1)
    print(len(tot))
    Ответ написан
    Комментировать
  • Кто занимается распределением памяти между озу и 3 уровнями процессорного кеша? Софт (программист) или железо (аппаратная часть)?

    Sly_tom_cat
    @Sly_tom_cat
    .
    Микрокод процессора этим рулит.

    Если понимать то как эти кеши работают, то да можно попробовать написать программу которая будет эффективно кэшироваться при исполнении, но не факт что какие-то данные гарантированно будут браться из кеша. Ведь задача же не одна исполняется на процессоре (как правило).
    Ответ написан
    Комментировать
  • Достаточно ли знаний алгебры за 9 класс для изучения алгоритмов и тп?

    Sly_tom_cat
    @Sly_tom_cat
    .
    Я в 9-м классе программировал на программируемом калькуляторе, и на ассемблере на компе который сам спаял из комплектующих.
    Попутно изучал PL1. Бейсик уже знал.
    И алгебра в программировании роли не играет.
    Так что берите книги по программированию, выберите язык (советую Python) и изучайте, программируйте (вместо того что бы задавать такие вопросы).
    Ответ написан
    Комментировать
  • Существуют войска для программистов?

    Sly_tom_cat
    @Sly_tom_cat
    .
    Какая же древняя эта наивность, что ваше образование может позволить вам сделать выбор где служить.....
    Выбор где служить не за вами, а за людьми которым пофиг до вашего образования.

    У меня братан с парашютом прыгал - думал в десант возьмут, ага - в распредку привезли, какой-то майор, взял их и в пустыню увез - дальняя радиосвязь. :(. Потом спросил он у того майора - почему он их взял - атот на полном серьезе ответил - "Да глянул - вроде лица не глупые. Решил - потяните"... и не ошибся же, надо заметить - потянули.
    Ответ написан
    Комментировать
  • Что не так в коде (Python3)?

    Sly_tom_cat
    @Sly_tom_cat
    .
    Используйте лучше регулярные выражения:
    s = input()
    res = re.findall(r'(-?\d?)x([+-]\d)=0', s)[0]
    a = (-1 if res[0] == '-' else
         1 if not res[0] else
         int(res[0]))
    b = int(res[1]) 
    print(('INF' if b == 0 else 'NO') if a == 0 else -b/a)
    Ответ написан
  • Arduino uno запитать 5v с компа, как сделать?

    Sly_tom_cat
    @Sly_tom_cat
    .
    Там же разъем есть (снизу-слева у вас на фото) - через него лучше и подавать. Хвост от какго-нибуть блока питания подобрать.

    Кроме того у вас на красно-черной паре уже в принципе стабилизированные +5В и их не нужно подавать на стабилизатор - т.е. их можно подать прямо на GND-5V.

    А через стабилизатор (он прямо над разъемом питания с тремя тонкими и одной широкой ногой) у вас будет падение - он не сможет из 5 сделать 5 - будет выдавать меньше.

    Но вообще там по USB все питаться должно.
    Ответ написан
    1 комментарий
  • Как создать список с суммами элементов другого списка?

    Sly_tom_cat
    @Sly_tom_cat
    .
    на уровне логики описанной в задании, и простейшими действиями:
    vals = [1,2,3,4,5]   # список со значениями 
    acc = 0                  # аккумулятор
    for i in range(len(vals)):   # проходим по списку
      acc + = vals[i]                    # увеличиваем аккумулятр на значение текущего элемента
      vals[i] = acc                       # запоминаем в оригинальном массиве накопленную сумму


    Если еще проще то можно не мудрить со сканированием оригинального массива.
    vals = [1,2,3,4,5]   # список со значениями 
    acc = 0                  # аккумулятор
    res = []
    for v in vals:
      acc + = v
      res.append(acc)
    Ответ написан
    Комментировать
  • Какую версию Python изучать в конце 2015 года?

    Sly_tom_cat
    @Sly_tom_cat
    .
    Как по мне так разница в версиях будет понятна только тогда, когда начнете сами программировать.

    На уровне учебных материалов (которых кстати больше по 2-й версии) разница - минимальна. Понимать в чем разница - все равно нужно, потому что на 2-м просто туча легаси кода написана.

    Но писать я бы советовал все-таки на 3.
    Ответ написан
    Комментировать