কিছু পাঠ্য ডায়মন্ডাইজ করুন


20

দৈর্ঘ্যের একটি ইনপুট স্ট্রিং দেওয়া হয়েছে 2বা সম্পূর্ণ বর্ণানুক্রমিক অক্ষর [A-Z]বা এর চেয়ে দীর্ঘতর [a-z](আপনার পছন্দগুলি যদি তারা সমস্ত বড় বা সমস্ত ছোট হাতের হয় তবে), একটি ডাবল হীরার নিদর্শন গঠনের অক্ষরগুলির একটি অবিচ্ছিন্ন স্ট্রিং আউটপুট দেয়।

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

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

"YOU"
  U   Y
 Y O U O
Y   O   U
 O Y U Y
  U   O

  ^   ^
 ↙ ↖ ↗ ↘
↘   ↗   >
 ↘ ↗ ↖ ↙
  V   V

কীভাবে YOUকেন্দ্রের লাইনে শুরু হয় এবং নীচে এবং ডানটিকে অনুসরণ করে, তারপরে ডানদিকে এবং ডান ইত্যাদির অনুসরণ করুন, যতক্ষণ না এটি শুরুতে ফিরে আসে। বিশেষত খেয়াল Yকরুন যে উপরের এবং বাম অংশটি কীভাবে "পিছনে" রয়েছে Oএবং তাই প্রদর্শিত হয় না।

আরও কিছু উদাহরণ:

"HI"
 I I
H H H
 I I

"TEST"
   E     E
  S T   T S
 T   T T   T
T     S     T
 E   E E   E
  S T   T S
   T     T

"HELLO"
    L       L
   O L     E L
  H   E   H   O
 E     H O     H
H       L       E
 E     L L     L
  L   E   L   L
   L H     E O
    O       H

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

সত্য যে এটি গুরুত্বপূর্ণ তা নিশ্চিত নয়, তবে দ্বিতীয় (উপরে বাম) পাস কেন প্রথম (উপরে ডান) পাসের পিছনে যায়? স্বল্প জ্ঞানবোধ তৈরি করে এবং চিঠিটি এড়িয়ে যেতে বা পুনরায় আঁকতে কিছুটা বিরক্তিকরও করে।
ব্র্যাডিসি

2
@ ব্র্যাডসি যখন আমি আমার ডেস্কে এমবিয়াস স্ট্রিপ নিয়ে খেলছিলাম যখন আমি চ্যালেঞ্জটি নিয়ে এসেছিলাম, এবং স্ট্রিপ কিন্ডা "পিছনে" যায় তাই সে কারণেই। অন্য কোন কারণ নেই।
অ্যাডমবর্কবার্ক

আমাদের দৃষ্টিভঙ্গি করতে সহায়তা করতে তীর অক্ষর ব্যবহার করে পাথের একটি "অঙ্কন" অন্তর্ভুক্ত করার ধারণা থাকতে পারে be
শেগি

@ শেগি একটি অঙ্কন যুক্ত করেছেন।
অ্যাডমবর্কবার্ক

ভাল এক, এটি প্রথম
চক্ষুর

উত্তর:


10

কাঠকয়লা , 17 বাইট

GH<↗↘>↖↙LθθGH<Lθθ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

GH

একটি পথ ধরে আঁকুন।

<↗↘>↖↙

দিকগুলি আঁকুন ↘↗↗↘↙↖↖↙ ( <এবং >এই দুটি জুটির শর্টহ্যান্ডস রয়েছে, তবে অন্য জোড়গুলির শর্টহ্যান্ড নেই))

Lθ

প্রতিটি পাথ বিভাগের ইনপুট দৈর্ঘ্যের সমাপ্তি সহ একই দৈর্ঘ্য থাকে।

θ

পাঠ্যটির সাথে লেখার জন্য ইনপুটটি ব্যবহার করুন।

GH<Lθθ

পথের প্রথম দুটি অংশ আবার মুদ্রণ করুন যাতে মাঝের চরিত্রটি সঠিক হয়।


3
এই চ্যালেঞ্জটি চারকোলের জন্য তৈরি দরজা বলে মনে হচ্ছে
জোনা

@ জোনাঃ দুঃখের বিষয়, পথটি বন্ধ থাকলে পাঠ্য পথের আদেশটি শেষ অক্ষরটি আঁকবে না, সুতরাং আপনি এখানে বিপরীত অঙ্কন কৌশলটি ব্যবহার করতে পারবেন না। (যদিও এটি যদি হয় তবে এটি যেভাবেই হোক একই বাইট গণনা হবে, যেহেতু স্ট্রিংটি ঘোরানোর জন্য 6 বাইট খরচ হয়।)
নীল

9

05 এ বি 1 ই , 12 বাইট

gIR7._•Íη•Λ

এটি অনলাইন চেষ্টা করুন!

           Λ    use the canvas function
g               with the length of input for each segment
 IR7._          the input reversed and rotated left by 7 characters (we will draw this backwards to have the right center character)
      •Íη•     and the directions 1, 3, 3, 1, 7, 5, 5, 7 as a compressed number. 

মানে 1, 3, 3, 1, 7, 5, 5, 7?
নীল

ওহ আপনি ঠিক. আমি সংখ্যাগুলি কিছুটা মিশিয়ে দিয়েছি
ডোরিয়ান

6

জাভাস্ক্রিপ্ট (ES6),  157 155  154 বাইট

অক্ষরের একটি ম্যাট্রিক্স প্রদান করে।

s=>(y=n=s.length,y+=i=X=Y=-1,m=[...Array(y+n)].map(_=>r=Array(4*n-3).fill` `),g=x=>x?g(x-=r[m[y][++i==6*n-6||+x]=s[i%n],y-=m[y-Y]?Y:Y=-Y,x-X]?X:X=-X):m)``

এটি অনলাইন চেষ্টা করুন!

কিভাবে?

nw×h

  • w=4n3
  • h=2n1

(0,n1)

হীরক আকারে বাদ দিতে হবে এমন কেন্দ্রীয় চরিত্রের 0-ভিত্তিক সূচকটি হ'ল:

p=6n6

n=4

এখানে চিত্র বর্ণনা লিখুন

মন্তব্য

s => (                           // s = input string
  y = n = s.length,              // n = length of s
  y += i = X = Y = -1,           // y = n - 1; i = X = Y = -1
  m =                            // create a matrix m[]:
    [...Array(y + n)].map(_ =>   //   - of height 2n-1
      r = Array(4 * n - 3)       //   - of width 4n-3 (save one of these rows in r[])
          .fill` `               //   - initially filled with spaces
    ),                           //
    g = x =>                     // g is a recursive function taking x
      x ?                        //   if x is truthy:
        g(                       //     do a recursive call:
          x -= r[                //       update x:
            m[y][                //         update m[y][x]:
              ++i == 6 * n - 6   //           unless this is the 2nd pass through the
              || +x              //           center cell, set it to the next character
            ] = s[i % n],        //           in s (otherwise we write to m[y][true]
                                 //           instead, which has no effect)
            y -=                 //         update y:
              m[y - Y] ? Y       //           bounce vertically if m[y - Y] is undefined
                       : Y = -Y, //
            x - X                //         bounce horizontally
          ] ? X                  //         if r[x - X] is undefined
            : X = -X             //
        )                        //     end of recursive call
      :                          //   else:
        m                        //     stop recursion and return m[]
)``                              // initial call to g with x = [''] (zero-ish but truthy)

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

@ নীল আপনার সম্ভবত এটি একটি নতুন উত্তর হিসাবে পোস্ট করা উচিত।
আরনাউল্ড

3

জাভাস্ক্রিপ্ট (ES6), 136 বাইট

f=
(s,l=s.length-1,z=l*4,a=[...Array(l-~l)].map(_=>Array(z+1).fill` `),g=x=>x--?g(x,a[a[y=(x+l)%z]?y:z-y][x>z?z+z-x:x]=s[x%-~l]):a)=>g(z+z)
<input oninput=o.textContent=f(this.value).map(c=&gt;c.join``).join`\n`><pre id=o>

একটি দ্বিমাত্রিক অ্যারে প্রদান করে। অ্যারের মধ্যে স্ট্রিং অঙ্কন করে সরাসরি গন্তব্য সমন্বয়কে শেষ থেকে পিছনে কাজ করে সমন্বিত করে যাতে কেন্দ্রের ঘরটি স্বয়ংক্রিয়ভাবে ওভাররাইট হয়ে যায়। ব্যাখ্যা:

(s

ইনপুট স্ট্রিং.

,l=s.length-1

"বাউন্স" এর মধ্যে দূরত্ব, শেষ সারি সূচকের অর্ধেক এবং দৈর্ঘ্যের চেয়ে কম।

,z=l*4

সর্বশেষ কলাম সূচক, অঙ্কনের পাঠ্যের দৈর্ঘ্যের অর্ধেক।

,a=[...Array(l-~l)].map(_=>Array(z+1).fill` `)

স্পেসের অ্যারে।

,g=x=>x--

শেষ কক্ষ থেকে প্রথম পর্যন্ত গণনা করুন।

  ?g(x

অবশিষ্ট কক্ষগুলি প্রক্রিয়া করার জন্য পুনরাবৃত্ত কল

    ,a[a[y=(x+l)%z]?y:z-y]

এই ঘরের সারি গণনা করুন।

      [x>z?z+z-x:x]=s[x%-~l])

এই কক্ষটির কলাম এবং সেখানে থাকা চরিত্রের গণনা করুন।

  :a

অ্যারে ফিরিয়ে শেষ করুন।

)=>g(z+z)

পাঠ্যের শেষে শুরু করুন।


এটি একটি দুর্দান্ত, +1
ভের নিক



0

পাইথন 2 , 137 বাইট

s=input();n=len(s);m=2*n-2
for r in range(m+1):print''.join([s[[x,-8-x][(x<=m)==(m>2*r)]%n],' '][r!=(x+1-n)%m!=m-r]for x in range(4*n-3))

এটি অনলাইন চেষ্টা করুন!

একটি সম্পূর্ণ প্রোগ্রাম যা ডায়মন্ডাইজড সংস্করণটিকে মুদ্রণ করে ইনপুট হিসাবে একটি স্ট্রিং নেয়।

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