এএসসিআইআই আর্ট তীরন্দাজ তীর


16

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা ইতিবাচক পূর্ণসংখ্যার সাথে নেয় এবং ইনপুট অনুসারে স্কেল করা তীরন্দাজ তীরটির ASCII শিল্প চিত্র অঙ্কন করে বা প্রিন্ট করে দেয় returns

ইনপুট 1হলে আউটপুট হয়

  /\
 /  \
 \__/
  ||
  ||
  ||
  ||
  ||
  ||
  ||
  ||
 /||\
/ || \
/ || \
//  \\
/    \

ইনপুট 2হলে আউটপুট হয়

     /\
    /  \
   /    \
  /      \
  \      /
   \____/
    |  |
    |  |
    |  |
    |  |
    |  |
    |  |
    |  |
    |  |
    |  |
    |  |
    |  |
    |  |
    |  |
    |  |
    |  |
    |  |
   /|  |\
  / |  | \
 /  |  |  \
/   |  |   \
/   |  |   \
/   |__|   \
/  /    \  \
/ /      \ \
//        \\
/          \

ইনপুট 3হলে আউটপুট হয়

        /\
       /  \
      /    \
     /      \
    /        \
   /          \
   \          /
    \        /
     \______/
      |    |
      |    |
      |    |
      |    |
      |    |
      |    |
      |    |
      |    |
      |    |
      |    |
      |    |
      |    |
      |    |
      |    |
      |    |
      |    |
      |    |
      |    |
      |    |
      |    |
      |    |
      |    |
      |    |
      |    |
     /|    |\
    / |    | \
   /  |    |  \
  /   |    |   \
 /    |    |    \
/     |    |     \
/     |    |     \
/     |    |     \
/     |____|     \
/    /      \    \
/   /        \   \
/  /          \  \
/ /            \ \
//              \\
/                \

ইনপুট 4হলে আউটপুট হয়

           /\
          /  \
         /    \
        /      \
       /        \
      /          \
     /            \
    /              \
    \              /
     \            /
      \          /
       \________/
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
        |      |
       /|      |\
      / |      | \
     /  |      |  \
    /   |      |   \
   /    |      |    \
  /     |      |     \
 /      |      |      \
/       |      |       \
/       |      |       \
/       |      |       \
/       |      |       \
/       |______|       \
/      /        \      \
/     /          \     \
/    /            \    \
/   /              \   \
/  /                \  \
/ /                  \ \
//                    \\
/                      \

বৃহত্তর ইনপুট সংখ্যার জন্য প্যাটার্নটি অবিরত রয়েছে - তীরটি সেই অনুযায়ী ছোট করে দেওয়া হবে।

লক্ষ্য করুন যে কোনও ইনপুট জন্য এন:

  • তীরচিহ্নটি হ'ল একটি পেন্টাগন যা 2 × N বেসের নীচে থাকে, বেসটি থেকে প্রসারিত প্রতিটি পক্ষের উপর N স্ল্যাশ করে এবং দুটি দিকের দিকে 2 × N স্ল্যাশ করে যা তীরের ডগা গঠন করে।
  • শ্যাফ্ট (ফ্লেচিংয়ের অংশটি সহ) 2 ical (এন -1) স্পেস দ্বারা পৃথক দুটি উল্লম্ব বারগুলির 11 × N লাইন নিয়ে গঠিত। একেবারে শেষ লাইনে ফাঁকের পরিবর্তে আন্ডারস্কোর রয়েছে।
  • ফ্লেচিং শ্যাফটের নিম্ন 3 × এন লাইনকে ঘিরে রয়েছে। 2 × N স্ল্যাশের দুটি লাইন শ্যাফটের উভয় দিক থেকে তির্যকভাবে নীচের দিকে প্রসারিত হয় এবং স্ল্যাশের উল্লম্ব কলামগুলির সাথে যুক্ত হয়।
  • সম্পূর্ণ তীরটি 16 × N লাইন উচ্চ এবং 6 × N অক্ষর প্রস্থ।

আপনার আউটপুটে তীর টিপের পূর্বে খালি লাইনগুলি থাকা উচিত এবং কেবলমাত্র একটি ট্রেলিং করা নতুন লাইন।

আউটপুট লাইনের কোনওটিতেই অপ্রয়োজনীয় নেতৃস্থানীয় স্পেস থাকতে হবে না (ফলকির বাম প্রান্তটি যতটা সম্ভব বাম দিকে হওয়া উচিত) তবে যে কোনও লাইনটিতে বহু সংখ্যক পিছনের স্থান থাকতে পারে।

বাইটস মধ্যে সংক্ষিপ্ততম জমা জয়।


সর্বাধিক ইনপুট আকার আছে?
ডাউনগোট

1
@ভিহান নং যদিও আপনি সংখ্যাটি ধরে নিতে পারেন তবে আপনার স্মৃতি / পূর্ণসংখ্যার উপচে পড়বে না।
ক্যালভিনের শখ

আমাদের পাঠ্য মোড়ানো সম্পর্কে চিন্তা করা উচিত? এন> = 14 এর জন্য, আমার টার্মিনালের ডিফল্ট উইন্ডো আকারটি আমার তীরটিকে তীরের মতো দেখাচ্ছে না।
কেভিনস 5

@ কেভিনস ৫ নং চিন্তা করবেন না Don't
ক্যালভিনের

উত্তর:


2

পাইথ, 149 147 146 144 146

2015-9-23 সম্পাদনা করুন: একটি বাগ ছিল, 2 বাইটের জন্য স্থির। খাটো করা সম্ভব হতে পারে, আমার এখন আর সময় নেই।

পাইথ উত্তরের জন্য এখনও অনেক দীর্ঘ বলে মনে হচ্ছে।

M*tGHK*11Q=Y*3QA" /"jbC+R*yQG+_Js[ms[*dGHgt-YdG\_gKG\_)tQs[gQGHgyQG\_*K\|)ms[*+QdGH*y-tQdG\\*+*8QydGHgYGH)Qms[*++KQdGHgYGH)tQ+g*13QG*hYH)mXd"\/")J

ব্যাখ্যা (প্রায় আপ টু ডেট)

আমি মূলত তীরটির স্থানান্তর উত্পন্ন করি, কারণ এর লাইন ফর্ম্যাটটি অনেক সহজ। এছাড়াও, আমি কেবলমাত্র একটি অর্ধ জেনারেট করি এবং তারপরে এটিকে বিপরীত করে প্রচুর বাইট সংরক্ষণ করি।

M*tGH                                                       g(a,b) = (a - 1) * b
A" /"                                                       G = " ", H = "/"
              ms[...)tQ                                     N-1 lines inside body
                       s[...)                               1 line of edge of body
                             ms[...)Q                       N lines of tip + fin
                                     m...Q                  N-1 lines of fin
                                          +...              1 line of edge of fin
            s[                                )             flatten the maps to it
           J                                                save to J
          _                                                 reverse
                                                       J    another copy (unreversed)
                                               mXd"\/")     swap "\" and "/" on each line
         +                                                  add to other half
   +R*yQG                                                   add 2*N spaces to each line
  C                                                         transpose
jb                                                          join by newline

m                             tQ       map d over 0...N-2
 s[                          )         concatenate
   *dG                                 d spaces
      H                                "/"
          =Y*3Q                        save 3*N to Y
       gt-     dG                      3*N-d-2 spaces
                 \_                    "_"
                    K*11Q              save 11*N to K
                   g     G             11*N-1 spaces
                          \_           "_"

s[              )                      concatenate
  gQG                                  N-1 spaces
     H                                 "/"
      gyQG                             2*N-1 spaces
          \_                           "_"
            *K\|                       11*N pipes

m                               Q      map d over 0...N-1
 s[                            )       concatenate
   *+QdG                               N+d spaces
        H                              "/"
         *y-tQdG                       2*(N-d-1) spaces
                \\                     "\"
                  *+*8QydG             8*N+2*d spaces
                          H            "/"
                           gYG         3*N-1 spaces
                              H        "/"

m               tQ                     map d over 0...N-2
 +++                                   concatenate
    *++KQdG                            12*N+d spaces
           H                           "/"
            gYG                        3*N-1 spaces
               H                       "/"

+                                      concatenate
 g*13QG                                13*N-1 spaces
       *hYH                            3*N+1 slashes

3

পার্ল, 298 বাইট

for$y(0..($w=<>)*16-1){$r=$w*3;for$x(0..$w*6-1){$z=$x<$r?$x:$w*6-$x-1,$_.=$z==$r-$y-1&&$y<$w*2||!$z&&$y>=$w*13-1||($z==$w*16-1-$y||$z==$w*13-1-$y)&&$z<$w*2?$x<$r?'/':'\\':$z==$y-$w&&$y>=$w*2&&$y<$r?$x<$r?'\\':'/':$z==$r-$w&&$y>=$r&&$y<$w*14?'|':$z>=$r-$w&&($y==$r-1||$y==$w*14-1)?_:$"}$_.=$/}print

মাল্টি লাইন:

for$y(0..($w=<>)*16-1){$r=$w*3;  # read input and loop over rows
    for$x(0..$w*6-1){  # loop over columns

        # flip x on right side of arrow:
        $z=$x<$r?$x:$w*6-$x-1;

        # slashes on fletching and tip of arrowhead:
        $_.=$z==$r-$y-1&&$y<$w*2||!$z&&$y>=$w*13-1||($z==$w*16-1-$y||$z==$w*13-1-$y)&&$z<$w*2?$x<$r?'/':'\\':

        # slashes on underside of arrowhead:
        $z==$y-$w&&$y>=$w*2&&$y<$r?$x<$r?'\\':'/':

        # vertical bars on side of shaft:
        $z==$r-$w&&$y>=$r&&$y<$w*14?'|':

        # underscores on base of arrowhead and shaft:
        $z>=$r-$w&&($y==$r-1||$y==$w*14-1)?_:$"
   }
   $_.=$/  # add newline at end of each row
}
print  # print out string

আউটপুট:

2
     /\     
    /  \    
   /    \   
  /      \  
  \      /  
   \____/   
    |  |    
    |  |    
    |  |    
    |  |    
    |  |    
    |  |    
    |  |    
    |  |    
    |  |    
    |  |    
    |  |    
    |  |    
    |  |    
    |  |    
    |  |    
    |  |    
   /|  |\   
  / |  | \  
 /  |  |  \ 
/   |  |   \
/   |  |   \
/   |__|   \
/  /    \  \
/ /      \ \
//        \\
/          \

আমাকে 5 (এবং গণনা) বাইট সংরক্ষণ করতে সাহায্য করার জন্য ডম হেস্টিংসকে ধন্যবাদ


1
আরে সামগাক, আপনি $w=<>প্রথমবার এটির মতো ব্যবহারের আগে ঘোষণাকে সরিয়ে আপনি কয়েকটি বাইট সংরক্ষণ করতে পারেন for$y(0..($w=<>)*16-1){এবং প্রচুর বন্ধনী সরিয়ে ফেলতে পারেন (কিছু আউটপুট পরিবর্তন করে তবে আমি মনে করি আপনি যেভাবেই চলছেন!)! এছাড়াও আপনার '_'খালি আক্ষরিক হতে পারে _। আশা করি এইটি কাজ করবে!
ডম হেস্টিংস

2

জুলিয়া, 452 বাইট

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

function R(c,x,y,e,f,n)
for i=1:n
a[y,x]=c
x+=e
y+=f
end
end
function f(n::Int)
global a=fill(' ',16n,6n)
F='/'
B='\\'
q=3n+1
r=2n+1
R(F,3n,1,-1,1,2n)
R(B,q,1,1,1,2n)
R(B,n+1,r,1,1,n)
R(F,5n,r,-1,1,n)
R('_',r,3n,1,0,2n)
R('|',r,q,0,1,11n)
R('|',4n,q,0,1,11n)
R('_',r+1,14n,1,0,r-3)
R(F,2n,11n+1,-1,1,2n)
R(B,4n+1,11n+1,1,1,2n)
R(F,1,13n,0,1,3n)
R(B,6n,13n,0,1,3n)
R(F,2n,14n+1,-1,1,2n)
R(B,4n+1,14n+1,1,1,2n)
for b = 1:16n
println(join(a[b,:]))
end
end

চেষ্টা কর:

julia> f(1)
  /\                          
 /  \                         
 \__/                         
  ||                          
  ||                          
  ||                          
  ||                          
  ||                          
  ||                          
  ||                          
  ||                          
 /||\                         
/ || \                        
/ || \                        
//  \\                        
/    \

ungolfed:

# Repeat a character through array a from (x,y) -> (x+n*dx,y+n*dy)
function R(a::Array{Char,2},c::Char, x::Int, y::Int, dx::Int, dy::Int, n::Int)
    for i = 1:n
        a[y,x] = c
        x += dx
        y += dy
    end
end

function arrow(n::Int)
    a = fill(' ',16n,6n)
    # upper left of head
    R(a,'/',3n,1,-1,1,2n)
    # upper right of head
    R(a,'\\',3n+1,1,1,1,2n)
    # lower left of head
    R(a,'\\',n+1,2n+1,1,1,n)
    # lower right of head
    R(a,'/',5n,2n+1,-1,1,n)
    # bottom of head
    R(a,'_',2n+1,3n,1,0,2n)
    # shaft
    R(a,'|',2n+1,3n+1,0,1,11n)
    R(a,'|',4n,3n+1,0,1,11n)
    R(a,'_',2n+2,14n,1,0,2n-2)
    # upper fletching edges
    R(a,'/',2n,11n + 1,-1,1,2n)
    R(a,'\\',4n+1,11n+1,1,1,2n)
    # fletching sides
    R(a,'/',1,13n,0,1,3n)
    R(a,'\\',6n,13n,0,1,3n)
    # lower fletching edges
    R(a,'/',2n,14n + 1,-1,1,2n)
    R(a,'\\',4n+1,14n+1,1,1,2n)
    for r = 1:16n
        println(join(a[r,:]))
    end
end

2

রুবি, 233

->n{(16*n).times{|i|j=i/n
m=n*3
e=' '*6*n
i%(11*n)==m-1&&e[2*n..4*n-1]=?_*2*n
j%14>2&&e[m+n-1]=e[m-n]=?|
k=(i-n)%m
k<n||j<11||(e[m+k]=?\\;e[m-1-k]=?/)
j>12&&(e[-1]=?\\;e[0]=?/)
j<3&&(e[n+l=(i-n*2)%(n*4)]=?\\;e[5*n-l-1]=?/)  
puts e}}

আমি বিশেষভাবে আমার কাছে \একটি একক অভিব্যক্তি দিয়ে মাথায় আঁকতে ব্যবহৃত wraparound কৌশল দ্বারা সন্তুষ্ট (এবং একইভাবে জন্য /)

পরীক্ষা প্রোগ্রামে অসম্পূর্ণ

f=->n{
  #loop line by line, 0..16*n-1
  (16*n).times{|i|

  #convenience variables
  j=i/n
  m=n*3

  #setup a string of spaces
  e=' '*6*n

  #draw the ___ at top and bottom of shaft
  i%(11*n)==m-1&&e[2*n..4*n-1]=?_*2*n
  #draw the |, overwriting the _ in the bottom corners
  j%14>2&&e[m+n-1]=e[m-n]=?|

  #draw the diagonal fletching
  k=(i-n)%m
  k<n||j<11||(e[m+k]=?\\;e[m-1-k]=?/)

  #draw the ends of the fletching (note index -1, meaning last character in string)
  j>12&&(e[-1]=?\\;e[0]=?/)

  #draw the arrow head, wrapping round with %(n*4)
  j<3&&(e[n+l=(i-n*2)%(n*4)]=?\\;e[5*n-l-1]=?/)

  #output the line  
  puts e}
}

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