Почему оператор goto считается быдлокодингом?
ТеньД Страдает, как минимум, читаемость кода. Скорее всего просядет быстродействие.
По быстродействию ровно наоборот.
Возьмём небольшой массив 1000,1000,1000,1000
Сколько лишних проверок выполнит твой код?
около 1000000000000 в случае, если необходимое значение окажется в конце.
А значит применение goto просто необходимо при больших массивах
Если что О(n) означает, что алгоритм выполнит задачу за один обход данных. (Или константное количество обходов, тк такое можно свести к одному обходу)
О(n^2) потребуется обход данных, внутри которого будет еще один вложенный обход тех же данных. И тд
Бывают алгоритмы О(log(n)) где даже не требуется обходить все данные. Например алглритм поиска значения в отсортированном списке
sda553 Если что О(n) означает, что алгоритм выполнит задачу за один обход данных. (Или константное количество обходов, тк такое можно свести к одному обходу)
О(n^2) потребуется обход данных, внутри которого будет еще один вложенный обход тех же данных. И тд
С рекурсией скорее всего можно и в один обход
string.find() используем?
Эльниньо Рекурсия - вызов функцией самой себя до достижения нужного результата.
та ты ЧО!
(447) количество действий и тп.
Эльниньо Напиши поиск нужного значения в четырёхмерном массиве без For
Уже давно написал и выложил сюда. У тебя с памятью что-то?
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int main(void)
5 {
6 unsigned long long i;
7 for (i = 1; i < 100000000000; i++){
8 unsigned long long j;
9 for (j = 1; j < 100000000000; j++){
10 unsigned long long k;
11 for (k = 1; k < 10000000000; k++){
12 if (k == (10000000000 - 1)) {
13 goto end;
14 }
15 }
16 }
17 }
18 end:
19 printf("This is the End.");
20 }
r2d2@darkstar:~/test$ time ./1
This is the End.
real 0m23,907s
user 0m23,907s
sys 0m0,000s
r2d2@darkstar:~/test$ time ./1
This is the End.
real 0m23,891s
user 0m23,892s
sys 0m0,000s
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <stdbool.h>
4
5 int main(void)
6 {
7
8 unsigned long long l = 0;
9 unsigned long long i;
10 bool need_leave = false;
11 for (i = 1; !need_leave && i < 10000000000; i++){
12 unsigned long long j;
13 for (j = 1; !need_leave && j < 10000000000; j++){
14 unsigned long long k;
15 for (k = 1; k < 10000000000; k++){
16 l++;
17 if (k == (10000000000 - 1)) {
18 need_leave = true;
19 break;
20 //goto end;
21 }
22 }
23 }
24 }
25 end:
26 printf("This is the End.");
27 }
r2d2@darkstar:~/test$ time ./2
This is the End.
real 0m25,883s
user 0m25,832s
sys 0m0,048s
r2d2@darkstar:~/test$ time ./1
This is the End.
real 0m24,725s
user 0m24,721s
sys 0m0,004s
r2d2@darkstar:~/test$ time ./1
This is the End.
real 0m26,676s
user 0m26,640s
sys 0m0,032s
Эльниньо По быстродействию ровно наоборот.
Возьмём небольшой массив 1000,1000,1000,1000
Сколько лишних проверок выполнит твой код?
около 1000000000000 в случае, если необходимое значение окажется в конце.
А значит применение goto просто необходимо при больших массивах
я ответил на твой вопрос?
нет разницы по быстродействию что с гото что без него
(454) правильно для кого?
Какого продолжения ты ждешь?
Эл просил сравнить 2 разных обхода циклов, с гоуту и с брэйком. Я сравнил. Результаты выше.
jsmith82 если чо, вебдев это не я
:)
(461) не всем это очевидно, Эл - не очевидно.
webdev Значит ты не понял о чем я.
Нет я не понял о чем ты.
Даркстар это дефолтовое имя хоста на слаке есичо.
webdev Ясное дело. Потому что на 10000000000 итераций происходит только одна проверка.
?
(467) O(n) не обозначает что то конкретное, лишь тенденцию стоимости алгоритма от количества элементов/итераций и т.п.
Эльниньо Ты говорил кол-во обходов.
На ходу условие менять не комильфо
Это курильшик писал. Но он наверное не понял о чем вопрос.
sda553 Если что О(n) означает, что алгоритм выполнит задачу за один обход данных. (Или константное количество обходов, тк такое можно свести к одному обходу)
О(n^2) потребуется обход данных, внутри которого будет еще один вложенный обход тех же данных. И тд
sda553 https://tproger.ru/articles/computational-complexity-explained/amp/
Косячище!!! Ячейка 30 : 2^n в таблице должна быть желтого цвета, а она черного.
sda553 Ну давайте что ли найдем в тыще строк наибольшую общую подстроку. У кого оптимальнее выйдет
Лес рук
Есть мысль как это сделать О(н) по операциям, но по памяти выходит не оптимально. Времени запрограммировать пока не было.
Твой вариант сколько использует памяти?
(475) o(n) по памяти так же
Прочитал сейчас утверждение: "Python постепенно вытесняет JavaScript".
Ваше мнение, гуру?
А то я начал игрушку на JS писать
stackoverflow Спасибо. Ты сделал мой день.
Там был вопрос. Прочитай ещё раз 5 внимательно.
Ах да - вопрос был к гуру. Извини
Ты сейчас сравнил яблоко с грушей.
На тебе кейсы питона:
Про кейсы жабаскрипта тебе напомнить?
stackoverflow Выпей боярочки, узбагойся, и пойми наконец разницу между питоном и жо есом.
Нормально ответить может кто-нибудь, [...]?
Мой опыт подсказывает, что чем больше [...], тем больше слово "Быдло" перед "кодер"
stackoverflow Тебе ответа немчинского с комментариями математиков мало?
Это мнение Немчинского. Есть ещё [...] туча мнений других спецов.
Я ваше мнение спросил. Отвечать не хочете. Жопой виляете
Эльниньо Прочитал сейчас утверждение: "Python постепенно вытесняет JavaScript".
Ваше мнение, гуру?
А то я начал игрушку на JS писать
В каких-то мизерных кейсах может кто-то и перешел с JS на Питон. На общей статистике никак не отражается. Продолжай писать на том, на чем писал.
Нет профессии Программист Питон.
Его используют люди различных профессий - девопсы, дата сайнтисты, специалисты по ML, автоматизаторы.
JavaScript же из другой оперы - его используют фронтендеры и специализированные бекендеры для микросервисов : извлечь из базы NoSql отдать клиенту.
Эльниньо Мой опыт подсказывает, что чем больше [...], тем больше слово "Быдло" перед "кодер"
Это мнение Немчинского. Есть ещё [...] туча мнений других спецов.
Я ваше мнение спросил. Отвечать не хочете. Жопой виляете
Ты долбоеб что ли? Какое мнение? Он тебе рассказал, зачем нужен питон. Я тебе повторил. Иди гугли, что скажут другие. Тоже самое.
И да, что за срашкинский тренд переходить с . на.. ?
Обычно ценятся спецы, которые и то, и другое умеют.
Уйти можно только с пыха.
stackoverflow Ты долбоеб что ли? Какое мнение? Он тебе рассказал, зачем нужен питон.
Тебя, тупой укроп, не спрашивали зачем какой язык. Спросили твоё мнение, по поводу, что Питон обогнал Жавускрипт по востребованности.
stackoverflow [...], ты лох. Востребованы спецы, умеющие и то, и другое. Точка.
Ещё один "гуру" жопой виляет интенсивно вместо ответа на простой вопрос.
Ты тоже будешь сейчас пафосно утверждать, что применение if - признак быдлокода, как твой земляк вебдев?
Эльниньо Ещё один "гуру" жопой виляет интенсивно вместо ответа на простой вопрос.
Ты тоже будешь сейчас пафосно утверждать, что применение if - признак быдлокода, как твой земляк вебдев?
Ну да, настоящая программа не должна содержать ни одного if. Только while.
Сам ты земляк этого лоха, лох! Охренел чтоли меня называть его земляком! Сучий потрох
Эльниньо похоже вы с ним земляки. while бляха муха :))))
stackoverflow Только while.
webdev Сам ты земляк этого лоха, лох! Охренел чтоли меня называть его земляком! Сучий потрох
Тебя сегодня [...] угощало сгущенкой?
stackoverflow Тебя сегодня [...] угощало сгущенкой?
Не знаю что это значит на вашей мове. Пиши нормально.
stackoverflow [...]
Это путин или эльниньо?
Вообщем профессионального разговора не будет. И эту ветку засрали, засранцы
stackoverflow пис
я с сидевшими мало общался, не ботаю по фени.
stackoverflow Ну да, настоящая программа не должна содержать ни одного if. Только while.
[smile=:D]
Ты точно программист?
Эльниньо [smile=:D]
Ты точно программист?
Ты вот точно нет. Почитай основы CS. Какие именно конструкции достаточны для имплементации алгоритма.
Цикл Пока и что еще?
stackoverflow Ты вот точно нет.
Открою тебе страшный секрет:
while строится на использовании if
Эльниньо Открою тебе страшный секрет:
while строится на использовании if
Ты действительно программист? А не наоборот?
stackoverflow Я видел логи зависшего PMD для твоего кода. Тебе потом в QA team этого продукта без собеседования и испыталки приняли.
Всё таки [...].
А так хотелось с программистами поболтать.
Видимо не судьба
stackoverflow Ты даже не сможешь условие на базе цикла ПОКА реализовать.
Мой алгоритм на базе Пока в учебнике и сейчас стандарт де-факто.
Ты кроме стучания пятками в грудь, чем похвалится можешь?
ОК, посуществу - ты в курсе про селениум? Вот там питон. Только там не язык важен, а инструмент.
Эльниньо Мой алгоритм на базе Пока в учебнике и сейчас стандарт де-факто.
Ты кроме стучания пятками в грудь, чем похвалится можешь?
Разработал жира модуль для корпоративного транснационального клиента. А ты?
Эльниньо Мой алгоритм на базе Пока в учебнике и сейчас стандарт де-факто.
Ты кроме стучания пятками в грудь, чем похвалится можешь?
Это обычный лоховской алгоритм, который каждый школьник знает. Нашел чем себя бить в грудь. Какое-то позорное достижение, придумать алгоритм, который и без тебя везде используется.
Я не с тобой разговариваю. Твой уровень аргументации я знаю
У тебя не спрашивали с кем ты разговариваешь
Подниму тему.
Эльниньо Так переделай (138) как надо
(ты задачу то хоть понял?)
Зацените, поиск массивов содержащих "yes" в одну строчку, без GOTO, FOR и IF/ELSE, можно вызывать рекурсивно:
const check = v => v.pop ? v.find(check) : v === 'yes';
Получение результатов r1, r2, r3, где m4 - это исходный массив:
const r1 = m4.find(check); const r2 = r1.find(check); const r3 = r2.find(check); const r4 = r3.find(check);
(516) неоптимально, ведь
1. фактически
const r1 = m4.find(check);
Уже обошел все элементы вглубь на 4 измерения и решил задачу. Вот только ответ не выдал.
2. Я точно уже не помню, что там за задача была, но разве там надо было не все "yes" найти? А то код, на глаз, ищет первое попавшееся yes и вроде как всё
Но в целом согласен, красивенько вышло. То что у эльниньи было в целую страницу см (268) уместилось в одну строчку. К тому же у твоего решения явное преимущество: оно не зависит от того сколько измерений в задаче в массиве, не завязан на 4 измерения. Можно хоть на 5, хоть на 6 эту строчку на травить и тд.
sda553 А то код, на глаз, ищет первое попавшееся yes и вроде как всё
Судя по этому коду, так и должно быть:
if m4[i1,i2,i3,i4] == Yes
{
goto Finish;
}
Но суть задачи нам не говорят, возможно можно сделать и более оптимально, если знать что именно нужно было в итоге получить, а не просто переписывать тупо код с одного языка на другой.
webdev Зацените, поиск массивов содержащих "yes" в одну строчку, без GOTO, FOR и IF/ELSE, можно вызывать рекурсивно:
const check = v => v.pop ? v.find(check) : v === 'yes';Получение результатов r1, r2, r3, где m4 - это исходный массив:
const r1 = m4.find(check); const r2 = r1.find(check); const r3 = r2.find(check); const r4 = r3.find(check);
Заценил. Неплохо
+(522) То есть find и map, опечатка. Чтобы можно было делать map только до тех пор, пока не найдено то что нужно, для оптимизации.
ЗЫ: Вот тут чуваки то же самое обсуждают:
https://stackoverflow.com/questions/57760111/javascript-map-find-at-the-same-time-findmap
console.log(a.find(x => expensiveFunction(x) > 100));
правда, тут, мэп неявный выходит через выражение в теле иной функции
jsmith82 вернее, так наверно
console.log(expensiveFunction(a.find(x => expensiveFunction(x) > 100)));
Тут как раз та проблема, которую пытаются решить.
Не нужно вызывать второй раз expensiveFunction с тем же аргументом, что и во время find, так как это не оптимально.
Кстати, я в своем коде уже нашел кое-что лишнее, что можно было бы упростить..
в любом случае expensiveFunction будет вызвана лишь один лишний раз.. так-то.. по идее, но и это напрягает, наверно
jsmith82 но и это напрягает, наверно
Так и есть. У меня как раз так получилось, и это напрягает.