সাওথুথ বর্ণমালা আঁকুন


42

একটি সাধারণ আজ। সংক্ষিপ্ততম প্রোগ্রামটি লিখুন যা উচ্চতার জন্য একটি ধনাত্মক পূর্ণসংখ্যার প্রদত্ত একটি "স্যাতূথ বর্ণমালা" আঁকবে। আপনি যখন আপনার চিঠিটি শুরু করবেন তখন আপনার প্রোগ্রামিং ভাষার নাম লিখতে হবে।

উদাহরণস্বরূপ, যদি আপনার ভাষা পাইথন হয় এবং ইনপুট হয় 1তবে আউটপুটটি হওয়া উচিত:

ABCDEFGHIJKLMNOPythonQRSTUVWXYZ

যদি ইনপুট হয় 2তবে আউটপুটটি হওয়া উচিত:

 B D F H J L N Python R T V X Z
A C E G I K M O      Q S U W Y

যদি ইনপুট হয় 4তবে আউটপুটটি হওয়া উচিত:

   D     J     Python     V
  C E   I K   O      Q   U W
 B   F H   L N        R T   X Z
A     G     M          S     Y

নোট

  • A সর্বদা বাম নীচে থেকে শুরু হয়।
  • ইনপুট স্টিডিন বা ফাংশন কল বা এর মতো হতে পারে। Stdout যাও আউটপুট।
  • উপরের ইনপুটটির 26কাজ করার দরকার নেই।
  • কোনও পিছনে স্থান নেই।

9
একটি বর্ণের নাম সহ প্রোগ্রামিং ভাষাগুলি কি অনুমোদিত? (সি, জে, কে, ইত্যাদি)

@ আইসাকগ শিওর আমি তাদের মধ্যে এটি আরও সহজ হতে পারে কল্পনা করব।
ক্যালভিনের শখ 6

1
ইনপুটটি কি কোনও ভেরিয়েবলের মধ্যে সংরক্ষণ করার আশা করা যায়?
মার্টিন ইন্ডার

@ মার্টিনবাটনার হ্যাঁ, ঠিক আছে।
ক্যালভিনের শখ 15

13
বিটিডব্লিউ, এটি কোনও তৃতীয় তরঙ্গ নয়, এটি একটি ত্রিভুজ তরঙ্গ: P
qwr

উত্তর:


14

যদি এন উচ্চতা ধরে রাখে:

সি + এস্কেপ কোড: 81

x;main(y){for(y=n--;x<26;x++)printf("\033[%d;%dH%c",n?x/n&1?y++:y--:y,x+1,x+65);}

সি: 110

x;char a[702]={[0 ...701]=32};main(y){for(y=--n;x<26;a[x*27-1]=10)a[27*(n?x/n&1?y++:y--:y)+x]=x+++65;puts(a);}

5
আমি পরাজয় স্বীকার। পৃথিবীতে কি। : ডি
মার্টিন ইন্ডার

আমি কি সংকলনের নির্দেশাবলী জিজ্ঞাসা করতে পারি? ccত্রুটি দেয় "<bebe.c: 1: 17: ত্রুটি: 'এন' অঘোষিত (এই
ফাংশনটিতে

2
ভাল এটি দেখতে দেখতে চেয়ে খারাপ। প্রথমত দ্বিতীয়টিতে পেছনের স্থান রয়েছে, দ্বিতীয়ত তারা উভয়ই এটির উপর নির্ভর করে যা nআপনার পছন্দের একটি সংখ্যার (যেমন মার্টিন আগে জিজ্ঞাসা করেছেন) সেট করে।
বেবি

ওহ, সুতরাং আমি যে কোনও উপায়ে এন সরবরাহ করতে পারি। হাঃ হাঃ হাঃ. তবু মুগ্ধ।
manatwork

19

সি, 134

n,m,c,p;
main(r){
for(scanf("%d",&n),m=--n?n*2:1;n+r--;puts(""))
for(c=-1,p=1;c++<25;)
p+=(c-n-r)%m*((c-n+r)%m)?1:1-printf("%*c",p,c+65);
}

কয়েকটি সতর্কতা সহ জিসিসিতে সংকলন করুন। নিউলাইনগুলি চরিত্রের গণনায় অন্তর্ভুক্ত নয়।

ইনপুটটি ইতিমধ্যে সঞ্চিত থাকলে 122 টি অক্ষরn

ব্যবহারকারীর জন্য ধন্যবাদ 2992539 , উন্নয়নের জন্য টলোস এবং edc65


3
আপনি puts("")পরিবর্তে ব্যবহার করতে পারেন printf("\n")
সোমনিয়াম

2
এর p-=(c-n+r)%m*((c-n-r)%m)?0:printf("%*c",p,c+65);পরিবর্তে 4 টি অক্ষর সংরক্ষণ করুনif((c-...

1
পূর্ববর্তী (মুছে ফেলা) মন্তব্যের জন্য দুঃখিত। আমি ভুল ছিল। লক্ষণগুলি নিয়ে খেলে এবং n,m,c,p; main(r){ for(scanf("%d",&n),m=--n?n*2:1;n+r--;puts("")) for(c=-1,p=1;c++<25;) p+=(c-n-r)%m*((c-n+r)%m)?1:1-printf("%*c",p,c+65); }
গৌণবোধটি ব্যবহার করে যে

13

টিআই-বেসিক - 148 বাইট (কাঁচা পাঠ্য), 186 বাইট (গ্রাফিক)

ও.পি. এর প্রতিক্রিয়ায়, দুর্দান্ত টিআই -৩ and (এবং আরও নতুন )টি আকারে 16 x 8 (কেবলমাত্র স্ট্যান্ডার্ড বড় টেক্সট ব্যবহার করে) বা 94 x 62 পিক্সেলের আকারের সাথে আসে (যা ছোট পাঠ্যের সাথে প্রায় 10 লাইনের মূল্যবান হয়) )।

এখন, এতে কিছুটা সমস্যা আছে (যার কাছে আমি স্পষ্টতা চাই)। আকার চাপিয়ে দোভাষী দ্বারা "উপেক্ষা" করা যাবে না; অন্য কথায়, যদি আমরা 20-এ উচ্চতা স্থির করার চেষ্টা করি, এটি কোডটির সম্পূর্ণ সম্পাদন রোধে একটি ত্রুটি দেয়। আমি কোডটি লিখতে পারতাম যা একটি অনন্ত পরিবেশে সঠিক আউটপুট তৈরি করতে পারে, যদি না এটি মেশিনে না চালিত।

এটি বলা হওয়ার সাথে সাথে, আমি আপনাকে প্রোগ্রামগুলির (চলমান) সংস্করণ উপস্থাপন করছি। এগুলি সমস্ত Nচলমান হওয়ার আগে লাইনে পছন্দসই উচ্চতায় সেট করা চলকটির উপর নির্ভর করে :

  • কাঁচা পাঠ্য পদ্ধতির

    :ClrHome
    :"ABCDEFGHIJKLMNOPQRSTI-BASICUVWXYZ"→Str1
    :8→R
    :For(C,1,16
    :If N=1
    :Then
    :0→F
    :Else
    :If R<2 or 10-R>N
    :1→F
    :If R>7
    :-1→F
    :End
    :If C≠20
    :Then
    :Output(R,C,sub(Str1,C,1
    :Else
    :Output(R,C,sub(Str1,C,8
    :C+7→C
    :End
    :R+F→R
    :End
    

    টার্মিনাল নির্বিশেষে এই কাজটি করার জন্য, উপরের বাউন্ড চেকিং ( ) টি পরিবর্তন For(C,1,16করুন For(C,1,33এবং সরান R<2 or। এখানে আউটপুট দেওয়া হয় 5→N:

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

  • গ্রাফিক পদ্ধতির ( AxisOffএটিরও স্বচ্ছতার প্রয়োজন হতে পারে )

    :ClrDraw
    :N*6→N
    :"ABCDEFGHIJKLMNOPQRSTI-BASICUVWXYZ"→Str1
    :57→R
    :For(C,1,56
    :If N=6
    :Then
    :0→F
    :Else
    :If R<7 or 64-R>N
    :6→F
    :If R>51
    :-6→F
    :End
    :If C≠20
    :Then
    :If C>50
    :Then
    :Text(R,C,sub(Str1,C-23,1
    :Else
    :Text(R,C,sub(Str1,C,1
    :End
    :Else
    :Text(R,C,sub(Str1,C,8
    :C+30→C
    :End
    :R+F→R
    :End
    

    এটি দুটি ছোট ছোট quirks সহ ঠিক আছে। প্রস্থটি না হলেও উচ্চতা এখনও একটি সমস্যা। যাইহোক, আমি অক্ষরগুলিকে স্থান দিইনি, তাই কিছু ক্ষেত্রে (যখন চিঠিটি তৃতীয় থেকে উত্থিত বা পতন শুরু হয়), চিঠিগুলি তাদের উত্তরসূরীরা কাটা হতে পারে। টার্মিনাল নির্বিশেষে এটিকে কাজ করতে, উপরের বাউন্ড চেক ( R<7 or) সরিয়ে ফেলুন । তারপরে গ্রাফটি অনুসরণ করে:

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


এখন আমি আছে পোর্টের এই আমার গ্রাফিং ক্যালকুলেটর থেকে
লিয়াম McInroy

তাত্ক্ষণিক মন্তব্য: 0→Fআপনি Delvar Fটোকেনাইজড হয়ে একবারে 1 বাইট সংরক্ষণ করে এমনটি করতে পারেন । এছাড়াও, আমি নিশ্চিত যে আপনি আউটপুট / পাঠ্যকে সমাপ্তির জন্য একটি ইনলাইন বুলিয়ান পরীক্ষার শর্তকে ধন্যবাদ জানাতে পারেন, এবং এর জন্য C+7→C, এটি একটি সংক্ষেপে লিখুন (অন্যথায় / অন্যথায় / শেষ না হলে)
অ্যাড্রিউব

11

খাঁটি বাশ (কোনও কোরিউটিলস নেই), 181 বাইট

m=$1
for l in A Bash {C..Z};{
((m))||s=++
((m>$1-2))&&s=--
for((m=$1==1?1:m,m$s,i=0;i<$1;i++));{
((i-m))&&a[i]+=${l//?/ }||a[i]+=$l
}
}
shopt -s extglob
printf %s\\n "${a[@]%%+( )}"

আউটপুট:

cat -Eকেবল কোনও পাইপযুক্ত প্রমাণ করার জন্য পাইপ করা হয়নি কোনও নতুন লাইনের লাইন নেই।

$ ./sawtooth.sh 1 | cat -E
ABashCDEFGHIJKLMNOPQRSTUVWXYZ$
$ ./sawtooth.sh 5 | cat -E
       E       M       U$
      D F     L N     T V$
     C   G   K   O   S   W$
 Bash     H J     P R     X Z$
A          I       Q       Y$
$ 

10

জাভাস্ক্রিপ্ট (ES6) 231 244

বাগ ফিক্স সম্পাদনা করুন , কিছু পুনর্নির্মাণ এবং উচ্চতা পরিচালনার একটি পৃথক পদ্ধতি == 1
এছাড়াও এটি কোনও ফাংশনে পরিবর্তিত হয়েছে কারণ এটি ওপি দ্বারা অনুমোদিত, সুতরাং ইনপুটটির জন্য কোনও প্রম্পট () নয়

সাধারণ অ্যালগরিদমে কোনও পরিবর্তন নেই যা সম্ভবত এই চ্যালেঞ্জের পক্ষে সেরা নয়

F=h=>{for(p=s=[i=z=b=t=''];++p<h;)i=1,z=b=' ',s[p]=t;for(p=--h,k=64;++k<91;)s[p]+=t+String.fromCharCode(k),k-74||(s=s.map((x,q)=>x+(p-q?'         ':'avascript'))),p-=i,p<0|p>h?(i=-i,p-=i+i,t=z,b=t+t):t+=b;console.log(s.join('\n'))}

ব্যাখ্যা

F=h=>{
  // row in s for output must be initialized to ''. In the same step I make other initializations
  for(p=s=[i=z=b=t='']; ++p < h;) // initialize for height 1, all increment and spacing can be null
    i=1,z=b=' ',s[p]=t; // the for body is entered only if height > 1, initializing spacing and increment to the right values
  for(p=--h,k=64;++k<91;)
    s[p]+=t+String.fromCharCode(k),
    k-74||(s=s.map((x,q)=>x+(p-q?'         ':'avascript'))), // if 'J' modify each line of output adding the name or spacing
    p-=i,p<0|p>h?(i=-i,p-=i+i,t=z,b=t+t):t+=b; // index bouncing
  console.log(s.join('\n'))
}

উদাহরণ

1

ABCDEFGHIJavascriptKLMNOPQRSTUVWXYZ

3 উপরে যাচ্ছে

  C   G            K   O   S   W
 B D F H Javascript L N P R T V X Z
A   E   I            M   Q   U   Y

উপরে 4

   D     Javascript     P     V
  C E   I          K   O Q   U W
 B   F H            L N   R T   X Z
A     G              M     S     Y

7 নিচে যাচ্ছে

      G                    S
     F H                  R T
    E   I                Q   U
   D     Javascript     P     V
  C                K   O       W
 B                  L N         X Z
A                    M           Y

9

জাভা (393)

গল্ফ করার জন্য সর্বদা দুর্দান্ত ভাষা:

public class P{public static void main(String[]a){int h=Integer.valueOf(a[0]);String x="ABCDEFGHIJKLMNOPQRSTUVWXYZ";String[]l=new String[h];Arrays.fill(l,"");int i=h-1;int d=-1;for(char c:x.toCharArray()){for(int n=0;n<l.length;n++){String k=(n==i)?(c=='J')?"Java":c+"":(c=='J')?"    ":" ";l[n]+=k;}if(i==0&&d==-1)d=1;if(i==h-1&&d==1)d=-1;if(h>1)i+=d;}for(String s:l){System.out.println(s);}}}

2
দুর্ভাগ্যক্রমে, আপনি আমদানিটি ভুলে গেছেন java.util.Arrays;। :-(
জাস্টিন

তবে আপনি নিজের কোডটি তৈরি করতে পারেন: লুপ শিরোনামটি মুছে ফেলুন String x="ABC...Z";এবং এর সাথে প্রতিস্থাপন করুন , আমি জাভাতে for(char c...for (char c=65;++c<91;){
অক্ষরগুলি পছন্দ করি

আরও আপনি এর c=='J'সাথে প্রতিস্থাপন করতে পারেন c==74, মোট আরও দুটি বাইট সংরক্ষণ করুন।
flawr

2
আমি নিশ্চিত যে আপনি যদি বিবৃতিগুলির জন্য কিছু এক্সওআর ব্যবহার করেন তবে আপনি আরও ভাল করতে পারবেন তবে এখানে আমার উন্নত সংস্করণ: (৩২৫) public class p{public static void main(String[]a){int h=Integer.valueOf(a[0]),i=h-1,d=-1,n;String[]l=new String[h];for(n=0;n<h;l[n++]="");for(char c=64;++c<91;){for(n=0;n<h;n++){String k=n==i?c==74?"Java":c+"":c==74?" ":" ";l[n]+=k;}if(i==0&d==-1)d=1;if(i==h-1&d==1)d=-1;i+=h>1?d:0;}for(String s:l)System.out.println(s);}}@ কুইকঙ্ক্স: Import.util.Arrays এর আর দরকার নেই; =)
flawr

9

রুবি, 112 বাইট

o="#{' '*29}
"*h
26.times{|i|o[(h-i%(h<2?1:2*h-2)-1).abs*30+i+(i>17?3:0)]=(i+65).chr}
puts o.gsub('R   ','Ruby')

ইনপুটটি সংরক্ষণ করা হবে বলে আশা করে h

যদি এর স্পষ্টতা দরকার হয় তবে আমাকে জানান।


খুব গৌণ তবে আপনি পরে স্থানটি মুছে ফেলতে পারেন %
ক্যালভিনের শখ 16

@ ক্যালভিনের শখ হা, আমি আমার সিনট্যাক্সটি এখানে হাইলাইট করে বিশ্বাস করি না: ডি। এটি পরে ঠিক করবে।
মার্টিন ইন্ডার

আপনি প্রতিস্থাপন করতে পারেন puts o...সঙ্গে $><<o...
জর্দান

6

জে: 75 বাইট

NB. without IO |:26([:u:65+i.@[)`(($(,|.@}.@}:)@i.)<"1@,.i.@[)`(' '$~,~)}5
2(1!:2)~|.26([:u:65+i.@[)`(($(,|.@}.@}:)@i.)<"1@,.i.@[)`(' '$~,~)}".1!:1[1

অপূর্ব সংশোধন সংমিশ্রণটি ব্যবহার করে । যথারীতি আইও কুরুচিপূর্ণ এবং ছদ্মবেশী, সেখানে বিশদ বিবরণে যায় না। মূল সমাধানটি 3 গুরুরেন্ড (বিশেষ্য ক্রিয়া ক্রিয়া (ওরফে ফাংশন)) গ্রহণ করে:

  • ক) বর্ণমালা তৈরি করা
  • খ) সূচকগুলি তৈরি করা
  • গ) সংশোধন করার জন্য ম্যাট্রিক্স তৈরি করা

    x (একটি bসি}) y

ক) আসকি টেবিলের মধ্যে একটি সুন্দর তুচ্ছ চেহারা

গ) আরও তুচ্ছ

খ) আকর্ষণীয় এক। মনোবলটি হ'ল অনুভূমিক সূচকগুলি 0 থেকে শুরু করে y-1 এবং পিছনে নীচে থেকে 26 বার পুনরাবৃত্তি হবে বলে মনে করা হচ্ছে। যেমন। y == 4 এর জন্য:

0 1 2 3 2 1 0 1 2 3 2 1 ...

এটি কার্যকর করার জন্য খ):

($(,|.@}.@}:)@i.) <"1@,. i.@[)       NB. is equivalent too
(tine0 tine1 tine2)                  NB. a fork with tines defined as
tine0 =: 
  hook0 =: hook0_0 hook0_1           NB. a dyadic hook: x (g h) y -: x g h y
     hook0_0 =: $                    NB. reshape
     hook0_1 =: (hook1_0 hook1_1)@i. NB. do hook1 after making 0-y
       hook1_0=: ,                   NB. append to self
       hook1_1=: |.@}.@}:            NB. rotated version of y after beheading and curtailing
tine2 =: i.@[                  NB. generate 0-x
tine1 =: <"1@,.                NB. glue together coordinates.

এবং ওঁ হ্যাঁ, সত্যই সত্য: জে নাম ... "জে"।


এটি কি সংশোধন ব্যবহার করা মূল্য? আমার পক্ষে সহজ সমাধান বলে মনে 3 :'|:(26$1+(i.1=y),}:|i:<:y)|.@{."+u:65+i.26'হয় যে সমাধানের কুশ্রী অংশটি হ'ল বিশেষ অক্ষরের উচ্চতা 1 এর 8 টি অক্ষর, তবে সম্ভবত এটি কিছুটা ছোট করা যেতে পারে।
বি_জোনাস

পরামর্শের জন্য ধন্যবাদ! আপনার প্রকৃতপক্ষে খুব ছোট, এবং সংশোধন সম্ভবত অতিমাত্রার। যেহেতু এটি এত আলাদা, সম্ভবত আপনি এটি সমাধান হিসাবে নিজেই পোস্ট করতে চান?
jpjacobs 15

অনুমানটি "কোনও পিছনে স্থান নেই" বলেছে এবং আমার সমাধানটি পেছনের স্থানগুলি মুদ্রণ করে।
বি_জোনাস

5

আর (204)

f=function(x) {
  m=matrix(" ",x,26)
  i=x
  d=ifelse(x==1,0,-1)
  for (j in 1:26) {
    m[i,j]=LETTERS[j]
    if (!((i+d) %in% 1:x)) d=-d
    i=i+d
  }
  for (i in 1:x) cat(m[i,],"\n",sep="")
}

ফলাফল

> f(1)
ABCDEFGHIJKLMNOPQRSTUVWXYZ
> f(2)
 B D F H J L N P R T V X Z
A C E G I K M O Q S U W Y 
> f(3)
  C   G   K   O   S   W   
 B D F H J L N P R T V X Z
A   E   I   M   Q   U   Y 
> f(7)
      G           S       
     F H         R T      
    E   I       Q   U     
   D     J     P     V    
  C       K   O       W   
 B         L N         X Z
A           M           Y 

আমি আপনি কি কি আছে দেখতে! খুব স্মার্ট ...
ক্রোল্টন

1
+1 ঝরঝরে! আপনি আপনার forবিবৃতি (যদিও for(i in 1:x)cat(...উদাহরণস্বরূপ) বা আশেপাশের একটি কাছাকাছি স্থান থেকে মুক্তি পেতে পারেন %in%
প্ল্যানাপাস

3

জাভাস্ক্রিপ্ট - 248 224 235

z=~~prompt(),y="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");y[9]="Javascript";for(w=[],v=0;v<z;v++)w[v]="\n";v--;for(i=0;i<26;i++){for(j=0;j<z;j++)w[j]+=j-v?i-9?" ":"          ":y[i];~~(i/(z-1))%2?v++:v--;}if(z==1)w=y;console.log(w.join(""))

এখানে jsfiddle এর লিঙ্ক, আপনি এটি পরীক্ষা করতে পারেন।
সম্পাদনা করুন: মনসপ্যাসেড ফন্টের জন্য একটি কনসোল লগ তৈরি করে এবং ইনপুট == 1 হলে কমাগুলি সরিয়ে ফেলে।


পরামর্শ: 1: parseInt এবং Math.floor উভয় মত একটি পূর্ণসংখ্যা উপর চাপ অপারেশন সঙ্গে পরিবর্তন করা যাবে |0বা ~~। 2: ডাব্লু অ্যারে সরাসরি তৈরি করা ছাড়া এটি খাটো splitfor(w=[],v=0;v<z;v++)w[v]="\n";
edc65

... এবং কোনও আউটপুট বিবৃতি নেই (কনসোল.লগ বা আপনি আপনার
ফিডলে

@ edc65 টিপস জন্য আপনাকে ধন্যবাদ। আপনি ঠিক বলেছেন আমি আউটপুটটি এখানে ভুলে গেছি তাই আমি একটি সতর্কতা যুক্ত করেছি, তবে কোনও মনো ব্যবধানযুক্ত ফন্ট নেই তাই এটি দেখতে বেশ বিশৃঙ্খল দেখাচ্ছে।
ইজলিন

@izlin আপনি পরিবর্তে (i==9?" ":" ")ব্যবহার করতে পারেন (i^9?" ":" "), যা একটি অক্ষর সংরক্ষণ করে।
রেভ

1
সাহায্য করুন! কেউ কি ব্যাখ্যা করতে পারেন? (কেন সেখানে <code> ভি = 0 </code> দুবার আছে?)
flawr

3

পার্ল 119

$s.=/26/?++$r&&$/:$m-1&&$r-abs$_%(2*$m-2)+1-$m?$"x(1+3*/15/):/15/?Perl:(A..Z)[$_]for(0..26)x($m=<>);print$s=~s/\s+$//rg

এই প্রোগ্রামটি থেকে ইনপুট নেয় STDINএবং ফলাফলটি মুদ্রণ করে STDOUT

এবং বোনাস - এমন একটি সংস্করণ যা নিয়মের বিপরীতে রয়েছে যেমন এটি অনুসরণের জায়গাগুলি মুদ্রণ করে তবে কিছু ইন্টারঅ্যাকশন যুক্ত করে:

#!/usr/bin/perl -p
$r=0;$_=join'',map{/26/?++$r&&$/:$m-1&&$r-abs$_%(2*$m-2)+1-$m?$"x(1+3*/15/):/15/?Perl:(A..Z)[$_]}(0..26)x($m=$_)

... এবং নীচে কিছু পরীক্ষা:

1
ABCDEFGHIJKLMNOPerlQRSTUVWXYZ
2
 B D F H J L N Perl R T V X Z
A C E G I K M O    Q S U W Y
4
   D     J     Perl     V
  C E   I K   O    Q   U W
 B   F H   L N      R T   X Z
A     G     M        S     Y
6
     F         Perl         Z
    E G       O    Q       Y
   D   H     N      R     X
  C     I   M        S   W
 B       J L          T V
A         K            U

3

জে, 67 57 61 টি অক্ষর

echo@dtb"1@|.@|:@(26&,$(u:65+i.26)#~1 j.26$(0#~1=]),<:#-&0 2)

একটি ফাংশন হিসাবে ব্যবহার করুন:

   echo@dtb"1@|.@|:@(26&,$(u:65+i.26)#~1 j.26$(0#~1=]),<:#-&0 2)
   D     J     P     V
  C E   I K   O Q   U W
 B   F H   L N   R T   X Z
A     G     M     S     Y

ব্যাখ্যা: এই দ্রবণটি অন্যান্য জে দ্রবণের চেয়ে আলাদা পদ্ধতির ব্যবহার করে। 0 1 2 3 2 1 0 1 ... এর উপর একটি তৃতীয় তরঙ্গ উত্পন্ন করার পরিবর্তে , আমি একটানা অক্ষরের মাঝে ব্যবধানের দিকে তাকালাম। উদাহরণস্বরূপ, এন = 4 এর জন্য যদি আপনি এ থেকে উপরের দিকে যান, তবে দ্বিতীয় কলামে আবদ্ধ হয়ে বি তে পৌঁছান, তবে আপনি এ এবং বি এর মধ্যে চারটি ফাঁকা স্থান খুঁজে পাবেন অক্ষরের মধ্যে ব্যবধানের এই বিন্যাসটি খুব নিয়মিত: এন = 4 এর জন্য প্যাটার্ন 4 4 4 2 2 2 4 4 4 ...

সুতরাং ধারণাটি হ'ল প্রথমে সমতল (এবং স্থানান্তরিত) অ্যারে তৈরি করা হবে এবং তারপরে এটি আবার আকার দেবে এবং এটিকে ফ্লিপ করবে যাতে এটি ঠিক দেখাচ্ছে। আউটপুট রুটিনটি সোজা (জে, কমপক্ষে হওয়ার জন্য): ডিটিবি হ'ল "পেছনের ফাঁকা স্থানগুলি মুছুন" এবং "1"প্রতিটি লাইনে অপারেট করুন" বলে। dtb এবং প্রতিধ্বনি উভয়ই স্ট্যান্ডার্ড লাইব্রেরি দ্বারা সরবরাহিত।

কিছু গল্ফ সাহায্যের জন্য Zsbán অ্যামব্রাস ধন্যবাদ ।


3

মেটাপোস্ট (207)

numeric h,d,y;h=5;d=-1;y=1;u=5mm;pair p;string s;for x=1upto26:p:=(x,y)*u;s:=char(x+64);if x=13:s:="MetaPost";elseif x>13:p:=(x+2,y)*u;fi;label.rt(s,p);if(y=h)or(y=1):d:=d*-1;fi;if h=1:d:=0;fi;y:=y+d;endfor;

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

আপনি এটি এখানে চেষ্টা করতে পারেন


2

বাশ (213) (223)

read i
p=0
d=1
printf '\n%.0s' `seq $i`
for l in {A..Z}
do (($p==$i-1))&&((p=$p*-1))
(($i==1))&&p=0
(($p!=0))&&echo -en "\033[s\033[${p#-}A"
[[ "$l" == "B" ]]&&l="Bash"
echo -en $l"\033[s\033[${p#-}B"
((p++))
done

গৌণ টুইট এবং আমরা 213 এ নেমে এসেছি।

আসলটির একটি ছোটখাটো বাগ ছিল। পরীক্ষিত এবং বাশ সংস্করণ 4.2.37 এ কাজ করার জন্য নিশ্চিত করেছেন।

বাগ এবং কিছু টিপস নির্দেশ করার জন্য @ মান্যাটওয়ার্ককে ধন্যবাদ।


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

পছন্দ করুন যাইহোক ধন্যবাদ!
Okw

আমি মনে করি আউটপুট আস্তে আস্তে নিম্নোক্ত হওয়ায় কোথাও কোথাও ছোটখাটো বাগ রয়েছে। (কমপক্ষে ৪.৩ বাশে।) আকারটি ১৯৪ টি অক্ষরে কমাতে কিছু ছোটখাটো উন্নতি হয়েছে: গাণিতিক মূল্যায়নে সিগিল বাদ দিন, ডাবল-
কোটড

;এটিকে সামান্য কিছুটা আরও বেশি পঠনযোগ্য করার জন্য আপনি কি নতুন কিছুর পরিবর্তে নিউলাইনগুলি ব্যবহার করতে পারেন ? এটি আপনার গল্ফ স্কোরকে প্রভাবিত করবে না
ডিজিটাল ট্রমা

2

হাস্কেল - 432 বাইট (দুর্ভাগ্যক্রমে ...)

এটি খাঁটিভাবে সম্পন্ন করার প্রত্যাশার চেয়ে অনেক বেশি শক্ত হয়ে উঠেছে, সুতরাং বিশাল বাইট গণনা। আমি নিশ্চিত যে আমি (বা কেউ) আরও ভাল করতে পারব, তবে আমি এটির জন্য অনেক বেশি সময় ব্যয় করেছি। গল্ফযুক্ত সংস্করণটি নিম্নরূপ:

import Data.Matrix
import Data.Vector(toList)
r=repeat
s h=y h$l(take 26(case h of 1->r 1;_->concat$r$[h,h-1..1]++[2..h-1]))['A'..'Z']$matrix h 32(const ' ')<|>matrix h 1(const '\n')
l _[]m=m
l(x:i)(r:e)m=l i e$u m(let z=26-length i in if z<9 then z else z+6)x r
l _ _ m=m
u m c r h=case h of 'H'->t c r"Haskell"m;_->setElem h(r,c)m
t _ _[]m=m
t c r(x:i)m=t(c+1)r i$setElem x(r,c)m
y h m=concat[toList$getRow x m|x<-[1..h]]

চালানোর জন্য কোডটি লোড করুন ghciএবং আপনার পছন্দসই উচ্চতাটি putStr $ s Intকোথায় Intতা কার্যকর করুন । আপনি যোগ করতে পারে

import System.Environment
main :: IO ()
main = fmap (s . read . head) getArgs >>= putStr

importএকটি পাঠ্য ফাইলে s এর অধীনে এটি সংকলন করুন ghcএবং কমান্ড লাইন আর্গুমেন্ট হিসাবে উচ্চতাটি দিন। অবরুদ্ধ সংস্করণ:

import System.Environment
import Data.Matrix
import Data.Vector (toList)

main :: IO ()
main = fmap (sawtooth . read . head) getArgs >>= putStr

type M = Matrix Char

sawtooth :: Int -> String
sawtooth height = let mat     = matrix height 32 (const ' ') <|> matrix height 1 (const '\n')
                      numbers = take 26 (case height of 1 -> repeat 1
                                                        _ -> concat $ repeat $ [height,height-1..1]++[2..height-1])
                      chars   = ['A'..'Z']
                  in toString height $ makeMatrix numbers chars mat

makeMatrix :: [Int] -> String -> M -> M
makeMatrix []     []     mat = mat
makeMatrix (x:xs) (s:ss) mat = makeMatrix xs ss $ updateMatrix
                                                    mat (let z = 26 - length xs in if z < 9 then z else z + 6) x s
makeMatrix _      _      mat = mat

updateMatrix :: M -> Int -> Int -> Char -> M
updateMatrix mat col row char = case char of 'H' -> insertHaskell col row "Haskell" mat
                                             _   -> setElem char (row, col) mat

insertHaskell :: Int -> Int -> String -> M -> M
insertHaskell _   _   []     mat = mat
insertHaskell col row (x:xs) mat = insertHaskell (col+1) row xs $ setElem x (row, col) mat

toString ::Int -> M -> String
toString height mat = concat [ toList $ getRow x mat | x <- [1..height] ]

আমি বিশ্বাস করি আপনি প্রতিস্থাপন করতে পারেন constসঙ্গে pure(কাজগুলির জন্য আবেদন উদাহরণস্বরূপ ব্যবহার করে) কয়েক বাইট সংরক্ষণ করুন।
ফল এশোলং ফল

2

সি # / LINQ:

using System;
using System.Linq;

namespace SawtoothAlphabet
{
    class Program
    {
        static void Main(string[] args)
        {
            int N = Int32.Parse(args[0]);   // eg 4
            Console.WriteLine(
                String.Join(Environment.NewLine, Enumerable.Range(0, N).Select(line =>
                    String.Concat(Enumerable.Range(0, 26).Select(i =>
                        line == Math.Abs(i % (2 * (N - 1)) - (N - 1))
                            ? (i == 2) ? "C#" : Char.ConvertFromUtf32(i + 'A')
                            : (i == 2) ? "  " : " ")
            ).TrimEnd())));
        }
    }
}

সংক্ষিপ্ত ব্যাখ্যা: Enumerable.Range(0, N).Select(...)প্রতিটি লাইনের জন্য একটি স্ট্রিং উত্পন্ন করে যা শেষ পর্যন্ত একক স্ট্রিংয়ের সাথে সংমিশ্রিত হয় String.Join(Environment.NewLine, ...)। প্রতিটি লাইনের সাথে আমরা সমস্ত 26 টি অক্ষরের সাথে আবর্তিত হয়েছি Enumerable.Range(0, 26).Select(...), ল্যাম্বডা এক্সপ্রেশনের শুরুতে পরীক্ষাটি নির্ধারণ করে যে কোনও অক্ষর বা স্থান তৈরি করতে হবে কিনা i==2"সি" এর জন্য পরীক্ষা করে এবং এটি "সি #" বা দুটি ফাঁকরেখার উপর নির্ভর করে রেখার উপর নির্ভর করে । String.Concat(...)ধর্মান্তরিত ফলে IEnumerable<char>তা ক্ষণস্থায়ী আগে একটি স্ট্রিং প্রতিটি লাইন জন্য TrimEnd(...)দূরে পরিচ্ছন্নভাবে ফালা কোনো চিহ্ন হোয়াইটস্পেস করতে।


1

পিএইচপি (216) (205)

নতুন সংস্করণ:

$b=array_fill(65,26,' ');$b[80]='   ';$b=array_fill(0,$i,$b);for($j=--$i,$x=64;++$x<91;$i||$j=0){$b[$j][$x]=chr($x);$x==80&&$b[$j][$x]='PHP';$j+=($d=$j<($d?$i:1))*2-1;}echo join("\n",array_map('join',$b));

পুরাতন রুপ:

$b=array_fill(0,$i,array_fill(0,28,' '));for($j=--$i,$x=-1;++$x<28;$i||$j=0){$q=&$b[$j];$q[$x]=chr($x-($x&16)/8+65);$x==15&&($q[++$x]='H')*$q[++$x]='P';$j+=($d=$j<($d?$i:1))*2-1;}echo join("\n",array_map('join',$b));

ভেরিয়েবলটি উচ্চতা হতে পারে বলে প্রত্যাশা করে।


1

সি, 214 169 বাইট, কোনও পিছনের স্থান নেই

তাদের সহায়তার পরামর্শের জন্য @ এডসি 65 এবং @ টলোসকে ধন্যবাদ।

#define C ((c-i+n-65)%z&&(c+i+n-67)%z)
n,i,m,c,z;main(){scanf("%d",&n);z=n<2?1:2*n-2;for(;i++<n;){for(m=c=64;c++<90;)m=C?m:c;for(c=64;c++<m;)putchar(C?32:c);puts("");}}

3
এটি একটি হারানো লড়াই, তবে আমি জেদ করছি: # অন্তর্ভুক্ত <stdio.h> অনেক ক্ষেত্রেই প্রয়োজন হয় না, এটি সিসিসি বা অন্য কোনও সংকলক হোক। এটি যাইহোক স্ট্যান্ডার্ড এবং বৈধ সি।
edc65

2
@ edc65: আপনি "বৈধ সি" বিবেচনা করুন তার উপর নির্ভর করে। এটি আফাইক বৈধ কেএন্ডআর সি, তবে এএনএসআই / আইএসও সি দাবি করে যে বৈচিত্র্যমূলক ফাংশনগুলি (যার মধ্যে রয়েছে scanfএবং অন্তর্ভুক্ত রয়েছে printf) প্রোটোটাইপ দেওয়া হবে, অন্যথায় আপনি অনির্ধারিত আচরণ পাবেন। #include <stdio.h>হয়, অবশ্যই, সবচেয়ে কম পথ উভয় প্রোটোটাইপ দিতে scanfএবং printf
celtschk

কোডস গল্ফে আমার জন্য @ এসেলটস্ক বৈধ কেএন্ডআর যথেষ্ট। এবং 'অনেক ক্ষেত্রে' (যখন উদাহরণস্বরূপ কেবল পুট ব্যবহার করা হয়) বৈধ C89। আমি যে চাপটি বের করতে চাই তা হ'ল এটি সিসির কোনও আশ্চর্য আচরণ নয়। (যাইহোক, বৈকল্পিক ফাংশন সম্পর্কে নোটের জন্য
কথাগুলি

1
গ্লোবালগুলি টাইপ ইন্ট হয় এবং শূন্যে আদি হয়। intআপনি কিছু না ফিরিয়ে দিলে মূলটির জন্য ঘোষণাপত্র ড্রপ করতে পারে। অতিরিক্ত পেরেনগুলি ফেলে দিতে পারে, টেনার্নি স্টেটমেন্টের ' 'সাথে 32এবং এর if(!C)m=cসাথে প্রতিস্থাপন করতে পারে এবং আমি যেমন শিখেছি (উপরে) 18 অক্ষরের পরিবর্তে প্রতিস্থাপন printf("\n")করতে পারি puts(""):n,i,m,c,z;main(){;scanf("%d",&n);z=n<2?1:2*n-2;for(;i<n;i++){for(m=c=65;c<91;c++)m=C?m:c;for(c=65;c<=m;c++)printf("%c",C?32:c);puts("");}}

1

জাভাস্ক্রিপ্ট ( 204 185 150)

h=m=4;d=h>1?-1:0;o=[];for(a=0;a<35;a++){for(r=h;r;r--)o[r]=(o[r]||"")+(r==m?"ABCDEFGHIJavascriptKLMNOPQRSTUVWXYZ"[a]:" ");if(a<9||a>17){m+=d;if(m<2||m==h)d=-d}}console.log(o.join("\n"))

সম্পাদনা

অ্যারে এবং। জোইন ("\ n") না তৈরি করে 13 বাইট সংরক্ষণ করা হয়েছে। লুপগুলির জন্য উল্টানো প্রয়োজনীয়। তারপরে, সি কোডিং পুত্রের সহায়তায়, আরও 12 বাইট সংরক্ষণের জন্য কোডটি পুরোপুরি খুব চালাক হয়ে উঠল।

এখানে পঠনযোগ্য সংস্করণটি যুক্তিযুক্ত পরিবর্তনটি দেখায়।

for (row = height; row; row--) {
    rowOfNextActiveLetter = 1;
    direction = height > 1 ? -1 : 0;
    output = "";
    for (a = 0; a < 35; a++) {
        output += (row == rowOfNextActiveLetter ? "ABCDEFGHIJavascriptKLMNOPQRSTUVWXYZ"[a] : "");
        if (a < 9 || a > 17) {
            rowOfNextActiveLetter -= direction;
            if (rowOfNextActiveLetter < 2 || rowOfNextActiveLetter == height)direction = -direction
        }
    }
    console.log(output)
}

গল্ফড (161):

for(r=h;r;r--){m=1;d=h>1?-1:0;o="";for(a=0;a<35;a++){o+=(r==m?"ABCDEFGHIJavascriptKLMNOPQRSTUVWXYZ"[a]:" ");if(a<9||a>17){m-=d;if(m<2||m==h)d=-d}}console.log(o)}

গল্ফড এবং অচল (149):

for(r=h;r;r--,console.log(o))for(m=1,d=h>1?1:0,o="",a=0;a<35;)if(o+=r==m?"ABCDEFGHIJavascriptKLMNOPQRSTUVWXYZ"[a]:" ",a<9|a++>17)d=(m+=d)<2|m==h?-d:d

আমি এটি পূর্ণ বুঝতে না পারলেও এটি পছন্দ করি। তবে যাইহোক আপনি সাবস্ট্রাস্টার অপসারণ এবং সরাসরি সূচক ব্যবহার করে 9 টি অক্ষর কেটে ফেলতে পারেন .substr(a,1)=>[a]
edc65

আপনি 182 এর জন্য বিটওয়াইজ অপারেটর এবং h=m=4;d=1<h?-1:0;o=[];for(a=0;35>a;a++){for(r=h;r;r--)o[r]=(o[r]||"")+(r==m?"ABCDEFGHIJavascriptKLMNOPQRSTUVWXYZ"[a]:" ");if(9>a|17<a)if(m+=d,2>m||m==h)d=-d}console.log(o.join("\n"))
কোয়েলসিং পুনরাবৃত্তির

ওহো, একটি খুব বেশি জায়গা পরিষ্কার করেছে
জন নওলিন

1

কে, 60 বাইট

`0:'{+{x!y}.'+(26#{(!x),|1_!x-1}x;(((x-1)#" "),)'`c$65+!26)}

বেশ সোজা, এবং দেখে মনে হচ্ছে যে আমি জে সমাধানটি সরিয়ে দিয়েছি। :)

প্রথমে একটি বর্ণমালা তৈরি করুন:

  `c$65+!26
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"

এবং উপযুক্ত দৈর্ঘ্যের একটি তৃতীয় তরঙ্গ:

  26#{(!x),|1_!x-1}5
0 1 2 3 4 3 2 1 0 1 2 3 4 3 2 1 0 1 2 3 4 3 2 1 0 1

বর্ণমালা প্রতিটি অক্ষর নেতৃস্থানীয় স্পেস দিয়ে প্যাড:

  (((5-1)#" "),)'"ABC"
("    A"
 "    B"
 "    C")

বর্ণমালা এবং বর্গাকার তরঙ্গ একসাথে জিপ করুন এবং প্রতিটি সারি ঘোরান:

  +(0 1 2;("  A";"  B";"  C"))
((0
  "  A")
 (1
  "  B")
 (2
  "  C"))

  {x!y}.'+(0 1 2;("  A";"  B";"  C"))
("  A"
 " B "
 "C  ")

এবং এর স্থানান্তর আমাদের উত্তর:

  +{x!y}.'+(0 1 2;("  A";"  B";"  C"))
("  C"
 " B "
 "A  ")

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


0

সি: 142 139 টি অক্ষর

ভয়াবহভাবে দীর্ঘ, আমি এটি কিছুটা ছোট করতে সক্ষম হবে বলে আশা করি:

char a[26][27],i,j,p,d;main(n){for(scanf("%d",&n);i<26;d^=!p^p+2>n,p+=d-(d^n>1),i++)for(j=n;j--;a[j][i]=p^j?32:i+65);while(n)puts(a[--n]);}

সামান্য আরও পঠনযোগ্য:

char a[26][27], i, j, p, d;
main(n) {
    for (
        scanf("%d", &n);
        i < 26;
        d ^= !p ^ p + 2 > n,
        p += d - (d ^ n > 1),
        i++
    )
        for (
            j = n;
            j--;
            a[j][i] = p ^ j
                ? 32
                : i + 65
        );

    while (n)
        puts(a[--n]);
}

সম্পাদনা: আমি "কোনও পিছনের জায়গাগুলি" মিস করিনি - তবে আমি ফিরে আসব।


0

স্কালা, 246 বাইট

def f(h:Int)={val a=Seq.fill(h)(Array.fill(32)(' '));var(r,x,d)=(h-1,0,if(h==1)0 else-1);def p(c:Char){a(r)(x)=c;x+=1};for(c<-'A'to'Z'){p(c);if(c==83)"cala"foreach p;r+=d;if(r==0|r==h-1)d*= -1};for(z<-a)println(new String(z)replaceAll(" +$",""))}

পুনরায় ফর্ম্যাট করা এবং মন্তব্য করা হয়েছে:

def f(h: Int) = {
  val a = Seq.fill(h)(Array.fill(32)(' '));
  // r - row; x - x coordinate, column; d - direction
  var (r, x, d) = (h - 1, 0, if(h==1) 0 else -1); 
  def p(c: Char) { // p for "put the character"
    a(r)(x) = c;
    x += 1
  };
  for(c <- 'A' to 'Z') { 
    p(c);
    if(c == 83)      // 83 == 'S'
      "cala" foreach p;
    r += d;
    if(r == 0 | r == h - 1)     // | is shorter than || 
      d *= -1
  };
  for(z <- a)
    println(new String(z) replaceAll (" +$", ""))  // trimming trailing whitespace
}

ফলাফল:

scala> f(4)
   D     J     P         V
  C E   I K   O Q       U W
 B   F H   L N   R     T   X Z
A     G     M     Scala     Y

scala> f(5)
    E       M           U
   D F     L N         T V
  C   G   K   O   Scala   W
 B     H J     P R         X Z
A       I       Q           Y

scala> f(1)
ABCDEFGHIJKLMNOPQRScalaTUVWXYZ

0

পাইথন - 137

ইনপুট ieg সংরক্ষণ করা i=8

l=[""]*h;k=j=0;y=h-1;exec'l[y]+=" "*(j-len(l[y]))+chr(k+65)+"ython"*(k==15);j=len(l[y]);y-=1^k/(h-(h>2))%2*-2;k+=1;'*26;print"\n".join(l)

0

কোলাহল

এখানে একটি পরিষ্কার কার্যকরী সংস্করণ: এটি সংক্ষিপ্ত করার পরামর্শগুলি স্বাগত।

(define (sawtooth n)
  (define (ST i d m lns)
    (if (null? m) 
        lns
        (let* ([v (first m)]
               [spc (make-string (string-length v) #\space)]
               [I (+ i d)])
          (ST I
              (if (or (zero? I) (= (sub1 n) I)) (* d -1) d)
              (rest m)
              (for/list ([ln lns] [j n])
                       (~a ln (if (= i j) v spc)))))))
  (displayln
   (string-join 
    (ST (sub1 n)
        (if (= n 1) 0 -1) 
        (string-split "A B C D E F G H I J K L M N O P Q Racket S T U V W X Y Z")
        (make-list n "\n")))))

আউটপুট

> (sawtooth 1)
ABCDEFGHIJKLMNOPQRacketSTUVWXYZ

> (sawtooth 2)
 B D F H J L N P Racket T V X Z 
A C E G I K M O Q      S U W Y 

> (sawtooth 8)
       H                  V     
      G I                U W    
     F   J              T   X   
    E     K            S     Y  
   D       L     Racket       Z 
  C         M   Q               
 B           N P                
A             O  
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.