এএসসিআইআই আর্ট অ্যাকটাগনস


22

একটি ইনপুট পূর্ণসংখ্যা দেওয়া n > 1, nঅক্ষরের সমন্বয়ে পাশের দৈর্ঘ্য সহ একটি ASCII- শিল্প অষ্টভুজ আউটপুট । নীচে উদাহরণ দেখুন:

n=2
 ##
#  #
#  #
 ##

n=3
  ###
 #   #
#     #
#     #
#     #
 #   #
  ###

n=4
   ####
  #    #
 #      #
#        #
#        #
#        #
#        #
 #      #
  #    #
   ####

n=5
    #####
   #     #
  #       #
 #         #
#           #
#           #
#           #
#           #
#           #
 #         #
  #       #
   #     #
    #####

and so on.

আপনি এটি STDOUT এ মুদ্রণ করতে পারেন বা কোনও ফাংশন ফলাফল হিসাবে এটি ফিরিয়ে দিতে পারেন।

অক্ষরের যথাযথভাবে সীমাবদ্ধ থাকাকালীন যে কোনও পরিমাণ বহিরাগত শ্বেত স্পেস গ্রহণযোগ্য।

বিধি এবং I / O

  • ইনপুট এবং আউটপুট যে কোনও সুবিধাজনক পদ্ধতি দ্বারা দেওয়া যেতে পারে ।
  • আপনি #(স্থান ব্যতীত) পরিবর্তে যে কোনও মুদ্রণযোগ্য ASCII অক্ষর ব্যবহার করতে পারেন তবে "ব্যাকগ্রাউন্ড" অক্ষরটি অবশ্যই স্থান (ASCII 32) হওয়া উচিত।
  • হয় একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন গ্রহণযোগ্য।
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • এটি তাই সাধারণ গল্ফিংয়ের সমস্ত নিয়ম প্রয়োগ হয় এবং সংক্ষিপ্ততম কোড (বাইটে) জয়ী হয়।

1
আমরা কি বিভিন্ন আউটপুট অক্ষর ব্যবহার করতে পারি, না এটির ধারাবাহিক হওয়া দরকার?
Emigna

@ এমিগনা বিভিন্ন চরিত্র ভাল।
অ্যাডমবর্কবার্ক

উত্তর:


22

05 এ বি 1 , 3 বাইট

7ÝΛ

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

ব্যাখ্যা

      # implicit input as length
      # implicit input as string to print
7Ý    # range [0...7] as directions
  Λ   # canvas print

05AB1E ক্যানভাস বুঝতে এই উত্তরটি দেখুন ।


অবশ্যই এই 5 বাইট করা উচিত? অথবা কোড গল্ফ চ্যালেঞ্জগুলি বাইটস এবং অক্ষরগুলি বিনিময়যোগ্য হিসাবে দেখে
ডগ


ওহ ঠান্ডা! ডক্স লিঙ্কের জন্য ধন্যবাদ!
ডগ

> :( দামানিট, আদনান
ASCII-

11

জাভাস্ক্রিপ্ট (ES6), 114 106 105 104 103 বাইট

n=>(g=x=>v=x*2>w?w-x:x,F=x=>~y?`# 
`[~x?(h=g(x--))*g(y)>0&h+v!=n|n>h+v:(y--,x=w,2)]+F(x):'')(y=w=--n*3)

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

কিভাবে?

এটি অক্ষর অনুসারে আউটপুট অক্ষর তৈরি করে।

প্রদত্ত ইনপুট এন , আমরা গনা:

এন'=এন-1W=3এন'

(এক্স,Y) প্রতিটি চরিত্রের জন্য , আমরা গণনা করব (,বনাম) :

=W/2-|এক্স-W/2|বনাম=W/2-|Y-W/2|

অষ্টভুজযুক্ত কোষগুলি নিম্নলিখিত শর্তগুলির একটি পূরণ করে:

  • ( =0 বা বনাম=0 ) এবং + +বনামএন' (নীচে লালে)
  • + +বনাম=এন' (নীচে কমলাতে)

উদাহরণস্বরূপ, এন=4 (এবং এন'=3 ) সহ:

(0,0)(1,0)(2,0)(3,0)(4,0)(4,0)(3,0)(2,0)(1,0)(0,0)(0,1)(1,1)(2,1)(3,1)(4,1)(4,1)(3,1)(2,1)(1,1)(0,1)(0,2)(1,2)(2,2)(3,2)(4,2)(4,2)(3,2)(2,2)(1,2)(0,2)(0,3)(1,3)(2,3)(3,3)(4,3)(4,3)(3,3)(2,3)(1,3)(0,3)(0,4)(1,4)(2,4)(3,4)(4,4)(4,4)(3,4)(2,4)(1,4)(0,4)(0,4)(1,4)(2,4)(3,4)(4,4)(4,4)(3,4)(2,4)(1,4)(0,4)(0,3)(1,3)(2,3)(3,3)(4,3)(4,3)(3,3)(2,3)(1,3)(0,3)(0,2)(1,2)(2,2)(3,2)(4,2)(4,2)(3,2)(2,2)(1,2)(0,2)(0,1)(1,1)(2,1)(3,1)(4,1)(4,1)(3,1)(2,1)(1,1)(0,1)(0,0)(1,0)(2,0)(3,0)(4,0)(4,0)(3,0)(2,0)(1,0)(0,0)


বাহ, এটা দুর্দান্ত! আমি মনে করি সরলীকৃত করা যেতে পারে + + V > এন ' , যদিও আমি নিশ্চিত যে এ সব golfing যুক্তিবিজ্ঞান সাহায্য করে না। + +বনামএন'+ +বনাম>এন'
জিউসেপে

@ জিউসেপ্প উভয় শর্ত পরীক্ষা করা হলে এটি সেই উপায়ে সহজ করা যেতে পারে। তবে কোডটিতে এবং h v 0 কেস পৃথক করা হয়েছে। তবে, আমি আসলে বিপরীত শর্তটি পরীক্ষা করছি ( n > h + v ), যা ইতিমধ্যে 1 বাইট ছোট sh বনাম=0বনাম0এন'>+ +বনাম
আর্নৌল্ড

@ জিউসেপ্পে আপনার মন্তব্য আমাকে সূত্রটি ঘনিষ্ঠভাবে দেখতে প্ররোচিত করেছে এবং অবশেষে আমি কিছুটা আলাদাভাবে লিখে একটি বাইট সংরক্ষণ করেছি। :)
আর্নল্ড

1
হেহ, ভাল আপনার মন্তব্য আপনার যুক্তি আমার বন্দর এবং অন্য বাইটের দম্পতি সংরক্ষণ বর্ণন যেতে আমাকে লেখার অনুরোধ! বনাম=0
জিউসেপে

8

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

GH*N#

চারকোলের সাথে আমার প্রথম উত্তর!

ব্যাখ্যা:

GH*N#      //Full program
GH          //Draw a hollow polygon
   *         //with 8 sides
    N       //of side length from input
      #      //using '#' character

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


3
যারা Verbose কাঠকয়লা পছন্দ করেন, তাদের জন্য এটি PolygonHollow(:*, InputNumber(), "#");
নীল

5

ক্যানভাস , 15 14 12 বাইট

/⁸⇵╷+×+:⤢n╬┼

এখানে চেষ্টা করুন!

ব্যাখ্যা:

/             a diagonal of length n
 ⁸            the input,
  ⇵           ceiling divided by 2, (storing the remainder)
   ╷          minus one
    #×        repeat "#" that many times
      +       append that to the diagonal
       :⤢n    overlap that with its transpose
          ╬┼  quad-palindromize with the overlap being the remainder stored earlier

বিকল্প 12-বাইটার


4

আর , 122 117 115 বাইট

function(n){n=n-1
m=matrix(0,y<-3*n+1,y)
v=t(h<-(w=3*n/2)-abs(row(m)-1-w))
m[h*v&h+v-n|h+v<n]=' '
write(m,1,y,,"")}

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

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


-2 বাইট এটি অন্য উপায়ে করে (আমি h*v&h+v-nজেএসে করতে পারি না কারণ &এটি কিছুটা অপারেটর; তবে এটি আর-তে একটি যৌক্তিক, যাতে এটি কার্যকর হয়)।
আর্নল্ড

@ আরনাউল্ড ধন্যবাদ!
জিউসেপ



3

পাওয়ারশেল, 91 বাইট

param($n)($s=' '*--$n+'#'*$n+'#')
--$n..0+,0*$n+0..$n|%{' '*$_+"#$(' '*(3*$n-2*$_+2))#"}
$s

2

পাওয়ারশেল , 107 97 বাইট

param($n)($z=$n-1)..1+,0*$n+1..$z|%{" "*$_+"#"+($x=" "*($z-$_))+(" ","#")[!($_-$z)]*($n-2)+"$x#"}

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

প্রথমার্ধকে উল্টানোর কোনও সস্তা উপায় যদি না থাকে তবে এই উত্তরটি আরও অনেক ভাল মনে হবে। এটি বাম অর্ধেকটি তৈরি করে, তারপরে মূলটি (যা হয় এক্স #'sবা স্পেস) হয়, তারপরে ডানটি তৈরি করতে বামের যুক্তি দেখায়। মজাদার ঘটনা, আপনার সাদা স্থানের পিছনে অনুলিপি করার দরকার নেই।

নিবন্ধভুক্ত এবং ব্যাখ্যা করা হয়েছে:

param($n)
($z=$n-1)..1 + ,0*$n + 1..$z |%{  #Range that repeats 0 n times in the middle
" "*$_ + "#" +($x=" "*($z-$_)) +  #Left side
(" ","#")[!($_-$z)]*($n-2) +      #Core that swaps when it's the first or last row
"$x#"}                            #Right side which is left but backwards

2

সি (ঝনঝন) , -DP=printf( -DF=for(i + 179 = 199 180 বাইট

i;*m="%*s%*s\n";g(n){P"%*s",n,H;F;--i;)P H;P"\n");}f(n){g(n);F;--i;)P m,i,(H,3*n-i+~i,H;F-2;i--;)P"#%*s\n",3*n-3,H;F;--i;)P m,n-i,(H,n+i+i-1,H;g(n);}

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

Ungolfed:

f(n){
	int i;
	printf("%*d",n,0);
	for(i=0;i<n-1;i++){
		printf("0");
	}
	printf("\n");
	for(i=1;i<n;i++){
		printf("%*d%*d\n",n-i,0,n+i+i-1,0);
	}
	for(i=0;i<n-2;i++){
		printf("0%*d\n",n+n+n-3,0);
	}
	for(i=n-1;i>0;i--){
		printf("%*d%*d\n",n-i,0,n+i+i-1,0);
	}
	printf("%*d",n,0);
	for(i=0;i<n-1;i++){
		printf("0");
	}
}

-19 বাইটস @ সিলিংক্যাটকে ধন্যবাদ




1

ব্যাচ, 260 বাইট

@echo off
set s=
for /l %%i in (1,1,%1)do call set s= %%s%%
echo %s% %s: =#%
call:c %1,-1,3
for /l %%i in (1,1,%1)do echo   #%s:~2%%s%%s:~2%#
call:c 3,1,%1
echo %s% %s: =#%
exit/b
:c
for /l %%i in (%*)do call echo %%s:~,%%i%%#%%s:~%%i%%%s%%%s:~%%i%%#

প্রতিটি লাইনে দুটি প্রধান স্থান ফাঁকা রাখে। ব্যাখ্যা: ব্যাচের কোনও স্ট্রিং পুনরাবৃত্তি অপারেটর নেই, সীমাবদ্ধ স্ট্রিং স্লাইসিং ক্ষমতা এবং পাটিগণিত সম্পাদনের জন্য পৃথক বিবৃতি প্রয়োজন। তাই ফাঁকা জায়গায় ইনপুট দৈর্ঘ্যের একটি স্ট্রিং তৈরি করা গল্ফিয়াস্ট ছিল (ব্যাচ কমপক্ষে #উপরের এবং নীচের লাইনগুলির জন্য এগুলিকে অনুবাদ করতে পারে ) এবং তারপথটি তৈরি করতে 3 থেকে দৈর্ঘ্য পর্যন্ত একটি নির্দিষ্ট অবস্থানে থেকে বা স্লাইস করা যেতে পারে olf (এটিই স্ক্রিপ্টের শেষ লাইনটি অর্জন করে)।



1

লাল , 171 বাইট

func[n][c:(a: n - 1)* 2 + n
b: collect[loop c[keep pad/left copy"^/"c + 1]]s: 1x1 s/1: n
foreach i[1x0 1 0x1 -1x1 -1x0 -1 0x-1 1x-1][loop a[b/(s/2)/(s/1): #"#"s: s + i]]b]

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

ব্যাখ্যা:

Red[]
f: func [ n ] [
    a: n - 1                                         ; size - 1
    c: a * 2 + n                                     ; total size of widht / height 
    b: collect [                                     ; create a block
        loop c [                                     ; composed of size - 1 rows
            keep pad/left copy "^/" c + 1            ; of empty lines of size c (and a newline)
        ]
    ]
    s: a * 1x0 + 1                                   ; starting coordinate
    foreach i [ 1x0 1 0x1 -1x1 -1x0 -1 0x-1 1x-1 ] [ ; for each offset for the 8 directions
        loop a [                                     ; repeat n - 1 times  
            b/(s/2)/(s/1): #"#"                      ; set the array at current coordinate to "#"
            s: s + i                                 ; next coordinate
        ]        
    ]
    b                                                ; return the block 
]

1

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

(' '@~5 6∊⍨1⊥⊢∘,)⌺3 3⊢<(⍉⌽⌊⊢)⍣2∘(∘.+⍨∘⍳¯2+3×⊢)

এই সমাধানটি অ্যাডাম সরবরাহ করেছিলেন - ধন্যবাদ!

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

আমার (প্রায়) মূল সমাধান:

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

(((⊃∘' #'¨1+5∘=+6∘=)⊢)1⊥⊢∘,)⌺3 3⊢<(((⊖⌊⊢)⌽⌊⊢)(∘.+⍨(⍳¯2+3×⊢)))

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

তার সহায়তার জন্য আদমকে ধন্যবাদ!

ধারণাটি হ'ল "হীরা" সন্ধান করুন যা আংশিকভাবে স্কোয়ারে রয়েছে এবং অষ্টকোনটিকে "রূপরেখা" করতে একটি কিনারা সনাক্তকারী ফিল্টার প্রয়োগ করতে হবে।



1
আপনি এখানে কারণ কারণ এখানে ক্লাসিক ব্যবহার করতে পারেন মেটা অনুযায়ী এসবিসিএস উল্লেখ করে 1 বাইট / চর গণনা করুন ।
অ্যাডম

@ অ্যাডম ধন্যবাদ! আমি শিরোনাম সম্পাদনা করতে জানি না, আপনি কি আমার জন্য এটি করতে পারেন?
গ্যালেন ইভানভ

শিরোনাম সম্পাদনা করে আপনি কী বোঝাতে চাইছেন?
অ্যাডম

1
সম্পাদনা করুন এবং এখান থেকে অনুলিপি ।
Adám

1

পার্ল 5, 201 197 188 187 186 বাইট:

$a=<>;$b=3*$a-4;$c='$"x($e-$_)."#".$"x$f."#\n"';$e=($b-$a)/2+1;$d=$"x$e."#"x$a.$/;$f=$a;print$d,(map{(eval$c,$f+=2)[0]}1..$a-2),("#".$"x$b."#\n")x$a,(map{$f-=2;eval$c}reverse 1..$a-2),$d

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

প্রথম লাইন থেকে অষ্টভুজের আকার পড়ে STDIN


পিপিসিজিতে আপনাকে স্বাগতম! আপনি সম্ভবত এই পোস্টে পাওয়া কৌশলগুলি ব্যবহার করে এখানে এবং সেখানে কয়েকটি বাইট ছাঁটাই করতে পারেন ।
মেগো

@ মেগো ইয়েপ $"পরিবর্তে ব্যবহার করে আমি 4 বাইট সংরক্ষণ করতে সক্ষম হয়েছি " "
নাথান মিলস

1

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

$f=$a=<>;$b=3*$a-4;$c='$"x($e-$_)."#".$"x$f."#\n"';$e=$a-1;$d=$"x$e."#"x$a.$/;print$d,(map{(eval$c,$f+=2)[0]}1..$a-2),("#".$"x$b."#\n")x$a,(map{$f-=2;eval$c}reverse 1..$a-2),$d

উপরের নাথান মিলসের উত্তরের উপর ভিত্তি করে (যা সম্পর্কে আমার মন্তব্য করার জন্য পর্যাপ্ত প্রতিনিধি নেই!)।

$e$a-16 বাইট সাশ্রয়ী করা সহজ করা যেতে পারে ; $fচেইন বরাদ্দ করা যেতে পারে; দুটি বাইট সংরক্ষণ; নিশ্চিত নয় যে অন্য দুজন কোথা থেকে এসেছে!

যদিও $eসঙ্গে প্রতিস্থাপিত হতে পারে $a-1দুটি স্থান এটি ঘটে মধ্যে, অতিরিক্ত বন্ধনী এই শুধুমাত্র বিরতি এমনকি উপায়ে প্রয়োজন ছিল।

Ungolfed:

$f = $a = <>;
$b = 3 * $a - 4;
$c = '$"x($e-$_)."#".$"x$f."#\n"';
$e = $a - 1;
$d = $" x $e . "#" x $a . $/;
print $d, ( map { ( eval $c, $f += 2 )[0] } 1 .. $a - 2 ),
  ( "#" . $" x $b . "#\n" ) x $a,
  ( map { $f -= 2; eval $c } reverse 1 .. $a - 2 ), $d


1

সি (জিসিসি) , 158 153 150 বাইট

  • সংরক্ষিত পাঁচটি আট বাইট ধন্যবাদ ceilingcat
O,c,t,g;o(n){for(O=2*~-n,t=c=O+n;t--;puts(""))for(g=c;g--;)putchar(33-(!t|t>c-2?g<n-1|g>O:t<n-1|t>O?t+O-g&&t-O-g&&~c+g+t+n+n&&c-g-t+n-3+n:g&&g<c-1));}

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


আপনাকে ধন্যবাদ
জোনাথন ফ্রেচ

আপনাকে ধন্যবাদ
জোনাথন ফ্রেচ


0

পার্ল 5, 170 168 166 বাইট

$a=<>-1;$\="#\n";print$x=$_=$"x$a."#"x$a;if(s/^( *)  #*/$1 #  $1 /){print}while (s/ #/#  /){print}$z=$_;for(1..$a){print$_=$z}while(s/#  (\s{$a})/ #$1/){print}print$x

এটি রেজেক্সের যাদু দ্বারা কাজ করে। "যদি" কেবলমাত্র n = 2 এর প্যাথলজিকাল কেস নিয়ে কাজ করার প্রয়োজন হয় যা অন্যথায় এরকম কিছু করে:

 ##
 ##
#  #
 ##

সম্ভবত এটি দূরে কোড করা যেতে পারে।

আমি মনে করি মিড-পয়েন্ট পর্যন্ত স্ট্রিং তৈরি করে তারপরে বিপরীত করে আরও অনেক কিছু অর্জন করতে পারে। অবশ্যই আমাদের তখন একটি অতিরিক্ত স্থান সন্নিবেশ / মুছতে হবে যদি n বিজোড় হয় (বা পাতলা স্পেস ব্যবহার করুন: পি)।

Ungolfed

$a = <> -1;                          # Subtracting one is very useful! 
$\ = "#\n";                          # Every line ends with a '#' let perl provide.  
$x=$_ = " " x $a. "#" x $a;          # The horiz line (one short)  
print;                               # print it plus the extra #
if(s/^( *)  #*/$1 #  $1 /){print}    # create a hole and remove a leading space(if n=2 this fails)
while (s/ #/#  /){                   # make the hole bigger      
    print;                           # and print (with a trailing #)
}
$z=$_;                               # store $_ for later use
for (1 .. $a) {                      # nice that we don't have to do 2..$a but not golf-nice  
  $_ =$z;                            # restore $_ (we could use $z but since we have
  print;                             # to restore somewhere, doing  it here saves us bytes)
}
while (s/#  (\s{$a})/ #$1/){         # now move the # to the right and reduce the trailing spaces  
  print;
}
print $x;                            # and finish...

আমি মনে করি এটি সম্ভবত কিছুটা বেশি গল্ফ করা যেতে পারে, ধাক্কা দেওয়ার মতো উল্লেখযোগ্য পরিবর্তনগুলি থেকে আলাদা $@ এবং শেষে মুদ্রণের ।

[চারদিকে গল্ফযুক্ত স্পেস ..এবং সেমিকোলনে সংরক্ষণ করে দুটি ক্ষেত্রে নির্ধারিত হওয়ার আগে মুদ্রণ সরিয়ে নেওয়া হয়েছে]]


কিছু নির্দেশ টিআইওর পুনর্নির্মাণে 20 বাইট সংরক্ষণ করা হয়েছে , কেন \sকেবল শেষ
রেজেক্সে


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