Перейти к публикации
  • Сейчас на странице   Всего пользователей: 0   (0 пользователей, 0 гостей)

Rooster

Программирование[9]

Перепись  

260 пользователей проголосовало

У вас нет прав на голосование в этом опросе, или на просмотр результатов опроса. Пожалуйста, войдите или зарегистрируйтесь для голосования в опросе.

Рекомендованные сообщения

PochtiKakLoda написал 8 минут назад:
(ne()) написал 25 минут назад:
Ilze написал 47 минут назад:
(ne()) написал 1 час назад:

Там люди в коментах к курсу пишут что так и не решили, либо решали несколько месяцев, неделю, год и понять не могу, то что говно на за пол часа - час выходит это нормально, или я просто мои решения неочень и так просто никто не пишет.

ты просто гений, старина

Гении на пд не сидят, факт
Просто не умея ничего нормально делать используя логику и визуализатор для скорости решения в итоге  высираются, но все через жопу и непонятно.
А в коментах как будто ебаные гении, решения в 3 строчки и все понятно, только в голову мне такие решения не идут в процессе решения, и после разбора нихрена не запоминаются.
А другие вообще решить не могут, хз...
Если ли смысл в таком обучении - не ясно до конца. 
Отсос хиккующих выблядков как по мне не приближается.
Зато до сертификата осталось 10% курса добить ;D

Хотя подождите, я ошибся, папич же сидел на пд

 

у многих проблемы с алгоритмами, ты просто плохо знаешь айтишников/студентов

просто у тебя щас такая стадия что даже такие простые тоже плохо идут, на 1 и 2 курсе большинство такие

со временем проходит, но до уровня гениев все равно не дойти никак, тут надо иметь талант

лучше бы конечно такой хуйней не занимался и как белый человек в веб вкатился

 

ну я и собираюсь в веб :D
сейчас по плану добить этот курс, потом более подробно курс посложнее по python, чтоб разобраться с языком нормально, потом курс какой-нибудь по sql и переходить на изучение какого-нибудь django, ну я это уже говорил. 
Крч если все нормально будет идти планирую с курсами к концу июля закончить, а в августе буду стараться все это как-то обобщить и в веб углублять, ближе к рабочим моментам (пока не знаю как, ну да и рано об этом). Ну и т.к. бабки будут заканчиваться в сентябре нужно будет уже искать хоть какую-то работу, надеюсь хватит этого. 
Пока план примерно такой в голове вырисовывается. 
А возможно у меня ничего не получится и пойду работать сисадмином обратно, ну ничего, там python+sql тоже пригодятся, с этими знаниями можно и на зп повыше претендовать. Или в тестировщики говорят несложно вкатиться.

GoldRobot написал 10 минут назад:
(ne()) написал 36 минут назад:

Гении на пд не сидят, факт

Я же сижу, потому факт что сидят.

Приношу свои извинения. 


Доброта и взаимовыручка в разделе железо

OK4eIq8maRQ.jpg

Поделиться сообщением


Ссылка на сообщение
(ne()) написал 40 минут назад:

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

Ну тогда для i1 - 1 проверку убрать, т.к. там оно также работает.

(ne()) написал 42 минуты назад:

А вот по второму и третьему как-то не совсем понятно, есть пример какой-нибудь простой чтоб разобраться, а то я постоянно какие-то индексы увеличиваю во всех задачах, и как остаток от деления может помочь границы проверить?

Ну прочитай про 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()
  

 

(ne()) понравилось это

Поделиться сообщением


Ссылка на сообщение
DeadMage написал Только что:
(ne()) написал 1 час назад:

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

Ну тогда для i1 - 1 проверку убрать, т.к. там оно также работает.

(ne()) написал 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()
  

 

О, спасибо. 
Завтра почитаю, попробую разобраться, че то задачки трахнули мой мозг в итоге и уже ничего не понятно.
Там тема наконец-то началась, ФУНКЦИИ, это пожалуй лучше тоже на свежую голову отложить.
А то я в прошлом курсе когда проходил не сильно разобрался, когда по ним материал посложнее пошел.

Кстати, слышал мнение что стоит пк и мобильник перевести на английский язык, чтоб быстрее к нему привыкнуть, как думаете есть смысл от этого, или это все мелочи и особо ничего не принесет кроме дискомфорта?


Доброта и взаимовыручка в разделе железо

OK4eIq8maRQ.jpg

Поделиться сообщением


Ссылка на сообщение

вот такие джуны потом работают с нормальными быдлокодерами :dablya:

немного шокирует


:zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:

:zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:    всё что пишу -- шизофренический бред     :zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:

:zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:

Поделиться сообщением


Ссылка на сообщение
(ne()) написал 6 часов назад:

О, спасибо. 
Завтра почитаю, попробую разобраться, че то задачки трахнули мой мозг в итоге и уже ничего не понятно.
Там тема наконец-то началась, ФУНКЦИИ, это пожалуй лучше тоже на свежую голову отложить.
А то я в прошлом курсе когда проходил не сильно разобрался, когда по ним материал посложнее пошел.

Кстати, слышал мнение что стоит пк и мобильник перевести на английский язык, чтоб быстрее к нему привыкнуть, как думаете есть смысл от этого, или это все мелочи и особо ничего не принесет кроме дискомфорта?

Та возьми и переведи, поймешь, будет ли дискомфорт такой, что перекроет плюсы от очевидной пользы... И что ты ноешь, нет задачи шпарить оптимальное решение за 5 минут, иначе сиди  еще полгода шлифуй задачки. Я помню, эту задачу тоже за час решил в похожем ключе, и похуй как-то, посмотрел пооптимальней решений, попытался усвоить. Надо понимать, что, во-первых, есть ребята с попрямей головой, во-вторых, некоторые курс проходят для освоения питона уже после какого-то опыта в других языках. Твоя задача помимо, собственно, знаний получения, если вдруг ты не только тут драмы строчишь, а и в реальности можешь быть неуверенным при устройстве - эту неуверенность вытравить к тому моменту, ибо это фактор весомый.

Поделиться сообщением


Ссылка на сообщение

И я тебе затирал про Ruby, что он ниче так. Господа тут поясняли, что еще хуже питона сей язык будет, ну дак вот, пригляделся чуть больше, действительно, согласие укрепляется в моем сердце, красиво и наклепать просто в рубях-рельсах, но похожий синтаксисом Elixir куда мощнее, а для обычных приложух и Джанга норм, а Python хорош разнообразием применения. Так что прошу прощения, даже если чисто веб смотришь, то в топку Ruby, это прикольный мопед, но на обочине эволюционной трассы лишь резвится, не на основной полосе... 

Поделиться сообщением


Ссылка на сообщение
CornyCheesyGrape написал 5 часов назад:
(ne()) написал 12 часов назад:

О, спасибо. 
Завтра почитаю, попробую разобраться, че то задачки трахнули мой мозг в итоге и уже ничего не понятно.
Там тема наконец-то началась, ФУНКЦИИ, это пожалуй лучше тоже на свежую голову отложить.
А то я в прошлом курсе когда проходил не сильно разобрался, когда по ним материал посложнее пошел.

Кстати, слышал мнение что стоит пк и мобильник перевести на английский язык, чтоб быстрее к нему привыкнуть, как думаете есть смысл от этого, или это все мелочи и особо ничего не принесет кроме дискомфорта?

Та возьми и переведи, поймешь, будет ли дискомфорт такой, что перекроет плюсы от очевидной пользы... И что ты ноешь, нет задачи шпарить оптимальное решение за 5 минут, иначе сиди  еще полгода шлифуй задачки. Я помню, эту задачу тоже за час решил в похожем ключе, и похуй как-то, посмотрел пооптимальней решений, попытался усвоить. Надо понимать, что, во-первых, есть ребята с попрямей головой, во-вторых, некоторые курс проходят для освоения питона уже после какого-то опыта в других языках. Твоя задача помимо, собственно, знаний получения, если вдруг ты не только тут драмы строчишь, а и в реальности можешь быть неуверенным при устройстве - эту неуверенность вытравить к тому моменту, ибо это фактор весомый.

И как, устроился куда-нибудь работать уже?


Доброта и взаимовыручка в разделе железо

OK4eIq8maRQ.jpg

Поделиться сообщением


Ссылка на сообщение
CornyCheesyGrape написал 5 часов назад:

Надо понимать, что,

сын джастдуита?

 

(ne()) написал 25 минут назад:
CornyCheesyGrape написал 5 часов назад:
(ne()) написал 12 часов назад:

О, спасибо. 
Завтра почитаю, попробую разобраться, че то задачки трахнули мой мозг в итоге и уже ничего не понятно.
Там тема наконец-то началась, ФУНКЦИИ, это пожалуй лучше тоже на свежую голову отложить.
А то я в прошлом курсе когда проходил не сильно разобрался, когда по ним материал посложнее пошел.

Кстати, слышал мнение что стоит пк и мобильник перевести на английский язык, чтоб быстрее к нему привыкнуть, как думаете есть смысл от этого, или это все мелочи и особо ничего не принесет кроме дискомфорта?

Та возьми и переведи, поймешь, будет ли дискомфорт такой, что перекроет плюсы от очевидной пользы... И что ты ноешь, нет задачи шпарить оптимальное решение за 5 минут, иначе сиди  еще полгода шлифуй задачки. Я помню, эту задачу тоже за час решил в похожем ключе, и похуй как-то, посмотрел пооптимальней решений, попытался усвоить. Надо понимать, что, во-первых, есть ребята с попрямей головой, во-вторых, некоторые курс проходят для освоения питона уже после какого-то опыта в других языках. Твоя задача помимо, собственно, знаний получения, если вдруг ты не только тут драмы строчишь, а и в реальности можешь быть неуверенным при устройстве - эту неуверенность вытравить к тому моменту, ибо это фактор весомый.

И как, устроился куда-нибудь работать уже?

чел, ты просил меня комент кода, я те дал комент, ты попробовал его осмыслить?


:zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:

:zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:    всё что пишу -- шизофренический бред     :zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:

:zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:

Поделиться сообщением


Ссылка на сообщение
E1azor написал 2 минуты назад:
CornyCheesyGrape написал 6 часов назад:

Надо понимать, что,

сын джастдуита?

 

(ne()) написал 29 минут назад:
CornyCheesyGrape написал 6 часов назад:
(ne()) написал 12 часов назад:

О, спасибо. 
Завтра почитаю, попробую разобраться, че то задачки трахнули мой мозг в итоге и уже ничего не понятно.
Там тема наконец-то началась, ФУНКЦИИ, это пожалуй лучше тоже на свежую голову отложить.
А то я в прошлом курсе когда проходил не сильно разобрался, когда по ним материал посложнее пошел.

Кстати, слышал мнение что стоит пк и мобильник перевести на английский язык, чтоб быстрее к нему привыкнуть, как думаете есть смысл от этого, или это все мелочи и особо ничего не принесет кроме дискомфорта?

Та возьми и переведи, поймешь, будет ли дискомфорт такой, что перекроет плюсы от очевидной пользы... И что ты ноешь, нет задачи шпарить оптимальное решение за 5 минут, иначе сиди  еще полгода шлифуй задачки. Я помню, эту задачу тоже за час решил в похожем ключе, и похуй как-то, посмотрел пооптимальней решений, попытался усвоить. Надо понимать, что, во-первых, есть ребята с попрямей головой, во-вторых, некоторые курс проходят для освоения питона уже после какого-то опыта в других языках. Твоя задача помимо, собственно, знаний получения, если вдруг ты не только тут драмы строчишь, а и в реальности можешь быть неуверенным при устройстве - эту неуверенность вытравить к тому моменту, ибо это фактор весомый.

И как, устроился куда-нибудь работать уже?

чел, ты просил меня комент кода, я те дал комент, ты попробовал его осмыслить?

Мне казалось что я отвечал. Ну в целом то ты почти то же самое что и DeadMage написал, ну кроме моментов со второй матрицей и хранения части таблицы.
По тому что DeadMage написал он мне позже еще расширенный комент дал, и я как раз собирюсь сегодня в этом разобраться, по остатку от деления и xrange.
А по поводу создания второй матрицы - я не совсем понял что это даст, собственно говоря? Там по условию ответ построчно выдается, т.е. мне сама матрица вторая не нужна, я просто не понимаю особо что мне даст создание второй матрицы, ускорит работу программы из-за того что условий меньше станет?
А с хранением отдельных строк - идея интересная, ведь получается что можно хранить три строки всего, и индексы элементов для подсчета всегда будут одинаковыми, нужно их просто перезаписывать в цикле, и учесть варианты с одной входной строкой и двумя.


Доброта и взаимовыручка в разделе железо

OK4eIq8maRQ.jpg

Поделиться сообщением


Ссылка на сообщение

с xrange не надо разбираться, это артефакт от питона2. в питоне3 есть смысл пользоваться только range, поэтому смотри не запутайся, читая комменты на стэковерфлоу пятилетней давности, где сравнивают эффективность range и xrange

Поделиться сообщением


Ссылка на сообщение
(изменено)
(ne()) написал 8 минут назад:

что мне даст создание второй матрицы, ускорит работу программы из-за того что условий меньше станет?

на питоне наверно разницы не будет или будет хуже после оптимизации

в норм языках хз

ну идея в том, что когда выпёрдываешь ответ в файл у тебя подгружаются всякие функции и файловые буферы в кеш, а потом снова возвращаешься в своей исходной матрице, короче нагрузка на кэш чрезмерная, на современных процах мб и похуй

 

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

 

условия или остатки от деления внутрия цикла понятно что не нужны

хотя есть такой приём типа фиктивные строки/столбцы добавить чтобы упростить код и всякая ебала с отдельными случаями пропала


Изменено пользователем E1azor

:zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:

:zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:    всё что пишу -- шизофренический бред     :zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:

:zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:

Поделиться сообщением


Ссылка на сообщение
E1azor написал 1 минуту назад:
(ne()) написал 8 минут назад:

что мне даст создание второй матрицы, ускорит работу программы из-за того что условий меньше станет?

на питоне наверно разницы не будет или будет хуже после оптимизации

в норм языках хз

ну идея в том, что когда выпёрдываешь ответ в файл у тебя подгружаются всякие функции и файловые буферы в кеш, а потом снова возвращаешься в своей исходной матрице, короче нагрузка на кэш чрезмерная, на современных процах мб и похуй

 

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

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

 

moonfangtopich написал 10 минут назад:

с xrange не надо разбираться, это артефакт от питона2. в питоне3 есть смысл пользоваться только range, поэтому смотри не запутайся, читая комменты на стэковерфлоу пятилетней давности, где сравнивают эффективность range и xrange

Понял, принял, спасибо. Тут легко запутаться, конечно. Не удивительно почему в курсах про xrange нигде не упоминается. Хотя в целом знать в любом случае о существовании хотя бы нужно


Доброта и взаимовыручка в разделе железо

OK4eIq8maRQ.jpg

Поделиться сообщением


Ссылка на сообщение

уже были ссылки на гисты элазора, или этот топик не достоин лицезреть код лучшего за бесплатно?

Поделиться сообщением


Ссылка на сообщение
(ne()) написал 9 минут назад:

если вторую матрицу не создавать, а перезаписывать в первую, то тогда нужно минимум 4 строки хранить

Вроде всего 2 строки достаточно хранить. Первую, чтобы потом добавить к последней и ту которую только что обновлял, чтобы прибавить к следующей. Если сверху вниз идти.

(ne()) написал 14 минут назад:

проще с началом

тут хуйня в том что первую строку никак не высрать пока последняя строка не известна :dablya:


:zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:

:zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:    всё что пишу -- шизофренический бред     :zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:

:zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:

Поделиться сообщением


Ссылка на сообщение
E1azor написал 1 минуту назад:
(ne()) написал 16 минут назад:

если вторую матрицу не создавать, а перезаписывать в первую, то тогда нужно минимум 4 строки хранить

Вроде всего 2 строки достаточно хранить. Первую, чтобы потом добавить к последней и ту которую только что обновлял, чтобы прибавить к следующей. Если сверху вниз идти.

(ne()) написал 16 минут назад:

проще с началом

тут хуйня в том что первую строку никак не высрать пока последняя строка не известна :dablya:

так тут элементы сверху, снизу и слева справа прибавляются, соответственно чтоб посчитать сумму этих элементов нужно хранить строку выше, текущую, строку ниже.
Ну так для первой итерации нужно взять строки len(a) - 1, 0, 1, потом 0,1,2, потом 1, 2, 3. Мы же все строки и так знаем, они изначально вводятся, их потом просто из списка брать. 
Ну либо забить хер и так же проходится по элементам, только грамотнее это реализовать.


Доброта и взаимовыручка в разделе железо

OK4eIq8maRQ.jpg

Поделиться сообщением


Ссылка на сообщение
(изменено)

если они изначально вводятся то изначально хранится вся матрица целиком

 

 

 

  

nobodies написал 20 минут назад:

уже были ссылки на гисты элазора, или этот топик не достоин лицезреть код лучшего за бесплатно?

вот есть немного, но там не доделано

 


Изменено пользователем E1azor

:zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:

:zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:    всё что пишу -- шизофренический бред     :zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:

:zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:

Поделиться сообщением


Ссылка на сообщение
(изменено)
E1azor написал 3 минуты назад:

если они изначально вводятся то изначально хранится вся матрица целиком

Ну да, это по условию задачи так. Крч нужно просто по индексам по человечески пройтись и все.
Я изначально получается твою мысль не понял, но да, так не получится сделать.
Я и думаю, а нафига эти строки хранить отдельно, для упрощения работы с индексами чтоль...А теперь понял что ты условие задачи не видел ;D

DeadMage написал 13 часов назад:
(ne()) написал 15 часов назад:

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

Ну тогда для i1 - 1 проверку убрать, т.к. там оно также работает.

(ne()) написал 15 часов назад:

А вот по второму и третьему как-то не совсем понятно, есть пример какой-нибудь простой чтоб разобраться, а то я постоянно какие-то индексы увеличиваю во всех задачах, и как остаток от деления может помочь границы проверить?

Ну прочитай про 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()
  

 

Кстати, а как лучше, как у тебя обозначать переменную lenght = len(a), а потом ее в принт вписывать как a[0 % lenght], или сразу писать a[0 % len(a)] ?
Это наверно дольше выйдет, т.к. в каждое значение функция подставляетсЯ, дольше вычисляется и все такое?
Просто я смотрю на решения из этого курса и все так и наровят сократить примерно до такого, типо код на 2 строчки короче выходит


Изменено пользователем (ne())

Доброта и взаимовыручка в разделе железо

OK4eIq8maRQ.jpg

Поделиться сообщением


Ссылка на сообщение
(ne()) написал 27 минут назад:
E1azor написал 30 минут назад:

если они изначально вводятся то изначально хранится вся матрица целиком

Ну да, это по условию задачи так. Крч нужно просто по индексам по человечески пройтись и все.
Я изначально получается твою мысль не понял, но да, так не получится сделать.
Я и думаю, а нафига эти строки хранить отдельно, для упрощения работы с индексами чтоль...А теперь понял что ты условие задачи не видел ;D

DeadMage написал 13 часов назад:
(ne()) написал 15 часов назад:

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

Ну тогда для i1 - 1 проверку убрать, т.к. там оно также работает.

(ne()) написал 15 часов назад:

А вот по второму и третьему как-то не совсем понятно, есть пример какой-нибудь простой чтоб разобраться, а то я постоянно какие-то индексы увеличиваю во всех задачах, и как остаток от деления может помочь границы проверить?

Ну прочитай про 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()
  

 

Кстати, а как лучше, как у тебя обозначать переменную lenght = len(a), а потом ее в принт вписывать как a[0 % lenght], или сразу писать a[0 % len(a)] ?
Это наверно дольше выйдет, т.к. в каждое значение функция подставляетсЯ, дольше вычисляется и все такое?
Просто я смотрю на решения из этого курса и все так и наровят сократить примерно до такого, типо код на 2 строчки короче выходит

 

 

для начала лучше бы ты уже выучил что пишется length а не lenght 

len complexity - O(1) 
метод просто возвращает переменную, и обычно "вызов метода" тоже очень простая операция

 

По Мартину "Clean Code" всегда лучше вызывать метод напрямую (он там вызывает даже методы с вычислениями) по несколько раз в одной функции что бы уменьшить сложность самой функции. Меньше переменных, меньше состояний = меньше сложность. Особенно с названиями li, lj.
Кстати перестань юзать переменную 'i' для foreach. Она используется для индексов как в примере сверху. 

Поделиться сообщением


Ссылка на сообщение
(ne()) написал 41 минуту назад:

дольше вычисляется

питон это говноязык

можно алгоритм улучшить а станет медленнее

именно на питоне наверно быстрее всего будет если оперировать строками матрицы

к одной строке прибавить другую, сдвинутую ну хз как там

типа массивные операции питон быстро должен делать


:zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:

:zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:    всё что пишу -- шизофренический бред     :zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:

:zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:

Поделиться сообщением


Ссылка на сообщение
PochtiKakLoda написал 3 минуты назад:
(ne()) написал 36 минут назад:
E1azor написал 38 минут назад:

если они изначально вводятся то изначально хранится вся матрица целиком

Ну да, это по условию задачи так. Крч нужно просто по индексам по человечески пройтись и все.
Я изначально получается твою мысль не понял, но да, так не получится сделать.
Я и думаю, а нафига эти строки хранить отдельно, для упрощения работы с индексами чтоль...А теперь понял что ты условие задачи не видел ;D

DeadMage написал 14 часов назад:
(ne()) написал 15 часов назад:

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

Ну тогда для i1 - 1 проверку убрать, т.к. там оно также работает.

(ne()) написал 15 часов назад:

А вот по второму и третьему как-то не совсем понятно, есть пример какой-нибудь простой чтоб разобраться, а то я постоянно какие-то индексы увеличиваю во всех задачах, и как остаток от деления может помочь границы проверить?

Ну прочитай про 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()
  

 

Кстати, а как лучше, как у тебя обозначать переменную lenght = len(a), а потом ее в принт вписывать как a[0 % lenght], или сразу писать a[0 % len(a)] ?
Это наверно дольше выйдет, т.к. в каждое значение функция подставляетсЯ, дольше вычисляется и все такое?
Просто я смотрю на решения из этого курса и все так и наровят сократить примерно до такого, типо код на 2 строчки короче выходит

 

Показать больше  

 

для начала лучше бы ты уже выучил что пишется length а не lenght 

len complexity - O(1) 
метод просто возвращает переменную, и обычно "вызов метода" тоже очень простая операция

 

По Мартину "Clean Code" всегда лучше вызывать метод напрямую (он там вызывает даже методы с вычислениями) по несколько раз в одной функции что бы уменьшить сложность самой функции. Меньше переменных, меньше состояний = меньше сложность. Особенно с названиями li, lj.
Кстати перестань юзать переменную 'i' для foreach. Она используется для индексов как в примере сверху. 

ЛОЛШТО
а вот это было неожиданно, с первого класса так писал, хоть кто бы сказал что не так :D
т.е. все же a[0 % len(a)], если я все правильно сообразил? 
так, а если не юзать i без range, то как тогда перебрать сами элементы a, если я это вдруг хочу сделать? Или просто так не надо делать?


Доброта и взаимовыручка в разделе железо

OK4eIq8maRQ.jpg

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...