বিস্ফোরিত প্রত্যয়


20

একটি ASCII স্ট্রিং দেওয়া, এর বিস্ফোরিত প্রত্যয় আউটপুট। উদাহরণস্বরূপ, যদি স্ট্রিংটি থাকে তবে abcdeএখানে 5 টি প্রত্যয় রয়েছে, সবচেয়ে দীর্ঘতম অর্ডার দেওয়া হয়েছে:

abcde
bcde
cde
de
e

প্রতিটি প্রত্যয়টি তখন বিস্ফোরিত হয় , যার অর্থ প্রতিটি অক্ষর সেই প্রত্যয়টিতে তার এক-সূচক অবস্থান হিসাবে বহুবার অনুলিপি করা হয়। উদাহরণস্বরূপ, এর প্রত্যয় বিস্ফোরণ abcde,

abcde
12345
abbcccddddeeeee

bcde
1234
bccdddeeee

cde
123
cddeee

de
12
dee

e
1
e

মোটের ওপর, এর বিস্ফোরিত প্রত্যয় abcdeহয়

abbcccddddeeeee
bccdddeeee
cddeee
dee
e

বিধি

  • এটি তাই সংক্ষিপ্ততম কোডটি জয়ী।
  • ইনপুটটিতে মুদ্রণযোগ্য এএসসিআইআই অক্ষর থাকবে। (এটিতে নিউলাইনগুলি বাদ দেয় তবে স্থানগুলি অন্তর্ভুক্ত।)
  • আউটপুটে প্রতিটি স্ট্রিং আলাদা লাইনে থাকবে।
  • প্রতিটি লাইনে ট্রেলিং স্পেসের অনুমতি রয়েছে এবং শেষে একটি অতিরিক্ত নিউলাইনও থাকতে পারে।

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

''

'a'
a

'bc'
bcc
c

'xyz'
xyyzzz
yzz
z

'code-golf'
coodddeeee-----ggggggooooooollllllllfffffffff
oddeee----gggggoooooolllllllffffffff
dee---ggggooooollllllfffffff
e--gggoooolllllffffff
-ggooollllfffff
goolllffff
ollfff
lff
f

's p a c e'
s  ppp    aaaaa      ccccccc        eeeeeeeee
 pp   aaaa     cccccc       eeeeeeee
p  aaa    ccccc      eeeeeee
 aa   cccc     eeeeee
a  ccc    eeeee
 cc   eeee
c  eee
 ee
e



'কোকোডগল্ফ'-এ কী ঘটে?
রোজলুপি

উত্তর:


14

জেলি , 5 বাইট

ṫJxJY

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

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

ṫJxJY  Main link. Argument: s (string)

 J     Indices; yield I := [1, ..., len(s)].
ṫ      Tail; get the suffixes of s starting at indices [1, ..., len(s)].
   J   Indices; yield I again.
  x    Repeat. The atom 'x' vectorizes at depth 1 (1D arrays of numbers/characters)
       in its arguments. This way, each suffix t gets repeated I times, meaning
       that the first character of t is repeated once, the second twice, etc.
       If left and right argument have different lengths, the longer one is
       truncated, so I can safely be applied to all suffixes.
    Y  Join, separating by linefeeds.

8

জে, 22 12 8 বাইট

14 বাইট সংরক্ষণের জন্য মাইলকে ধন্যবাদ!

(#~#\)\.

এখন এটি একটি দুর্দান্ত সমাধান। খুব সুসংহত।

এটি #~#\ইনপুটটির প্রত্যয় ( \.) এ প্রয়োগ করা হুক । হুক, যখন ইনপুটতে ডাকা হয় y, এইভাবে পচে যায়:

(#~#\) y
y #~ #\ y

এখানে কিছু মধ্যবর্তী ফলাফল রয়েছে:

   ]s =: 's p a c e'
s p a c e
   #\ s
1 2 3 4 5 6 7 8 9
   (quote) s
's p a c e'
   (quote;#)\ s
+-----------+-+
|'s'        |1|
+-----------+-+
|'s '       |2|
+-----------+-+
|'s p'      |3|
+-----------+-+
|'s p '     |4|
+-----------+-+
|'s p a'    |5|
+-----------+-+
|'s p a '   |6|
+-----------+-+
|'s p a c'  |7|
+-----------+-+
|'s p a c ' |8|
+-----------+-+
|'s p a c e'|9|
+-----------+-+
   1 2 3 # '123'
122333
   3 3 3 # '123'
111222333
   ]\. s
s p a c e
 p a c e
p a c e
 a c e
a c e
 c e
c e
 e
e
   quote\. s
's p a c e'
' p a c e'
'p a c e'
' a c e'
'a c e'
' c e'
'c e'
' e'
'e'
   (#~#\) s
s  ppp    aaaaa      ccccccc        eeeeeeeee
   (#~#\)\. s
s  ppp    aaaaa      ccccccc        eeeeeeeee
 pp   aaaa     cccccc       eeeeeeee
p  aaa    ccccc      eeeeeee
 aa   cccc     eeeeee
a  ccc    eeeee
 cc   eeee
c  eee
 ee
e

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

   f =: (#~#\)\.
   f
(#~ #\)\.
   f ''
   f 'a'
a
   f 'bc'
bcc
c
   f 'xyz'
xyyzzz
yzz
z
   f 'code-golf'
coodddeeee-----ggggggooooooollllllllfffffffff
oddeee----gggggoooooolllllllffffffff
dee---ggggooooollllllfffffff
e--gggoooolllllffffff
-ggooollllfffff
goolllffff
ollfff
lff
f
   f 's p a c e'
s  ppp    aaaaa      ccccccc        eeeeeeeee
 pp   aaaa     cccccc       eeeeeeee
p  aaa    ccccc      eeeeeee
 aa   cccc     eeeeee
a  ccc    eeeee
 cc   eeee
c  eee
 ee
e

   ]tc =: <;._1 '|' , '|a|bc|xyz|code-golf|s p a c e'
++-+--+---+---------+---------+
||a|bc|xyz|code-golf|s p a c e|
++-+--+---+---------+---------+
   ,. f &. > tc
+---------------------------------------------+
+---------------------------------------------+
|a                                            |
+---------------------------------------------+
|bcc                                          |
|c                                            |
+---------------------------------------------+
|xyyzzz                                       |
|yzz                                          |
|z                                            |
+---------------------------------------------+
|coodddeeee-----ggggggooooooollllllllfffffffff|
|oddeee----gggggoooooolllllllffffffff         |
|dee---ggggooooollllllfffffff                 |
|e--gggoooolllllffffff                        |
|-ggooollllfffff                              |
|goolllffff                                   |
|ollfff                                       |
|lff                                          |
|f                                            |
+---------------------------------------------+
|s  ppp    aaaaa      ccccccc        eeeeeeeee|
| pp   aaaa     cccccc       eeeeeeee         |
|p  aaa    ccccc      eeeeeee                 |
| aa   cccc     eeeeee                        |
|a  ccc    eeeee                              |
| cc   eeee                                   |
|c  eee                                       |
| ee                                          |
|e                                            |
+---------------------------------------------+

শীতল, কিছু বাইট সংরক্ষণের অন্য উপায় হ'ল উপসর্গ বিশেষণটি ব্যবহার করে
মাইল

@ মাইলস মানে কি?
কনর ও'ব্রায়েন

এই পরিসীমাটি তৈরি করার একটি ছোট উপায় হিসাবে আপনি প্রতিটি উপসর্গের দৈর্ঘ্য পেতে পারেন
মাইল মাইল

@ মাইলস আহ, অবশ্যই।
কনর ও'ব্রায়েন

7

পাইথন, 61 বাইট

f=lambda s,i=0:s[i:]and-~i*s[i]+f(s,i+1)or s and'\n'+f(s[1:])

বিকল্প 63:

f=lambda s,b=1:s and f(s[:-1],0)+s[-1]*len(s)+b*('\n'+f(s[1:]))

6

পাইথন 3, 91 68 65 বাইট

def f(s):f(s[1:print(''.join(i*c for i,c in enumerate(s[0]+s)))])

পছন্দসই আউটপুট প্রিন্ট করার পরে একটি ত্রুটি দিয়ে শেষ হয়। আইডিয়নে এটি পরীক্ষা করুন ।

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

নিজেকে পুনরাবৃত্তভাবে কল করার আগে , সূচকগুলি s[1:...]গণনা করতে হবে।

প্রথম enumerate(s[0]+s)উৎপাদনের সবকিছুর যুগল (ঝ গ) অক্ষরের এর গুলি - তার আদি অক্ষর দিয়ে সদৃশ - এবং সংশ্লিষ্ট সূচকের আমি । প্রস্তুতি s[0]এখানে দুটি উদ্দেশ্য করে।

  • S এর প্রথম চরিত্রটি একবারে পুনরাবৃত্তি করতে হবে তবে প্রথম সূচক 0 হয়

  • একবার সমস্ত অক্ষর প্রক্রিয়া করা হয়ে গেলে, s[0]একটি সূচিপত্র উত্থাপন করবে , ফলে পুনরাবৃত্তির সীমাটি না পৌঁছানো পর্যন্ত নিউলাইনগুলি মুদ্রণের পরিবর্তে একটি ত্রুটি দিয়ে শেষ করতে হবে f

''.join(i*c for i,c in ...)আমি বার বার প্রতিটি সি এর সমতল স্ট্রিং তৈরি করে যা STDOUT এ প্রতিধ্বনিত হয়।print

অবশেষে, যেহেতু printআয় কোনটি এবং s[1:None]সহজভাবে হয় s[1:], recursive কল f(s[1:...])জন্য উপরের প্রক্রিয়া পুনরাবৃত্তি গুলি তার প্রথম অক্ষর ছাড়া।


6

পার্ল 6 , 38 বাইট

m:ex/.+$/.map:{put [~] .comb Zx 1..*}

-nকমান্ড লাইন সুইচের জন্য 37 বাইট +1

উদাহরণ:

$ perl6 -ne 'm:ex/.+$/.map:{put [~] .comb Zx 1..*}' <<< 'code-golf'
coodddeeee-----ggggggooooooollllllllfffffffff
oddeee----gggggoooooolllllllffffffff
dee---ggggooooollllllfffffff
e--gggoooolllllffffff
-ggooollllfffff
goolllffff
ollfff
lff
f

সম্প্রসারিত:

# -n command line switch takes each input line and places it in 「$_」

# You can think of it as surrounding the whole program with a for loop
# like this:
for lines() {

  # match
  m
  :exhaustive # every possible way
  / .+ $/     # at least one character, followed by the end of the string

  .map:

  {
    put           # print with newline
      [~]         # reduce using string concatenation ( don't add spaces between elements )
        .comb     # split into individual chars
        Z[x]      # zip using string repetition operator
        1 .. *    # 1,2,3,4 ... Inf
  }

}

5

ব্র্যাচল্যাগ , 17 বাইট

@]Elyk:Erz:jac@w\

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

ব্যাখ্যা

@]E                 E is a suffix of the Input
   lyk              The list [0, ..., length(E) - 1]
      :Erz          The list [[0th char of E, 0], ..., [Last char of E, length(E) - 1]]
          :ja       For all elements of that list, concatenate the Ith char I times to itself
             c      Concatenate the list into a string
              @w    Write followed by a line break
                \   False: backtrack to another suffix of the Input



4

সি #, 101 বাইট

f=s=>{var r="\n";for(int i=0;i<s.Length;)r+=new string(s[i],++i);return""==s?r:r+f(s.Substring(1));};

পুনরাবৃত্তি বেনামে ফাংশন, যা একটি শীর্ষস্থানীয় নিউলাইনও প্রিন্ট করে। যদি নেতৃস্থানীয় নতুনলাইনটির অনুমতি না দেওয়া হয় তবে 3 টি অতিরিক্ত বাইট এটিকে ট্রেলিং করা নতুন লাইনে পরিণত করে:

f=s=>{var r="";for(int i=0;i<s.Length;)r+=new string(s[i],++i);return""==s?r:r+"\n"+f(s.Substring(1));};

অসম্পূর্ণ পদ্ধতি এবং পরীক্ষার কেস সহ সম্পূর্ণ প্রোগ্রাম:

using System;

namespace ExplodedSuffixes
{
    class Program
    {
        static void Main(string[] args)
        {
            Func<string, string> f = null;
            f = s =>
            {
                var r = "\n";
                for (int i = 0; i < s.Length; )
                    r += new string(s[i], ++i);
                return "" == s ? r : r + f(s.Substring(1));
            };

            // test cases:
            string x = "abcde";
            Console.WriteLine("\'" + x + "\'" + f(x));
            x = "";
            Console.WriteLine("\'" + x + "\'" + f(x));
            x = "a";
            Console.WriteLine("\'" + x + "\'" + f(x));
            x = "bc";
            Console.WriteLine("\'" + x + "\'" + f(x));
            x = "xyz";
            Console.WriteLine("\'" + x + "\'" + f(x));
            x = "code-golf";
            Console.WriteLine("\'" + x + "\'" + f(x));
            x = "s p a c e";
            Console.WriteLine("\'" + x + "\'" + f(x));
        }
    }
}

4

হাস্কেল, 48 বাইট

e=map(concat.zipWith replicate[1..]).scanr(:)[] 

যে কোনও দ্বারা ইন্টারফেস করা হয়

ghc exploded_suffixes.hs -e 'e"abcde"'
ghc exploded_suffixes.hs -e 'mapM_ putStrLn.e=<<getLine' <<<code-golf
ghc exploded_suffixes.hs -e 'Control.Monad.forever$putStr.unlines.e=<<getLine'

আমি পয়েন্টফ্রি-নেস পছন্দ করি। আপনার নিজের ব্লকে আপনার 63৩-বাইট কোডটি রাখা উচিত এবং তারপরে পৃথকভাবে আমন্ত্রণটি প্রদর্শন করা উচিত।
xnor

আপনার দরকার নেই putStr., আমরা ফাংশন আউটপুট হিসাবে গ্রহণ করি। আপনার import Data.Listব্যবহার করার প্রয়োজন নেই tails
xnor

আপনি প্রতিস্থাপন করতে পারেন uncurry ... zipসঙ্গে zipWith: unlines.map(concat.zipWith replicate[1..]).tails
নিমি

হ্যাঁ! zipWith replicateকমান আমার কাছে ঘটেছে যখন আমি awoke। ছবির মধ্যে দু: খের বিষয় যে tailsনেই Preludeআমি আনতে পারে tailsথেকে Data.Listএকটি পূর্ণ ছাড়া পরোক্ষভাবে import outgrowing ছাড়া এবং এখনও foldrসমতুল্য। IOবয়লার-প্লেট ছাড়াই বিশুদ্ধতার বিষয়ে আমি mapM_ putStrLnপাঠকদের রুচিগুলিতে মরসুম রেখে যাব এবং কোনও unlinesকাজই করব না। একটি ব্লক সংজ্ঞায়িত e=করতে বাইট গণনা ব্যয় করতে হবে।
রোমান সিজবোরা

ছাড়াই যোগ্য নাম ব্যবহার করা importsস্ট্যান্ডার্ড হাস্কেল নয়, তবে ghcirepl এর বৈশিষ্ট্য । এই জাতীয় বিষয়ের উপর নির্ভর করে একটি পৃথক ভাষা হিসাবে গণনা করা হয়, তাই আমি আপনার উত্তরের শিরোনামকে এমন কোনও কিছুতে পরিবর্তন করার পরামর্শ দিই Haskell (ghci)। ( এই মেটা আলোচনাটিও দেখুন )।
নিমি

3

পার্ল, 36 + 1 ( -n) = 37 বাইট

/.+$(?{$.=say$&=~s%.%$&x$.++%rge})^/

প্রয়োজন -nএবং -E(বা -M5.010) চালানোর জন্য:

perl -nE '/.+$(?{$.=say$&=~s%.%$&x$.++%rge})^/' <<< "code-golf"

মনে রাখবেন যে প্রতিবার এটি চালানোর সময় এটি কেবলমাত্র একটি ইভেন্টে কাজ করে (কারণ এটি যখন পরিবর্তনশীল ব্যবহার করে $.যা প্রতিবার একটি লাইন পড়ার সময় বৃদ্ধি হয়, তাই এটি 1প্রথমবার যখন কোনও লাইনটি পড়ে থাকে তখনই ধরে রাখে )। (তবে এখানে কোনও সমস্যা নেই, কেবল ^Dএবং এটি আবার চালান!)



3

জাভা, 150 127 বাইট

সম্পাদনা:

  • -23 বাইট বন্ধ। কেভিন ক্রুইজসেনকে ধন্যবাদ

Snipet:

f->{String s[]=f.split(""),o="";int i=-1,j,l=s.length;for(;++i<l;)for(j=-2;++j<i;o+=s[i]);return l<1?"":o+"\n"+f.substring(1);}

Ungolfed:

public static String explodeSuff(String suff){
  char [] s = suff.toCharArray();
  String out = "";
  if(s.length==0)return "";
  for(int i=-1;++i<s.length;){
    for(int j=-2;++j<i;){
      out+=s[i];
    }
  }
  return out+"\n"+suff.subString(1);
}

হাই, আপনি স্পেস এবং কিছু ছোট কৌশলগুলি সরিয়ে কেবল এটিকে কিছুটা গল্ফ করতে পারেন:f->{String s[]=f.split(""),o="";int i=-1,j,l=s.length;for(;++i<l;)for(j=-2;++j<i;o+=s[i]);return l<1?o:o+"\n"+f.substring(1);}
কেভিন ক্রুইজসেন

2

র‌্যাকেট 184 বাইট

(let p((l(string->list s))(ol'()))(cond[(null? l)(display(list->string(flatten ol)))]
[else(p(cdr l)(append ol(list #\newline)(for/list((i l)(n(length l)))(for/list((j(+ 1 n)))i))))]))

Ungolfed:

(define(f s)
 (let loop((l(string->list s))
             (outl '()))
    (cond
      [(null? l)
       (display
        (list->string
         (flatten outl)))]
      [else
       (loop
        (rest l)
        (append outl
                (list #\newline)
                (for/list ((i l)
                           (n (length l)))
                  (for/list ((j (add1 n)))
                    i
                    ))))]  )))


(f "abcde")
(f "xyz")

আউটপুট:

abbcccddddeeeee
bccdddeeee
cddeee
dee
e

xyyzzz
yzz
z

2

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

f=s=>s?[s.replace(/./g,(c,i)=>c.repeat(i+1)),...f(s.slice(1))]:[]
<input oninput=o.textContent=f(this.value).join`\n`><pre id=o>

পূর্ববর্তী প্রচেষ্টা:

67: s=>[...s].map((_,i)=>s.slice(i).replace(/./g,(c,i)=>c.repeat(i+1)))
84: s=>s.replace(/./g,`$&$'
    `).match(/.+/g).map(s=>s.replace(/./g,(c,i)=>c.repeat(i+1)))
89: f=(s,t=s.replace(/./g,(c,i)=>c.repeat(i+1)))=>t?[]:[t,...f(s,t.replace(/(.)(?=\1)/g,''))]

2

পিএইচপি, 103 বাইট (সংক্ষিপ্ত ট্যাগ সহ 99)

<?php for($s=$argv[1];""!=$s[$i++];$o.="
")for($j=0;""!=$l=$s[$j+$i-1];)$o.=str_pad('',++$j,$l);echo$o;

আমি বেশ নিশ্চিত যে এটি সংক্ষিপ্ততম উত্তর নয়।


2

এমএটিএল , 12 বাইট

&+gYRYs"G@Y"

উদ্ধৃতি চিহ্নগুলি একত্রিত হলে আমি এটি পছন্দ করি!

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

ব্যাখ্যা

এটি একটি ম্যাট্রিক্স তৈরি করে কাজ করে যার কলামগুলি একের পর এক ইনপুট রান-লেংথ ডিকোড করতে ব্যবহৃত হয়। উদাহরণ হিসাবে, ইনপুট 'abcde'জন্য ম্যাট্রিক্স হয়

1 0 0 0 0
2 1 0 0 0
3 2 1 0 0
4 3 2 1 0
5 4 3 2 1

কোড:

&+g    % Implicit input. NxN matrix of ones, where N is input size
YR     % Set entries above diagonal to zero
Ys     % Cumulative sum of each column. This gives the desired matrix 
"      % For each column
  G    %   Push input (for example 'abcde')
  @    %   Push current column (for example [0;0;1;2;3])
  Y"   %   Run-length decode (example output 'cddeee')
       % Implicit end
       % Implicit display

1

পাইথন 3, 95 বাইট

def f(s):return'\n'.join(''.join(s[j:][i]*(i+1)for i in range(len(s)-j))for j in range(len(s)))

এটি আমার প্রত্যাশার চেয়ে আশ্চর্যজনকরকম কঠিন ছিল। আমি আমার পুরো ফাংশনটি সম্ভবত 4 বার পুনরায় redd করেছি।


1

জাভা 7,140 বাইট

void c(char[]a,int l,int j){if(l<1)return;c(a,--l,++j);for(int i=0,k;i<j;i++)for(k=0;k++<=i;)System.out.print(a[i+l]);System.out.println();}

Ungolfed

 void c(char[]a,int l,int j)
{
if (l < 1) 
return ;
c(a , --l , ++j) ;
for(int i = 0 , k; i < j ; i++)
for(k = 0 ; k++ <= i ;)
System.out.print(a[i+l]);
System.out.println();
}

নিম্নলিখিত পংক্তিটি আমাকে খুব ব্যথা দেয় i আমি জানি না কীভাবে আমি এটি গল্ফ করতে পারি (কারণ "\n"মুদ্রণ বিবৃতিতে শর্ত ভঙ্গ করার জন্য দুটি লুপ রয়েছে )।
System.out.println();


আর্গুমেন্ট হিসাবে অ্যারের দৈর্ঘ্য প্রেরণের প্রয়োজন হয় না এমন কোনও উপযুক্ত পদ্ধতি সম্পর্কে কীভাবে? বর্তমানে দুর্ঘটনাক্রমে একটি ভুল মান প্রেরণ করে একটি সূচিপত্র ছাড় ব্যতিক্রম ট্রিগার করতে পারে ...
অ্যাড্রিয়ান্প


1

রুবি, 51 বাইট

-n+1 বাইটের জন্য পতাকা ব্যবহার করে ।

(k=0;puts$_.gsub(/./){$&*k+=1};$_[0]="")while$_>$/

1

আর, 108 বাইট

স্টিডিন এবং প্রিন্ট থেকে স্টাডআউটে ইনপুট পড়ুন

s=scan(,"");n=nchar(s);for(i in 1:n)cat(do.call("rep",list(strsplit(s,"")[[1]][i:n],1:(n-i+1))),"\n",sep="")

আমি অনুভব করেছি যে এখানে ব্যবহার do.callযথাযথ ছিল। এটি মূলত দুটি ইনপুট গ্রহণ করে: 1. স্ট্রিং আকারে একটি ফাংশনের নাম (rep এখানে) এবং আর্গুমেন্টের একটি তালিকা এবং ২. পুনরাবৃত্তভাবে তালিকার আর্গুমেন্টগুলি ব্যবহার করে ফাংশনটি কল করে।

উদাহরণ:

  • rep("c",3) ভেক্টর উত্পাদন করে "c" "c" "c"
  • do.call("rep",list(c("a","b","c"),1:3)) ভেক্টর উত্পাদন করে "a" "b" "b" "c" "c" "c"
  • যা একটানা কল করার সমতুল্য rep("a",1), rep("b",2)এবংrep("c",3)

1

Vim, 43 বাইট

qqYlpx@qq@qqr0<C-H><C-V>{$:s/\v%V(.)\1*/&\1/g<CR>@rq@r

প্রথম ম্যাক্রো প্রত্যয়গুলি পৃথক করে, দ্বিতীয় ম্যাক্রো তাদের "বিস্ফোরিত" করে। সম্ভবত মারধরযোগ্য। স্থানগুলি বিরক্তিকর।


1

সি, 186 বাইট

#include <string.h>
#define S strlen
p(char* s){char *t=s;char u[999]="";for(int i=0;i<S(s);i++){for(int j=i+1;j>0;j--){sprintf(u+S(u),"%c",*t);}t++;}printf("%s\n",u);if(S(s)>1)p(s+1);}

এটি সম্ভবত কিছুটা ছোট করা যেতে পারে, তবে আমি এটি চেষ্টা করতে চেয়েছিলাম। এটি গল্ফে আমার দ্বিতীয় চেষ্টা, সুতরাং আপনি যে কোনও পয়েন্টার (* লোল) দিতে পারেন। এটি প্যারামিটার হিসাবে একটি স্ট্রিং নেয় এবং সেখান থেকে বিস্ফোরিত হয়। u একটি বাফার হিসাবে ব্যবহৃত হয় যা বিস্ফোরিত স্ট্রিং সঞ্চয় করে।

Ungolfed:

#include <string.h>
#define S strlen 
p(char* s){
    char *t=s;
    char u[999]="";
    for(int i=0;i<S(s);i++){
        for(int j=i+1;j>0;j--){
            sprintf(u+S(u),"%c",*t);
        }
        t++;
    }
    printf("%s\n",u);
    if(S(s)>1)p(s+1);
}

1

Acc !! , 150 বাইট

স্টিডিনে ইনপুট প্রত্যাশা করে, একটি ট্যাব অক্ষরের সাথে শেষ হয়।

N
Count c while _/128^c-9 {
_+N*128^(c+1)
}
Count i while _-9 {
Count j while _/128^j-9 {
Count k while j+1-k {
Write _/128^j%128
}
}
Write 10
_/128
}

ব্যাখ্যা

এটি আসলে এসি জন্য খুব সুন্দর কাজ !! , যেহেতু এটির জন্য কেবল একটি স্ট্রিং পড়া এবং কিছু নেস্টেড লুপগুলি দিয়ে এটির উপরে পুনরাবৃত্তি প্রয়োজন। নিম্ন-অর্ডার প্রান্তে প্রথম অক্ষর সহ আমরা বেসটি -128 সংখ্যার অনুক্রম হিসাবে বিবেচনা করে আমরা সঞ্চয়ের মধ্যে স্ট্রিংটি পড়ি। খোলার Count cলুপের পরে , সঞ্চয়ের মানটি এটির মতো ধারণা করা যেতে পারে ( xyzউদাহরণ হিসাবে ইনপুট হিসাবে ব্যবহার করে ):

128^   3  2  1  0
     tab  z  y  x

(এই উদাহরণের জন্য প্রকৃত সঞ্চয়ের মান হ'ল 9*128^3 + 122*128^2 + 121*128 + 120= 20888824।)

তারপরে আমরা 128 টির বাড়ন্ত শক্তির উপর পুনরাবৃত্তি করে স্ট্রিংটি দিয়ে পুনরাবৃত্তি করতে পারি And

ইন্ডেন্টেশন এবং মন্তব্য সহ:

# Initialize the accumulator with the first input character
N
# Loop until most recent input was a tab (ASCII 9)
Count c while _/128^c - 9 {
    # Input another character and add it at the left end (next higher power of 128)
    _ + N * 128^(c+1)
}

# Loop over each suffix, until only the tab is left
Count i while _ - 9 {
    # Loop over powers of 128 until the tab
    Count j while _/128^j - 9 {
        # Loop (j+1) times
        Count k while j + 1 - k {
            # Output the j'th character
            Write _ / 128^j % 128
        }
    }
    # Output a newline
    Write 10
    # Remove a character
    _/128
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.