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


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.