एक पुल का निर्माण


10

अपने काम के लिए एक इनपुट दिए गए दो चट्टानों को जोड़ने के लिए एक पुल का निर्माण करना है d, दूरी अलग। dहमेशा भी रहेगा

हालांकि, पुल को इसे पकड़ने के लिए कॉलम की जरूरत है। प्रत्येक स्तंभ प्रत्येक पक्ष पर अधिकतम 6 स्थान पकड़ सकता है।

इस उदाहरण के लिए:

________                        ________
        |                      |
   A    |                      |   B

        |----------------------|
                d = 22

d = 20दो स्तंभों के साथ पुल को इस तरह दिखना चाहिए। स्तंभों की गणना d में नहीं है।

_____|__________|_____
12345|1234554321|12345
     |          |

नियम:

  1. खड़े होने के लिए पर्याप्त कॉलम होना चाहिए।

  2. खड़े होने के लिए आवश्यक कॉलम की न्यूनतम संख्या होनी चाहिए।

  3. सममित होना चाहिए

  4. बाइट्स की सबसे कम राशि जीतता है

उदाहरण: (# केवल रिक्त स्थान गिनने में आपकी मदद करने के लिए हैं। आपके आउटपुट में शामिल नहीं होना चाहिए)

d = 10

_____|_____
12345|12345
     |

d = 32

_____|___________|___________|_____
12345|12345654321|           |
     |           |           |

d = 8

____|____
1234|1234
    |

d = 4

__|__
12|34
  |

d = 22

_____|____________|_____
12345|123456654321|
     |            |

या

______|__________|______
123456|1234554321|123456
      |          |

स्पष्ट करने के लिए, आउटपुट में संख्याएँ आवश्यक हैं, या केवल उदाहरण के लिए?
ईसैक

@isaacg नहीं, उन्हें आउटपुट में जरूरत नहीं है। वे सिर्फ इसलिए कि तुम लोग मेरे उदाहरणों पर लाइनों की गिनती करने के लिए नहीं हो।
जोश

मुझे लगता है कि आपका विनिर्देश त्रुटिपूर्ण है? क्या रोकता है 1 | 2 | 3 | 4 | 5 ... | d समाधान कहां | एक बीम है।
Vlo

@ वालो नियमों में से एक है कि न्यूनतम संख्या में कॉलम का उपयोग संभव है। इसलिए हर स्थान पर एक कॉलम का उपयोग करना न्यूनतम नहीं होगा।
जोश

आप कहते हैं कि d हमेशा सम रहने वाला है, लेकिन आपके अंतिम उदाहरण में d = 21 है।
एसई -

जवाबों:


4

जावास्क्रिप्ट (ईएस 6), 92 बाइट्स

d=>[..."_  "].map(c=>(s=c+c[r='repeat'](n%6))+'|'+(c[r](12)+'|')[r](n/6)+s,n=d-1>>1).join`\n`

जहां \nशाब्दिक न्यूलाइन चरित्र का प्रतिनिधित्व करता है। अगर dयह अजीब हो सकता है, तो मुझे 128 बाइट्स लेनी होंगी:

d=>[..."_  "].map(c=>[...Array(d+1)].map((_,i)=>(d&1?i&&d-i&&(i>m)+5+i-m:((d-1)%24>11)*6+i-m)%12?'':'|',m=d>>1).join(c)).join`\n`

विषम संख्याओं के लिए आपका समाधान कैसे काम कर सकता है? D = 35 के लिए, कोई भी इष्टतम समाधान सममित नहीं है।
एसई -

@Hohmannfan यह सबसे कम उप-सममित सममितीय समाधान लौटाता है, जो इस मामले में |____________|___________|____________|आदि है
नील

मुझे लगता है कि यह सबसे अच्छी व्याख्या है।
एसई -

0

रूबी, 108 बाइट्स

शायद बहुत अधिक नीचे गोल्फ हो सकता है। लालची एल्गोरिथ्म।

->d{s='',k=6
(s+=?_*[d,k].min+(d>k/2??|:'');d-=k;k=12)while d>0
s=s.chomp(?|)+s.reverse+$/
s+s.tr(?_,' ')*2}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.