Kéo dài từ


50

Đầu vào là một từ của các chữ cái viết thường không được phân tách bằng khoảng trắng. Một dòng mới ở cuối là tùy chọn.

Cùng một từ phải được xuất ra trong một phiên bản sửa đổi: Đối với mỗi ký tự, nhân đôi nó lần thứ hai xuất hiện trong từ gốc, nhân ba lần thứ ba, v.v.

Ví dụ đầu vào:

bonobo

Ví dụ đầu ra:

bonoobbooo

Quy tắc I / O tiêu chuẩn được áp dụng. Mã ngắn nhất tính bằng byte thắng.

Các xét nghiệm được cung cấp bởi @Neil:

tutu -> tuttuu
queue -> queuuee
bookkeeper -> boookkkeeepeeer
repetitive -> repeetittiiveee
uncopyrightables -> uncopyrightables
abracadabra -> abraacaaadaaaabbrraaaaa
mississippi -> misssiisssssssiiipppiiii

Câu trả lời:


36

Thạch , 4 byte

;\f"

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

Làm thế nào nó hoạt động

;\f"  Main link. Argument: S (string)

;\    Cumulatively reduce by concatenation.
      This yields the array of all prefixes of S.
  f"  Vectorized filter.
      Keep only occurrences of the nth letter in the nth prefix.

21
Vậy thì ... rip Pyth.
Ad Nam

2
Trang web này đang trở thành một cuộc cạnh tranh cho ngôn ngữ chơi gôn đa năng tốt nhất ... không phải đó là một điều xấu.
Shelvacu

8
@shelvacu Điều thứ hai gây tranh cãi, 2 người bạn tôi đã cho thấy PPCG đã nói điều gì đó dọc theo dòng chữ "tất cả các câu trả lời hàng đầu chỉ là sử dụng ngôn ngữ golf" như một ấn tượng đầu tiên.
Mất trí

@Insane có / đang. Code golf là một điều khá phổ biến. Vì vậy, các ngôn ngữ được đặt cùng nhau cho mục đích đó, độc quyền.
Evan Carslake

Cái này hoạt động ra sao?
Erik the Outgolfer

21

Bình thường, 6 byte

Cảm ơn @Doorknob đã lấy ra 1 byte.

Cảm ơn @Maltysen đã gỡ 5 byte.

s@VQ._

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

Làm thế nào nó hoạt động


Ví dụ, lấy chuỗi "bonobo".

._ lập danh sách: ['b', 'bo', 'bon', 'bono', 'bonob', 'bonobo']

VQ._có nghĩa là "hàm trước được vectơ hóa (áp dụng song song) Q._", có nghĩa là Q(đầu vào được đánh giá) sẽ được coi là một danh sách: ['b', 'o', 'n', 'o', 'b', 'o']và sau đó chúng sẽ được ghép nối @như sau:

     Q      ._         @ (intersect)
0:  'b'     'b'       'b'
1:  'o'     'bo'      'o'
2:  'n'     'bon'     'n'
3:  'o'     'bono'    'oo'
4:  'b'     'bonob'   'bb'
5:  'o'     'bonobo'  'ooo'

Do đó, @VQ._sẽ sản xuất ['b', 'o', 'n', 'oo', 'bb', 'ooo'].

Sau sđó kết hợp tất cả chúng lại với nhau, tạo ra một chuỗi 'bonoobbooo', sau đó được in ra để trở thành bonoobbooo.


2
Kenny, lời giải thích của bạn là sai. VQchỉ có nghĩa là for N in Qkhi nó không nằm trong hàm. Trong trường hợp này, những gì thực sự đang diễn ra @Vcó nghĩa là @hàm được vector hóa (áp dụng song song) qua hai đối số tiếp theo của nó Q._. Điều này bị thiếu trong các tài liệu, vì vậy tôi sẽ sửa nó.
isaacg

14

Võng mạc , 34 19 byte

Lưu 15 byte bằng cách lấy một số cảm hứng từ giải pháp của isaacg.

Số lượng byte giả định mã hóa ISO 8859-1.


$`¶
(\D)(?!.*\1¶)

Các dòng trống hàng đầu và dấu là đáng kể.

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

Giải trình


$`¶

Đây là giai đoạn thay thế khớp với biểu thức chính trống (nghĩa là mọi vị trí có độ rộng bằng 0 trong chuỗi) và thay thế $`¶cho nó, trong đó $`là tiền tố của kết quả khớp và chèn một nguồn cấp dữ liệu. Điều này về cơ bản sẽ tính toán tất cả các tiền tố và đặt chúng trên một dòng riêng cùng với ký tự cuối cùng của tiền tố đó:

bb
obo
oboo
kbook
kbookk
ebookke
ebookkee
pbookkeep
ebookkeepe
rbookkeeper

Sẽ có một số nguồn cấp dữ liệu hàng đầu và dấu, nhưng chúng ta có thể bỏ qua chúng.

Từ mỗi tiền tố này, chúng tôi muốn giữ các ký tự bằng với ký tự cuối cùng. Cho rằng chúng tôi sử dụng một giai đoạn thay thế khác:

(\D)(?!.*\1¶)

Điều này phù hợp với tất cả mọi thứ chúng tôi không muốn giữ và thay thế nó bằng không có gì. Chúng phù hợp với bất kỳ ký tự (sử dụng \Dkể từ khi chúng ta biết sẽ không có chữ số trong dữ liệu) và sau đó hãy chắc chắn rằng có không phải là một bản sao của nhân vật mà ở phần cuối của dòng.


11

Python, 56 byte

Tôi dường như bị mắc kẹt với hai câu trả lời có cùng độ dài:

f=lambda x,*y:x and-~y.count(x[0])*x[0]+f(x[1:],x[0],*y)
f=lambda x,y=0:x[y:]and-~x[:y].count(x[y])*x[y]+f(x,y+1)

Chỉnh sửa: Xem câu trả lời của @ pacholik để biết cách tiếp cận Python ngắn hơn, thay thế.


Tôi không quen đánh bạn bằng các câu trả lời> <> của mình, tôi đang chờ câu trả lời của Gol> <> để khắc phục điều đó;)
Aaron

@Aaron Quá tệ, tôi thực sự sẽ đánh bại bạn trở lại với> <>: P
Sp3000

Dòng nhiễu trong Python? Thật là dị giáo !
con mèo

Làm gì - ~ làm gì? Tôi biết rằng bitwise KHÔNG theo sau bởi phủ định, nhưng bạn đang cố gắng làm gì để nó tiết kiệm một vài byte trên?
Nic Hartley

2
@QPaysTaxes Đó là sự gia tăng +1với mức độ ưu tiên đủ cao để không cần parens
Sp3000

10

Haskell, 39 byte

f""=""
f x=f(init x)++filter(==last x)x

Ví dụ sử dụng: f "bonobo"-> "bonoobbooo".

Khác với câu trả lời của @ Damien . Xây dựng chuỗi từ bên phải bằng cách trích xuất tất cả các lần xuất hiện của ký tự cuối cùng từ chuỗi và chuẩn bị một cuộc gọi đệ quy với tất cả trừ ký tự cuối cùng.


9

> <> , 27 byte

>i:0g1+:\
:{-1v!?:<}o
/p${/

Yêu cầu trình thông dịch chính thức thoát lỗi khi in mã điểm -1. Hãy thử trực tuyến!

Mã đọc một char đầu vào tại một thời điểm và sử dụng hàng đầu tiên của codebox như một mảng lớn lưu trữ số lần mỗi char được nhìn thấy cho đến nay (> <> khởi tạo các ô không có chương trình thành 0). Hàng thứ hai là một vòng lặp để xuất ra một char nhiều lần.

Ngoài ra, đây là phiên bản thoát hoàn toàn (37 byte, không được đánh đúng cách):

>i:0(?;:0g1+:\
}o:{-1v!?:   <
v  p${<

Chết tiệt thật tốt! Tôi nên ngừng phụ thuộc quá nhiều vào trình thông dịch trực tuyến, tôi sẽ không bao giờ nghĩ về việc sử dụng một bộ mã lớn như vậy và tôi thậm chí còn không biết trình thông dịch chính thức đã thoát ra trên bản in -1
Aaron

2
@Aaron Vâng, đó là một hệ quả của lỗi Python khi cố gắng làm chr(-1). Trình thông dịch hoạt hình tuyệt vời cho trực quan hóa, nhưng thật không may, một số khác biệt với trình thông dịch chính thức là một chút khó chịu: /
Sp3000

9

JavaScript (ES6), 48 45 byte

s=>s.replace(n=/./g,c=>c.repeat(n[c]=-~n[c]))

Chỉnh sửa: Đã lưu 3 byte nhờ @ user81655.


8

Haskell, 50 42 41 byte

Đã lưu 8 byte nhờ Lynn

f t=[c|(i,c)<-zip[1..]t,x<-take i t,c==x]

1
Làm thế nào về:f t=[c|(i,c)<-zip[0..]t,j<-[0..i],c==t!!j]
Lynn

8

MATL , 8 byte

tt!=RsY"

Hãy thử trực tuyến! Hoặc xác minh tất cả các trường hợp thử nghiệm cùng một lúc .

Giải trình

t    % take input string implictly. Duplicate
t!   % duplicate and transpose into a column
=    % test for equality with broadcast. Gives an NxN array, where N is
     % input string length
R    % upper triangular part: set entries below the diagonal to 0
s    % sum of each column. For each postion in the input, gives how many
     % times that letter has appeared up to that position
Y"   % replicate elements (run-length decoding). Display implicitly

8

Mê cung , 54 25 byte

<#; "#: ={},>
 }=}(.);("@

Một người cộng tác khác với @ MartinBüttner, người thực sự đã làm hầu hết tất cả các môn đánh gôn cho môn này. Bằng cách cải tiến thuật toán, chúng tôi đã cố gắng giảm kích thước chương trình xuống một chút!

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

Giải trình

Một mồi nhanh Labrinth:

  • Labyrinth là một ngôn ngữ 2D dựa trên ngăn xếp. Có hai ngăn xếp, một ngăn xếp chính và phụ, và xuất hiện từ một ngăn xếp trống mang lại số không.

  • Tại mỗi ngã ba, nơi có nhiều đường dẫn cho con trỏ lệnh di chuyển xuống, đỉnh của ngăn xếp chính được kiểm tra để xem nơi tiếp theo sẽ đi. Tiêu cực là rẽ trái, không là thẳng về phía trước và tích cực là rẽ phải.

Hai ngăn xếp của các số nguyên chính xác tùy ý không linh hoạt về các tùy chọn bộ nhớ. Để thực hiện đếm, chương trình này thực sự sử dụng hai ngăn xếp như một cuộn băng, với việc chuyển một giá trị từ ngăn xếp này sang ngăn xếp khác giống như di chuyển một con trỏ bộ nhớ sang trái / phải bởi một ô. Mặc dù vậy, nó không hoàn toàn giống như vậy, vì chúng ta cần phải kéo một bộ đếm vòng lặp với chúng ta trên đường lên.

nhập mô tả hình ảnh ở đây

Trước hết, phần cuối <>một trong hai bật một phần bù và xoay hàng mã bù đi một bên trái hoặc phải. Cơ chế này được sử dụng để làm cho mã chạy trong một vòng lặp - <bật số 0 và xoay hàng hiện tại sang trái, đặt IP ở bên phải mã và >bật số 0 khác và sửa lại hàng.

Đây là những gì xảy ra mỗi lần lặp, liên quan đến sơ đồ trên:

[Section 1]
,}    Read char of input and shift to aux - the char will be used as a counter
      to determine how many elements to shift

[Section 2 - shift loop]
{     Shift counter from aux
"     No-op at a junction: turn left to [Section 3] if char was EOF (-1), otherwise
      turn right
(     Decrement counter; go forward to [Section 4] if zero, otherwise turn right
=     Swap tops of main and aux - we've pulled a value from aux and moved the
      decremented counter to aux, ready for the next loop iteration

[Section 3]
@     Terminate

[Section 4]
;     Pop the zeroed counter
)     Increment the top of the main stack, updating the count of the number of times
      we've seen the read char
:     Copy the count, to determine how many chars to output

[Section 5 - output loop]
#.    Output (number of elements on stack) as a char
(     Decrement the count of how many chars to output; go forward to [Section 6]
      if zero, otherwise turn right
"     No-op

[Section 6]
}     Shift the zeroed counter to aux

[Section 7a]
This section is meant to shift one element at a time from main to aux until the main
stack is empty, but the first iteration actually traverses the loop the wrong way!

Suppose the stack state is [... a b c | 0 d e ...].

=     Swap tops of main and aux               [... a b 0 | c d e ...]
}     Move top of main to aux                 [... a b | 0 c d e ...]
#;    Push stack depth and pop it (no-op)
=     Swap tops of main and aux               [... a 0 | b c d e ...]
      Top is 0 at a junction - can't move
      forwards so we bounce back
;     Pop the top 0                           [... a | b c d e ... ]

The net result is that we've shifted two chars from main to aux and popped the
extraneous zero. From here the loop is traversed anticlockwise as intended.

[Section 7b - unshift loop]

#     Push stack depth; if zero, move forward to the <, else turn left
}=    Move to aux and swap main and aux, thus moving the char below (stack depth)
      to aux
;     Pop the stack depth

7

Perl, 17

(Mã 16 byte, +1 cho -p)

s/./${$&}.=$&/ge

Sử dụng:

perl -pe 's/./${$&}.=$&/ge' <<< 'bonobo'
bonoobbooo

7

Bình thường, 7 byte

s@Led._

Bộ kiểm tra

Bộ thử nghiệm nhờ DenkerAffe

Giải trình:

s@Led._
     ._    All prefixes, implicitly applied to the input.
 @L        Filter each prefix for characters equal to
   ed      the last character of the prefix
s          Concatenate and implicitly print.

6

Trăn 3, 52

def f(s):*s,x=s;return s and f(s)+x+x*s.count(x)or x

4
Ah, đi từ cuối có ý nghĩa hơn rất nhiều! Bạn có thể thực hiện việc này ngắn hơn trong lambda, mà không cần Python 3 cụ thể:f=lambda s:s and f(s[:-1])+s[-1]*s.count(s[-1])
Sp3000

Tôi mặc dù nó có thể được thực hiện theo cách đó. Nhưng tôi không thích đăng ký bằng Python: P
pacholik

5

PowerShell v2 +, 52 47 byte

$b=@{};-join([char[]]$args[0]|%{"$_"*++$b[$_]})

Xây dựng một hashtable trống, lưu trữ nó trong $b. Đây là "đối trọng" của chúng tôi về những chữ cái chúng ta đã thấy. Sau đó chúng tôi lấy đầu vào $args[0], chuyển nó thành một mảng char và gửi nó qua một vòng lặp. Mỗi lần lặp, chúng ta lấy ký tự hiện tại "$_"và nhân nó với bộ đếm tăng trước ở giá trị đã cho, điều này sẽ làm cho lần xuất hiện đầu tiên được nhân với 1, lần thứ hai 2, v.v. Chúng tôi gói gọn rằng với -jointất cả một từ là đầu ra.

Đã lưu 5 byte nhờ TessellatingHeckler bằng cách sử dụng hàm băm thay vì mảng, vì vậy chúng tôi không cần phải giảm ký tự ASCII bằng cách 97đạt được chỉ mục thích hợp. Điều này hoạt động vì tăng trước chỉ số băm gọi ngầm .Add()trong nền nếu chỉ mục đó không tồn tại, vì hashtables có thể thay đổi.

PS C:\Tools\Scripts\golfing> .\stretch-the-word.ps1 tessellatingheckler
tessseelllattingheeeckllleeeer

@TessellatingHeckler Thật vậy - cảm ơn!
admBorkBork

5

APL Dyalog , 6 byte

∊,\∩¨⊢

Hãy thử!

4 chức năng là trên đỉnh (2 tàu) của một ngã ba (3 tàu):

┌──┴──┐  
∊ ┌───┼─┐
  \   ¨ ⊢
┌─┘ ┌─┘  
,   ∩    

Đầu tiên (bên phải - không có) trên chuỗi đã cho, cho'bonobo'

Sau đó ,\(quét nối) trên chuỗi, cho'b' 'bo' 'bon' 'bono' 'bonob' 'bonobo'

Cả hai được chia rẽ với nhau (được đưa ra là đối số phải và trái) ∩¨(giao nhau), nghĩa ('b'∩'b') ('bo'∩'o') ('bon'∩'n') ('bono'∩'o') ('bonob'∩'b') ('bonobo'∩'o')'b' 'o' 'n' 'oo' 'bb' 'ooo'

Cuối cùng, (liệt kê) được áp dụng cho kết quả để làm phẳng nó, cho'bonoobbooo'

Này, ít nhất thì nó cũng hợp với Pyth ! Rõ ràng Jelly ngắn hơn vì đây là phiên bản golf của J, mà lần lượt là một phương ngữ 2 ký tự cho mỗi chức năng tiên tiến của APL.


4

Bình thường, 11 byte

s.e*b/<Qhkb

Hãy thử nó ở đây!

Giải trình

se * b / <Qhkb # Q = đầu vào

 .e # ánh xạ qua đầu vào với b là giá trị và k là chỉ mục (Q được thêm vào cuối một cách ngẫu nhiên)
      <Qhk # lấy ký tự k + 1 đầu tiên của Q
     / b # số lần xuất hiện của b trong đó
   * b # lặp lại b nhiều lần
s # tham gia danh sách kết quả thành một chuỗi

4

J, 11 byte

#~+/@(={:)\

Đây là một động từ đơn âm. Hãy thử nó ở đây. Sử dụng:

   f =: #~+/@(={:)\
   f 'tutu'
'tuttuu'

Giải trình

#~+/@(={:)\
     (   )\  For each non-empty prefix:
       {:      Take last element,
      =        compare for equality to the others and itself
  +/@          and take sum (number of matches).
#~           Replicate original elements wrt the resulting array.

4

05AB1E , 10 byte

Mã số:

$vy«Dy¢y×?

Giải trình:

$           # Push the number 1 and input
 v          # Map over the input string
  y«        # Concat the letter to the previous string (initial 1)
    D       # Duplicate this string
     y¢     # Count the occurences of the current character in the string
       y×   # Multiply this number with the current character
         ?  # Pop and print without a newline

Sử dụng mã hóa CP-1252 . Hãy thử trực tuyến!


3

CJam, 14

q:A,{)A<_)--}/

Dùng thử trực tuyến

Giải trình:

q:A      read the input and store in A
,        get the string length
{…}/     for each number from 0 to length-1
  )      increment the number
  A<     get the prefix of A with that length
  _      duplicate it
  )      separate the last character
  -      remove it from the rest of the prefix
  -      remove all the remaining characters (different from the last one)
          from the prefix

2

Perl 6, 37 byte

{.split('').map({$_ x++%.{$_}}).join}

2

> <> , 52 byte

i:0(?;&l:?!v1-$:&:&=?\}70.>
6f+0.00o:&~/         \:o

Nó xếp chồng từng chữ cái đã đọc, in chúng một lần và một lần nữa cho mỗi chữ cái tương tự trong ngăn xếp.
Nó sử dụng thanh &ghi, vì phải xử lý 3 biến trên ngăn xếp (chữ đọc hiện tại, vị trí trong ngăn xếp, chữ cái ở vị trí này) là một nỗi đau.

Bạn có thể thử nó ở đây !


2

Rust, 176 byte

fn s(w:&str)->String{let mut m=std::collections::HashMap::new();w.chars().map(|c|{let mut s=m.remove(&c).unwrap_or(String::new());s.push(c);m.insert(c,s.clone());s}).collect()}

Điều này sử dụng bản đồ để lưu trữ một chuỗi cho mỗi ký tự trong đầu vào. Đối với mỗi ký tự, chuỗi sẽ được xóa khỏi bản đồ, nối với ký tự đó, chèn lại vào bản đồ và gắn vào đầu ra.

Tôi muốn sử dụng get(...)thay vì remove(...), nhưng công cụ kiểm tra mượn đã khiến tôi thay đổi quyết định.


2

Mathcad, 66 byte

Thật không may, Mathcad không có khả năng xử lý chuỗi đặc biệt tốt, vì vậy tôi đã chuyển đổi chuỗi đầu vào thành một vectơ và sau đó sử dụng một vectơ (mã ký tự được lập chỉ mục) để theo dõi số lần gặp phải một ký tự, thêm ký tự đó số lần cho một vectơ kết quả. Cuối cùng, vectơ kết quả được chuyển đổi trở lại thành một chuỗi. Khá tiếc là không may.

nhập mô tả hình ảnh ở đây

Lưu ý rằng Mathcad sử dụng giao diện "bảng trắng" 2D, với sự pha trộn giữa văn bản và toán tử thông thường; toán tử thường được nhập thông qua một thanh công cụ hoặc phím tắt; ví dụ: ctl- # nhập toán tử vòng lặp for, bao gồm từ khóa cho, phần tử - của ký hiệu và 3 "chỗ dành sẵn" trống cho biến lặp, phạm vi và biểu thức cơ thể tương ứng. Nhập [sau khi tên biến vào chế độ chỉ mục mảng, Nhập 'nhập một cặp dấu ngoặc phù hợp ( chủ yếu ... có các ngoại lệ tùy thuộc vào những gì khác trong biểu thức xung quanh )


2

Javascript ES6 44 byte

q=>q.replace(/./g,a=>x[a]=(x[a]||'')+a,x=[])

câu trả lời cũ

Javascript ES6 46 byte

q=>(x=[...q]).map(a=>x[a]=(x[a]||'')+a).join``

//thanks user81655 for -1 byte

1
Bạn có thể lưu một byte bằng cách di chuyển xđến mảng đầu vào ->q=>(x=[...q]).map(a=>x[a]=(x[a]||'')+a).join``
user81655

2

Julia, 38 35 byte

!s=[]==s?s:[!s[1:end-1];ss[end]]

I / O nằm trong mảng ký tự. Hãy thử trực tuyến!

Làm thế nào nó hoạt động

Chúng tôi (lại) định nghĩa toán tử đơn âm ! cho mục đích của chúng ta.

Khi nào ! được gọi, nó kiểm tra xem s đối số của nó có trống không. Nếu có, nó trả về đối số của nó.

Nếu s không trống, chúng ta cắt s với ký tự cuối cùng của nó ( s[end]), tạo ra tất cả các lần xuất hiện của ký tự đó trong s . Kết quả này được nối với giá trị trả về của một cuộc gọi đệ quy đến ! với s trừ ký tự cuối cùng của nó ( s[1:end-1]) làm đối số.


2

PHP, 54 51 50 47 byte

for(;$C=$argn[$X++];)echo str_repeat($C,++$$C);

Chạy như thế này:

echo abracadabra | php -nR 'for(;$C=$argn[$X++];)echo str_repeat($C,++$$C); echo"\n";'

Tinh chỉnh

  • Đã lưu 3 byte bằng cách sử dụng các biến biến. Thay đổi các biến được sử dụng thành chữ hoa để ngăn va chạm
  • Đã lưu một byte bằng cách loại bỏ kiểu truyền nullsang phần intbù chuỗi, vì phần bù chuỗi được truyền sang int
  • Đã lưu 3 byte bằng cách sử dụng $argnthay vì $argv(thx Titus)

Sử dụng $argnvới -Rđể lưu thêm ba byte.
Tít

Ồ, và -nnên làm giống như của bạn -d error_reporting: nlà viết tắt của no config file, và các thông báo bị tắt trong cấu hình mặc định; vì vậy -nr(tương ứng -nR) nên đủ.
Tít

@Titus 2 tuổi trả lời, nhưng dù sao đi nữa :)
vào

1

Toán học, 57 byte

StringReplace[Clear@c;c@_=0;#,x_:>x~StringRepeat~++c[x]]&

Chúng tôi sử dụng c[x]như một bảng tra cứu về tần suất xuất hiện của nhân vật x. Điều này được tăng lên mỗi khi nó được lấy x~StringRepeat~++c[x]. Thật không may, để làm cho chức năng có thể sử dụng lại, chúng ta cần thiết lập lại bảng tra cứu mỗi lần Clear@c;c@_=0;, điều này khá tốn kém.


1

ôi, 72 byte

BEGIN{FS=""}{for(i=1;i<=NF;i++){a[$i]++;for(j=0;j<a[$i];j++)printf $i}}

Ý tưởng là lưu trữ số đếm của ký tự xuất hiện trong một mảng kết hợp và in ký tự này đếm lần.


1

Chùm, 32 33 42 byte

Điều này đáng lẽ phải nhỏ hơn, nhưng tôi đã mất một số byte khi khởi tạo các khe nhớ thành 0. Hoán đổi một số hướng dòng được quản lý để loại bỏ rất nhiều không gian trống.

 >+\
vus/
>rnH
  >g'\
(@v's/
^`<

Hãy thử nó trong đoạn trích này

Giải thích chung.

  • Đặt tất cả các khe cắm bộ nhớ từ 0-255 đến 0
  • Đọc giá trị ascii đầu vào vào chùm
  • Nếu chùm là 0 dừng (chùm = cửa hàng)
  • Lấy giá trị bộ nhớ [chùm] vào cửa hàng, tăng nó và lưu lại
  • Giảm cửa hàng xuống 0 in ký tự chùm
  • Nói lại

1

Python, 66 62 byte

Hãy thử nó ở đây

Chơi gôn

def s(w,o=[],n=""):
 for x in w:o+=x;n+=x*o.count(x)
 return n

Ung dung

def stretch(word):
    occurrences = []
    newWord = ""
    for w in word:
        occurrences.append(w)
        newWord += w * occurrences.count(w)
    return newWord
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.