LINUX.ORG.RU
ФорумTalks

Как понять что ты тупой?

 , , , профнепригодность,


0

1

Очень просто! Нужно встретить задачу которая понятна буквально на интуитивном уровне. Открыть редактор и не суметь её решить сходу.
В голове переклинивает, ты точно знаешь что тебе надо делать и ступоришься на том как делать. Замираешь и смотришь на экран как додик последний. Кабзда, если извилины шевелятся то у моих кататония. Это фиаско братан :D Я не знаю с чем это сравнить, это как налить чаю, взять ложку и думать, тебе туда соль сыпать или сахар и офигевать от того что ыт об этом вообще задумываешься. Это просто пример, такой шизы у меня нету. Но хотелось яркого сравнения.

Короче сижу я такой и думаю дай полистаю PIL четвёртое издание для Lua, а то память у меня как решето постоянно всё забываю и надо по кругу гонять одно и тоже, ну типа листаю и листаю, типа ну ага, ну эге и тут задачка банальная как банан.

Exercise 6.5: Write a function that takes an array and prints all combinations of the elements in the array.
(Hint: you can use the recursive formula for combination: C(n,m) = C(n -1, m -1) + C(n - 1, m). To generate
all C(n,m) combinations of n elements in groups of size m, you first add the first element to the result and
then generate all C(n - 1, m - 1) combinations of the remaining elements in the remaining slots; then you
remove the first element from the result and then generate all C(n - 1, m) combinations of the remaining
elements in the free slots. When n is smaller than m, there are no combinations. When m is zero, there is
only one combination, which uses no elements.)

Упражнение 6.5: Напишите функцию, которая принимает массив и выводит все комбинации элементов в массиве.
(Подсказка: вы можете использовать рекурсивную формулу для комбинации: C (n,m) = C(n -1, m -1) + C(n - 1, m). Чтобы сгенерировать
все C(n, m) комбинаций из n элементов в группах размером m, вы сначала добавляете первый элемент к результату и
затем генерируете все C(n - 1, m - 1) комбинации оставшихся элементов в оставшихся ячейках; затем вы
удаляете первый элемент из результата и затем генерируете все C(n - 1, m) комбинации оставшихся
элементов в свободных ячейках. Когда n меньше, чем m, комбинаций не существует. Когда m равно нулю, существует
только одна комбинация, в которой не используются элементы.)

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

И йя не смог. Вот прям сразу взять и написать. Истории успеха это конечно здорово, когда всё получается, когда всё складно и ладно, выезжаешь во всё лишь получив вводные. Вот про это все пишут все это смакуют. А вот провалы, спотыкания на ровном месте, затупы вселенских масштабов. Они у вас бывают? А как часто? Есть тру стори, похожего характера, когда вас прям переклинивало/ет? В расчёт не берутся случаи когда вы я фиг знаю дебажите неизвестный вам протокол или делаете что-то для области знаний где для вас вся терминология в новинку, там то понятно сходу по определению невозможно ничего сделать. Но вот в обыденных ситуациях, ну или не совсем оных. Признавайтесь! Чё я один такой глупый? :D

А линукс тут при том что линукс для умных.

★★★★★

Последнее исправление: LINUX-ORG-RU (всего исправлений: 4)

Такое бывает, если переработать. Или если очень долго не спать, либо продолжительный период каждую ночь сильно недосыпать. Может в отпуск пора?

P.S. Задачу даже не читал — мне лень.

CrX ★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от CrX

Такое бывает, если переработать. Или если очень долго не спать, либо продолжительный период каждую ночь сильно недосыпать. Может в отпуск пора?

Я головой не работаю, IT это увлечение и всё.
Режим сна может влиять конечно, но так всё что угодно можно спустить на тормоза.
Мол ты устал, поди поспи =)

P.S. Задачу даже не читал — мне лень.

Может и у меня подсознание такое – «Да пошёл ты нахер, задолбал уже, мне лень. Иди пивка лучше бахни с пацанами, я спать» :D

Я в надежде на то что весёлые истории других людей почитать.

LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 3)
Ответ на: комментарий от LINUX-ORG-RU

но так всё что угодно можно спустить на тормоза. Мол ты устал, поди поспи =)

Ну… Альтернатива звучит ближе к «спустить на тормоза». Та, которая: я тупой, всё плохо, ни в чём нет смысла, пойду поставлю винду и сяду смотреть дом 2.

Пойти поспать — это сделать хотя бы какую-то попытку решения проблемы — проверить одну из гипотез. Если после хорошего сна эффект пропадёт, и задача будет решена нормально, значит дело было в этом.

CrX ★★★
()
Ответ на: комментарий от CrX

Ну… Альтернатива звучит ближе к «спустить на тормоза».

Это я в рамках самоиронии =) В твоей интерпретации я бы просто промолчал и проигнорировал и не признался бы даже себе, а дрякнул типа «что за тупая задача, это задача тупая, а не я!» и поковылял дальше

Если после хорошего сна эффект пропадёт, и задача будет решена нормально, значит дело было в этом.

Ну то что на усталую голову думать физически сложно, это факт. Для контекста тогда уж добавлю, нет не был сильно уставшим, да режим сна шатает сильно, да это может влиять. Но вопрос не в том что я тут про себя, а просто про случай, надо наверное из шапки убрать «спасити помогити» так как речь не про меня, а про «виды тупака в природе» :D

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

LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)

Скорее всего отсутствие реальной мотивации. Слово «реальной» добавил не случайно.

blex ★★
()
Ответ на: комментарий от LINUX-ORG-RU

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

vaddd ★☆
()

Я еще более тупой, я не очень понял условия задачи.

Так что ли надо?

data:
["a", "b", "c", "d"]
result:
["a", "b", "ab", "c", "ac", "bc", "abc", "d", "ad", "bd", "abd", "cd", "acd", "bcd", "abcd"]
arr = ["a", "b", "c", "d"]

def enum_combinations(arr, comb = [])
    return comb if arr.empty?
    item = arr.shift
    comb2 = [item]
    comb.each {|i| comb2.push(i + item) }
    comb  = comb.concat(comb2)
    return enum_combinations(arr, comb)
end

puts "data:"
p arr

puts "result:"
p enum_combinations(arr)

Сорян, я в lua не оч. Писал на более понятном ЯП.

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 2)
Ответ на: комментарий от CrX

P.S. Задачу даже не читал — мне лень.

Там чёртова комбинаторика, так что и не стоит.

Тут не от алгоритма плывут мозги, а от самой задачи.

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от wandrien

Ну задачу решать не надо было =) я не решения искал =). Но если по задаче то в выводе должен быть фиксированный размер, ну например дано a,b,c,d,e,f,g,h а в выводе все возможные комбинации из этого списка размером например 4 abcdafgh и так далее для длинны комбинации не 4, а 40 например. Но эт я так. Задачу я описал не для поиска её решения, а просто для показательного примера =)

LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

Ну задачу решать не надо было =)

Это был единственный способ разобраться, чо вообще там требуется.

Как видишь, условие задачи я понял неверно.

wandrien ★★
()
Ответ на: комментарий от wandrien

Как видишь, условие задачи я понял неверно.

Зато решил сходу, детали можно уже поправить потом. А я вот тогда сходу в ступор впал :D Были у тебя задачи в которые ты смотришь, а там бездна и ты залип такой 🗿. Помню где то была история как мужик не мог запрограммировать микроконтроллер, ему не хватало 1 байта и он очень долго мучался =)

LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)

Ну эти задачки для того и существуют типа.
Чтобы ты решил 1ю, решил 2ю, а потом упёрся в потолок..
И что ты делаешь когда не можешь решить задачу? Идёшь в гугл.. начинаешь изучать тему, спрашиваешь советов на форуме и т.д.

Bad_ptr ★★★★★
()

Как понять что ты тупой?

Когда начинаешь всё чаще гуглить готовое решение. Или использовать всякие GPT.
Или спрашивать на ЛОРе.

dataman ★★★★★
()
Ответ на: комментарий от Bad_ptr

Ну, даааа. Просто подумалось кто поделится историями или просто задачками с которыми у них в своё время были проблемы. Ну вот прям никак было. Не просто, ага я вот этого не знаю пойду поизучаю и всё такое, ну типа обычная кривая обучения, да. А вот такое чтобы на работе, вот на мол делай, а ты такой кряяя или просто решил что сейчас нечто по быстрому сделаешь и натыкаешься на казалось бы простое, но оно никак вот и всё.

LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)

Да бывает. Мне тут надо было накостылить по быстрому циклически перезаписываемый лог для ПЛК Siemens. Сидел чёт тупил час наверное.

Alden ★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Были у тебя задачи в которые ты смотришь, а там бездна и ты залип такой 🗿

У меня всё чаще задачи, когда я знаю, ЧТО надо сделать, знаю, КАК надо сделать, но когда начинаю делать, то очень быстро прихожу к тому, что «запас внимания исчерпан, пойду-ка я лучше прилягу и потуплю в потолок».

Это надвигается старость.

Я очень недоволен таким положением вещей.

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

А мне лень.

Я пока что переписал только одну из функций, теперь надо проверить, что всё работает.

wandrien ★★
()
Ответ на: комментарий от LINUX-ORG-RU

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

И это обсуждается намного меньше, чем какое-то «задротство» с циферками, синтаксисом, циклами и т.д.

Bad_ptr ★★★★★
()
Ответ на: комментарий от wandrien

Это надвигается старость.

Оууу нььееет значит я уже старый дееед!

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от LINUX-ORG-RU

Просто подумалось кто поделится историями или просто задачками с которыми у них в своё время были проблемы. Ну вот прям никак было.

Я разбирался с кодом простого кодогенератора для хоббийного компилятора. Кодогенератор исходно делал не я, я взял готовый и очень сильно переработал.

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

Я в целом представляю, что мне нужно сделать с ними.

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

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

wandrien ★★
()

В голове переклинивает, ты точно знаешь что тебе надо делать и ступоришься на том как делать.

Любое судоку с ★★★★★. :)

dataman ★★★★★
()
Ответ на: комментарий от Bad_ptr

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

С этим согласен.

И это обсуждается намного меньше, чем какое-то «задротство» с циферками, синтаксисом, циклами и т.д.

А вот с этим не очень. Литературы по проектированию достаточно. Да и на ЛОР, например, обсуждения на эти темы встречаются.

Но в «обучении программированию» наверное не хватает. Не знаю, я не в теме, как там дела обстоят.

wandrien ★★
()
Ответ на: комментарий от Alden

Сидел чёт тупил час наверное

Да, была у меня тоже как-то задача по обработке данных синхрофазатрона. Сидел тупил аж 10 минут.
Потом сделал пандорический захват, лифтанул в монаду, построил рекурсивную схему (здесь подошёл зигохистоморфный препроморфизм ) как монадический трансформер из категории эндофункторов, и метациклически вычислил результат. А любой второкурсник сделал бы за пять минут на анафорических лямбдах.

Bad_ptr ★★★★★
()
Ответ на: комментарий от Bad_ptr

Я 10 минут гуглить буду только что все эти слова обозначают :D Жесть.

LINUX-ORG-RU ★★★★★
() автор топика

линукс для умных

4.2

Чё я один такой глупый

Дело не в глупости, просто надо 1) раскурить, как писать рекурсивные алгоритмы, в теории (SICP) и на практике (Little Schemer, HTDP — там есть вполне конкретные рекомендации, прямо по шагам) и 2) правильно (рекурсивно) сформулировать задачу.

Типа «список это пустой список или элемент, прицепленный к списку» (рекурсивное определение данных), "чтобы найти все элементы списка, равные указанному значению, нужно

  • если список пустой, вернуть его
  • если список непустой, проверить голову списка; если равна искомому значению, вернуть список, полученный прицеплением головы к результату поиска в хвосте списка, иначе вернуть результат поиска в хвосте списка"

(линейно рекурсивный алгоритм).

Задача решена, перевести это дело на луа/петон/жопаскрипт — дело тривиальное, напряжения головы уже не требующее.

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 2)
Ответ на: комментарий от LINUX-ORG-RU

Мой случай ближе к затупу с чаем и сахаром из твоего примера, нежели к решению задачи по математике/программированию задачи в лоб. У меня было такое, что я картинку какую-то правил (подробности тут не особо важны), вроде сделал нормально, заливаю на сайт — криво отображается. Переделываю, сохраняю, заливаю — снова так же криво. Переделываю снова, проверяю локально, что всё нормально, заливаю — снова так же криво. Проверяю в метаданные, проверяю в hex-редакторе — всё правльно. Заливаю — снова криво. Проверяю кэш браузера, что точно новозалитая картинка на сайте, а не старое как-то закэшировало — всё новое каждый раз… Оказалось, что я на каком-то этапе под другим именем стал сохранять, а на сайт заливал один и тот же старый файл. Тоже тогда ощутил себя офигеть каким тупым.

CrX ★★★
()
Ответ на: комментарий от wandrien

Во-первых – напиши её сам.


Зачем, если она уже написана. Напиши всю стандартную библиотеку с 0, да чего мелочится, напиши С++ компилятор, не ищи легких путей, всё делай сам

linuxoidspb
()
Ответ на: комментарий от vaddd

Хлестаков. Я люблю поесть. Ведь на то живёшь, чтобы срывать цветы удовольствия. Как называлась эта рыба?

© Н.В. Гоголь «Ревизор»

Mischutka ★★★★★
()
Ответ на: комментарий от wandrien

Во-вторых, в задаче требуется https://en.wikipedia.org/wiki/Combination , а не https://en.wikipedia.org/wiki/Permutation

https://docs.python.org/3/library/itertools.html#itertools.combinations

itertools.combinations(iterable, r)

Return r length subsequences of elements from the input iterable.

The combination tuples are emitted in lexicographic ordering according to the order of the input iterable. So, if the input iterable is sorted, the output tuples will be produced in sorted order.

Elements are treated as unique based on their position, not on their value. So if the input elements are unique, there will be no repeated values in each combination.
linuxoidspb
()
Ответ на: комментарий от linuxoidspb

Зачем, если она уже написана.

Зачем в школе проходят арифметику, если древние египтяне её уже изобрели?

Напиши всю стандартную библиотеку с 0, да чего мелочится, напиши С++ компилятор, не ищи легких путей, всё делай сам

https://www.kinopoisk.ru/film/77720/

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от linuxoidspb

Зачем, если она уже написана.

Затем, что в этом и состоит упражнение. Написать реализацию этого на Lua.

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

CrX ★★★
()

То есть если ты сидишь тупишь, значит, ты просто ещё не нашёл решение, not really. Бери карандашик, тетрадочку и фпирёт — думать, как переформулировать задачу правильным образом. В задании прям серьёзные подсказки есть, как это сделать (выразить в терминах более простых подзадач).

Nervous ★★★★★
()
Ответ на: комментарий от wandrien

Зачем в школе проходят арифметику, если Древние египтяне её уже изобрели?

Всё верно, пользуйся плодами тем, кто вывел правила арифметики. Но если ты не приемлешь использовать результаты трудов прошлых поколений, то до всего доходи сам, выведи весь математический и физический аппарат с нуля сам. Может к концу жизни дойдешь до электродинамики :)

linuxoidspb
()
Ответ на: комментарий от linuxoidspb

Идеально. На ЛОРе обнаружен сферический stackoverflow программист в вакууме.

Всё верно, пользуйся плодами тем, кто вывел правила арифметики.

Ты не сможешь ими пользоваться без мозгов, а у тебя их нет.

wandrien ★★
()

Если про виды тупака, то у меня было так, что спускаюсь со второго этажа по лестнице и пока дошел до первого, забыл зачем я вообще спускался. И такие случаи были частенько. Мне, кстати, тогда БАДы типа Острума(*не рекомендация) от этого помогли немного.

Loki13 ★★★★★
()
Последнее исправление: Loki13 (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

Зато решил сходу, детали можно уже поправить потом.

Ага, как в анекдоте про «вылить воду из чайника и свести задачу к уже решенной».

Код, который перечисляет комбинации всех возможных длин у меня уже есть. Осталось обернуть его в фильтр, который оставит только комбинации запрошенного размера xD

wandrien ★★
()
Ответ на: комментарий от Mischutka

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

vaddd ★☆
()
Ответ на: комментарий от wandrien

Нож кладешь в холодильник, а сыр/колбасу - в ящик стола.

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

vaddd ★☆
()

Навык работы с алгоритмами (даже простейшими) теряется, если ими не заниматься регулярно о плотно. Мозги в этом смысле как мышцы, не тренируешь - будешь мешком.

seiken ★★★★★
()
Ответ на: комментарий от Mischutka

Все мы кадавры. Хоть и возомнили себя мыслящими существами

vaddd ★☆
()
Ответ на: комментарий от LINUX-ORG-RU

Да пошёл ты нахер, задолбал уже, мне лень.

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

goingUp ★★★★★
()
Ответ на: комментарий от wandrien

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

скорее всего и не нужно держать это все в голове. достаточно это все держать рядом на бумаге, white board, или во всяких диаграммах типа uml

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

n_play
()
Ответ на: комментарий от n_play

Там не в goto дело, а в машине состояний, которую нужно корректно реализовать.

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

wandrien ★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)