বর্ণমালা স্যুপ দিয়ে একটি বাটি পূরণ করুন


24

আমরা বলে মনে হচ্ছে না পেতে ক্লান্ত বর্ণমালা-সম্পর্কিত চ্যালেঞ্জ ...


প্রস্তুতপ্রণালী

প্রদত্ত

  • অক্ষরের একটি স্ট্রিং S, এবং
  • দুই ধনাত্মক পূর্ণসংখ্যা M, N,

লেটার অব সঙ্গে একটি বর্ণমালা স্যুপ উত্পাদন Sঅধিষ্ঠিত র্যান্ডম অবস্থানের একটি আয়তক্ষেত্রাকার বাটি আকারের M× N, ষড়যন্ত্র করে ফাঁসানো একটি অ-বর্ণানুক্রমিক, অ-স্পেস অক্ষর দ্বারা বাটি রিম প্রতিনিধিত্ব করতে।

অক্ষর দ্বারা ব্যবহৃত না অবস্থানগুলি স্থান হিসাবে প্রদর্শিত হবে be দেখুন নিচের উদাহরণ

অ্যাডিশনাল বিধি

  • আকার Mবাটিটির অভ্যন্তরকেN বোঝায় । রিম সহ আকার × ।M+2N+2
  • থেকে প্রতিটি চরিত্রের বাটিতে একবারে আলাদা অবস্থানেS উপস্থিত হওয়া উচিত ; অর্থাৎ, একটি চরিত্র অন্যটিকে ওভাররাইট করতে পারে না।
  • S নকল থাকতে পারে । উদাহরণস্বরূপ, যদি Sস্ট্রিং হয় 'abcc'তবে স্যুপের মধ্যে একটি a, একটি bএবং দুটি থাকতে হবে c(সমস্ত বিভিন্ন অবস্থানের মধ্যে)।
  • ইনপুট সন্তুষ্ট হবে বিধিনিষেধ M >= 1 , N >= 1, 1 <= length(S) <= M*N
  • বাটির রিমটি কোনও প্রোগ্রামার রান এবং ইনপুট মানগুলির সাথে সামঞ্জস্যপূর্ণ যে কোনও নন-বর্ণমালা, অ-স্থানের অক্ষর হতে পারে ।
  • বাটিতে অক্ষরের অবস্থানগুলি এলোমেলো, সুতরাং প্রোগ্রামটি প্রতিটি বার একই ইনপুট দিয়ে চালিত হওয়ার পরে ফলাফলটি পৃথক হতে পারে।
  • ইনপুট দেওয়া হয়েছে, প্রতিটি সম্ভাব্য অক্ষরের অবস্থানের সেটগুলির শূন্য-সম্ভাবনা থাকা উচিত । যেহেতু প্রোগ্রামের কয়েকটি উপলব্ধি থেকে এটি পরীক্ষা করা যায় না, দয়া করে আপনার কোড কীভাবে এটি পূরণ করে তা ব্যাখ্যা করুন।
  • রিমের চারপাশে শীর্ষস্থানীয় বা পিছনে সাদা স্থানের অনুমতি রয়েছে।
  • Sথাকবে কেবল বড় হাতের অক্ষর। আপনি যদি চান তবে আপনি কেবল ছোট হাতের অক্ষর নিতে বেছে নিতে পারেন ।
  • ইনপুট এবং আউটপুট যথারীতি নমনীয় । উদাহরণস্বরূপ, আউটপুটটি নিউলাইনগুলি, একটি 2 ডি অক্ষরের অ্যারে বা লাইনের একটি তালিকা সহ স্ট্রিং হতে পারে।
  • কোনও প্রোগ্রামিং ভাষায় প্রোগ্রাম বা ফাংশন অনুমোদিত । স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।

উদাহরণ

ইনপুটগুলি প্রদর্শিত হয় S, [M N]যেখানে Mসারিগুলির Nসংখ্যা এবং কলামের সংখ্যা। চরিত্রটি #রিমের জন্য ব্যবহৃত হয়।

'O', [1 1]:

###
#O#
###

'HEY', [1 3]:

#####
#YHE#
#####


'HELLO', [4 11]:

#############
#  O        #
#         H #
#    LE     #
#   L       #
#############


'ADVNJSGHETILMVXERTYIOJKCVNCSF', [8 12]:

##############
#K  V  L   S #
# A   V  X H #
#T    M C    #
# I       O N#
#  YC        #
# G  I   R SE#
#   J      F #
#JT  D  V EN #
##############


'OOOOOOOOOOXXXXX', [13 31]:

#################################
#    X                          #
#                O              #
#                               #
#                  X            #
#                        O      #
#             X           O     #
#      O                        #
#         X                     #
#                        O      #
#       X                       #
#                    O          #
#  O      O      O              #
#                             O #
#################################


'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ', [11 41]

###########################################
#                                       JU#
#     Q         C M    G     R T U Y  H   #
#  KI          E   H    M   YO            #
#      V BW        I    JC                #
#     SV           D     P   B          U #
#           A     F    RF   J  KP E       #
#            E   N      TH        Z       #
#    N  BM  O     Q   I        AS N  WX   #
#   S     O  K       G L       P       Q  #
#Z     L T         R   L       A      F DD#
#      V   Y           WX   C       G XZ  #
###########################################


"বাটিতে চিঠির অবস্থানগুলি এলোমেলো, [...]" <- আপনার অর্থ কি এলোমেলো হতে পারে বা এলোমেলো হতে পারে? এবং সব লাইনে কি সব সময় একই সংখ্যার চর থাকতে পারে?
ইসমাইল মিগুয়েল

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

প্রোগ্রামটি চলমান এবং ইনপুট মানগুলিতে রিমটি কি সামঞ্জস্যপূর্ণ হতে পারে, তবে একাধিক নন-অক্ষর ব্যবহার করতে পারে, উদাহরণস্বরূপ কোনও ASCII আর্ট সীমানা অঙ্কন করা |+-?
অ্যাডাম

@ অ্যাডেম এইচএম আমি না বলতে যাচ্ছি, এটি খুব বড় একটি পরিবর্তন
লুইস মেন্ডো

উত্তর:


13

05 এ বি 1 ই , 20 18 16 15 14 বাইট

*j.rS²ô2Føε8.ø

ক্রমে তিনটি ইনপুট নেয়: উচ্চতা, প্রস্থ, স্ট্রিং। অক্ষরের 2D তালিকা হিসাবে আউটপুট। সীমানা হিসাবে
ব্যবহার করে 8তবে কোনও অঙ্ক হতে পারে।

-১ বাইট @ গ্রিমিকে ধন্যবাদ ।

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন । ( }}J»ফলাফলটি প্রিন্ট করার জন্য টিআইও পাদলেখগুলিতে রয়েছে ; এর পরিবর্তে অক্ষরের প্রকৃত আউটপুট 2D তালিকা দেখতে এটিকে সরাতে দ্বিধা বোধ করবেন))

ব্যাখ্যা:

*               # Multiply the (implicit) width and height inputs
 j              # Pad the (implicit) input-string with up to that amount of leading spaces,
                # so the total string-length is equal to that value
  .r            # Shuffle the characters in the string
    S           # Convert the string to a list of characters
                # (edge-case for the zip below with strings of size 1 with 1x1 dimensions)
     ²          # Push the width input again
      ô         # Split the list of characters into parts of that size
       2F       # Loop 2 times:
         ø      #  Zip/transpose the 2D list; swapping rows/columns
          ε     #  Inner map over each line:
           8.ø  #   And surround this line-list with a leading/trailing "8"
                # (after the loop, the result is output implicitly)

1
@ লুইসমেডো আমি আসলে 3 মিনিট আগে চ্যালেঞ্জটি বলি। ;) এটি একটি দুর্দান্ত সরাসরি-এগিয়ে বাস্তবায়ন। এখান থেকে এটিকে গল্ফ দেওয়ার চেষ্টা করবে।
কেভিন ক্রুইজসেন

1
খুব সুন্দর, আমি ভেবে দেখিনি *j! উত্তরাধিকারের জন্য এখানে 13 বা আধুনিকের জন্য একটি কুরুচিপূর্ণ 14 (একটি 2D অক্ষরের অ্যারে আউটপুট করে)।
গ্রিমি

1
@ গ্রিমি 13-বাইটারটি ইনপুটটির জন্য ব্যর্থ বলে মনে হচ্ছে 1,1,"O", সুতরাং আমি মনে করি এটিও উত্তরাধিকারের জন্য 14-বাইটার হতে হবে। যদিও -1 এর জন্য ধন্যবাদ।
কেভিন ক্রুইজসেন

7

এপিএল (ডায়ালগ ইউনিকোড) , 25 বাইট এসবিসিএস

'#',∘⌽∘⍉⍣4{⍵⍴⊃¨↓∘⍺¨?⍨×/⍵}

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

-২২ @ @nn- কে ধন্যবাদ, -7 @ @nn এবং @ অ্যাডমকে ধন্যবাদ

ব্যাখ্যা:

'#',∘⌽∘⍉⍣4{⍵⍴⊃¨↓∘⍺¨?⍨×/⍵}
          {            ⍵}  Function that generates the content
                            argument:  (width and height),  (string)
                     ×/    get the product
                   ?⍨      For each randomized elements
               ↓∘⍺¨        take the character in 
           ⍵⍴⊃¨            turn it back into a matrix of shape 
      4                 Then, 4 times, do these 3 things:
'#',                       - prepend a # to the axis
                          - reverse the columns
                          - swap columns and lines

এপিএল (ডায়ালগ প্রসারিত) , 21 বাইট এসবিসিএস

রিমের কোণগুলি বিভিন্ন অক্ষর

{⌂disp⊂⍵⍴⊃¨↓∘⍺¨?⍨×/⍵}

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

বাক্সটি প্রদর্শন করতে ডিএফএন ব্যবহার করে।


29: '#',∘⌽∘⍉⍣4⊢⍴∘(?⍨∘≢⊃¨⊂)↑⍨∘(×/) এটি অনলাইন চেষ্টা করুন!
অ্যাডাম

28: {'#',∘⌽∘⍉⍣4⊢⍵⍴⍺\⍨(≢⍺)>?⍨×/⍵}(অথবা পরিবর্তে >যদি ⎕io=1)
ngn

আসলে, 27:'#',∘⌽∘⍉⍣4{⍵⍴⍺\⍨(≢⍺)>?⍨×/⍵}
এনজিএন

3
25:'#',∘⌽∘⍉⍣4{⍵⍴⊃¨↓∘⍺¨?⍨×/⍵}
এনজিএন


6

পাইথন 3 , 110 বাইট

lambda s,m,n,r=['#']:[r+(n*r+[i for i,j in{*zip(s+m*n*' ',range(m*n))}]+n*r)[k*n:-~k*n]+r for k in range(m+2)]

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

একটি setবোধগম্যতা ব্যবহার করে এলোমেলো করে তোলে এবং একটি 2D অক্ষরের অ্যারে প্রদান করে।


এলোমেলোভাবে সেট বোধগম্য ব্যবহারের দুর্দান্ত ব্যবহার। +1 টি। তবে আপনার কোডগুলি ফাংশনের 'এফ' নামের উপর নির্ভর করে। অতএব আমি মনে করি ল্যামডা সমাধান বৈধ নয় ...
agtoever

1
ধন্যবাদ! ফাংশনটি পুনরাবৃত্ত হয় না, তাই এটি বেনামে থাকতে পারে। আপনি f'{s:{m*n}}'অংশ উল্লেখ করা হয় ? কারণ এটি একটি ফর্ম্যাট স্ট্রিংয়ের বাক্য গঠন যা কেবল কাকতালীয়ভাবে একটি দিয়ে শুরু হয় f
জিতসে

3
এই কোডটি বিভিন্ন উপায়ে পিইপি 8 লঙ্ঘন করেছে বলে মনে হচ্ছে।
ক্রিস্টোফার ওহলসন

1
ক্রিস্টোফার-ওহলসন একেবারে!
জিতসে

2
@ ক্রিস্টোফার ওহলসন কোড-গল্ফ, হা হা জগতে আপনাকে স্বাগতম। ;) কোনও মন্তব্য / ডকস নেই; একক অক্ষর ভেরিয়েবল / পদ্ধতি কোনও (অপ্রয়োজনীয়) স্পেস / নিউলাইন ছাড়াই; সম্ভাব্য কয়েকশ সংকলক-সতর্কতা আমরা কেবল উপেক্ষা করি; ও (লগ (এন)) থেকে ও (এন ^ এন) এ কর্মক্ষমতা বৃদ্ধি করা; ইত্যাদি যদি এটি এমনকি একটি একক বাইটও সঞ্চয় করতে পারে তবে কোড-গল্ফিংয়ের জন্য এটি সর্বোত্তম totally ;)
কেভিন ক্রুইজসেন

5

বাশ + কোর্টিলস, 139 টি অক্ষর

r=`printf %$3s@@|tr \  @`
echo $r
printf %$[$2*$3]s $1|fold -1|shuf|tr -d \\n|fold -$3|paste -d@ <(:) - <(:)|head -$2
echo $r

নমুনা রান:

bash-5.0$ bash soup.sh HELLO 4 11
@@@@@@@@@@@@@
@  H        @
@      OE   @
@    L      @
@          L@
@@@@@@@@@@@@@

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

বাশ + কোর্টিলস + বাক্স, 97 টি অক্ষর

printf %$[$2*$3]s $1|fold -1|shuf|tr -d \\n|fold -$3|boxes -dsimple -s$[$3+2]x$[$2+2] -pa0 -itext

নমুনা রান:

bash-5.0$ set -- HELLO 4 11

bash-5.0$ printf %$[$2*$3]s $1|fold -1|shuf|tr -d \\n|fold -$3|boxes -dsimple -s$[$3+2]x$[$2+2] -pa0 -itext
*************
* O   L  E  *
*      H    *
*           *
*     L     *
*************

এটি অনলাইন চেষ্টা করুন! (আংশিকভাবে, যেমনটি boxesটিআইও তে ইনস্টল করা নেই))


5

জে , 30 29 বাইট

-1 বাইট জোনা ধন্যবাদ

'#'|.@|:@,^:4[$*/@[(?~@[{{.)]

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


1
কারণ টিআইও একটি স্থির এলোমেলো বীজ ব্যবহার করে। 9!:1]6!:9''এটি স্থির করে
অ্যাডম

2
শূন্য পূরণের উপায়টি সত্যই পছন্দ করুন {.। 29 এর জন্য সামান্য ত্বক '#'|.@|:@,^:4[$*/@[(?~@[{{.)]: এটি অনলাইনে চেষ্টা করুন!
জোনা

1
@ জোনাঃ আপনাকে ধন্যবাদ!
গ্যালেন ইভানভ

5

পাওয়ারশেল , 163 111 93 বাইট

param($w,$h,$s)'#'*$w+-join($s|% *ht($w*$h)|% t*y|sort{Random})+'#'*$w-replace".{$w}",'#$0#
'

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

আট $wনম্বর, ট্রাইং হিসাবে ইনপুট নেয় ।$h$s

#উপযুক্ত $width এর একটি স্ট্রিং তৈরি করে , স্ট্রিং যোগ দেয় যা কিছু সংখ্যার সাথে এবং তারপরে #আবার সেই একই স্ট্রিং। $sগণনাটি ইনপুট ট্রিং নেওয়া এবং আট পুরু দৈর্ঘ্যের দ্বারা আইডিথ htপর্যন্ত একটি প্যাড্রিগ করা দিয়ে $wশুরু হয় $h(অর্থাত্ আয়তক্ষেত্রাকার স্থানটি পুরোপুরি ধরে রাখার জন্য একটি স্ট্রিং দীর্ঘ করুন We আমরা তারপরে সেই স্ট্রিংটিকে tওচারআরার রূপান্তর করি yএবং sortএটি লায় Random। যা দেয় আমাদের মিশ্রিত মাঝের অংশটি শেষ অবধি, আমরা -replaceএটিকে সমান $wমাপের অংশে পরিণত করব, এবং সেই অংশগুলিকে #এস দিয়ে ঘিরে ফেলব ।

-52 অ্যাজটেকোর কাছ থেকে অনুপ্রেরণার জন্য ধন্যবাদ -18 মাইজিকে
ধন্যবাদ বাইটস


আপনার কাছে 2 এক্স এলোমেলো (12) রয়েছে, যখন জেএস এর একটি রয়েছে, তিনি এম * এন আকার পূরণ করার জন্য স্পেস যোগ করেছেন এবং বাছাই করেছেন, এর পরেও আপনি দুর্ভাগ্যক্রমে '$' এর জন্য 21 প্রদান করেন
আজটেকো

1
@ আজটেককো অনুপ্রেরণার জন্য ধন্যবাদ!
অ্যাডমবর্কবার্ক

ধন্যবাদ @ ম্যামজি - -replaceবিভক্ত হয়ে যোগদানের পরিবর্তে খুব চালাক ।
অ্যাডমবর্কবার্ক

4

জাভাস্ক্রিপ্ট (ES7), 125 বাইট

একটি স্ট্রিং প্রদান করে। 0ফ্রেম চরিত্র হিসাবে ব্যবহার করে ।

(s,h,w)=>(a=[...s.padEnd(w++*h++)].sort(_=>Math.random()-.5),g=x=>y+~h?(x%w&&y%h&&a.pop())+[`
`[x-w]]+g(x<w?x+1:!++y):a)(y=0)

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

মন্তব্য

(s, h, w) => (               // s = string; h = height; w = width
  a =                        // build an array a[] consisting of:
    [...s.padEnd(w++ * h++)] //   all original characters in s padded with spaces for a
    .sort(_ =>               //   total length of w * h, in a random order
      Math.random() - .5     //   (this is not guaranteed to be uniform, but it is not
    ),                       //   required to be)
  g = x =>                   // g is a recursive function taking x:
    y + ~h ?                 //   if we haven't reached the end of the grid:
      ( x % w &&             //     if we're not located on a vertical border
        y % h &&             //     nor on a horizontal border,
        a.pop()              //     extract the last character from a[]
      ) +                    //     (otherwise, append '0')
      [`\n`[x - w]] +        //     if we've reached the end of the row, append a linefeed
      g(                     //     append the result of a recursive call:
        x < w ? x + 1 : !++y //       using either (x+1, y) or (0, y+1)
      )                      //     end of recursive call
    :                        //   else (end of grid):
      a                      //     a[] is now empty and can be used as an empty string
)(y = 0)                     // initial call to g with x = y = 0

4

এপিএল (ডায়ালগ প্রসারিত) , 23 বাইট এসবিসিএস

বেনামে সারণী ইনফিক্স ফাংশন লাগে [M,N]বাম আর্গুমেন্ট হিসাবে এবং Sঅধিকার আর্গুমেন্ট হিসাবে।

'#',∘⌽∘⍉⍣4⊣⍴×/⍛(?⍨⍤⊣⊇↑)

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

×/⍛() আর্গুমেন্টের মধ্যে নিম্নলিখিত ফাংশনটি প্রয়োগ করুন, বাম যুক্তিটিকে তার পণ্যটির সাথে প্রতিস্থাপন করুন:

 নিতে M× Nথেকে অক্ষর Sডান দিকে শূণ্যস্থান সঙ্গে, প্যাডিং

 নিম্নলিখিত আদেশে এটি পুনঃক্রম করুন:

?⍨⍤ পরিবর্তিত সূচকগুলি 1 মাধ্যমে…
 বাম আর্গুমেন্ট ( M× N)

eshape নিম্নলিখিত আকৃতি হবে:

 বাম আর্গুমেন্ট (যেমন Mসারি এবং Nকলাম)

'#'⍣4 নীচের ফাংশনটি চারবার হ্যাশ চরিত্রের সাথে বাম আর্গুমেন্ট হিসাবে প্রয়োগ করুন:
∘⍉ ডান আর্গুমেন্টের
∘⌽ আয়নাটি ডান আর্গুমেন্টটি
,হ্যাশগুলির একটি কলামের বাম পাশে সংযুক্ত করুন


4

পিএইচপি 7.4, 107 99 94 টি অক্ষর

fn($s,$r,$c)=>_.chunk_split(($b=str_pad(_,$c,_)).str_shuffle(str_pad($s,$r*$c)),$c,"_
_").$b._

ধন্যবাদ:

  • পিএইচপি 7.4 এর তীর ফাংশন (-10 অক্ষর) সম্পর্কে আমাকে স্মরণ করিয়ে দেওয়ার জন্য ইসমাইল মিগুয়েল
  • দক্ষতার সাথে যুক্তিগুলি এবং join()(-8 টি অক্ষর) বিপরীত করার জন্য নাইট 2
  • Night2 কিভাবে ব্যবহার করতে দেখানোর জন্য chunk_split()'র $endপরামিতি (-5 অক্ষর)

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

পিএইচপি 7.3, 117 112 108 টি অক্ষর

function s($s,$r,$c){echo _.chunk_split(($b=str_pad(_,$c,_)).str_shuffle(str_pad($s,$r*$c)),$c,"_
_").$b._;}

ধন্যবাদ:

  • দক্ষতার সাথে যুক্তিগুলি এবং join()(-5 টি অক্ষর) বিপরীত করার জন্য নাইট 2
  • Night2 কিভাবে ব্যবহার করতে দেখানোর জন্য chunk_split()এর $endপ্যারামিটার (-4 অক্ষর)

নমুনা রান:

php > function s($s,$r,$c){echo _.chunk_split(($b=str_pad(_,$c,_)).str_shuffle(str_pad($s,$r*$c)),$c,"_
php " _").$b._;}
php > s('HELLO', 4, 11);
_____________
_  L        _
_        L  _
_E          _
_    OH     _
_____________

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


1
আমি বিশ্বাস করি যে fn($s,$r,$c)=>($b=str_repeat(9,$c+2))."\n9".join("9\n9".str_split(str_shuffle(str_pad($s,$r*$c)),$c))."9\n$b";পিএইচপি 7.4 ( wiki.php.net/rfc/arrow_funitions_v2 ) এ কাজ করা উচিত , এবং একটি রিলিজ ক্যান্ডিটেট প্রকাশিত হয়েছে ( wiki.php.net/todo/php74 ), সুতরাং, এটি একটি উপলব্ধ "সংকলক" এসেছে এই চ্যালেঞ্জের আগে এবং যে কেউ এটি ব্যবহার করতে পারে।
ইসমাইল মিগুয়েল

1
দোহ, আপনি ঠিক বলেছেন। সম্পর্কে পড়ুন, কিন্তু ভুলে গেছেন। (আমার কাছে নোট করুন: পরের বার শুধু নাইট 2 এর টিপটি পড়বেন না too এটিকেও উপভোগ করুন, সম্ভবত মনে রাখতে সাহায্য করুন))
মানটওয়ার্ক


1
আপনাকে ধন্যবাদ, নাইট 2 আমি গতকাল কী জগাখিচুড়ি করতে পারি তা কল্পনা করতে পারি না, কারণ আমি আরও স্টাফগুলি এর ভিতরে নিয়ে যাওয়ার চেষ্টা করেছি join(), তবে আকারটি হ্রাস করতে ব্যর্থ হয়েছি । ☹
manatwork

1
এমনকি একটি সংক্ষিপ্ত ব্যবহার করেও পেয়েছি chunk_split: ৯৯ বাইট আমিও শেষ সেমিকোলনটি সরিয়ে ফেললাম কারণ আমার বিশ্বাস এটির প্রয়োজন নেই, আপনি একটি ফাংশন লিখেছেন, সুতরাং কোডটি যা ভেরিয়েবলকে নির্ধারণ করতে চলেছে তা গণনা করা উচিত নয়।
রাত

3

এমএটিএল , 22 19 বাইট

tZ"ibpyn&Z@(TT35&Ya

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

3 লাইট সংরক্ষণের জন্য লুইস মেন্ডোকে ধন্যবাদ, সুতরাং এখন এটি @ ফ্লাওয়ারের উত্তরের সমান বাইটকাউন্ট রয়েছে তবে যাইহোক পোস্ট দেওয়া যথেষ্ট আলাদা। উচ্চ-স্তরের অ্যাগ্রিথম ওভারভিউ:

 Z"                  % Create n x m matrix of spaces
           (         % Index into this matrix:
   i                 %  The alphabet vermicelli (explicit input)
        &Z@          %  at a random locations (randperm), which are
      yn             %   length(S) numbers, ranging
t   bp               %   from 1 to n*m
            TT35&Ya  % And finally add a border

আপনি এটির Z}&Oমাধ্যমে পরিবর্তন করতে Z"পারবেন এবং এটি আপনাকে ফাইনালটি সরাতে দেয়c
লুইস মেন্ডো

@ লুইস মেন্ডো ওহ এটি অনেক সাহায্য করে! এটি ভাবতে আসুন, আমার কমপক্ষে করা উচিত ছিল 1$O
Sanchises

3

রুবি , 121 বাইট

বাটি তৈরি করে, বাটির মধ্যে থাকা সমস্ত জায়গার সূচকগুলিকে জিজ্ঞাসা করে, স্ট্রিংয়ের আকারের সমান অনেকগুলি স্থানের নমুনা দেয় এবং সেগুলিতে পূরণ করে। sample a সূচকগুলি অনুসন্ধান করা 9*m*n(যা প্রায় অবশ্যই রেঞ্জের বাইরে চলে যায়) এখনও সমস্ত শূন্যস্থান পাবে এবং এর চেয়ে 1 বাইট কম হবে r.size

->s,m,n{r=[t=?@*(n+2),*["@#{' '*n}@"]*m,t]*$/;i=-1;(0..9*m*n).select{|j|r[j]==' '}.sample(s.size).map{|j|r[j]=s[i+=1]};r}

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


3

লাল , 120 116 114 112 বাইট

-2 বাইটস কেভিন ক্রুইজসেনকে ধন্যবাদ!

func[s m n][random pad s m * n insert/dup t: copy"00"0 n
print t loop m[print rejoin[0 take/part s n 0]]print t]

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


2
-2 বাইটগুলি পরিত্রাণ পেয়ে + 1এবং to"""00"0 nপরিবর্তে ব্যবহার করে।
কেভিন ক্রুইজসেন

1
ধন্যবাদ কেভিন ক্রুজসেন! copyএকই বাইট গণনার জন্য, আমি এটি দিয়ে প্রতিস্থাপন করেছি ।
গ্যালেন ইভানভ

1
এটি সত্যিই কিছুটা পরিষ্কার দেখাচ্ছে! আপনার কাছ থেকে আমি যে উত্তরগুলি দেখেছি সেগুলি বাদে আমি রেডকে জানি না, তাই আমি কেবল কিছুটা ফিড করছি। ;) tলুপিংয়ের আগে দুটি লঘুটি print tখাটো করে বাঁচানোর জন্য লাইনটি অগ্রণী / পিছনের আইটেম হিসাবে রেখে দিবে? আমি এটি সন্দেহ করি, কিন্তু যেহেতু আমি জানি না যে কীভাবে তালিকায় আইটেম যুক্ত করা যায় আমি নিশ্চিত নই।
কেভিন ক্রুইজসেন

3

পার্ল 6 , 74 67 বাইট

-5 বাইট জো কিংকে ধন্যবাদ জানায়

{0 X~0 x$^n,|comb($n,[~] $^s.comb[pick *,^$^m*$n]X//' '),0 x$n X~0}

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

ব্যাখ্যা

{                                                                 }
                                         ^$^m*$n  # Range 0 .. M*N-1
                                  pick *,  # Shuffle
                         $^s.comb  # Split S into chars
                                 [              ]  # Pick shuffled elements
                                                 X//' '  # undef to space
                     [~]  # Join
             # Split into n-character strings
             comb($n,                                  )
            |  # Flatten
     # Add top and bottom of bowl
     0 x$^n,                                            ,0 x$n
 # Add left and right of bowl
 0 X~                                                          X~0



3

k4, 32 28 বাইট

{4{|+x,'"#"}/y#a?(a:-*/y)$x}

সম্পাদনা করুন: -4 গ্যালেন ইভানভকে ধন্যবাদ!

যেমন বলা হয়

f["hey";3 3]

ব্যাখ্যা:

                 (a:-*/y)    / neg product of y and assign to a 
                         $x  / left pad x so we have char vector the length of the inner area
               a?            / take `a` random drawings. if a is negative, draw with no duplicates/replacements
             y#              / reshape to y's dimensions
 4{        }/                / do {} 4 times 
   |+x,'"#"                  / append "#" along right-side of x then transpose (+) and reverse (|)

1
আমার মনে হয় আপনি আপনি শুধুমাত্র পরিশেষে যোগ কিছু বাইট সংরক্ষণ করতে পারবেন #/ প্রতিটি লাইন এবং TRANSPOSE শেষে 4 বার, বিপরীত ভালো কিছু
গ্যালেন ইভানভ

1
@ গ্যালেন ইভানোভ সুন্দর, আপডেট হয়েছে!
স্ক্রোল

3

জাভা (জেডিকে) , 180 178 বাইট

একক অতিরিক্ত আমদানি নয়:

(y,m,n)->{for(m*=n;y.length()<m;y+=" ");var s="";for(;m-->0;y=s)for(var c:y.split(s=""))s=Math.random()<.5?s+c:c+s;s="#".repeat(n);return(s+y+s).replaceAll(".{"+n+"}","\n#$0#");}

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

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

ফর্ম্যাট করা (ব্যাখ্যা সহ):

(y, m, n) ->                                                   // y = yummies in the soup,
{                                                              // m = height, n = width
    for (m *= n; y.length() < m; y += " ")                     // set m to m*n and
        ;                                                      // add spaces to y to fill up
    var s = "";                                                // the rest of the soup
    for (; m-- > 0; y = s)                                     // for m*n iterations, scramble y
        for (var c : y.split(s = ""))                          // with random appends
            s = Math.random() < .5 ? s + c : c + s;
    s = "#".repeat(n);                                         // create the top/bottom of the rim
    return (s + y + s).replaceAll(".{" + n + "}", "\n#$0#"); // add all sides of the rim
};

চমৎকার উত্তর! আমার কাছ থেকে +1 গল্ফের কাছে একটি ছোট জিনিস: .replaceAll("(.{"+n+"})","\n#$1#")হয়ে উঠতে পারে.replaceAll(".{"+n+"}","\n#$0#")
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন উন্নতির জন্য ধন্যবাদ :)
আভি

2

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

NθNη↖B⁺²θ⁺²η#FS«W℅KKJ‽θ‽ηPι

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

NθNη

প্রস্থ এবং উচ্চতা ইনপুট করুন।

↖B⁺²θ⁺²η#

বাটি ফ্রেম।

FS«

স্ট্রিংয়ের অক্ষরের উপর লুপ করুন।

W℅KKJ‽θ‽η

একটি খালি স্পট না পাওয়া পর্যন্ত বাটিতে একটি এলোমেলো অবস্থানে ঝাঁপুন।

Pι

কার্সারটি না সরিয়ে বর্তমান চরিত্রটি মুদ্রণ করুন।


এটা কি Move(:UpLeft)প্রয়োজনীয়? এটি ব্যতীত দুর্দান্ত কাজ করে তবে সম্ভবত আপনি এটি যুক্ত করেছেন এমন কোনও কারণে যা আমি ভাবি না?
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুজসেন এটি ছাড়া আমি কখনই নীচের সারিতে বা ডানদিকের কলামে চিঠি লিখতে সক্ষম হব না।
নীল

আহ, তাই ছিল। এটি ব্যাখ্যা করে, ধন্যবাদ!
কেভিন ক্রুইজসেন


2

এমএটিএল , 29 27 19 বাইট

pZ@iy~hw)1GeTT35&Ya

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

-8 বাইটের জন্য লুইস মেন্ডোকে ধন্যবাদ!

ব্যাখ্যা: pস্যুপ-পিক্সেলের সংখ্যা গণনা করে। তারপরে Z@স্যুপ পিক্সেলের সংখ্যার আকারের একটি এলোমেলোভাবে অনুগমন উত্পাদন করে। আমরা এটিকে সূচক হিসাবে ব্যবহার করব iy~hযার সাথে পর্যাপ্ত স্থান যুক্ত যুক্ত ইনপুট স্ট্রিং। w)দুটি অদলবদল করে এবং অন্যটির সাথে একটিকে সূচী করে। এরপরে আমরা 1Geপছন্দসই আয়তক্ষেত্রায় আকারটি পুনরায় আকার দিন এবং #এটি ব্যবহার করে প্যাড করব TT35&Ya


2
চতুর! আমার প্রয়াস ছিল 22 বাইট
সানচাইসিস

2
@ স্যাঁচাইজিস গো যেভাবেই পোস্ট করুন!
flawr

2

টি-এসকিউএল 2017, 232 বাইট

এই অনলাইন পরীক্ষা করা অন্য স্ক্রোল-সার্ভারের পুরানো সংস্করণ। আমি সংক্ষিপ্ত সংস্করণ পোস্ট।

Golfed:

DECLARE @ varchar(max)=''SELECT top 999 @+=substring(@i,number+1,1)FROM spt_values
WHERE type='P'and number<@a*@b
ORDER BY newid()WHILE-@b<1SELECT @=stuff(@+' ',@b*@a+1,0,'#
#'),@b-=1PRINT stuff(replicate('#',2+2*@a),2+@a,0,trim(@))

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

Ungolfed:

DECLARE @ varchar(max)=''

SELECT top 999 @+=substring(@i,number+1,1)
FROM spt_values
WHERE type='P'and number<@a*@b
ORDER BY newid()

WHILE-@b<1
SELECT @=stuff(@+' ',@b*@a+1,0,'#
#'),@b-=1
PRINT stuff(replicate('#',2+2*@a),2+@a,0,trim(@))

2

সি (ঝনঝন) , 169 164 162 160 বাইট

i,b;f(n,m,s)char*s;{char*a,o[b=i=-~++n*(m+=3)];for(srand(time(a=o));--i;)*a++=i%m?-~i%m<3|i<m|i>m*n?35:32:10;for(*a=0;*s;*a=*a-32?*a:*s++)a=o+rand()%b;puts(o);}

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

-2 সময়ে a = o লাগিয়ে () কল // এর জন্য (শ্রেনড (সময় (a = o)); ...

7 সিলিংক্যাট ব্যবহারের পরামর্শ সংরক্ষণ করা হয়েছে - স্ট্রিং ও প্লাসের জন্য অনেক উন্নতিতে ভেরিয়েবল এবং অটো স্টোরেজ।

ডিগল্ফ:

char*a,// pointer for set operations 
*o=malloc(b=i=(m+=3)*(n+=2));  => o[b=i=(m+=3)*-~++n]
// before allocating for the whole bowl as a char array
// increments m by 3 (2 for rims and 1 for '\n') and n by one but allocates for 2(rims)
// and assigns bowl size to i and b.
srand(time(0));// seeds rand function 
for(// loop to make empty bowl 
a=o;// using pointer as iterator
 --i ;)//  i decremented as a counter

 *a=// sets every char to..
 i%m?// if(not) over right side of bowl (m+3)
   -~i%m<3|i<m|i>m*n-m?35// if on rim '#'//-~i == (i+1)
   :32 // else ' ' 
  :10;// i%m==0

for(*a=0;// before loop terminates bowl with \0
 *s;// for every letters(exit on '\n')
 *a=*a-32?*a:*s++)
 // puts letter if bowl at a is a space and
 // go to next letter

 a=o+rand()%b; 
 // sets a to o offsetted by random

puts(o);// prints bowl 

সুপারিশ *a=--i;)*a++=i%m?-~i%m<3|i<m|i>m*n?35:32:10;for(;পরিবর্তে--i;)*a++=i%m?-~i%m<3|i<m|i>m*n?35:32:10;for(*a=0;
ceilingcat

@ সেলিংক্যাট এটি কাজ করা উচিত তবে কোনও কারণে এটি শেষ 2 টি পরীক্ষার ক্ষেত্রে ভুল আউটপুট দেয়
আজটেকো


1

জেলি , 16 বাইট

P⁶ẋaẊs⁸ṪṾ€«”~ZƊ⁺

একটি ডায়াডিক লিঙ্ক ডানদিকে অক্ষরের তালিকা, রেখাগুলির [M, N]বাম দিকে এবং অক্ষরের একটি তালিকা গ্রহণ করে, পূর্ণসংখ্যার একটি তালিকা গ্রহণ Sকরে। টিল্ড অক্ষর ব্যবহার করে,~সীমা হিসাবে ।

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

সমস্ত সম্ভাব্য আউটপুটগুলির ফলন হওয়ার অ-শূন্য সম্ভাবনা রয়েছে যেহেতু আমরা ( ) এর চরিত্রগুলির একটি তালিকা পরিবর্তন করিS যথাযথ সংখ্যক ফাঁকা জায়গাগুলির সাথে ।

কোডটি Ṿ€«”~ZƊ⁺বাইটটি সংরক্ষণ করে যা আমি কল্পনা করেছিলাম যে নিউলাইনগুলির সাথে যোগ দিতে হবে যে শূন্যের মতো পূর্ণসংখ্যা ব্যবহার করে পুরো প্রোগ্রামগুলি নিযুক্ত করতে হবে (যেমন P⁶ẋaẊs⁸Ṫ;€0ZUƊ4¡Yবা P⁶ẋaẊs⁸Ṫj@€Ø0Z$⁺Y)। আরও কিছু বাঁচানোর উপায় আছে ...?

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