Anonymous
Anonymous
Viktor
а зачем нужны два цикла? бежим по строке, кладем открывающие на стек, как только встречаем закрывающую — смотрим на стек, снимаем оттуда открывающую, это значит что нашлась валидная пара. если стек опустел раньше времени — фигня, значит слишком много закрывающих. если прошли всю строку, а стек не пустой — фигня, значит слишком много было открывающих. в итоге, должны были и всю строку пройти и стек должен быть пустым в конце.
Viktor
с одним типом скобок и стек не нужен, достаточно ровно одного счетчика и тот же самый алгоритм.
Anonymous
Viktor
Viktor
Viktor
попробуй перевести сообщение выше с русского языка на си шарп.
Anonymous
Спасибо сейчас попробую
Evgeniy
Тут достаточно одного цикла
Anonymous
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("Все в порядке");
}
}
}
Viktor
Anonymous
Да но только там нельзя подключить using System.Collections.Generic; придеться искать новое решение=( У меня все тесты проходит
Anonymous
https://stepik.org/lesson/79691/step/7
Viktor
Anonymous
Я отойду передохну вообще чет уже запутался
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Или отправлять в pastebin.com если код очень большой
Anonymous
А можно ли решить эту задачу, без использования стек?
Viktor
Порридж В Ко-ливинге
Круто, сегодняшняя ен проходит на питоне, TLE
Порридж В Ко-ливинге
Там тест с глубиной в 66. Т.е. надо обойти 2^65 нод… Это как вообще?!
Порридж В Ко-ливинге
Класс, итеративное не проходит по времени, а рекурсивное проходит…
Viktor
у меня рекурсивное решение зашло без проблем, вроде.
Viktor
бывает такое, что TLE из-за ошибки в коде, бесконечный цикл.
Viktor
и сидишь думаешь что ж там за тест.
Viktor
Viktor
я к тому, что глубина != количество узлов
Viktor
не каждая нода имеет 2 деток.
Evgeniy
Evgeniy
Там же не надо прям всё дерево обходить
Порридж В Ко-ливинге
не каждая нода имеет 2 деток.
Да да, в этом был и прикол, я заменял каждый None на 2 None, думая что мне эта инфа нужна будет)
Вот тест
https://pastebin.com/UpGC05Xd
Evgeniy
Viktor
Viktor
Evgeniy
Это дерево в визуалайзере выглядит прям широким
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
Однажды была задача, где была нужна куча. Проще было написать на питоне
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
Konstantin
Viktor
ну вот…
Viktor
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
в этом году в шри макеты легкие какие-то прям
Nikolay
Viktor
Ilia
в 2018(или 17) был клиент для умного дома, там море текста, переопределение инпутов, лютые скроллинги и т.д. было
Ilia
а здесь прям интересно даже получается, все 3 части связаны, плюс алго секция есть
Viktor
Sergei
Во сколько задача меняется по Москве? Не успел вчерашнюю сегодня вовремя засабмитить
Roman
Evgeniy
Когда часы переведут будет 10:00
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Вспомните какую компанию из FAANG я не люблю больше всего?)
Evgeniy
Порридж В Ко-ливинге
Вообще все алгоритмы рекомендаций у инсты сводятся к тому, что они заставляют тебя что-то смотреть и жмешь "не нравится". Они предлагают раз 10, даже если ты это не хочешь смотреть. И раз в 10 разных вариантов ты это начинаешь смотретт...
Я называю это ИИ (искусственный идиотизм)
Заранее извиняюсь за токсичность