วาดสายฟ้าสายฟ้า ASCII


35

บทนำ

ส่วนหนึ่งได้รับแรงบันดาลใจจากคำถาม StackOverflowลองวาดสายฟ้าสายฟ้า ASCII

เขียนโปรแกรมที่รับจำนวนเต็มบวกnผ่าน STDIN หรือบรรทัดคำสั่งแล้วส่งเอาต์พุตสายฟ้าแบบ ASCII ด้านล่าง

อินพุต

จำนวนเต็มบวกnแสดงจำนวนชั้นของฟ้าผ่าแบบซิกแซกที่จะวาด

ตัวอย่างผลลัพธ์

n = 1

__
\ \
 \ \
  \ \
   \/

n = 2

__
\ \
 \ \
__\ \
\  __\
 \ \
  \ \
   \/

n = 3

__
\ \
 \ \
__\ \
\  __\
 \ \
__\ \
\  __\
 \ \
  \ \
   \/

n = 4

__
\ \
 \ \
__\ \
\  __\
 \ \
__\ \
\  __\
 \ \
__\ \
\  __\
 \ \
  \ \
   \/

. . . ฯลฯ


หมายเหตุเพิ่มเติม

  • คุณสามารถเขียนฟังก์ชั่นที่ใช้nเป็นอาร์กิวเมนต์เท่านั้นและพิมพ์หรือส่งคืนสตริง
  • ช่องว่างต่อท้ายและบรรทัดใหม่ก็โอเค
  • ไม่มีช่องว่างนำหน้ายกเว้นที่เหมาะสมกับรูปแบบที่กำหนด
  • รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ

2
เราเคยเห็นความท้าทายเหล่านี้มากี่ครั้งแล้ว
ข้อบกพร่อง

@flawr Too many 😯
เบต้าสลายตัว

คำตอบ:


19

Java, 201 196 189 186 182 ไบต์

เห็นได้ชัดว่าไม่ใช่สิ่งที่ดีที่สุด แต่อยู่ใน Java

class I{public static void main(String[]a){System.out.print(("__\na a"+new String(new byte[new Byte(a[0])-1]).replace("\0","__a\\  __\\\n a")+"  a   \\/").replace("a","\\ \\\n"));}}

23
อ้าจาวาภาษาที่คุณเคยหลงไปแล้วก่อนที่จะเริ่มพิมพ์เนื้อหาของmainวิธีการของคุณ
David Richerby

2
บางครั้งฉันคิดว่าmainไม่ควรนับรวมจำนวนไบต์และบางภาษาที่มีคำหลักที่ละเอียดควรได้รับอนุญาตให้ใช้มาโคร ถ้าอย่างนั้นมันน่าสนใจ
Alec Teal

@AlecTeal ตกลงทั้งหมดคำถามบางอย่างระบุว่าพวกเขาต้องการตัวอย่างข้อมูลการทำงานเท่านั้น แต่ส่วนใหญ่ไม่ได้
David Mulder

6
คุณสามารถเขียนฟังก์ชั่นที่รับ n เป็นอาร์กิวเมนต์เท่านั้นและพิมพ์หรือส่งคืนสตริง ดังนั้นอืมมคุณอาจจะทำอย่างนั้น;)
Geobits

มันอาจจะล่าช้าไป 6 เดือน แต่codegolf.stackexchange.com/a/64713/42736หรือการใช้ฟังก์ชั่นทำให้มันสั้นลง
J Atkin

10

CJam, 41 ไบต์

":¡ö cQïO[nu÷&,"255b6b"
 _\/X"f='X/~ri(*\

ฉันอาจบีบออกอีกไม่กี่ไบต์ แต่นี่คือการบีบอัด ฉันเลือกฐานซึ่งจะทำให้ไม่มีรอยขีดข่วน

ลองมันออนไลน์

สายฟ้าถูกแบ่งออกเป็นtop + middle * (input-1) + bottomที่top, middle, bottom(บีบอัดโดยใช้การแปลงฐาน) เป็น

__
\. 

  \
.\.\
__\.\
\..__ 

    \
.\.\
..\.\
...\/

(ช่องว่างถูกทำเครื่องหมายด้วย.s)

40 ไบต์

ขอบคุณเครื่องมือเพิ่มประสิทธิภาพ

"¹Ñ³Û- + IDX ^ โฆษณา" 254b6b"
_ \ 0 / "f =) / ~ ri (* \


ขอบคุณสำหรับคำอธิบายด้วยtop + middle * (input-1) + bottomมันเตือนฉันว่า powershell สามารถเพิ่มจำนวนสตริงได้: P
Nacht - Reinstate Monica

8

JavaScript ( ES6 ) 76

การใช้สตริงแม่แบบบรรทัดใหม่ 3 รายการมีความสำคัญและนับ

ทดสอบการเรียกใช้ตัวอย่างข้อมูล (Firefox เท่านั้น)

f=n=>`__
1 1${`__1\\  __\\
 1`.repeat(n-1)}  1   \\/`.replace(/1/g,`\\ \\
`)

// TEST

go=_=>O.innerHTML=f(I.value)

go()
N: <input id=I value=3><button onclick='go()'>Test</button>
<pre id=O></pre>


7

PowerShell, 72 63 ไบต์

Windows ที่โง่และ \ r \ n ของคุณ ... นี่อาจเป็น67 59 ไบต์!

%{$a="\ \
";"__
$a"+" $a`__$a\  __\
"*($_-1)+" $a  $a   \/"}

สำหรับโค้ดกอล์ฟฉันคิดว่า \ r \ n ยังคงนับเป็น \ n เนื่องจากมันทำสิ่งเดียวกัน
MilkyWay90

6

PHP - 84 79 78 ไบต์

<?php
define('N',3); // <- didnt count these bytes as TS said I could take var N as input
?>
<?="__
\ \
 \ \ ".str_repeat("
__\ \
\  __\
 \ \ ",N-1)."
  \ \ 
   \/"

ดูแหล่งผลลัพธ์หรือตัดคำ<pre />เพื่อตรวจสอบผลลัพธ์ ต้องขึ้นบรรทัดใหม่ในรหัส
สามารถเคลื่อนย้ายไปที่ -1 ได้defineแต่ฉันคิดว่าเป็นการโกง

การปรับปรุงที่ 1: แทนที่\nด้วย newlines จริงที่
2: เนื่องจากฉันสามารถกำหนด var ได้ฉันจึงใช้ CONTANT จึง$ปลอดภัย + ช่องว่างที่ไม่จำเป็นใน str_repeat
ที่ 3: ลบ -1 โดยไม่ได้ตั้งใจ แต่บันทึกไบต์ด้วยการใช้<?=แทนเสียงสะท้อน


6

Pyth, 60 54 ไบต์ (ขอบคุณ @isaacg)

ความพยายามครั้งแรกของฉันที่ Pyth อาจจะแย่มาก

"__
\ \ "VtQ" \ \ 
__\ \ 
\  __\ ")" \ \ 
  \ \ 
   \/

ตรวจสอบได้ที่นี่


ยินดีต้อนรับสู่ Pyth! โดยวิธีการที่จะช่วยให้การขึ้นบรรทัดใหม่ Pyth อักษรในสายของตนซึ่งจะเป็น 1 \nตัวอักษรที่สั้นกว่า นอกจากนี้ยังเป็นครั้งแรกในโปรแกรมที่อาจจะเป็นเพียงแค่\\ \
isaacg

@isaacg ขอบคุณ
JNV


4

Brainfuck, 164 ไบต์

,<++++++++++++++++[>--->+>++++++>++>++++++>+++<<<<<<-]>->--->---->>->-<..<<<.>.>
.<.<.>>.<.>.<.<.<[>>>>..<<.>.<.<.>.>..>..<<.<.>>.<.>.<.<.<-]>>>..<.>.<.<.>>...<.
>>>.

ด้วยความคิดเห็น:

Initialise n and character set with i as counter
Memory = in♪\ _/
,<++++++++++++++++[>--->+>++++++>++>++++++>+++<<<<<<-]>->--->---->>->-

Draw top of lightning bolt
<..<<<.>.>.<.<.>>.<.>.<.<.<

Draw lightning bolt zigzags
[>>>>..<<.>.<.<.>.>..>..<<.<.>>.<.>.<.<.<-]

Draw lightning bolt tip
>>>..<.>.<.<.>>...<.>>>.

โอเคสมองนี้ตอบอย่างไรว่าเต้นด้วย Java และ C #?


ว้าวสนามกอล์ฟที่ดีโดยเฉพาะอย่างยิ่งใน BF!
MilkyWay90

4

> <> (ปลา) 409 ไบต์

ดำเนินการโดยfish.py bolt.fish --value nที่bolt.fishเป็นชื่อโปรแกรมและnเป็นจำนวนเต็มบวกของคุณ

\
\         "__"       a
\         "\ \"      a
\         " \ \"     a
\r1-:?!vr "__\ \"    a
\     !0  "\  __\"   a
\     !6  " \ \"  a04.
>r   9a.  "__\ \"    \
      /   "\  __\"  \ 
       /  " \ \"   \  
        / "  \ \" \   
         /"   \/"\    
                 aaaaa
|o|!~r           /    
         \        /   
        \          /  
       \            / 
      \              /

มันไม่สั้น แต่ก็ดูดี ความพยายามของฉันคือพยายามทำให้ดูเหมือนเป็นสายฟ้าฟาด นอกจากนี้ยังเกิดข้อผิดพลาดเมื่อเสร็จสิ้น


3

Perl, 69 + 1

69 อักขระบวก 1 สำหรับ-nสวิตช์บรรทัดคำสั่งเพื่อดึงข้อมูลจาก stdin

$s="\\ \\$/";print"__$/$s $s".("__$s\\  __\\$/ $s"x--$_)."  $s   \\/"

ตัวอย่างการใช้งาน:

perl -ne '$s="\\ \\$/";print"__$/$s $s".("__$s\\  __\\$/ $s"x--$_)."  $s   \\/"' <<<"2"
__
\ \
 \ \
__\ \
\  __\
 \ \
  \ \
   \/

1
การปรับปรุงบางอย่างที่เป็นไปได้: perl -pe'$_="__\ns s"."__s\\ __\\\n s"x--$_." s \\/";s!s!\\ \\\n!g'. นอกจากนี้ยัง\nสามารถแทนที่ด้วยตัวแบ่งบรรทัดตามตัวอักษรสำหรับการบันทึกอีก 3 ตัวอักษร
nutki

3

Javascript (ES6), 86

ไม่ใช่ว่าจะชนะ แต่ฉันชอบวิธีแก้ปัญหาแบบ 1 บรรทัดและฉันเกลียดการกรีด

f=n=>atob("X18KXCBc"+"CiBcIFwKX19cIFwKXCAgX19c".repeat(n-1)+"CiBcIFwKICBcIFwKICAgXC8")

เย็น! มันกำลังทำอะไรอยู่?
rpax

1
@rpax ฉันใช้การเข้ารหัส base64 เพื่อหลีกเลี่ยง \\ และ \ n ดูatob เอกสาร
Michael M.

3

C, 101 ไบต์

การนำไปใช้ของฉันไม่เป็นเช่นนั้นในค

f(n){puts("__\n\\ \\");for(;--n;puts(" \\ \\\n__\\ \\\n\\  __\\"));puts(" \\ \\\n  \\ \\\n   \\/");}

3

C #, 221 ไบต์

class C{static void Main(string[]n){int e=System.Int32.Parse(n[0]);var o=@"__{0}\ \{0} \ \{0}";while(e>1){o+=@"__\ \{0}\  __\{0} \ \{0}";e--;}System.Console.WriteLine(o + @"  \ \{0}   \/{0}",System.Environment.NewLine);}}

นี่ไม่ใช่คำตอบที่ดีที่สุดหรือเล็กที่สุด แต่ฉันคิดว่าฉันจะลองดู คำตอบของ Fsacerนั้นสั้นกว่ามากและฉันคิดว่าคุณควรลองดู ฉันเพิ่งตัดสินใจที่จะทำเช่นนี้เป็นวิธีทางเลือกจริงๆ


1
เฮ้ที่นี่ฉันทิ้งมันไว้ที่ 182B ง่าย ๆ รหัส:class C{static void Main(string[]n){var e=int.Parse(n[0]);var o=@"__{0}\ \{0} \ \{0}";while(e-->1){o+=@"__\ \{0}\ __\{0} \ \{0}";}System.Console.Write(o+@" \ \{0} \/{0}","\n");}}
fsacer

ดีและอยากรู้อยากเห็น แต่ทำไมคุณถึงเปลี่ยนประเภทของ e จาก int เป็น var? ยังคงมี 3 ตัวอักษร: P

ไม่มีเหตุผลอาจเป็นเพราะฉันชอบคำหลัก var :)
fsacer

3

C #, 166 ไบต์

class I{static void Main(string[]a){System.Console.Write(("__\na a"+"".PadLeft(int.Parse(a[0])-1).Replace(" ",@"__a\  __\
 a")+@"  a   \/").Replace("a",@"\ \
"));}}

EDIT 1:ปรับปรุงผลลัพธ์จาก 186B เป็น 173B
EDIT 2:บันทึก 1B โดยใช้PadLeftแทนPadRight
EDIT 3:บันทึก 8B โดยวางPadLeftพารามิเตอร์ตัวที่สองและใช้ตัวอักษรสตริง verbatim


ดีมาก ... คุณสามารถทำได้ด้วยการpublicเริ่มต้นและแทนที่จะใช้อาเรย์ถ่านคุณสามารถใช้String.PadRight(int, char)ซึ่งจะสั้นกว่าและจะช่วยให้คุณใช้แอพ ASCII ซึ่งไม่จำเป็นต้องหลบหนี
VisualMelon

การปรับแต่งบางอย่าง: * ปล่อยพารามิเตอร์ที่สองไปยัง PadLeft (); มันบอกเป็นนัย (-4) * เปลี่ยน 2 ของสายอักขระเป็นคำต่อคำ (OP บอกว่าขึ้นบรรทัดใหม่ได้ดีและเราต้องการเพียง \ n, ไม่เต็ม \ r \ n, ดังนั้น -4) ผลลัพธ์สุดท้าย: class I {static void Main ( string [] a) {System.Console.Write (("__ \ na a" + "". PadLeft (int.Parse (a [0]) - 1). แทนที่ ("", @ "__ a \ __ \ a ") +" a \\ / ") แทนที่ (" a ", @" \ \ "))}} [ฉันไม่สามารถแสดงบรรทัดใหม่ในความคิดเห็น แต่คุณสามารถแก้ไขคำตอบเดิม!]
sellotape

เคล็ดลับที่ดีมันเป็นเรื่องยากที่จะจัดรูปแบบคำต่อคำเพื่อ :)
fsacer

3

Awk, 101 + 8 ไบต์

101 ตัวอักษรบวก 8 สำหรับ-v n=$1การรับจำนวนเต็มจากเปลือก

'{l="\\ \\";print"__\n"l"\n "l;for(i=1;i<n;++i)print"__"l"\n\\  __\\\n "l}END{print"  "l"\n   \\/"}'

ใหม่สำหรับไซต์ SE นี้ไม่ชัดเจนว่าควรนับพารามิเตอร์เหล่านั้นหรือไม่

Ungolfed

awk 
-v n=$1
'{
  l="\\ \\";
  print "__\n"l"\n "l;
  for(i=1; i<n; ++i)
    print "__"l"\n\\  __\\\n "l
}
END
{
  print "  "l"\n   \\/"
}'

ตัวอย่างการใช้งาน:

lightning() { echo | awk -v n=$1 '{l="\\ \\";print"__\n"l"\n "l;for(i=1;i<n;++i)print"__"l"\n\\  __\\\n "l}END{print"  "l"\n   \\/"}'; }
lightning 3
__
\ \
 \ \
__\ \
\  __\
 \ \
__\ \
\  __\
 \ \
  \ \
   \/


ขอกำหนดว่า“ การคำนวณที่ถูกต้อง” เพราะแน่นอนไม่ทำด้านขวา หากการกำหนดตัวแปรถูกวางหลังจากรหัสก็ไม่จำเป็นต้องใช้ชิ้น-v ส่วน ไม่พูดถึงว่าแนวคิดตัวแปรทั้งหมดนั้นไม่จำเป็นเหมือนENDบล็อกแยก 89 ตัวอักษร: {l="\\ \\";print"__\n"l"\n "l;for(;--$1;)print"__"l"\n\\ __\\\n "l;print" "l"\n \\/"} pastebin.com/NCznF9kH
จัดการ

3

Python 97 82 78char:

print(("__\nl l"+"__l\  __\\\n l"*~-input()+"  l   \/").replace('l','\ \\\n'))

นี่คือรหัสกอล์ฟครั้งแรกของฉัน

@ (^ _ ^) @

ทดสอบที่นี่


นี่คือหลาม 3 หรือไม่ อินพุตนั้นจะทำงานกับจำนวนเต็มหรือไม่
Renae Lider

2

C, 119 108 ไบต์

p(t){for(;t;t/=4)putchar(" \\_\n"[t%4]);}main(c){for(p(13434);p(836),--c;p(57154842));p(265488);puts("/");}

ความพยายามครั้งแรก 150 ไบต์

v(a){putchar(a);}s(b){b--?v(32),s(b):v(92);}l(b){s(b);s(1);v(10);}main(c){for(puts("__\n\\ \\");l(1),--c;puts("__\\ \\\n\\  __\\"));l(2);s(3);v(47);}

mainยอมรับการโต้เถียงแบบ int ดังนั้นให้ทำเช่นนี้./lightning . . .เพื่อส่ง4เป็นอาร์กิวเมนต์


2

Python 3, 126 118 117 ไบต์

บางสิ่งบางอย่างเพื่อให้เราเริ่มต้นด้วย

n=int(input())
p=print
p('__\n\\ \\')
for i in[0]*~-n:p(r''' \ \
__\ \
\  __\
''',end='')
p(r''' \ \
  \ \
   \/
''')

หากคุณไม่ต้องการตัวแปรลูปคุณสามารถวนซ้ำราง[0]*(n-1)เพื่อรับn-1การวนซ้ำได้ นอกจากนี้คุณยังสามารถเขียนเป็น(n-1) ~-n
randomra

คุณสามารถบันทึกหนึ่งไบต์โดยการเปลี่ยนไปi in [0] i in[0]
mbomb007

ยินดีต้อนรับ! for i in[0]*~-n:p(' \\ \\\n__\\ \\\n\\ __\\')พิมพ์บรรทัดเดียวในวงยังเป็นสั้น:
randomra

2

Python 2, 76 ไบต์

print'__\n\ \\\n \ \\\n'+r'''__\ \
\  __\
 \ \
'''*~-input()+'  \ \\\n   \/'

เพียงพิมพ์สามบรรทัดแรกจากนั้นพิมพ์อีกสามบรรทัดถัดไปn-1จากนั้นพิมพ์ 2 บรรทัดสุดท้าย ทั้งหมดในครั้งเดียว

และนี่คือการลองทางเลือกที่น่าเสียดายที่ใช้จำนวนไบต์เท่ากันทั้งหมด:

print('__\n| |'+'__|\  __\\\n |'*~-input()+'  |   \/').replace('|','\ \\\n')

คุณได้ลองใช้การจัดรูปแบบ% s สำหรับส่วนตรงกลางหรือไม่?
Sp3000

@ Sp3000 ฉันต้องการวงเล็บปีกกาเพื่อให้ทำงานกับ*, ที่ให้ฉัน 77 ไบต์ - หรือไม่ฝังมัน แต่มีค่าใช้จ่าย 79 ไบต์ :(
Matty


2

CJam 54 Chars

ไม่ใช่สั้นที่สุด แต่ตั้งแต่ฉันเริ่ม CJam วันนี้ฉันมีความสุข

rd(:T;{'__}:W~N{'\:XSXN}:V~SV{WVXSSWXNSV;N}T*SSVSSSX'/

ลองมัน


2

Pascal: 149 142 141 137 ตัวละคร

var n:Word;begin
Read(n);Writeln('__'#10'\ \'#10' \ \');for n:=2to n do Writeln('__\ \'#10'\  __\'#10' \ \');Write('  \ \'#10'   \/')end.

ท้ายที่สุดความแข็งแกร่งของสนามกอล์ฟเพียงแห่งเดียวของ Pascal ก็คือแบ็กสแลชไม่จำเป็นต้องหลบหนี ...


1
for n:=2 to n doยังใช้งานได้
randomra

ขอบคุณ @randomra ฉันคิดว่าเป็น ~ 18 ปีที่แล้วเมื่อฉันตระหนักถึงความเป็นไปได้นี้ ... ดีที่จะจำมัน
จัดการ

2

Google ชีตขนาด 60 ไบต์

ฟังก์ชันแผ่นงานที่ไม่ระบุชื่อที่รับอินพุตจากช่วง[A1]และเอาต์พุตไปยังเซลล์ที่เรียก

="__
\ \
 \ \
"&REPT("__\ \
\  __\
 \ \
",A1-1)&"  \ \
   \/


1

SpecBAS - 135 104 ไบต์

อะพอสโทรฟีในคำสั่ง PRINT ย้ายเคอร์เซอร์ไปที่บรรทัดใหม่

SpecBAS ช่วยให้คุณสามารถรวมอักขระ ASCII ในสตริงผ่าน#nได้ดังนั้นจึงมีการสร้างขึ้นใน carriage return (ASCII 13)

สร้างสตริงโดยใช้การขึ้นบรรทัดใหม่และอักขระอื่น ๆ จากนั้นใช้REP$เพื่อทำซ้ำตามจำนวนครั้งที่ต้องการ

1 LET b$="\ \": INPUT n: PRINT "__"'b$+REP$(#13" "+b$+#13"__"+b$+#13"\  __\",n-1)'" ";b$'"  ";b$'"   \/"

1

PHP 155

$l=PHP_EOL;echo$l;echo "__$l";for($i=0;$i<$argv[1];$i++){if($i>=1)echo "__\\ \\$l\\  __\\$l";else echo "\\ \\$l";echo " \\ \\$l";}echo "  \\ \\$l   \\/$l";

เวอร์ชันที่ไม่ดี

$n = $argv[1];

echo PHP_EOL;
echo '__'.PHP_EOL;
for($i=0;$i<$n;$i++)
{
    if($i>=1) {
        echo '__\\ \\'.PHP_EOL.'\\  __\\'.PHP_EOL;

    }
    else
    {
        echo '\\ \\'.PHP_EOL;
    }   
    echo ' \\ \\'.PHP_EOL; 


}    
echo '  \\ \\'.PHP_EOL;
echo '   \\/';
echo PHP_EOL;

รหัสของคุณสามารถปรับปรุงเพิ่มเติมได้ลงไปถึง 121 ไบต์ echo$l=PHP_EOL,"__$l";$g="\\ \\$l";for($i=0;$i<$argv[1];$i++){echo($i?"__$g\\ __\\$l":$g)," $g";}echo" $g",' \\/',$l;
Octfx

นอกจากนี้: ลบ$i=0; ลบวงเล็บสำหรับforห่วง; เพิ่มตัวนับภายในวง ( echo($i++?"…)
Blackhole

1

Java, 183 180 ไบต์

class L{public static void main(String[]a){String b="__\n\\ \\\n \\ \\\n";for(int i=1;i<new Long(a[0]);++i)b+="__\\ \\\n\\  __\\\n \\ \\\n";System.out.print(b+"  \\ \\\n   \\/");}}

Lua ขนาด 110 ไบต์

function l(n)print("__\n\\ \\\n \\ \\\n"..string.rep("__\\ \\\n\\  __\\\n \\ \\\n",n-1).."  \\ \\\n   \\/")end

1

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

.+
__#r r$0x  r   \/
1x

1
__r\  __\# r
r
\ \#   

ใช้อินพุตเป็น unary

แต่ละบรรทัดควรไปที่ไฟล์ของตนเองและ#ควรเปลี่ยนเป็นบรรทัดใหม่ในไฟล์ สิ่งนี้ไม่สามารถใช้งานได้ แต่คุณสามารถเรียกใช้รหัสตามที่เป็นเหมือนหนึ่งไฟล์โดยใช้-sแฟล็กเพื่อรักษา#เครื่องหมาย คุณสามารถเปลี่ยน#เป็นบรรทัดใหม่ในผลลัพธ์เพื่อให้สามารถอ่านได้หากคุณต้องการ เช่น:

> echo -n 11|retina -s lightning|tr # '\n'
__
\ \
 \ \
__\ \
\  __\
 \ \
  \ \
   \/

อัลกอริทึมง่ายมาก คู่ของบรรทัด (regex - คู่แทน) ทำขั้นตอนการทดแทนต่อไปนี้:

  • ล้อมรอบอินพุตด้วยสายฟ้าผ่าด้านบนและด้านล่าง
  • ลบ1ออกจากอินพุต unary
  • เปลี่ยนทุกเลขเอกนารีเป็นส่วนตรงกลางของสายฟ้าผ่า
  • ขยาย\ \ส่วนบีบอัดของสายฟ้าเพื่อให้ได้ผลลัพธ์ที่ต้องการ

ลองออนไลน์! (รวมถึงการแปลงทศนิยม) แต่ฉันสามารถทำได้ใน 45 ไบต์: ลองออนไลน์! (รวมถึงการแปลงทศนิยม)
Neil

1

Powershell ขนาด 59 ไบต์

'__
\ \'
,' \ \
__\ \
\  __\'*--$args[0]
' \ \
  \ \
   \/'

สคริปต์ทดสอบ:

$f = {

'__
\ \'
,' \ \
__\ \
\  __\'*--$args[0]
' \ \
  \ \
   \/'

}

&$f 1
&$f 2
&$f 3
&$f 4

เอาท์พุท:

__
\ \
 \ \
  \ \
   \/
__
\ \
 \ \
__\ \
\  __\
 \ \
  \ \
   \/
__
\ \
 \ \
__\ \
\  __\
 \ \
__\ \
\  __\
 \ \
  \ \
   \/
__
\ \
 \ \
__\ \
\  __\
 \ \
__\ \
\  __\
 \ \
__\ \
\  __\
 \ \
  \ \
   \/

คำอธิบาย:

สคริปต์นี้เป็นแบบดั้งเดิมtop+ +middle bottomมีเพียงสิ่งเดียวที่ฉลาดคือ: เครื่องหมายจุลภาคก่อนบังคับสายกลางเพื่อทำซ้ำองค์ประกอบอาร์เรย์มากกว่าสตริง ดังนั้นแต่ละรายการmiddleจะปรากฏบนบรรทัดใหม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.