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


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.