সাধারণ বাক্য


16

একটি প্রোগ্রাম বা ফাংশন লিখুন যা ইনপুট স্ট্রিং এবং একটি মানক বিচ্যুতি প্রদত্ত, σগড় 0এবং মানক বিচ্যুতি সহ সাধারণ বিতরণ বক্ররেখার সাথে স্ট্রিংটিকে আউটপুট করে σ

সাধারণ বিতরণ বক্ররেখা

yপ্রতিটি অক্ষর এর তুল্য cহল:

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

কোথায় σইনপুট হিসাবে দেওয়া হয়, এবং xএর xঅক্ষ স্থানাঙ্ক c

  • স্ট্রিংয়ের কেন্দ্রে অক্ষর রয়েছে x = 0। স্ট্রিংয়ের দৈর্ঘ্য যদি সমান হয় তবে দুটি মধ্যবর্তী অক্ষরের মধ্যবর্তী দুটিকেই বেছে নেওয়া যেতে পারে।
  • অক্ষরগুলি ধাপগুলি দ্বারা পৃথক করা হয় 0.1(উদাহরণস্বরূপ, কেন্দ্রের বাম দিকের একটি চরিত্রটি x = -0.1, মাঝেরটির ডানদিকে একটি রয়েছে x = 0.1ইত্যাদি)।

স্ট্রিং মুদ্রণ

  • অক্ষরের মতো লাইনগুলি এর পদক্ষেপগুলি দ্বারা পৃথক করা হয় 0.1
  • প্রতিটি অক্ষর দিয়ে লাইনে ছাপা হয় yমান করেন যা নিজের নিকটস্থ হয় yমান (যদি মান দুই লাইন মান মধ্যে অবিকল, শুধু মত থেকে বড় মান (সঙ্গে একটি বেছে নিন roundসাধারণত আয় 1.0জন্য 0.5))।
  • উদাহরণস্বরূপ, যদি yকেন্দ্রের মান (যেমন সর্বাধিক মান) 0.78এর yস্থানাঙ্ক হয় এবং প্রথম অক্ষরের সমন্বয় হয় 0.2তবে সেখানে 9 টি লাইন থাকবে: কেন্দ্রের অক্ষরটি লাইনে মুদ্রিত হচ্ছে 0এবং প্রথম অক্ষরটি লাইনে মুদ্রিত হচ্ছে 8

ইনপুট এবং আউটপুট

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

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

σ    String

0.5  Hello, World!

     , W     
   lo   or   
  l       l  
 e         d 
H           !



0.5  This is a perfectly normal sentence

                tly                
              ec    n              
             f       o             
            r         r            
           e           m           
          p             a          
        a                l         
      s                    se      
This i                       ntence



1.5  Programming Puzzles & Code Golf is a question and answer site for programming puzzle enthusiasts and code golfers.

                                                d answer site for p                                               
                                      uestion an                   rogramming                                     
                      Code Golf is a q                                        puzzle enthusia                     
Programming Puzzles &                                                                        sts and code golfers.



0.3  .....................

          .          
         . .         

        .   .        

       .     .       


      .       .      

     .         .     
    .           .    
   .             .   
...               ...

স্কোরিং

এটি ,

                 nsw                 
                a   er               
              t                      
             s         i             
            e           n            
           t                         
         or               by         
       sh                   te       
so the                        s wins.



1
আমি মনে করি শেষ পরীক্ষার
কেসটি

@ অ্যাডিসন আমার কাছে এই কম্পিউটারে আমার রেফারেন্স বাস্তবায়ন নেই তবে মেগো কেন অন্যরকম ফলাফল পান তা আমি জানি না। তিনি তার কোড সহ যে ফলাফলটি পেয়েছেন তা খুব "অবরুদ্ধ" বলে মনে হচ্ছে। আমার অনুমানের মুহুর্তের জন্য সেই পরীক্ষার কেসটিকে উপেক্ষা করুন।
16:44 এ ফলশালী

1
@ দ্য বাইকিংভিকিং আমি এই পাসটি করব, ঠিক আছে।
39

উত্তর:


2

পাইপথন 3 স্কিপাই , 239 233 বাইট সহ

from scipy import stats,around,arange
def f(s,t):
 l=len(t);p=[];y=around(stats.norm.pdf((arange(l)-l//2)*.1,scale=s),1)*10
 for i in range(l):p+=[[' ']*(max(y)-y[i])];p[i]+=[t[i]]+[' ']*(y[i]-y[0])
 for j in zip(*p):print(*j,sep='')

একটি ফাংশন যা স্ট্যান্ডার্ড বিচ্যুতি sএবং স্ট্রিংয়ের যুক্তির মাধ্যমে ইনপুট নেয় এবং tফলাফলটি STDOUT এ মুদ্রণ করে।

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

from scipy import stats,around,arange  Import the statistics, rounding and range functions
                                       from SciPy
def f(s,t):                            Function with input standard deviation s and string
                                       t
l=len(t);p=[]                          Define the much-used length of t as l and initialise
                                       the print values list p
arange(l)                              Generate a list of integer x values in [0,l)...
...-l//2*.1                            ...and scale such that 0 is at the middle character
                                       and the x-step is 0.1
stats.norm.pdf(...,scale=s)            Generate a list containing the y values for each x
                                       value by calling the normal probability
                                       density function scaled with s...
y=around(...,1)                        ...round all values to 1 decimal place...
...*10                                 ...and multiply by 10 to give the vertical index of
                                       each character
for i in range(l):...                  For all characters in t...
p+=[[' ']*(max(y)-y[i])]               ..add the number of lines below the character as
                                       spaces...
p[i]+=[t[i]]+[' ']*(y[i]-y[0])         ...add the character and the number of lines above
                                       the character as spaces

This leaves p containing a list for each desired output line, but transposed.

for j in zip(*p):...                   For every output line in the transpose of p...
print(*j,sep='')                       ...print the output line

আইডিয়নে চেষ্টা করে দেখুন


2

রুবি: 273 254 বাইট

->n,s{j,o,g,r,l=-(n.size/2),[],0,{}
n.gsub(/./){(r[((2*Math::PI)**-0.5*10*Math.exp(-(j/1e1)**2/2/s/s)/s).round]||="")<<$&
j+=1}
r.sort.map{|y, c|o<<(l ?$/*(y-l-1):"")+(" "*g)+(c[0,(h=c.size)/2])+(" "*(n.size-g*2-h))+(c[h/2,h])
g+=h/2
l=y}
puts o.reverse}

18 বাইট সংরক্ষণের জন্য কেভিন লউকে একটি বিশাল ধন্যবাদ !


1
ল্যাম্বাদের প্যারেন দরকার নেই: ->n,s{...ঠিক আছে। একাধিক ভেরিয়েবল বরাদ্দ করার সময় আপনার বন্ধনী প্রয়োজন হয় না: o,g,r,l=[],0,{}ঠিক কাজ করে। $/জায়গায় ব্যবহার করা যেতে পারে ?\n। ক্রিয়াকলাপের অর্ডার মানে আপনাকে প্যারেন্সে আপনার সমস্ত গুণগুলি 5 লাইনে লাগাতে হবে না। putsমুদ্রণের সময় স্বয়ংক্রিয়ভাবে অ্যারেগুলি প্রকাশিত হয় এবং তাদেরকে নতুন লাইনের সাথে পৃথক করে। কিছুটা n.gsub(/./){...মার খেয়েছে n.each_char{...কারণ আপনি বের করে নিতে পারেন |c|এবং $&যেখানে কোনও উল্লেখ রয়েছে cতা রাখতে পারেন। আপনার হ্যাশ মান স্ট্রিং (দিয়ে শুরু করুন ||=""না ||=[]) এবং আপনার পরিস্থিতির পরিবর্তন করতে পারেন c[...]*""থেকেc[...]
মূল্য কালি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.