สร้างเครื่องมือ codeblock


18

เมื่อใช้มาร์กอัปเช่นเดียวกับในเครือข่าย SE การเว้นวรรคสี่ช่องก่อนบรรทัดข้อความจะแสดงว่าเป็นส่วนหนึ่งของบล็อคโค้ดดังที่ฉันหวังว่าคุณจะรู้ ถ้าคุณทำไม่ได้นี่เป็นตัวอย่าง (โดยมี.การเว้นวรรค):

รหัส .... รหัส
เพิ่มเติม

ผลลัพธ์ใน

Code
More code

ปัญหาคือเมื่อคุณคัดลอกรหัสวางลงในคำตอบคุณจะต้องเยื้องแต่ละบรรทัดด้วยตนเอง นี่เป็นเรื่องยากโดยเฉพาะอย่างยิ่งเมื่อทำงานกับรหัสที่ไม่ได้รับการแก้ไขเนื่องจากอาจมีการเยื้องแล้วและอาจทำให้เกิดความสับสน คุณสามารถเลือกรหัสของคุณและกดCtrl + Kมันจะเปิดออก เวลาแห่งชีวิตของฉันสูญเปล่าโดยไม่มีเหตุผล ...

ดังนั้นเป้าหมายของคุณคือให้อินพุตคืนค่าด้วยช่องว่างสี่ช่องก่อนแต่ละบรรทัด ด้วยจิตวิญญาณของการประหยัดเวลาในการคัดลอกวางคุณจะต้องดำเนินการอินพุตทั้งหมดเป็นสตริงเดียว (ตราบใดที่ภาษาของคุณสามารถแยกวิเคราะห์ได้) หากภาษาของคุณไม่สามารถประมวลผลอักขระ (เช่นการขึ้นบรรทัดใหม่) ในสตริงคุณอาจคิดว่ามันถูกใช้แทน / หลบหนีด้วยวิธีอื่นที่สนับสนุนโดยภาษานั้น แต่การส่งออกต้องส่งออกแต่ละบรรทัดบนเส้นของตัวเอง (เพื่อไม่ให้ผ่านสิ่งที่ต้องการ....foo\n....bar)

ไม่อนุญาตช่องโหว่มาตรฐาน เช่นนี้คือคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ โชคดี!


3
"คุณต้องเยื้องแต่ละบรรทัดด้วยตนเอง" (หรือเลือกข้อความและคลิกปุ่ม :))
Jonathan Allan

11
@JanathanAllan "ปุ่ม"? แน่นอนคุณหมายถึง "แป้นพิมพ์ลัด" (Ctrl + K)
Martin Ender

31
@JanathanAllan ... ฉัน ... ฉันเสียใจมาก เวลามาก ที่สูญเสียไป
Papayaman1000

6
ในขณะที่ฉันค่อนข้างมั่นใจว่าคำตอบ V ของ Kritixi จะไม่แพ้ฉันมักจะแนะนำให้รออีกสักครู่ก่อนที่จะตอบรับคำตอบเพราะการยอมรับในตอนแรกทำให้เกิดข้อเสียเปรียบกับคนที่สามารถตอบด้วยคำตอบที่สั้นกว่า แต่ไม่ได้อยู่ เว็บไซต์ในเวลา (เขตเวลาหรือเพียงแค่ไม่เคยอยู่บน PPCG 24/7)
HyperNeutrino

2
+1 สำหรับการแจ้งเตือนผู้คนเกี่ยวกับCtrl + K
Koishore Roy

คำตอบ:


17

V , 4 ไบต์

Î4É 

ลองออนไลน์!

(สังเกตพื้นที่ต่อท้าย)

V ถูกเข้ารหัสใน Latin1 ซึ่งมีการเข้ารหัสดังนี้:

00000000: ce34 c920                                .4. 

คำอธิบาย

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

นี่คือวิธีแก้ปัญหาที่มีขนาด 4 ไบต์ใน UTF-8 ด้วย!

VG4>

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

2
หวังว่าใครบางคนรับสายโทรศัพท์นั้นเพราะมีคนเรียกมันว่าว้าว
Papayaman1000

ทางเลือกอื่น:4ñ>G
DJMcMayhem

@DJMcMayhem แต่ใช้แท็บเพื่อเยื้องแทนช่องว่าง
Kritixi Lithos

ในกลุ่มใช่ ใน V ไม่มีช่องว่าง 4 ช่อง
DJMcMayhem

@DJMcMayhem ขอบคุณที่เป็นแรงบันดาลใจให้โซลูชันทางเลือกอื่นที่มีเพียง 4 ไบต์ใน UTF-8!
Kritixi Lithos

9

Crayonขนาด 7 ไบต์

`¤q;3xq

ลองออนไลน์!

คำอธิบาย

Crayon เป็นภาษาแบบสแต็กที่ออกแบบมาสำหรับการสร้าง ASCII-art มันยังอยู่ในช่วงเริ่มต้นของการพัฒนา แต่มันรู้ดีพอที่จะเสร็จสิ้นความท้าทายนี้ด้วยจำนวนไบต์ที่ค่อนข้างต่ำ:

         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

การวาดพื้นที่ไม่แตกเป็นสิ่งที่จำเป็นเพราะ Crayon ตัดขอบเอาท์พุทเป็นสี่เหลี่ยมโดยอัตโนมัติดังนั้นหากไม่มี NBSP มันก็แค่พิมพ์อินพุตต้นฉบับ


Crayon จะให้คุณทำตรงข้ามไหม: เอาท์พุทสตริงจากนั้นเลื่อนช่องว่างสี่ช่องไปทางซ้ายและเอาท์พุท a มีแนวโน้มว่าจะมีค่าใช้จ่ายน้อยลงในการจัดการกองซ้อนแม้ว่าฉันจะไม่รู้ว่าเครยอนจะย้ายผืนผ้าใบอย่างถูกต้องหรือไม่

@ ais523 อืมมันเป็นความคิดที่ดีจริง ๆ ... น่าเสียดายที่ต้องมีการย้ายไปที่ x = -4 ซึ่งไม่ใช่เรื่องง่ายในขณะนี้ ฉันควรผลักดันการเปลี่ยนแปลงเหล่านี้ฉันได้ทำงานมาเป็นเวลาหนึ่งเดือน ... : P
ETHproductions

7

เรติน่า 8 ไบต์

%`^

ลองออนไลน์!

มีช่องว่างสี่บรรทัดในบรรทัดที่สอง โซลูชันทางเลือกใช้อย่างใดอย่างหนึ่งm`^หรือ%1`หรือ1%`ในบรรทัดแรก ทั้งหมดนี้ตรงกับตำแหน่งที่จุดเริ่มต้นของแต่ละบรรทัดและแทนที่ด้วยช่องว่างสี่ช่อง


ฉันสงสัยว่าคำตอบที่จอประสาทตาจะเป็นครั้งแรก
Neil

นั่นเป็นไปอย่างรวดเร็ว
Papayaman1000

@ Neil ฉันจะแปลกใจถ้านี่ไม่ถูก V (หรือดิบแบบ Vim) :)
Martin Ender

1
@MartinEnder นี่ยาไป (4 bytes in V): codegolf.stackexchange.com/a/115870/41805 :)
Kritixi Lithos

7

Cheddar, 31 ไบต์

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

ง่ายๆ แต่ฉันโพสต์เพราะมันแสดงให้เห็นถึงโอเปอเรเตอร์การทำงานใหม่

(" ":+)A -> " " + Aเป็นเช่นเดียวกับ (เช่น+op เป็นฟังก์ชันที่" "ผูกกับ LHS)

ฉันไม่คิดว่าจะต้องมีคำอธิบาย


คุณเปลี่ยนวิธีการทำงานของ parser ไหม? จากสิ่งที่ฉันจำได้ว่า:จะทำให้เกิดปัญหากับ?:
Conor O'Brien

@ ConorO'Brien ฉันลืมวิธีที่ฉันแก้ไข แต่ฉันเชื่อว่าเนื่องจาก:ไม่มีการจับคู่?parser จะเลือกที่จะปฏิบัติเป็น op สิ่งนี้ยังคงต้องใช้การทำงานเพื่อห่อด้วย parens แต่ใช่
Downgoat

+1 สำหรับยิ้ม:+)
LarsW

อะไร@หมายถึง?
Leun Nun

6

งูหลาม ,  44  39 ไบต์

ข้ามไป & nbsp; 44 & nbsp; ไม่ใช่ 44 อีกต่อไป :)

-5 ไบต์ขอบคุณ ovs (หลีกเลี่ยงการถอนด้วยการเติม)

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

ลองออนไลน์!


lambda s:' '*4+s.replace('\n','\n ')for 39 bytes
ovs

@ovs - ฉันไม่เห็นมัน ... คุณหมายถึงlambda s:' '*4+s.replace('\n','\n ')[1:]40 (ซึ่งไม่ทำงาน) หรืออย่างอื่น?
Jonathan Allan

1
เพียงแค่lambda s:' '*4+s.replace('\n','\n<4 spaces>') ติ้ว
OVS

@ovs Ah ใช่แน่นอน (ความคิดเห็นการทำเครื่องหมายสี่ช่องว่างทำให้ฉันและฉันไม่ได้สังเกตเห็นในคำตอบของฉันอย่างใดอย่างหนึ่ง) ขอบคุณสำหรับการประหยัด!
Jonathan Allan

6

JavaScript ขนาด 26 ไบต์

ขอบคุณ @Conor O'Brien สำหรับการเล่นกอล์ฟขนาด 8 ไบต์

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

แทนที่ด้วย regex ด้วย / g แทนที่อินสแตนซ์ทั้งหมด m ทำให้ regex จัดการแต่ละบรรทัดแยกกันสำหรับการเริ่มต้นของสตริง ^

ลองออนไลน์!


ดูเหมือนว่าจะไม่สับสนในช่องว่างในการป้อนข้อมูลasdfซ้ำแล้วซ้ำอีก
Papayaman1000

คุณควรสังเกตสิ่งที่ฉันใส่ไว้ในอินพุตของ TIO
fəˈnɛtɪk

คุณสามารถบันทึกไม่กี่ไบต์โดยทำx=>x.replace(/^|\n/g,"$&    ")เพื่อรับบรรทัดแรกและบรรทัดต่อไปนี้ทั้งหมดในครั้งเดียว
ETHproductions


1
หรือ ^ ใช้ได้เช่นกันฉันเดา ;-)
ETHproductions

4

Python 2, 87 45 ไบต์

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

อินพุตถูกใช้เป็น'Line1\nLine2\nLine3...'(จำเป็นต้องมีเครื่องหมายคำพูด)

ขอบคุณ @WheatWizard ที่ให้ความคิดกับฉันที่ช่วยฉันตีกอล์ฟขนาด 42 ไบต์


ฉันโตมาด้วยหลาม นั่นคือสิ่งที่ทำให้ฉันคิดว่ามันจะยาก ไม่สนใจแม้แต่ RegEx ผมจึงผิดจะเปิดออก
Papayaman1000

@ Papayaman1000 มันเป็นความท้าทายที่ค่อนข้างท้าทายทั้งที่มีและไม่มี RegEx แม้ว่าฉันจะพบว่ามันน่าสนใจมาก
HyperNeutrino

2
ฉันจะยอมรับเนื่องจากฉันไม่รู้เกี่ยวกับCtrl + Kเหตุผลที่แท้จริงสำหรับความท้าทายที่เสนอนี้คือ ... น้อยกว่าการทำให้งงงวยล้วนๆ
Papayaman1000

@ Papayaman1000 ฮ่าฮ่าใช่มันน่ารำคาญมากที่ต้องกด space 4 ครั้งต่อหน้าแต่ละบรรทัด โดยเฉพาะอย่างยิ่งตั้งแต่ฉันมักจะใช้ Python และดังนั้นฉันจึงมีหลายบรรทัดตลอดเวลา (มันไม่เลวร้ายเมื่อฉันใช้ Java) ในที่สุดฉันก็ขี้เกียจและใช้โปรแกรมแก้ไขข้อความเพื่อแทนที่^ด้วย ``
HyperNeutrino

1
@WeatWizard ขอบคุณสำหรับคำแนะนำฉัน golfed มันลงเล็กน้อย ตอนนี้มันดีขึ้นหรือไม่?
HyperNeutrino

4

เยลลี่ขนาด 8 ไบต์

Ỵṭ€⁶ẋ4¤Y

ลองออนไลน์!

อย่างไร?

Ỵṭ€⁶ẋ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

อีก 8 ไบต์ที่แตกต่างกันคือ:
Ỵṭ€⁶Yµ4¡(แบ่งออกเป็น 4 ครั้งของการขึ้นบรรทัดใหม่
⁶ḤḤ;ЀỴY(การเพิ่มเป็นสองเท่าเป็นเหมือนการคูณด้วย 4 Ѐแมปการโต้แย้งที่ถูกต้องดังนั้นเราจึงสามารถต่อกันได้แทนการตรึง)
และการจัดเรียงอื่น ๆ


4

Emacs, 5 keychords, 5 ไบต์

C-x h M-4 C-x tab

อย่างน้อยหนึ่งการเข้ารหัสที่ใช้กันทั่วไปสำหรับคีย์บอร์ดแต่ละ keychords 18 68 b4 18 09เหล่านี้เป็นไบต์เดี่ยว: รายการ Emacs มีแนวโน้มที่จะเป็น keychord-หนักมากเนื่องจากอักขระ ASCII ที่พิมพ์ได้แต่ละตัวจะใช้แทนตัวมันเองยกเว้นว่าเป็นอักขระตัวต่อมาของคำสั่งหลายอักขระ

ฉันไม่แน่ใจว่าสิ่งนี้เปรียบเทียบกับ Vim ได้อย่างไร (เทียบกับ V) แต่กลุ่มที่ใช้กันทั่วไปค่อนข้างเป็นธรรมใน PPCG และดังนั้นฉันคิดว่าอีกด้านหนึ่งของการแก้ไขสงครามสมควรได้รับเวลาในสปอตไลท์เช่นกัน

สิ่งนี้ถือว่า I / O ทำผ่านบัฟเฟอร์ (เทียบเท่าของ I / O แบบปกติสำหรับ vim) หรือนำมาจากไฟล์และเอาท์พุทบนหน้าจอ (ซึ่งมาในสิ่งเดียวกัน) หากคุณทำ I / O ผ่านภูมิภาคแทนซึ่งเป็นเรื่องปกติสำหรับบางรูปแบบของโปรแกรมคุณสามารถลบอักขระสองตัวที่นำหน้าออกด้วยคะแนน 3 ไบต์ อย่างไรก็ตามฉันไม่คิดว่าเป็นไปตามกฎ PPCG

คำอธิบาย

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

ตัวสุดท้ายที่ใช้ที่นี่แน่นอนว่ามีประโยชน์อย่างเหลือเชื่อสำหรับความท้าทายนี้ ส่วนที่เหลือเป็นเพียงโครงสร้าง


3

PowerShell, 29 28 ไบต์

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

-1 ต้องขอบคุณ fergusq โดยใช้ newline จริงแทน `n

รับ"$args"อินพุตเป็นสตริง (การส่งโดยใช้ "s) และ-splits บนบรรทัดใหม่จากนั้นจะวน%{}ซ้ำ( ) ผ่านมันต่อท้ายช่องว่างสี่ช่อง ( " "*4) และบรรทัด ( $_) จากนั้นส่งออกโดยปริยาย


คุณสามารถใช้อักขระบรรทัดใหม่แทน `n ได้หรือไม่
fergusq

@fergusq แน่นอนฉันสามารถอัปเดต
colsw

สันนิษฐานว่าอักขระขึ้นบรรทัดใหม่คือ \ r \ n บน windows ซึ่งยังคงมีสองไบต์ - หรือมีกฎที่ชี้แจงจำนวนไบต์ที่อักขระขึ้นบรรทัดใหม่ใช้?
poizan42

@ poizan42 ฉันไม่แน่ใจว่ามีเมตาโพสต์อยู่หรือไม่ แต่ฉันสามารถเรียกใช้ในคอนโซลเริ่มต้นด้วยการขึ้นบรรทัดใหม่ดังนั้นจึงไม่มีเหตุผลที่จะพิจารณาว่ามันไม่ถูกต้อง
colsw

3

Pyth, 10 ไบต์

jm+*4\ d.z

ลองมัน!

หากอนุญาตให้ป้อนข้อมูลเป็นรายการของบรรทัดฉันสามารถทำได้ใน 7 ไบต์:

jm+*4\ 

ลองดู

โซลูชั่นอีกต่อไป:

12 ไบต์:

+*4d:Eb+b*4d

12 ไบต์:

+*4dj+b*4d.z

13 ไบต์:

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

รับลงไปที่ 9:jbm*4\ .z
ตบมือ


ฉันลืมไปdแล้ว คำตอบ 10 ไบต์ของคุณคือสิ่งที่ฉันจะทำต่อไป
ตบมือ

2

Röda , 21 ไบต์

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

ลองออนไลน์!

มันเป็นฟังก์ชั่นที่ไม่ระบุชื่อ อินพุตถูกดึงจากสตรีม

คำอธิบาย:

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

ไม่identity()เพียงแค่ดึงค่าทั้งหมดจาก STDIN?
Kritixi Lithos

@KritixiLithos ใช่ identityดึงค่าจากอินพุตสตรีมและพุชไปยังสตรีมเอาต์พุต push(x) for xมันเป็นเหมือน
fergusq

2

Perl 5 , 11 + 1 = 12 ไบต์

11 ไบต์ของรหัสเมือง + -pธง

s/^/    /mg

ลองออนไลน์!

สำหรับหนึ่งครั้งคำอธิบายจะสั้น: regex จะแทนที่แต่ละจุดเริ่มต้นของบรรทัด ( ^รวมกับโมดิ/mฟายเออร์) ด้วยการเว้นวรรคสี่จุด


สิ่งนี้จะอ่านอินพุตทีละบรรทัดแทนที่จะเป็นสตริงโดยรวม

@ ais523 คำตอบครึ่งหนึ่งโดยประมาณรวมถึงสองอันดับแรกให้อ่านอินพุตด้วยวิธีเดียวกัน
Maxim Mikhaylov

@ ais523 ฉันว่ามันประมวลผลอินพุตหนึ่งบรรทัดในแต่ละครั้ง แต่มันสามารถอ่านได้ทั้งสตริง (ถ้าคุณให้อินสแตนซ์กับ <<< "... " เป็นต้น) คุณไม่เห็นด้วยหรือ
Dada

@ ais523 หลังจากคิดเพิ่มอีกเล็กน้อยฉันคิดว่าคุณพูดถูก (ฉันได้อัปเดตรหัสของฉันแล้ว)
Dada


2

sed , 16 10 9 ไบต์

s/^/    /

ลองออนไลน์!

การแก้ไข

วิธีการแก้ปัญหาการลดขนาด 16-10 ไบต์ขอบคุณที่Kritixi Lithos

-1 ไบต์ขอบคุณที่seshoumara


คุณสามารถรับได้ถึง 15 ไบต์โดยใช้-rแฟล็ก (1 ไบต์) เพื่อให้คุณสามารถลบแบ็กสแลชก่อนวงเล็บ
Kritixi Lithos

คุณจะได้รับถึง 13 โดยใช้s/.*/ &/(ถอดวงเล็บและแทนที่\1ด้วย&)
Kritixi Lithos

@KritixiLithos ขอบคุณ! *มันทำงานได้โดยไม่ต้อง
Maxim Mikhaylov

หรือเพียงแค่s:^: :9 ไบต์
seshoumara

@seshoumara ฉันไม่เคยเห็น colons ใช้วิธีนี้ในสคริปต์ sed ... คุณรู้หรือไม่ว่าส่วนใดของคู่มืออธิบายไวยากรณ์นี้หรือไม่?
Maxim Mikhaylov

2

Java 7, 58 ไบต์

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

คำอธิบาย:

ลองที่นี่

  • ต่อท้ายด้วยช่องว่างสี่ช่อง
  • แทนที่ทุกบรรทัดใหม่สำหรับบรรทัดใหม่ + สี่ช่องว่าง

ฉันเสียใจตลอดไปที่กลไกการ regex ของ Java ต้องการไลบรารีอื่น ๆ ส่วนใหญ่
โผล่

ฉันคิดว่าคุณต้องการreplaceAll
Khaled.K

@ Khaled.K ทำไมล่ะ ทั้งสองอย่าง.replaceและ.replaceAllจะแทนที่การค้นหาสตริงทั้งหมดด้วยการแทนที่ .replaceใช้สำหรับสตริงตัวอักษรและ.replaceAllสำหรับ regexes เนื่องจาก\nไม่ใช่ regex คุณ.replaceสามารถใช้โดยไม่มีปัญหาเพื่อแทนที่บรรทัดใหม่ทั้งหมดด้วย newline + สี่ช่องว่างซึ่งคุณสามารถตรวจสอบได้ในลิงก์ "ลองบรรทัด" ที่ฉันให้ไว้
Kevin Cruijssen

2

Brain-Flak , 109 103 ไบต์

-6 ต้องขอบคุณWheat Wizard

รวม +1 สำหรับ -c

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

ลองออนไลน์!

((()()()()()){})        # 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



@WeatWizard ที่ดี ฉันต้องเริ่มมองหาสิ่งที่ซ้ำซ้อนเช่นนั้น มันอาจเกิดขึ้นกับฉันมากกว่าการกดป๊อปอัพ สิ่งเหล่านี้เป็นเพียงอัตโนมัติในขณะนี้ ขอบคุณ
Riley




1

MATLขนาด 12 ไบต์

10&Yb"4Z"@gh

อินพุตเป็นสตริงที่มีการขึ้นบรรทัดใหม่ ในการป้อนสิ่งนี้คุณต้องต่ออักขระ 10 ระหว่างอักขระปกติเพื่อแสดงบรรทัดใหม่ (วงเล็บเหลี่ยมคือการต่อข้อมูล)

['Code' 10 'More code']

ลองที่MATL ออนไลน์!

คำอธิบาย

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";

php -R <code>ทำงานด้วย -Rเรียกใช้รหัสที่กำหนดสำหรับทุกบรรทัดอินพุตและ$argnป้อนเข้าบรรทัดปัจจุบัน ดังนั้นแค่พิมพ์แต่ละบรรทัดด้วยช่องว่างสี่ช่องที่อยู่ด้านหน้า


1

V , 3 ไบต์ (ไม่แข่งขัน)

4>G

คำตอบนี้ใช้คุณสมบัติที่ฉันวางแผนไว้ว่าจะเพิ่มสักระยะหนึ่ง แต่เพิ่งจะเพิ่มเข้าไปในวันนี้ ทำให้คำตอบนี้ไม่ใช่การแข่งขันและไม่ถูกต้องสำหรับการชนะ แต่มันก็ยังเจ๋งที่จะอวดคุณสมบัติที่มีประโยชน์ / การแข่งขัน!

ลองออนไลน์!

คำอธิบาย:

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

เรียบร้อย! อย่างน้อยก็มีความภาคภูมิใจในความจริงที่ว่าภาษาของคุณเป็นจุดสูงสุดก่อน [แม้ว่าจะเป็นภาษาที่เล่นกอล์ฟสกปรก ... nah, jk]!
Papayaman1000

1

เป็นกลุ่ม 6 การกดแป้น

<Ctrl-V>G4I <Esc>

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

ด้วยความที่เป็นกลุ่มกำหนดค่าให้ใช้ 4 ช่องว่างสำหรับการเยื้องมันจะเป็น 2 >Gการกดแป้นพิมพ์:


ฉันค่อนข้างมั่นใจว่าคุณสามารถลบได้ZZในตอนท้าย โดยปกติแล้วการส่งเสียงเรียกเข้าเป็นเรื่องปกติเพียงแค่ส่งออกไปยังบัฟเฟอร์มากกว่าไปยังไฟล์
DJMcMayhem

ขอบคุณฉันออกไปZZแล้ว
daniero

1

Japt , 7 6 ไบต์

บันทึกแล้ว 1 ไบต์ขอบคุณ @ETHproductions

miS²²R

ลองออนไลน์!

คำอธิบาย:

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

งานที่ดี. S²²จะทำงานได้ดีแทนSp4ไม่ใช่ว่ามันจะช่วยคุณอะไรก็ได้ในกรณีนี้ พูดถึงสิ่งที่ฉันคิดว่าคุณสามารถทำได้miS²²Rเพื่อลบRธง (โดยทั่วไปmiS²²แต่แยกที่บรรทัดใหม่ล่วงหน้าและเข้าร่วมกับสายใหม่หลังจากนั้น)
ETHproductions

1

UberGenesขนาด 62 ไบต์

ฉันต้องเข้าสู่ความท้าทายนี้กับ UberGenes เนื่องจากโปรแกรมที่คล้ายกันมาก (ที่แทรกเพียงหนึ่งช่องว่าง) เป็นหนึ่งในโปรแกรมแรกที่ฉันเคยเขียนในภาษาและดูเหมือนว่ามันจะง่ายต่อการปรับเปลี่ยนเพื่อจุดประสงค์นี้

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

มันทำงานอย่างไร:

=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 ไบต์

ขอบคุณ@ Challenger5สำหรับการแก้ไข

qN/{S4*\N}%

ลองออนไลน์!

คำอธิบาย

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
abc\n\ndefไม่ทำงานบน มันจะกลับมา....abc\n....defเพราะ%ละทิ้งองค์ประกอบที่ว่างเปล่า คุณต้องการที่จะใช้/เพื่อแยกแทนเพราะมันทำให้องค์ประกอบที่ว่างเปล่า
แยกผลไม้

@ Challenger5 ขอบคุณแก้ไขแล้ว!
Luis Mendo

1

J-uby , 17 16 ไบต์

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

คำอธิบาย

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

สิ่งนี้แปลโดยตรงเป็น (ใน Ruby):

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


1

C, 66 65 ไบต์

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

ลองออนไลน์!


วิธีแก้ปัญหาเรียบร้อย แต่คุณสามารถไปได้ด้วยs;char*l;f(){while(getline(&l,&s,stdin)+1)printf("____%s",l);}62 ไบต์
Khaled.K

@ Khaled.K ขอบคุณ แต่นั่นดูเหมือนจะไม่ทำงานหากไม่รวม<stdio.h>(เพราะstdin)
Steadybox
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.