Rodion
Когда уже меня добавят в вайтлист Bing'a...
Добавляют сразу, долго ждать нужно. Кста, у меня не работает бинг аи на телефоне, а на пк работает. Пишет что вы ещё должны подождать
Dmitry (Inock)
я уже все равно ничего не соображаю к концу дня. Завтра буду думать.
Dmitry (Inock)
To recover the original string from the given triplets, we can use a graph-based approach. We can treat each letter as a node in a graph, and each triplet as a directed edge between the corresponding nodes. For example, if we have the triplet "wht", we would create a directed edge from node "w" to node "h", and from node "h" to node "t". Once we have constructed this graph, we can use a topological sorting algorithm to order the nodes in the graph. This will give us a possible ordering of the letters in the original string. If there is more than one possible ordering, we can try all of them until we find the correct one. Here's the algorithm in more detail: Initialize an empty graph G. For each triplet (a, b, c): a. Add nodes a, b, and c to the graph if they are not already present. b. Add directed edges from a to b, and from b to c. Perform a topological sort on the graph to get a list of nodes in topological order. If there is more than one possible ordering, try each of them until you find the correct one. Concatenate the letters in the correct order to get the original string.
Dmitry (Inock)
Here's an implementation of the algorithm in Python: python from collections import defaultdict from queue import Queue def recover_secret(triplets): # Step 1: Initialize an empty graph G. graph = defaultdict(list) # Step 2: Add edges to the graph for each triplet. for triplet in triplets: graph[triplet[0]].append(triplet[1]) graph[triplet[1]].append(triplet[2]) graph[triplet[2]] # Make sure all nodes are in the graph. # Step 3: Perform a topological sort on the graph. indegrees = {node: 0 for node in graph} for node in graph: for neighbor in graph[node]: indegrees[neighbor] += 1 q = Queue() for node in indegrees: if indegrees[node] == 0: q.put(node) result = [] while not q.empty(): node = q.get() result.append(node) for neighbor in graph[node]: indegrees[neighbor] -= 1 if indegrees[neighbor] == 0: q.put(neighbor) # Step 4: Try each possible ordering until we find the correct one. def dfs(current_order): if len(current_order) == len(result): return current_order for node in result: if node not in current_order: new_order = dfs(current_order + [node]) # Check if this ordering is correct. if all(graph[new_order[i]][j] == new_order[i+1] for i in range(len(new_order)-1) for j in range(len(graph[new_order[i]]))): return new_order return None order = dfs([]) # Step 5: Concatenate the letters in the correct order. return ''.join(order) This implementation uses a depth-first search to try each possible ordering of the nodes. The dfs function takes the current ordering as an argument and recursively tries to add each node to the ordering. If the length of the ordering is equal to the number of nodes in the graph, we have found a complete ordering and return it. Otherwise, we try to add each node that is not already in the ordering and recursively call dfs with the new ordering. We check
Dmitry (Inock)
а на java? Конечно, вот реализация алгоритма на Java: java import java.util.*; public class SecretString { public static String recoverSecret(char[][] triplets) { // Step 1: Initialize an empty graph G. Map<Character, Set<Character>> graph = new HashMap<>(); // Step 2: Add edges to the graph for each triplet. for (char[] triplet : triplets) { graph.computeIfAbsent(triplet[0], k -> new HashSet<>()).add(triplet[1]); graph.computeIfAbsent(triplet[1], k -> new HashSet<>()).add(triplet[2]); graph.computeIfAbsent(triplet[2], k -> new HashSet<>()); } // Step 3: Perform a topological sort on the graph. Map<Character, Integer> indegrees = new HashMap<>(); for (char node : graph.keySet()) { indegrees.put(node, 0); } for (char node : graph.keySet()) { for (char neighbor : graph.get(node)) { indegrees.put(neighbor, indegrees.getOrDefault(neighbor, 0) + 1); } } Queue<Character> q = new LinkedList<>(); for (char node : indegrees.keySet()) { if (indegrees.get(node) == 0) { q.add(node); } } List<Character> result = new ArrayList<>(); while (!q.isEmpty()) { char node = q.poll(); result.add(node); for (char neighbor : graph.get(node)) { indegrees.put(neighbor, indegrees.get(neighbor) - 1); if (indegrees.get(neighbor) == 0) { q.add(neighbor); } } } // Step 4: Try each possible ordering until we find the correct one. char[] order = new char[result.size()]; boolean[] used = new boolean[26]; if (dfs(graph, result, order, used, 0)) { // Step 5: Concatenate the letters in the correct order. return new String(order); } else { return ""; } } private static boolean dfs(Map<Character, Set<Character>> graph, List<Character> result, char[] order, boolean[] used, int index) { if (index == order.length) { return true; } for (char node : result) { if (!used[node - 'a']) { boolean valid = true; for (char neighbor : graph.getOrDefault(order[index - 1], Collections.emptySet())) { if (neighbor == node) { break; } if (!used[neighbor - 'a']) { valid = false; break; } } if (valid) { order[index] = node; used[node - 'a'] = true; if (dfs(graph, result, order, used, index + 1)) { return true; } used[node - 'a'] = false; } } } return false; } } В этой реализации используется мапа, чтобы хранить граф, и мапа, чтобы хранить входные степени каждой вершины. В dfs используется рекурсивный алгоритм для перебора всех возможных порядков вершин. Если мы находим правильный порядок, мы возвращаем true. Иначе
Шурок
а на java? Конечно, вот реализация алгоритма на Java: java import java.util.*; public class SecretString { public static String recoverSecret(char[][] triplets) { // Step 1: Initialize an empty graph G. Map<Character, Set<Character>> graph = new HashMap<>(); // Step 2: Add edges to the graph for each triplet. for (char[] triplet : triplets) { graph.computeIfAbsent(triplet[0], k -> new HashSet<>()).add(triplet[1]); graph.computeIfAbsent(triplet[1], k -> new HashSet<>()).add(triplet[2]); graph.computeIfAbsent(triplet[2], k -> new HashSet<>()); } // Step 3: Perform a topological sort on the graph. Map<Character, Integer> indegrees = new HashMap<>(); for (char node : graph.keySet()) { indegrees.put(node, 0); } for (char node : graph.keySet()) { for (char neighbor : graph.get(node)) { indegrees.put(neighbor, indegrees.getOrDefault(neighbor, 0) + 1); } } Queue<Character> q = new LinkedList<>(); for (char node : indegrees.keySet()) { if (indegrees.get(node) == 0) { q.add(node); } } List<Character> result = new ArrayList<>(); while (!q.isEmpty()) { char node = q.poll(); result.add(node); for (char neighbor : graph.get(node)) { indegrees.put(neighbor, indegrees.get(neighbor) - 1); if (indegrees.get(neighbor) == 0) { q.add(neighbor); } } } // Step 4: Try each possible ordering until we find the correct one. char[] order = new char[result.size()]; boolean[] used = new boolean[26]; if (dfs(graph, result, order, used, 0)) { // Step 5: Concatenate the letters in the correct order. return new String(order); } else { return ""; } } private static boolean dfs(Map<Character, Set<Character>> graph, List<Character> result, char[] order, boolean[] used, int index) { if (index == order.length) { return true; } for (char node : result) { if (!used[node - 'a']) { boolean valid = true; for (char neighbor : graph.getOrDefault(order[index - 1], Collections.emptySet())) { if (neighbor == node) { break; } if (!used[neighbor - 'a']) { valid = false; break; } } if (valid) { order[index] = node; used[node - 'a'] = true; if (dfs(graph, result, order, used, index + 1)) { return true; } used[node - 'a'] = false; } } } return false; } } В этой реализации используется мапа, чтобы хранить граф, и мапа, чтобы хранить входные степени каждой вершины. В dfs используется рекурсивный алгоритм для перебора всех возможных порядков вершин. Если мы находим правильный порядок, мы возвращаем true. Иначе
Да хватит кидать и спрашиавать вопросы у чат жпт
Шурок
чел
Dmitry (Inock)
Да хватит кидать и спрашиавать вопросы у чат жпт
завтра попробую, чего он накодил.
Blacktopus
может кто-нибудь рассказать о необходимых действиях для начала разработки игр на unity? Я установил VS code и C#. Скачал Unity Hub и Unity 2021.3. Этого достаточно?
Rodion
завтра попробую, чего он накодил.
В интернете если что есть ответы на тесты codewars. Можешь подглядывать
Igor
ты чему то научился? ... ничему
m700
решал-решал лииткод этот ваш, меня сегодня на собесе задачки спросили ((
Sleep
И что же?
m700
вот как быстро в ойти вкатиться
Rodion
Какой же бинг тупой. Он просто делает запрос в поисковик и даёт ответ на основе результата. Задумка хорошая, но на деле я просто получаю воду. ГПТ намного лучше для дз и поиска ответов
Rodion
Если бы не сказал что это бинг, подумал бы что о чатгпт речь, ибо описание точно подходит
Вот есть тест. Вопрос и варианты ответа. ГПТ дал мне правильные ответы, а бинг написал "ну я хз, это зависит от обстоятельств, вот статьи, почитай, может что-нибудь найдешь"
Maksim Pozharskiy
А, понял теперь. Ну да, бинг заметнее умнее, ведь он дал информацию для обучения, которая прокачает тебя. Похоже про чатгпт скоро забудут
Maksim Pozharskiy
Не знаю, не пробовал, все говорят что сложнее
Maksim Pozharskiy
А я думал по запаху определил
Rodion
Мне после реакта синтаксис Angular и Vue кажется странным
Agent_RBY_
Я тыкал немного Ангуляр, но в основном знаю только его из того, что говорят знакомые. В общем, Ангуляр отличается от других, тем что это действительно фреймворк, там есть практически все что нужно для работы и это все нужно изучить. Возможно, сложно будет привыкнуть к декораторам и классам, если никогда не работали с ними, плюс знания ТС, соответственно, нужны. Удручает тот факт, что популярность Ангуляра не особо ростёт, а значит и материала по нему меньше, что тоже затруднит обучение. Ну и работу тоже будет сложнее найти, скорее всего (но это не точно, я не смотрел вакансии)
Agent_RBY_
У Реакта хватает проблем
Agent_RBY_
Мне не нравится куда он идёт и как его воспринимает народ)
Agent_RBY_
Разрабы Реакта очень сильно забивают на стандарты, многое сделано потому-что ИМ так удобно, потому-что в первую очередь это внутренняя библиотека Фейсбука. Реакт и прост, и сложен одновременно, плюс до новой (бета) доки у реакта ещё и документация так себе была, и в итоге сейчас очень много Реакт разработчиков, которые пишут не очень производительный код. Плюс, очень много людей восхваляют Реакт и используют его везде, где только можно, говоря что другие фреймворки гавно.
Agent_RBY_
Да, если коротко, то да
No
Ребята как называется маленькая панель который открывается когда нажимаешь по тексту с правым кнопкым мыша
No
спасибо
Rodion
ну, я не совсем понял как то, что ты написал связано с тем, что написал я)
Ну ок, ты просто написал что тебе не нравится как его воспринимает народ Но какая разница?
Agent_RBY_
Ну ок, ты просто написал что тебе не нравится как его воспринимает народ Но какая разница?
Большая) Мнение народа - один из главных факторов развития чего-либо. Если народ будет что-то засирать и не пользоваться этим - это не будет развиваться
Agent_RBY_
Я всего два года в вебе, но мне хватило)
Agent_RBY_
Хоть я и сам Реакт разработчик, в общем то
Rodion
Хоть я и сам Реакт разработчик, в общем то
Я изучаю реакт в свободное время. Как решается проблема индексации веб приложения поисковиками. Там есть несколько вариантов и несколько технологий. Что мне стоит учить? Ну и что ты учил?
Rodion
Ахахаха, особенно досталось пхп
Rodion
Да, тут как и с питоном другая проблема. Популярность может порождать хейт
Arseniy
слушайте, после регистрации в ChatGPT кто то пробовал заходить в чат без впн, банили?
Arseniy
или посоветуйте, пожалуйста, хороший впн
Arseniy
бесплатный, студент все-таки
Agent_RBY_
Я изучаю реакт в свободное время. Как решается проблема индексации веб приложения поисковиками. Там есть несколько вариантов и несколько технологий. Что мне стоит учить? Ну и что ты учил?
> Как решается проблема индексации веб приложения поисковиками Есть два варианта: - Мета теги - Server Side Rendering Первое можно потыкать, погуглить что такое, там не сложно. Второе сложнее, есть разные фреймворки для этого. Сейчас самый популярный фреймворк - Next.js. Мне он не особо нравится, но все остальное сейчас в коммерции не юзают, поэтому если надо SSR, то только он. Сидишь, изучаешь, смотришь. За недельку-вторую можно вполне неплохо изучить
Agent_RBY_
А нужно сразу писать на server side или переносить react на next.js?
Ну типа, можно и с готовым приложением на Next.js переехать, это не так уж и сложно, это же все ещё Реакт
Rodion
А нужно сразу писать на server side или переносить react на next.js?
Имею ввиду стоит сразу так писать проект так или это делают в конце?
Maksim Pozharskiy
И так и так бывает
Maksim Pozharskiy
Если на момент создания проекта есть потребность - будут делать сразу на нексте
Agent_RBY_
Ну если есть возможность, лучше конечно начинать сразу с Next.js, что бы потом не мигрировать)
Rodion
Понял, спасибо
Dmitry (Inock)
В интернете если что есть ответы на тесты codewars. Можешь подглядывать
Да решить эту задачку не шипко сложно. Тут самый интерес не в том, чтобы решить, а в том, чтобы было красиво.
Dmitry (Inock)
ты чему то научился? ... ничему
Я ещё и не читал чго он там написал. Я же говорю, к концу дня вообще не соображаю. Завтра гляну, если руки дойдут.
Rodion
Ну когда-то мы от книг перешли к гуглу, теперь от гугла к ИИ
Шурок
И до этого не все умели
Rodion
Как же повезло, что в этом году мне писать диплом, а не в прошлом
Шаман Каган
Как же повезло, что в этом году мне писать диплом, а не в прошлом
да да сделаешь его на отъебись только с помощь гопотачата
Maksim Pozharskiy
А потом будут говорить что в универе ничему не научили))
Dmitry (Inock)
Люди привыкли решать задачи каким-то своим инструментом. Они его изучили, хорошо знают, легко в нем ориентируется. И вот появляется какой-то альтернативный инструмент, делающий то же самое, но на него надо переучиваться. Никто переучиваться не будет. Я с VBS на PowerShell так и не пепеучился. Хотя, возможно, он и лучше.
Rodion
да да сделаешь его на отъебись только с помощь гопотачата
Хах, так у меня тема диплома "ИИ. Влияние его на общество и жизнь"
Agent_RBY_
Решает не рыночек, а разработчики
Dmitry (Inock)
Рыночек порешает. Адаптируйся или умри
Это неоднозначная тема. Я со своим VBS не вижу конкуренции.
Agent_RBY_
если разработчики что-то не юзают, то это и на рынке не появляется
Rodion
да да сделаешь его на отъебись только с помощь гопотачата
Диплом это интересно, но писать много много воды - это будет делать гпт. Это точно нельзя назвать интересным и важным процессом. Я же должен буду диплом защитить, а для этого я должен его понять и выучить
Rodion
если разработчики что-то не юзают, то это и на рынке не появляется
Рынок порешает. Работодатели будут оценивать продуктивность разработчиков и результат
Шаман Каган
Rodion
вот в этом как раз и проблема образования, диплом это твоя самостоятельная исследовательская работа а ты "выучить диплом.."
И кто там что исследует. Ты ещё скажи, что на лабораторных работах вы эксперименты проводили
Шаман Каган
просто так прийти к преподам и сказать: чуваки ну мы же все взрослые люди давайте не выебывайться вы знаете и я знаю как это все происходит и пусть ставят оценку )
Шаман Каган
И кто там что исследует. Ты ещё скажи, что на лабораторных работах вы эксперименты проводили
ну вот я и говрю говно-ВУЗ и говно-образование н**уй так учиться...
Rodion
ну вот я и говрю говно-ВУЗ и говно-образование н**уй так учиться...
Да, поэтому нужно ехать учиться в Европу. Я в Европе, только уже нужно работать