Viktor
а зачем нужны два цикла? бежим по строке, кладем открывающие на стек, как только встречаем закрывающую — смотрим на стек, снимаем оттуда открывающую, это значит что нашлась валидная пара. если стек опустел раньше времени — фигня, значит слишком много закрывающих. если прошли всю строку, а стек не пустой — фигня, значит слишком много было открывающих. в итоге, должны были и всю строку пройти и стек должен быть пустым в конце.
Viktor
с одним типом скобок и стек не нужен, достаточно ровно одного счетчика и тот же самый алгоритм.
Anonymous
Понимаю. Бывал 😊
Я тут новое что то придумал но хз=(
Viktor
попробуй перевести сообщение выше с русского языка на си шарп.
Anonymous
Спасибо сейчас попробую
Evgeniy
Тут достаточно одного цикла
Anonymous
using System; using System.Collections.Generic; namespace ConsoleApp6 { class Program { static void Main(string[] args) { Task.CheckPairs("Console.ReadLine();", '(', ')'); /* Все в порядке */ } } class Task { public static void CheckPairs(string a, char b, char c) { var Sym = new Stack<char>(); char x = '('; char y = '['; char z = '{'; char x1 = ')'; char y1 = ']'; char z1 = '}'; for(int i = 0; i < a.Length; i++) { if(a[i] == b) { if (b == x || b == y || b == z) { char sim = a[i]; Sym.Push(sim); } } if(a[i] == c) { char simm2 = a[i]; if (simm2 == x1) { char simm = Sym.Peek(); if (simm == x) Sym.Pop(); } if (simm2 == y) { char simm = Sym.Peek(); if (simm == y1) Sym.Pop(); } if (simm2 == z) { char simm = Sym.Peek(); if (simm == z1) Sym.Pop(); } } } int f = Sym.Count; if (f != 0) Console.WriteLine("Найдены ошибки"); else Console.WriteLine("Все в порядке"); } } }
Anonymous
Да но только там нельзя подключить using System.Collections.Generic; придеться искать новое решение=( У меня все тесты проходит
Anonymous
https://stepik.org/lesson/79691/step/7
Anonymous
Зачем там Collections.Generic?
Так если его отключаю стек красным горит
Anonymous
Я отойду передохну вообще чет уже запутался
Порридж В Ко-ливинге
Или отправлять в pastebin.com если код очень большой
Anonymous
А можно ли решить эту задачу, без использования стек?
Порридж В Ко-ливинге
Круто, сегодняшняя ен проходит на питоне, TLE
Порридж В Ко-ливинге
Там тест с глубиной в 66. Т.е. надо обойти 2^65 нод… Это как вообще?!
Порридж В Ко-ливинге
Класс, итеративное не проходит по времени, а рекурсивное проходит…
Viktor
Там тест с глубиной в 66. Т.е. надо обойти 2^65 нод… Это как вообще?!
интересно откуда там такое развесистое дерево, может все же реально количество узлов не 2^65? это ж предельное значение, а так дерево может быть вытянуто в список с 65 узлами.
Viktor
у меня рекурсивное решение зашло без проблем, вроде.
Viktor
бывает такое, что TLE из-за ошибки в коде, бесконечный цикл.
Порридж В Ко-ливинге
интересно откуда там такое развесистое дерево, может все же реально количество узлов не 2^65? это ж предельное значение, а так дерево может быть вытянуто в список с 65 узлами.
Нет, там реально 65 глубина. Просто я сохранял ноды с None. По сути Литкод немного обманывает, т.к. в теории там могли бы быть не None, и ни у кого бы не проходило бы решение 🤣
Viktor
и сидишь думаешь что ж там за тест.
Порридж В Ко-ливинге
бывает такое, что TLE из-за ошибки в коде, бесконечный цикл.
Там падает по середине тестов и я только for циклы использую) Я просто None складывал, щас решение кину
Viktor
я к тому, что глубина != количество узлов
Viktor
не каждая нода имеет 2 деток.
Evgeniy
у меня рекурсивное решение зашло без проблем, вроде.
Тоже рекурсивное прошло нормально.
Evgeniy
Там же не надо прям всё дерево обходить
Порридж В Ко-ливинге
не каждая нода имеет 2 деток.
Да да, в этом был и прикол, я заменял каждый None на 2 None, думая что мне эта инфа нужна будет) Вот тест https://pastebin.com/UpGC05Xd
Evgeniy
Это дерево в визуалайзере выглядит прям широким
Evgeniy
на полном дереве у всех был бы облом.
Тесты на литкоде в этом плане щадящие
Viktor
Тесты на литкоде в этом плане щадящие
я думаю тогда задача бы решалась разве что распилом дерева.
Viktor
то есть в таком виде где тебе передают корень такого большого дерева — не ок.
Evgeniy
И в каком виде тогда был бы инпут?
Viktor
в виде маленького дерева 😃 то есть предполагается, что кто-то его до тебя распилил.
Порридж В Ко-ливинге
https://leetcode.com/problems/add-one-row-to-tree/discuss/1101118/Python-Hard-Iterative-solution-with-tricks
Viktor
а потом, когда ты поменял свой кусок, его надо вклеить назад в большое дерево.
Viktor
хранить где-нибудь ссылки на оригинальные узлы.
Evgeniy
в виде маленького дерева 😃 то есть предполагается, что кто-то его до тебя распилил.
😉 ну или самому пилить. А потом обходить и склеивать обратно
Порридж В Ко-ливинге
Плюс
Благо) А на каком ЯПе ты оьычно пишешь?
Evgeniy
Благо) А на каком ЯПе ты оьычно пишешь?
Шарп. Иногда питон. И го было несколько раз
Evgeniy
Однажды была задача, где была нужна куча. Проще было написать на питоне
Nikolay
Наверное не самый подходящий чат, но спрошу) Смотрю вот ШРИ и что то не соображу. Вот выдержка из задания: В первом задании необходимо сверстать шаблоны по макетам. Шаблоны должны отображаться на весь экран и соответствовать макетам в представленном размере. Пожалуйста, напишите скрипт build/stories.js, реализующий код формирования HTML-разметки шаблонов и функцию шаблонизации renderTemplate, которая принимает строку с алиасом шаблона alias и данные для шаблона data. Ожидаемый результат функции renderTemplate — строка с HTML-разметкой слайда. Данные для шаблонов представлены в файле data.json в каталоге data, описание формата. Функция должна быть доступна глобально, для этого присвойте функцию renderTemplate в качестве метода объекта window внутри скрипта. // Пример скрипта stories.js window.renderTemplate = function(alias, data) { // ... return '<HTML-разметка отдельного слайда в виде строки>'; } Вот тут полная инфа - https://github.com/yndx-shri/shri-2021-task-1 И вот собственно вопрос - как собрать в виде строки этот HTML? В голове особо идей нету: 1) Формировать его в виде строки и подставлять параметры через интерполяцию: return `<div>Hello ${user}</div>` 2) Если брать React там же нет вроде функции которая вернет сгенерированный HTML - да и не понятно нужен ли он там. Такое ощущение что должно быть какое то простое адекватное решение, но я его не вижу. Подтолкните к нему плиз)))
Viktor
Наверное не самый подходящий чат, но спрошу) Смотрю вот ШРИ и что то не соображу. Вот выдержка из задания: В первом задании необходимо сверстать шаблоны по макетам. Шаблоны должны отображаться на весь экран и соответствовать макетам в представленном размере. Пожалуйста, напишите скрипт build/stories.js, реализующий код формирования HTML-разметки шаблонов и функцию шаблонизации renderTemplate, которая принимает строку с алиасом шаблона alias и данные для шаблона data. Ожидаемый результат функции renderTemplate — строка с HTML-разметкой слайда. Данные для шаблонов представлены в файле data.json в каталоге data, описание формата. Функция должна быть доступна глобально, для этого присвойте функцию renderTemplate в качестве метода объекта window внутри скрипта. // Пример скрипта stories.js window.renderTemplate = function(alias, data) { // ... return '<HTML-разметка отдельного слайда в виде строки>'; } Вот тут полная инфа - https://github.com/yndx-shri/shri-2021-task-1 И вот собственно вопрос - как собрать в виде строки этот HTML? В голове особо идей нету: 1) Формировать его в виде строки и подставлять параметры через интерполяцию: return `<div>Hello ${user}</div>` 2) Если брать React там же нет вроде функции которая вернет сгенерированный HTML - да и не понятно нужен ли он там. Такое ощущение что должно быть какое то простое адекватное решение, но я его не вижу. Подтолкните к нему плиз)))
сразу bemjson шаблоны пиши, чтобы гарантированно попасть на стажировку 😉 вот шаблонизатор, который нужно реализовать соответственно, чтобы заработало https://github.com/vitkarpov/tiny-bemjson
Viktor
ну вот…
Viktor
Наверное не самый подходящий чат, но спрошу) Смотрю вот ШРИ и что то не соображу. Вот выдержка из задания: В первом задании необходимо сверстать шаблоны по макетам. Шаблоны должны отображаться на весь экран и соответствовать макетам в представленном размере. Пожалуйста, напишите скрипт build/stories.js, реализующий код формирования HTML-разметки шаблонов и функцию шаблонизации renderTemplate, которая принимает строку с алиасом шаблона alias и данные для шаблона data. Ожидаемый результат функции renderTemplate — строка с HTML-разметкой слайда. Данные для шаблонов представлены в файле data.json в каталоге data, описание формата. Функция должна быть доступна глобально, для этого присвойте функцию renderTemplate в качестве метода объекта window внутри скрипта. // Пример скрипта stories.js window.renderTemplate = function(alias, data) { // ... return '<HTML-разметка отдельного слайда в виде строки>'; } Вот тут полная инфа - https://github.com/yndx-shri/shri-2021-task-1 И вот собственно вопрос - как собрать в виде строки этот HTML? В голове особо идей нету: 1) Формировать его в виде строки и подставлять параметры через интерполяцию: return `<div>Hello ${user}</div>` 2) Если брать React там же нет вроде функции которая вернет сгенерированный HTML - да и не понятно нужен ли он там. Такое ощущение что должно быть какое то простое адекватное решение, но я его не вижу. Подтолкните к нему плиз)))
если серьёзно, то не вижу ничего плохого в интерполяции. можно добавить сахар а-ля https://johnresig.com/blog/javascript-micro-templating/
Viktor
Насчет реакта — а как же renderToString?
Viktor
хотя тащить это на клиент, странно. задача, видимо, не про это.
Nikolay
Насчет реакта могу чего то не знать)) Рабол с ним через прослойку)
Ilia
Наверное не самый подходящий чат, но спрошу) Смотрю вот ШРИ и что то не соображу. Вот выдержка из задания: В первом задании необходимо сверстать шаблоны по макетам. Шаблоны должны отображаться на весь экран и соответствовать макетам в представленном размере. Пожалуйста, напишите скрипт build/stories.js, реализующий код формирования HTML-разметки шаблонов и функцию шаблонизации renderTemplate, которая принимает строку с алиасом шаблона alias и данные для шаблона data. Ожидаемый результат функции renderTemplate — строка с HTML-разметкой слайда. Данные для шаблонов представлены в файле data.json в каталоге data, описание формата. Функция должна быть доступна глобально, для этого присвойте функцию renderTemplate в качестве метода объекта window внутри скрипта. // Пример скрипта stories.js window.renderTemplate = function(alias, data) { // ... return '<HTML-разметка отдельного слайда в виде строки>'; } Вот тут полная инфа - https://github.com/yndx-shri/shri-2021-task-1 И вот собственно вопрос - как собрать в виде строки этот HTML? В голове особо идей нету: 1) Формировать его в виде строки и подставлять параметры через интерполяцию: return `<div>Hello ${user}</div>` 2) Если брать React там же нет вроде функции которая вернет сгенерированный HTML - да и не понятно нужен ли он там. Такое ощущение что должно быть какое то простое адекватное решение, но я его не вижу. Подтолкните к нему плиз)))
так и есть же, по сути, как я понимаю, у тебя есть predefined значения шаблонов, ты просто берешь данные, подставляешь их в шаблон строки вывода и возвращаешь html as string
Ilia
а дальше строка body.innerHTML = window.renderTemplate(<алиас шаблона>, <данные шаблона>); вставит все это и покажет
Ilia
тут никакие фреймворки даже не нужны
Ilia
в этом году в шри макеты легкие какие-то прям
Viktor
ну зачем уж так 🙂 мы активно перебираемся на react ж
а зря, xjst навсегда в моём сердце 😃
Ilia
в 2018(или 17) был клиент для умного дома, там море текста, переопределение инпутов, лютые скроллинги и т.д. было
Ilia
а здесь прям интересно даже получается, все 3 части связаны, плюс алго секция есть
Sergei
Во сколько задача меняется по Москве? Не успел вчерашнюю сегодня вовремя засабмитить
Evgeniy
Когда часы переведут будет 10:00
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Вспомните какую компанию из FAANG я не люблю больше всего?)
Порридж В Ко-ливинге
Вообще все алгоритмы рекомендаций у инсты сводятся к тому, что они заставляют тебя что-то смотреть и жмешь "не нравится". Они предлагают раз 10, даже если ты это не хочешь смотреть. И раз в 10 разных вариантов ты это начинаешь смотретт... Я называю это ИИ (искусственный идиотизм) Заранее извиняюсь за токсичность