21

Re: Додавання двох чисел у форматі linked list

(mapcar '+ '(1 2 3)'(3 4 5))

  :P

22

Re: Додавання двох чисел у форматі linked list

Так, будь-яка мова програмування після серії вдосконалень перетворюється на ЛІСП.

Подякували: leofun011

23 Востаннє редагувалося steamwater (27.09.2024 10:40:32)

Re: Додавання двох чисел у форматі linked list

ur_naz, це ви про що? Невже, про те що задача з боку формату чисел вiдносно складення зводится до задачи:
Як скласти 765 та 876 щоб вийшло 1245, при чому у варiантi "задача задля особливо обдарованих", де правила кодування вже поясненi, наперед? Може й так.
Работа iз однозв'язним списком значно цiкавiша, сама по собi.
Teg Miles, у моєму кодi, видно щонайменше 2 проблеми. Одна з них - неефективне використання iнтерфейсу std::forward_list, i вона легко вирiшується. Друга, це вада самого iнтерфейсу цього класу у контекстi текучоi задачи i її виправлення не таке вже й просте, але можливе. Подивiться сам клас https://en.cppreference.com/w/cpp/conta … rward_list,  та помiркуйте. Це буде корисно, якщо ви бачите себе як майбутнього програмiста C++. I це не заради розширеного розумiння std::forward_list, а саме задля того, щоб почути себе C++ програмером, що думає про деталi, аналiзує, копає, i iнодi розкопує) У цьому користь.
Хоча, якщо ви ще маєте запал на те, щоб по файнокодити  на манер С, це теж має право на життя. Можна працювати у двох напрямках. У всiлякому разi, якби не вашi питання, то у цьому роздiлi форуму була б тиша. А так можна щось поробити. За це, вам подяка)

24 Востаннє редагувалося P.Y. (27.09.2024 12:43:04)

Re: Додавання двох чисел у форматі linked list

ur_naz дав ліспівський код замість сіплюсплюсного, а ЛІСП, як відомо, є мовою, спеціально зробленою для роботи зі списками, тому програма в нього максимально коротка. Які я бачу недоліки в цьому коді:
1) Нема переносу розрядів — а отже, для такої пари чисел:

(mapcar '+ '(1 2 3)'(8 9 5))

результат буде (9, 11, 8), а не (9, 1, 9), як нам би того хотілось.
2) В умові сказано, що довжина списків може бути різною — отже, коротший список слід попередньо доповнити нулями чи іншим способом урахувати цю різницю.
3) З урахуванням переносу розрядів, кінцевий список може вийти довшим, ніж початкові — цього теж нема в поточній реалізації.

Подякували: steamwater, leofun012

25

Re: Додавання двох чисел у форматі linked list

Ба більше, в умові не просто аби-які списки, а зв'язні. Ліспівські списки, звісно, абстрактні і можуть бути реалізовані і на зв'язних, але мова досить чітко іде про явні структури, а не приховані.

Подякували: leofun011

26 Востаннє редагувалося steamwater (27.09.2024 15:51:55)

Re: Додавання двох чисел у форматі linked list

P.Y. написав:

ur_naz дав ліспівський код замість сіплюсплюсного, а ЛІСП, як відомо, є мовою, спеціально зробленою для роботи зі списками, тому програма в нього максимально коротка.

Ну поперше, ви у роздiлi С++, шановний. Тому ваша зневага у виглядi недо сіплюсплюсного висловлювання, не доречна. Я колись трохи кодив на auto-lisp, що є дiалектом Лiспу для AutoCAD. Це дивовижна мова, так. Але якщо казати про списки, то я б вже визначив LUA, тим бiшлше, що вона, iнколи зустрiчається у промислових С++ проектах.
Teg Miles, я все ж зроблю спробу розштурхати вас, до руху у корисному напрямку. Подивiться класс std::forward_list. Якщо спочатку буде незручно (iндусський дiалект англiйскої, навiгацiя по сайту, тощо), чи будуть питання з семантiки, - звертайтесь, - я вiдповiм. Але спочатку по-експерементуйте у кодi. Якщо, ви не вiдгукнентеся, менi доведеться самому продемонструвати, тi виправлення, що покращили б код, про який йшлося вище. Але, на жаль, тодi iнтрига буде втрачена, а моя спроба буде марною.

27

Re: Додавання двох чисел у форматі linked list

(mapcar '+ '(1 2 3)'(3 4 5 6))

;)

28 Востаннє редагувалося steamwater (27.09.2024 16:14:27)

Re: Додавання двох чисел у форматі linked list

ur_naz, у роздiлi https://replace.org.ua/forum/20/ є пiдроздiл Lisp. Останнє повiдомлення там датується 2016 (!!) роком. Спрямуйте свою енергiю на розвиток того роздiлу, замiсть забруднювати iнiшi.

29

Re: Додавання двох чисел у форматі linked list

Тут нецікаво, всі сюди.

30

Re: Додавання двох чисел у форматі linked list

P.Y. написав:

Тут нецікаво

*FACEPALM* нi, це там точно не цiкаво. не набридло вам сiсiшки вiд голой дiвки м'яти? воно ще вчится, а ви нащо понасiли? Чи вам батога дати, щоб тс бити? чи вас самих бити? i окремого батога тим, хто розказує, що вказiвник в плюсах то є список, бо це не так, але не так.
ну, це ж неможливо терпiти...
Задачка в три дii: pop + push.
Користуватись треба тим, що вже є, що придумали неглупi люди, а не винаходити мопеди, яки вже давно винайдено.

Доречi forward_list - це яма, чи не так? то якого дiдька insert_after?

31 Востаннє редагувалося steamwater (27.09.2024 20:57:03)

Re: Додавання двох чисел у форматі linked list

ur_naz написав:

нi, це там точно не цiкаво. не набридло вам сiсiшки вiд голой дiвки м'яти? воно ще вчится, а ви нащо понасiли? Чи вам батога дати, щоб тс бити? чи вас самих бити?

Подивiтьcя на свiй пост з lisp кодом. Воно вигляда наче ви з якихось кущiв вискочили з плакатом. Тай зараз, про якiйсь батiг волаєте, наче воно в вас десь стiрчить, та нагадує i перетинає усi iншi слова.

ur_naz написав:

i окремого батога тим, хто розказує, що вказiвник в плюсах то є список

Я такого не бачив, принаймнi там де був на цьому ресурсi. У цiй темi такого точно нема, то про що цей зойк?

ur_naz написав:

Доречi forward_list - це яма

Про це б можна було поговорити, але треба вам вилiзти з кущiв, кинути плакат та винути батiг. Тодi при наявностi члено роздiльної речи, можна обговорювати. Якщо коротко то - нi, forward_list це не яма.

ur_naz написав:

то якого дiдька insert_after?

Це зручно. Оскiльки Teg Miles поки мовчить, покажу:

 LS &ls_first=ls1_sz<ls2_sz? ls1:ls2;
    LS &ls_second=&ls_first==&ls1? ls2:ls1;

    LS ls_res;

    int remind(0), res(0);

    l_it it_frst=ls_first.begin(),it_end=ls_first.end(),
    it_sec=ls_second.begin(),it2_end=ls_second.end();
//////////////////////////////////////////////////////////////////////////
/*
    res= *it_frst+*it_sec;
    remind=res/10;
    res%=10;

    ls_res.push_front(res);

     l_it it_res=ls_res.begin();
       ++it_frst;
       ++it_sec;
 */
/////////////////////////////////////////////////////////////////////////////////////

    l_it it_res=ls_res.before_begin();//отака iнiцiалiзацiя дозволяє викинути блок коду, що закоментовано  

    for(;it_frst!=it_end;  ++it_frst, ++it_sec)
    {
        res= *it_frst+*it_sec+remind;

        remind=res/10;
        res%=10;

        it_res=ls_res.insert_after(it_res, res);
    }

     for(;it_sec!=it2_end; ++it_sec)
     {
        res=*it_sec+remind;

        remind=res/10;
        res%=10;

        it_res=ls_res.insert_after(it_res, res);
     }

    if(remind)
    ls_res.insert_after(it_res, remind);

    for(auto el:ls_res)cout<<el<<' ';

    return 0;
}

Саме insert_after працює тут разом з iтератором що вказуе на поле поперед begin(). Нi у якого контейнера std немає такого звiра як before_begin(). Це дозволяє почати список без стартового push_front().

32

Re: Додавання двох чисел у форматі linked list

steamwater написав:
P.Y. написав:

ur_naz дав ліспівський код замість сіплюсплюсного, а ЛІСП, як відомо, є мовою, спеціально зробленою для роботи зі списками, тому програма в нього максимально коротка.

Ну поперше, ви у роздiлi С++, шановний. Тому ваша зневага у виглядi недо сіплюсплюсного висловлювання, не доречна. Я колись трохи кодив на auto-lisp, що є дiалектом Лiспу для AutoCAD. Це дивовижна мова, так. Але якщо казати про списки, то я б вже визначив LUA, тим бiшлше, що вона, iнколи зустрiчається у промислових С++ проектах.
Teg Miles, я все ж зроблю спробу розштурхати вас, до руху у корисному напрямку. Подивiться класс std::forward_list. Якщо спочатку буде незручно (iндусський дiалект англiйскої, навiгацiя по сайту, тощо), чи будуть питання з семантiки, - звертайтесь, - я вiдповiм. Але спочатку по-експерементуйте у кодi. Якщо, ви не вiдгукнентеся, менi доведеться самому продемонструвати, тi виправлення, що покращили б код, про який йшлося вище. Але, на жаль, тодi iнтрига буде втрачена, а моя спроба буде марною.

Я бачив ваше посилання на спеціалізований зв'язаний список зі стандартної бібліотеки.
Застосую його за нагоди, а зараз моя мета просто виконання завдань.
Наберу достатньо базових навичок, почну працювати з вдосконаленням.
Зарано мені на глибину, втоплюся:).

Подякували: steamwater1

33 Востаннє редагувалося steamwater (27.09.2024 21:01:48)

Re: Додавання двох чисел у форматі linked list

Teg Miles написав:

Зарано мені на глибину, втоплюся:).


Ми ж поряд. Не дамо вам втопитися. В мене за плечима, доречи, практика першої допомоги, тож померти спокiйно я нi кому не дам) Смiлiше, - уперед! :)

34

Re: Додавання двох чисел у форматі linked list

ur_naz написав:

не набридло вам сiсiшки вiд голой дiвки м'яти?

Ви так це розписали, що аж захотілось перечитати Страуструпа.

Подякували: steamwater, leofun012

35 Востаннє редагувалося steamwater (27.09.2024 21:51:19)

Re: Додавання двох чисел у форматі linked list

P.Y. написав:

Ви так це розписали, що аж захотілось перечитати Страуструпа.

Знiмаю, капелюха пред тими хто має для цього достатнiй рiвень. Перед тими хто тiльки починає шлях у C++, теж, але з iншiх мiркувань. Iз скорботою, тобто. Я б порадив Лiпмана i Ко. Прату, можна теж. Потiм, набувши трохи практичного досвiду, можна й iншi речi. А Страуструп, навiть тяжчий за Александреску. Тому й знiмаю капелюха, якщо воно вам вже заходить. :)

36

Re: Додавання двох чисел у форматі linked list

P.Y. написав:
ur_naz написав:

не набридло вам сiсiшки вiд голой дiвки м'яти?

Ви так це розписали, що аж захотілось перечитати Страуструпа.

Це конктретна алегорія на оце неподобство

ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {

37 Востаннє редагувалося steamwater (28.09.2024 09:25:04)

Re: Додавання двох чисел у форматі linked list

Завдання з обучаючого сайту, що тут обговорюється є невдалим, але типовим. Це тому що, насправдi, анi в кого, майже, не має мети когось чомусь навчити. Це вже тут лунало. Це не є якоюсь вадою мови C++. Проте, якщо абстрагуватись вiд якостi завдання, його реалiзацiя має право на обговорення. Ви ж шановний, немаючи й вiддаленої гадки про мову взагалi, та объ'єкт однозв'язного списку у термiнинах C++, дозволяєте собi безглуздi висловлювання. На вiдповiдi не реагуєте. Це я про вашу яму та insert_after. Я зустрiчав таких на багатьох форумах i скажу, що такий тип учасника, це зло. Якщо нема iншiх людей у роздiлi Lisp, це логiчне пояснення, чому вiн у занепадi. Iдiть, шановний, туди та працюйте, а не шукайте мiсця де є якiсь люди серед якiх можно зробити амбре.
koala, прошу роздивитися та почистити тему.

38

Re: Додавання двох чисел у форматі linked list

steamwater, Тобi потеревенити, посратися, чи випендритися? На багатьох форумах, особливо росiйских я зустрiчав таких, як ти, персоналiй, що не знають кордонiв дозволеного. Дуже швидко такi кролi переходять на особистостi лише тому, що не дотягують рiвнем i не розумiють написаного, але ж треба завжди бути зверху, треба командувати тощо, а для цього навiть зневага пiдiйде. це якийсь комплекс неповноцiнностi, чи щось iнше, не знаю.
Тема вичерпана вже на минулiй сторiнцi. В твоєму кролiнгу нема потреби. Якщо мене зацепиш, могу i декласувати i перетворити на Вiталiка.
I останнє - питання: як правильно написати зв'язний список

39 Востаннє редагувалося steamwater (28.09.2024 21:42:25)

Re: Додавання двох чисел у форматі linked list

Ти ба, навiть здатнiсть розмовляти прорiзалась. Що до здатностi думати, все погано. З етiкою та вихованням теж.
Що до написання списку, то це не є темою даного топiку. Є другi теми, пошукайте, або створiть свою. Я спробував вам вiдповiсти про яму та insert_after (два тупi питання), але не почув вiдповiдi. А вiдповiдати на питання що завершує чергогву купку лайна, у якостi маскування, вiдповiдати нема бажання.
Доречи, якщо ви, дiйсно були:

ur_naz написав:

На багатьох форумах

i досi не зрозумiли, що до теми, а що нi, це багато про що говорить. Вам, особисте, не вiдповiдатиму доки не побачу людське обличча.

40

Re: Додавання двох чисел у форматі linked list

Тобто клас зв'язного списку ти написати не вмiєш, то навiщо пащу розкрив?