@@ninthchain9275 Да понять это немудрено. Смысл заключается в том, что не обязательно возводить большое число "n1" в большую степень "n2", чтобы узнать последнюю цифру результата. Достаточно взять число, состоящее из последних двух цифр "n1" и возвести в степень числат из последних двух цифр "n2". Из уже из этого результата берем последнюю цифру. Но, есть исключение - для него пишем отдельное условие. На Python это выглядит так: def last_digit(n1, n2): if not n1 % 10 and n2: return 0 else: return ((n1 % 100) ** (n2 % 100)) % 10
Приведение типов таким способом, на мой взгляд, есть плохой пример: 1. сильная зависимость от особенностей языка, 2. чтение линейных условных операторов сильно усложняется от количества итераций.
В принципе проверку при x ^ 0 можно же просто написать как: if (str2 == 0) return 1; Ощущение что что-то упускаю только. Ну и ==, а не === потому что там строка, но это очевидно как бы.
Решение отличное, всё бы хорошо но английский тоже важен, было более чем странно услышать от вас «фэлс» произношение false, ну только не этого слова )) Ну прямо очень неожиданно.
Сколько в среднем у вас занял поиск такого алгоритма с момента первого прочтения задачи. Решение пришло сразу, или через время или может в другой день? Такого рода задачи попадаются на интервью?
За час решается спокойно, если раньше решал задачи по длинной арифметике. На интервью вряд ли дадут, она больше тут завязана на математическом аппарате, нежели чем на программировании.
Был уверен, что если в str2 будет строка слишком большая для перевода в число, то +str2 даст NaN, !+str2 даст true, +!+str2 даст 1. А оказывается, +(очень большая строка) дает Infinity.
Здравствуйте. Ваши видео очень интересные, вы отличаетесь от молодых программистов - видеоблогеров, видно, что вы умный и образованный человек) Интересно следить за ходом ваших мыслей. В интернете сложно найти информацию, о том как основательно и постепенно изучать IT. Нет информации где взять основу, базы для программирования которую дают в университете. Все изучают язык программирования, но как программировать, если ты не имеешь представления о том как работает компьютер, или как читать книгу "foundations of python network programming" если ты не знаешь как работает сеть. Поделитесь информацией где взять основы, или посоветуйте книги от основ до мастерства) Спасибо.
По тому как устроен компьютер есть хорошая книга " Цифровая схемотехника и архитектура компьютера". Также по программированию есть Столяров.А "Программирование введение в профессию".
@@carthago_delenda_est а то что не релевантно тратить 5 лет жизни на универ что бы постичь основы. От таких советчиков как вы надо держаться по дальше.
та не, фигня какая-то... такое можно даже средствами скриптов кс 1.6 сервера решить... без проблем... Вот другое дело было бы, если б надо было найти первые 2 цифры.
Не ясно при чем тут программирование. Аналогичная задача: определить делится ли число на 3. Идём в Гугл ищем "признак делимости на 3", пишем реализацию. Программиста я бы лучше попросил написать реализацию карриррования, композицию и частичное использования.
@@СергейРодин-ю3ъ нормальный программист знает то, что ему необходимо для решения задач. математика - это, конечно, очень здорово. но без знаний платформы/фреймворков зачастую быстро не поедешь. а ехать надо быстро.
@@АртП-м7ж согласен, математика в моей практике используется довольно редко. Но все равное ее знать желательно, т.к. она открывает много возможностей для оптимизации кода
@@chakchaky8521 рассуждение школьника, более менее взрослые люди такую ересь писать не будут...видимо ты застрял в том моменте, когда JS использовали только для создания слайдеров
@@АндрейБочарников-х5ъ ) я по сей день юзаю JS только для слайдеров в основном)))) Ну и для аяксов) Как в воду глядел) Ты пророк? А вообще я к нестрого типизированным языкам уже пару лет как плохо отношусь, хотя сам юзаю перл, руби и js почти каждый день(. Надеюсь в руби таки запилят строгую типизацию в этом году.
Прикольно конечно, но за такие размышления на теории чисел нас ругали. У вас абсолютно нет никакого доказательства, что где-то в какой-то момент цикличность может сломаться. Это не очевидные вещи... вы можете получать 1000 раз цикличность ,но на 1001 она может сломаться.
чел, последняя цифра числа возводится в степень (умножается на себя), после чего мы работаем с последней цифрой полученного числа и тд.тп. При этом если в результате Х повторений последняя цифра совпадает со стартовой - всё, цикл замкнулся, ты вернулся в абсолютное(!) начало. Какое сломаться на 1001? Логика же
Решение дичь костыльная. Смотрите как возводится в степень в двоичной системе - все станет куда проще. А то цикличность, частный случай и прочую ересь придумываете. А ведь это ещё просто целые числа....
А ты решил эту задачку или ты настолько крут, что можешь советы давать не разобравшись в условии? Давай ты для начала покажешь свое крутое решение, а потом поговорим. Пока выглядит, что ты просто не понял условие задачи.
даже с пояснением не могу сказать что понял на 100% =)
есть видео на английском. Где человек объясняет как считать корни в уме. Там есть аналогичная таблица квадратов.
@@ninthchain9275 Да понять это немудрено. Смысл заключается в том, что не обязательно возводить большое число "n1" в большую степень "n2", чтобы узнать последнюю цифру результата. Достаточно взять число, состоящее из последних двух цифр "n1" и возвести в степень числат из последних двух цифр "n2". Из уже из этого результата берем последнюю цифру. Но, есть исключение - для него пишем отдельное условие. На Python это выглядит так:
def last_digit(n1, n2):
if not n1 % 10 and n2:
return 0
else:
return ((n1 % 100) ** (n2 % 100)) % 10
Интересно, что как только услышал определение задачи, стал вырисовываться путь решения. Приятно что он совпал с вашим.
Спасибо за видео! Вот бы побольше видео про Codewars :)
У АйТиБороды стрим по codewars будет, на выходных вроде. Он на 10 часов забег планирует
Software Engineer - Soer спасибо!
+!+str2, видя такое индусы тихо плачут в сторонке =)
tl dr, oneliner ftw ... (не надо так)
это плохой код, он подходит только для оптимизации размера файла, или когда времени нет писать if else
@@Mike-hp3fh времени нет? Это типа, когда ты пишешь код в обрущающемся здании.
@@justamosquito191 когда падаешь в самолёте
@@Mike-hp3fh этот код нужен чтобы издеваться над джуном и показывать ему кто тут батя)))
"5 баллов не сложное но и не легкое" .
Я который пытается решить 8 уровень 🗿🗿🗿
Прошло 2 месяца, до какого дошёл?
@@hulahup ни до какого(
@@hulahup прогресса все ещё нет, в свое оправдание могу сказать что не было времени разбирать
@@ibramkadyrov9734 жаль
@@hulahup ещё как
Приведение типов таким способом, на мой взгляд, есть плохой пример: 1. сильная зависимость от особенностей языка, 2. чтение линейных условных операторов сильно усложняется от количества итераций.
Ты такой умный? Делай по своему.
Не стоит гордиться функциями в одну строчку ;-)
Хорошее задание, но не сложное. Просто нужно было вспомнить школьный курс алгебры. Круть! Мне нра!
В школе не преподают цикличность возведения всех чисел в квадрат)) Это уже сам должен догадаться) У вас всему в школе учат)))
Алгебра не занимается изучением свойств числа. Она занимается операциями над числами.
В принципе проверку при x ^ 0 можно же просто написать как: if (str2 == 0) return 1;
Ощущение что что-то упускаю только. Ну и ==, а не === потому что там строка, но это очевидно как бы.
ооочень простая задача
классическая теория чисел❤️
Очень круто мужик. Нашел ту же закономерность, только решение сделал кучей else if.
Я тоже, только заменил на case
Решение крутое, но такой код ужасно не читаем. У нас такой код называют WriteOnly. Написать написал, а прочитать потом нереально.
Не надо, это я так называю WriteOnly 😀😀😀😀😀 Шутка конечно, но я с Вами целиком согласен! Код пишется для человека а не для компа!
@@hmixa только не в случае с Codewars
джаваскрипт такой джаваскрипт) за возможность подумать вместе спасибо!
0:16 хотел сказать "различной степени тяжести")))
Решение отличное, всё бы хорошо но английский тоже важен, было более чем странно услышать от вас «фэлс» произношение false, ну только не этого слова )) Ну прямо очень неожиданно.
"Фолс"... Но "цвет на скорость не влияет" :)
@@i.am.rossalex а как же красный? Он же быстрее
Сколько в среднем у вас занял поиск такого алгоритма с момента первого прочтения задачи. Решение пришло сразу, или через время или может в другой день?
Такого рода задачи попадаются на интервью?
За час решается спокойно, если раньше решал задачи по длинной арифметике. На интервью вряд ли дадут, она больше тут завязана на математическом аппарате, нежели чем на программировании.
Про остаток от деления на 4 не разъяснил. Мне не понятна связь.
Функция Эйлера от 10 равна 4
Был уверен, что если в str2 будет строка слишком большая для перевода в число, то
+str2 даст NaN,
!+str2 даст true,
+!+str2 даст 1.
А оказывается, +(очень большая строка) дает Infinity.
у кодварсов раньше через execlp("cat", "cat", "...") можно было пропалить решения)
Ничего не понятно. Но очень интересно)
Миша, у тебя проблемы если ты не понял такую простую фигню
Красиво. Мне такая задача была на Ruby.
def last_digit(n1, n2)
n2.zero? ? 1 : ((n1 % 10) ** (n2 % 4 + 4)) % 10
end
круто
Здравствуйте. Ваши видео очень интересные, вы отличаетесь от молодых программистов - видеоблогеров, видно, что вы умный и образованный человек) Интересно следить за ходом ваших мыслей.
В интернете сложно найти информацию, о том как основательно и постепенно изучать IT. Нет информации где взять основу, базы для программирования которую дают в университете.
Все изучают язык программирования, но как программировать, если ты не имеешь представления о том как работает компьютер, или как читать книгу "foundations of python network programming" если ты не знаешь как работает сеть. Поделитесь информацией где взять основы, или посоветуйте книги от основ до мастерства) Спасибо.
Dmitry Minchenko ну просто, блин, охренительный ответ. Очень полезно.
По тому как устроен компьютер есть хорошая книга " Цифровая схемотехника и архитектура компьютера". Также по программированию есть Столяров.А "Программирование введение в профессию".
@@carthago_delenda_est ахаха ты сам то понял что написал?
@@carthago_delenda_est а то что не релевантно тратить 5 лет жизни на универ что бы постичь основы. От таких советчиков как вы надо держаться по дальше.
та не, фигня какая-то... такое можно даже средствами скриптов кс 1.6 сервера решить... без проблем... Вот другое дело было бы, если б надо было найти первые 2 цифры.
Не ясно при чем тут программирование.
Аналогичная задача: определить делится ли число на 3. Идём в Гугл ищем "признак делимости на 3", пишем реализацию.
Программиста я бы лучше попросил написать реализацию карриррования, композицию и частичное использования.
неплохо)
У меня пропали задачи на кодварс, ни у кого не было такой проблемы?
Тупо я,когда пришёл на егэ по информатике
Задача на знание алгебры, не программирования.
В точку! О том и речь. Обычный программист знает кучу фреймворков и библиотек, нормальный - математику.
@@СергейРодин-ю3ъ нормальный программист знает то, что ему необходимо для решения задач. математика - это, конечно, очень здорово. но без знаний платформы/фреймворков зачастую быстро не поедешь. а ехать надо быстро.
В олимпиадах почти все задачи математические.
@@АртП-м7ж согласен, математика в моей практике используется довольно редко. Но все равное ее знать желательно, т.к. она открывает много возможностей для оптимизации кода
@@JackFastGame удачи зарабатывать на математике, лось
3:15, получили, что 112 == 4)
А зачем так сложно? Можно же просто результат числа в степени перевести в строку и с ней взять последний индекс(число)
Покажи решение (код).
function func (num, pow) {
let resultString = num**pow + '';
return +resultString[resultString.length-1];
}
console.log(func(9, 2));
числа могут быть очень большие по несколько сот знаков, ты не можешь эффективно их возводить в квадрат.
@@user-bo7mb9cf4d лол, а ничего, что такой алгоритм будет очень долго выполнятся? Да и к тому же, не на всяком ПК такой алгоритм будет эффективным.
как до этого додуматься? =\
Вопрос ,имеют ли такие задачи место в реальном программирование?
ещё как имеют , но это уже для более продвинутых кодеров которые работают с данными и огромными базами данных
Зависит от того, что такое реальное программирование
Я извиняюсь , а когда это js - серы стали SoftwareE?
А кто говорил, что JS-серы - Software?
Js-еры - это няшколепы, а не инженеры)))) даже нода им уже не поможет....
@@chakchaky8521 рассуждение школьника, более менее взрослые люди такую ересь писать не будут...видимо ты застрял в том моменте, когда JS использовали только для создания слайдеров
@@АндрейБочарников-х5ъ ) я по сей день юзаю JS только для слайдеров в основном)))) Ну и для аяксов) Как в воду глядел) Ты пророк? А вообще я к нестрого типизированным языкам уже пару лет как плохо отношусь, хотя сам юзаю перл, руби и js почти каждый день(. Надеюсь в руби таки запилят строгую типизацию в этом году.
Но канал так называется Software E
Дело в том, что любое что пишет программист по сути софт, даже если это web, даже если js)
Очень интересно. Мой рейтинг Codewars на уровне 162 kyu
Там 80 левел максимальный
Мои глаза...
На C++ более сложные тесты чем на JS
Я бы не назвал эту задачу сложной... В моем понимании:
Сложные: 1, 2.
Средние: 3, 4
Легкие: 5, 6
Тривиальные: 7, 8.
ну я бы задачи 5 уровня тоже причислил к средним т.к. тут много интересных задач)
@@Dimaaasik Привет. Скинь ссылку о которой ты выше писал челу который перегорел
Прикольно конечно, но за такие размышления на теории чисел нас ругали. У вас абсолютно нет никакого доказательства, что где-то в какой-то момент цикличность может сломаться. Это не очевидные вещи... вы можете получать 1000 раз цикличность ,но на 1001 она может сломаться.
чел, последняя цифра числа возводится в степень (умножается на себя), после чего мы работаем с последней цифрой полученного числа и тд.тп. При этом если в результате Х повторений последняя цифра совпадает со стартовой - всё, цикл замкнулся, ты вернулся в абсолютное(!) начало. Какое сломаться на 1001? Логика же
Решение дичь костыльная. Смотрите как возводится в степень в двоичной системе - все станет куда проще. А то цикличность, частный случай и прочую ересь придумываете. А ведь это ещё просто целые числа....
А ты решил эту задачку или ты настолько крут, что можешь советы давать не разобравшись в условии? Давай ты для начала покажешь свое крутое решение, а потом поговорим. Пока выглядит, что ты просто не понял условие задачи.
@@S0ERDEVS согласен, а то говорит но решения сам не показывает!
@@S0ERDEVS мне тоже интересно посмотреть его решение о котором он почти сказал, да не договорил)
def number(n):
return n ** 2 % 10