বিস্ফোরিত সাবস্ট্রিংগুলি


32

ভূমিকা

এর স্ট্রিং পর্যবেক্ষণ করা যাক abc। এগুলি থেকে তৈরি করা যাবে এমন সাবস্ট্রিংগুলি হ'ল:

a, ab, abc, b, bc, c

আমাদের এখন প্রাথমিক স্ট্রিংয়ের নীচে এগুলি প্রান্তিককরণ করা দরকার:

abc
a
 b
  c
ab
 bc
abc

স্ট্রিংয়ের ক্রমের কোনও ব্যাপার নেই, সুতরাং এটি পুরোপুরি বৈধ:

abc
a
ab
abc
 b
 bc
  c

সুতরাং, প্রাথমিক স্ট্রিংটিতে সাবস্ট্রিংটি স্ট্রিংয়ের অবস্থানের নীচে অবস্থিত। সুতরাং abcdefএবং সাবস্ট্রিংয়ের জন্য cdeএটি দেখতে এটির মতো হবে:

abcdef
  cde

কাজটি

টাস্কটি হ'ল উপরে দেখানো মত 0 টিরও বেশি দৈর্ঘ্যের সাথে সমস্ত সাবস্ট্রিংগুলি সারিবদ্ধ করা । আপনি ধরে নিতে পারেন যে স্ট্রিংটিতে কেবল বর্ণানুক্রমিক অক্ষর থাকবে এবং কমপক্ষে 1 টি অক্ষর থাকবে। প্যাডিংয়ের জন্য, আপনি কোনও স্থান বা অন্য কোনও বর্ণমালাবিহীন মুদ্রণযোগ্য এএসসিআইআই অক্ষর ( 32 - 127) ব্যবহার করতে পারেন । সম্ভবত উল্লেখ করার প্রয়োজন নেই, তবে স্ট্রিংটিতে কেবলমাত্র অনন্য অক্ষর থাকবে, তাই পছন্দ নয় aba, যেহেতু aদুবার ঘটে।

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

ইনপুট: abcde

সম্ভাব্য আউটপুট:

a
ab
abc
abcd
abcde
 b
 bc
 bcd
 bcde
  c
  cd
  cde
   d
   de
    e

ইনপুট: abcdefghij

সম্ভাব্য আউটপুট:

a
ab
abc
abcd
abcde
abcdef
abcdefg
abcdefgh
abcdefghi
abcdefghij
 b
 bc
 bcd
 bcde
 bcdef
 bcdefg
 bcdefgh
 bcdefghi
 bcdefghij
  c
  cd
  cde
  cdef
  cdefg
  cdefgh
  cdefghi
  cdefghij
   d
   de
   def
   defg
   defgh
   defghi
   defghij
    e
    ef
    efg
    efgh
    efghi
    efghij
     f
     fg
     fgh
     fghi
     fghij
      g
      gh
      ghi
      ghij
       h
       hi
       hij
        i
        ij
         j

এটি , তাই সর্বনিম্ন পরিমাণ বাইটের সাথে জমাটি জয়!


1
খালি সাবস্ট্রিং কোথায়?
লিকি নুন

@ কেনি লাউ ওহ হ্যাঁ, এটি আমাকে চ্যালেঞ্জের মধ্যে আরও কিছু তথ্য সম্পাদনা করার জন্য মনে করিয়ে দেয়।
আদনান

একটি চলন্ত নিউলাইন গ্রহণযোগ্য?
ব্যবহারকারী81655

@ ব্যবহারকারী 81655 হ্যাঁ, এটি গ্রহণযোগ্য।
আদনান

স্ট্রিংগুলির একটি অ্যারে গ্রহণযোগ্য, বা এটি কি নতুন লাইন-পৃথক হতে হবে?
জাগারব

উত্তর:



21

পার্ল, 32 28 24 বাইট

এর জন্য +1 অন্তর্ভুক্ত -n

কোড:

/.+(??{say$"x"@-".$&})/

STDIN এ স্ট্রিং সহ চালান:

perl -nE '/.+(??{say$"x"@-".$&})/' <<< abcd

গল্ফিংয়ের ভাষাগুলি এত কাছে এবং এখনও অনেক দূরে ...

ব্যাখ্যা

/.+/একটি স্ট্রিংয়ের সাথে মেলে। দুর্ভাগ্যক্রমে এটি একবারের সাথে মিলে যায়। তাই আমি রেজিটাইমটি (??{})প্রসারিত করতে রানটাইম রেজেক্স কনস্ট্রাক্ট ব্যবহার করি যাতে এটি ব্যর্থ হয় এবং ব্যাকট্র্যাকিং নিম্নলিখিত স্ট্রিংগুলিকে চেষ্টা করবে, শেষ পর্যন্ত বিতৃষ্ণা ছাড়ার আগে তাদের সকলের চেষ্টা করে।

(??{})আমি ভিতরে স্ট্রিংয়ের অফসেট যতটা স্পেস ব্যবহার করে উপস্থাপিত বর্তমান স্ট্রিংগুলিকে প্রিন্ট করি$"x"@-"

সুতরাং আউটপুট ঝরঝরেভাবে ডকুমেন্ট দেয় কীভাবে রেজেক্স ব্যাকট্র্যাকিং কাজ করে:

abcd
abc
ab
a
 bcd
 bc
 b
  cd
  c
   d

1
ভাল গ্রেভি, এটি ঠিক যেমন ইওসালংগুলির মতো মজাদার দেখাচ্ছে। একটি +1 আছে।
অ্যাডমবর্কবার্ক

4
@ টিমিডি: কিছু অদ্ভুত কারণে এমন কিছু লোক আছে যারা বলে যে গল্ফিং পার্লকে একটি খারাপ নাম দেয় ...
টন হসপেল

পার্ল 6 সংস্করণ যে এই থেকে অনুপ্রাণিত হয় বৈশিষ্ট্যগুলি খুব অনুরূপperl6 -ne 'm/^(.*)(.+)<{+put " "x$0.to,$1}>/'
ব্র্যাড গিলবার্ট b2gills

ইনপুটটিতে কাজ করে না ab1(আমি ধরে নিই কারণ say...এটির মূল্যায়ন করি 1)। (5.18.2 এ পরীক্ষিত।) সম্পাদনা: ওহ! দুঃখিত, প্রশ্নটি বলেছে "আপনি ধরে নিতে পারেন যে স্ট্রিংটিতে কেবল বর্ণমালার অক্ষর থাকবে"।
msh210

14

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

@ অ্যাডিটসুর উত্তর দ্বারা উত্পন্ন সাবস্ট্রিংগুলির প্যাটার্ন দ্বারা অনুপ্রাণিত

tt!+gR*c`t3Lt3$)tn

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

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

ব্যাখ্যা

t         % implicit input. Duplicate
t!+g      % square matrix with size as input
R         % keep upper triangular part
*c        % multiply element-wise with broadcast. Convert to char
`         % do...while
  t       %   duplicate
  3Lt3$)  %   remove last row and column
  tn      %   number of remaining elements. Used as loop condition
          % implicitly end loop and display

পুরানো পদ্ধতির (কার্টেসিয়ান শক্তি)

এটি অন্যান্য উত্তরগুলির জন্য অনুপ্রেরণা হিসাবে কাজ করে যদি আমি এই পদ্ধতির রাখছি

tn0:2Z^!S!2\Xu4LY)*c

অনলাইন সংকলকটিতে এটি দীর্ঘতম পরীক্ষার ক্ষেত্রে মেমরির বাইরে চলে যায়।

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

ব্যাখ্যা

এই মূল্যবোধের সমস্ত নিদর্শন উত্পন্ন 0, 1এবং 2বৃদ্ধি অনুক্রমে, এবং তারপর রূপান্তরিত 2মধ্যে 0। এটি 0এবং এর সমস্ত সম্ভাব্য নিদর্শন দেয়1 যেখানে 1মান সংলগ্ন হয়। মূল স্ট্রিং থেকে কোন অক্ষর নেওয়া হয়েছে তা চিহ্নিত করতে এগুলি ব্যবহার করা হয়।

উদাহরণ হিসাবে, স্ট্রিংয়ের 'abc'জন্য নিদর্শনগুলি নীচে তৈরি করা হয়। প্রথমে কার্টেসিয়ান শক্তি [0 1 2]উত্সাহিত ইনপুট চরিত্রের সংখ্যা প্রাপ্ত হয়:

0 0 0
0 0 1
0 0 2
0 1 0
0 1 1
···
2 2 1
2 2 2

প্রতিটি সারি বাছাই করে দেয়

0 0 0
0 0 1
0 0 2
0 0 1
0 1 1
···
1 2 2
2 2 2

(অর্থাত্ ) রূপান্তরকরণ 2এবং সদৃশ সারিগুলি সরিয়ে চূড়ান্ত প্যাটার্ন দেয়0mod(...,2)

0 0 0
0 0 1
0 1 1
0 1 0
1 1 1
1 1 0
1 0 0

যার প্রতিটি সারিটি একটি (মুখোমুখি) স্ট্রিংয়ের সাথে সম্পর্কিত একটি মাস্ক। প্রথম সারিটি অপসারণ করা দরকার কারণ এটি খালি স্ট্রস্ট্রিংয়ের সাথে মিলে যায়।

t      % Implicitly get input. Duplicate
n      % Number of elements
0:2    % Vector [0 1 2]
Z^     % Cartesian power. Each result is a row
!S!    % Sort each row
2\     % Modulo 2: transform 2 into 0
Xu     % Unique rows
4LY)   % Remove first (corresponds to the empty substring)
*      % Element-wise multiplication by original string
c      % Convert to char. Implicitly display

3
আপনার মন কি একটি বড় ম্যাট্রিক্স-ম্যানিপুলেশন মেশিন?
বিড়াল 18

@ কেট অনেক বছর ধরে মতলব ব্যবহার করে আমার অনুমান :-)
লুইস মেন্ডো ২ '

14

রেটিনা , 48 32 31 বাইট

3 বাইট সংরক্ষণ এবং আরও অনেকের পক্ষে পথ প্রশস্ত করার জন্য কেনি লাউকে ধন্যবাদ।

বাইট গণনাটি আইএসও 8859-1 এনকোডিং ধরেছে।

M&!r`.+
%+`( *)\S(.+)$
$&¶$1 $2

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

উত্পন্ন সাবস্ট্রিংয়ের ক্রম:

abcde
 bcde
  cde
   de
    e
abcd
 bcd
  cd
   d
abc
 bc
  c
ab
 b
a

ব্যাখ্যা

M&!r`.+

এটি আমাদের ইনপুটটির সমস্ত উপসর্গ পেয়েছে। এই মেলা (দ্বারা সম্পন্ন করা হয় M) কোন সাবস্ট্রিং ( .+) শেষ থেকে শুরু ( r), বিবেচনা করা ওভারল্যাপিং ম্যাচ ( &) এবং linefeeds সাথে যোগ ঐ ম্যাচের সব ফিরে (! )।

এখন আমাদের যা করা দরকার তা হল সেই উপসর্গগুলির ক্রমাগত উপসর্গগুলি তৈরি করা (সেগুলি স্থান দিয়ে প্রতিস্থাপন করে)। আমরা একটি লুপ দিয়ে এই ধাপে ধাপে ধাপে:

%+`( *)\S(.+)$
$&¶$1 $2

এর %অর্থ এই যে পুরো জিনিসটি প্রতিটি লাইনে স্বতন্ত্রভাবে করা হয়ে থাকে (এটিকে আপাতত পৃথক স্ট্রিং বিবেচনা করে এবং শেষে লাইনফিডগুলির সাথে এটি সমস্ত একসাথে যোগ দেওয়া)। +রেটিনা বলে একটি লুপ মধ্যে এই প্রতিকল্পন চালানোর পর্যন্ত আউটপুট পরিবর্তন স্টপ (এই ক্ষেত্রে উপায়ে যা Regex আর যে মিলগুলি)। রেজেক্স তখন কমপক্ষে দু'টি ফাঁকা স্থান অক্ষরের সাথে ইনপুটটির শেষ লাইনটি মেলাতে চেষ্টা করে এবং একটি নতুন সারি যুক্ত করে যেখানে এর মধ্যে প্রথমটি একটি স্থানের সাথে প্রতিস্থাপন করা হয়।


আমরা থাকতে পারে !বোঝা Mএবং 1char সংস্করণ .+এবং .*?
ক্যালকুলেটরফলাইন

এছাড়াও একটি স্ট্রিংয়ের উপসর্গগুলির = উপসর্গের উপসর্গ। সম্ভবত আপনি প্রত্যয় উপসর্গ বোঝানো হয়েছে? (সংশোধন করার জন্য সম্পাদিত))
ক্যালকুলেটরফলাইন

পছন্দ করুন আমরা যখন উপসর্গ থেকে উপসর্গগুলি সরিয়ে ফেলি, তখন আমরা সাবস্ট্রিংগুলি পাই। অন্যান্য পরামর্শ হিসাবে, আমি মনে করি না যে আমি বিকল্পগুলি বোঝায় পর্যায়ে করব। বর্তমানে, প্রচুর অক্ষর কেবলমাত্র এক পর্যায়ে ব্যবহৃত হয়, এটি সম্ভবত ভবিষ্যতে পরিবর্তিত হবে। হিসাবে .+এবং .*আমি রেজেক্স টোকনাইজ করতে হবে, এবং আমি কিছু সময়ে এটি করার পরিকল্পনা করার সময়, আমি মনে করি না যে এটি শীঘ্রই খুব শীঘ্রই ঘটবে (এবং যদি আমি এটি করি তবে আমি সম্ভবত বৈশিষ্ট্যগুলিতে ফোকাস করব) প্রকৃতপক্ষে অভিব্যক্তি যোগ করুন)।
মার্টিন এন্ডার


11

ওরাকল এসকিউএল 11.2, 146 বাইট

WITH v AS(SELECT LEVEL i FROM DUAL CONNECT BY LEVEL<=LENGTH(:1))SELECT LPAD(SUBSTR(:1,s.i,l.i),s.i+l.i-1)FROM v s,v l WHERE s.i+l.i<=LENGTH(:1)+1;

আন golfed

WITH v AS(SELECT LEVEL i FROM DUAL CONNECT BY LEVEL<=LENGTH(:1))
SELECT LPAD(SUBSTR(:1,s.i,l.i),s.i+l.i-1)
FROM   v s, v l
WHERE  s.i+l.i<=LENGTH(:1)+1

9

সিজেম, 20

q{__,{\_N+oSt}/;W<}h

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

ব্যাখ্যা:

q           read the input (initial string)
{…}h        do … while
  _         copy the current string
  _,        copy and get the length
  {…}/      for each value (say i) from 0 to length-1
    \       bring the string to the top
    _N+o    make a copy, append a newline and print
    St      set the i'th element to S=" "
  ;         pop the last result (array full of spaces)
  W<        remove the last character of the current string
             if the string is empty, the do-while loop terminates

8

পাইথন, 57 বাইট

f=lambda s,p='':set(s)and{p+s}|f(s[1:],' '+p)|f(s[:-1],p)

আউটপুট একটি setমত {' b', 'a', 'ab'}। ধারণাটি হ'ল দুটি শাখাগুলি পুনরুদ্ধার করা যা প্রথম বা শেষ চরিত্রটি কেটে দেয়। অপ্রয়োজনীয় আউটপুট দেয় তবে setস্বয়ংক্রিয়ভাবে সদৃশগুলি সরিয়ে দেয়। প্রান্তিককরণের জন্য, প্রত্যেকবার প্রথম চরিত্রটি কেটে ফেলা হলে উপসর্গটিতে একটি স্থান যুক্ত করা হয় p, যা সামনের দিকে সংযুক্ত থাকে।


7

পাওয়ারশেল ভি 2 +, 69 বাইট

param($a)0..($b=$a.length-1)|%{($i=$_)..$b|%{" "*$i+-join$a[$i..$_]}}

ইনপুট নেয় $a, দৈর্ঘ্যের উপর লুপ করে ( $bপরে ব্যবহারের জন্য প্রক্রিয়াতে সেট করা)। প্রতিটি বাহ্যিক লুপ, আমরা $bআবার লুপ করব, $iপরে ব্যবহারের জন্য সেট করব । প্রতিটি অভ্যন্তরীণ লুপ, আমরা আউটপুট$i ইনপুট স্ট্রিংয়ের একটি টুকরো দিয়ে সংযুক্ত ফাঁকা সংখ্যা । যেহেতু আমরা কেবল স্ট্রিংটির মধ্য দিয়ে লুপিং করছি, এটি আসলে যেকোন স্বেচ্ছাসেবী স্ট্রিং (ডুপ্লিকেট অক্ষর, স্পেসস, যাই হোক না কেন) পরিচালনা করবে।

উদাহরণ

PS C:\Tools\Scripts\golfing> .\exploded-substrings.ps1 "Golfing"
G
Go
Gol
Golf
Golfi
Golfin
Golfing
 o
 ol
 olf
 olfi
 olfin
 olfing
  l
  lf
  lfi
  lfin
  lfing
   f
   fi
   fin
   fing
    i
    in
    ing
     n
     ng
      g

7

সি #, 136 132 131 বাইট


Golfed

String m(String s){String o="",e=o;for(int i=0,a,l=s.Length;i<l;i++,e+=" ")for(a=1;a+i<=l;a++)o+=e+s.Substring(i,a)+"\n";return o;}

Ungolfed

String m( String s ) {
    String o = "", e = o;

    for (int i = 0, a, l = s.Length; i < l; i++, e += " ")
        for (a = 1; a + i <= l; a++)
            o += e + s.Substring( i, a ) + "\n";

    return o;
}

সম্পূর্ণ কোড

    using System;
using System.Collections.Generic;

namespace Namespace {
    class Program {
        static void Main( string[] args ) {
            List<String> ls = new List<String>() {
                    "abcde",
                    "abcdefghijklmnop",
                    "0123456789",
                };

            foreach (String s in ls) {
                Console.WriteLine( s );
                Console.WriteLine( m( s ) );
                Console.WriteLine( "" );
            }

            Console.ReadLine();
        }

        static String m( String s ) {
            String o = "", e = o;

            for (int i = 0, a, l = s.Length; i < l; i++, e += " ")
                for (a = 1; a + i <= l; a++)
                    o += e + s.Substring( i, a ) + "\n";

            return o;
        }
    }
}

রিলিজ

  • v1.2 - -1 byte- 1 বাইট সংরক্ষণ String o="",e="";করতে পরিবর্তন করা String o="",e=o;হয়েছে। ধারণাটি গ্যালান্টের ছিল ( আমি সর্বশেষ আপডেটে এই অংশটি প্রয়োগ করতে ভুলে গিয়েছি, আমি ক্ষমা চাই ))।
  • v1.1 - -4 bytes- থেকে বন্ধনীগুলি ফেলেছেfor loops এবং সরানো eVar স্থান বৃদ্ধি বাইরের এর পুনরুক্তিকারীর অঞ্চলের forলুপ। ধারণাটি গ্যালান্টের ছিল ।
  • v1.0 হওয়া - 136 bytes- প্রাথমিক সমাধান।

1
আপনি অভ্যন্তরীণ লুপে কোঁকড়া ধনুর্বন্ধনী বন্ধন করতে পারেন এবং e=o3 বাইট সংরক্ষণ করার জন্য বরাদ্দ করতে পারেন।
গ্যালান্ট

এছাড়াও অদলবদল করতে পারেন String o="",...সঙ্গে var o...আরেকটি 3. জন্য
TyCobb

@ টিউবক এটি বেহুদা রূপান্তরিত String o = "", e = "";করবে varযেহেতু আমি তাদের দুটিতে আলাদা করতে হবে, যার ফলস্বরূপ var o = ""; var e = "";আমার সাথে থাকা তুলনায় একই দৈর্ঘ্য is এটি করবে, তবে ভিজিএস সুস্পষ্টভাবে টাইপযুক্ত ভেরিয়েবল - ওরফে ব্যবহার করার সময় একাধিক ভেরিয়েবল ঘোষণার অনুমতি দেয় না var। কিন্তু সাহায্যের জন্য ধন্যবাদ। সম্পাদনা: ভিএস আমাকে চিৎকার করছে যে আমি এটি করতে পারি না, আমি ধরে নিচ্ছি যে এটি ভুল, ভুল হতে পারে।
auhmaan

5

পাইথন ২.7, 70 82 বাইট

কীভাবে এটি 1 লাইনে পাবেন তা আমি বুঝতে পারি না। সাথে কলe("abcde",0)

def e(s,p):
 f=len(s)
 for x in range(f):print(' '*p+s[:x+1])
 if f>1:e(s[1:],p+1)

4

পাইথন 3, 80 78 বাইট

উপসর্গের সাথে স্পেস সংখ্যা এবং তারপরে শেষ হওয়া অক্ষরের সংখ্যা দিয়ে লুপ করুন।

lambda x:[print(' '*i+x[i:j+1])for i in range(len(x))for j in range(i,len(x))]

সম্পাদনা করুন: লুপগুলির আগে ফাঁকা স্থানগুলি সরানো হয়েছে।


4

এমএটিএল, 15 14 বাইট

এখানে @ লুইসমেডোর টিপের কারণে একটি বাইট সংরক্ষণ করা হয়েছে !

tfWt2/!-RXzB*c

অনেক উপায় ... একটি নতুন সন্ধান করতে হয়েছিল। শুভ বিট! :)

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

বিস্ফোরিত

t       % duplicate input
f       % get indices of nonzero elements in vector (i.e. 1:n)
W       % 2 raised to array, element-wise: 2^(1:n)
t       % duplicate array
2/      % divide by 2: 2^(0:n-1)
!       % transpose array 
-       % element-wise subtraction (w/singleton expansion)
R       % upper triangular part
Xz      % nonzero elements
B       % convert from decimal to binary. Produces a logical array
*       % array product (element-wise, singleton expansion)
c       % convert to character array; 0's automatically converted to spaces

3

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

document.write("<pre>"+(

s=>(a=[...s]).map((_,i)=>a.map((_,j)=>++j>i?r+=" ".repeat(i)+s.slice(i,j)+`
`:0),r="")&&r

)("abcde"))

সোজা-এগিয়ে পদ্ধতির। আউটপুটটিতে একটি পিছনের নিউলাইন রয়েছে।


=>জাভাস্ক্রিপ্ট মানে কি ? এটি কি বাইনারি অপারেটর
ইভান ডেলানয়

@ ইভানডেলানোয় এটি একটি ES6 তীর ফাংশন ঘোষণা করে ।
ব্যবহারকারী81655

3

জাভাস্ক্রিপ্ট (ES6), 72

s=>{for(i=j=0;s[j]||s[j=++i];)console.log(' '.repeat(i)+s.slice(i,++j))}      

3

পাইথ, 12 11 বাইট

jm+*;xQdd.:

দুঃখজনকভাবে প্রশ্নটি আমাদের অনন্য অক্ষরগুলি ধরে নিতে সহায়তা করে, তাই আমি কেবল স্ট্রিংয়ের প্রথম অবস্থান এবং স্পেস সহ প্যাড খুঁজছি।


সর্বনিম্ন স্তরের মানচিত্রের অভ্যন্তরে ;পরিবর্তে আপনি ব্যবহার করতে পারেন \
FryAmTheEggman

3

গণিত 89 বাইট

r@i_:=StringReplace[i,#->" "]&/@(Complement[y,#]&/@Subsequences[y=Characters@i])//Column

ব্যাখ্যা

i ইনপুট স্ট্রিং বোঝায়

Subsequences[y=Characters@i]ইনপুটটির সমস্ত অনুচ্ছেদ (অক্ষরের তালিকাভুক্ত তালিকা) প্রদান করে। ( Subsequencesv। 10.4 এ চালু হয়েছিল)

প্রতিটি subsequence জন্য Complement...ইনপুট স্ট্রিং থেকে যারা কিছু অক্ষর আছে যা হয় ফেরৎ না একটি তালিকা। এই অক্ষরের প্রত্যেকটির মাধ্যমে একটি খালি স্থান দ্বারা প্রতিস্থাপন করা হয়StringReplace[i,#->" "]

Columnফলাফলগুলি একটি একক কলামে প্রদর্শন করে। প্রতিটি আউটপুট স্ট্রিংয়ে একই সংখ্যক অক্ষর থাকে, ফলস্বরূপ সারিবদ্ধ বর্ণগুলি হয়।


r@"abcdefgh"

output


10.0.4 দ্বারা আপনার মানে 10.4, ডান? 10.3 এটি নেই।
ক্যালকুলেটরফলাইন

হ্যাঁ। 10.4 আমি এটি সংশোধন করব।
ডেভিডসি

3

জে, 32 29 28 বাইট

(-@{.@i.|.])"1 a:>@-.~&,<\\.

এটি একটি monadic ক্রিয়া মূল্যায়ন। এখানে চেষ্টা করুন।ব্যবহার:

   f =: (-@{.@i.|.])"1 a:>@-.~&,<\\.
   f 'abe'
a  
ab 
abe
 b 
 be
  e

ব্যাখ্যা

অন্য কয়েকটি উত্তর হিসাবে, আমি প্রতিটি স্ট্রিংয়ের প্রথম অক্ষরের উপস্থিতির সূচকটি গণনা করি। সাবস্ট্রিংগুলি পিছনের জায়গাগুলির সাথে একটি ম্যাট্রিক্সে সংরক্ষণ করা হয়, তাই সঠিক প্যাডিংয়ের জন্য আমি তাদের সূচক দ্বারা ডানদিকে ঘোরান। মধ্যে হোয়াইটস্পেস যে এক টুকরা "1এবং a:সত্যিই বিরক্তিকর ...

(-@{.@i.|.])"1 a:>@-.~&,<\\.  Input is y
                        <\\.  Compute suffixes of prefixes of y, and put them in boxes.
                              This gives a 2D array of substrings in boxes.
                      &,      Flatten the array of boxes,
               a:  -.~        remove all empty strings, and
                 >@           open each box. This places the strings in a 2D matrix of
                              characters, with trailing spaces to make it rectangular.
(          )"1                Do this for each line x in the matrix:
      i.                        The index of every character of x in y.
 -@{.@                          Take the first one and negate it.
        |.]                     Rotate x to the left by that amount.
                                Since we negated the index, this rotates to the right.

a eচ্যালেঞ্জ দ্বারা সংজ্ঞায়িত
কোনও স্ট্রিং নয়

@ টনহোপেল আমি প্রোগ্রামটি ঠিক করেছি, এটি এখন অনুমানের অনুসরণ করে।
জাগারব

3

জাভাস্ক্রিপ্ট (ফায়ারফক্স 30-57), 65 63 বাইট

s=>[for(c of(i=0,s))for(d of(t=r=i?t+' ':'',s.slice(i++)))r+=d]

স্ট্রিংগুলির একটি অ্যারে প্রদান করে। ES6 হিসাবে এটি 78 বাইট

s=>[...s].map((_,i,a)=>a.slice(i).map(c=>r.push(u+=c),t=u=i?t+' ':''),r=[])&&r

2

কিউ বেসিক, 75 বাইট

INPUT s$
FOR i=1TO LEN(s$)
FOR j=1TO i
LOCATE,j
?MID$(s$,j,i+1-j)
NEXT
NEXT

বেসিক ডাবল- FORলুপ কৌশলটি কিউবাসিকের 1-ভিত্তিক সূচকের জন্য কিছুটা সংশোধিত হয়েছে। মূল কৌশলটি হ'ল LOCATE,jযা কার্সারটিকে কলামে নিয়ে যায়j মুদ্রণের আগে বর্তমান লাইনের নিয়ে যায়। যেহেতু কলাম 1 প্রথম কলাম, এটি j-1শীর্ষস্থানীয় স্থানগুলি মুদ্রণের সমতুল্য ।


2

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

perl6 -ne 'm/^(.*)(.+)<{+put " "x$0.to,$1}>/'
m/       # match the input line
  ^      # from the start
  ( .* ) # 0 or more characters ( $0 )
  ( .+ ) # 1 or more characters ( $1 )

  <{ # match against the result of:

    +put # print with a trailing newline:
      " " x $0.to, # add the leading spaces
      $1           # the substring
  }>
/

কারণ +সামনে putএটি ফেরৎ তাই 1পরিবর্তে True, যা এটা সবসময় পরিত্যাগ করতে হবে ইনপুটে হতে নিশ্চিত করা হয়।

$ perl6 -ne 'm/^(.*)(.+)<{+put " "x$0.to,$1}>/' <<< abcd
   d
  cd
  c
 bcd
 bc
 b
abcd
abc
ab
a

(আপনি যদি এটির (.*?)(.+?)পরিবর্তে এর বিপরীতে ব্যবহার করতে চান (.*)(.+))

এটি পার্ল 5 উত্তর দ্বারা অনুপ্রাণিত হয়েছিল


2

জে, 35 23 22 বাইট

[:;#\.<@{."_1|.\."1^:2

এটি আমার কিছুটা সময় নিয়েছিল তবে আমি অবশেষে এটি অনুকূলিত করেছি।

ব্যবহার

   f =: [:;#\.<@{."_1|.\."1^:2
   f 'abcde'
abcde
abcd 
abc  
ab   
a    
 bcde
 bcd 
 bc  
 b   
  cde
  cd 
  c  
   de
   d 
    e

ব্যাখ্যা

[:;#\.<@{."_1|.\."1^:2  Input: s
             |.\."1     For each suffix of s, reverse it
                   ^:2  Repeat that twice to create all exploded substrings
   #\.                  Get the length of each suffix. This is
                        used to make the range [len(s), len(s)-1, ..., 1]
        {."_1           For each value in the range, take that many strings from
                        the list of exploded substrings. This avoids blank substrings
      <@                Box each set of strings
[:;                     Unbox and join the strings together and return

ডান জোড়া প্যারেনেসিসগুলি সরিয়ে আপনি 2 বাইট সংরক্ষণ করতে পারেন। এছাড়াও, [:+./"1' '~:]পরিবর্তে করা [:-.[:*/"1' '=]আরও 2 বাইট সংরক্ষণ করে।
জাগারব

2

জাভা, 138 বাইট

String e(String s){int l=s.length(),a=0,i,j;for(;++a<l;)for(i=0;i<=l-a;){s+="\n";for(j=0;j++<i;)s+=" ";s+=s.substring(i,i+++a);}return s;}

বিন্যাসকৃত:

String e(String s) {
    int l = s.length(), a = 0, i, j;
    for (; ++a < l;)
        for (i = 0; i <= l - a;) {
            s += "\n";
            for (j = 0; j++ < i;)
                s += " ";
            s += s.substring(i, i++ + a);
        }
    return s;
}


1

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

(>>=zipWith((++).(`replicate`' '))[0..].init.tails).reverse.inits

যদিও এটি প্রয়োজন initsএবং tailsডেটা.লিস্ট থেকে, যদিও। এটি আউটপুট করতে, যোগ করুনmapM_ putStrLn. সামনে ।

তুলনামূলকভাবে সোজা; reverseনিশ্চিত মূল স্ট্রিং প্রথম করা হয়।

GHCi> mapM_ putStrLn.(>>=zipWith((++).(`replicate`' '))[0..].init.tails).reverse.inits$"abcde"
abcde
 bcde
  cde
   de
    e
abcd
 bcd
  cd
   d
abc
 bc
  c
ab
 b
a
it :: ()
(0.02 secs, 0 bytes)

2
(>>=zipWith(++)(inits$cycle" ").init.tails).inits। এবং দয়া import Data.List;করে বাইট গণনায় যোগ করুন ।
নিমি

1

রুবি, 75 67 বাইট

বেনামে ফাংশন। সাবস্ট্রিংগুলি সারিবদ্ধ করার জন্য রেজেক্স বিকল্প ব্যবহার করে। .পরিপূর্ণ চরিত্র।

->s{(l=s.size).times{|i|(l-i).times{|j|puts s.tr(?^+s[j,i+1],?.)}}}

1

বাশ + জিএনইউ কোর্টিলস, 109 বাইট

l=${#1}
for i in `seq 0 $l`;{
for j in `seq $((l-i))`;{
for k in `seq $i`;{ printf ' ';}
echo ${1:i:j}
}; }

সম্ভবত একটি সংক্ষিপ্ত সমাধান আছে, তবে এটি আমার মনে আসার সেরা। চিটারের স্বতন্ত্রতা এখানে গুরুত্বপূর্ণ নয়।


1

পিএইচপি, 151 অক্ষর

Ungolfed

<?php
$input = $argv[1];
foreach(str_split($input) as $p=>$letter)
{
    $spaces = str_repeat(" ", $p);
    echo $spaces.$letter."\n";
    $p++;
    for($i=$p;$i<strlen($input);$i++)
    {
        echo $spaces.$letter.substr($input, $p, $i)."\n";
    }
}
?>

Golfed

<?$c=$argv[1];foreach(str_split($c)as$d=>$b){$a=str_repeat(" ",$d);echo$a.$b."\n";$d++;for($e=$d;$e<strlen($c);$e++){echo$a.$b.substr($c,$d,$e)."\n";}}

উদাহরণ

php explodesub.php 'abc'
a
ab
abc
 b
 bc
  c

1

সি ++, 145 বাইট

প্রথম শুরুর প্যারামিটারটি ইনপুট হিসাবে, আউটপুট হিসাবে কনসোল হিসাবে ব্যবহৃত হয়

#include<iostream>
#define f(y,b,d) for(int y=b;r[0][y];y++){d;}
int main(int,char*r[]){f(x,0,f(y,x+1,std::cout.write(r[0],y)<<'\n')r[0][x]=32)}

দুর্দান্ত উত্তর এবং পিপিসিজিতে স্বাগতম! আমি সি ++ বেশি ব্যবহার করি না তবে আপনি std::cout<<r[0]<<y<<'\n'`এসটিডি :: কোট.ওরাইট (r [0], y) এর পরিবর্তে করতে পারবেন না << '\ n'? আপনি একটি সংক্ষিপ্ত ব্যাখ্যা যোগ করতে পারেন? ধন্যবাদ!
নন ইনি এখানে

1

পাইথন 2 (অবরুদ্ধ) 99 বাইট

t=raw_input()
l=len(t)
for j in range(l):
 for i in range(l):
  if i>=j:print j*' '+t[j:i+1]  

ফলাফল:

>>python codegolf.py
abc
a
ab
abc
 b
 bc
  c

>>python codegolf.py
abcdef
a
ab
abc
abcd
abcde
abcdef
 b
 bc
 bcd
 bcde
 bcdef
  c
  cd
  cde
  cdef
   d
   de
   def
    e
    ef
     f

>>python codegolf.py
lmnopqrst
l
lm
lmn
lmno
lmnop
lmnopq
lmnopqr
lmnopqrs
lmnopqrst
 m
 mn
 mno
 mnop
 mnopq
 mnopqr
 mnopqrs
 mnopqrst
  n
  no
  nop
  nopq
  nopqr
  nopqrs
  nopqrst
   o
   op
   opq
   opqr
   opqrs
   opqrst
    p
    pq
    pqr
    pqrs
    pqrst
     q
     qr
     qrs
     qrst
      r
      rs
      rst
       s
       st
        t
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.