বর্ণমালাটিকে একটি সর্পিলে রোল করুন


22

কোনও প্রোগ্রাম বা ফাংশন লিখুন যা দেওয়া হলে n, nলাতিন বর্ণমালায় দীর্ঘায়িত একটি সর্পিল অক্ষর প্রিন্ট করবে ABCDEFGHIJKLMNOPQRSTUVWXYZযা প্রয়োজন অনুসারে পুনরাবৃত্তি করবে। এই সর্পিল বর্ণমালার মাধ্যমে কেবল সামনের দিকে চলতে হবে।

বর্ণমালা সর্পিল সম্পর্কিত , যদিও সর্পিল বর্ণমালার সামনে এবং পিছনের দিকে চলে এবং সর্পিল স্থির থাকে।

পরীক্ষার মামলা

4   AB
    DC

40   UVWXYZ
     TGHIJA
    NSFABKB
    MREDCLC
    LQPONMD
    KJIHGFE

0

10  GHIJ
    FAB
    EDC

1000    UVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
        TGHIJKLMNOPQRSTUVWXYZABCDEFGHIJA
        SFABCDEFGHIJKLMNOPQRSTUVWXYZABKB
        REZCDEFGHIJKLMNOPQRSTUVWXYZABCLC
        QDYBMNOPQRSTUVWXYZABCDEFGHIJCDMD
        PCXALEFGHIJKLMNOPQRSTUVWXYZKDENE
        OBWZKDEFGHIJKLMNOPQRSTUVWXALEFOF
        NAVYJCDMNOPQRSTUVWXYZABCDYBMFGPG
        MZUXIBCLCDEFGHIJKLMNOPQREZCNGHQH
        LYTWHABKBABCDEFGHIJKLMNSFADOHIRI
        KXSVGZAJAZGHIJKLMNOPQROTGBEPIJSJ
        JWRUFYZIZYFUVWXYZABCDSPUHCFQJKTK
        IVQTEXYHYXETQRSTUVWXETQVIDGRKLUL
        HUPSDWXGXWDSPUVWXYZYFURWJEHSLMVM
        GTORCVWFWVCROTGHIJAZGVSXKFITMNWN
        FSNQBUVEVUBQNSFABKBAHWTYLGJUNOXO
        ERMPATUDUTAPMREDCLCBIXUZMHKVOPYP
        DQLOZSTCTSZOLQPONMDCJYVANILWPQZQ
        CPKNYRSBSRYNKJIHGFEDKZWBOJMXQRAR
        BOJMXQRARQXMLKJIHGFELAXCPKNYRSBS
        ANILWPQZQPWVUTSRQPONMBYDQLOZSTCT
        ZMHKVOPYPONMLKJIHGFEDCZERMPATUDU
        YLGJUNOXONMLKJIHGFEDCBAFSNQBUVEV
        XKFITMNWVUTSRQPONMLKJIHGTORCVWFW
        WJEHSLMLKJIHGFEDCBAZYXWVUPSDWXGX
        VIDGRKJIHGFEDCBAZYXWVUTSRQTEXYHY
        UHCFQPONMLKJIHGFEDCBAZYXWVUFYZIZ
        TGBEDCBAZYXWVUTSRQPONMLKJIHGZAJA
        SFAZYXWVUTSRQPONMLKJIHGFEDCBABKB
        REDCBAZYXWVUTSRQPONMLKJIHGFEDCLC
        QPONMLKJIHGFEDCBAZYXWVUTSRQPONMD
                                LKJIHGFE

বিধি

  • আপনার ইনপুটটি একটি অ-নেতিবাচক পূর্ণসংখ্যার হবে 0 <= n <= 1000তবে আপনার কোডটি তাত্ত্বিকভাবে কোনও অ-নেতিবাচক পূর্ণসংখ্যাকে পরিচালনা করতে হবে।
  • আপনার আউটপুট ফর্ম্যাটটি কোনও বুদ্ধিমান বিন্যাসে হতে পারে, প্রয়োজনে ডিলিমিটর সহ।
  • আবর্তন এবং প্রতিবিম্ব সমতুল্য।
  • আপনার বর্ণমালা বড় হাতের বা ছোট হাতের অক্ষর হতে পারে।
  • আপনার সর্পিলের শূন্যস্থানগুলি আপনার বর্ণনানুক্রমিক নর-বর্ণমালা দিয়ে পূর্ণ হতে পারে।
  • সর্পিল নিজেই উপযুক্ত যে কোনও আকারের হতে পারে। আয়তক্ষেত্রাকার সর্পিলগুলি ASCII সমাধানগুলির সাথে সর্বোত্তমভাবে কাজ করে তবে গ্রাফিকাল সমাধানগুলি বৃত্তাকার সর্পিলগুলির সাথে সংক্ষিপ্ত হতে পারে।
  • শীর্ষস্থানীয় এবং পিছনের স্থান এবং নিউলাইনগুলি অনুমোদিত।
  • এটি কোড গল্ফ। বাইটের সংক্ষিপ্ত উত্তর (বা সমমানের) জিতেছে।

সর্বদা হিসাবে, যদি কিছু অস্পষ্ট বা ভুল হয় তবে দয়া করে আমাকে মন্তব্যগুলিতে জানান। শুভকামনা এবং ভাল গল্ফিং!


বেশিরভাগ সম্পাদক দীর্ঘায়িত স্ট্রিং মুদ্রণের অনুমতি দেবেন না
t-clausen.dk

@ t-clausen.dk আমি সর্বাধিক সর্বাধিক 32-বিট পূর্ণসংখ্যার স্বাক্ষর রেখেছিলাম। যদি আপনার উপরের বাউন্ডের জন্য আরও ভাল পরামর্শ থাকে তবে আমি এটি সম্পাদনা করে খুশি হব
শেরলক 9

সুন্দর এবং কৌতুকপূর্ণ :-)
জোফান

উত্তর:


12

লোগো, 129 87 বাইট

গ্রাফিকাল সমাধান, ফাংশন হিসাবে বাস্তবায়িত

এটি Calormen.com এর লোগো ইন্টারপ্রেটারে নির্মিত হয়েছিল । Sফাংশন একটি প্যারামিটার হিসাবে অক্ষরের সংখ্যা নেয় এবং তাদের একটি সর্পিল মধ্যে স্বপক্ষে। ফাংশন আউটপুট চিঠি তাদের সর্পিল সঙ্গে আবর্তিত থেকে বিরত ন্যায়পরায়ণ। । আমি স্থির করেছিলাম যে এটি দেখতে সুন্দর লাগছে (এবং গল্ফড 42 বাইট)T চিঠির অরিয়েন্টেশনটি সংশোধন করা বাদ দেওয়া ভাল )। আমি ব্যবধানটি আরও শক্ত করে দিয়েছি যা বাইট গণনা পরিবর্তন করে না। আপনি যদি আসলে একটি বর্ণমালা রোল আপ করেন তবে এটি যাইহোক এটি দেখতে আরও ভাল লাগবে।

আপডেট সংস্করণ (অক্ষর রোল)

TO S:r
PU IF:r[REPEAT:r[LABEL CHAR((REPCOUNT-1)%26)+65
RT 99/SQRT(REPCOUNT)FD 12]]END

আবাহন

নীচে হিসাবে দাওয়াত: S পুনরাবৃত্তি

নমুনা আউটপুট

S 1000

1000 পুনরাবৃত্তির জন্য নমুনা আউটপুট

পুরানো সংস্করণ (অক্ষর সর্বদা খাড়া)

TO T:l:h
RT:h
LABEL CHAR(:l%26)+65
LT:h
END
TO S:r
PU IF:r[REPEAT:r[T REPCOUNT-1 90-HEADING
RT 95/SQRT(REPCOUNT)FD 15]]END

স্থান বাঁচাতে পুরানো আউটপুট সরানো হয়েছে। এটি এখানে দেখুন


জিজ্ঞাসা করবেন না আমি কীভাবে গণিত নিয়ে এসেছি। আমি অনলাইনে সূত্রগুলি অনুসন্ধান করার চেষ্টা করেছি, তবে বেশিরভাগ টার্ন এঙ্গেলটি স্থির রেখে এবং সেগমেন্টের দৈর্ঘ্য বাড়িয়ে সমস্যার সমাধান করেছি, যেখানে আমি বিভাগটির দৈর্ঘ্য স্থির রাখতে এবং কোণ পরিবর্তন করতে চেয়েছিলাম। বিচার এবং ত্রুটি স্থিতিশীল সূত্রের দিকে নিয়ে গেছে বলে মনে হচ্ছে। উইন্ডোজ সামঞ্জস্য করা 95সর্পিলের আঁটসাঁটিকে পরিবর্তন 15করবে এবং অক্ষরগুলির রৈখিক ব্যবধানকে সামঞ্জস্য করবে।
গিটারপিকার

9

জাভাস্ক্রিপ্ট (ES6), 203 201 বাইট

n=>{for(a=[],i=d=k=z=0,p=526,j=1;i<n;){p+=[1,32,-1,-32][d&3];j--||(((z^=1)||k++),j=k,d++);(a[y=p>>5]=(a[y]||Array(32).fill` `))[p&31]=String.fromCharCode(65+(i++%26))}return a.map(r=>r.join``).join`
`}

ডেমো

নীচের ডেমোটি অবশ্যই পুরো পৃষ্ঠায় চালানো উচিত।


7

আর, 46 বা 51 বাইট, ব্যবধানের উপর নির্ভর করে

s=1:scan();plot(s*sin(s),s*cos(s),pch=letters)

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

(প্লটের আপডেট হওয়া সংস্করণ: ধূসর সর্পিলটি ডিফল্টরূপে প্লট করা হয়নি তবে চিঠিগুলি প্রকৃতপক্ষে একটি সর্পিলের উপরে রয়েছে তা দেখানোর জন্য আমি এটি যুক্ত করেছি))

সর্পিল স্থির ব্যবধানের নয়, তাই আমি আশা করি এটি ঠিক আছে। যদি ধ্রুবক ব্যবধান প্রয়োজন হয়, s=(1:scan())^.5তার পরিবর্তে শুরু করুন, এবং মোট 5 বাইট যোগ করুন। তারপরে আউটপুট নীচের মতো হবে (এন = 150):

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


3
আপনার সর্পিলটি কীভাবে স্থান করবেন তা সম্পূর্ণ আপনার উপর নির্ভর করে। আমার দুটি পরামর্শ রয়েছে, যদিও: ১) দ্বিতীয় সর্পিল রাখুন। এটি আপনার উত্তরকে যুক্ত করে যদিও এটি কম গল্ফ হয়; 2) আপনি কি আপনার প্রথম সর্পিলটির চিত্রের মধ্যে বর্ণগুলি দিয়ে একটি সর্পিল রেখাটি আঁকতে পারেন? শুধু বর্ণমালা সর্পিল পরিষ্কার করতে।
শার্লক 9

6

পাইথন 3.5, 180 157 152 147 141 বাইট

-6 শার্লক 9 এর কারণে

r=[[]]
for x in range(int(input())):
 r=len(r[-1])<len(r[0])and r or[*zip(*r[::-1]),[]];r[-1]+=[chr(x%26+65)]
print(*map(''.join,r),sep='\n')

-5 কাপের কারণে।

R=range
def g(n):
 r=[[]]
 for x in R(n):
  if len(r[-1])==len(r[0]):r=[*zip(*r[::-1]),[]]
  r[-1]+=[chr(x%26+65)]
 print(*map(''.join,r),sep='\n')

সংশোধিত সমাধান, অজগর 3.x:

R=range
def g(n):
 r=[[]]
 for x in R(n):
  if len(r[-1])==len(r[0]):r=list(zip(*r[::-1]))+[[]]
  r[-1]+=[chr(x%26+65)]
 print(*map(''.join,r),sep='\n')

পূর্ববর্তী সমাধান:

R=range
def g(n):
 r=[]
 for x,f in zip(R(n),(j<1for i in R(n)for j in R(i//2+1))):
  if f:r=list(zip(*r[::-1]))+[[]]
  r[-1].append(chr(x%26+65))
 print(*map(''.join,r),sep='\n')

ব্যাখ্যা

rসর্পিলকে ধারণ করে এমন তালিকার একটি তালিকা। মূল ধারণাটি হ'ল নতুন বর্ণগুলি সর্পিলের নীচের সারিতে যুক্ত করা হয় (r[-1].append(chr(x%26+65)) ) এর । নীচের সারিটি পূর্ণ হয়ে গেলে, সর্পিলটি 90 ঘড়ির কাঁটার দিকে ঘোরানো হয় এবং নীচে ( r = list(zip(*r[::-1]))+[[]]) এর সাথে একটি নতুন খালি সারি যুক্ত করা হয় ।

কৌশলটি হ'ল সর্পিলটি কখন ঘোরানো হবে তা নির্ধারণ করা। প্রথম সমাধানে, জেনারেটরটি (j<1for i in R(n)for j in R(i//2+1))সত্য / মিথ্যা মানগুলির ক্রম উত্পাদন করে যা সর্পিলটি কখন ঘোরানো হবে তা বলে। সংশোধিত সমাধানে, আমি পরিবর্তন করেছি rউপায়টি আরম্ভ করা হচ্ছে। এখন যখন নীচের সারির দৈর্ঘ্য শীর্ষ সারির দৈর্ঘ্যের সমান হয়, সর্পিলটি ঘোরানো দরকার।


আপনি প্রতিস্থাপন করতে পারেন if len(r[-1])==len(r[0]):r=list(zip(*r[::-1]))+[[]] সঙ্গে if len(r[-1])==len(r[0]):r=[*zip(*r[::-1]),[]]5 সংরক্ষণ বাইট।
আর কাপ,

যেহেতু আপনি কেবল rangeএকবার ব্যবহার করেন তাই আপনি Rবাইটগুলি সংরক্ষণ করতে পারবেন । আপনার উত্তরটি একটি সম্পূর্ণ প্রোগ্রামে রূপান্তর করে আপনি বাইটগুলিও সংরক্ষণ করতে পারেন, যদিও এর ব্যবহার সংরক্ষণের জন্য [*zip(*r[::-1]),[]]আপনাকে ব্যবহার করতে হবে range(int(input()))
শার্লক 9

এছাড়াও, for x in range(int(input())):r=len(r[-1])<len(r[0])and r or[*zip(*r[::-1]),[]];r[-1]+=[chr(x%26+65)] যেহেতু আপনি শেষ লাইনটি প্রথম লাইনের সমান বা বৃহত্তর তা পরীক্ষা করছেন।
শার্লক 9

দুটি জিনিস: 1) আপনি সেমিকোলনের সাহায্যে বিবৃতি পৃথক করে লুপের জন্য একটি লাইন দীর্ঘ করতে পারেন; এবং 2) আপনি nএই সংস্করণে সংজ্ঞায়িত করেন নি । হয় আপনাকে int(input())কোনও ফাংশনে ব্যাক আপ ব্যবহার বা মোড়ানো দরকার ।
শার্লক 9

forলুপটি কনডেন্সিং থেকে 2 বাইট :for x in range(int(input())):r=len(r[-1])<len(r[0])and r or[*zip(*r[::-1]),[]];r[-1]+=[chr(x%26+65)]
শেরলক 9

5

এমএটিএল , 21 18 বাইট

X^Xk1YL1Y2y)wG>~*c

ইনপুট 0একটি ত্রুটি সহ প্রস্থান করে (যা ডিফল্টরূপে অনুমোদিত )।

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

ব্যাখ্যা

X^Xk   % Input n implicitly. Take square root and round up
1YL    % Square matrix of that size containing a spiral of numbers
1Y2    % Predefined literal: string "AB···YZ"
y      % Duplicate the spiral matrix onto the top
)      % Apply as an index inth the string. Gives 2D array of chars
w      % Swap: move copy of the spiral matrix to top
G>~    % Set entries that exceed the input to 0, and the rest to 1 
*      % Multiply. This makes unwanted entries equal to 0
c      % Convert to char. 0 is shown as a space. Display implicitly

5

পাইথন 2, 84 82 বাইট

আমি আবার কচ্ছপ ব্যবহার করছি। এইটা খুব মজার! : ডি

from turtle import*
up()
for i in range(input()):write(chr(i%26+65));rt(9);fd(9+i)

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

দুর্ভাগ্যক্রমে, ট্রিনকেট.ইওর একটি মারাত্মক ছোট ক্যানভাস রয়েছে। আমি পরিবর্তন 9+iকরতে 9+i/9এবং কচ্ছপ এর স্ক্রীণ-ক্যাপচার এই ছবিটি, যাতে আউটপুট আরো মাপসই করা হবে উদ্দেশ্যে শুরুর স্থান স্থায়ী:

আউটপুট


: যদি আপনি আমদানি থেকে একটি স্থান অপসারণ থেকে এক বাইট from turtle import*থেকে পরিবর্তন করা থেকে এবং অন্য whileথেকেfor i in range(input())
Sherlock9

4

পাইথ, 32 বাইট

JS@Q2ju+.t_G)Hc<*GQQ.u+NY.iJJZ]Y

এমন একটি প্রোগ্রাম যা আয়তক্ষেত্রাকার লোয়ার-কেস এএসসিআইআই সর্পিল প্রিন্ট করে। ইনপুটটির উপর নির্ভর করে, শীর্ষস্থানীয় বা পিছনের সাদা অংশের এক সারি বা কলাম উপস্থিত থাকতে পারে।

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

কিভাবে এটা কাজ করে

JS@Q2ju+.t_G)Hc<*GQQ.u+NY.iJJZ]Y  Program. Input: Q
  @Q2                             Yield sqrt(Q)
JS                                Unary range, J=[1, 2, 3, ..., floor(sqrt(q))]
                         .iJJ     Interleave J with itself, yielding [1, 1, 2, 2, 3, 3, ...
                                  floor(sqrt(Q)), floor(sqrt(Q))]
                    .u+NY    Z    Cumulatively reduce by addition with base case 0,
                                  yielding [0, 1, 2, 4, 6, 9, 12, 16, 20...]
                *GQ               Repeat the lower-case alphabet Q times
               <   Q              Truncate to legth Q
              c                   Split the above at the indices in the above list
      u                       ]Y  Reduce the above, with base case [[]]:
          _G                       Reverse
        .t  )                      Transpose
       +     H                     Add the next arm of the spiral
     j                            Join on newlines and implicitly print

3

টিএসকিউএল, 386 362 358 306 বাইট

দয়া করে মনে রাখবেন যে টিএসকিউএলের পাঠ্য ঘোরানোর কোনও উপায় নেই। এই স্ক্রিপ্টটি এ থেকে শুরু হচ্ছে এবং পরবর্তী অক্ষরটি কোন দিকে রাখা উচিত তা গণনা করছে। (ডান, নীচে, বাম, বাম, বাম, উপরে, উপরে, ডান ...)

স্ক্রিপ্ট সর্বোচ্চ 7744 অক্ষর পরিচালনা করতে পারে।

Golfed:

DECLARE @z INT = 7744

DECLARE @ INT=2+SQRT(@z-1)DECLARE @o varchar(max)=REPLICATE(SPACE(@-1)+char(10),@-1);WITH C as(SELECT 0i,@/2a,@/2b UNION ALL SELECT i+1,a+z/2,b+z%2FROM(SELECT*,IIF(a>@/2*2-b,IIF(a<b,2,-1),IIF(a>b,-2,1))z FROM C)t WHERE i<@z-1)SELECT @o=STUFF(@o,@*a-@+b,1,char(i%26+65))FROM c OPTION(maxrecursion 0)PRINT @o

Ungolfed:

DECLARE @z INT = 7744

DECLARE @ INT=2+SQRT(@z-1)
DECLARE @o varchar(max)=REPLICATE(SPACE(@-1)+char(10),@-1)

;WITH C as
(
  SELECT
    0i,@/2a,@/2b
  UNION ALL
  SELECT
    i+1,a+z/2,b+z%2
    FROM 
      (SELECT*,
         IIF(a>@/2*2-b,
           IIF(a<b,2,-1),
             IIF(a>b,-2,1))z FROM C)t
  WHERE
    i<@z-1
)
SELECT 
  @o=STUFF(@o,@*a-@+b,1,char(i%26+65))
FROM c  
OPTION(maxrecursion 0)

PRINT @o

বেহালা


2

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

r=range(input())
a=[1j**int((4*i+1)**.5)for i in r]
b=[map(int,(-sum(a[:i]).real,sum(a[:i]).imag))for i in r]
c,d=zip(*b)
for i in range(min(c),max(c)+1):print''.join([i,j]in b and chr(b.index([i,j])%26+65)or' 'for j in range(min(d),max(d)+1))

আইডিয়ন!


0

পিএইচপি , 219 বাইট

for($q=ceil(sqrt($a=$argn))**2,$d=1,$x=$y=$w=0;$i<$q;$i++,${yx[$w%2]}+=[-1,1][$d&1],$i%$d?:$d+=$w++&1)$e[$c[]=$x-!($a&1)][$l[]=$y]=$i<$a?chr(65+$i%26):" ";for($k=min($c);$e[$k];print join($e[+$k++])."\n")ksort($e[+$k]);

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

পিএইচপি, 260 বাইট

পুরনো সংস্করণ

for($y=$x=$d=$i=0;$i<$m=ceil(sqrt($n=$argv[1]))**2;$i++){$a[$y][$x]=$i<$n?chr($i%26+65):" ";$d=$y==$x&$y<1?0:(1-$y==$x&$x>0?1:($y==$x&$y>0?2:($y==-$x&$x<0?3:$d)));$d>2?$y--:($d>1?$x--:($d>0?$y++:$x++));}ksort($a);foreach($a as$r){ksort($r);echo join($r)."\n";}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.