замогильный уровень разработки
45 subscribers
117 photos
30 videos
3 files
44 links
Download Telegram
первая задача первого дня
https://adventofcode.com/2023/day/1
вкратце есть случайные строки с буквами и цифрами
с каждой строки взять первую и последнюю цифру, сообразить число, сложить

#!/usr/bin/env ruby

file_path = File.expand_path("../file.txt", __FILE__)
input = File.read(file_path)

strings = input.split("\n")
sums = strings.sum { _1.scan(/\d/).values_at(0, -1).join.to_i }
p sums
вам надо гуглить самый сильный регулярка для цифр, берете первую и последнюю оставляете в "строке" и потом приводите к интеджеру результаты каждой строки не забудьте сложить
вторая задача первого дня
цинк тот же
я обманул строки не совсем случайные там попадаются
tow,three, four и другие слово-цифры
суть осталась таже только теперь слово-цифры включаются в "число" которое суммируем
пример two1nine - это 29, а это 7pqrstsixteen - 76
так вот гуглим мэтчинг в регулярках, гуглим ИЛИ в регулярках а перед этим пихаем в массив слова numbers = [one, two, three, four, five, six, seven, eight, nine]
в итоге если правильно спросить чатгпт сделает нам что то такое ```
?=(#{numbers.keys.join("|")}|\d))```
слово в цифру переводим по индексу+1 и так же суммируем
програмисты чат делают
🔥2
второй день 1 задача
https://adventofcode.com/2023/day/2
Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green

снова задрачить регулярки хотя я погорячился с задрачить отделить цифры от букв так назовем.
надо просуммировать номера игор(game) но не все
а вот условие если blue < 14, green < 13, red < 12
т.е. в примере 3 и 4 не катит, суммируем 1 2 5
регулярка которая ищет паттерн цифра + пробел + цвет и отдает цифру

```/(\d+) blue/ ```
записываем в переменную
проверяем что влазим в 14/13/12 соответственно,
если влазим
/Game (\d*)/
аналогичная регулярка для игор
третий день 1 задача (и последняя)
сложно описать требования лучше зайдите https://adventofcode.com/2023/day/3
вкратце, ниже будет картинка - числа в зачет те которые соседтсвуют с символами кроме точек(в том числе вверх вниз и по диагонали)
из картинки ниже это все кроме 58 и 114
остальные надо сложить.
кстати у каждого свой набор исходных данных в ответ принимается только сумма, данные это примерно как на картинке только примерно 150 строк по 150 сабстрингов ну вы поняли не хочу что путались символы из условия с символами вообще.
=======================================================================
предусловие от меня стринга это массив сабстрингов каждый это 1 элемент, если в вашем языке не так соболезную
так вот если учесть предусловие у нас получается матрица 150 на 150(примерно), и мы можем найти "координаты" индексы спецсимволов
далее по часовой или по обратному направлению как хотите, ходим по соседним координатам в поисках цифр
но записываем только координаты первых цифр! на "внутреннем"(тот который индекс в строке) индексе идите назад пока не закончатся цифры и последний индекс на котором начинается наше число записываем
второе предусловие от меня(руби) при приведении строки в число у нас выводится первое число игнорируя последующие символы и цифры.
либо гугли самый сильный регулярка которая ловит первые цифры, даже если в строке их несколько вы будете знать координаты начала.
ну и все считаем сумму тушим джопу
😱1
в рабочие рот ебал это делать, до следующих выходных если не нальют, а если нальют то до березня
внезапно поттэрн мэтчинг в четвертом дне(круге ада)
мое любимое, пока легко
в след посте будет картинка все поймете сама задача побуждает так поступить
есть такая строка "41 48 83 86 17 | 83 86 6 31 17 9 48 53" - суть как в лотто, достать 41, 48, 83, 86, 17 которые и слева и справа
*head, "|", *tail или как говорят программисты * хуй, "|", *жопа или как говорят бадибилдеры *жопа, "|", *бутылка
ну вообщем гуглите паттерн матчинг пиздатая тема потому что пытаюсь в прод тулить каждый месяц и все реджектят
ладно к задаче
у нас получается head это "41 48 83 86 17" и  tail это "83 86 6 31 17 9 48 53", ну собственно в руби это делается (head & tail) противоположность вычитанию массивов, tail- (tail-head) то же самое. Скорей всего логическое И есть в других языках тоже. Далее по условию надо посчитать сколько очков набрали с одной такой строки(их снова дофига) очки это число фибоначи со второй итерации, обычно оно идет 1 1 2 3 5 8, мы первую не считаем и получается 5 совпадений это 8 очков реализуйте это с помощью чат гпт никогда вам фибоначи больше не надо будет считать.
Если спросят на собесах реализовать спросите "нахуй вы мне звоните" не стоит туда идти.
ну собсна все день легкий поэтому даже сделаль.
In the above example, card 1 has five winning numbers (41, 48, 83, 86, and 17) and eight numbers you have (83, 86, 6, 31, 17, 9, 48, and 53). Of the numbers you have, four of them (48, 83, 17, and 86) are winning numbers! That means card 1 is worth 8 points (1 for the first match, then doubled three times for each of the three matches after the first).

Card 2 has two winning numbers (32 and 61), so it is worth 2 points.
Card 3 has two winning numbers (1 and 21), so it is worth 2 points.
Card 4 has one winning number (84), so it is worth 1 point.
Card 5 has no winning numbers, so it is worth no points.
Card 6 has no winning numbers, so it is worth no points.
адвент оф код не будет ловите хуергу
сразу день 8
https://adventofcode.com/2023/day/8
вкратце смотрим скриншот ниже
LR - это лево право в задаче таких овер 100 могут быть в любом порядке. да логично это шаги налево направо
а ходить будем по структуре ниже, соответственно L это выбор варианта первый в скобочках R это выбор варианта второго в скобочках
стартуем с ААА заканчиваем ZZZ посчитать шаги, если LR шаги закончились идем с по кругу с первого
собственное решение в самой задаче, делаем хеш из структуры в условии ключ это значение до равно а значения ключа это массив того что в скобочках
циклом бежим по хешу, с переменной которая инкрементируется каждый круг цикла выходим когда нашли zzz
так как уровень адвент оф кода поднялся дымом из трубы крематория дахау, мой уровень не тянет сложность задач. Но мне шепнули что сегодня в честь сотоны легкая задача, вечером будет.
А в понедельник меня ждет обсер на собесе с алгосиками, тоже разберу(порешаю за 4 часа вместо 20 минут) в скором времени после.
🔥1
15 день адвент оф коде
https://adventofcode.com/2023/day/15
на вход просто через запятую символы по 2-3
задача
Determine the ASCII code for the current character of the string.
Increase the current value by the ASCII code you just determined.
Set the current value to itself multiplied by 17.
Set the current value to the remainder of dividing itself by 256.

ну все проходимся по каждой стринге предварительно вход разделив запятыми и применяем эти манипуляции.
Сегодня в выходной день 🤡 прошелся по задачам тут https://seanprashad.com/leetcode-patterns/ , поставив фильтр oracle. В надежде что в понедельник попадутся те же. Гугл говорит еще возможны варианты написать контроллер или экшн, завтра посмотрю детали что может быть. Хотел выразить крайнее негодование этих алгосов, как говориться — знания в стол, последний год собесы по руби где просили алгосы 1, это будет второй.
литкод не пригодился, чел начал вещать на румынском попросил на инглиш вышло "сомнительн но окей"(с).
Ссылка на хакерранк. Задача вернуть среднее значение одного поля из жсон респонса, по поиску из двух полей. Потом добавить(либо сразу предусмотреть если умны) пагинацию в зависимости что пришло в ответ(тотал_пейджес). Пресетап метод getPulse(diagnosisName, doctorId) вернуть инт, по ссылке поймете что за поля. Можно гуглить задавать тупые вопросы и тд
Доп вопросы уже не по задаче но близко:
что делать если пагинацию применить нельзя а клиент хочу все и сразу, перевел в тему сервисов и предложил заюзать джобу которая клиенту(сервису) будет постом слать все что он просил сразу либо по частям в боди запихнется все.
авторизация для паблик айпи как бы сделал и юзал бы сторонние либы, сикрет_кей в хедере и проверка на милдваре плюс сделал бы сам без либ сказал даже сессий по факту нет хули там юзать.
вопрос про тенант апи, что должно делать мидлваре, вот тут незнаю потому что не работал - сказал что первый параметр строки может помогать с базой данных и мидлвара "готовит" базу либо данные из базы для работы, например у вас есть dickpick.com вы выросли и стало eu.dickpick.com us.dickpick.com и тд первый параметр(это не параметр я хз как правильно назвать) урла может быть частью уник_ид дикпиков а значит eu.dickpick.com будет работать только с eu_uuid юзерами либо в базе eu.
🌭1
Пиздуем в гошку - да там больше вакансий, когда собесы хз, конечно чем быстрее тем лучше сначала но выходим из vim новогоднего запоя.
Наклевывается один как раз руби+го но там долго отвечает хр. Энивей я сторонник того что собесов должно быть дохуя, а не точечных "сопроводительных писем" и другого дрочева, так что надеюсь получится хотябы 3-4 в неделю.
🔥1
📌 безпроигрышная подписка - я пытаюсь свичнутьс в го вы получаете либо что надо учить/делать для успешного го собеса либо что не надо. Roadmap - тут сделаю ноушн который будет редактироваться по мере успешности/безуспешности собесов, там будут ресурсы для изучения и вопросы с собесов, если совсем попрет будут собесы записывать.
🔥5