Tạo một công cụ mã hóa


18

Khi sử dụng Markup, giống như trên mạng SE, một vết lõm của bốn khoảng trắng trước khi một dòng văn bản biểu thị nó là một phần của khối mã, như tôi hy vọng bạn biết. Nếu bạn không, đây là một ví dụ ( .đại diện cho một khoảng trắng):

.... Mã
.... Thêm mã

kết quả trong

Code
More code

Vấn đề là, khi bạn sao chép-dán mã vào câu trả lời, bạn cần thụt lề từng dòng theo cách thủ công. Điều này đặc biệt khó khăn khi làm việc với mã không được mã hóa, vì nó có thể đã bị thụt vào và có thể gây nhầm lẫn. Bạn chỉ có thể chọn mã của bạn và nhấn Ctrl + K, nó bật ra. Hàng giờ cuộc đời tôi bị lãng phí mà không có lý do gì ...

Vì vậy, mục tiêu của bạn là, được đưa ra một đầu vào, trả lại nó với bốn khoảng trắng trước mỗi dòng. Với tinh thần tiết kiệm thời gian dán sao chép, bạn phải xử lý toàn bộ đầu vào dưới dạng một chuỗi (miễn là ngôn ngữ của bạn có thể phân tích cú pháp). Nếu ngôn ngữ của bạn không thể xử lý một ký tự (chẳng hạn như dòng mới) trong chuỗi, bạn có thể cho rằng nó được ký hiệu / thoát qua một số phương thức khác được ngôn ngữ hỗ trợ; tuy nhiên, đầu ra phải xuất ra mỗi dòng trên dòng riêng của nó (vì vậy không chuyển qua một cái gì đó như ....foo\n....bar).

Sơ hở tiêu chuẩn không được phép. Vì đây là , câu trả lời ngắn nhất bằng byte sẽ thắng. Chúc may mắn!


3
"Bạn cần thụt lề từng dòng một cách thủ công" (hoặc chọn văn bản và nhấp vào nút :))
Jonathan Allan

11
@Jonathan ALLan "Nút"? Chắc chắn bạn có nghĩa là "phím tắt". (Ctrl + K)
Martin Ender

31
@Jonathan ALLan ... Tôi ... tôi rất buồn. QUÁ NHIỀU THỜI GIAN. RÁC THẢI.
Papayaman1000

6
Mặc dù tôi khá tin tưởng rằng câu trả lời V của Kritix sẽ không bị đánh bại, nhưng tôi thường khuyên bạn nên chờ đợi lâu hơn một chút trước khi chấp nhận câu trả lời, bởi vì chấp nhận quá sớm sẽ gây bất lợi cho những người có thể trả lời bằng câu trả lời ngắn hơn nhưng không được trang web vào thời điểm đó (múi giờ hoặc không phải lúc nào cũng có mặt trên PPCG 24/7)
HyperNeutrino

2
+1 để thông báo cho mọi người vềCtrl + K
Koishore Roy

Câu trả lời:


17

V , 4 byte

Î4É 

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

(Lưu ý dấu cách)

V được mã hóa bằng Latin1, trong đó mã này được mã hóa như vậy:

00000000: ce34 c920                                .4. 

Giải trình

Î            " On every line
 4É<space>   " Prepend 4 spaces

Đây là một giải pháp cũng có 4 byte trong UTF-8!

VG4>

VG          " Select everything
   >        " Indent
  4         " 4 times (with spaces)

2
Hy vọng ai đó nhấc điện thoại đó lên, vì wow đã có người gọi nó.
Papayaman1000

Giải pháp thay thế:4ñ>G
DJMcMayhem

@DJMcMayhem Nhưng nó sử dụng các tab để thụt lề thay vì khoảng trắng
Kritixi Lithos

Trong vim, vâng. Trong V, không, đó là 4 không gian
DJMcMayhem

@DJMcMayhem Cảm ơn, đã truyền cảm hứng cho một giải pháp thay thế khác chỉ có 4 byte trong UTF-8!
Kritixi Lithos

9

Crayon , 7 byte

`¤q;3xq

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

Giải trình

Crayon là một ngôn ngữ dựa trên ngăn xếp được thiết kế để tạo nghệ thuật ASCII. Nó vẫn đang trong giai đoạn phát triển ban đầu, nhưng nó biết vừa đủ để hoàn thành thử thách này với số byte khá thấp:

         Implicit: input string is on the stack
`¤       Push a non-breaking space to the stack.
  q;     Draw this at the cursor (0,0 by default) and pop it.
    3x   Move three more spaces to the right.
      q  Draw the input string here (at 4,0).
         Implicit: output the canvas, trimmed to a rectangle

Việc vẽ không gian không phá vỡ là cần thiết vì Crayon tự động cắt đầu ra thành hình chữ nhật, do đó, nếu không có NBSP, nó sẽ chỉ in đầu vào ban đầu.


Crayon sẽ cho phép bạn làm ngược lại: xuất chuỗi, sau đó di chuyển bốn khoảng trắng sang trái và xuất a nbsp? Điều đó có khả năng chi phí ít hơn trong thao tác ngăn xếp, mặc dù tôi không biết liệu Crayon có di chuyển chính xác khung vải vào đúng vị trí hay không.

@ ais523 Hmm, đó là một ý tưởng thực sự tốt ... thật không may, điều đó đòi hỏi phải chuyển sang x = -4, đây không phải là một nhiệm vụ dễ dàng vào lúc này. Tôi thực sự nên thúc đẩy những thay đổi này mà tôi đã thực hiện trong một tháng ...: P
Sản phẩm điện tử

7

Võng mạc , 8 byte

%`^

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

Có bốn khoảng trống trên dòng thứ hai. Các giải pháp thay thế sử dụng một m`^hoặc %1`hoặc 1%`trên dòng đầu tiên. Tất cả những thứ này khớp với vị trí ở đầu mỗi dòng và thay thế nó bằng bốn khoảng trắng.


Tôi nghi ngờ một câu trả lời Retina sẽ là đầu tiên.
Neil

Vâng, đó là nhanh chóng.
Papayaman1000

@Neil Tôi sẽ ngạc nhiên nếu điều này không bị đánh bại bởi V (hoặc thậm chí là Vim thô). :)
Martin Ender

1
@MartinEnder Ở đây ya go (4 byte bằng V): codegolf.stackexchange.com/a/115870/41805 :)
Kritixi Lithos

7

Cheddar, 31 byte

@.lines.map(("    ":+)).asLines

Thực sự đơn giản, nhưng tôi đã đăng vì nó cho thấy các nhà khai thác chức năng mới.

(" ":+)cũng giống như A -> " " + A. (tức là +op là một hàm có " "ràng buộc với LHS).

Tôi không nghĩ thậm chí cần giải thích


Oh bạn đã thay đổi cách trình phân tích cú pháp hoạt động? Từ những gì tôi nhớ :sẽ gây ra vấn đề với?:
Conor O'Brien

@ ConorO'Brien Tôi đã quên cách tôi sửa nó nhưng tôi tin rằng vì :không có kết quả phù hợp ?, trình phân tích cú pháp sẽ chọn coi nó như một chức năng op. Điều này vẫn đòi hỏi op chức năng phải được bọc trong parens nhưng vâng
Downgoat

+1 cho mặt cười:+)
LarsW

@nghĩa là gì?
Leaky Nun

6

Python ,  44  39 byte

Bỏ qua & nbsp; 44 & nbsp; không còn 44 :)

-5 byte nhờ vào ovs (tránh dequeue với khoản trả trước)

lambda s:' '*4+s.replace('\n','\n    ')

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


lambda s:' '*4+s.replace('\n','\n ')39 byte
OVS

@ovs - Tôi không thấy điều đó ... ý bạn là lambda s:' '*4+s.replace('\n','\n ')[1:]40 (không hoạt động) hay cái gì khác?
Jonathan Allan

1
Chỉ cần lambda s:' '*4+s.replace('\n','\n<4 spaces>') TIO
OVS

@ovs À, tất nhiên rồi (bình luận bốn kết xuất không gian đánh dấu đã ném tôi và tôi cũng không nhận thấy điều đó trong câu trả lời của mình) cảm ơn vì đã tiết kiệm!
Jonathan Allan

6

JavaScript, 26 byte

Cảm ơn @Conor O'Brien vì đã chơi golf 8 byte

x=>x.replace(/^/gm,"    ")

Thay thế bằng một regex bằng / g thay thế tất cả các trường hợp. m làm cho regex xử lý riêng từng dòng cho đầu chuỗi ^.

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


Nó dường như lộn xộn không khoảng trắng trong đầu vào asdflặp đi lặp lại nhiều lần.
Papayaman1000

Bạn nên lưu ý những gì tôi đã đặt làm đầu vào trong TIO
fnɛtɪk

Bạn có thể lưu một vài byte bằng cách thực hiện x=>x.replace(/^|\n/g,"$&    ")để có được dòng đầu tiên tất cả các dòng sau trong một lần
ETHproductions


1
Hoặc ^ tôi cũng làm việc như vậy ;-)
ETHproductions

4

Python 2, 87 45 byte

print' '*4+'\n    '.join(input().split('\n'))

Đầu vào được lấy là 'Line1\nLine2\nLine3...'(Báo giá cần thiết)

Cảm ơn @WheatWizard đã cho tôi một ý tưởng giúp tôi chơi golf 42 byte.


Tôi lớn lên trên con trăn. Đó là điều khiến tôi nghĩ rằng điều này sẽ khó khăn. Thậm chí phớt lờ RegEx, tôi đã quá sai, quay ra.
Papayaman1000

@ Papayaman1000 Đó là một thử thách khá nhỏ, cả có và không có RegEx, mặc dù tôi thấy nó rất thú vị.
HyperNeutrino

2
Tôi sẽ thừa nhận, vì tôi không biết Ctrl + K, lý do thực sự cho thử thách này được đề xuất là ... ít hơn là chỉ vì khó hiểu đơn thuần.
Papayaman1000

@ Papayaman1000 Haha, vâng, thật khó chịu khi phải nhấn phím cách 4 lần trước mỗi dòng. Đặc biệt là vì tôi thường sử dụng Python và vì vậy tôi có nhiều dòng mọi lúc (không quá tệ khi tôi sử dụng Java). Cuối cùng, tôi đã lười biếng và sử dụng trình soạn thảo văn bản của mình để thay thế ^bằng ``.
HyperNeutrino

1
@WheatWizard Cảm ơn lời đề nghị, tôi đã đánh gôn xuống một chút. Bây giờ có tốt hơn một chút không?
HyperNeutrino

4

Thạch , 8 byte

Ỵṭ€⁶ẋ4¤Y

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

Làm sao?

Ỵṭ€⁶ẋ4¤Y - Main link: string
Ỵ        - split on newlines
      ¤  - nilad followed by ink(s) as a nilad:
   ⁶     -     a space character
    ẋ4   -     repeated four times
 ṭ€      - tack for €ach
       Y - join with newlines

Một số biến thể 8 byte khác là:
Ỵṭ€⁶Yµ4¡(4 lần lặp lại phân tách trên dòng mới, giải quyết một khoảng trắng);
⁶ḤḤ;ЀỴY(nhân đôi hai lần giống như nhân với 4, Ѐánh xạ qua đối số đúng, vì vậy chúng ta có thể nối thay vì giải quyết);
và sắp xếp lại chúng.


4

Emacs, 5 móc khóa, 5 byte

C-x h M-4 C-x tab

Trong ít nhất một mã hóa thường được sử dụng cho mục nhập bàn phím, mỗi bàn phím này là một byte : 18 68 b4 18 09. Các mục Emacs có xu hướng rất nặng, vì mỗi ký tự ASCII có thể in được, tự nó ngoại trừ ký tự tiếp theo của lệnh đa ký tự (có nghĩa là chỉ có thể sử dụng các phím bấm để đưa ra các lệnh thực tế).

Tôi không chắc làm thế nào điều này so sánh với Vim (trái ngược với V). Nhưng Vim được sử dụng khá phổ biến trên PPCG, và vì vậy tôi nghĩ rằng phía bên kia của cuộc chiến biên tập cũng xứng đáng được chú ý.

Điều này giả định rằng I / O được thực hiện thông qua bộ đệm (tương đương với các quy ước I / O thông thường cho vim), hoặc được lấy từ một tệp và xuất ra màn hình (đi kèm với điều tương tự). Thay vào đó, nếu bạn thực hiện I / O thông qua khu vực, điều này là tự nhiên đối với một số dạng chương trình, bạn có thể xóa hai ký tự đầu, với số điểm là 3 byte; tuy nhiên, tôi không nghĩ rằng tuân thủ các quy tắc PPCG.

Giải trình

C-x h M-4 C-x tab
C-x h               Specify the entire buffer as the region
      M-4           Give the argument 4 to the next command that runs
          C-x tab   Increase the indentation level of each line by a constant

Nội dung cuối cùng được sử dụng ở đây, tất nhiên, vô cùng hữu ích cho thử thách này; phần còn lại chỉ là cấu trúc.


3

PowerShell, 29 28 byte

"$args"-split"
"|%{" "*4+$_}

-1 Cảm ơn fergusq, sử dụng một dòng mới thực tế thay vì `n

lấy "$args"đầu vào dưới dạng một chuỗi (truyền bằng cách sử dụng "s) và đặt -splitnó trên một dòng mới, sau đó lặp ( %{}) qua nó, nối thêm bốn khoảng trắng ( " "*4) và dòng ( $_) sau đó xuất ra nó một cách ngầm định.


Bạn có thể sử dụng một ký tự dòng mới thay vì `n không?
fergusq

@fergusq thực sự tôi có thể, cập nhật.
colsw

Có lẽ ký tự dòng mới là \ r \ n trên các cửa sổ vẫn còn hai byte - hoặc có các quy tắc làm rõ có bao nhiêu byte mà một ký tự dòng mới mất?
poizan42

@ poizan42 Tôi không chắc có bài đăng meta nào trên đó không, nhưng tôi có thể chạy bài này trong bảng điều khiển mặc định chỉ với dòng mới để không có lý do gì để coi nó không hợp lệ.
colsw

3

Bình, 10 byte

jm+*4\ d.z

Thử nó!

Nếu đầu vào dưới dạng danh sách các dòng sẽ được cho phép, tôi có thể thực hiện trong 7 byte:

jm+*4\ 

Hãy thử nó

giải pháp dài hơn:

12 byte:

+*4d:Eb+b*4d

12 byte:

+*4dj+b*4d.z

13 byte:

t:E"^|
"+b*4d

Giảm xuống còn 9:jbm*4\ .z
vỗ tay vào


Tôi quên mất d, rất tiếc. Câu trả lời 10 byte của bạn là những gì tôi sẽ làm, dù sao đi nữa
vỗ tay vào

2

Röda , 21 byte

{(_/"
")|[`    $_
`]}

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

Nó là một chức năng ẩn danh. Đầu vào được kéo từ luồng.

Giải trình:

{
    (_/"\n") |        /* Splits the input at newlines */
    ["    ".._.."\n"] /* For each line, prints four spaces before the line */
}

Có phải identity()chỉ cần kéo tất cả các giá trị từ STDIN?
Kritixi Lithos

@KritixiLithos Có. identitykéo các giá trị từ luồng đầu vào và đẩy chúng vào luồng đầu ra của nó. Nó giống hệt với push(x) for x.
fergusq

2

Perl 5 , 11 + 1 = 12 byte

11 byte mã + -pcờ.

s/^/    /mg

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

Lần đầu tiên, các giải thích sẽ ngắn gọn: regex thay thế mỗi đầu dòng ( ^kết hợp với /msửa đổi) bằng bốn khoảng trắng - kết thúc.


Điều này đọc đầu vào một dòng tại một thời điểm, thay vì toàn bộ một chuỗi.

@ ais523 Khoảng một nửa số câu trả lời, bao gồm cả hai câu trả lời hàng đầu, đọc đầu vào theo cùng một cách chính xác.
Maxim Mikhaylov

@ ais523 Tôi muốn nói rằng nó xử lý một dòng đầu vào tại một thời điểm, nhưng nó có thể đọc nó dưới dạng toàn bộ chuỗi (ví dụ: nếu bạn cung cấp nó với <<< "..."). Bạn không đồng ý à?
Dada

@ ais523 sau khi suy nghĩ thêm một chút về nó, tôi nghĩ bạn đã đúng. (Tôi đã cập nhật mã của mình cho phù hợp)
Dada

2

Perl 6 , 11 byte

*.indent(4)

Thử nó

Mở rộng:

*\       # declare a WhateverCode lambda/closure (this is the parameter)
.indent( # call the `indent` method on the argument
  4      # with the number 4
)

2

sed , 16 10 9 byte

s/^/    /

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

Chỉnh sửa

Giảm kích thước giải pháp từ 16 xuống 10 byte nhờ Kritixi Lithos .

-1 byte nhờ seshoumara .


Bạn có thể nhận được tới 15 byte bằng cách sử dụng -rcờ (1 byte) để bạn có thể xóa dấu gạch chéo ngược trước dấu ngoặc đơn.
Kritixi Lithos

Bạn có thể nhận được đến 13 bằng cách sử dụng s/.*/ &/(xóa dấu ngoặc đơn và thay thế \1bằng &)
Kritixi Lithos

@KritixiLithos Cảm ơn! Nó hoạt động ngay cả khi không có *.
Maxim Mikhaylov

Hoặc đơn giản s:^: :, cho 9 byte.
seshoumara

@seshoumara Tôi chưa bao giờ thấy dấu hai chấm được sử dụng theo cách này trong tập lệnh sed ... Bạn có biết phần nào trong hướng dẫn mô tả cú pháp này không?
Maxim Mikhaylov

2

Java 7, 58 byte

String c(String s){return"    "+s.replace("\n","\n    ");}

Giải trình:

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

  • Nối với bốn không gian hàng đầu
  • Thay thế mỗi dòng mới cho một dòng mới + bốn khoảng trắng

Tôi mãi mãi buồn khi các cơ chế regex của Java yêu cầu hầu hết các thư viện khác.
Chọc

Tôi nghĩ bạn cầnreplaceAll
Khaled.K

@ Khaled.K Tại sao? Cả hai .replace.replaceAllsẽ thay thế tất cả các lần xuất hiện của Chuỗi tìm kiếm bằng sự thay thế. .replaceđược sử dụng cho các chuỗi ký tự và .replaceAllcho các biểu thức chính quy. Vì \nkhông phải là regex, nên .replacecó thể được sử dụng mà không gặp vấn đề gì để thay thế tất cả các dòng mới bằng một dòng mới + bốn khoảng trắng, bạn cũng có thể kiểm tra trong liên kết "Dùng thử dòng" tôi đã cung cấp.
Kevin Cruijssen

2

Brain-Flak , 109 103 byte

-6 cảm ơn Wheat Wizard

Bao gồm +1 cho -c

((()()()()()){}){(({}<>)[()()((()()()()){})]<(((((({}){}){}))))>){(<{}{}{}{}{}>)}{}<>}<>{({}<>)<>}<>{}

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

((()()()()()){})        # Add a newline to the beginning
                        # This is needed to get spaces infront of the first line)
{                       # For every character (call it C)
  (({}<>)               #   Move C to the other stack
  [()()((()()()()){})]  #   Push 8 and subtract 10 (\n) from C
  <(((((({}){}){}))))>) #   Push 4 spaces using the 8 from earlier
  )                     #   Push C - 10
  {(<                   #   If C - 10 != 0...
    {}{}{}{}{}          #     Pop the 4 spaces that we added
  >)}{}                 #   End if
  <>                    #   Switch stacks to get the next character
}                       # End while
<>{({}<>)<>}<>          # Reverse the stack (back to the original order)
{}                      # Pop the newline that we added



@WheatWizard Đẹp. Tôi cần bắt đầu tìm kiếm những thứ dư thừa như thế. Nó có thể xảy ra với tôi nhiều hơn đẩy pop không. Đó chỉ là tự động bây giờ. Cảm ơn
Riley




1

MATL , 12 byte

10&Yb"4Z"@gh

Đầu vào là một chuỗi với dòng mới. Để nhập cái này, bạn cần nối ký tự 10 giữa các ký tự bình thường để thể hiện dòng mới (dấu ngoặc vuông là concatenattion):

['Code' 10 'More code']

Hãy thử nó tại MATL trực tuyến!

Giải trình

10&Yb   % Implicit input. Split at char 10 (newline). Gives cell array of strings
"       % For each
  4Z"   %   Push string of 4 spaces
  @g    %   Push the contents of current cell array, i.e. a string with one of the
        %   original lines
  h     %   Concatenate the two strings horizontally
        % Implicit end. Implicit display

1

PHP, 16

echo"    $argn";

chạy với php -R <code>. -Rchạy mã đã cho cho mỗi dòng đầu vào và $argnđược cung cấp dòng đầu vào hiện tại. Vì vậy, điều này chỉ đơn giản là in mỗi dòng với bốn không gian phía trước nó.


1

V , 3 byte (Không cạnh tranh)

4>G

Đây là câu trả lời sử dụng một tính năng mà tôi đã lên kế hoạch thêm một thời gian, nhưng chỉ cần thêm vào ngày hôm nay. Điều đó làm cho câu trả lời này không cạnh tranh và không hợp lệ để giành chiến thắng. Nhưng thật tuyệt khi thể hiện một tính năng hữu ích / cạnh tranh như vậy!

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

Giải trình:

4>   " Add an indent of 4 to...
  G  "   Every line from the current line (0 by default) to the end of the buffer

Khéo léo! Ít nhất hãy tự hào về thực tế rằng ngôn ngữ của bạn đã chiếm vị trí hàng đầu ngay cả trước đó [ngay cả khi đó là ngôn ngữ chơi golf bẩn thỉu ... nah, jk]!
Papayaman1000

1

Vim, 6 tổ hợp phím

<Ctrl-V>G4I <Esc>

Giả sử rằng con trỏ ở đầu tệp, như thể bạn đã mở tệp từ dòng lệnh thông qua vim filename.

<Ctrl-V>            " Enter visual block move (enables rectangular selection)
        G           " Move to bottom line (selecting the entire first column)
         4          " Repeat the following action 4 times
          I         " Insert at start of (each selected) line
                    " [input a space]
            <Esc>   " Exit insert mode

Với một vim được cấu hình để sử dụng 4 khoảng trắng để thụt lề, đó sẽ là 2 lần nhấn phím : >G.


Tôi khá chắc chắn rằng bạn có thể loại bỏ ZZvào cuối. Thông thường đệ trình vim là tốt chỉ xuất ra bộ đệm chứ không phải là một tập tin.
DJMcMayhem

Được rồi cảm ơn, tôi gỡ ra ZZrồi.
daniero

1

Japt , 7 6 byte

Đã lưu 1 byte nhờ @ETHproductions

miS²²R

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

Giải trình:

miS²²R
m       // At each char in the input:
 iS²²   //   Prepend " " repeated 4 times
     R  // Rejoin with newlines  

Công việc tốt. S²²sẽ làm việc tốt thay thế Sp4, không phải là nó giúp bạn tiết kiệm bất cứ điều gì trong trường hợp này. Nói về điều này, tôi nghĩ bạn chỉ có thể làm miS²²Rđể xóa Rcờ (về cơ bản miS²², nhưng phân chia trước các dòng mới và tham gia với các dòng mới sau đó)
ETHproductions

1

UberGenes , 62 byte

Tôi đã phải tham gia thử thách này với UberGenes, vì một chương trình rất giống nhau (chỉ chèn một khoảng trắng) là một trong những chương trình đầu tiên tôi từng viết bằng ngôn ngữ và có vẻ như nó sẽ dễ dàng sửa đổi cho mục đích này.

=aA=p9=z4=cI=AC+a1-z1:pz=Ao:CA:Ii  =b5+b5-bA+a1=d3*d7:db=i0   

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

=aA                                                         Set a to 61
                                                            (Begin main loop)
   =p9                                                      Set p to 9
      =z4                                                   z counts spaces
         =cI                                                Set c to 61
                                                            (Jumping to p jumps here)
            =AC                                             Put the space at position 61
                                                              at position a.
               +a1-z1                                       Move a right and decrement z
                     :pz                                    Jump to p if z is nonzero
                                                            (Jumping to d jumps here)
                        =Ao                                 Read a character to position a.
                           :CA                              Jump to position 32+3 if input
                                                              was nonzero.
                              :Ii                           Otherwise, jump to position 61,
                                                              causing the entire string
                                                              that begins there to be
                                                              printed before halting.
                                                            (This is position 32+3=35)
                                   =b5+b5                   Set b to 10 (newline).
                                         -bA                Subtract the input character to
                                                              compare it with newline.
                                            +a1             Move a right.
                                               =d3*d7       Set d to 21
                                                     :db    Jump to d if not newline.
                                                        =i0 Jump back to begin main loop.
(The 3 spaces at the end position a space character at position 61 so that, after =cI,
C refers to the space character--it will also be the first space printed.)

1

CJam , 11 byte

Cảm ơn @ Challenger5 đã chỉnh sửa

qN/{S4*\N}%

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

Giải trình

q              e#  Read whole input as a string with newlines
 N/            e#  Split at newlines, keeping empty pieces. Gives an array of strings
   {     }%    e#  Map this function over the array of strings
               e#  The current string is automatically pushed
    S4*        e#  Push a string of four spaces
       \       e#  Swap. Moves the original string after the four spaces
        N      e#  Push a newline
               e#  Implicity display stack contents

1
Không hoạt động abc\n\ndef. Nó trả về ....abc\n....def%loại bỏ các phần tử trống. Bạn muốn sử dụng /để phân chia thay vì bởi vì nó giữ các phần tử trống.
Trái cây Esolanging

@ Challenger5 Cảm ơn, đã sửa!
Luis Mendo

1

J-uby , 17 16 byte

~:gsub&' '*4&/^/

Giải trình

~:gsub           # :gsub with reversed arguments: 
                 # (f)[regex,sub,str] == str.gsub(regex, sub)
      &' '*4     # replace with four spaces
            &/^/ # match the start of each line

Điều này trực tiếp dịch thành (trong Ruby):

->s{s.gsub(/^/,' '*4)}


1

C, 66 65 byte

p(){printf("    ");}f(char*s){for(p();*s;)putchar(*s++)-10||p();}

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


Giải pháp gọn gàng, nhưng bạn có thể đi với s;char*l;f(){while(getline(&l,&s,stdin)+1)printf("____%s",l);}62 byte
Khaled.K

@ Khaled.K Cảm ơn, nhưng điều đó dường như không hoạt động mà không bao gồm <stdio.h>(vì stdin).
Steadybox
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.