মাধ্যাকর্ষণ বাছাই করুন


29

চ্যালেঞ্জ

পূর্ণসংখ্যার একটি তালিকা দেওয়া হয়েছে, কীভাবে মাধ্যাকর্ষণ বাছাই করা হবে তা দেখান।

মাধ্যাকর্ষণ বাছাই

মাধ্যাকর্ষণ সাজানোর ক্ষেত্রে, নম্বরগুলি নক্ষত্রের সারি হিসাবে কল্পনা করুন। তারপরে, সমস্ত কিছু পড়ে যায় এবং নতুন সারিগুলি স্পষ্টতই বাছাই করা হবে। আসুন একটি উদাহরণ তাকান:

[2, 7, 4, 6]:

**
*******
****
******
-------
**
****
*******
******
-------
**      | 2
****    | 4
******  | 6
******* | 7

লক্ষ্য করুন যে এটি বেশ সমান্তরালভাবে বুদ্বুদ সাজান।

ঠিক চশমা

প্রতিটি পুনরাবৃত্তির উপরের সারি থেকে শুরু করে, প্রতিটি তীরটি সারি থেকে নিন যেটির নীচে একটি নক্ষত্র নেই, এবং এটি একটি সারিতে নীচে সরান। তালিকাটি বাছাই না করা অবধি এটি চালিয়ে যান।

ইনপুট

ইনপুট হবে কঠোর ইতিবাচক পূর্ণসংখ্যার একটি তালিকা।

আউটপুট

আউটপুট জন্য, আপনি প্রতিটি পদক্ষেপ আউটপুট করা আবশ্যক। আপনি যে কোনও দুটি অ-শ্বেতস্পেস মুদ্রণযোগ্য এএসসিআইআই অক্ষর চয়ন করতে পারেন, একটি "অ্যাসিটার্কস" এবং একটি পৃথক "ড্যাশ" হতে পারে। তারকাচিহ্নগুলির সারিগুলি কোনও প্রকারের আদর্শ নিউলাইন দিয়ে পৃথক করা আবশ্যক (যেমন \nবা\r\f ) । ড্যাশগুলির সারিটি অবশ্যই সর্বনিম্ন প্রস্থের প্রস্থের প্রস্থ হতে হবে (অন্যথায় আপনার নক্ষত্রগুলি আরও অনেক নিচে নেমে যাচ্ছে!)। একেবারে নীচে ড্যাশের একটি সারি alচ্ছিক। শেষে একটি পেছনের নিউলাইন অনুমতি দেওয়া হয়। প্রতিটি লাইনে ট্রেলিং স্পেসের অনুমতি রয়েছে।

পরীক্ষার মামলা

ইনপুট তালিকা হিসাবে উপস্থাপন করা হবে, তারপরে আউটপুট অবিলম্বে নীচে তালিকাভুক্ত করা হবে। পরীক্ষার কেসগুলি একটি ডাবল নিউলাইন দ্বারা পৃথক করা হয়।

[4, 3, 2, 1]
****
***
**
*
----
***
** *
* *
**
----
**
* *
** *
***
----
*
**
***
****

[6, 4, 2, 5, 3, 1]
******
****
**
*****
***
*
------
****
**  **
****
***
*  **
***
------
**
****
*** **
*  *
***
*****
------
**
***
*  *
*** **
****
*****
------
**
*
***
****
******
*****
------
*
**
***
****
*****
******

[8, 4, 2, 1]
********
****
**
*
--------
****
**  ****
* **
**
--------
**
* **
**  ****
****
--------
*
**
****
********

দয়া করে আমার পরীক্ষার কেসগুলি ভুল হলে সংশোধন করতে দ্বিধা বোধ করবেন, আমি এগুলি হাতে হাতে তৈরি করেছি :)

দ্রষ্টব্য: সাজানো তালিকার শেষে আউটপুট করবেন না। :)

স্কোরিং

আপনার সমস্ত প্রোগ্রাম একে অপরের উপরে লেখা হবে। আপনি চাইবেন না যে আপনার প্রোগ্রামের টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো পড়েছে, তাই আপনার সংক্ষিপ্ততম কোডটি নিশ্চিত হয়ে নিন!


1
আমরা কি ছাপার ছাপ এড়াতে পারি? এবং অস্ট্রিস্কগুলি মুদ্রণের পরিবর্তে আমরা 0 এবং 1 এর ম্যাট্রিক্স মুদ্রণ করতে পারি? আমার মনে হয় প্রিন্টিংয়ের ফর্ম্যাট চ্যালেঞ্জের কোনও কিছুই যুক্ত করে না।
rahnema1

@ rahnema1 1. আপনি ড্যাশগুলি কিছু অন্যান্য অ-সাদা
অংশের

আমি বিশ্বাস করি যে আপনি আপনার সর্বশেষ পরীক্ষার মামলার দ্বিতীয় পুনরাবৃত্তিতে একটি
নক্ষত্রটি মিস করছেন

1
আমরা যদি প্রোগ্রামটির টুকরো টুকরো টুকরো টুকরো টানা না পড়ার জন্য চাই, তবে এর অর্থ কি আমাদের সংক্ষিপ্ত কোডের শীর্ষে দীর্ঘতর লাইন কোড থাকতে পারে না? : o
মান কালি

1
আরে এভাবেই আমি আমার বই বাছাই!
রবার্ট ফ্রেজার 15

উত্তর:



4

পার্ল 5 , 118 বাইট

115 বাইট কোড + -plaপতাকা।

\@X[$_]for@F;s%\d+ ?%Y x$&.$"x($#X-$&).$/%ge;while(/Y.{$#X} /s){print$_,_ x$#X;1while s/Y(.{$#X}) /X$1b/s;y/bX/Y /}

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

মনে হচ্ছে এটি বেশ দীর্ঘ। তবে আবার, রেজেক্সের সাথে মাল্টলাইন স্ট্রিংগুলির সাথে ডিল করা সাধারণত সহজ নয়।

আমি এর Yপরিবর্তে *এবং _পরিবর্তে ব্যবহার করছি -


3

অক্টাভা, 104 বাইট

b=(1:max(L=input("")))<=L;do;disp(" *-"([b;max(b)+1]+1))until b==(b=imerode(b,k=[1;1])|imdilate(b,k)~=b)

* চিত্র প্যাকেজ প্রয়োজন।

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

ব্যাখ্যা:

input = [8 ;4 ;2 ;1]

L = input('');                    %input list
b=(1:max(L))<=L;                  % generate matrix of 0s and 1s as indexes of asterisks 

b =

  1  1  1  1  1  1  1  1
  1  1  1  1  0  0  0  0
  1  1  0  0  0  0  0  0
  1  0  0  0  0  0  0  0
do;
    disp(' *-'([b;max(b)+1]+1))  %display asterisks and dashes

    E = imerode(b,k=[1;1]);      %morphological erosion
    E =

      1  1  1  1  0  0  0  0
      1  1  0  0  0  0  0  0
      1  0  0  0  0  0  0  0
      1  0  0  0  0  0  0  0

    D = imdilate(b,k);           %morphological dilation
    D =

      1  1  1  1  1  1  1  1
      1  1  1  1  1  1  1  1
      1  1  1  1  0  0  0  0
      1  1  0  0  0  0  0  0

    b_temp = E | (D~=b)          %intermediate result
    b_temp =

      1  1  1  1  0  0  0  0
      1  1  0  0  1  1  1  1
      1  0  1  1  0  0  0  0
      1  1  0  0  0  0  0  0

until b==(b=b_temp)              %loop until no change

দুঃখের বিষয়, সম্ভবত ফ্রেম বাই ফ্রেম অ্যানিমেশনের জন্য কোনও বোনাস পয়েন্ট নেই: |
কোয়েটজলকোটল

এখন - আমার ক্ষমা, মন্তব্য প্রত্যাহার
টেসেল্ল্যাটিংহেকলারের

3

পাইথন, 203 199 বাইট

def k(x):
 m,j=max(x),''.join;d=[*map(lambda i:('*'*i).ljust(m),x)];f=sorted(d);print(*d,sep='\n')
 while d!=f:d=[*map(j,zip(*[x.replace('* ',' *')for x in map(j,zip(*d))]))];print('-'*m,*d,sep='\n')

1
ড্যাশগুলি কোথায়?
লিকি নুন

@ লেকিউন স্থির করেছেন
উরিল

আপনার বর্তমান পাইথন 3 এর পরিবর্তে পাইথন 2 ব্যবহার করার কথা বিবেচনা করুন, যেখানে mapঅবিলম্বে একটি অ্যারে প্রদান করে যাতে আপনার এটি ছিটানোর প্রয়োজন হয় না don't আপনি '\n'.joinঅভাব পূরণ করতে সহায়তা করতে আপনি একটি পরিবর্তনশীল বরাদ্দ করতে চাই sep='\n', যদিও, তবে এটি সম্ভবত এখনও সেভাবে খাটো হয়।
মান কালি

আপনি কীভাবে জিপগুলি ব্যবহার করবেন? unpacking অভাব অনেক বাইট খরচ হতে পারে
ঊরীয়েল

পাইথন 2 আপনাকে একটি সূক্ষ্ম ফাংশনে আনপ্যাক করতে দেয়; আমি কেবল শুনেছি একটি অ্যারেতে আনপ্যাক করাতে কখনও কখনও সমস্যা থাকে। কেবলমাত্র আমার প্রস্তাবিত পরিবর্তনগুলি দিয়ে পাইথন 2 কোডটি 194 বাইট হয়, অনলাইনে চেষ্টা করে দেখুন
মান কালি

2

জাপট , 69 62 বাইট

-শ্যাগিজিকে ধন্যবাদ -7 বাইটস


®ç'x +SpZnUrwÃpQpUrw¹·
V
l o ®V=z d" x""x " z3ÃuW
X¯XbXgJ)Ä ·

জাপট শিখতে এবং আরও জটিল চ্যালেঞ্জটি চেষ্টা করতে চেয়েছিল। তারকাচিহ্ন এবং ড্যাশগুলির পরিবর্তে xএস এবং "এস দিয়ে আউটপুট ; সংখ্যার অ্যারে হিসাবে ইনপুট নেয়। অনুমান করা বাছাই করা input.lengthপদক্ষেপের মধ্যে সম্পূর্ণ হবে ; যদি কখনও না হয় তবে আমাকে সংশোধন করুন।

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

ব্যাখ্যা

                              // implicit: U = input array
 ®   ç'x +SpZnUrwà pQpUrw¹ ·  // implicit: V = this line
UmZ{Zç'x +SpZnUrw} pQpUrw) qR // ungolfed
UmZ{             }            // U mapped by the function:
    Zç'x                      //   "x" times this item
         +SpZnUrw             //   plus " " times the max of the input array (Urw) minus this value (Z)
                   pQpUrw)    // push " (Q) times the max
                           qR // join with newlines

V                             // implicit: W = this line

 l o ®   V=z d" x""x " z3Ã uW // implicit: X = this line
Ul o mZ{ZV=z d" x""x " z3} uW // ungolfed
Ul o                          // the array of the range [0, U.length)
     mZ{Z                }    // mapped by the no-arg function:
         V=z                  //   set V to itself rotated 90deg
             d" x""x "        //   replace all " x" with "x " to "fall"
                       z3     // rotate back to normal
                           uW // add  W(the original) to the start

X¯XbXgJ)Ä ·                   // implicit: return this line
Xs0,XbXgJ)+1 qR               // ungolfed
Xs0,                          // get the substring of X from 0 to...
    XbXgJ)+1                  // the first index of the last item, plus one
             qR               // join with newlines

1
আপনার জন্য কয়েকটি দ্রুত সঞ্চয় । আমি নিশ্চিত আরও কিছু আছে তবে আমি বেশ ক্লান্ত।
শেগি

@ শেগি অনেক ধন্যবাদ! স্টেটমেন্টটি যে লাইন চলছে তাতে লাইন অনুযায়ী ভেরিয়েবল সেট করার এটি একটি দুর্দান্ত উদাহরণ। যদি তা জাপ্ট টিপস পোস্টে না হয় তবে তা হওয়া উচিত।
জাস্টিন মেরিনার

সম্পন্ন । উন্নতির কোনও ঘর দেখলে একটি মন্তব্য করুন।
শেগি

@ শেগি দেখতে ভাল লাগছে এবং আপনার সোনার ব্যাজটিতে অভিনন্দন!
জাস্টিন মেরিনার

2

আর , 210 205 বাইট

l=scan();w=max(l);h=sum(l|1);a=1:h;p=h+1;m=matrix(' ',w,p);m[,p]='+';for(x in a)m[l[x]:1,x]='*';f=function()write(m,'',w,sep='');f();while(any(i<-m[,a]>m[,a+1])){s=which(i);m[,a][s]=' ';m[,a][s+w]='*';f()}

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

স্টিডিন থেকে তালিকায় পড়ে; +পরিবর্তে অক্ষর দ্বারা পৃথক -। এটি অনেক দীর্ঘ সময় যা আমি ভেবেছিলাম এটি হবে। তুলনাটি যা '*'>'+'মূল্যায়ন করে FALSEতা '*'>' 'হ'ল সুবিধাটি গ্রহণ করে তবে TRUEকমপক্ষে টিআইও-তে (আমার মেশিনে আমি ব্যবহার করেছি '='যা কিছুটা ভাল দেখায়)।

আসল উত্তর লেখার পর থেকে আমি যে সমস্ত কৌশল শিখেছি সেগুলি থেকে 5 বাইট গল্ফে পরিচালিত।

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



1

জাভাস্ক্রিপ্ট, 274 বাইট

a=>(r="",m=Math.max(...a),b=a.map(n=>Array(m).fill(0).map((_,i)=>i<n)),(k=_=>(b.map(c=>r+=c.map(v=>v?"*":" ").join``.trim()+`
`),r+="-".repeat(m)+`
`,n=0,b.map((r,i)=>(s=b[i+1])&&r.map((c,j)=>s[j]||(n|=s[j]=-(c>0),c>0&&(r[j]=0)))),b=b.map(c=>c.map(n=>n<0?1:n)),n&&k()))(),r)

কোড স্নিপেট উদাহরণ:

f =

a=>(r="",m=Math.max(...a),b=a.map(n=>Array(m).fill(0).map((_,i)=>i<n)),(k=_=>(b.map(c=>r+=c.map(v=>v?"*":" ").join``.trim()+`
`),r+="-".repeat(m)+`
`,n=0,b.map((r,i)=>(s=b[i+1])&&r.map((c,j)=>s[j]||(n|=s[j]=-(c>0),c>0&&(r[j]=0)))),b=b.map(c=>c.map(n=>n<0?1:n)),n&&k()))(),r)

o.innerText = f([6,4,2,5,3,1])
<pre id=o>

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