গ্রুভি সর্পিলের পাশাপাশি একটি উত্সাহী "কুইক ব্রাউন ফক্স" "লাফানো"


12

ভূমিকা

প্রদত্ত নিয়মগুলি অনুসরণ করে বিখ্যাত পানগ্রামের আউটগোয়িং সর্পিল আউটপুট করার জন্য একটি প্রোগ্রাম লিখুন।

চ্যালেঞ্জ

একটি পেঙ্গ্রাম একটি বাক্য যা প্রদত্ত বর্ণমালার প্রতিটি অক্ষর কমপক্ষে একবার ব্যবহার করে। উইন্ডোজের ফন্ট ভিউয়ারে সর্বাধিক ব্যবহৃত একটি পেঙ্গ্রাম হ'ল " দ্রুত ব্রাউন শিয়াল অলস কুকুরটির উপরে ঝাঁপিয়ে পড়ে "। চ্যালেঞ্জটি হ'ল এই পাঠ্যের উপর ভিত্তি করে একটি সর্পিল আউটপুট করা।

আপনার টাস্কটি এই সঠিক পাঠ্যটিকে আউটপুট দেয়:

heeeeellllllllllllazzzzzzzzzzz
hummmmmmmmmmmmmppppppppppppppy
hubrrrrrrrrrrrrrrrrrrooooooosy
hukyddddoooooooooooooooggggwsy
hukyveeeeerrrrrrrrrrrrrrrrtwsy
hukyvxjjjjjjjjjjuuuuuuuuuttwsy
hukyvxkbbrrrrrrrrrrrrrrrmttwsy
hukyvxkogggggggttttttttomttwsy
tukyvokoellllllllllllahomttwsy
tukyvokoeovvvvvvvvvvvzhomttwsy
tukyvocoeoummmmmmmmmezhomttwsy
tukyvocoeoufooooooopezhomttwsy
tukyvocohoufroooooxpezhomttwsy
tukyvoiohoufrquuuwxpezhomttwsy
tucyvoiohoufbqttiwxpezhomttwsy
tucyvoiohoufbeehiwxprzhomttwsy
tucyvoiohoufkccciwxprzeomttwsy
tjiyvoidhounnnnnnwxprzeomttwsy
tjiyvoidhojjjjjjjjxprzeomttwsy
tjiyvoidhssssssssssprzeopttwsy
tjiyvoidttttttttttttrzeopttwsy
tjiyvoiyyyyyyyyyyyyyyzqopttwoy
tjiyvouuuuuuuuuuuuuuuuqwpttwoy
tjiyvffffnnnnnnnnnnnnnnwpttwoy
tjiyossssssssssssssssssspthwoy
tjizzzzalllllllllllleeeeehhwoy
tjuuqqqqqqqqqqqqqqqqqeeeeehnod
txxxxxoooooooooooooooffffffnod
reeeeevvvvvvvvvvvvvvvvvvvvvvod
       gggggggoooooooooooooood

এটি এখানে কীভাবে উত্পন্ন হয়,

  • একজন উদ্যোগী শিয়াল ছিলেন যারা এই পেংগ্রামটি উপভোগ করেছিলেন "দ্রুত ব্রাউন শিয়াল অলস কুকুরটির উপরে ঝাঁপিয়ে পড়ে"। একদিন তিনি একটি বাহ্যিক সর্পিলের কেন্দ্রে ছিলেন এবং সিদ্ধান্ত নিয়েছিলেন যে এতে ঝাঁপিয়ে পড়ে আঁকতে হবে।
  • তিনি শুরু থেকে শেষ পর্যন্ত প্যাংগ্রামের মধ্য দিয়ে যেতে চান এবং কোনও বর্ণ যদি বর্ণমালার মধ্যে N-th অক্ষর হয় তবে তিনি এটিকে এন বার আঁকতে চান।
  • যাইহোক, শিয়াল কোণায় ঘুরতে খুব ভাল ছিল না, তাই প্রতিটি কোণে পৌঁছানোর পরে তাকে থামতে হবে এবং পরবর্তী চিঠিতে স্যুইচ করতে হয়েছিল।
  • তিনি যে জোর সে pangram তিনবার পুনরাবৃত্তি করার সিদ্ধান্ত নিয়েছে দ্রুত বাদামী শিয়াল।
  • শিয়াল those সমস্ত অক্ষর আঁকার পরে সর্পিলটি কেমন দেখাবে তা আপনার কাজ show

(গল্প না বলেই সরল সংস্করণ)

  • বিখ্যাত পেঙ্গ্রামটি "দ্রুত ব্রাউন শেয়ালটি অলস কুকুরের উপর দিয়ে ঝাঁপ দেয়" তিনবার পুনরাবৃত্তি করা হয়, স্পেসগুলি সরিয়ে ফেলে এবং ছোট অক্ষরে সমস্ত অক্ষর তৈরি করা হয়

    thequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydog
    
  • সর্পিলটি কেন্দ্র থেকে শুরু হয় এবং "টি" অক্ষর দিয়ে শুরু হয়, এটি ডানদিকে গিয়ে শুরু হয় এবং ঘড়ির কাঁটার দিকে চলে যায়। যদি বর্তমান অক্ষরটি বর্ণমালার एन-তম বর্ণ হয়, তবে এটি যখনই হবে পরবর্তী অক্ষরে স্যুইচ করে

    • সর্পিল একটি কোণে পৌঁছে, বা
    • বর্তমান অক্ষর ঠিক n বার মুদ্রিত হয়।

এটি আরও ভালভাবে বর্ণনা করার জন্য, আমি ব্যাখ্যা করব প্রথম তিনটি শব্দের সাথে সম্পর্কিত সর্পিল কীভাবে উত্পন্ন হয় "কুইকব্রাউন" is

 rooooo
 rquuuw
 bqttiw
 beehiw
 kccciw
nnnnnnw

শিয়ালটি "টি" থেকে শুরু করে ডানদিকে যায়, প্রথম কোণে পৌঁছায়, এটি "টি" দিয়ে আঁকা এবং তারপরে "এইচ" তে স্যুইচ করে নীচে যায়, দ্বিতীয় কোণে পৌঁছে যায়, "ই" তে চলে যায় এবং বামে যায়, পৌঁছে যায় তৃতীয় কোণে, "q" তে স্যুইচ করে উপরের দিকে যায়, চতুর্থ কোণে পৌঁছায়, "ইউ" তে চলে যায় এবং ডানে চলে যায়, একটি কোণে পৌঁছে "i" তে চলে যায়, নীচে যায়, একটি কোণে পৌঁছায় এবং "সি" তে চলে যায়, যায় বাম, সফলভাবে পরবর্তী কোণায় পৌঁছানোর আগে 3 "সি" গুলি আঁকুন, "কে" তে স্যুইচ করুন এবং বাম দিকে চলে যান , সরাসরি একটি কোণে পৌঁছান , "বি" তে স্যুইচ করে উপরে যান, পৌঁছানোর আগে 2 "বি" গুলি আঁকেন পরবর্তী কোণে, "আর" তে স্যুইচ করুনএবং উপরের দিকে যায় , একটি কোণে পৌঁছে "ও" তে স্যুইচ করে ডানদিকে যায়, তারপরে "ডাব্লু", নীচে, "এন", বাম দিকে যায়।

চশমা

  • আপনি একটি alচ্ছিক ইনপুট নিতে পারেন যা স্ট্রিংয়ের কোনও মানক ফর্ম ধারণ করে

    thequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydog
    
  • আপনার আউটপুট অবশ্যই একটি স্ট্রিং হিসাবে ফর্ম্যাট করা উচিত এবং অবশ্যই ফাইলগুলি বা STDERR এর পরিবর্তে STDOUT এ যেতে হবে, নতুন লাইনে সঠিকভাবে স্থাপন করা উচিত। শিরোনাম এবং খালি লাইনগুলি অনুসরণ করা কোনও বিষয় নয়। প্রতিটি লাইনে শিরোনাম এবং পিছনের স্থানগুলি অনুমোদিত, তবে সামঞ্জস্যপূর্ণ হওয়া দরকার। সুতরাং যদি আপনি প্রদত্ত পাঠ্যের এক লাইনের আগে 5 টি স্পেস যোগ করেন তবে প্রতিটি লাইনের আগে আপনাকে ঠিক 5 টি স্পেস যুক্ত করতে হবে যাতে সর্পিলটি একই দেখায়।

  • এটি , সর্বনিম্ন বাইট জিতেছে।

  • যথারীতি এখানে ডিফল্ট লুফোলগুলি প্রয়োগ হয়।


ব্যাখ্যাগুলি প্রয়োজনীয়, যদিও এটি স্বাগত।

এটিকে শৃঙ্খলাবদ্ধ করে ক্যারিড কোইনারিংহিংয়ের মন্তব্য অনুসারে পেংগ্রাম তৈরি করতে।

গল্পে দেখাতে অলস কুকুরটি খুব অলস।

আমি একটি স্ট্রিং চ্যালেঞ্জ তৈরির লক্ষ্যে যাচ্ছি যাতে আউটপুট-এ চিঠিটি স্থানাঙ্কের সাধারণ ফাংশন দ্বারা গুণানো যায় না।


2
এটি লজ্জাজনক যে শিরোনামটি পেঙ্গ্রাম নয়
কায়ারড কোইনারিংহিং

কায়ারডকোইনারিংআহিং ভালো পয়েন্ট, আমি একটিটি সামনে নিয়ে আসার চেষ্টা করব। কোন পরামর্শ?
ওয়েজুন চাউ

4
@ কায়ারডকোইনরিঙ্গিং আপডেট হয়েছে
ঝো

গৌণ বিন্দু: প্রথম 'দ' টিতে 'এইচ' দু'বার পুনরুক্ত হওয়া উচিত, 'টি' নয়?
মুডকিপ ২০১৮

@ মুডকিপ ২০১২ পরবর্তী অক্ষরে স্যুইচ করার আগে কোণটি মূল বর্ণ দিয়ে আঁকা হয়েছে। সম্ভবত আমার স্পষ্ট করা উচিত।
ওয়েইজুন চিউ

উত্তর:


5

স্ট্যাক্স , 35 34 33 32 বাইট

é╛îá%ⁿ┌○iê}→Ug=╩◙╘Ç⌐)QX↑L╓₧╗▌╧▬q

এটি চালান এবং অনলাইনে ডিবাগ করুন

স্টেক্স এমন একটি ভাষা যা আমি প্রায় 6 মাস ধরে কাজ করছি। এটি এটির সাথে প্রথম গল্ফিং। ব্যবসায় নামা যাক.

স্ট্যাকস সাধারণত মুদ্রণযোগ্য ASCII অক্ষর সেট লেখা হয়। এই 34 বাইট জমাটি সিপি 437 অক্ষর সেটটির একটি বৈকল্পিকের মধ্যে প্যাক করা হয়েছে। সংশ্লিষ্ট আসকি প্রতিনিধিত্ব হয়

't],{]_96-*~cHT,+nh%^(XUs&xH{rM}MF|<mr

স্ট্যাক্স একটি স্ট্যাক ভিত্তিক ভাষা, তবে এতে দুটি ডেটা স্ট্যাক রয়েছে, "প্রধান" এবং "ইনপুট"। বেশিরভাগ অপারেশনগুলি মূল স্ট্যাক ব্যবহার করে তবে ইনপুট স্ট্যাকের মাধ্যমে ইনপুট শুরু হয়। স্ট্যাক্স নির্দেশাবলী বেশিরভাগই এক বা দুটি চরিত্রের আসকি ক্রম হয়। তাদের বেশিরভাগই অতিরিক্ত বোঝা হয়ে গেছে যার অর্থ তাদের স্ট্যাকের শীর্ষস্থানীয় কয়েকটি মান দ্বারা নির্ধারিত হয় s

উচ্চ স্তরে, এই প্রোগ্রামটি বারবার শেষ সারিতে স্ট্রিং যুক্ত করে একটি গ্রিড তৈরি করে। শেষ সারিটি পূর্ণ হয়ে গেলে, এটি গ্রিডটি ঘড়ির কাঁটার দিকে ঘোরায়। শেষে, এটি গ্রিডটি অনুভূমিকভাবে মিরর করে। আরও বিশদে, প্রোগ্রামটি এইভাবে কাজ করে।

't],{]_96-*~cHT,+nh%^(XUs&xH{rM}MF|<mr
't]                                         ["t"]
   ,                                        Pop from input, push to main ("thequick...")
    {                            F          For each character in input, execute block...
     ]_96-*                                 Produce string using character appropriate
                                                number of times (a=1, b=2, etc)
           ~                                Pop from main, push to input for use later
            cH                              Copy last row from grid.
              T                             Right-trim whitespace
               ,+                           Pop from input stack and append
                 nh%                        Get the width of the first row of the grid
                    ^                       Add 1
                     (                      Right-pad/truncate string to this length
                      X                     Store in the x register
                       Us&                  Overwrite last row of the grid with new value.
                          xH                Get the last element from x.
                                                Basically, the lower right corner.
                             {  }M         Conditionally execute block.  This will happen 
                                                when the bottom right corner isn't a space.
                              rM            Reverse and transpose (aka rotate clockwise)
                                  |<        Left-justify grid; give all rows equal size.
                                     m      For each row, execute the rest of the program
                                               and then print the result to output
                                      r     Reverse the row

বাহ, আমি সত্যিই অবাক হয়েছি যে চ্যালেঞ্জটি একটি গল্ফিং ভাষার জন্য গল্ফ করার প্রথম জনসাধারণের উপস্থিতি দেখতে পাবে। আপনার সমর্থনের জন্য আপনাকে অনেক ধন্যবাদ! মাসের ভাষায় আগ্রহী? আমি আশা করি আরও ব্যবহারকারী এটি ব্যবহার করছে এবং শীঘ্রই এটি প্রার্থীর তালিকায় উপস্থিত হবে!
ওয়েইজুন চিউ

@WeijunZhou: আপনি বলতে চাচ্ছেন এই ? আমি জানতাম না এটা এখন পর্যন্ত একটা জিনিস ছিল। আমি কোনও মনোনয়নের জন্য আপত্তি করব না। দেখে মনে হচ্ছে এটি আরও প্রতিষ্ঠিত ভাষার পক্ষে আরও উপযুক্ত হতে পারে তবে আমি আপত্তি করি না।
8:25

হ্যাঁ. আপনারা যেমন বলছেন ঠিক ততই প্রতিষ্ঠিত হলে আমি এটি মনোনীত করতে পারি। আমি আশা করি এটি বেশি দিন থাকবে না।
ওয়েইজুন চিউ

যেহেতু "প্রতিটি লাইনের শিরোনাম স্থানগুলি যতক্ষণ না ততক্ষণ তারা সামঞ্জস্যপূর্ণ হয় না" আপনি চান যদি আপনি অন্য একটি বাইট সংরক্ষণ করতে পারেন।
ওয়েইজুন চিউ

1
আমি সদ্য স্ট্যাক্স ব্যবহার করে একটি জমা দিয়েছি । আপনি যদি চান তবে এই বিষয়ে পরামর্শ দিতে পারেন। সম্পাদনা: কি কাকতালীয়। আমি আপনার জমা থেকে শিখতে চেষ্টা করব।
ওয়েইজুন চিউ

11

কাঠকয়লা , 66 40 36 বাইট

≔²ηFS«F¬η«¶↷⊞υη≔⊕÷Lυ²η¶»F⊕⌕βι¿η«≦⊖ηι

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। সম্পাদনা: পাঠ্যটিকে ইনপুট হিসাবে গ্রহণ করে 16 বাইট সংরক্ষণ করা হয়েছে। ব্যাখ্যা:

≔²η

tকোনও কারণে 2 টি দিয়ে শুরু করুন ।

FS«

পাংগ্রামের সমস্ত অক্ষরের উপর লুপ করুন।

F¬η«

আমরা কি কোন কোণে পৌঁছেছি?

এক লাইনটি নীচে সরান (বা পরবর্তী দিকটি যাই হোক না কেন)।

প্রিন্টের দিকটি 90 ° ঘড়ির কাঁটার দিকে ঘোরান।

⊞υη≔⊕÷Lυ²η

পরের দিকের দৈর্ঘ্য গণনা করুন।

¶»

কার্সারের অবস্থান ঠিক করা শেষ করুন। (কাঠকয়লটি কোণার ঠিক আগে দিকটি শেষ করতে পছন্দ করত, যাতে আপনি নিজেই কোণে ঘোরেন))

F⊕⌕βι

বর্ণমালায় বর্তমান বর্ণের অবস্থানের চেয়ে বহুবার লুপ করুন।

¿η«

যদি আমরা কোনায় পৌঁছে না,

≦⊖ηι

গণনা হ্রাস করুন এবং বর্তমান চিঠিটি মুদ্রণ করুন।


ধন্যবাদ. দুর্দান্ত কাজ এবং ভাল ব্যাখ্যা। একটি ছোট টাইপো: সেখানে বার -> তিনবার।
ওয়েইজুন চিউ

এই 43 বাইট সংস্করণ স্পেসিফিকেশন অনুযায়ী গ্রহণযোগ্য। tio.run/##rY7NTsMwEITPzlNYPW2kcumVExJCikRRhLgBh9Rx4oV4nfon/...
Weijun ঝু

1
@ ওয়েইজুনঝৌ ধন্যবাদ, আমি আগে প্রশ্নটিতে সেই ধারাটি লক্ষ্য করিনি।
নিল

2

রুবি , 217 212 209 208 বাইট

->s{s+=' '*8
x=0
a=[""]*30
i=14
a[i]=?t
l=->{a[i]=s[x]+a[i]}
r=->{a[i]+=s[x]}
(0..58).map{|g|c=0
(0..g/2).map{c>s[x].ord-97&&(x+=1;c=0)
c+=1
eval %w{r i+=1;r l i-=1;l}[g%4]+"[]"}
x+=1}
a[-1].slice!0
$><<a*$/}

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

পয়েন্টার পরিচালনা করার জন্য যথেষ্ট পরিমাণে ব্যয় করে, তাই আরও গল্ফ করার জন্য জায়গা থাকতে পারে।

-5 বাইট: ইনপুট দেওয়ার আগে পানগ্রামটি ট্রিপল করুন । ধন্যবাদ Weijun ঝু

-3 বাইট: স্ক্র্যাচ থেকে শেষ লেগ তৈরির পরিবর্তে ইনপুট স্ট্রিংটি প্যাড করুন এবং শেষ লেগটি ছাঁটাই করুন।

-1 বাইট: &&একটি থ্রোওয়ে মান সহ একটি টার্নারি অপারেটরের পরিবর্তে ব্যবহার করুন ।

ব্যাখ্যা:

->s{
  s += " " * 8                             # These spaces will show on the bottom row
  x = 0                                    # x is a pointer into s
  a = [""] * 30                            # a is an array of row strings
  i = 14                                   # i is a pointer into a
  a[i] = ?t                                # "Starts with two t's for some reason"
  l = ->{ a[i] = s[x]+a[i] }               # lambda to prepend char x to row i
  r = ->{ a[i] += s[x] }                   # lambda to append char x to row i
  (0..57).map{|g|                          # There are 58 "legs" to the spiral
    c = 0                                  # c is the print count of s[x]
    (0..g/2).map{                          # Leg g has g/2+1 characters
      c > s[x].ord-97 && (x+=1;c=0)        # Possibly switch to next letter
      c += 1
      eval %w{r i+=1;r l i-=1;l}[g%4]+"[]" # Call the appropriate lambda
    }
    x += 1                                 # Definitely switch to next letter
  }
  a[-1].slice!0                            # Remove the first char from the bottom row
  $> << a*$/                               # Join with newlines and print
}

1
সুন্দর জমা এবং পরিষ্কারভাবে ব্যাখ্যা করা হয়েছে। আমি rএবং lল্যাম্বডাসের ব্যবহারের প্রশংসা করি । বর্তমান উত্তরের উপর ভিত্তি করে শেষ লেগটি একটি সমস্যা সমাধানকারী বলে মনে হচ্ছে যদিও নমুনা আউটপুট উত্পন্ন করার জন্য যখন আমি আমার সি স্নিপেটটি লিখতাম তখন তা ছিল না ...
ওয়েইজুন ঝোউ

1
দেখে মনে হচ্ছে আপনি s*=3সম্পূর্ণ সংরক্ষণ করতে পারবেন এবং অপারেটরের 0মধ্যে বাদ দিতে পারেন ?:tio.run/...
Weijun ঝু

1
@ ওয়েইজুনঝৌ আহ, টিপটির জন্য ধন্যবাদ। 0যদিও আমার দরকার নেই, বা রুবি c+=1পরের লাইনটি থেকে টানবে এবং কেবল বেশিরভাগ সময় এটি সম্পাদন করবে । এবং দুর্দান্ত চ্যালেঞ্জ!
বেনজ 2240

তুমি ঠিক. আমি যথেষ্ট যত্নবান লাগেনি। তোমার প্রশংসার জন্য ধন্যবাদ. আমি আনন্দিত যে আপনি এটি উপভোগ করেছেন।
ওয়েইজুন চিউ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.