Здравствуйте, PC_2, Вы писали:
PC_>Здравствуйте, samius, Вы писали:
S>>Здравствуйте, PC_2, Вы писали:
S>>>>>
S>>>>>[|for i in 1..10 -> i*i|]
S>>>>>
PC_>Там же нормальная ошибка. PC_>Х — не распознан, PC_>обьяви Х
Да, нормальная такая ошибка, показывающая что ты все время халтуришь. Полный код твоего решения будет такой
x=1..10
!m=1..10
x.m=m*m
Что даже длинее F#-овского, который никуда не спешит, не говоря уже о многострочности твоего решения (корявости встраивания его в качестве подвыражения) и невозможности использования его во вложенных генераторах (требует глобальные переменные, которые невозможно переопределить).
Здравствуйте, PC_2, Вы писали:
AV>>Зачем? Не знаю. Но автор сказал, что 1..10 — это массив. Так что не ко мне вопросы.
PC_>1..10 действительно массив и переборщик инициализируется массивом.
Кстати, тут мысля еще одна возникла. 1..10 — это массив. Но это массив целых чисел. А как мне сделать массив чисел с плавающей точкой или массив строк?
Здравствуйте, Erop, Вы писали:
S>>Предлагал List comprehension не так давно. Это не моя идея, этой идее несколько десятилетий вместе с практикой использования. E>А зачем они тут? Ясно, что их можно вставить, но можно и не вставлять. Суть-то в том, что ничего нового и интересного в этом нет.
Зачем? Да хотя бы затем, что предложенное автором извращение намного хуже. И от него он отказываться не намерен.
S>>Дык мы и получали кучу какашек в ответ на идеи. Например, спрашивали — зачем тебе "E". Может там какие планы были по поводу "E", мало ли. В ответ — "я так вижу, а вы ... " и про паскаль и обвинения в говнокодерстве. E>Ну он написал, что E в начале нравится ему больше точки с запятой в конце. Ну и что? IMHO, это пофигу. E>Только вопрос мелкий и неинтересный, на самом деле.
Как мелкий? Он же за краткость. А тут получается наоборот. ";" в два раза короче "E ". Но вроде он уже отказался от своего Е
Здравствуйте, PC_2, Вы писали:
S>>Я предлагаю их вместо (I>10?I), для того что бы задавать перебор явно, а не пытаться угадать оптимальный перебор из булевого условия.
PC_>А зачем задавать перебор явно ? PC_>Тогда будет закрыта дверь в вкусностям вроде "подбор пароля произвольной длины". Или подбор по шаблону/алфавиту и тд.
Не, не будет закрыта. Просто будет делаться несколько иначе. Пусть, может быть, и немного длиннее. Но твоя гонка за "вкусностями" делает язык заточенный под решение одной-двух задач. А с остальными задачами справляться можно будет, но хуже, чем с использованием уже существующих языков.
Здравствуйте, PC_2, Вы писали:
PC_>>>оно помойму нормально эффективно. PC_>>>Ибо если заключить в фигурные скобки и сверху повесить фор, на каждой итерации эта проверка будет тоже проверятся ... S>>стандартный for выходит при первом нарушении условия
PC_>Давайте опустим что там входит а что выходит, пооптимизируем потом
PC_>Микро программа выполняется 0,001 секунду или 0,005 секунд, какая разница ?
И таких микропрограмм миллионы. В результате вся программа выполняется 1000 секунд или 5000 секунд. Действительно, какая разница.
PC_>Довольно прикольное решение. PC_>Во-первых оно опять надругалось над решением Немерле, PC_>которое ниразу понятней и короче.
На немерле тебе показали функцию, а я привел выражение. Ты сравнивал число байт функции на немерле и выражения на C#?
По поводу понятности в следующий раз советую не острить. Этим ты показываешь только уровень своего восприятия общепринятых паттернов кода.
PC_>Во-вторых имеет теже проблемы что и перловки. Ибо это нагромождение PC_>встроенных функций.
Эти проблемы только в твоей голове. Для остальных разработчиков проще комбинировать существующие решения, чем изобретать 3 велосипеда для того что бы взять 5 случайных букв.
PC_>Следовательно если я изменю условия так, PC_>"Перебрать все пароли от a-z с длиной 5 символов, PC_>причем дважды одна и таже буква не может встречаться в пароле"
Изменишь условие? Это другая задача. Кстати, образованные люди называют ее числом размещений.
Есть несложный рекурсивный алгоритм получения всех размещений. В твоем языке на рекурсию табу, значит решение будет гораздо сложнее.
PC_>"Перебрать все пароли от a-z c длиной 5 символов, PC_>а вот пароли начинающиеся на A не должни быть больше 3 символов"
решается путем комбинации генератора размещений с фильтрами и конкатенаторами.
PC_>То решение разобьется о острые камни реальности.
Решение задачи получения 5и случайных букв не годится для решения задач размещения никаким образом. Если пригодится, значит ты оригинальную задачу решил через зад. PC_>А мне расширить свой алгоритм на РС секунд 30 наверное и плюс десять пятнадцать символов PC_>в микро программку
Ты за неделю так и не представил ни одно работающее решение, куда там за 30 сек получить размещения из случайной выборки!!!
PC_>
С тобой не скучно
Сам все время палишься и выпячиваешь уровень своей подготовки, еще и обижаешься на тех кто это подмечает.
Здравствуйте, PC_2, Вы писали:
PC_>>>В смысле, ты сомневаешся что языки будуйщего будут ультракомпактны ? S>>Даже не сомневаюсь что они НЕ будут ультракомпактны. Открой пару библиотек и посмотри, сколько там функций для решенных задач. Этим функциям нужны внятные имена.
PC_>Зачем им внятные имена.
Затем, что код еще и люди читают
PC_>Для тебя жизненно необходимо нагромождение быдло интерфейсов с мильярдом функций вроде GetPtrIntToStr в жаваподобном шпагетти ?
PC_>Довольно прикольное решение. PC_>Во-первых оно опять надругалось над решением Немерле,
В смысле надругалось? Это прикольное решение является валидным nemerle-кодом, если что.
PC_>которое ниразу понятней и короче.
только для тех, кто не знаком с ФВП, лямбдами и замыканиями. Т.е. для подавляющего меньшинства профессиональных программистов.
PC_>Следовательно если я изменю условия так, PC_>"Перебрать все пароли от a-z с длиной 5 символов, PC_>причем дважды одна и таже буква не может встречаться в пароле"
def p(l, n)
{
l.Fold([], (e, a) => if (n==1) [e]::a else p(l.Filter(x => x != e), n-1).Fold(a, (s, b) => (e::s)::b))
}
Вы выше спрашивали, как эта функция вызывается... Вот так:
WriteLine(p($['a'..'z'], 5));
PC_>или
PC_>"Перебрать все пароли от a-z c длиной 5 символов, PC_>а вот пароли начинающиеся на A не должни быть больше 3 символов"
Частное решение:
def p(l, n, f)
{
l.Fold([], (e, a) => if (n==1) [e]::a else p(l, n-1, f).Fold(a, (s, b) => (e::s)::b)).Map(if (x.Head != 'a' && x.Length > 3) x.FirstN(2) else x)
}
Общее решение:
def p(l, n, f)
{
l.Fold([], (e, a) => if (n==1) [e]::a else p(l, n-1, f).Fold(a, (s, b) => (e::s)::b)).Map(f)
}
WriteLine(p(
$['a'..'z'],
6,
x => if (x.Head != 'a' && x.Length > 3) x.FirstN(2) else x
)
);
Заметьте, теперь мы можем передавать в p() произвольную функцию f, по которой сможем добавить любые ограничения к выходному списку.
PC_>То решение разобьется о острые камни реальности. PC_>А мне расширить свой алгоритм на РС секунд 30 наверное и плюс десять пятнадцать символов PC_>в микро программку
Не, че-то не разбивается. Напротив, чем обширнее и комплекснее будут исходные условия, тем больше вас придется хардкодить в интерпретаторе, чтобы избежать нагромождения кучи неудобочитаемого кода. Который, к тому же, не является повторно используемым. Решение же на nemerle будет усложняться только в той строчке, где определяется функция, реализующая ограничивающее условие.
Здравствуйте, samius, Вы писали:
S>Здравствуйте, PC_2, Вы писали:
PC_>>Здравствуйте, samius, Вы писали:
S>>>Здравствуйте, PC_2, Вы писали:
S>>>>>>
S>>>>>>[|for i in 1..10 -> i*i|]
S>>>>>>
S>Да, нормальная такая ошибка, показывающая что ты все время халтуришь. Полный код твоего решения будет такой S>
S>x=1..10
S>!m=1..10
S>x.m=m*m
S>
S>Что даже длинее F#-овского, который никуда не спешит, не говоря уже о многострочности твоего решения (корявости встраивания его в качестве подвыражения) и невозможности использования его во вложенных генераторах (требует глобальные переменные, которые невозможно переопределить).
что-то я вас разбаловал.
По две переменных обьявляю в разных строках. Рефакторю.
Потом выиграите 2 байта на 20 символах, и радости нет предела
а если вот так ?
x=1..10
x.i=x.i*x.i
Ф шарп длинее
На счет то что не понятней решение на Немерле или Ф Шарпе так это истинная правда.
Достаточно привести статистику сколько программисту нужно чтобы разобьраться в функциональном языке,
а сколько в той императивной "игрушке" вроде меня. Мне хватит чтобы в своем языке человека раздуплить нулевого,
трех абзацев. А вам талмуд, от Богов функциональщины
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
PC_>>Во-вторых имеет теже проблемы что и перловки. Ибо это нагромождение PC_>>встроенных функций. S>Эти проблемы только в твоей голове. Для остальных разработчиков проще комбинировать существующие решения, чем изобретать 3 велосипеда для того что бы взять 5 случайных букв.
Да, все эти ваши решения выглядят примерно так.
Заказчик говорит — Нужен трактор.
Отдел закупок начинает листать желтые страницы, трактора не находит.
Но находит ВАЗ 2101 .
Не беда, покумаем ВАЗ 2101, выбрасываем магнитолу, выбрасываем обшивку салона (переплатили однако),
откручиваем колеса, переставляем мосты, делаем полноприводным, и получаем трактор
Зато мы использовали то жигули которое уже есть.
PC_>>Следовательно если я изменю условия так, PC_>>"Перебрать все пароли от a-z с длиной 5 символов, PC_>>причем дважды одна и таже буква не может встречаться в пароле" S>Изменишь условие? Это другая задача. Кстати, образованные люди называют ее числом размещений.
Сеня, это боевые будни программистов между прочим.
Заказчику всегда нужно "еще чуть чуть" доделать.
И все эти паттерны библиотеки, рефакторы, чтобы сделать как можно гибче разработку, предугадывая следующий шаг изменений в программе.
И если программу нужно переписать при небольших изменениях то это гайки
PC_>>"Перебрать все пароли от a-z c длиной 5 символов, PC_>>а вот пароли начинающиеся на A не должни быть больше 3 символов" S>решается путем комбинации генератора размещений с фильтрами и конкатенаторами.
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, PC_2, Вы писали:
PC_>что-то я вас разбаловал. PC_>По две переменных обьявляю в разных строках. Рефакторю. PC_>Потом выиграите 2 байта на 20 символах, и радости нет предела
Радость от 2х байт только у тебя.
PC_>а если вот так ?
PC_>
PC_>x=1..10
PC_>x.i=x.i*x.i
PC_>
PC_>Ф шарп длинее
Но юзабельнее
и длинее чем это
map(^2)[1..10]
PC_>На счет то что не понятней решение на Немерле или Ф Шарпе так это истинная правда. PC_>Достаточно привести статистику сколько программисту нужно чтобы разобьраться в функциональном языке, PC_>а сколько в той императивной "игрушке" вроде меня. Мне хватит чтобы в своем языке человека раздуплить нулевого, PC_>трех абзацев. А вам талмуд, от Богов функциональщины
дупли себя
Гаспадин Качетков, я этот пост ваш читал не очень внимательно.
Вы забыли, что я тут главный школьник который бегает с линейкой для замера длины
А другие говорят что и тупой в функциональщине,
тоесть наборы джедайских теорий от функциональных таинственых манускриптов, както тоже
выходят за пределы моих интересов в приследовании простоты кода
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
PC_>>Довольно прикольное решение. PC_>>Во-первых оно опять надругалось над решением Немерле,
KV>В смысле надругалось? Это прикольное решение является валидным nemerle-кодом, если что.
Жесть, опять для меня осталось загадкой зачем нужно Немерле.
То решение Шарп короче и проще, то решение Linq.
А существует в природе задача которая реально лучше решается на Немерлах ?
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, PC_2, Вы писали:
PC_>Но находит ВАЗ 2101 . PC_>Не беда, покумаем ВАЗ 2101, выбрасываем магнитолу, выбрасываем обшивку салона (переплатили однако), PC_>откручиваем колеса, переставляем мосты, делаем полноприводным, и получаем трактор PC_>Зато мы использовали то жигули которое уже есть.
Даже C# обладает относительно полным набором инструментов для работы. В твоем языке пока шаром покати. Так что сравнение не в твою пользу.
PC_>>>Следовательно если я изменю условия так, PC_>>>"Перебрать все пароли от a-z с длиной 5 символов, PC_>>>причем дважды одна и таже буква не может встречаться в пароле" S>>Изменишь условие? Это другая задача. Кстати, образованные люди называют ее числом размещений.
PC_>Сеня, это боевые будни программистов между прочим.
Ты свои будни профукал и не справился с задачей выборки 5и символов за неделю. Еще с чем-то споришь.
PC_>Заказчику всегда нужно "еще чуть чуть" доделать. PC_>И все эти паттерны библиотеки, рефакторы, чтобы сделать как можно гибче разработку, предугадывая следующий шаг изменений в программе. PC_>И если программу нужно переписать при небольших изменениях то это гайки
Я жду (но не надеюсь, потому как ты неоднократно продемонстрировал что ты балабол) что ты наконец-то предоставишь рабочее решение выборки 5и случайных букв и решение по всем размещениям букв, так что бы одно из другого можно было получить за 30 сек.
Здравствуйте, PC_2, Вы писали:
PC_>Здравствуйте, samius, Вы писали:
S>>
S>>map(^2)[1..10]
S>>
PC_>Сеня что это за грушка, PC_>сейчас усложним слегка (только слегка!) задачу, PC_>и пойдешь вследом за Перлистом
Ты бы для начала изобразил бы решения тех задач что наобещал, а то игра в одни ворота получается. Все тут упражняются, а ты условия меняешь.
S>Ты бы для начала изобразил бы решения тех задач что наобещал, а то игра в одни ворота получается. Все тут упражняются, а ты условия меняешь.
Да будет.
Ты говорил унарные операторы в моем воображении — выложил
Говорили Е убрать — убрал
Говорил переборщиков нет — пофиксил баги
Говорили про лямды — сделал евал
Не переживай, сделаю.
Просто за выходные нужно сделать не только это.
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, PC_2, Вы писали:
PC_>Говорили про лямды — сделал евал
Особенно веселит это. Ну да лямбды-то действительно тебе не нужны, раз табу на функции.
PC_>Не переживай, сделаю. PC_>Просто за выходные нужно сделать не только это.
Ага, и еще постарайся что бы код получения всех паролей длины 5 из уникальных букв не превышал бы по длине вызов функции с названием из 11 символов, иначе какой смысл будет его изобретать каждый раз...
Здравствуйте, PC_2, Вы писали:
PC_>Гаспадин Качетков, я этот пост ваш читал не очень внимательно.
Зря, значит то был мой последний пост с каким-либо кодом написанным по вашей просьбе. Тратить свое время на разбрасывание бисера в мои планы не входит.
PC_>Вы забыли, что я тут главный школьник который бегает с линейкой для замера длины
Вы не школьник, зачем же так, вы лишь год как не студент. Собственно, это многое объясняет, Вячеслав. Уверен, что со временем это пройдет и, если у вас останется та энергия, которая наблюдается сейчас, то вы безусловно добъетесь действительно значимых результатов.
PC_>тоесть наборы джедайских теорий от функциональных таинственых манускриптов, както тоже PC_>выходят за пределы моих интересов в приследовании простоты кода
Простота кода и краткость кода — два ортогональных понятия, т.к. код не только пишется, но и читается, причем второе происходит намного чаще и преимущественно не только его автором. Практически каждый пример вашего кода вам пришлось разжевывать и здесь и на sql.ru. Это значит, что ваш код нечитаем, в отличии от.