m700
Ребят всем привет, не подскажите курсы или видеоуроки по c#?
ну и мой любимый курс - Для маленьких и тупых https://www.youtube.com/watch?v=86KLS8das2k&list=PLuGqgO5WmeGPTZqDHZDIum3h7HnfBfzmZ
Warox
потому что у тебя вся логика завязана на то что длина слова и индекс под которым оно находиться долджно быть 4 в конеце и 4 должна находиться под индексом 4 ))
ну и соответственно из за этой завязки нельзя подсавить другой язык только с англ работает так как там случайно совпадает что четыре имеет длину 4 и находиться под индексом 4
Warox
ну есть такая штука как цикл, в английском языке есть тот самый эквилибриум. а у нас его нету.
ну у тебя оно сходитсья только если эквилибриум достигается на числе 4
Warox
и 4 должна быть под индексом 4 ))
infa
и 4 должна быть под индексом 4 ))
ну так и должно же быть)
infa
да, похоже да
ну это чисто оптимизация, но код же работает)
Евгений
ну это чисто оптимизация, но код же работает)
У меня со словом four как раз были проблемы в первом решении, где у меня не было второй функции а был цикл с условием
Евгений
Но твоё решение конечно лаконичное и исчерпывающее
infa
https://youtu.be/QgzBDZwanWA @mr_warox @eugenebus144 Эта задача напомнила)
Виталик Голоенко
Задача
def numbersOfLetters(number): strnumber = str(number) lenstrnumber = len(strnumber) result = [] numbers = ["zero","one","two","three","four","five","six","seven","eight","nine",] while(True): str1 = "" count = int(strnumber) for i in range(0, lenstrnumber): str1+=numbers[int(strnumber[i])] result.append(str1) strnumber = str(len(str1)) lenstrnumber = len(str(strnumber)) if(len(str1) == count): return result print(numbersOfLetters(1)) P.s хз норм ли телеграм форматнул ибо я с телефона
Terro
Ребят, почему не работает.Хочу реализовать такую штуку, как спавн игроков.Если один игрок уже зашел в комнату и заспавнился на определенное место, то другой должен заспавниться на другое.Но этот код почему-то не работает
Igor
не читая по диагонали - рекурсия отстой
да ладно %) рекурсия тащит, вы просто не умете ее готовить ;) def numbersOfLetters(number): numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"] tr = dict(zip(range(48, 58), numbers)) t = str(number).translate(tr) l = len(t) return [t] if number == l else [t, *numbersOfLetters(l)]
Igor
можешь заменить тренслейт на мэп джойн ;) дело вкуса
Виталик Голоенко
можешь заменить тренслейт на мэп джойн ;) дело вкуса
Как по мне, мой способ мение навороченый и более понятный)
Igor
Как по мне, мой способ мение навороченый и более понятный)
свой способ всегда более понятный %) def numbersOfLetters(number): numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"] t = "".join(numbers[int(d)] for d in str(number)) l = len(t) return [t] if number == l else [t, *numbersOfLetters(l)]
Igor
так понятней? ;) уже и пошутить нельзя ;)
Igor
идея была в рекурсии а не в переводе числа в строку
Igor
Смысл в том что в этой задаче рекурсия выглядит очень гармонично уж точно симпатичней чем while True
Igor
смотря где, мне лично не нравится ограничение рекурсии лимитом стека вызовов
в данной задаче это не актуально а код с рекурсией мне нравится больше чем def numbersOfLetters(number): numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"] result = [] while True: result.append("".join(numbers[int(d)] for d in str(number))) l = len(result[-1]) if number == l: return result number = l
Igor
в данном случае рекурсия еще хорошо бы мемоизировалась ;) у рекурсии есть свои плюсы
Igor
ну когда задача решать задачу - да когда задача код для реальных целей всегда выбираю НЕ рекурсию
ну ок замениш ты рекурсию стеком от этого же она рекурсией быть не перестанет. Важно уметь в идею рекурсии. И эта задача точно лучше чем популярные числа фибоначи ;)
Виталик Голоенко
в узком смысле да )
Есть широкий смысл?
Igor
вот здесь
я же пример привел кода без рекурсии который по моему мнению менее красивый чем код с рекурсией ;) цель была избавится от рекурсии ;) конечно ее там нет
Шаман Каган
в узком смысле да )
в каком таком узком?! - это определение рекурсии в принципе: Довольно давно, в программировании появился термин "рекурсия", что означает вызов функции (или же процедуры) непосредственно из самой себя. Есть простая (непосредственная) рекурсия или рекурсия, которая работает через другие процедуры и функции (такой вид называется косвенной, сложной рекурсией).
Igor
мне вот интересно неужели прежде чем спорить трудно загуглить ;) ?
Igor
Реку́рсия — определение, описание, изображение какого-либо объекта или процесса внутри самого этого объекта или процесса, то есть ситуация, когда объект является частью самого себя.
Виталик Голоенко
мне вот интересно неужели прежде чем спорить трудно загуглить ;) ?
Ачо гуглить то Рекурсия - функция которая вызывает сама себя Тут другого не дано
Igor
окей ;)
Шаман Каган
мне вот интересно неужели прежде чем спорить трудно загуглить ;) ?
я загуглил и ты привел общее определение - я тебе привел опредление из программирования
m700
Я готов и внимательно слежу за вашей дискуссией
Igor
а я тебе говорю что если объект имеет рекурсивную структуру то в коде можно писать без рекурсии, но сам объект или структура по своей идее рекурсивными быть не перестанут.
Борисов
извини это слишком высокая философия которую мой простой мозг сантехника не в силах объять
Рекурсии нет, но ты там держись )) "Всего доброго и хорошего настроения" )
Шаман Каган
поэтому как сантехник я прямо скажу ентой философхией я могу просто подтереться та как практического смысла для меня в ней ноль
Igor
если у тебя рекурсивный алгоритм то от того что ты стек реализовал руками алгоритм не поменялся ;)
Igor
так сантехнику понятно? ;)
Шаман Каган
если у тебя рекурсивный алгоритм то от того что ты стек реализовал руками алгоритм не поменялся ;)
ты бы загуглил для начала https://life-prog.ru/1_26037_zamena-rekursivnih-algoritmov-iterativnimi.html
Igor
точнее наверное его можно натянуть и сказать что любая мемоизация это в каком то смысле дп... но это не значит что от этого будет профит
Виталик Голоенко
тяжело...
Igor
ты же вроде угрожал тут людям а*
Igor
почему же ты там пользуешь очередь? ;)
Igor
заменил бы на дп ;)
Igor
или может вы а* пишете уже без очереди?
Шаман Каган
почему же ты там пользуешь очередь? ;)
не дп а итеративный алгоритм
Шаман Каган
как раз пишем с очередью и счастливы, что нет проблем со стеком
Igor
блядь итеративный алгоритм со стеком или очередью это суть рекурсия
Igor
то что ты заводишь отдельный стек не меняет твой алгоритм ...
Шаман Каган
блядь итеративный алгоритм со стеком или очередью это суть рекурсия
ясно ты гугл по своему читаешь ... давай продолжай
Igor
я не по гуглу читаю у меня немножко профильное образовние в отличии от сантехников ;)
Шаман Каган
я не по гуглу читаю у меня немножко профильное образовние в отличии от сантехников ;)
ну если философия стало как то относится к программированию - то да
Igor
рекурсия часто пишется гораздо проще ... и если нам не грозит размер стека, то я предпочту увидеть рекурсию в коде.
Igor
А подумать грозит или нет мне не тяжело ;) чем каждый раз пытаться раскручивать рекурсию
Andrii
как раз пишем с очередью и счастливы, что нет проблем со стеком
Ты видимо Linux Kernel developer? Какие проблемы могут быть со стеком, да ещё в Python? Не хватит глубины 1000? В переборных задачах этого хватает с головой
Igor
А джуны нет)
думаешь итеративный алгоритм с очередью или стеком тебе будет понятней? ;)
Виталик Голоенко
Простой цикл for выглядит проще
Igor
Ну да
;) Я не буду спорить, но мое мнение что ты заблуждаешься ....
Andrii
Ну да
Нет, там будеи такой же код, только плюс ещё ручная реализация стека
Шаман Каган
Ты видимо Linux Kernel developer? Какие проблемы могут быть со стеком, да ещё в Python? Не хватит глубины 1000? В переборных задачах этого хватает с головой
я вообще не про питон ) это пример на питоне у Игоря. У нас другие технологии и другие требования и рисковать я не буду
Andrii
Простой цикл for выглядит проще
Рекурсия не эквивалетна for, попробуй, например, написать быструю инплейс сортировку с одним только for и тебе понадобится структура данных, куда складывать неотсортированные фрагменты def quicksort(l, r, nums): if len(nums) == 1: return nums if l < r: pi = partition(l, r, nums) quicksort(l, pi-1, nums) quicksort(pi+1, r, nums) return nums
Andrii
я вообще не про питон ) это пример на питоне у Игоря. У нас другие технологии и другие требования и рисковать я не буду
И в чём риск, например, если реализовать рекурсивно быструю сортировку? Если нравится гепорроем заниматься — велкам
Andrii
Я как-то заморочился однажды переписать рекурсивный алгоритм без рекурсии, потратил кучу часов, увидел, как это жутко и забил :)