সবাই মিলে আরও বেশি অর্জন করে


28

(সম্পর্কিত: এক , দুই , তিন )

একটি চিত্র করা কবিতার একটি স্টাইল / লেখা যেখানে প্রতিটি লাইনের শুরুতে চরিত্র, যখন উল্লম্বভাবে পড়া, আরো একটি শব্দ বা বার্তা উৎপন্ন হয়। উদাহরণ স্বরূপ,

Together
Everyone
Achieves
More

TEAMপ্রথম কলামটি উল্লম্বভাবে পড়লে শব্দটিও বানান ।

অ্যাক্রোস্টিকগুলি মেসোস্টিক এসগুলির একটি উপসেট , যেখানে উল্লম্ব শব্দটি অনুভূমিক শব্দের যে কোনও জায়গায় থাকতে পারে anywhere উদাহরণস্বরূপ, TEAMউপরের একটিকে নীচে মেসোস্টিক হিসাবেও লেখা যেতে পারে

   togeTher
everyonE
       Achieves
       More

অন্যান্য বিভিন্ন প্রকারের সাথে।

এখানে চ্যালেঞ্জ হ'ল প্রদত্ত ইনপুট শব্দের তালিকা থেকে অ্যাক্রোস্টিক বা মেসাস্টিক উত্পাদন করা।

ইনপুট

  • যে কোনও উপযুক্ত বিন্যাসে শব্দের একটি তালিকা ।
  • তালিকায় কেবল ছোট হাতের অক্ষর থেকে তৈরি শব্দ থাকবে [a-z]
  • তালিকাটি অ্যাক্রোস্টিক বা মেসোস্টিক গঠনের গ্যারান্টিযুক্ত (বোগাস ইনপুট হ্যান্ডেল করার প্রয়োজন নেই)।
  • ইনপুট বাকিরা অনুভূমিক শব্দ করতে, উল্লম্ব শব্দ গঠন করবে শব্দের মধ্যে একজন - তাই এটি চ্যালেঞ্জ এখানে অংশ, উপযুক্ত উল্লম্ব শব্দ খুঁজে পেতে না পারেন, আলাদাভাবে গ্রহণ করা।

আউটপুট

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

বিধি

  • হয় একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন গ্রহণযোগ্য।
  • স্ট্যান্ডার্ড লুফোলস নিষিদ্ধ।
  • এটি তাই সাধারণ গল্ফিংয়ের সমস্ত নিয়ম প্রয়োগ হয় এবং সংক্ষিপ্ততম কোড (বাইটে) জয়ী হয়।

উদাহরণ

['together', 'team', 'everyone', 'achieves', 'more']
Together
Everyone
Achieves
More

['aaa', 'aaa', 'aaa', 'aaa']
Aaa
Aaa
Aaa
# One output, or multiple (of the same) output is allowed

['aaa', 'aaa', 'aab', 'baa']
Aaa
Aaa
Baa
# This is the only allowed output, since others would be mesostic, which are lower priority

['live', 'every', 'love', 'very', 'ohio']
Live
Ohio
Very
Every
# Note that 'live' couldn't be the vertical word since then it would be a mesostic, which is lower priority output

['cow', 'of', 'fox']
cOw
 Fox
# A shorter mesostic test case

['late', 'ballroom', 'anvil', 'to', 'head']
anviL
   bAllroom
    To
   hEad

দেখে মনে হচ্ছে যেসব ক্ষেত্রে অ্যাক্রোস্টিক উত্পাদিত হয়েছে, সেই তালিকাটি কি সেই ক্রমে থাকবে?
লিকি নুন

আপনি কি একটি ছোট মেসোস্টিক টেস্টকেস পেতে পারেন?
ফাঁস নুন

1
অতিরিক্ত নেতৃস্থানীয় স্থান অনুমোদিত?
পূর্কাকুডারী

এটি বলে না যে ইনপুটটি সঠিকভাবে বাছাইয়ের গ্যারান্টিযুক্ত, তবে পরীক্ষার কেসগুলি থেকে বিচার করে তারা। তারা কি?

2
@ পিটু 1998 অবশ্যই, এটি ভাল - গুরুত্বপূর্ণ বিষয়টি হচ্ছে শব্দগুলি রেখাযুক্ত করা হয়েছে। আমি সেই স্পষ্টিতে সম্পাদনা করব।
অ্যাডমবর্কবার্ক

উত্তর:



6

ব্র্যাচল্যাগ , 145 বাইট

p~c[A:B:C],Bl1,A:CcP@pz:cahgB,P:1a~@nw|lL,?:laot:" "rjg:Ljb:sa:?z:cap~c[A:B:C],Bl1,A:Cc@pz:caZ:LmgB,Zl-yM,Z:M:Lz:2az:ca~@nw
bB,?h@u:Bc
b#=,?h@u|h

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

(আধ মিনিট সময় নেয় তাই ধৈর্য ধরুন))


1
দেখে মনে হচ্ছে এটি লেখার জন্য কিছু প্রচেষ্টা নিয়েছে :) খুব সুন্দর!
এমিগানা

@ টিমিডি ফিক্সড, ধন্যবাদ
লিকি নুন

4

জাভাস্ক্রিপ্ট (ES6), 255 263 269 286

সম্পাদনা যেমন নেতৃস্থানীয় স্পেস নির্বিচারে সংখ্যা অনুমতি দেওয়া হয় 17 সংরক্ষিত বাইট
Edit2 কিছু প্রকাশের shuffling, 6 বাইট সংরক্ষিত
Edit3 (feersum এর উত্তর ওপি মন্তব্য) পরিবর্তে স্ট্রিং এর একটি তালিকা আসতে নতুন লাইন সঙ্গে একটি একক স্ট্রিং এর, 8 আরও সংরক্ষিত বাইট

ইনপুট তালিকার প্রতিটি শব্দের জন্য, আমি সমস্ত সম্ভাব্য মেসোস্টিক / অ্যাক্রোস্টিকগুলি সন্ধান করতে পুনরাবৃত্ত ডিএফএস ব্যবহার করি। প্রত্যেকটি শব্দের ভিতরে শব্দ এবং লক্ষ্য বর্ণের অবস্থান সহ একটি অ্যারে হিসাবে সংরক্ষণ করা হয়। প্রাপ্ত প্রতিটি ফলাফল বিশ্বব্যাপী ফলাফল অ্যারে 1 পজিশনে সংরক্ষণ করা হয় (এটি যদি অ্যাক্রোস্টিক হয়) বা 0 যদি এটি মেসাস্টিক হয়।

সমস্ত শব্দের জন্য সম্পূর্ণ স্ক্যানের পরে, আমি অ্যারেতে সর্বশেষ অবস্থানে ফলাফল পেয়েছি এবং এর এসকি শিল্প বিবরণটি তৈরি এবং ফিরে পেয়েছি।

l=>(l.map((w,i)=>(r=(p,v,i,a)=>(l[i]='.',w[p]?l.map((v,i)=>~(j=v.search(w[p]))&&r(p+1,v,i,a|j,m[p]=[j,v])):l[p+1]?0:s[+!a]=[...m],l[i]=v))(0,w,i,m=[]),s=[]),m=s.pop(),m.map(([j,v])=>' '.repeat((l+0).length-j)+v.slice(0,j)+v[j].toUpperCase()+v.slice(j+1)))

কম গল্ফড

f=l=>(
  l.map((w,i)=>
    // r: recursive DFS function
    // defined here as it uses local w variable
    (r = (p,v,i,a) => (
     l[i] = '.'
     , w[p] 
     ? l.map(
       (v,i) => ~(j=v.search(w[p])) && 
                r(p+1, v, i, a|j, m[p] = [j,v])

     )
     : l[p+1] ? 0 // invalid if there are still unused words
              : s[+!a]=[...m] // a is 0 if acrostic
     , l[i] = v) 
    )(0, w, i, m=[])
  , s=[]),
  m = s.pop(), // get last result
  // m.map(([j]) => o = o<j ? j : o, o=0), // find offset for alignment
  // no need to find the optimal offset as leading blanks are allowed
  m.map(([j,v]) => ' '.repeat((l+0).length-j) 
                   + v.slice(0,j) 
                   + v[j].toUpperCase()
                   + v.slice(j+1)
  )
)

পরীক্ষা

f=l=>(l.map((w,i)=>(r=(p,v,i,a)=>(l[i]='.',w[p]?l.map((v,i)=>~(j=v.search(w[p]))&&r(p+1,v,i,a|j,m[p]=[j,v])):l[p+1]?0:s[+!a]=[...m],l[i]=v))(0,w,i,m=[]),s=[]),m=s.pop(),m.map(([j,v])=>' '.repeat((l+0).length-j)+v.slice(0,j)+v[j].toUpperCase()+v.slice(j+1)))

console.log=x=>O.textContent+=x+'\n\n'

;[
 ['together', 'team', 'everyone', 'achieves', 'more']
,['aaa', 'aaa', 'aaa', 'aaa']
,['aaa', 'aaa', 'aab', 'baa']
,['live', 'every', 'love', 'very', 'ohio']
,['cow', 'of', 'fox']
,['late', 'ballroom', 'anvil', 'to', 'head']
].forEach(l=>console.log(f(l).join`\n`))
<pre id=O></pre>


3

পার্ল 6, 287 277 269 ​​বাইট

my @w=$*IN.words;my ($q,$r)=gather for ^@w {my @v=@w.rotate($_);my \d=@v.shift;for @v.permutations {my @o=flat($_ Z d.comb).map:{$^a.index: $^b};take $_,@o if @o>>.defined.all}}.sort(*[1].sum)[0];for @$q Z @$r ->(\a,\b){say " "x($r.max -b)~a.substr(0,b)~a.substr(b).tc}

3

গণিত 10.0, 139 বাইট

একটি নামহীন ফাংশন লাইনের একটি তালিকা ফিরিয়ে দেয়:

Sort[{q=Max[p=Min/@Position@@@({z={##2},#})],Array[" "&,q-#2]<>ToUpperCase~MapAt~##&@@@({z,p})}&@@@Permutations@Characters@#][[1,2]]&

ব্যবহারের উদাহরণ:

[144]: = এফ = বাছাই করুন [{কি = সর্বোচ্চ [পি = নূন্যতম / @ পজিশন জুটেল ({z = {## 2}, #} ​​)]], অ্যারে ["" &, q- # 2 ] ToUpperCase ~ MapAt ~ ## & @@@ ({z- র, পি} )} & @@@ permutations @ অক্ষর @ #] [[1,2]] &;

[145]: = f @ {"দেরী", "বলরুম", "অ্যাভিল", "থেকে", "মাথা"} // কলাম

 ... বেশ কয়েকটি পৃষ্ঠার সতর্কতা ... 

আউট [145] = বেলরুম
            নেহাই
            থেকে
           মাথা

আমি মূলধনটি করার আরও ভাল উপায়গুলির জন্য পরামর্শগুলি সন্ধান করছি। আমি MapAtস্ট্রিংয়ে চিঠিটি মূলধন করার জন্য একটি খুব সুন্দর ফাংশন পেয়েছি ।


অবশ্যই, ফাংশনগুলি স্ট্রিংগুলির তালিকা হিসাবে মাল্টলাইন স্ট্রিংগুলি ফিরিয়ে দিতে পারে।
অ্যাডমবর্কবার্ক

2

হাস্কেল, 214 206 204 202 বাইট

import Data.List
z=zipWith
h i j t|(u,v:w)<-splitAt j t=([1..sum i-j]>>" ")++u++toEnum(fromEnum v-32):w
f x=uncurry(z=<<h)$sort[(head<$>z elemIndices w l,l)|w:l<-permutations x,(True<$w)==z elem w l]!!0

স্থান প্যাডযুক্ত স্ট্রিংগুলির একটি তালিকা ফেরত দেয়, যেমন f ["late","ballroom","anvil","to","head"]-> [" baLlroom"," Anvil"," To"," hEad"]বা আরও প্রদর্শন বন্ধুত্বপূর্ণ:

*Main> mapM_ putStrLn $ f ["late", "ballroom", "anvil", "to", "head"]
 baLlroom
   Anvil
   To
  hEad

fঅফসেটের তালিকার সাথে অনুভূমিকভাবে লেখা শব্দগুলি নির্বাচন করে। hঅফসেট অনুসারে প্রতিটি শব্দকে প্যাড করে এবং বড় হাতের অক্ষর সন্নিবেশ করায়। বিস্তারিত:

                permutations x       -- for each permutation of the input list x
         w:l<-                       -- bind w to the first word and l to the rest
             (True<$w)==z elem w l   -- keep it if the list of other words
                                     -- containing the next letter of w
                                     -- equals (length w) times True, i.e. we have
                                     -- as many matching letters as letters in w.
                                     -- This rules out combinations shortcut by zipWith

                                     -- for all the remaining w and l make a pair
         head<$>z elemIndices w l    -- the first element of the list of list of
                                     -- indices where the letter appears in the word 
                                l    -- and l itself
   sort                              -- sort the pairs (all 0 indices, i.e. acrostics
                                     -- go first)
                               !!0   -- pick the first
                                     -- now we have a pair like
                                     -- ([2,0,0,1],["ballroom","anvil","to","head"])
 uncurry(z=<<h)                      -- loop over (index,word) and 
                                     -- provide the third parameter for h 



 h i j t                             -- h takes the list of indices and
                                     -- an index j and a word t
       (u,v:w)<-splitAt j t          -- split the word at the index and bind
                                     --   u: part before the split
                                     --   v: letter at the split
                                     --   w: part after the split
         [1..sum i-j]>>" "           -- the spaces to pad
           ++ u                      -- followed by u
           ++ toEnum(fromEnum v-32)  -- and uppercase v
           :                         -- and w 

2

পাইথন, 249 বাইট

সম্ভবত এখনও খুব গল্ফযোগ্য

from itertools import*;e=enumerate;lambda l:[[[' ']*(max(j for k,(j,c)in o[1:])-i)+l[k][:i]+[c.upper()]+l[k][i+1:]for k,(i,c)in o[1:]]for p in product(*[list(e(w))for w in l])for o in permutations(list(e(p)))if[c for k,(i,c)in o[1:]]==l[o[0][0]]][0]

অক্ষরের তালিকার একটি তালিকা নেয় এবং ফেরত দেয়।
- যেমন " bAllroom"হয়[' ',' ',' ','b','A','l','l','r','o','o','m']

কেবলমাত্র প্রথম ফলাফলটি ফেরত দেয় এবং একটি ক্রমটি এমন চেক করে যাতে সমস্ত অ্যাক্রোস্টিকগুলি প্রথমে পরীক্ষা করা হয়।

আইডিয়োনে প্রদর্শন বিন্যাসে মুদ্রিত সমস্ত পরীক্ষার কেসগুলি দেখুন


এখানে আরও পাঠযোগ্য ফাংশনাল ফর্ম যা এটি একই রকম হয় (বাদে এটি প্রথম ফলাফলটি মূল্যায়নের পরিবর্তে এবং তারপরে প্রথম ফলাফলটি ফিরিয়ে দেওয়ার পরিবর্তে অবিলম্বে ফেরত দেয়):

from itertools import*
def f(l):
    for p in product(*[list(enumerate(w)) for w in l]):
        for o in permutations(list(enumerate(p))):
            if [c for k,(i,c) in o[1:]] == l[o[0][0]]:
                return [ [' '] * (max(j for k,(j,c) in o[1:]) - i)
                       + l[k][:i]
                       + [c.upper()]
                       + l[k][i+1:]
                       for k, (i, c) in o[1:]
                       ]

1

পার্ল 6, 177 বাইট

->\a{for first({.[0] eq[~] .[1]»[1]},map |*,[Z] map {.[0]X [X] map {.comb[(^$_,$_,$_^..* for ^.chars)]},.[1..*]},a.permutations)[1] ->$/ {say [~] " "x a.comb-$0,|$0,$1.uc,|$2}}

নিষ্ঠুর শক্তি সমাধান।

কিভাবে এটা কাজ করে

-> \a {
    for first({.[0] eq[~] .[1]»[1]},          # For the first valid candidate
            map |*, [Z]                       # among the transposed
            map {                             # lists of candidates
                .[0] X [X] map {
                    .comb[(^$_,$_,$_^..* for ^.chars)]
                }, .[1..*]
            },
            a.permutations                    # for all permutations of the input:
        )[1] ->$/ {
        say [~] " "x a.comb-$0,|$0,$1.uc,|$2  # Print the candidate as ASCII art.
    }
}

প্রতিটি পরীক্ষার্থীর মতো দেখাচ্ছে:

"of", (("c"),"o",("w")), ((),"f",("o","x"))

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

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