Xoay một cột


28

Cho một số nguyên k và một khối văn bản hoặc một mảng 2d mà các mảng bên trong có thể có độ dài không bằng nhau (giống với một khối văn bản), xoay mọi ký tự hoặc phần tử trong cột thứ k lên hoặc xuống vị trí tiếp theo tồn tại

Thí dụ

Xoay cột thứ 20 của văn bản sau (dựa trên 1):

A line with more than k characters.
A longer line with more than k character.
A short line.
Rotate here: ------v--
This is long enough.

This is not enough.
Wrapping around to the first line.

Đầu ra:

A line with more thtn k characters.
A longer line with aore than k character.
A short line.
Rotate here: ------m--
This is long enoughv

This is not enough.
Wrapping around to .he first line.

Xoay cột thứ k của cùng một đầu vào trong đó 35 < k <42 sẽ mang lại văn bản đầu vào không thay đổi.

Quy tắc

  • Bạn có thể sử dụng văn bản thô, một mảng các dòng, một mảng các ký tự 2d hoặc bất kỳ định dạng hợp lý nào để thể hiện dữ liệu. Bạn cũng có thể sử dụng các loại dữ liệu khác với các ký tự.
  • Số lượng giá trị có thể có của kiểu dữ liệu của các phần tử phải có ít nhất 20 nếu độ dài mã của bạn phụ thuộc vào nó, nếu không thì ít nhất 2. Đây có thể là tập hợp con của các ký tự hoặc các giá trị khác được hỗ trợ trong kiểu gốc.
  • Không gian và bất kỳ loại giá trị null nào chỉ là giá trị bình thường, nếu bạn cho phép chúng trong đầu vào. Bạn cũng có thể đơn giản loại trừ chúng trong loại phần tử.
  • Thay đổi quy tắc: Bạn được phép đệm các mảng ngắn hơn với giá trị mặc định chung (chẳng hạn như khoảng trắng), nếu bạn thích sử dụng các mảng có độ dài bằng nhau để lưu trữ dữ liệu.
  • k có thể là 0 dựa hoặc 1 dựa. Nó được đảm bảo nằm trong dòng dài nhất trong đầu vào (ngụ ý đầu vào có ít nhất một dòng không trống).
  • Bạn có thể chọn xem nó xoay lên hay xuống.
  • Chỉ cần xoay một vị trí hoặc xoay n vị trí trong đó n là số nguyên dương được cho trong đầu vào.
  • Mã ngắn nhất sẽ thắng.

Câu trả lời:


8

APL (Dyalog Extended) , 9 byte SBCS

Chương trình đầy đủ. Nhắc stdin cho khối văn bản 2D, sau đó k (dựa trên 0 hoặc dựa trên 1, tùy thuộc vào cài đặt hiện tại của APL), sau đó n . Tích cực n xoay lên, n âm quay xuống.

Tên miền bao gồm một trong những điều sau đây:

  1. tất cả các ký tự Unicode, ngoại trừ khoảng trắng , để lại 1114111 giá trị được phép, nhiều hơn 20 yêu cầu.

  2. tất cả các số, ngoại trừ 0 , để lại khoảng 2 129 giá trị được phép, nhiều hơn 20 yêu cầu.

Vì APL yêu cầu các khối 2D phải là hình chữ nhật, đầu vào phải được đệm bằng khoảng trắng / số không. Điều này có thể được thực hiện tự động bằng cách nhập vào bên trái của danh sách các chuỗi / danh sách số.

⎕⌽@≠@⎕⍢⍉⎕

Hãy thử trực tuyến! (các không gian rõ ràng thực sự là không gian không phá vỡ)

 lời nhắc cho khối văn bản

⍢⍉ trong khi chuyển đổi:

@⎕ áp dụng như sau trên hàng đầu vào:

  @≠ tại các yếu tố khác với nguyên mẫu của chúng (không gian cho các ký tự, không cho các số):

   ⎕⌽ xoay các bước "đầu vào" sang trái

APL (Dyalog Unicode) , 22+ byte SBCS

Phiên bản này cho phép bộ ký tự đầy đủ bằng cách sử dụng các số không làm phần tử điền có thể nhận dạng.

0~¨⍨↓⍉⎕⌽@(0≠⊢)@⎕⍉↑0,¨⎕

Hãy thử trực tuyến!

Tất nhiên điều này có nghĩa là các số 0 không được phép trong các đối số số. Chương trình tương ứng cho tất cả các số sẽ có ba lần 0thay thế ' 'và do đó sử dụng khoảng trắng dưới dạng điền:

' '~¨⍨↓⍉⎕⌽@(' '≠⊢)@⎕⍉↑' ',¨⎕

Nếu chúng tôi thực sự muốn toàn bộ phạm vi (thậm chí là hỗn hợp) cả ký tự và số, chúng tôi có thể sử dụng null dưới dạng điền:

n~¨⍨↓⍉⎕⌽@(n≠⊢)@⎕⍉↑⎕,¨⍨n←⎕NULL

Và cuối cùng, nếu chúng ta muốn bao gồm null và các đối tượng trong miền đầu vào, chúng ta có thể định nghĩa một lớp điền và sử dụng các thể hiện của điều này như là điền:

~∘I¨⍨↓⍉⎕⌽@(~⊢∊I←⎕INSTANCES⊢∘C)@⎕⍉↑⎕,¨⍨⎕NEWFIX':Class C' ':EndClass'

Bây giờ chính thức tuyên bố điều này (và các câu trả lời mới như thế này) là một câu trả lời hợp lệ. Xin lỗi nếu điều này đã làm phiền bạn quá nhiều.
jimmy23013

Ngắn hơn phiên bản null của bạn : n~¨⍨↓⍉⎕⌽@(≢¨)@⎕⍉↑⎕,¨⍨n←⊂⊂⍬. Có lẽ bạn có thể thêm modded trong tiện ích mở rộng của mình để giúp chơi gôn thêm (nhưng tôi không chắc chính xác chúng hữu ích như thế nào).
jimmy23013

@ jimmy23013 Vâng, tôi đã nghĩ về điều đó, nhưng sau đó nó không thể lấy danh sách các công cụ lồng nhau tùy ý. Giải pháp cuối cùng là giải pháp tối ưu, đặc biệt là nếu CIđược bản địa hóa để chúng không gây ô nhiễm:{~∘I¨⍨↓⍉⎕⌽@(~⊢∊I←⎕INSTANCES⊢∘C)@⎕⍉↑⎕,¨⍨⎕NEW⎕FIX I←C←':Class C' ':EndClass'}
Adám

11

Python 2 , 111 110 109 99 98 96 94 byte

lambda a,n:[l[:n]+(l[n:]and[L[n]for L in a[i:]+a if L[n:]][1]+l[n+1:])for i,l in enumerate(a)]

Hãy thử trực tuyến!

Lấy đầu vào dưới dạng danh sách các dòng và cột 0 chỉ mục và trả về danh sách các chuỗi.

Cột được xoay lên 1.

-11 byte, nhờ Jo King


7

Java 8, 107 106 135 107 byte

k->m->{int s=m.length,i=-1;for(char p=0,t;i<s;t=m[i%s][k],m[i%s][k]=p<1?t:p,p=t)for(;m[++i%s].length<=k;);}

+29 byte cho một sửa lỗi ..

Chỉ số 0; xoay xuống như ví dụ.
Đầu vào dưới dạng ma trận ký tự; sửa đổi ma trận char thay vì trả về một ma trận mới để lưu byte.

Hãy thử trực tuyến.

Giải trình:

k->m->{                 // Method with integer and char-matrix parameters and no return-type
  int s=m.length,       //  Amount of lines in the matrix `s`
      i=-1;             //  Index-integer `i`, starting at -1
  for(char p=0,         //  Previous-character, starting at 0
           t;           //  Temp-char, uninitialized
      i<s               //  Loop as long as `i` is smaller than `s`:
      ;                 //    After every iteration:
       t=m[i%s][k],     //     Set the temp to the `k`th character of the `i`'th line
       m[i%s][k]=       //     Replace the `k`'th character of the `i`'th line with:
         p<1?           //      If `p` is still 0:
          t             //       Set it to the temp we just set
         :              //      Else:
          p,            //       Set it to the previous-character instead
       p=t)             //     And then replace `p` with the temp for the next iteration
    for(;m[++i          //   Increase `i` by 1 before every iteration with `++i`,
             %s].length //   And continue this loop until the length of the `i`'th line
           <=k;);}      //   is smaller than or equal to the input `k`

1
Một điều tôi nhận thấy là bạn đưa ra một giả định rằng dòng đầu tiên có đủ ký tự - char p=m[0][k]- nếu không, điều này sẽ không ném ngoại lệ? Làm tốt lắm btw. Bạn đang đánh bại nỗ lực C # của tôi bằng lãi lớn :)
dana

@dana Ah, chết tiệt, bạn nói đúng .. Tôi có thể đánh bại bạn bằng một khoản lợi nhuận lớn này vì tôi vô tình đưa ra giả định đó .. Sẽ cố gắng khắc phục nó.
Kevin Cruijssen

1
@dana Đã sửa, cảm ơn vì đã để ý.
Kevin Cruijssen

2
@dana Và quay lại 107 lần nữa. ;)
Kevin Cruijssen

1
nknkint p=0,t;pm[i%s][k]=(char)(p<1?t:p)

7

Zsh , 94 87 78 74 69 byte

-7 byte bằng cách thay đổi thành một ternary số học, -9 byte bằng cách thay đổi ký tự tại chỗ (TIL), -4 byte bằng cách nhập chỉ mục vào stdin và chuỗi dưới dạng đối số, -5 byte bằng cách sử dụng chuỗi thay vì một chuỗi để lưu trữ các ký tự xoay.

read i
for s;c+=$s[i]
c=$c[-1]$c
for s;s[i]=$c[$[$#s<i?0:++j]]&&<<<$s

Old Old Old Old Hãy thử trực tuyến!

Dưới đây là các chìa khóa để làm cho câu trả lời này hoạt động:

  • $array[0]hoặc $string[0]luôn trống
  • $array[n]hoặc $string[n]trống nếu n lớn hơn độ dài của mảng / chuỗi
  • array[i]=choặc string[i]=csẽ thay thế các yếu tố / nhân vật.
  • Trong $[$#s<i?0:++j], jđược không tăng lên nếu $#s<i.

Trong câu trả lời 94 byte ban đầu, có một vấn đề thú vị mà tôi gặp phải liên quan đến việc sử dụng <<<để in. Tôi đã phải sử dụng echođể có được xung quanh nó:

for s;echo $s[0,i-1]$c[$[$#s<i?0:++j]]${s:$i}

Lý do cho điều này có thể được nhìn thấy ở đây:

echo $ZSH_SUBSHELL   # prints 0
<<< $ZSH_SUBSHELL    # prints 1

Các chuỗi ở đây được chạy trong các chuỗi con vì chúng được cung cấp dưới dạng stdin cho một chương trình khác. Nếu không có chương trình nào được đưa ra, nó được ngầm định đưa ra cat. Bạn có thể thấy điều này với <<< $_. <<< $ZSH_SUBSHELLcũng tương tự như echo $ZSH_SUBSHELL | cat. Vì chúng ta cần tăng lên j, chúng ta không thể ở trong một nhánh con.


6

R , 62 byte

function(L,n){L[A,n]<-rep(L[A<-L[,n]!=' ',n],2)[1+1:sum(A)];L}

Hãy thử trực tuyến!

Đưa đầu vào dưới dạng ma trận đệm không gian của các ký tự. Xoay lên trên. Tất cả là nhờ Kirill L. !

R , 74 byte

function(L,n){substr(L[A],n,n)=rep(substr(L[A<-nchar(L)>=n],n,n),2)[-1]
L}

Hãy thử trực tuyến!

Trình này trước phụ cấp của các dòng đệm.

Bí danh substrở đây sẽ không hoạt động vì chúng tôi đang gọi substrsubstr<-trong dòng đầu tiên.

I / O như một danh sách các dòng không đệm; xoay lên trên.


sự đồng thuận cho phép sửa đổi đầu vào, chúng ta có thể làm điều điên rồ này
Kirill L.

Ngoài ra, OP đã nới lỏng các quy tắc, để giờ đây có thể làm việc với các ma trận đệm không gian, đại loại như thế này
Kirill L.

@KirillL. Tôi không nghĩ rằng R vượt qua tham chiếu nên có lẽ chúng tôi không được phép làm điều đó; nó cho tôi biết rằng điều này chỉ hoạt động nếu đối số được đặt tên Ltrong môi trường cha. Mặc dù vậy, tôi sẽ vui vẻ cập nhật vào phần đệm không gian!
Giuseppe

À, tôi hiểu rồi, bạn nói đúng. Tôi đã nảy ra ý tưởng này khi xem câu trả lời Ruby của tôi (giúp tiết kiệm toàn bộ 1 byte theo cách này :)), nhưng các ngôn ngữ thực sự hành xử khác trong tình huống này.
Kirill L.

5

C # (Trình biên dịch tương tác Visual C #) , 82 byte

k=>a=>{var c='0';a.Where(b=>b.Count>k&&((b[k],c)=(c,b[k])).c>0).ToList()[0][k]=c;}

Hãy thử trực tuyến!

Tín dụng cho @ASCIIOnly để đề xuất foreachdẫn đến tiết kiệm 12 byte!

-8 byte nhờ @someone!
-1 byte nhờ @EmbodimentofIgnorance!



Có thể là 183 nếu sử dụng số nguyên thay vì ký tự
Dữ liệu đã hết hạn

@ExpiredData ew int thay vì char
ASCII chỉ có

quá tệ, bạn không thể sử dụng foreachvì đó là thứ tự ngược lại :(
Chỉ có ASCII

1
Sử dụng dynamicđể hợp nhất các khai báo và lưu 2 byte (Tôi chưa bao giờ thấy điều này trước đây!) Hãy thử trực tuyến!
đại từ của tôi là monicareinstate

4

Ruby , 57 byte

->a,k{b=a.map{|i|i[k]}-[p];c=-2;a.map{|i|i[k]&&=b[c+=1]}}

Hãy thử trực tuyến!

Đưa đầu vào như một mảng của các dòng a. Xoay văn bản xuống ở vị trí dựa trên 0 k. Trả về bằng cách sửa đổi đầu vào a.


3

05AB1E , 21 byte

ʒg‹}U¹εXyk©diX®<èIèIǝ

Chắc chắn có thể được đánh gôn thêm ..

Chỉ số 0; đầu vào và đầu ra cả hai như một danh sách các chuỗi.
Nó xoay xuống như ví dụ, nhưng <có thể được thay thế bằng >để xoay lên thay thế.

Hãy thử trực tuyến (chân trang tham gia danh sách theo dòng mới, xóa nó để xem đầu ra danh sách thực tế).

Giải trình:

ʒ  }             # Filter the (implicit) input-list by:
 g               #  Where length of the current string
                #  is larger than the (implicit) input-integer
    U            # Pop and store this filtered list in variable `X`
¹ε               # Map over the first input-list again:
  Xyk            #  Get the index of the current string in variable `X`
     ©           #  Store it in the register (without popping)
      di         #  If the index is not -1, so the current string is present in variable `X`
        X®<è     #   Get the (index-1)'th string in variable `X`
            Iè   #   Get the character at the index of the input-integer
              Iǝ #   And insert it at the index of the input-integer in the current string

3

K4 , 41 byte

Dung dịch:

{.[x;i;:;.q.rotate[1;x . i:(&y<#:'x;y)]]}

Giải trình:

Không chắc chắn nếu tôi thiếu thứ gì đó ... 0 chỉ mục, xoay lên (thay đổi thành 1để -1xoay xuống)

{.[x;i;:;.q.rotate[1;x . i:(&y<#:'x;y)]]} / the solution
{                                       } / lambda taking implicit x and y
 .[x; ;:;                              ]  / index apply assignment back into x
         .q.rotate[1;                 ]   / left rotate 1 character
                           (       ; )    / two item list
                                    y     / index to rotate
                               #:'x       / count (#:) each (') input
                             y<           / index less than ?
                            &             / indexes where true
                         i:               / assign to variable w
                     x .                  / index into x
     i                                    / indexes we saved as i earlier

3

Japt v2.0a0, 18 byte

Dựa trên 0 với đầu vào và đầu ra dưới dạng chuỗi nhiều dòng. Xoay lên 1.

Phải có một phương pháp ngắn hơn!

yÈr\S_Y¦V?Z:°TgXrS

Thử nó

yÈr\S_Y¦V?Z:°TgXrS     :Implicit input of string U & integer V
y                      :Transpose
 È                     :Pass each line X at 0-based index Y through the following function & transpose back
  r                    :  Replace
   \S                  :  RegEx /\S/g
     _                 :  Pass each match Z through the following function
      Y¦V              :    Test Y for inequality with V
         ?Z:           :    If true, return Z, else
            °T         :    Increment T (initially 0)
              g        :    Index into
               XrS     :    X with spaces removed

Tôi đã không nhìn kỹ vào các bình luận và các quy tắc mới (vì vậy có lẽ nó được đề cập ở đâu đó cho phép bây giờ, trong khi nó không có trước đây), nhưng nó có được phép bỏ qua khoảng trắng của đầu vào ban đầu không? Giả sử bạn thay đổi chỉ mục đầu vào thành 6, câu trả lời của bạn sẽ bỏ qua khoảng trắng ở line withdòng đầu tiên và ở Rotate heredòng thứ tư, trong khi hầu hết các câu trả lời khác cũng sẽ xoay không gian đó.
Kevin Cruijssen

@KevinCruijssen, tôi hơi bối rối bởi tất cả các quy tắc và phụ cấp bổ sung, nhưng, nếu đó một vấn đề, có vẻ như tôi có thể khắc phục điều đó bằng cách không cho phép khoảng trắng trong đầu vào. Tôi nghĩ.
Shaggy

1
" Tôi nghĩ " Phần này thực sự là cách tôi cũng sẽ trả lời, haha. Tôi không biết cái gì là bắt buộc và tùy chọn nữa, nhưng tôi nghĩ bạn thực sự có thể chọn bỏ qua khoảng trắng trong đầu vào và đầu ra; Tôi nghĩ bạn có thể chọn để đếm không gian hoặc không; và tôi nghĩ bạn có thể sử dụng không gian dùng thử trong đầu ra hay không; vv Tất cả trên khá khó hiểu. À ..
Kevin Cruijssen

3

Thạch , 16 byte

z⁷⁹ịỴFṙ-ṁƲY⁸ṛ⁹¦"

Liên kết dyadic chấp nhận danh sách các dòng (danh sách các ký tự không chứa ký tự dòng mới) ở bên trái và một số nguyên ở bên phải trả về danh sách các dòng.

Hãy thử trực tuyến! (chân trang tách ra trên dòng mới, gọi Liên kết và tham gia lại bằng dòng mới)

Làm sao?

z⁷⁹ịỴFṙ-ṁƲY⁸ṛ⁹¦" - Link: lines L; index I        e.g. example in question; 20
z⁷               - transpose L with filler '\n'       ['AAART\nTW', '   oh\nhr', ...]
  ⁹ị             - Ith item                           'am\nv.\n\nt'
    Ỵ            - split at newlines                  ['am', 'v.', '', 't']
         Ʋ       - last four links as a monad - i.e. f(X):
     F           -   flatten                          'amv.t'
       -         -   -1
      ṙ          -   rotate left by                   'tamv.'
        ṁ        -   mould like X                     ['ta', 'mv', '', '.']
          Y      - join with newlines                 'ta\nmv\n\n.'
                 -   -- call this C
           ⁸     - chain's left argument, L
               " - zip with - i.e. [f(L1,C1), f(L2,C2), ...]:
              ¦  -   sparse application...
             ⁹   -   ...to indices: chain's right argument, I
            ṛ    -   ...of: right argument, Cn

2

perl 5 ( -p), 75 byte

k là 0 chỉ mục, xoay xuống

s/.*//;$r="^.{$&}";s/
//;/$r(.)/;$c=$1;s/$r\K.(?=(?s:.)*?$r(.)|)/$1||$c/gme

TIO


2

Perl 6 , 38 33 byte

Sửa đổi mảng tại chỗ (quy tắc không cho phép)

{@^a.grep(*>$^b+1)[*;$b].=rotate}

Hãy thử trực tuyến!


@joking Lúc đầu, tôi nghĩ rằng việc lưu trữ nó thay vì xuất ra nó sẽ là một chút gian lận, nhưng đọc lại các quy tắc, không có quy định thực tế nào để đầu ra nên nên hooray. Mặc dù thực hiện một cuộc gọi (Lôi) để có được 31 như bạn chắc chắn là gian lận, vì nó thực sự đã thực hiện một cuộc gọi ra khỏi khối, nhưng vẫn có thể thực hiện được với 33 cuộc gọi đồng thời với một cuộc gọi duy nhất vì vậy tôi Tôi sẽ đi với điều đó.
user0721090601

ah oops, tôi dán liên kết sai. bạn có những gì tôi muốn bình luận mặc dù. Đầu vào Currying hoàn toàn tốt mặc dù (mặc dù nó không hoạt động trong trường hợp này) và sửa đổi một đối số được truyền bằng tham chiếu là một tiêu chuẩn không được phép của đầu vào được cho phép
Jo King

2

JavaScript (Node.js) , 52 byte

k=>a=>a.filter(b=>b[k]&&([b[k],a]=[a,b[k]]))[0][k]=a

Hãy thử trực tuyến!

-7 byte nhờ Shaggy!

Chưa thấy câu trả lời JavaScript! Cổng câu trả lời C # của tôi.


63 byte . Có lẽ có thể được chơi golf hơn nữa.
Xù xì

@Shaggy - tốt đẹp :) hầu hết thời gian tôi thấy các câu trả lời của JS làm đủ thứ điên rồ. Hình lần này tôi sẽ cho nó một phát súng kể từ khi tôi có một chiến lược.
dana

1
Oh, chơi golf độc đáo! :)
Shaggy

2

Than , 34 28 21 byte

θJη⁰≔ΦKDLθ↓℅ιζUMζ§ζ⊖κ

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Lấy một chuỗi các chuỗi làm đầu vào. Chỉ số 0. Chỉnh sửa: Bây giờ PeekDirectionđã được sửa, tôi có thể thao tác trực tiếp. Giải trình:

θ

In các chuỗi đầu vào.

Jη⁰

Nhảy lên đỉnh cột cần xoay.

≔ΦKDLθ↓℅ιζ

Trích xuất các ô đã được in.

UMζ§ζ⊖κ

Thay thế mỗi ô được in bằng giá trị của ô trước đó (theo chu kỳ). Thuận tiện các giá trị ô được đọc tại thời điểm PeekDirectioncuộc gọi vì vậy thực tế rằng MapCommandcuộc gọi ghi các giá trị mới vào các ô không thành vấn đề.


1

Đường ống -rn , 32 byte

POgY#(g@_)>aFI,#gFiyAE@ySsg@i@ag

Chỉ số 0, quay xuống. Hãy thử trực tuyến!

Các bộ lọc để tìm các chỉ số của tất cả các hàng đủ dài để tham gia vào vòng quay. Sau đó lặp qua các hàng đó, hoán đổi ký tự thích hợp trên mỗi hàng bằng biến tạm thời s. Đến thăm hàng đầu tiên một lần nữa ở cuối, hoán đổi giá trị giả trở lại.


1

Thạch , 19 byte

ZnÄ×$ịḟ¹ṙ-;ɗɗʋ€⁹¦⁶Z

Hãy thử trực tuyến!

1 chỉ mục. Xoay xuống. Một liên kết đơn âm có một danh sách các chuỗi Jelly được đệm bên phải (một danh sách các danh sách các ký tự) làm đối số đầu tiên và k là đối số thứ hai. Dấu cách bị cấm trong đầu vào ngoại trừ phần đệm bên phải, nhưng tất cả các ký tự khác đều được phép.

Như được thực hiện trên TIO, phần chân trang sẽ chia một đầu vào chuỗi đơn thành một danh sách các chuỗi và phần đệm bên phải, nhưng điều này là để thuận tiện; theo tôi hiểu, kết quả của bước đó được cho phép nhập vào liên kết chính theo quy tắc.


1

GFortran , 199 byte

-20 hoặc hơn bằng cách đọc từ stdin chứ không phải tệp
-14 bằng cách sử dụng số nguyên ẩn cho i, k, n
-4 bằng cách xóa khoảng trắng và::

Yêu cầu người dùng nhập kntrên dòng đầu tiên, kcột xoay ở đâu và nsố lượng hàng văn bản. Đầu vào tiếp theo là các dòng văn bản sẽ được xoay. Đây là một nỗi đau để viết! Fortran là quá tầm thường!

character(99),allocatable::A(:);character(1)r,s
read(*,*)k,n;allocate(A(n))
do i=1,n;read(*,'(A)')A(i);r=A(i)(k:k)
if(r.ne.''.or.r.ne.' ')then;A(i)(k:k)=s;s=r;endif;enddo
A(1)(k:k)=s;print'(A)',A;end

0

T-SQL, 195 byte

WITH C as(SELECT rank()over(order by i)r,sum(1)over()c,*FROM @t
WHERE len(x)>=@)SELECT
isnull(stuff(c.x,@,1,substring(e.x,@,1)),t.x)FROM @t t
LEFT JOIN c ON t.i=c.i
LEFT JOIN c e ON e.r%c.c+1=c.r

Dùng thử phiên bản không có bản quyền

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.