15842009278680.png95 Кб, 266x286
15 лет программирую на С++ Не могу решить easy задачку на литкоде уже 3 часа. Ебало моё имагинирова 3306557 В конец треда | Веб
15 лет программирую на С++
Не могу решить easy задачку на литкоде уже 3 часа.

Ебало моё имагинировали?

задача 13. Roman to Integer с виду кажется изи...
2 3306569
>>306557 (OP)
Решение принципиально не смотрю.
Но кроме как городить парсер с таблицей переходов идей нету, но кажется что должно быть какое-то легкое решение в пару строк...
3 3306582
Я просто сижу и смотрю на задачу как дурак, я нихуя не могу сообразить просто в голове пустота, я пытался начинать писать код и там по накатанной что-то сделать но всё равно ноль.
Походу я всё.
4 3306592
>>306582
Скорее всего твоя затыка в том что ты хочешь решить красивее чем требуется для прохождения тестов. Попробуй просто решить "в лоб"
5 3306656
>>306557 (OP)
А нах там что-то решать? За это не платят же.
6 3306699
>>306592
Да мне даже в лоб не приходило решение, но я и условия до конца не сразу понял, думал перед числами может быть произвольное кол-во символов и т.д. короче думаю надо писать сложный парсер который будет смотреть вперед и т.д.

>>306656
Ну чтоб на работку устроиться на новую где плотят збс.
Да и так мозги расшевелить.

Короче поздравьте меня пол дня угробил на решение изи задачи лол.

int romanToInt(string s) {
array<int, 128> t;
t['I'] = 1;
t['V'] = 5;
t['X'] = 10;
t['L'] = 50;
t['C'] = 100;
t['D'] = 500;
t['M'] = 1000;

vector<tuple<char, char, int>> states=
{
{'V', 'I', 4},
{'X', 'I', 9},
{'L', 'X', 40},
{'C', 'X', 90},
{'D', 'C', 400},
{'M', 'C', 900},
};

auto is_transition = [&](char prev, char cur) {
for(auto [ch1, ch2, v] : states)
{
if(ch1 == prev && ch2 == cur)
return tuple{true, v};
}

return tuple{false, 0};
};

int sum{};
bool post_sum = false;

while(!s.empty())
{
char prev = s.back();
s.pop_back();

if(s.empty())
{
sum += t[prev];
break;
}

char cur = s.back();
s.pop_back();

auto [trans, val] = is_transition(prev, cur);
if(trans)
{
sum += val;
}
else
{
sum += t[prev];
s.push_back(cur);
}
}

return sum;
}
6 3306699
>>306592
Да мне даже в лоб не приходило решение, но я и условия до конца не сразу понял, думал перед числами может быть произвольное кол-во символов и т.д. короче думаю надо писать сложный парсер который будет смотреть вперед и т.д.

>>306656
Ну чтоб на работку устроиться на новую где плотят збс.
Да и так мозги расшевелить.

Короче поздравьте меня пол дня угробил на решение изи задачи лол.

int romanToInt(string s) {
array<int, 128> t;
t['I'] = 1;
t['V'] = 5;
t['X'] = 10;
t['L'] = 50;
t['C'] = 100;
t['D'] = 500;
t['M'] = 1000;

vector<tuple<char, char, int>> states=
{
{'V', 'I', 4},
{'X', 'I', 9},
{'L', 'X', 40},
{'C', 'X', 90},
{'D', 'C', 400},
{'M', 'C', 900},
};

auto is_transition = [&](char prev, char cur) {
for(auto [ch1, ch2, v] : states)
{
if(ch1 == prev && ch2 == cur)
return tuple{true, v};
}

return tuple{false, 0};
};

int sum{};
bool post_sum = false;

while(!s.empty())
{
char prev = s.back();
s.pop_back();

if(s.empty())
{
sum += t[prev];
break;
}

char cur = s.back();
s.pop_back();

auto [trans, val] = is_transition(prev, cur);
if(trans)
{
sum += val;
}
else
{
sum += t[prev];
s.push_back(cur);
}
}

return sum;
}
7 3306706
>>306557 (OP)
Решал эту задачу пару месяцев назад. Решение действительно есть в строчек 10 основного кода. Просто не надо усложнять. Видимо какая-то проф деформация произошла. Когда всегда стараешься действовать по шаблону, рассчитывая, что задача объемная и его применение окупится.

Мимо с 10-летним опытом плюсов.
8 3306710
>>306699
Ебать ты нахуярил. Мое почтение.
9 3306713
>>306706
>>306710
Спасибо. Да глянул ща решения, там реально в 5 строк можно это сделать. Но пох.
10 3306733
>>306699

> на работку


На какой работе требуется решать задачки из универских лаб?
11 3306739
>>306557 (OP)
Сегодня решал её утром пару часов, решил оставить на завтра. Задизморалился на весь день. Там же уровень easy, а я вроде уже не должен быть easy.
Мимо 4 года плюсов.
12 3306761
>>306557 (OP)
Это нормально. Литкод - это же головоломки для тех, кому скучно, что-то типа кроссвордов или шахматных этюдов. К работе программиста оно никакого отношения не имеет. Дебилы на менеджерах зафорсили эти задачки, а потом удивляются, почему в их сраный тиньков люди не идут и вакансии висят по полгода.
13 3306937
>>306733
На работе никакой практически, на собесах - на всех.
Зачем? А потому что фаанг так делали, а мы тупо как бараны решили повторить.
14 3306938
>>306739
Там главное условия хорошо понять, само решение можно сделать очень простым.
image.png39 Кб, 657x645
15 3307354
Решил сегодня 10 задач и сейчас наткнулся на очередную EASY задачу....
70. Climbing Stairs

Я блять в ахуе.
Ладно, думаю задача по комбинаторике, взял бектрекинг алгоритм нахуярил и оно сука не работает на больших числах ( еще бы ), при n=44 time limit exceeded. Конечно блять там же миллион комбинаций может быть. Я хз. Наверное я слишком тупой. Решения как всегда не смотрел еще. Но уверен индусы решили в 2 строки.
16 3307374
>>307354
Глянул решение, оказывается это решается через последовательность фибоначи... блять я что вам математик чтобы до этого додуматься? Тут реально нужно знать именно решение этой задачи, самому догадаться очень тяжело, еще и будучи не математиком. Там даже челы в комментах пишут со степенями в CS что не могли решить, и даже челы с мат. бэкграундом не все могут решить ... этож пиздец изи задача, лол
17 3307429
>>307374
Решение алгоритмических задач это не про iq. Нарешиваешь какое-то количество задач и запоминаешь паттерны. Потом уже глядя на условия примерно представляешь что заюзать.
18 3307501
>>307374
Теперь ты понимаешь, почему все хейтят литкод на собесах. В этой задаче ты должен заучить решение, догадаться тут невозможно. Тупо тест на память, с таким же успехом можно спрашивать отрывки из Шекспира.
19 3307502
Литкод всегда был и будет про математическое решение задач уровня школы-универа. На уровне "вот тебе формула, просто подставь числа, когда увидешь что-то похожее". Ну знаешь, когда тебе давали условную теорему Ролля, а почему и зачем - не обьясняли. Просто видишь знакомый паттерн, то применяй эту теорему.
Кстати, вдохновился твоей идеей и тоже решил порешать некоторые задачи и выпал с two-sum. Я не понимаю, какой сверхразум ее придумал, но отдаю должное, до решения через одинарную мапу и .containsKey() хрен когда додумался бы.
Мимо джава 3 года
20 3307730
>>306557 (OP)

>задача 13. Roman to Integer с виду кажется изи...


Посмотрел. Оказывается, решал её пару лет назад, правда на петухоне. Смотрю решение и не могу понять, как пришёл к нему.
Литкод смысл дрочить только перед собеседованиями.
21 3308731
>>306699
Ебать ты нагородил там, задача в одну строку буквально решается:
fromRoman ← {+/⍵ׯ1*(1↓⍵,0)>⍵} (⌷∘ 1 5 10 50 100 500 1000¨'IVXLCDM' ⍳⊢)

>fromRoman 'XIX'


>19

23 3308739
>>308731

> (1↓⍵,0)


ヽ(*・ω・)ノ
24 3308750
>>308731
Лол, на этой хуйне кто-то в серьез что-то пишет?
25 3308756
>>308750
Покажи не хуйню. Сможет она потягаться в выразительности с этим старичком 60х годов?
26 3308770
>>308756

>Сможет она потягаться в выразительности


Perl
27 3308780
>>308770
Код в студию
28 3308795
>>308780
while(read+STDIN,$_,2048){$a=29;$b=73;$c=142;$t=255;@t=map{$_%16or$t^=$c^=(
$m=(11,10,116,100,11,122,20,100)[$_/16%8])&110;$t^=(72,@z=(64,72,$a^=12($_%16
-2?0:$m&17)),$b^=$_%64?12:0,@z)[$_%8]}(16..271);if((@a=unx"C
",$_)[20]&48){$h
=5;$_=unxb24,join"",@b=map{xB8,unxb8,chr($_^$a[--$h+84])}@ARGV;s/...$/1$&/;$
d=unxV,xb25,$_;$e=256|(ord$b[4])<<9|ord$b[3];$d=$d>>8^($f=$t&($d>>12^$d>>4^
$d^$d/8))<<17,$e=$e>>8^($t&($g=($q=$e>>14&7^$e)^$q8^$q<<6))<<9,$_=$t[$_]^
(($h>>=8)+=$f+(~$g&$t))for@a[128..$#a]}print+x"C
",@a}';s/x/pack+/g
29 3308803
>>308795
И что этот кусок должен должен был продемонстрировать? Что код на перле, как и на любом другом языке, можно обфусцировать?
30 3308831
>>308803
Что этот код выглядит примерно так же как и твоё говно на APL которое никто не поймет
31 3308981

>римская сс в десятичную


В чём сложность задачи? Нихуя не понял.
32 3309153
>>308831
Хм... а с чего ты решил, что незнакомый язык должен быть тебе понятен? Ты у мамы особенный? Сеньор-смуззихлёб, который прохавал айти с самого низа: от жиквери до реакта?

>никто не поймет


Не нужно быть семи пядей во лбу, чтобы просто увидеть, что APL ебёт. А кого заинтересует, как именно и почему, те разберутся. Язык другой, но не такой сложный, каким кажется.
33 3310040
>>307354
>>307374
Она решается очень просто, по индукции.
Допустим у тебя есть лесенки до $n$ ступеньки и ты знаешь для каждой от $1$ до $n$ сколько способов есть добраться до неё.
Допустим для $n$-ной есть $k$ способов. Добавим теперь одну ступеньку, всего $n+1$ ступенек. Добраться до $n$-ной $k$ способов, и потом остаётся один шаг. Получаем
$k_{n}$ способов + ?
Мы можем добраться до $n-1$ ступеньки и сделать 2 шага, окажемся на $n+1$-ступеньке.
$k_{n}+k_{n-1}+?$
ниже мы спускаться не можем, потому что при любом шаге мы попадем на уже известную ступеньку, а этот способ у нас уже записан.
Тогда $k_{n+1}=k_{n}+k_{n-1}$
то есть сумма способов для $n$-ной лесенке равна сумме способов двух предыдущих.
работаю на дноработах, последняя была дворником
34 3310041
>>310040
ебучая макака latex только к /math прикрутила
35 3310435
>>306569
ПРОСТО сделай таблицу всех доступных знаков, а потом циклом отрезай от строки первый попавшийся substring > -1 (от большего знака к меньшему) и плюсуюй в аккумулятор пока строка пустой не станет
мимо-олимпиадник по квадробингу
36 3310458
>>306557 (OP)

> Roman to Integer с виду кажется изи...


Ну ты и лох
37 3362807
Я бы очканул за такое браться но как только ты сказал что оно легкое взял яйца в кулак и за полчаса методом биться башки об стену и ебли с ошибками компилятора выполнил задачку
38 3362899
>>310458
прикол уровня 8 лет занимаюсь паркуром не могу перешагнуть бордюр
39 3366185
>>310040
Охуеннно
зачем тебе латех для n+1?
40 3366921
>>366185
Чтобы было красиво.
Вкатитсья так и не могу. Какая же скучная *уйня это ваше программирование, не могу себя заставить регулярно учиться. Ещё и сдвг душит. Видимо судьба прыгать по дноработам. Как выпал снег ушёл с дворника, кидать снег сил нет, перебираю овощи в магните.
41 3367629
>>306699
как-то сложно, вот попроще

class Solution {
public:
Solution() : map_({
{"I", 1},
{"V", 5},
{"X", 10},
{"L", 50},
{"C", 100},
{"D", 500},
{"M", 1000},
{"IV", 4},
{"IX", 9},
{"XL", 40},
{"XC", 90},
{"CD", 400},
{"CM", 900}

}) {}
std::string last_ {};
std::unordered_map<std::string, int> map_;
int sum_ {};
int romanToInt(string s) {
for (auto c : s) {
std::string current(1, c);
std::string combined = last_ + current;
int v = map_[combined];
if (!v) {
v = map_[current];
}else{
sum_ -= map_[last_];
}
sum_ += v;
last_ = current;
}
return sum_;
}
};
41 3367629
>>306699
как-то сложно, вот попроще

class Solution {
public:
Solution() : map_({
{"I", 1},
{"V", 5},
{"X", 10},
{"L", 50},
{"C", 100},
{"D", 500},
{"M", 1000},
{"IV", 4},
{"IX", 9},
{"XL", 40},
{"XC", 90},
{"CD", 400},
{"CM", 900}

}) {}
std::string last_ {};
std::unordered_map<std::string, int> map_;
int sum_ {};
int romanToInt(string s) {
for (auto c : s) {
std::string current(1, c);
std::string combined = last_ + current;
int v = map_[combined];
if (!v) {
v = map_[current];
}else{
sum_ -= map_[last_];
}
sum_ += v;
last_ = current;
}
return sum_;
}
};
42 3388537
>>306557 (OP)
Всё нормально, братан, у меня поменьше опыта, лет 10 тока и не в крестах а в джаве, но литкод поначалу вызывал некоторые проблемы, это нормально, главное верь в себя, не останавливайся и не зацикливайся на неудачах.
43 3388542
>>306557 (OP)
Ты просто заточился на решение продуктовых задач, а не на олимпиадное дрочево для волчар.
image.png232 Кб, 1502x2084
44 3388556
>>388542
Хотя нет. Пошла искать что у тебя там за задача. Это чисто на салфетке решение за 5 минут.
image.png251 Кб, 1082x2074
45 3388561
>>388556
И если подумать немного
46 3388916
>>388542
Волчары как раз не могут в алгособесы разве что покопировать ответ гопоты
47 3390964
>>388561
>>308731
Учись, как надо.
48 3392979
>>388556

>IV CM etc. константами


Кринж
49 3410635
>>306557 (OP)
Чел. мяу только 4 года опыта коммерческого опыта. На прошлой неделе откопал литкодовский аккаунт, часа 4 решал блять задачу по мерджу отсортированных списков номер 21, с кучей неудачных попыток
Пиздец, такой стыд, мне аж до сих пор неприятно
50 3414407
>>306582

>Я просто сижу и смотрю на задачу как дурак, я нихуя не могу сообразить просто в голове пустота



ты просто долбоеб как и все программисты.
51 3414421
>>414407
Конечно. Только долбоеб будет считать, что обязан решить любой ребус который случайно увидит.
52 3415599
>>306557 (OP)
Литкод задачи решаются по шаблонам. Там всего штук 20 шаблонов, которые покрывают подавляющее большинство задач. Вся суть в том, прочитать условие задачи, понять каким шаблоном ее нужно решить и собственно решить. От балды ты много задач не нарешаешь.
53 3415622
>>415599

Я все задачи от балды решаю (кроме хардов)
54 3416025
>>415599
Смотря какие цели ты преследуешь. Я решаю от балды например, но не литкод, а кодварс, там много задач надёргано отовсюду, не только с алгособесов и не все ты решишь каким то методом. Да и вообще то что ты знаешь метод это не значит что ты им владеешь
55 3419295
>>306557 (OP)
Потому что литкод это не про программирование в привычном смысле и не про интеллект, а про алгоритмы, как ни странно. А алгоритмы изучают студенты на computer science или информатика и вычислительная техника. Вместе с математикой. Это буквально отдельный предмет в информатике, понимаешь? Буквально то, что вытекает из дискретной математики.

Для меня это просто было не очевидно, я как бы поясняю.
56 3424069
Решил наговнякать нестандартно.
Заняло 4 минуты.
struct RS {

int value,
subtr,
step;
};

inline int romeToInt(std::string in) {

static std::map<char, RS> map = {

{'I', {1,0,1}},
{'V', {5,1,2}},
{'X', {10,1,3}},
{'L', {50, 10, 4}},
{'C', {100, 10, 5}},
{'D', {500, 100, 6}},
{'M', {1000,100, 7}}
};

int summ = 0;
size_t size = in.size();
for (auto i = 0; i < size; i++) {

auto s1 = map[in];
if (i < size -1) {
auto s2 = map[in[i+1]];
if (s2.step > s1.step) {

summ += (s2.value - s2.subtr);
i++;
continue;
}
}
summ += s1.value;
}
return summ;
};
56 3424069
Решил наговнякать нестандартно.
Заняло 4 минуты.
struct RS {

int value,
subtr,
step;
};

inline int romeToInt(std::string in) {

static std::map<char, RS> map = {

{'I', {1,0,1}},
{'V', {5,1,2}},
{'X', {10,1,3}},
{'L', {50, 10, 4}},
{'C', {100, 10, 5}},
{'D', {500, 100, 6}},
{'M', {1000,100, 7}}
};

int summ = 0;
size_t size = in.size();
for (auto i = 0; i < size; i++) {

auto s1 = map[in];
if (i < size -1) {
auto s2 = map[in[i+1]];
if (s2.step > s1.step) {

summ += (s2.value - s2.subtr);
i++;
continue;
}
}
summ += s1.value;
}
return summ;
};
57 3424071
>>424069
Два алкаша с похмелья. Один пытается наколоть вилкой огурец в трехлитровой банке. Руки дрожат, огурец выскальзывает, ничего не получается. Другой долго смотрит на эти манипуляции, потом не выдерживает:
— Смотри, как это делается.
Берет вилку и сразу накалывает огурец.
Первый хмыкнул:
— Фиг бы ты поймал его, если б я его не загонял.
Снимок.JPG42 Кб, 822x550
58 3424074
>>424069
фикс*
Так лучше. Почистил от хуйни.
17429818108470.mp4279 Кб, mp4,
264x306, 0:03
59 3424076
Снимок.JPG27 Кб, 452x479
60 3424078
>>424074
Вот теперь совсем заебись. Программирование как скульптура аахах, сделал болванку, а потом отсекаешь все лишнее.
Снимок.JPG29 Кб, 727x489
61 3424083
>>424078
Все, финал.
Теперь такая хуйня IIX не канает.
Снимок.JPG33 Кб, 579x517
62 3424084
>>424083
Вот теперь точно все. Вроде работает.
63 3424089
>>424084
Только last убежал да в цикл, вверх вынести. Похуй. Я закончил) Вискарь допитXD
Снимок.JPG33 Кб, 743x516
64 3424090
Ну ладно ладно, поправил.
Снимок.JPG41 Кб, 713x538
65 3424092
Все-таки так
теперь и IVX тоже отлавливается как неправильный ввод.
66 3424094
Вроде блять все. По памяти не вылез, else бранчей нет. Хуйни нет.
static мапа не хорошо, bss, но я тупо в хедере нахуярил, лень.
s1 s2 вынести да наверх.
Поправляйте, так то я по профессии художник-кун, умеющий в код, так что ...
67 3424181
>>306557 (OP)
Добро пожаловать в клуб умственно-отсталых. Ты просто не можешь в логику, айсикью где-то 80-90.
Обновить тред
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах.Подробнее