আইফেল টাওয়ারস: "এ" গুলি থেকে একটি বড় "এ" তৈরি করুন


20

একটি ফাংশন তৈরি করুন যা কয়েকটি লাইন দেয় n, একটি করে bigA

  • এর অনুভূমিক বারটি bigAঅবশ্যই মাঝারি সারিতে হতে হবে, বা যদি nহয় তবে এর দুটি নীচে
  • আউটপুট জন্য একটি monospace ফন্ট অনুমান

আউটপুটটি একটি স্ট্রিং (বা অনুরূপ, যেমন অক্ষরের অ্যারে) হওয়া উচিত লাইনগুলি ভাঙ্গার জন্য স্পষ্ট লাইনব্রেকগুলি সহ এবং বাম-প্যাডিংয়ের জন্য সঠিক সাদা স্থান সহ (আপনি 4 টি স্পেস ধরে নিতে পারবেন না)। ডানদিকে কোনও সাদা জায়গা থাকতে পারে।

উদাহরণ

n = 1

A

n = 2

 A
AAA

n = 3

  A
 AAA
A   A

n = 4

   A
  A A
 AAAAA
A     A

n = 5

    A
   A A
  AAAAA
 A     A
A       A

এটি ছোট "এইচ" এস থেকে একটি "এইচ" তৈরি করে অনুপ্রাণিত


আমি কি ডান পাশে সাদা স্থান যুক্ত করতে পারি? এছাড়াও, নতুন লাইনের পিছনে প্রবেশের অনুমতি রয়েছে?
বুবলার

@ বুবলার, ডান দিকের যে কোনও শ্বেতস্থান ঠিক আছে, কোনও অনুমানযোগ্য নতুন লাইন নেই
বুদ

আমাদের কি স্ট্রিংগুলির পরিবর্তে 2D চরিত্রের অ্যারেগুলি ফেরত দেওয়ার অনুমতি দেওয়া হচ্ছে? (ইঙ্গিত: এটি সাধারণত যে কোনও ধরণের আউটপুট দেওয়ার অনুমতি দেওয়ার জন্য সুপারিশ করা হয়)
অলিভিয়ার গ্রাগোয়ার

1
@ অলিভিগ্রগ্রোওয়ের অবশ্যই, যতক্ষণ না রেখাগুলির স্পষ্ট বিরতি থাকবে (যেমন একটি "\ n" উপাদান, নেস্টেড অ্যারে)
বুড

1
@TonHospel, না, যে সত্যিই এই purporse পরাজিত
বাড

উত্তর:


12

05 এ বি 1 ই , 13 বাইট

কোড:

Ð;î¹)'A1376SΛ

05AB1E এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা:

Ð                  # Triplicate the input.
 ;î                # Compute ceiling(n / 2).
   ¹               # Push the first input again.
    )              # Wrap into an array. For input 7, this would result in:
                     [7, 7, 4, 7].
     'A            # Push the character 'A'
       1376S       # Push the array [1, 3, 7, 6]. These are the directions of the canvas.
                     This essentially translates to [↗, ↘, ↖, ←].
            Λ      # Write to canvas using the previous three parameters.

ক্যানভাস

আমার সম্ভবত ক্যানভাসটি কিছুটা বেশি ডকুমেন্ট করা উচিত (এবং আরও অনেকগুলি ক্রিয়াকলাপ), তবে এটি মূলত এটির সংস্থান করে। প্রদত্ত প্যারামিটার ধরণের ভিত্তিতে ক্যানভাসে বিভিন্ন 'মোড' রয়েছে। ক্যানভাস কমান্ডের তিনটি পরামিতি রয়েছে: <দৈর্ঘ্য> <স্ট্রিং> <দিকনির্দেশ>

যেহেতু দৈর্ঘ্য এবং দিকের পরামিতিগুলি তালিকাগুলি, তাই নির্বাহের জন্য নির্দেশগুলির একটি সেট তৈরি করতে এই তালিকাগুলিকে 'জিপ' করে। স্ট্রিং প্যারামিটারটি কেবলমাত্র অক্ষর A , সুতরাং এটি সমস্ত নির্দেশাবলীর দ্বারা ব্যবহৃত পূর্ণ চরিত্র। ক্যানভাসটি নিম্নলিখিত নির্দেশাবলীর সেট হিসাবে ব্যাখ্যা করে (ইনপুট 7 এর জন্য):

  • A দিকের স্ট্রিং সহ 7 দৈর্ঘ্যের একটি রেখা আঁকুন
  • A দিকের স্ট্রিং সহ 7 দৈর্ঘ্যের একটি রেখা আঁকুন
  • A স্ট্রিংটি direction দিক দিয়ে 4 দৈর্ঘ্যের একটি রেখা আঁকুন
  • A দিকের স্ট্রিং সহ 7 দৈর্ঘ্যের একটি রেখা আঁকুন

নির্দেশাবলী নিম্নলিখিত পদ্ধতিতে অনুবাদ করা হয়েছে:

7   0   1
  ↖ ↑ ↗
6 ← X → 2
  ↙ ↓ ↘
5   4   3

যদি কিছুই আউটপুট করা না হয় তবে 05AB1E স্বয়ংক্রিয়ভাবে ক্যানভাস ফলাফলকে আউটপুট করে।


1
ক্যানভাস ব্যাখ্যার জন্য আপনাকে অনেক ধন্যবাদ, এটি একটি উজ্জ্বল বৈশিষ্ট্য :-)
কলডো

টিআইএল ট্রিপলিকেট হ'ল একটি শব্দ
কুইন্টেক

@ thecoder16 চতুর্ভুজ, কুইন্টুলিকেট, ..., অনুলিপি
ম্যাজিক অক্টোপাস

কি দারুন. আমি অনুলিপি নিয়ে সন্দেহ ছিলাম, তবে অন্য সকলের মতোই এটি বিদ্যমান। অবশ্যই আমাদের ইংরেজী
এক্সডে

1
@ কেভিন ক্রুজসেন ওহে, সমস্ত দেরী জবাবের জন্য ক্ষমা চেয়েছি, গত কয়েক সপ্তাহ ধরে এটি আমার জন্য অবিশ্বাস্যভাবে ব্যস্ত ছিল (আমি কেবল 72২ ঘন্টা ঘুমিয়েছি গত 72২ ঘন্টা হাহা) তাই আমি মনে করি না যে আমি করতে পেরেছি এখনই যেকোন কিছু করুন, তবে আপনি চাইলে এটি টিপ পৃষ্ঠায় নির্দ্বিধায় যোগ করুন।
আদনান

6

কাঠকয়লা , 17 15 বাইট

NθP×θAM⊘θ↗P^×θA

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

Nθ

ইনপুট n

P×θA

বড় এর অনুভূমিক বার মুদ্রণ করুন A। (এমনকি সংখ্যার জন্য, n+1তবুও ডান দিকটি ওভারল্যাপ করে)

M⊘θ↗

বড় শীর্ষে যান A

P^×θA

বড় উভয় পক্ষ মুদ্রণ করুন A


4

পাইথন 2 , 80 বাইট

lambda n:'\n'.join(' '*(n+~i)+('A'+' A'[i==n/2]*n*2)[:i*2]+'A'for i in range(n))

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

কাঙ্ক্ষিত আউটপুটটি বাম সাদা অংশ, বাম Aপ্লাস মধ্যম হোয়াইটস্পেস বা Aডানদিকে ভাগ করুন A। একটি নির্দিষ্ট স্ট্রিং উপর কাটা ব্যবহার করে মাঝের অংশটি গণনা করুন Comp এটি প্রথম লাইনটি তৈরি করতে একইভাবে ব্যবহার করতে দেয়।


4

স্ট্যাক্স , 15 বাইট

┴3╬*ôP^x'┌_╓J²♫

এটি চালান এবং এটি ডিবাগ করুন

আনপ্যাকড, নিরবচ্ছিন্ন এবং মন্তব্য করা হয়েছে, প্রোগ্রামটি দেখতে এমন দেখাচ্ছে।

m       map over [1 .. input] using rest of the program, output each result
'A      "A" literal
xhi=    is the iteration index equal to (integer) half the input?
65*     multiply by 65 (character code of "A")
]i*     repeat that character (" " or  "A") i times
+       concat to initial "A"
x)      left pad to the original input
|p      palindromize (concatenate the reverse minus the last character)

এটি চালান



4

পাইথন 3.6 , 79 বাইট বা 73 বাইট

বর্ণের অনুভূমিক অংশগুলি সারিবদ্ধ করার জন্য এফ-স্ট্রিংগুলি ব্যবহার করে :

lambda n:'\n'.join(f"{'A'+' A'[i==n//2]*2*i:>{n+i}}"[:-1]+'A'for i in range(n))

\bএকটি মুছতে ব্যবহার করার সাথে A(সম্ভবত প্রতারণা):

lambda n:'\n'.join(f"{'A'+' A'[i==n//2]*2*i:>{n+i}}\bA"for i in range(n))


3

জে , 65 বাইট

f=:3 :''' A''{~1(([:(<@;]+i.@+:)<.@-:)y)}([:(}:@|."1,.])=/~@i.)y'

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

এটি প্রায় কমিয়ে আনা যায়। কেবলমাত্র ক্রিয়াটি প্রশমিত করে 12 বাইট, তবে আমার এটি করতে সমস্যা হয়।

ব্যাখ্যা:

3 : '...' একটি সুস্পষ্ট ওয়ান-লাইন ক্রিয়া বোঝায়

y যুক্তি হল

=/~@i. যুক্তি আকারের সাথে একটি পরিচয় ম্যাট্রিক্স তৈরি করে

    =/~@i. 4
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1

([:(}:@|."1,.]) বাদ দেওয়া প্রতিটি সারির শেষ উপাদানগুলির সাথে তার মিরর অনুলিপি সহ পরিচয় ম্যাট্রিক্স প্রেন্ড করে।

    ]a =. ([:(}:@|."1,.])=/~@i.) 4
0 0 0 1 0 0 0
0 0 1 0 1 0 0
0 1 0 0 0 1 0
1 0 0 0 0 0 1

1(...)}(...) বাম দ্বারা নির্বাচিত, তার ডান আর্গুমেন্টে 1 পজিশনে পরিবর্তিত হয়

([:(<@;]+i.@+:)<.@-:) - নিম্নলিখিতটি করে নির্বাচনটি প্রস্তুত করে:

               <.@-: - halves the argument and finds the floor (finds the row number)
    <@;              - box the row, followed by a list of columns:  
        ]+i.@+:      - a list form the argumnt to the doubled row number

    ([:(<@;]+i.@+:)<.@-:) 4
┌───────────┐
│┌─┬───────┐│
││2│2 3 4 5││
│└─┴───────┘│
└───────────┘

    1(([:(<@;]+i.@+:)<.@-:) 4)}a
0 0 0 1 0 0 0
0 0 1 0 1 0 0
0 1 1 1 1 1 0
1 0 0 0 0 0 1

' A'{~ যেখানে 0 আছে সেখানে 0 এবং 'A' এর জায়গায় একটি স্থান সরবরাহ করে re

    ' A'{~1(([:(<@;]+i.@+:)<.@-:) 4)}a
   A   
  A A  
 AAAAA 
A     A




2

জাপট -R , 20 19 বাইট

Çç" A"gZ¶Uz¹i'A êÃû

চেষ্টা করে দেখুন


ব্যাখ্যা

                        :Implicit input of integer U
Ç                       :Create the range [0,U) and pass each Z through a function
         Uz             :  Floor divide U by 2
       Z¶               :  Test for equality with Z (true=1, false=0)
  " A"g                 :  Get the character in the string " A" at that index
 ç                      :  Repeat Z times
           ¹            :  (Closes a few nested methods)
            i'A         :  Prepend an "A"
                ê       :  Palindromise
                 Ã      :End function
                  û     :Centre pad each element to the length of the longest element
                        :Implicitly join with newlines and output

বিকল্প

(এই আশায় যে এটি আমার কিছু সঞ্চয় সঞ্চয় করতে সহায়তা করবে!)

Æ'AúXÄ" A"gX¶Uz¹êÃû

1
আর একটি বিকল্প যা বাইট দীর্ঘ:ç h'AUz)¬íp ®i'A êÃû
ETH প্রোডাকশনস

@ETHproductions প্রতিস্থাপন p সঙ্গে ²এবং এটি 19 বাইট।
শেগি

আমার একাকীত্বের চেয়ে +1 উপায় ভাল ।
অলিভার


1

জেলি , 23 20 19 18 বাইট

=þ`o\L‘HĊƲ¦UŒBị⁾A 

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

=þ`আকারের একটি পরিচয় ম্যাট্রিক্স তৈরি করে n

L‘HĊƲ এর সাথে অনুভূমিক বারের সারি সূচকটি সন্ধান করে ¦ বাছাই করে এবং প্রয়োগo\ করে যা বারটি তৈরি করে তার ।

U প্রতিটি সারি বিপরীত করে তাই আমাদের "এ" এর উল্টোটি না থাকে এবং ŒB উল্টোটি না থাকে (প্যালিনড্রাইজ করা; ভেক্টরাইজ করা হয়) "এ" এর দ্বিতীয়ার্ধ তৈরি করে।

ị⁾A(বিন্যাসে ছাঁটাই হচ্ছে এমন একটি স্থানের সাথে) 0এর সাথে স্পেস এবং 1s এর সাথে প্রতিস্থাপন করে A


1

টি-এসকিউএল , 182 177 বাইট

DECLARE @n INT=5DECLARE @ INT=0a:DECLARE @s VARCHAR(9)=STR(POWER(10,@),@n)PRINT REPLACE(REPLACE(@s+REVERSE(LEFT(@s,@n-1)),'1','A'),'0',IIF(@=@n/2,'A',' '))SET @+=1IF @<@n GOTO a

প্রথম সংস্করণ (182 বাইট সহ):

DECLARE @n INT=5DECLARE @ INT=0WHILE @<@n BEGIN DECLARE @s VARCHAR(9)=STR(POWER(10,@),@n)PRINT REPLACE(REPLACE(@s+REVERSE(LEFT(@s,@n-1)),'1','A'),'0',IIF(@=@n/2,'A',' '))SET @+=1 END

উপরের সংস্করণটি @ n = 9 পর্যন্ত কাজ করে।

এখানে আরও একটি সংস্করণ রয়েছে, যা @ n = 23 পর্যন্ত কাজ করে তবে এতে দুটি অতিরিক্ত বাইট রয়েছে:

DECLARE @n INT=5DECLARE @ INT=0WHILE @<@n BEGIN DECLARE @s VARCHAR(23)=STR(POWER(10.,@),@n)PRINT REPLACE(REPLACE(@s+REVERSE(LEFT(@s,@n-1)),'1','A'),'0',IIF(@=@n/2,'A',' '))SET @+=1 END

Ungolfed:

DECLARE @n INT=5

DECLARE @i INT=0
WHILE @i<@n BEGIN
    DECLARE @s VARCHAR(9)=STR(POWER(10,@i),@n)
    PRINT REPLACE(REPLACE(@s+REVERSE(LEFT(@s,@n-1)),'1','A'),'0',IIF(@i=@n/2,'A',' '))
    SET @i+=1
END

1

হাস্কেল , 98 97 95 বাইট এবং 109 বাইট

দুটি খুব ভিন্ন পন্থা। প্রথম (95 বাইট):

c!n=([1..n]>>c)++"A"
f n=unlines[" "!(n-x)++drop 3([" "!(abs$n`div`2-x+1)!!0]!(2*x))|x<-[1..n]]

এবং দ্বিতীয় (109 বাইট):

m True='A'
m _=' '
g n=unlines[[m(abs(n-j)==l||l==q&&elem j[q+1..q+n])|j<-[1..2*n]]|l<-[0..n-1],q<-[n`div`2]]

তাদের এখানে চেষ্টা করুন! ; এখানে পরিবর্তিত সংস্করণ চেষ্টা করুন!

এখানে তৃতীয় সংস্করণ চেষ্টা করুন!


পিপিসিজিতে আপনাকে স্বাগতম! ইনফিক্স অপারেটর হিসাবে সংজ্ঞাl দিয়ে আপনি আপনার প্রথম পদ্ধতির একটি বাইট সংরক্ষণ করতে পারেন ।
লাইকোনি

m True='A'একটি সংক্ষিপ্ত করা m b|b='A'
লাইকোনি

দেখা গেল যে দুটি বাইটও সংরক্ষণ করা যায়। ধন্যবাদ! :)
রাদেক

1

পাইথন 2 , 70 বাইট বা 65 বাইট

স্ট্রিংগুলির তালিকা গ্রহণযোগ্য ফলাফল, যেমন @ বাড মন্তব্যে বলেছেন।

lambda n:['%*sA\n'%(n+i,('A'+i*2*' A'[i==n/2])[:-1])for i in range(n)]

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


আপাতদৃষ্টিতে প্রতারণামূলক সমাধান, ব্যবহার করে \b। এটি টিআইও-তে চমত্কার দেখায়, কনসোলে এটি কাজ করে।

lambda n:['%*s\bA\n'%(n+i,'A'+i*2*' A'[i==n/2])for i in range(n)]

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


0

জাভাস্ক্রিপ্ট, 124 বাইট

মোটামুটি নিষ্পাপ সমাধান, এটি জেএস দক্ষতা অনুশীলনের জন্য একটি শট দিয়েছে।

for(i=-1,p=" ".repeat(n-1)+"A ";++i<n;console.log(i-~~(n/2)?p:p.slice(0,i)+"A".repeat(n)),p=p.slice(1,n)+" "+p.slice(n-1)){}

প্যাক করা নেই

for(
 //create the first line
 i=-1, p=" ".repeat(n-1)+"A "; 
 ++i<n;
 console.log( 
 //if we are not at the bar
      i-~~(n/2)?
 //otherwise, use the modified previous line
      p
 //slice the start of the previous line and add As
      :p.slice(0,i)+"A".repeat(n)), 
 //add a space in between the previous line and remove padding on each side
 p=p.slice(1,n)+" "+p.slice(n-1)){}


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