পাঠ্যের চেনাশোনাগুলি


10

কোনও কনসোলের অক্ষর ব্যবহার করে প্রদত্ত ব্যাসার্ধের বৃত্ত তৈরি করার একটি উপায় সন্ধান করুন। ফন্টের নাম এবং আকার নির্দিষ্ট করুন। এছাড়াও, দয়া করে আউটপুটটির কমপক্ষে একটি উদাহরণ সরবরাহ করুন।

উদাহরণ স্বরূপ:

ইনপুট:

3

আউটপুট:

   ******
 **      **
**        **
*          *
**        **
 **      **
   ******

... ভাল, 3 এর ব্যাসার্ধের সাথে "হাত আঁকা" "বৃত্ত" এর চেয়ে আরও ভাল কিছু দেখাচ্ছে।


বোনাস প্রশ্ন: উপবৃত্ত। :)


আকর্ষণীয়ভাবে যথেষ্ট, আমার ব্যাসার্ধ -3 বৃত্তটি এমনকি চেষ্টা না করেও আপনার সাথে হুবহু মিল রয়েছে :)
মেল্লামব্যাক


ফন্ট-অংশটি স্পষ্ট করা যেতে পারে। এখানে অনুলিপি করা হয়েছে, সমস্ত ফন্ট একই হবে; হরফ আকারের জন্য একই।
ব্যবহারকারী অজানা

উত্তর:


5

জাভাস্ক্রিপ্ট (360)

function c(r){var f=1.83;var e=2*Math.PI/(r*r*r*r*r);var s=r*2+1;var g=Array(s);for(var i=0;i<s;i++){g[i]=Array(Math.round(s*f))};for(var i=0;i<=2*Math.PI;i+=e) {var x=Math.round(f*r*Math.cos(i)+f*r);var y=Math.round(r*Math.sin(i))+r;g[y][x]=1;}for(var j=0;j<g.length;j++){for(var i=0;i<g[j].length;i++)document.write((g[j][i]==1)?'*':' ');document.writeln()}}

http://jsfiddle.net/YssSb/3/ ( fলাইন-উচ্চতা / ফন্ট-প্রস্থ অনুপাতের জন্য একটি সংশোধন ফ্যাক্টর। f = 1 এবং "বর্গক্ষেত্র" চেনাশোনা পান e বা fউপবৃত্তাকারীদের জন্য নির্বিচারে সেট করুন ))

3, 5, 15 এর জন্য আউটপুট (আকর্ষণীয়ভাবে যথেষ্ট, দুর্ঘটনাবশত ওপি হিসাবে একই আকার):

   ******    
 **      **  
**        ** 
*          * 
**        ** 
 **      **  
   ******    

     *********      
   ***       ****   
 ***            **  
**               ** 
*                 * 
*                 * 
*                 * 
**               ** 
 ***            **  
   ***       ****   
     *********      

                    ***************                      
               ******             ******                 
            ****                       *****             
          ***                              ***           
        ***                                  ***         
      ***                                      ***       
     **                                          **      
    **                                            **     
   **                                              **    
  **                                                **   
 **                                                  **  
 *                                                    *  
**                                                    ** 
*                                                      * 
*                                                      * 
*                                                      * 
*                                                      * 
*                                                      * 
**                                                    ** 
 *                                                    *  
 **                                                  **  
  **                                                **   
   **                                              **    
    **                                            **     
     **                                          **      
      ***                                      ***       
        ***                                  ***         
          ***                              ***           
            ****                       *****             
               ******             ******                 
                    ***************                      

আপনার কাছে দুর্দান্ত লাগছে এমন চেনাশোনা। ;)
মতিন উলহাক

6

স্কালায় একটি ব্রেনহ্যাম সার্কেল (35)

ব্রেনহ্যাম - অ্যালগরিদমের দুটি প্রধান পয়েন্ট রয়েছে:

  • পাপ / কোসিন ছাড়া কাজ করে।
  • আপনি কেবল ¼ * ½ বৃত্ত গণনা করুন, অন্যান্য পয়েন্টগুলি মিরর দিয়ে খুঁজে পাওয়া যায় by

এটা কিভাবে করতে হবে:

       2 1  
     DCBABCD
   জিএফই | EFG
  আইজে ওয়াই | ---- জে
 জিজে | / JG
 এফ | / | এফ
ডিই | আর / | ইডি
সি | / | সি
বি 4 | / | খ 3
এ + ------- এ
বি 4 'এক্স বি 3'
সিসি
ডিই ইডি
 মুক্তিযোদ্ধা
 জিজে জেজি
  আইজে জে
   জিএফই ইএফজি
     DCBABCD
       2'1 ' 
  • আমরা কেবল জেনিট থেকে আইতে সংখ্যাগুলি গণনা করি।
    • পয়েন্ট I 45 ° এ, x == y দ্বারা সংজ্ঞায়িত।
    • স্থল শূন্য যেখানে + আছে।
    • জেনিটের A হ'ল বিন্দু (x = 0, y = r), r = ব্যাসার্ধ।
    • একটি বদ্ধ চেনাশোনা আঁকতে আমরা ঘড়ির কাঁটা (++ x), যা ডানদিকে (x + = 1) অথবা পরবর্তী পয়েন্টে নীচে চলেছি, (y- = 1)।
    • বৃত্তের প্রতিটি বিন্দু (x, y) কেন্দ্র থেকে দূরে থাকে। পাইথাগোরাস বলেছেন, r² = x² + y² ²
    • এটি 2 টি সমাধানের সাথে বর্গমূলের সমীকরণ এবং সমীকরণের মতো গন্ধযুক্ত তবে সাবধান!
    • আমরা এ থেকে শুরু করি এবং জানতে চাই, আমরা নীচের পয়েন্টের পাশে বা ডানদিকে নীচের বিন্দুটি রঙ করি কিনা।
  • আমরা উভয় পয়েন্টের জন্য গণনা করি (x² + y²) এবং r² এর উভয় পার্থক্য তৈরি করি (যা অবশ্যই স্থির থাকে)।
    • যেহেতু পার্থক্যটি নেতিবাচক হতে পারে, তাই আমরা এগুলি থেকে অ্যাবস গ্রহণ করি।
    • তারপরে আমরা দেখতে পাই কোন পয়েন্টটি ফলাফলের (r²) কাছাকাছি, ইও ipso আরও ছোট।
    • তার উপর নির্ভর করে আমরা ডান বা নীচের প্রতিবেশী আঁকছি।
  • সুতরাং পাওয়া পয়েন্ট
    • 1 x, y আয়না হয়ে যায়
    • 2 -x, y বামে
    • 3 টি y, x তিরঙ্গে
    • 4 -y, এক্স সেখান থেকে বাম দিকে
  • এই সমস্ত পয়েন্টগুলি দক্ষিণে আবার মিরর করা হয়েছে
    • 1 'x, -y
    • 2 '-x, -y
    • 3 'y, -x
    • 4 '-y, -x সম্পন্ন হয়েছে।

এটি কোড গল্ফ নয়, তবে বিদ্যমান সমাধানগুলির শীর্ষে থাকা সমস্ত সংখ্যাই আমাকে তা ভাবতে বাধ্য করে তোলে, তাই আমি আমার সমাধানটি গল্ফ করতে ব্যর্থ সময় কাটিয়েছি। অতএব আমি শীর্ষেও একটি অকেজো নম্বর যুক্ত করেছি। এটি 11 বার পাই গোলাকার।

object BresenhamCircle extends App {
    var count = 0
    val r = args(0).toInt
    // ratio > 1 means expansion in horizontal direction
    val ratio = args(1).toInt
    val field = ((0 to 2 * r).map (i=> (0 to 2 * r * ratio).map (j=> ' ').toArray)).toArray
    def square (x: Int, y: Int): Int = x * x + y * y
    def setPoint (x: Int, y: Int) {
        field (x)(y*ratio) = "Bresenham"(count)
        field (y)(x*ratio) = "Bresenham"(count)
    }
    def points (x: Int, y: Int)
    {
        setPoint (r + x, r + y)
        setPoint (r - x, r + y)
        setPoint (r + x, r - y)
        setPoint (r - x, r - y)
    }
    def bresenwalk () {
        var x = 0;
        var y = r;
        val rxr = r * r
        points (x, y);
        do 
        {
            val (dx, dy) = { if (math.abs (rxr - square ((x+1), y)) < math.abs (rxr - square (x, (y-1))))
                (1, 0)
            else
                (0, -1) 
            }
            count = (count + 1) % "Bresenham".length
            x += dx
            y += dy
            points (x, y)
        }while ((x <= y))
    }
    bresenwalk ()
    println (field.map (_.mkString ("")).mkString ("\n"))
}

হরফ-প্রশ্নটি সাইটগুলির ওয়েবসভার এবং আপনার ব্রাউজার সেটিংস দ্বারা স্থির হয়। এখন, আমি এটি খুঁজছি যে

'Droid Sans Mono',Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif

হরফ-আকার 12px। খুব বেহুদা তথ্য, আমাকে জিজ্ঞাসা করলে, তবে কে করে?

বোনাস: উপবৃত্তাকার এবং নমুনা আউটপুট:

অনুরোধ হয়

    scala BresenhamCircle SIZE RATIO

উদাহরণ স্বরূপ

    scala BresenhamCircle 10 2
              s e r B r e s              
          h n e           e n h          
      e m a                   a m e      
    e r                           r e    
    m                               m    
  h a                               a h  
  n                                   n  
s e                                   e s
e                                       e
r                                       r
B                                       B
r                                       r
e                                       e
s e                                   e s
  n                                   n  
  h a                               a h  
    m                               m    
    e r                           r e    
      e m a                   a m e      
          h n e           e n h          
              s e r B r e s           

A ratio of 2 will print a circular shape for most fonts which happen to be about twice as tall than wide. To compensate for that, we widen by 2. 
# As smaller value than 2 only 1 is available: 

scala BresenhamCircle 6 1
    erBre    
  aes   sea  
 ah       ha 
 e         e 
es         se
r           r
B           B
r           r
es         se
 e         e 
 ah       ha 
  aes   sea  
    erBre    

# widening it has more freedom:

scala BresenhamCircle 12 5
                                             s    e    r    B    r    e    s                                             
                              a    h    n    e                             e    n    h    a                              
                         B    m                                                           m    B                         
                    e    r                                                                     r    e                    
               e    s                                                                               s    e               
          B    r                                                                                         r    B          
     a    m                                                                                                   m    a     
     h                                                                                                             h     
     n                                                                                                             n     
s    e                                                                                                             e    s
e                                                                                                                       e
r                                                                                                                       r
B                                                                                                                       B
r                                                                                                                       r
e                                                                                                                       e
s    e                                                                                                             e    s
     n                                                                                                             n     
     h                                                                                                             h     
     a    m                                                                                                   m    a     
          B    r                                                                                         r    B          
               e    s                                                                               s    e               
                    e    r                                                                     r    e                    
                         B    m                                                           m    B                         
                              a    h    n    e                             e    n    h    a                              
                                             s    e    r    B    r    e    s     

আমি এটি সহজ রাখতে ইন্টের জন্য অনুপাতের প্যারামিটারকে সীমাবদ্ধ করেছি, তবে এটি সহজেই ফ্লোটগুলি অনুমোদনের জন্য প্রশস্ত করা যেতে পারে।


আপনার অক্ষর গণনা (অপরিশোধিত নিউলাইনগুলি ব্যতীত) আসলে 34.557519189487725623089077216075 :) বিটিডাব্লু: খুব সুন্দর সমাধান, +1
ক্রিশ্চিয়ান লুপাস্কু

4

পাইথন (172)

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

y=input();t=[y*[' ']for x in range(y)];x=0;y-=1;p=3-2*y
while x<=y:t[x][y]=t[y][x]='*';n,y=((x-y+1,y-1),(x,y))[p<0];p+=4*n+6;x+=1
for s in t[::-1]+t:print"".join(s[::-1]+s)

খুব সুন্দর নয়, তবে ভাল, আমি ভেবেছিলাম এটি একটি শট দেব।

  ****
 *    *
*      *
*      *
*      *
*      *
 *    *
  ****

          ********
       ***        ***
      *              *
     *                *
    *                  *
   *                    *
  *                      *
 *                        *
 *                        *
 *                        *
*                          *
*                          *
*                          *
*                          *
*                          *
*                          *
*                          *
*                          *
 *                        *
 *                        *
 *                        *
  *                      *
   *                    *
    *                  *
     *                *
      *              *
       ***        ***
          ********

সম্পাদনা : টাইপো, প্রতিস্থাপিত উপরন্তু সঙ্গে বিভাজন


3

পার্ল (92)

আমি "বোনাস প্রশ্ন" এর জন্য গিয়েছিলাম এবং এলোপেসগুলি আঁকার জন্য চরিত্রের অনুপাতটি কাজে লাগিয়েছি :)

($w)=@ARGV;for$x(-$w..$w){$p.=abs($x*$x+$_*$_-$w*$w)<$w?'*':$"for(-$w..$w);$p.=$/;}print $p;

উদাহরণ ফলাফল:

>perl circle.pl 3
  ***
 *   *
*     *
*     *
*     *
 *   *
  ***

>perl circle.pl 5
   *****
  *     *
 *       *
*         *
*         *
*         *
*         *
*         *
 *       *
  *     *
   *****

>perl circle.pl 8
      *****
    **     **
   *         *
  *           *
 *             *
 *             *
*               *
*               *
*               *
*               *
*               *
 *             *
 *             *
  *           *
   *         *
    **     **
      *****

+1 তৃতীয় স্থান, তবে আকারগুলি অন্যান্য উত্তরের মতো দেখতে সুন্দর দেখাচ্ছে না। (আমি অবশ্যই যা প্রোগ্রাম করতে পারছিলাম তার চেয়ে এখনও ভাল :)) :))
মতিন উলহাক

3

হাস্কেল ( 112 109)

g n=map(zipWith(?)f.repeat)f where x?y|abs(x^2+y^2-n^2)<n='*'|0<1=' ';f=[-n..n]
main=interact$unlines.g.read

এটি সমস্ত পয়েন্টের জন্য x² + y² - r² <n কিনা তা যাচাই করে কাজ করে। যে সমস্ত পয়েন্টগুলির জন্য এটি সত্য, তারা তারা, অন্য সমস্ত শূন্য।

উদাহরণ:

$ প্রতিধ্বনি 3 | রানহসকেল সার্ক.হস
  ***  
 * * 
* *
* *
* *
 * * 
  ***  
$ প্রতিধ্বনি 10 | রানহসকেল সার্ক.হস
       *******       
     ** **     
    * *    
   * *   
  * *  
 * * 
 * * 
* *
* *
* *
* *
* *
* *
* *
 * * 
 * * 
  * *  
   * *   
    * *    
     ** **     
       *******       

বড় উদাহরণের জন্য এখানে দেখুন: http://www.ideone.com/t042u


3

পাইথন, 180 টি অক্ষর

ফন্টটি বর্গক্ষেত্রযুক্ত হলে এই কোডটি বৃত্ত তৈরি করে। আপনি যদি আপনার ফন্টের উচ্চতা / প্রস্থ অনুপাত জানেন তবে নামমাত্র উপবৃত্তগুলি উত্পন্ন করতে সংশোধন করা বেশ সহজ।

import math
r=input()
d=2*r+1
c=[' '*d]*d
for a in xrange(9*d):f=math.pi*a/r/9; x=int(r+r*math.sin(f)+.5);y=int(r+r*math.cos(f)+.5);c[y]=c[y][:x]+'*'+c[y][x+1:]
for s in c:print s

উদাহরণ:

4:
  *****  
 **   ** 
**     **
*       *
*       *
*       *
**     **
 **   ** 
  *****  

7:
     *****     
   **     **   
  **       **  
 **         ** 
**           **
*             *
*             *
*             *
*             *
*             *
**           **
 **         ** 
  **       **  
   **     **   
     *****     

আপনি একটি নমুনা পোস্ট করতে পারেন?
মতিন উলহাক

+1 তবে ২ য় স্থান ... যদিও এটি কাছে ছিল।
মতিন উলহাক

0

সি, 127 বাইট, ফন্টের নাম: আরিয়াল সুপার বোল্ড

#include<math.h>
main(){int r=10,c=r*2+1,q=c*c,d;for(;q--;)d=hypot(r-q%c,r-q/c),printf("%c%s",d>r-4&&d<=r?42:32,q%c?"":"\n");}

ফলাফল:

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