Здравствуйте, ambel-vlad, Вы писали:
AV>вот только для двух концов надо все таки 4 числа. И при этом в р1 лежат два числа и в р2 тоже два числа. Так что они никак не могут быть копиями чего-то третьего.
тамже в мануале написано.
Копия при инициализации
тоесть
х = 5
x1,x2,x3 — уже будут содержать 5 и будут того же типа что Х, но это разные переменные. Это копии.
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, PC_2, Вы писали:
PC_>Ты опоздал с сравнениями. Уже все сравнили, перемеряли, переделали и забыли ...
Судя по вашей переписке с samius пока измерение еще продолжается. В результате чего, например, выяснилось, что изначально ты подсунул вообще нерабочий пример.
PC_>Если же всеже не дает тебе покоя этот пример, можешь посидеть попробовать реализовать хотябы короче. PC_>Я уже не говорю о проще и гибче.
Простота и краткость — это не самоцель. А вот насчет гибкости... Ну давай попробуем немного изменить условия задачи. Напиши мне универсальную функцию, которой на входе я смогу указать, из какого именно набора символов должна генериться каждая позиция пароля. Т.е. чтобы я смог, например, указать, что первый символ будет маленькой латинской буквой, второй — большой, третий — в любом регистре, а четвертый — будет цифрой. Желательно показать два различных вызова этой функции — с разной длиной пароля и разными наборами символов в каждом разряде.
П>>При том, что одна из причин их использования (помимо быстродействия) — как раз борьба с sql-инъекциями. Т.е. даже в sql люди стараются как можно дальше уйти от интерпретации динамически слепленного кода. PC_>Чтото они плохо стараются уйти, если честно ...
Нормально стараются. Параметризованные запросы вполне успешно работают в подавляющем большинстве случаев.
PC_>У вас за любой EXEC пытают каленым железом ? PC_>Странно что такие тимлиды еще живы ...
Всё просто: нет exec'ов — нет железа. И жизнь светла и прекрасна!
Здравствуйте, PC_2, Вы писали:
PC_>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>Я сходу не могу придумать задачу, которая бы решалась в таких языках имеющимися средствами хуже, чем с использованием eval.
PC_>Тогда давайте я вам подскажу. PC_>Может быть ... ммм ... генерация паролей ?
Разве что для языков, которые без евала не умеют комбинировать вычисления
let pg xs n = List.fold(fun ps _->[for p in ps do for a in xs -> p + a]) xs [2..n]
pg [for c in'a'..'z' -> new System.String(c, 1)] 3
|> printfn "%A"
Здравствуйте, Пацак, Вы писали:
П>Простота и краткость — это не самоцель. А вот насчет гибкости... Ну давай попробуем немного изменить условия задачи. Напиши мне универсальную функцию, которой на входе я смогу указать, из какого именно набора символов должна генериться каждая позиция пароля. Т.е. чтобы я смог, например, указать, что первый символ будет маленькой латинской буквой, второй — большой, третий — в любом регистре, а четвертый — будет цифрой. Желательно показать два различных вызова этой функции — с разной длиной пароля и разными наборами символов в каждом разряде.
Это регекспы, к которым я уже страниц 50 пытаюсь перейти, а публика застряла на обычной генерации паролей.
П>Всё просто: нет exec'ов — нет железа. И жизнь светла и прекрасна!
Тогда почему бы exec и eval не искоренить на правах goto ?
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, PC_2, Вы писали:
PC_>>>Трехмерные массив можно представить в виде коллекции строк, в каждой ячейке которой тоже строка но уже с атомарными значениями...
AV>>Чего? Что-то я туплю уже. Можно поразвернутее?
PC_>Любой многомерный массив можно представить в виде дерева. PC_>Например массив 3*3*3 будет деревом и трех вершин, из каждой которой исходит еще три вершины, из каждой из которой исходит ещет три PC_>Таким образом количество вершин нижнего уровня будет 27, равно количеству ячеек в многомерном массиве. PC_>Поиск значения в таком массиве будет равноценен последовательному спуску в дереве в нужную точку.
PC_>Короче говоря многомерный массив это есть частный случай дерева ...
Не, конечно можно и так. Но что мешает быть попроще и многомерный массив реализовать как массив массивов?
Здравствуйте, PC_2, Вы писали:
AV>>вот только для двух концов надо все таки 4 числа. И при этом в р1 лежат два числа и в р2 тоже два числа. Так что они никак не могут быть копиями чего-то третьего.
PC_>тамже в мануале написано. PC_>Копия при инициализации
PC_>тоесть
PC_>х = 5 PC_>x1,x2,x3 — уже будут содержать 5 и будут того же типа что Х, но это разные переменные. Это копии.
А что произойдет если я заведу свои переменные с именами x1, x2, x3?
Здравствуйте, Пацак, Вы писали:
П>Здравствуйте, PC_2, Вы писали:
PC_>>у когото не хватает оперативки ...
П>Ну дык! П>int = 4 байта. П>1 000 000 000 int'ов ~= 4 гига П>И это все ради простого перебора нечетных чисел.
PC_>>помойму гдето это я уже слышал ....
П>Почему-то я совсем не удивлен.
i%2==0 & i<1000000000?i и оперативки не нужно.
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, samius, Вы писали: S>Разве что для языков, которые без евала не умеют комбинировать вычисления S>
S>let pg xs n = List.fold(fun ps _->[for p in ps do for a in xs -> p + a]) xs [2..n]
S>pg [for c in'a'..'z' -> new System.String(c, 1)] 3
S>|> printfn "%A"
S>
и для чего ты это привел, что чтобы решить плинтусовую задачу с паролем на очередном языке
нужно написать в пять раз больше кода и осилить стопку талмудов по функциональщине ?
Еще раз, мнение для окружающих.
Если вы видите что на какомто языке задача решается плохо, то даже не пытайтесь присылать мне решение.
Это бесполезно ... И тем более предложить мне потратить мне свое время и разобраться в ущербной реализации.
В примером я разбираться могу в двух случаях, если он
а) Короче чем у меня
б) Если он гибче
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, PC_2, Вы писали:
AV>>Не, конечно можно и так. Но что мешает быть попроще и многомерный массив реализовать как массив массивов?
PC_>он и есть массив массивов
А зачем дерево тогда приплетать? Что это полезного дает?
Здравствуйте, ambel-vlad, Вы писали:
AV>Да? Гениально. То есть я не могу объявить переменную с таким именем как мне нравится. Думаешь много найдется тех, кто с радостью отнесется к этому?
думаю нада прекращать говнокодить и удалить в коде переменные вроде MySuperValue123.
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, ambel-vlad, Вы писали:
AV>Здравствуйте, PC_2, Вы писали:
PC_>>а) Короче чем у меня
AV>Видишь ли, практически никто не разделяет твоей идеи фикс насчет "короче"
пишите длинее, непонятней, менее гибче ...
Это право нужно закрепить правом каждого говнокодера в Конституции РФ
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, PC_2, Вы писали:
PC_>Это регекспы, к которым я уже страниц 50 пытаюсь перейти, а публика застряла на обычной генерации паролей.
Зачем тут регекспы? Не нужны тут регекспы.
П>>Всё просто: нет exec'ов — нет железа. И жизнь светла и прекрасна! PC_>Тогда почему бы exec и eval не искоренить на правах goto ?
Потому что в редких (очень) случаях и в умелых (достаточно) руках он все-таки бывает нужен. Но конкретно здесь — далеко не такой случай.
Здравствуйте, PC_2, Вы писали:
PC_>Здравствуйте, samius, Вы писали: S>>Разве что для языков, которые без евала не умеют комбинировать вычисления S>>
S>>let pg xs n = List.fold(fun ps _->[for p in ps do for a in xs -> p + a]) xs [2..n]
S>>pg [for c in'a'..'z' -> new System.String(c, 1)] 3
S>>|> printfn "%A"
S>>
PC_>и для чего ты это привел, что чтобы решить плинтусовую задачу с паролем на очередном языке PC_>нужно написать в пять раз больше кода и осилить стопку талмудов по функциональщине ?
Не кипятись. Это лишь еще один рабочий пример
А вот еще один
let a=[[x]|x<-['a'..'z']]in foldl(\r _->[p++c|p<-r,c<-a])a[2..3]
И он тоже рабочий.
Кстати, никаких талмудов осиливать не надо. Тут нет ничего такого, чего бы не было в C#. генераторы да свертка.
А тебе предстоит определиться таки, как воспользоваться результатом евала, что бы с ним можно было что-то сделать, а не смотреть на него в отладчике
PC_>Еще раз, мнение для окружающих. PC_>Если вы видите что на какомто языке задача решается плохо, то даже не пытайтесь присылать мне решение. PC_>Это бесполезно ... И тем более предложить мне потратить мне свое время и разобраться в ущербной реализации.
А это не для тебя решение.
PC_>В примером я разбираться могу в двух случаях, если он PC_>а) Короче чем у меня
Ну кто бы сомневался PC_>б) Если он гибче
Любые приведенные решения гибче твоего, т.к. могут быть использованы в дальнейшем, например, при выводе в консоль 20-го пароля из результата.
А результатом твоего решения является некий ResultSet, что делать с которым — непонятно. Походу придется тайпкастить