मुर्गे ने सड़क कैसे पार की?


16

चक्का जाम। कोई नहीं जानता कि चिकन सड़क से क्यों पार हुआ, शायद दूसरी तरफ एक अच्छा दिखने वाला मुर्गा था। लेकिन हम यह पता लगा सकते हैं कि कैसे। एक प्रोग्राम लिखें, जो, बाएं से दाएं, इस (या किसी भी) "सड़क" को पार करता है।

1356 | 1738
3822 | 1424
3527   3718
9809 | 5926
0261 | 1947
7188   4717
6624 | 9836
4055 | 9164
2636   4927
5926 | 1964
3144 | 8254

आपका कार्यक्रम इसे "पार" करता है, बाएं से दाएं चलता है। आप जिस भी सबसे बाएं कॉलम को पसंद करते हैं, उस पर शुरू करते हैं। वहां से, आप किसी भी निकटवर्ती चरित्र को दाईं ओर ले जा सकते हैं। यदि आप शीर्ष बाएं कोने पर शुरू करते हैं, तो आप 3 या 8 पर जा सकते हैं। प्रत्येक संख्या, जिसमें आप जाते हैं, आरंभिक संख्या सहित, एक योग में जोड़ा जाता है। रिक्त स्थान आपके योग में नहीं जोड़े जाते हैं। "|" आपको कहीं न कहीं सही करने के लिए ऊपर या नीचे जाने के लिए मजबूर करता है। (आप इस चरित्र पर आगे नहीं बढ़ सकते हैं) आपका लक्ष्य सबसे छोटी संभव राशि के साथ दूसरी तरफ जाना है। आपके कार्यक्रम को अंत में राशि का प्रिंट आउट लेना चाहिए, और यह किसी भी सड़क को हल करने में सक्षम होना चाहिए। अधिमानतः, इसमें एक सड़क के लिए इनपुट भी हो सकता है, लेकिन इसकी आवश्यकता नहीं है। आपके प्रोग्राम को पथ और योग दोनों को प्रिंट करना होगा। कोड जीत के सबसे कम बाइट्स।

स्पष्ट करने के लिए, आप नैदानिक ​​रूप से तब तक आगे बढ़ सकते हैं जब तक आप एक ऊर्ध्वाधर पट्टी पर नहीं होते हैं। जब आप एक ऊर्ध्वाधर पट्टी पर होते हैं तो आप केवल ऊपर और नीचे जा सकते हैं।

सड़कों के स्पष्ट विनिर्देश के लिए, यह मूल रूप से पाठ की एक स्ट्रिंग है (या स्तंभों या पंक्तियों की एक सरणी, क्या आपको उस तरह से सोचना चाहिए) जो पात्रों के नियमों का पालन करता है, और कुछ भी नहीं हो सकता है, लेकिन उन वर्णों में रास्ता। कोई भी संख्या, एक स्थान, एक बार ("|"), या एक नई रेखा हो सकती है। यदि प्रोग्रामरडान के जवाब के अनुसार, एक सड़क को नशे में आदमी द्वारा पक्का किया गया था, तो यह अभी भी एक वैध सड़क है, और आपका कार्यक्रम ऐसी सड़क को हल करने में सक्षम होना चाहिए। इसे एक सड़क नहीं माना जाता है यदि दूसरी तरफ जाना असंभव है (उदाहरण के लिए, सलाखों की एक सीधी रेखा से कोई रास्ता नहीं है)।

यदि कोई सड़क अमान्य है, तो यह निर्धारित करने के लिए आपके कार्यक्रम की आवश्यकता नहीं है।

कुंजी:
कोई भी संख्या - संख्या को आपके योग में जोड़ता है, आगे बढ़ें।
अंतरिक्ष - आगे बढ़ें, आपकी राशि में कुछ भी नहीं जोड़ा गया है।
"|" - ऊपर या नीचे जाएं, आपकी राशि में कुछ भी नहीं जोड़ा गया है।

संपादित करें: एक उदाहरण समाधान, जैसा कि सुझाव दिया गया है। मैं एक बहुत बड़ा नहीं बना सकता, मुझे एटीएम के लिए इसे हल करने के लिए एक आईडीई पर नहीं मिल सकता है।

यह छोटी सड़क लें:

9191 | 8282
1919 | 2727
5555   5555

समाधान 12 के कुल के लिए 1, 1, 1, 1, 1, अंतरिक्ष, विभक्त, अंतरिक्ष, अंतरिक्ष, 2, 2, 2, 2 का मार्ग होगा।

EDIT # 2: इस सवाल पर पहली सड़क का समाधान, जैसा कि जियोबिट्स और पीपुल्स प्रोग्राम द्वारा निर्धारित किया गया है, 13 की राशि के लिए 0,2,0,1,, 1,4,1,4 है।


4
क्या आप एक सही समाधान के साथ कम से कम एक परीक्षण मामले को शामिल कर सकते हैं? इसके अलावा, वहाँ |एक पंक्ति में तीन से अधिक हो सकता है ?
मार्टिन एंडर

1
@timmy आप तिरछे तरीके से आगे बढ़ सकते हैं, जब तक यह आगे बढ़ रहा है। इसे विकर्ण आंदोलनों के एक जोड़े के साथ स्पर्श किया जा सकता है।
CaffeineToCode

3
@ mbomb007 यदि शीर्ष कोने पर शुरू हो रहा है। आप बाएँ कॉलम में किसी पर शुरू कर सकते हैं के बाद से, आप प्राप्त कर सकते हैं0,2,0,1, , , ,1,4,1,4 -> 13
Geobits

1
हाँ यह करता है। आप केवल सलाखों के ऊपर या नीचे जा सकते हैं, इसलिए आप केवल एक स्थान के माध्यम से उनसे बाहर निकल सकते हैं।
CaffeineToCode

1
आउटपुट के लिए, बस लागत पर्याप्त है, या पूरे पथ को आउटपुट की आवश्यकता है?
प्रोग्रामरडान

जवाबों:


3

Pyth, 168 143 141 बाइट्स [अब नशे में सड़क संगत]

मेरा परीक्षण मामला काम करता है, लेकिन मेरी ओर से गलतफहमी के कारण, यह प्रारंभिक उदाहरण के साथ ठीक से काम नहीं करेगा। मैं इसे ठीक करने पर काम कर रहा हूं।

अब मूल उदाहरण और शराबी सड़कों के लिए काम कर रहे हैं

कुछ वास्तव में थोड़ा कम बदसूरत कोड:

=Z.dC,++\ `MUT\|++0UT=^T5Ltu+G]?&qeeG\|<heGhH+eGeHHtb,0hbKhohNum++hed@ZhhdtedC,H_y_y.b+N]YmhohNd.:++TGT3HCm.[d\ lh.MlZ.z.z*hl.z]]0j\,t.sK\ hK

इसे यहाँ परखें

मैंने इसे 10 + 9 x 40 सड़क पर परीक्षण किया।

6417443208|153287613
8540978161|726772300
7294922506 263609552
0341937695 498453099
9417989188 370992778
2952186385|750207767
7049868670 756968872
1961508589|379453595
0670474005 070712970
4817414691|670379248
0297779413|980515509
6637598208 090265179
6872950638 767270459
7375626432 439957105
1387683792|544956696
6974831376 545603884
0949220671|632555651
3952970630|379291361
0456363431|275612955
2973230054|830527885
5328382365|989887310
4034587060 614168216
4487052014|969272974
5015479667 744253705
5756698090|621187161
9444814561|169429694
7697999461|477558331
3822442188 206942845
2787118311|141642208
2669534759 308252645
6121516963|554616321
5509428225|681372307
6619817314|310054531
1759758306 453053985
9356970729|868811209
4208830142 806643228
0898841529|102183632
9692682718|103744380
5839709581|790845206
7264919369|982096148

बस एक नोट, एक "IndexError: list index with range" प्राप्त करते समय प्रदान किए गए टेस्ट सूट का उपयोग करके।
प्रोग्रामरदान

@ProgrammerDan तो I करें
CaffeineToCode

1
@CaffeineToCode सच है, लेकिन मेरे द्वारा सबमिट किए जाने के बाद एक "नशे में सड़क" की अवधारणा को जोड़ा गया था। यह ज्ञात करने में मददगार होगा कि एक सड़क का गठन किसने किया। उदाहरणों के आधार पर मैंने एक विभाजन स्तंभ के साथ 2 पक्ष ग्रहण किए
ब्रायन टक

1
@CaffeineToCode एक अच्छा प्रश्न लिखने के लिए सबसे अच्छे तरीकों में से एक सिर्फ और अधिक उदाहरण लिखना है - यहां तक ​​कि समाधान के बिना भी। यदि चर चौड़ाई या बहु-लेन सड़कें वैध थीं, तो एक "पागल" उदाहरण ने इसे बिना किसी अतिरिक्त वर्णनात्मक पाठ के चित्रित किया होगा।
प्रोग्रामरदान

1
@ProgrammerDan आपने इसके लिए कहा। मेरा अब DR- कम्पेटिबल (और छोटा ... लगता है कि मैं पकड़ रहा हूँ)
ब्रायन टक

4

जावा, 955 बाइट्स

जाहिर है जावा और सभी होने के नाते किसी भी पुरस्कार को जीतने के लिए नहीं, लेकिन मैं इस समस्या से प्यार करता हूं और अपनी प्रविष्टि में फेंकना चाहता हूं।

सुविधाएँ और सीमाएँ:

  • परिवर्तनीय चौड़ाई, जटिल रेखाओं आदि सहित अनियमित सड़कों (सुपर नशे) का समर्थन कर सकते हैं।
  • निष्पादन पर मापदंडों के रूप में इनपुट होने के लिए सड़क की अपेक्षा करता है; ungolfed संस्करण भी स्टड से पढ़ने का समर्थन करता है, लेकिन चूंकि इनपुट विधि निर्दिष्ट नहीं की गई थी इसलिए गोल्फ संस्करण सबसे छोटा था!
  • कुछ डायनामिक प्रोग्रामिंग तकनीक का उपयोग करता है, जिसका उपयोग मैंने ओह, 6 वर्ष या तो कुशलतापूर्वक O (n * m) समय में करने के लिए किया है, जहाँ n पंक्तियाँ हैं और m कॉलम है।
    • दाईं से बाईं ओर करने के लिए हल करती है, सबसे अच्छी दिशा अंकन लेने के लिए से अगले सूचकांक करने के लिए वर्तमान सूचकांक।
    • "कॉलम" को उनके कॉलम को हल करके संभाला जाता है, फिर अगले कॉलम पर पहुंचने पर उन्हें संबोधित करते हुए। वे अंत में पहुंच योग्य गैर-लाइन की लागत के साथ, ऊपर या नीचे की दिशा में भंडारण करके हल करते हैं।
  • ट्रैक करता है, लेकिन सबसे अच्छे समाधान के शुरुआती सूचकांक को प्रिंट नहीं करता है ।

ठीक है, पर्याप्त जिब्बा जब्बा। गोल्फ संस्करण:

class C{public static void main(String[]a){int n=a.length,m=0,i=0,j=0,h=0,p=0,q=0,s=0,t=0,b=-1,c=2147483647,x=0,y=0;char[][]r=new char[n][];char u;for(String k:a){j=k.length();m=(j>m)?j:m;}for(String k:a)r[i++]=java.util.Arrays.copyOf(k.toCharArray(),m);int[][][]d=new int[n][m][2];for(j=m-1;j>=0;j--){for(i=0;i<n;i++){u=r[i][j];p=(u=='\0'||u==' '||u=='|'?0:u-'0');if(j==m-1)d[i][j][1]=p;else{if(u=='|')d[i][j][0]=-1;else{for(h=-1;h<2;h++){x=i+h;y=j+1;if(x>=0&&x<n){if(d[x][y][0]==-1){s=x-1;while(s>=0&&r[s][y]=='|')s--;t=x+1;while(t<n&&r[t][y]=='|')t++;if((s>=0&&t<n&&d[s][y][1]<d[t][y][1])||(s>=0&&t>=n)){t=d[s][y][1];s=4;}else{s=6;t=d[t][y][1];}d[x][y][0]=s;d[x][y][1]=t;}q=d[x][y][1]+p;if(d[i][j][0]==0||q<d[i][j][1]){d[i][j][0]=h+2;d[i][j][1]=q;}}}}}if(j==0&&(b<0||d[i][j][1]<c)){b=i;c=d[i][j][1];}}}String o="";i=b;j=0;while(j<m){u=r[i][j];if(u=='\0')j=m;else{o+=u+",";h=d[i][j][0]-2;if(h>1)i+=h-3;else{i+=h;j++;}}}System.out.println(o+"\b:"+c);}}

मेरी आदत के अनुसार, अनथक कोड के साथ जीथब

"पहले" सड़क के लिए समाधान:

$ java C "1356 | 1738" "3822 | 1424" "3527   3718" "9809 | 5926" "0261 | 1947" "7188   4717" "6624 | 9836" "4055 | 9164" "2636   4927" "5926 | 1964" "3144 | 8254"
0,2,0,1, , , ,1,4,1,4:13

दूसरा उदाहरण:

$ java C "9191 | 8282" "1919 | 2727" "5555   5555"
1,1,1,1, ,|,|, , ,2,2,2,2:12

ब्रायन टक का नमूना:

$ java C "6417443208|153287613" "8540978161|726772300" "7294922506 263609552" "0341937695 498453099" "9417989188 370992778" "2952186385|750207767" "7049868670 756968872" "1961508589|379453595" "0670474005 070712970" "4817414691|670379248" "0297779413|980515509" "6637598208 090265179" "6872950638 767270459" "7375626432 439957105" "1387683792|544956696" "6974831376 545603884" "0949220671|632555651" "3952970630|379291361" "0456363431|275612955" "2973230054|830527885" "5328382365|989887310" "4034587060 614168216" "4487052014|969272974" "5015479667 744253705" "5756698090|621187161" "9444814561|169429694" "7697999461|477558331" "3822442188 206942845" "2787118311|141642208" "2669534759 308252645" "6121516963|554616321" "5509428225|681372307" "6619817314|310054531" "1759758306 453053985" "9356970729|868811209" "4208830142 806643228" "0898841529|102183632" "9692682718|103744380" "5839709581|790845206" "7264919369|982096148"
2,1,0,1,5,1,2,1,1,1, ,1,0,1,2,1,2,3,0,1:26

"नशे में" ब्रायन का उदाहरण:

6417443208 | 153287613
8540978161 | 726772300
7294922506 263609552
0341937695 498453099
9417989188 370992778
2952186385 | 750207767
7049868670 756968872
1961508589 | 379453595
0670474005 070712970
4817414691 | 670379248
0297779413 | 980515509
6637598208 090265179
6872950638 767270459
7375626432 439957105
1387683792 | 544,956
697483176 5456034
09492201 | 6325551
395297030 | 3792913
 456363431 | 275,612
  73230054 | 830527885
    8382365 | 989887310
    4587060 614168216
  87052014 | 96927297
 50479667 7442537
57566980 | 621187161
944481456 | 169429694
7697999461 | 477558331
3822442188 206942845
2787118311 | 141642208
2669534759 308252645
6121516963 | 554616321
5509428225 | 681372307
6619817314 | 310054531
1759758306 453053985
9356970729 | 868811209
4208830142 806643228
0898841529 | 102183632
9692682718 | 103744380
5839709581 | 790845206
7264919369 | 982096148
$ java C "6417443208|153287613" "8540978161|726772300" "7294922506 263609552" "0341937695 498453099" "9417989188 370992778" "2952186385|750207767" "7049868670 756968872" "1961508589|379453595" "0670474005 070712970" "4817414691|670379248" "0297779413|980515509" "6637598208 090265179" "6872950638 767270459" "7375626432 439957105" "1387683792|544956" "697483176 5456034" "09492201|6325551" "395297030|3792913" " 456363431|275612" "  73230054|830527885" "    8382365|989887310" "    4587060 614168216" "  87052014|96927297" " 50479667 7442537" "57566980 | 621187161" "944481456 | 169429694" "7697999461|477558331" "3822442188 206942845" "2787118311|141642208" "2669534759 308252645" "6121516963|554616321" "5509428225|681372307" "6619817314|310054531" "1759758306 453053985" "9356970729|868811209" "4208830142 806643228" "0898841529|102183632" "9692682718|103744380" "5839709581|790845206" "7264919369|982096148"
 , , , ,0,5,2,0,1, , , ,1,1,1,3,2:16

समाधान दृश्य:

09492201 | 6325551
395297030 | 3792913
\ 456363431 | 275,612
 \ 73230054 | 830527885
  \ 8382365 | 989887310
   \ 4 \ 87060 614168216
  87/5 - \ 4 | 96,927 \ 97
 50479667 \ 74425/7
57566980 | \ 62- / 87161
944481456 | \ / 69429694
7697999461 | 477558331

का आनंद लें!

संपादित करें: अब मैं सिर्फ दिखावा कर रहा हूं (दो रोडवेज मर्ज? क्या वह इसे बना सकता है?)

948384 | 4288324 324324 | 121,323
120390 | 1232133 598732 | 123,844
 293009 | 2394023 432099 | 230,943
 234882 | 2340909 843893 | 849,728
  238984 | 328498984328 | 230,949
  509093 | 904389823787 | 439,898
   438989 | 3489889344 | 438,984
   989789 | 7568945968 | 989,455
    568956 | 56985869 | 568,956
    988596 | 98569887 | 769,865
     769879 | 769078 | 678,977
     679856 | 568967 | 658,957
      988798 | 8776 | 987,979
      987878 | 9899 | 989,899
       999889 | | 989,899
       989999 | | 989,999
        989898 | | 998,999
        989999 | | 999999
         989998 || 899,999
         989998 || 998,999

समाधान:

$ java C "948384 | 4288324   324324 | 121323" "120390 | 1232133   598732 | 123844" " 293009 | 2394023 432099 | 230943" " 234882 | 2340909 843893 | 849728" "  238984 | 328498984328 | 230949" "  509093 | 904389823787 | 439898" "   438989 | 3489889344 | 438984" "   989789 | 7568945968 | 989455" "    568956 | 56985869 | 568956" "    988596 | 98569887 | 769865" "     769879 | 769078 | 678977" "     679856 | 568967 | 658957" "      988798 | 8776 | 987979" "      987878 | 9899 | 989899" "       999889 |    | 989899" "       989999 |    | 989999" "        989898 |  | 998999" "        989999 |  | 999999" "         989998 || 899999" "         989998 || 998999"
 ,2,0,3,0,0, ,|,|, ,|,|, ,|,|, ,|,|, ,|,|, ,|,|, ,|,|, , , , , , , ,|, ,|, ,|, ,|, ,|, ,|, ,|,|, , ,1,0,7,2:15

(बोनस: अपुष्ट से पथ):

$ java Chicken < test5.txt
best start: 3 cost: 15
  -> 2 -> 0 -> 3 -> 0 -> 0 ->   -> | -> | ->   -> | -> | ->   -> | -> | ->   -> | -> | ->   -> | -> | ->   -> | -> | ->
  -> | -> | ->   ->   ->   ->   ->   ->   ->   -> | ->   -> | ->   -> | ->   -> | ->   -> | ->   -> | ->   -> | -> | ->
  ->   -> 1 -> 0 -> 7 -> 2 -> 15
/ -> - -> - -> \ -> / -> / -> - -> , -> , -> - -> , -> , -> - -> , -> , -> - -> , -> , -> - -> , -> , -> - -> , -> , ->
- -> , -> , -> / -> \ -> - -> - -> - -> / -> / -> ^ -> / -> ^ -> / -> ^ -> / -> ^ -> / -> ^ -> / -> ^ -> / -> , -> , ->
/ -> - -> \ -> \ -> - -> \ -> across

एल्गोरिथम पर विवरण

मेरे द्वारा नियोजित डायनामिक प्रोग्रामिंग तकनीक के बारे में अधिक संपूर्ण विवरण का अनुरोध किया गया था, इसलिए यहां दिया गया है:

मैं समाधान के एक मार्क-एंड-प्रीकम्प्यूट विधि का उपयोग कर रहा हूं। इसका एक उचित नाम है, लेकिन मैं इसे भूल गया हूं; शायद कोई और इसे पेश कर सकता है?

कलन विधि:

  • दाएं-सबसे कॉलम पर शुरू करना और बाईं ओर प्रगति करना, कॉलम में प्रत्येक सेल के बारे में निम्नलिखित गणना करें:
    • सबसे कम लागत के आंदोलन का योग, वर्तमान सेल लागत के रूप में परिभाषित किया गया + अगले कॉलम में सबसे कम लागत वाला सेल
    • इस न्यूनतम लागत को प्राप्त करने के लिए आंदोलन की क्रिया, जैसे कि इस सेल से किसी अन्य एकल कक्ष में बस एक वैध चाल।
  • पाइपों को टाल दिया जाता है। एक पाइप को हल करने के लिए, आपको पूर्ण कॉलम की गणना करने की आवश्यकता है, इसलिए हम अगले कॉलम तक पाइप की गणना नहीं करते हैं।
    • एक पाइप के बाईं ओर एक सेल की सबसे कम लागत का निर्धारण करते समय, हम पहले पाइप के साथ यात्रा करने के लिए सबसे अच्छी दिशा की गणना करते हैं - यह हमेशा या तो ऊपर या नीचे का समाधान करेगा, इसलिए हम इसे एक बार गणना करते हैं।
    • हम तब अन्य सभी कोशिकाओं के साथ स्टोर करते हैं, सबसे अच्छी लागत (उस सेल की लागत के रूप में परिभाषित की जाती है जो हम पाइप या तो ऊपर या नीचे की यात्रा करके पहुंचते हैं) और उस तक पहुंचने के लिए यात्रा करने की दिशा।

टिप्पणियाँ:

बस। हम ऊपर से नीचे तक, दाएं से बाएं, एक बार स्कैन करते हैं; केवल छोड़ी गई (संभवतः) अधिक कोशिकाएं एक बार पाइप होती हैं, हालांकि, प्रत्येक पाइप केवल एक बार "O" (m * n) विंडो में रखते हुए "हल" होता है।

"विषम" मानचित्र आकारों को संभालने के लिए, मैंने केवल पूर्व-स्कैन करने के लिए चुना और अशक्त वर्णों के साथ पैडिंग द्वारा पंक्तियों की लंबाई को सामान्य किया। नल वर्ण "शून्य लागत" के रूप में गिने जाते हैं जो पाइप और रिक्त स्थान के समान हैं। फिर, समाधान को प्रिंट करने में, मैं मुद्रण लागत या चाल को रोक देता हूं जब या तो सामान्यीकृत सड़क के किनारे तक पहुंच जाता है, या एक अशक्त चरित्र तक पहुंच जाता है।

इस एल्गोरिथ्म की सुंदरता बहुत सरल है, हर सेल पर समान नियम लागू करता है, O (m * n) उप-समस्याओं को हल करके एक पूर्ण समाधान का निर्माण करता है, और गति के मामले में तेज है। यह स्मृति से व्यापार करता है, सड़क के नक्शे की स्मृति में प्रभावी रूप से दो प्रतियां बनाता है, पहला "सर्वोत्तम लागत" डेटा संग्रहीत करता है और दूसरा प्रति सेल "सर्वश्रेष्ठ चाल" डेटा संग्रहीत करता है; यह गतिशील प्रोग्रामिंग के लिए विशिष्ट है।


क्या आप अपने दृष्टिकोण को कुछ और बता सकते हैं? मैंने एक (कुछ अलग) गतिशील प्रोग्रामिंग दृष्टिकोण का भी प्रयास किया, लेकिन उन लोगों का पता लगाना अटक गया। मैंने बहुत लंबी सड़कों से निपटने के लिए एक वृद्धिशील (पंक्ति द्वारा पंक्ति) दृष्टिकोण भी माना है जो बहुत अधिक स्मृति का उपयोग किए बिना बहुत व्यापक नहीं हैं; क्या आपको पता है कि O (m ^ 2 * n) समय के तहत ऐसा करने का कोई तरीका है?
dfeuer

@ फ़ेडरर यह सभी ट्रेडऑफ़ के बारे में है, यह सुनिश्चित करने के लिए। पंक्ति-दर-पंक्ति दृष्टिकोणों में से कोई भी मुझे नहीं लगता कि किसी बिंदु पर O (m ^ n) समय के लिए बिना सबकुछ इनपुट के सभी क्रमपरिवर्तन को संभालने में सक्षम थे; यह निर्माण द्वारा एक कॉलम-बाय-कॉलम समस्या है (आंदोलन, मोटे तौर पर, बाएं से दाएं - कुशल डीपी समाधान दाएं-बाएं से जाता है)। आप सरल लुक के साथ पंक्ति-दर-पंक्ति हल करने के लिए एक ओ (एम * एन) दृष्टिकोण करने में सक्षम हो सकते हैं और आगे से स्थगित कर सकते हैं, लेकिन आप बहुत अधिक स्मृति को बचाने की संभावना के बिना जटिलता बढ़ा रहे हैं।
प्रोग्रामरदान

मैं क्या सोच रहा था कि अगर मुझे गलती नहीं है, तो आपको केवल सबसे अच्छे रास्ते पर नज़र रखने की ज़रूरत है, इस प्रकार, सबसे हाल ही में संसाधित पंक्ति में प्रत्येक वर्ग के लिए, बाएं किनारे से दाहिने किनारे तक जाने वाले सर्वोत्तम ज्ञात पथ, और प्रत्येक वर्ग को उसी पंक्ति में उसके दाईं ओर। क्या वह गलत है?
18

1
धन्यवाद! आप के cरूप में परिभाषित करके अपने कोड एक बूंद को छोटा कर सकते हैं -1>>>1
dfeuer

1
मैं हास्केल को लक्षित कर रहा हूं, जिससे लंबाई के लिए प्रतिस्पर्धा करना मुश्किल हो जाएगा, लेकिन यह वही है जो मैं अब तक जानता हूं।
18
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.