একটি সেতু নির্মাণ


10

আপনার কাজটি হ'ল dদূরত্বের বাইরে একটি ইনপুট প্রদত্ত দুটি ক্লিফকে সংযোগ করার জন্য একটি সেতু তৈরি করা । dসর্বদা সমান হবে

তবে সেতুটি ধরে রাখতে কলামগুলির প্রয়োজন needs প্রতিটি কলাম প্রতিটি পাশে সর্বোচ্চ 6 টি স্পেস ধরে রাখতে পারে।

এই উদাহরণের জন্য:

________                        ________
        |                      |
   A    |                      |   B

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

ব্রিজটির জন্য d = 20দুটি কলামের মতো দেখতে হবে। কলামগুলি ডি তে গণনা করা হয় না।

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

নিয়মাবলী:

  1. দাঁড়ানোর জন্য পর্যাপ্ত কলাম থাকতে হবে।

  2. দাঁড়াতে প্রয়োজনীয় কলামগুলির ন্যূনতম সংখ্যা থাকতে হবে।

  3. অবশ্যই প্রতিসম হতে হবে

  4. সর্বনিম্ন পরিমাণে বাইটস জিতেছে

উদাহরণস্বরূপ: (# গুলি কেবল আপনাকে স্থান গণনা করতে সহায়তা করে your আপনার আউটপুটে অন্তর্ভুক্ত করা উচিত নয়)

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 সমাধান যেখানে প্রতিরোধ করে preven একটি মরীচি হয়।
— ভ্লো

@ ভলো নিয়মগুলির মধ্যে একটি হ'ল সম্ভব সর্বনিম্ন সংখ্যক কলামগুলি ব্যবহার করা। সুতরাং প্রতিটি স্থান কলাম ব্যবহার করা সর্বনিম্ন হবে না।
— জোশক

আপনি বলেন যে ডি সর্বদা সমান হতে চলেছে তবে আপনার শেষ উদাহরণে, ডি = 21।
— এসই - ভাল ছেলেরা

উত্তর:


4

জাভাস্ক্রিপ্ট (ES6), 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`

বিজোড় সংখ্যাগুলির জন্য আপনার সমাধান কীভাবে কাজ করতে পারে? ডি = 35 এর জন্য, সর্বোত্তম সমাধানগুলির কোনওটিই সিমেট্রিকাল নয়।
— এসই - ভাল ছেলেরা

@ হোহমানফান এটি সর্বনিম্ন সাবঅপটিমাল প্রতিসম দ্রবণ ফিরিয়ে দেয়, যা এই ক্ষেত্রে |____________|___________|____________|ইত্যাদি
— নীল

আমার ধারণা এটিই সেরা ব্যাখ্যা interpretation
— এসই - ভাল ছেলেদের

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}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.