Jump to content
  • Sign Up

DeadMage

User
  • Content Count

    484
  • Joined

  • Last visited

  • Time Online

    107d 11h 18m 46s

About DeadMage

  • Rank
    Dominating

Profile Information

  • Gender
    Not Telling

Recent Profile Visitors

4,249 profile views
  1. Пиши как тебе удобнее, т.к. в большинстве случаев разница только в удобочитаемости. Этот твой код никому оптимизированный не нужен, и как сказали, компилятор/интерпретатор сам все это оптимизирует. Я сначала написал без выноса, получается так: # INPUT for i in xrange(li): for j in xrange(lj): s = a[(i+1)%len(a)][j] s += a[i][j] s += a[i][(j+1)%len(a[i])] s += a[i][j-1] print(s, end = ' ') print() На мой вкус было слишком много вычислений/индексов в одном месте, плюс я же это писал для того чтобы объяснить - так что решил что вынести вверх лучше чем оставить как есть. Если бы нужно было сложить больше элементов, например все вокруг текущего включая по диагонали то было бы больше копипасты этого len(a), и соответственно больше смысла вынести за цикл. Попробуй решение для такого случая написать, думаю станет ясно. Если тебе нужны и ключи (индексы) и значения, то есть функции или методы которые возвращают итератор где каждое значение это кортеж из ключа и значения: for i, v in enumerate(['aaaa', 'bbb', 'cc']): print(i, v) # prints: # (0, 'aaaa') # (1, 'bbb') # (2, 'cc') Тут можешь больше почитать https://docs.python.org/3/tutorial/datastructures.html#looping-techniques
  2. Ну тогда для i1 - 1 проверку убрать, т.к. там оно также работает. Ну прочитай про range/xrange, в твоем случае просто можно: for i1 in range(len(a)): for j1 in range(len(a[i1])): print(i1, j1) С остатком от деления - это обычный способ перепрыгивать на начало если вышел за границу: a = [1, 2, 3] length = len(a) # length = 3 print(a[0 % length]) # print(a[0]) print(a[2 % length]) # print(a[2]) print(a[3 % length]) # print(a[0]) print(a[100502 % length]) # print(a[2]) print(a[-1 % length]) # print(a[2]) В твоей задаче просто укоротит код т.е. ифы будут не нужны вообще: # INPUT li = len(a) lj = len(a[0]) for i in xrange(li): for j in xrange(lj): s = a[(i+1)%li][j] s += a[i][j] s += a[i][(j+1)%lj] s += a[i][j-1] print(s, end = ' ') print()
  3. Проверять границы и для j1 - 1, для всех остальных проверка есть а для этого случае почему-то нет Использовать x/range() чтобы ходить по индексам вместо i/j1 += 1 и бесполезных i, j Использовать % (остаток от деления) чтобы убрать все проверки на границы
  4. Ну напиши что хотел Если ты про мой сниппет, то не понял что куда не вложено
  5. Ну вот, WhenAll это впринципе Promise.all и есть, т.к. Promise.all возвращает тебе новый промис который ты можешь ждать или не ждать. В js у промисов нельзя просто взять результат синхронно, как в .net (task.Result), и даже узнать есть ли результат/ошибка. Вместо этого нужно пользоваться .then, который тебе отдаст результат. Поэтому если бы Promise.all не возвращал результаты, а только то что они есть, пришлось бы писать что-то типа: let promises = [a, b]; let promiseAResult, promiseBResult; Promise.all(promises) .then(() => promiseA.then(result => promiseAResult = result)) .then(() => promiseB.then(result => promiseBResult = result)) .then(() => { // use promiseAResult/promiseBResult }); Вместо: let promises = [a, b]; Promise.all(promises) .then(([promiseAResult, promiseBResult]) => { // use promiseAResult/promiseBResult }); Но согласен что иметь доступ к состоянию промиса было бы лучше
  6. Ну да, если ты делаешь два разных запроса, если б эта функция возвращала результаты в рандомном порядке то пользы от неё бы было мало: И в спеке хоть прямо не написано, но в алгоритме ясно что порядок должен быть соблюден Ну не блочь, кто мешает то? Если тебе нужны и пупа и лупа чтобы что-то зарплату отдать, все равно обоих ждать придется. Это ж обычный примитив, и в твоем любимом шарпе есть: https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.task.waitall?view=netcore-3.1
  7. Ну выебываться ты начал Я просто указал на ошибку, вдруг на будущем интервью более допытливый вьювер будет. Я бы сказал что возврат результатов в нужном порядке это ключевая возможность, а не эдж кейс. Насчет пустого массива и обработки не промисов согласен, я бы тоже на интервью забил на них. Мог бы две минуты потратить, если уж полировал, и все случаи учесть
  8. @suez, promiseAll у тебя все таки неправильный: Думаю нужно извиниться перед @Rooster
  9. https://forums.playbattlegrounds.com/topic/56341-ban-twitch-streamer-arthas/
  10. Ага, установим npm модуль чтобы удалять node_modules Хотел протестить, но новый npm делает плоское дерево и винда сама справляется
  11. У меня был проект на Ember'е в винде, хотел удалить его, но не смог, потому что в node_modules были папки, путь к которым был длиннее виндового лимита :avtorklif: Пришлось их искать и переименовывать "ocherednoi-useless-modul" в "a"
  12. http://codeforces.com/ https://www.codewars.com/ http://acm.timus.ru/problemset.aspx
×
×
  • Create New...