পুনরাবৃত্তি [বন্ধ] এর বাস্তব-বিশ্বের উদাহরণ


98

বাস্তব-বিশ্বের সমস্যাগুলি কী কী যেখানে গভীরতা-প্রথম অনুসন্ধান (ডিএফএস) ছাড়াও পুনরাবৃত্তির পদ্ধতির প্রাকৃতিক সমাধান হয়?

(আমি টাওয়ার অফ হ্যানয় , ফিবোনাচি নম্বর বা ফ্যাকটোরিয়াল রিয়েল-ওয়ার্ল্ড সমস্যাগুলি বিবেচনা করি না They এগুলি আমার মনে কিছুটা সঙ্কল্পিত)


4
সমস্ত পরামর্শের জন্য ধন্যবাদ তবে সবাই বৃক্ষ / নেটওয়ার্ক ট্র্যাভারসাল প্রস্তাব করে। থিসগুলি মূলত গভীরতা-প্রথম-অনুসন্ধানের সমস্ত উদাহরণ (বা বিএফএস আমি অনুমান করি)। আমি অন্যান্য ভাল অনুপ্রাণিত অ্যালগরিদম / সমস্যাগুলি খুঁজছিলাম।
রেডফুড

10
আমি এই প্রশ্ন পছন্দ! "আমাকে এক্স প্রযুক্তির সমস্ত ব্যবহার বলুন, টেকনিক এক্সের প্রধান ব্যবহারিক ব্যবহার ছাড়ুন"
জাস্টিন স্ট্যান্ডার্ড

4
আমি সর্বদা পুনরাবৃত্তি ব্যবহার করি তবে সাধারণত ম্যাথিক এবং গ্রাফি জিনিসগুলির জন্য। আমি পুনরাবৃত্তির উদাহরণগুলি সন্ধান করার চেষ্টা করছি যা নন-প্রোগ্রামারদের জন্য অর্থবহ হবে।
রেডফুড

6
আপনার নিজের সাহসিক উপন্যাস চয়ন করুন! আমি পুরো জিনিসটি পড়তে চাই এবং পুনরাবৃত্তি হ'ল এটি করার সর্বোত্তম উপায়।
আন্দ্রেস

বাস্তব-বিশ্বে কোনও পুনরাবৃত্তি নেই। পুনরাবৃত্তি একটি গাণিতিক বিমূর্ততা। আপনি পুনরাবৃত্তি ব্যবহার করে প্রচুর জিনিস মডেল করতে পারেন। সেই দিক থেকে, ফিবোনাচি একেবারে বাস্তব-বিশ্ব, কারণ এখানে বেশ কয়েকটি বাস্তব-বিশ্বের সমস্যা রয়েছে যা এইভাবে মডেল করা যায়। আপনি যদি মনে করেন যে ফিবোনাচি বাস্তব-বিশ্ব নয়, তবে আমি দাবি করব যে অন্যান্য সমস্ত উদাহরণও বিমূর্ত, বাস্তব-উদাহরণ নয় examples
জেন

উত্তর:


43

এখানে প্রচুর ম্যাথিক উদাহরণ রয়েছে, তবে আপনি একটি সত্যিকারের বিশ্ব উদাহরণ চেয়েছিলেন , তাই কিছুটা চিন্তাভাবনা করে, সম্ভবত এটিই আমি দিতে পারি সেরা:

আপনি এমন একজন ব্যক্তির সন্ধান পেয়েছেন যা প্রদত্ত সংক্রামক সংক্রমণে আক্রান্ত হয়েছে, যা মারাত্মক নয় এবং দ্রুত নিজেকে সংশোধন করে দেয় (টাইপ এ), 5 জনের মধ্যে একজন ব্যতীত (আমরা এই ধরণের বি কল করব) যিনি স্থায়ীভাবে সংক্রামিত হয়ে পড়ে এবং কোনও দেখায় না লক্ষণগুলি এবং কেবল একটি স্প্রেডারকে কাজ করে।

এটি বিপর্যয়ের বেশ বিরক্তিকর তরঙ্গ তৈরি করে যখন কখন টাইপ বি প্রচুর এ-কে সংক্রামিত করে

আপনার কাজটি হ'ল সমস্ত ধরণের বিএস সন্ধান এবং রোগের মেরুদণ্ড বন্ধ করতে তাদের টিকাদান। দুর্ভাগ্যক্রমে, আপনি সকলের জন্য সারাদেশে একটি সার্বিক নিরাময়ের ব্যবস্থা করতে পারবেন না, কারণ টাইপ-এ থাকা লোকেরাও বি-টাইপের জন্য কাজ করে এমন নিরাময়ের জন্য মারাত্মক অ্যালার্জিক are

আপনি যেভাবে এটি করবেন, এটি সামাজিক আবিষ্কার হবে, কোনও সংক্রামিত ব্যক্তিকে (টাইপ এ) দেওয়া হলে, তাদের প্রতিটি পরিচিতি একটি স্তূপে চিহ্নিত করে গত সপ্তাহে বেছে নিন। আপনি যখন পরীক্ষা করেন যে কোনও ব্যক্তি সংক্রামিত, তখন তাদের "ফলোআপ" কাতারে যুক্ত করুন। যখন কোনও ব্যক্তি বি টাইপ করেন, তাদের মাথার "ফলোআপ" এ যুক্ত করুন (কারণ আপনি এই দ্রুত থামাতে চান)।

প্রদত্ত ব্যক্তিকে প্রক্রিয়া করার পরে, কাতারের সামনে থেকে ব্যক্তিটি নির্বাচন করুন এবং প্রয়োজনে টিকাদান প্রয়োগ করুন। পূর্বে আমন্ত্রিত সমস্ত তাদের পরিচিতি পান এবং তারপরে তারা সংক্রামিত কিনা তা পরীক্ষা করুন।

সংক্রামিত লোকগুলির সারি 0 না হওয়া অবধি পুনরাবৃত্তি করুন এবং তারপরে অন্য প্রাদুর্ভাবের জন্য অপেক্ষা করুন ..

(ঠিক আছে, এটি কিছুটা পুনরাবৃত্ত, তবে এটি পুনরাবৃত্ত সমস্যা সমাধানের পুনরাবৃত্ত উপায়, এক্ষেত্রে, জনসংখ্যার বেসের প্রস্থের প্রথম দিকের পথটি সমস্যার সম্ভাবনার পথগুলি আবিষ্কার করার চেষ্টা করছে এবং তদ্বিতীয়ত পুনরাবৃত্ত সমাধানগুলি প্রায়শই দ্রুত এবং আরও কার্যকর হয় , এবং আমি বাধ্যতামূলকভাবে যেকোন জায়গায় পুনরাবৃত্তি সরিয়ে ফেলি এটি এতটা স্বভাবসুলভ হয়ে যায় .... .... অভিশাপ!)


4
ধন্যবাদ - এটি এখনও গ্রাফ ট্র্যাভারসাল তবে এটি ভালভাবে অনুপ্রাণিত এবং অ-প্রোগ্রামার লোকেদের বোঝায়।
রেডফুড

আমি বিশ্বাস করি 0 রোগীর সন্ধান করা আরও ভাল উদাহরণ হবে। সংক্রমণের কারণ হতে পারে এমন সমস্ত মিথস্ক্রিয়া নির্ধারণ করুন। সংক্রামক হওয়ার সময় সংক্রামক
পরেও

7
এই বাস্তব-দুনিয়ার উদাহরণটি এখন নিজেকে এতটা পরিচিত বলে মনে করে :(
হেরোলডলিভিয়েরি

110

পুনরাবৃত্তি একটি বাস্তব বিশ্বের উদাহরণ

একটি সূর্যমুখী


13
ম্যাট্রিক্স আর্কিটেক্ট দ্বারা পুনরাবৃত্তির সাথে কোড করা :)
মার্সেল

4
এই পুনরাবৃত্তি কিভাবে? অবশ্যই, এটি সুন্দর। কিন্তু পুনরাবৃত্তি? একটি ফ্র্যাক্টাল বাঁধাকপি সুন্দরভাবে কাজ করতে পারে, তবে আমি এই ফুলটিতে স্ব-মিল খুঁজে পাই না।
ক্লিমেট

4
আচ্ছা এটি গালে কিছুটা সংকীর্ণ, তবে এটি ফিলোটা্যাক্সিসের একটি উদাহরণ, যা ফিবোনাচি ক্রম দিয়ে বর্ণনা করা যেতে পারে, যা সাধারণত পুনরাবৃত্তির মাধ্যমে প্রয়োগ করা হয়।
হ্যানস সানজুনসন

4
"পুনরাবৃত্তির মাধ্যমে সাধারণত প্রয়োগ করা হয়" এর অর্থ এই নয় যে ফুলটি এটি করে। সম্ভবত এটি করে; আমি জানার মতো আণবিক জীববিজ্ঞানীর যথেষ্ট নই, তবে এটি কীভাবে হয় সে সম্পর্কে কোনও ব্যাখ্যা ছাড়াই আমি এটিকে বিশেষ সহায়ক হিসাবে দেখছি না। ডাউনভোটিং আপনি যদি এটির সাথে কোনও বিবরণ যুক্ত করতে চান (এটি জৈবিকভাবে সঠিক কিনা বা না, এটি অন্তর্দৃষ্টি দিতে পারে), আমি আনন্দের সাথে ভোটটি পুনর্বিবেচনা করব।
লিন্ডস

65

ফাইল সিস্টেমে কোনও ডিরেক্টরি কাঠামো জড়িত সম্পর্কে কীভাবে। পুনরাবৃত্তভাবে ফাইলগুলি সন্ধান করা, ফাইলগুলি মোছা, ডিরেক্টরি তৈরি করা ইত্যাদি etc.

এখানে একটি জাভা বাস্তবায়ন যা পুনরাবৃত্তভাবে একটি ডিরেক্টরি এবং এর উপ-ডিরেক্টরিগুলির বিষয়বস্তু মুদ্রণ করে।

import java.io.File;

public class DirectoryContentAnalyserOne implements DirectoryContentAnalyser {

    private static StringBuilder indentation = new StringBuilder();

    public static void main (String args [] ){
        // Here you pass the path to the directory to be scanned
        getDirectoryContent("C:\\DirOne\\DirTwo\\AndSoOn");
    }

    private static void getDirectoryContent(String filePath) {

        File currentDirOrFile = new File(filePath);

        if ( !currentDirOrFile.exists() ){
            return;
        }
        else if ( currentDirOrFile.isFile() ){
            System.out.println(indentation + currentDirOrFile.getName());
            return;
        }
        else{
            System.out.println("\n" + indentation + "|_" +currentDirOrFile.getName());
            indentation.append("   ");

            for ( String currentFileOrDirName : currentDirOrFile.list()){
                getPrivateDirectoryContent(currentDirOrFile + "\\" + currentFileOrDirName);
            }

            if (indentation.length() - 3 > 3 ){
                indentation.delete(indentation.length() - 3, indentation.length());
            }
        }       
    }

}

4
একটি ফাইল সিস্টেম অনুপ্রেরণা সরবরাহ করে (যা ভাল, ধন্যবাদ) তবে এটি ডিএফএসের একটি নির্দিষ্ট উদাহরণ।
রেডফুড

4
আমি "ডিএফএস" সংক্ষিপ্ত রূপটি পেলাম না - আমি ক্লাসরুমে বসে থেকে কিছুক্ষণ হয়ে গেল।
ম্যাট ডিলার্ড

4
গভীরতা-প্রথম অনুসন্ধান: ডিএফএস (নোড) ode নোডে ফোরাচ শিশু {দর্শন (শিশু); }}
হাওয়েস্ট

সহজ কোড উদাহরণস্বরূপ, যেমন দেখতে stackoverflow.com/questions/126756/...
Jonik

এই কোডটিতে কোন ত্রুটি আছে? GetPrivateDirectoryContent () getDirectoryContent () দিয়ে প্রতিস্থাপন করা উচিত নয়?
Shn_Android_Dev


16

ম্যাট ডিলার্ডের উদাহরণটি ভাল। আরও সাধারণভাবে, কোনও গাছের হাঁটাচলা খুব সহজেই খুব সহজেই পুনরাবৃত্তি দ্বারা পরিচালনা করা যায়। উদাহরণস্বরূপ, পার্স গাছ সংকলন, এক্সএমএল বা এইচটিএমএল ইত্যাদির উপর দিয়ে হাঁটা ইত্যাদি


আমি এই "পার্সিং গাছ সংকলন" একটি বুদ্ধিমান উত্তর পেয়েছি, যার মধ্যে গাছগুলি জড়িত রয়েছে তবে এখনও এটি কোনও অনুসন্ধানের সমস্যা নয়, যেমনটি প্রশ্নকারী চেয়েছিলেন। এটি কোনও ভাষার সংকলন বা ব্যাখ্যার কিছু সাধারণ ধারণা থেকে সাধারণীকরণ করা যেতে পারে। এটি একটি প্রাকৃতিক ভাষা "উদাহরণস্বরূপ" বোঝা (বোঝা, শোনা) হতে পারে, উদাহরণস্বরূপ, ইংরেজি।
ইম্জ - ইভান জ্যাকারিয়াশ্চ শেভ

16

পুনরাবৃত্তি প্রায়শই ব্যাকট্রাকিং অ্যালগরিদমের বাস্তবায়নে ব্যবহৃত হয় । এটির "রিয়েল-ওয়ার্ল্ড" অ্যাপ্লিকেশনটির জন্য, কীভাবে সুডোকু সমাধানকারী ?


একটি রাজ্য অ্যারে এবং একটি নিম্ন এটিকে গতিতে পারে।
বিসিএস

13

পুনরাবৃত্তি উপযুক্ত যখনই কোনও সমস্যাটিকে উপ-সমস্যায় ভাগ করে সমাধান করা যায়, যা তাদের সমাধানের জন্য একই অ্যালগরিদম ব্যবহার করতে পারে। গাছ এবং সাজানো তালিকার অ্যালগোরিদমগুলি একটি প্রাকৃতিক ফিট। বাইনারি স্পেস পার্টিশন (বিএসপি) গাছ, চর্বি মহকুমা বা বিশ্বকে উপ-ভাগে ভাগ করার অন্যান্য উপায়গুলি ব্যবহার করে গণ্য জ্যামিতির (এবং 3 ডি গেমস) অনেকগুলি সমস্যা পুনরাবৃত্তভাবে সমাধান করা যেতে পারে ।

আপনি যখন অ্যালগরিদমের যথার্থতার গ্যারান্টি দেওয়ার চেষ্টা করছেন তখন পুনরাবৃত্তিও উপযুক্ত। একটি ফাংশন দেওয়া হয়েছে যা অপরিবর্তনীয় ইনপুট নেয় এবং ফলাফল দেয় যা ইনপুটগুলিতে পুনরাবৃত্ত এবং অ-পুনরাবৃত্ত কলগুলির সংমিশ্রণ হয়, সাধারণত গাণিতিক আনয়ন ব্যবহার করে ফাংশনটি সঠিক (বা না) প্রমাণ করা সহজ। এটি একটি পুনরাবৃত্ত ক্রিয়াকলাপ বা পরিবর্তিত হতে পারে এমন ইনপুটগুলির সাহায্যে এটি করা প্রায়শই জটিল। আর্থিক গণনা এবং অন্যান্য অ্যাপ্লিকেশনগুলির সাথে ডিল করার সময় এটি কার্যকর হতে পারে যেখানে সঠিকতা খুব গুরুত্বপূর্ণ।


11

নিশ্চয়ই যে সেখানে প্রচুর সংকলক প্রচুর পরিমাণে পুনরাবৃত্তি ব্যবহার করে। কম্পিউটারের ভাষাগুলি স্বভাবতই নিজেকে পুনরাবৃত্ত করে তোলে (যেমন, আপনি 'যদি অন্যের ভিতরে বিবৃতি' যদি 'বিবৃতি, ইত্যাদি এম্বেড করতে পারেন)।


বিবৃতি পুনরাবৃত্তি না হলে এম্বেড করা।
জন মেঘের

তবে তাদের পার্স করার জন্য পুনরুক্তি প্রয়োজন, জন।
অ্যাপোক্যালিস্প

4
জন, আপনি যদি বাসা বেঁধে নিতে পারেন যে বিবৃতিগুলির অর্থ ভাষার সংজ্ঞা (এবং সম্ভবত ভাষা পার্সার) পুনরাবৃত্ত হয়।
ডেরেক পার্ক

সংকলককে হ্যান্ড-কোড করার অন্যতম সহজ উপায় হ'ল রিকার্সিভ ডেসেন্ট। ইয়্যাকের মতো সরঞ্জাম ব্যবহার করার মতো সহজ নয়, তবে এটি কীভাবে কাজ করে তা বোঝা সহজ। পুরো টেবিল-চালিত রাষ্ট্র মেশিনগুলি ব্যাখ্যা করা যেতে পারে, তবে সাধারণত কালো বাক্সগুলি হয়ে শেষ হয়।
সূর্যগ্রহণ

"পার্স গাছ সংকলন" উল্লেখ করে কোডি ব্রোকিয়াসের উত্তরও এই ক্ষেত্রটিতে নির্দেশ করেছে: ভাষার বিশ্লেষণ / ব্যাখ্যা / সংকলন।
ইম্জ - ইভান জ্যাকারিয়াশেভ

9

কেবলমাত্র ধারক নিয়ন্ত্রণে সমস্ত বাচ্চাদের নিয়ন্ত্রণের জন্য পঠন-পাঠ্য অক্ষম করা / সেট করা। আমার এটি করা দরকার কারণ কিছু বাচ্চাদের নিয়ন্ত্রণগুলি নিজেই পাত্রে ছিল।

public static void SetReadOnly(Control ctrl, bool readOnly)
{
    //set the control read only
    SetControlReadOnly(ctrl, readOnly);

    if (ctrl.Controls != null && ctrl.Controls.Count > 0)
    {
        //recursively loop through all child controls
        foreach (Control c in ctrl.Controls)
            SetReadOnly(c, readOnly);
    }
}

8

এসআইসিপি থেকে বিখ্যাত ইভাল / চক্র প্রয়োগ করুন

বিকল্প পাঠ
(উত্স: mit.edu )

এখানে eval এর সংজ্ঞা:

(define (eval exp env)
  (cond ((self-evaluating? exp) exp)
        ((variable? exp) (lookup-variable-value exp env))
        ((quoted? exp) (text-of-quotation exp))
        ((assignment? exp) (eval-assignment exp env))
        ((definition? exp) (eval-definition exp env))
        ((if? exp) (eval-if exp env))
        ((lambda? exp)
         (make-procedure (lambda-parameters exp)
                         (lambda-body exp)
                         env))
        ((begin? exp) 
         (eval-sequence (begin-actions exp) env))
        ((cond? exp) (eval (cond->if exp) env))
        ((application? exp)
         (apply (eval (operator exp) env)
                (list-of-values (operands exp) env)))
        (else
         (error "Unknown expression type - EVAL" exp))))

প্রয়োগের সংজ্ঞাটি এখানে:

(define (apply procedure arguments)
  (cond ((primitive-procedure? procedure)
         (apply-primitive-procedure procedure arguments))
        ((compound-procedure? procedure)
         (eval-sequence
           (procedure-body procedure)
           (extend-environment
             (procedure-parameters procedure)
             arguments
             (procedure-environment procedure))))
        (else
         (error
          "Unknown procedure type - APPLY" procedure))))

এখানে eval- ক্রম সংজ্ঞা:

(define (eval-sequence exps env)
  (cond ((last-exp? exps) (eval (first-exp exps) env))
        (else (eval (first-exp exps) env)
              (eval-sequence (rest-exps exps) env))))

eval-> apply-> eval-sequence->eval


7

গেম ডেভেলপমেন্টের (এবং অন্যান্য অনুরূপ অঞ্চল) সংঘর্ষ সনাক্তকরণের জন্য বিএসপি গাছের মতো জিনিসগুলিতে পুনরাবৃত্তি ব্যবহৃত হয়।


7

লোকেরা প্রায়শই একটি পুনরাবৃত্ত পদ্ধতি ব্যবহার করে দস্তাবেজের স্ট্যাকগুলি বাছাই করে। উদাহরণস্বরূপ, কল্পনা করুন যে আপনি সেগুলিতে 100 টি নথির নাম সহ বাছাই করছেন। প্রথম অক্ষর দ্বারা পাইলগুলিতে নথি স্থাপন করুন, তারপরে প্রতিটি গাদা বাছাই করুন।

অভিধানে শব্দগুলি অনুসন্ধান করা প্রায়শই বাইনারি-অনুসন্ধান-জাতীয় কৌশল দ্বারা সঞ্চালিত হয়, যা পুনরাবৃত্ত হয়।

সংস্থাগুলিতে, কর্তাব্যক্তিরা প্রায়শই বিভাগীয় প্রধানদের কমান্ড দেয়, যারা পরিবর্তে পরিচালকদের কমান্ড দেয় এবং আরও অনেক কিছু।


5

বাস্তব বিশ্বের প্রয়োজনীয়তা আমি সম্প্রতি পেয়েছি:

প্রয়োজনীয়তা এ: প্রয়োজনীয়তা এ সম্পর্কে ভালভাবে বোঝার পরে এই বৈশিষ্ট্যটি প্রয়োগ করুন


4

পার্সার এবং সংকলকগুলি পুনরাবৃত্ত-বংশদ্ভুত পদ্ধতিতে লিখিত হতে পারে। এটি করার সর্বোত্তম উপায় নয়, কারণ লেক্স / ইয়্যাকের মতো সরঞ্জামগুলি দ্রুত এবং আরও দক্ষ পার্সার তৈরি করে, তবে ধারণাগতভাবে সহজ এবং কার্যকর করা সহজ, তাই এগুলি সাধারণ থাকে remain


4

পুনরাবৃত্তি এমন সমস্যাগুলির (পরিস্থিতিতে) প্রয়োগ করা হয় যেখানে আপনি এটিকে ছোট ভাগে ভাগ করতে (এটি হ্রাস) করতে পারেন এবং প্রতিটি অংশ (গুলি) মূল সমস্যার সাথে একই রকম দেখাচ্ছে।

নিজের মতো করে ছোট ছোট অংশ যুক্ত জিনিসগুলির ভাল উদাহরণ:

  • গাছের কাঠামো (একটি শাখা গাছের মতো)
  • তালিকা (তালিকার একটি অংশ এখনও একটি তালিকা)
  • পাত্রে (রাশিয়ান পুতুল)
  • সিকোয়েন্সস (ক্রমের অংশটি পরের মতো দেখায়)
  • অবজেক্টের গ্রুপ (একটি সাবগ্রুপ এখনও একটি অবজেক্টের গ্রুপ)

পুনরাবৃত্তি একটি কৌশলটিকে ছোট এবং ছোট টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো করা পর্যন্ত। অবশ্যই, এগুলি ভেঙে ফেলার পরে, আপনাকে আপনার মূল সমস্যার একটি সম্পূর্ণ সমাধান গঠনের জন্য ফলাফলগুলি একসাথে ডানদিকে "স্টিচ" করতে হবে।

কিছু পুনরাবৃত্তিমূলক বাছাই করা অ্যালগরিদম, ট্রি-ওয়াকিং অ্যালগরিদম, মানচিত্র / হ্রাস অ্যালগরিদম, বিভাজন এবং বিজয় এই সমস্ত প্রযুক্তির উদাহরণ।

কম্পিউটার প্রোগ্রামিংয়ে, বেশিরভাগ স্ট্যাক-ভিত্তিক কল-রিটার্ন টাইপ ভাষাগুলিতে ইতিমধ্যে পুনরাবৃত্তির জন্য অন্তর্নিহিত ক্ষমতা রয়েছে: যেমন

  • সমস্যাটিকে ছোট ছোট টুকরো টুকরো করুন ==> মূল ডেটার একটি ছোট উপসেটে নিজেকে কল করুন),
  • টুকরোগুলি কীভাবে বিভক্ত করা হয়েছে তার উপর নজর রাখুন ==> কল স্ট্যাক,
  • ফলাফলগুলি সেলাই করুন ==> স্ট্যাক-ভিত্তিক রিটার্ন


4

পুনরাবৃত্তির কয়েকটি দুর্দান্ত উদাহরণ ক্রিয়ামূলক প্রোগ্রামিং ভাষায় পাওয়া যায় । ফাংশনাল প্রোগ্রামিং ল্যাঙ্গুয়েজে ( এরলং , হাস্কেল , এমএল / ওক্যামেল / এফ # , ইত্যাদি) কোনও তালিকা প্রক্রিয়াকরণ ব্যবহারের পুনরাবৃত্তি হওয়া খুব সাধারণ বিষয়।

সাধারণ অপরিহার্য OOP- শৈলীর ভাষাগুলিতে তালিকাগুলির সাথে কাজ করার সময়, লিঙ্কযুক্ত তালিকাগুলি ([আইটেম 1 -> আইটেম 2 -> আইটেম 3 -> আইটেম 4]) হিসাবে প্রয়োগ করা তালিকা দেখতে খুব সাধারণ বিষয়। তবে কিছু কার্যনির্বাহী প্রোগ্রামিং ভাষায়, আপনি দেখতে পান যে তালিকাগুলি তাদের পুনরাবৃত্তভাবে প্রয়োগ করা হয়, যেখানে তালিকার "শীর্ষস্থানীয়" তালিকার প্রথম আইটেমটির দিকে ইঙ্গিত করে এবং "লেজ" বাকী আইটেমযুক্ত একটি তালিকাতে নির্দেশ করে ( [আইটেম 1 -> [আইটেম 2 -> [আইটেম 3 -> [আইটেম 4 -> []]]]]) এটি আমার মতে বেশ সৃজনশীল।

তালিকার এই হ্যান্ডলিংটি যখন প্যাটার্ন মেলানোর সাথে মিলিত হয় তখন খুব শক্তিশালী। বলি আমি সংখ্যার একটি তালিকা যোগ করতে চাই:

let rec Sum numbers =
    match numbers with
    | [] -> 0
    | head::tail -> head + Sum tail

এটি মূলত বলেছে "যদি আমাদের খালি তালিকার সাথে ডাকা হত, 0" (আমাদের পুনরাবৃত্তি ভাঙতে দেয়) ফিরে আসুন, অন্যথায় মাথার মান + বাকী আইটেমগুলির সাথে ডাকা সমের মান (সুতরাং, আমাদের পুনরাবৃত্তি) ফিরিয়ে দিন।

উদাহরণস্বরূপ, আমার কাছে ইউআরএলগুলির একটি তালিকা থাকতে পারে , আমি মনে করি যে প্রতিটি ইউআরএল লিঙ্ক করে এমন সমস্ত ইউআরএলকে পৃথক করে দেয় এবং তারপরে আমি কোনও পৃষ্ঠার জন্য "মান" তৈরি করতে সমস্ত ইউআরএল / থেকে মোট লিঙ্কের সংখ্যা হ্রাস করি (গুগল এমন একটি দৃষ্টিভঙ্গি) পেজর্যাঙ্কের সাথে নিয়ে যায় এবং আপনি মূল ম্যাপ্রেডস কাগজে সংজ্ঞায়িত করতে পারেন )। আপনি এটি কোনও নথিতে শব্দ সংখ্যা উত্পন্ন করতে করতে পারেন। এবং অনেক, অনেক, পাশাপাশি অন্যান্য অনেক জিনিস।

আপনি এই ক্রিয়ামূলক প্যাটার্নটি কোনও প্রকারের মানচিত্রের কোডে প্রসারিত করতে পারেন যেখানে আপনি কোনও তালিকার তালিকা নিতে, এটিকে রূপান্তর করতে এবং অন্য কোনও কিছু ফিরিয়ে দিতে (অন্য কোনও তালিকা, বা তালিকার কোনও জিপ কমান্ড) রাখতে পারেন।


3

এক্সএমএল, বা গাছের যে কোনও কিছুকে ট্র্যাভার করছে। যদিও, সত্যি কথা বলতে, আমি প্রায় আমার কাজের ক্ষেত্রে পুনরাবৃত্তি ব্যবহার করি না।


এমনকি পুচ্ছ-পুনরাবৃত্তি না?
অ্যাপোক্যালিস্প

আমি আমার কেরিয়ারে একবার পুনরাবৃত্তি ব্যবহার করেছি এবং ফ্রেমওয়ার্কটি পরিবর্তিত হয়ে গেলে আমি এ থেকে মুক্তি পেয়েছি। আমরা যা করি তার 80% হ'ল CRUD।
চার্লস গ্রাহাম 0

4
"XML" প্রথম স্থানে উল্লেখ করা বেশ আশ্চর্যজনক। এটি কোনও প্রাকৃতিক জিনিস নয়, আপনি যে সাধারণ ব্যক্তিকে শেখাতে যাচ্ছেন এমন কিছু নয়, যা দৈনন্দিন জীবনে মোকাবেলা করতে হয়। তবে ধারণাটি অবশ্যই যথেষ্ট বুদ্ধিমান।
ইম্জ - ইভান জাখারিয়াশেভ

3

প্রতিক্রিয়া একটি শ্রেণিবদ্ধ প্রতিষ্ঠানে লুপ হয়।

শীর্ষ বস শীর্ষ আধিকারিকদের কোম্পানির প্রত্যেকের কাছ থেকে প্রতিক্রিয়া সংগ্রহ করতে বলে।

প্রতিটি নির্বাহী তার প্রত্যক্ষ প্রতিবেদন সংগ্রহ করে এবং তাদের সরাসরি রিপোর্ট থেকে প্রতিক্রিয়া সংগ্রহ করতে বলে।

এবং লাইন নিচে।

সরাসরি রিপোর্ট নেই এমন লোকেরা - গাছের পাতার নোড - তাদের মতামত দেয়।

প্রতিক্রিয়া প্রতিটি ম্যানেজারকে তার নিজস্ব প্রতিক্রিয়া যুক্ত করে ট্রিটিকে ব্যাক আপ করে।

অবশেষে সমস্ত প্রতিক্রিয়া এটিকে শীর্ষ বসের কাছে ফিরিয়ে আনবে।

এটি প্রাকৃতিক সমাধান কারণ পুনরাবৃত্তিমূলক পদ্ধতি প্রতিটি স্তরে ফিল্টারিংয়ের অনুমতি দেয় - সদৃশগুলির জালিয়াতি এবং আপত্তিকর প্রতিক্রিয়া অপসারণ। শীর্ষস্থানীয় একজন বিশ্বব্যাপী ইমেল প্রেরণ করতে এবং প্রতিটি কর্মচারীকে সরাসরি তার কাছে প্রতিক্রিয়া জানাতে পারে, তবে "আপনি সত্যকে পরিচালনা করতে পারবেন না" এবং "আপনি বরখাস্ত" সমস্যাগুলি রয়েছে তাই পুনরাবৃত্তি এখানে সেরা কাজ করে।


2

মনে করুন আপনি কোনও ওয়েবসাইটের জন্য একটি সিএমএস তৈরি করছেন, যেখানে আপনার পৃষ্ঠাগুলি গাছের কাঠামোয় রয়েছে, মূলটি হোম-পৃষ্ঠা বলে।

মনে করুন আপনার {ব্যবহারকারীর | ক্লায়েন্ট | গ্রাহক | বস} অনুরোধ করেছেন যে আপনি গাছটিতে কোথায় আছেন তা দেখানোর জন্য আপনি প্রতিটি পৃষ্ঠায় একটি ব্রেডক্রাম্ব ট্রেইল রাখেন।

প্রদত্ত যে কোনও পৃষ্ঠা এন এর জন্য, আপনি n এর পিতামাতাদের এবং তার পিতামাতার কাছে যেতে পারেন এবং তাই বার বার পাতা গাছের গোড়ায় ফিরে নোডের একটি তালিকা তৈরি করতে পারেন।

অবশ্যই, আপনি উদাহরণ হিসাবে পৃষ্ঠায় একাধিকবার ডিবি হিট করছেন, যাতে আপনি কিছু এসকিউএল এলিয়াসিং ব্যবহার করতে পারেন যেখানে আপনি পৃষ্ঠা-টেবিলটিকে একটি হিসাবে এবং পৃষ্ঠার টেবিলটিকে আবার খ হিসাবে দেখতে চান এবং এর সাথে আইডিতে যোগ দিতে পারেন বি। প্যারেন্ট, যাতে আপনি ডাটাবেসটিকে পুনরাবৃত্তিতে যোগ দেয়। এটি একটি সময় হয়েছে, সুতরাং আমার বাক্য গঠন সম্ভবত সহায়ক না।

তারপরে, আপনি কেবল একবার এটি গণনা করতে এবং পৃষ্ঠার রেকর্ডের সাথে এটি সংরক্ষণ করতে চান, পৃষ্ঠাটি সরাতে হলে কেবল এটি আপডেট করা। এটি সম্ভবত আরও দক্ষ হতে চাই।

যাইহোক, এটি আমার 0 .02


2

আপনার কাছে একটি সংগঠনের গাছ রয়েছে যা এন স্তরগুলি গভীর। বেশ কয়েকটি নোড চেক করা হয়েছে এবং আপনি কেবল সেই নোডগুলিতেই প্রসারিত করতে চান যা পরীক্ষা করা হয়েছে।

এটি এমন কিছু যা আমি আসলে কোড করেছিলাম। এটি সুন্দর এবং পুনরাবৃত্তি সহ সহজ।


2

আমার চাকরিতে আমাদের একটি জেনেরিক ডেটা কাঠামোযুক্ত একটি সিস্টেম রয়েছে যা গাছ হিসাবে বর্ণনা করা যায়। তার মানে হল যে ডেটার সাথে কাজ করার জন্য পুনরাবৃত্তি একটি খুব কার্যকর কৌশল।

পুনরাবৃত্তি ছাড়াই এটি সমাধান করার জন্য প্রচুর অপ্রয়োজনীয় কোড প্রয়োজন। পুনরাবৃত্তির সমস্যাটি হচ্ছে যা ঘটে তা অনুসরণ করা সহজ নয় not কার্যকর করার প্রবাহ অনুসরণ করার সময় আপনাকে সত্যই মনোনিবেশ করতে হবে। কিন্তু যখন এটি কাজ করে কোডটি মার্জিত এবং কার্যকর।



2
  • একটি এক্সএমএল ফাইল পার্স করা হচ্ছে ।
  • বহুমাত্রিক স্থানগুলিতে দক্ষ অনুসন্ধান search E. g। 2 ডি তে কোয়াড-ট্রি, 3 ডি-তে অক্ট-ট্রি, কেডি-ট্রি ইত্যাদি etc.
  • হায়ারারিকিকাল ক্লাস্টারিং।
  • এটি ভাবতে আসুন, যে কোনও শ্রেণিবদ্ধ কাঠামোকে অতিক্রম করে স্বাভাবিকভাবেই নিজেকে পুনরাবৃত্তি করার জন্য ধার দেয়।
  • সি ++ তে টেমপ্লেট বিপণন, যেখানে কোনও লুপ নেই এবং পুনরাবৃত্তি একমাত্র উপায়।

এই উত্তরটির ধারণার জন্য "এক্সএমএল" অত্যাবশ্যক নয় (এবং বিশেষভাবে এক্সএমএল উল্লেখ করা আপনার ঘৃণ্য / বিরক্তিকর হতে পারে আপনি শেখাচ্ছেন)। কেবল যে কোনও সাধারণ ভাষা (একটি কম্পিউটার ভাষা বা একটি প্রাকৃতিক ভাষা) একটি পুনরাবৃত্তীয় পার্সিং সমস্যার উদাহরণ হিসাবে যেতে পারে।
ইম্জ - ইভান জ্যাকারিয়াশেভ

পোস্টারে "বাস্তব-বিশ্বের সমস্যাগুলির জন্য জিজ্ঞাসা করা হয়েছিল যেখানে পুনরাবৃত্তির উপায় প্রাকৃতিক সমাধান"। একটি এক্সএমএল ফাইল পার্স করা অবশ্যই একটি বাস্তব-বিশ্ব সমস্যা এবং এটি স্বাভাবিকভাবেই নিজেকে পুনরাবৃত্তি করতে ndণ দেয়। এক্সএমএলটিতে আপনার কিছু অদ্ভুত বিদ্বেষ রয়েছে বলে মনে হয় এটি খুব ব্যাপকভাবে ব্যবহৃত হয় তা পরিবর্তন করে না।
দিমা


2

আমি জানি সর্বোত্তম উদাহরণটি হল কুইকোর্ট , এটি পুনরাবৃত্তি সহ অনেক সহজ। একবার দেখুন:

শপ.ওরিলি / প্রোডাক্ট/9780596510046.do

www.amazon.com/ বিউটিফুল- কোড- লিডিং- প্রোগ্রামার্স- অনুশীলন / ডিপি/0596510047

(3 অধ্যায়ে প্রথম সাবটাইটেলটি ক্লিক করুন: "আমি লিখেছি সবচেয়ে সুন্দর কোড")


4
এবং মার্জসর্টও পুনরাবৃত্তির সাথে সহজ।
ম্যাথু শিনকেল 0

4
লিঙ্কটি নষ্ট হয়ে গেছে। আপনি কি বইয়ের শিরোনাম যুক্ত করতে পারেন?
পিটার মর্টেনসেন 11'14

@ পিটারমোরটেনসেন, বইটি গ্রেগ উইলসন এবং অ্যান্ডি ওরামের সুন্দর কোড Beautiful আমি লিঙ্কটি আপডেট করেছি, যদিও মনে হয় ও'রিলি আর ভিতরে peুকতে দেয় না। তবে আপনি একবার দেখে নিতে পারেন আমাজন।
ফ্যাবিও সেকোনলো

1

ফোন এবং কেবল সংস্থাগুলি তাদের ওয়্যারিং টপোলজির একটি মডেল বজায় রাখে, যা কার্যত একটি বৃহত নেটওয়ার্ক বা গ্রাফ is যখন আপনি সমস্ত পিতামাতা বা সমস্ত সন্তানের উপাদান খুঁজে পেতে চান তখন এই মডেলটিকে অতিক্রম করার জন্য পুনরাবৃত্তি একটি উপায়।

যেহেতু সংশোধন প্রক্রিয়াজাতকরণ এবং মেমরির দৃষ্টিকোণ থেকে ব্যয়বহুল, তাই টপোলজি পরিবর্তিত হয় এবং ফলাফলটি একটি পূর্বনির্ধারিত তালিকার ফর্ম্যাটে সংরক্ষণ করা হয় কেবল তখনই এই পদক্ষেপটি সম্পাদন করা হয়।


1

ইন্ডাকটিভ যুক্তি, ধারণা-গঠনের প্রক্রিয়া প্রকৃতিতে পুনরাবৃত্ত হয়। আপনার মস্তিষ্ক এটি বাস্তব সময়ে, সমস্ত সময় করে।


1

সংকলক সম্পর্কে মন্তব্য। বিমূর্ত সিনট্যাক্স ট্রি নোডগুলি প্রাকৃতিকভাবে তাদের পুনরাবৃত্তির জন্য ধার দেয়। সমস্ত পুনরাবৃত্ত ডেটা স্ট্রাকচার (লিঙ্কযুক্ত তালিকাগুলি, গাছ, গ্রাফ ইত্যাদি) পুনরাবৃত্তি সহ আরও সহজে পরিচালনা করা হয়। আমি মনে করি যে সত্যিকারের বিশ্বের সমস্যার কারণে আমরা স্কুল থেকে বের হয়ে গেলে আমাদের বেশিরভাগ লোক পুনরাবৃত্তিটি ব্যবহার করতে পাবে না, তবে বিকল্প হিসাবে এটি সম্পর্কে সচেতন হওয়া ভাল।


1

প্রাকৃতিক সংখ্যার গুণ করা পুনরাবৃত্তির একটি আসল-বিশ্বের উদাহরণ:

To multiply x by y
  if x is 0
    the answer is 0
  if x is 1
    the answer is y
  otherwise
    multiply x - 1 by y, and add x
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.