โคมไฟไก่เขี่ยของฉัน


13

ในขณะที่เคลื่อนย้ายฉันทำลายหลอดไฟ ตอนนี้ฉันต้องการใหม่ มันเป็นหน้าที่ของคุณที่จะทำให้ฉันเป็นโคมไฟ! ฉันไม่แน่ใจว่าขนาดที่ฉันต้องการ แต่ฉันรู้ว่าฉันต้องการไก่เขี่ย

โปรแกรม / ฟังก์ชั่นของคุณจะต้องป้อนตัวเลขและพิมพ์หลอดไฟที่มี squiggles / bumps จำนวนมาก

ตัวอย่าง:

การป้อนข้อมูล:2

เอาท์พุท:

/ - \
 ()
 ()
/ __ \

การป้อนข้อมูล:3

เอาท์พุท:

/ - \
 ()
 ()
 ()
/ __ \

การป้อนข้อมูล:5

เอาท์พุท:

/ - \
 ()
 ()
 ()
 ()
 ()
/ __ \

กฎ:

  • 0 และตัวเลขติดลบไม่สำคัญ
  • เพื่อให้หลอดไฟ (ความท้าทายนี้) มีความหลากหลายมากขึ้นคุณจะต้องเปลี่ยนสีของหลอดไฟ
    • ต้องมีความกว้าง4ตัวอักษรและสูง1ตัว
    • พวกเขาสามารถอยู่ในรูปร่างใด ๆ รวมถึงรูปร่างที่ไม่ใช่หลอดไฟ
    • พวกเขาจะต้องไม่มีช่องว่าง
    • ฐานจะต้องอยู่ในสภาพเดิม
  • คุณต้องแสดงตัวอย่างอินพุตและเอาต์พุตพร้อมกับโป๊ะโคมของคุณ
  • รหัสที่สั้นที่สุดชนะ!

แต่มันไม่ได้ดิ้นรนเลย! จะมีความรักถ้าอินพุต> 5 ทำให้ squiggle
เครื่องมือเพิ่มประสิทธิภาพ

22
ฉันลงคะแนน ฉันคิดว่านี่เป็นงานศิลปะ ASCII ที่น่าเบื่อ มีส่วนที่ซ้ำกันอยู่ตรงกลางและไม่ทับซ้อนกันระหว่างส่วนต่าง ๆ ซึ่งสั้นเกินไปที่จะบีบอัด ABBB..BBBCมันก็มีรูปแบบ ความต้องการที่จะเปลี่ยนหัวข้อก็หมายความว่าผู้คนจะใช้สตริงในตัวแบบสั้น
xnor

7
คุณสามารถหยุดการลงคะแนนแล้ว! ฉันคิดว่า OP ได้รับข้อความ
xnor

1
@ xnor ฉันรู้สึกเสียใจกับคนที่น่าสงสาร นี่อาจเป็นหนึ่งในคำถามที่ถูกลดระดับลงมากที่สุดเท่าที่เคยมีมา: / i.stack.imgur.com/T4A7X.jpg
Beta Decay

1
ไม่ได้ลงคะแนน แต่อย่างใด แต่ด้วยความคล้ายคลึงกับDraw Lightning สายฟ้า ASCIIฉันสามารถเข้าใจผู้ลงคะแนนได้ บางบิดเล็กน้อยเช่นมีฐานขนาดใหญ่สำหรับโคมไฟที่สูงขึ้นหรือมีการตกแต่งซ้ำในแต่ละ squiggle แต่ละครั้งจะทำให้แตกต่างกันเล็กน้อย
จัดการ

คำตอบ:


4

Pyth - 16 ไบต์

ใช้เครื่องหมายคำพูดสำหรับเฉดสีตั้งแต่ N ถูกกำหนดค่าเริ่มต้นให้เป็นอย่างนั้น

*N4VQ+d`();"/__\

ลองมันออนไลน์ได้ที่นี่

* 4            String repetition 4x, implicit print
 N             Preinitialized to Quote
VQ             For N in range(Q)
 +             String concat
  d            Space
   `()         Repr of empty tuple
;              Close for loop
"/__\          Implicitly print string, implicit close quote

ตัวอย่าง 5:

""""
 ()
 ()
 ()
 ()
 ()
/__\

7

Snowman 0.2.0 , 42 ตัวอักษร

)vg10sB]"[--]
"sP:" ()
"sP;bR"/__"sP92wRsP

วิ่งตัวอย่าง:

llama@llama:...Code/snowman/ppcg53483lamp$ snowman lamp.snowman
5
[--]
 ()
 ()
 ()
 ()
 ()
/__\

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

"/__"sP92wRsP

92เป็นรหัส ASCII สำหรับแบ็กสแลชwRห่อในอาร์เรย์และตอนนี้ฉันสามารถพิมพ์ได้sPเพราะ "สตริง" ใน Snowman เป็นเพียงอาร์เรย์ของตัวเลข


7
คุณต้องการสร้างโคมไฟหิมะหรือไม่?
Alex A.

3

> <> , 43 41 38 ไบต์

"\__/"aiv
"&-1v!?:<&a" ()
~"!_\
?!;o>l

อินพุตผ่านจุดโค้ดเช่นช่องว่างคือ 32 ซึ่งใช้ส่วนหนึ่งของรหัสของโปรแกรมเป็นโป๊ะส่งผลให้บางสิ่งที่ดูเหมือนจานดาวเทียม:

~\_!
 ()
 ()
 ()
 ()
 ()
/__\

(คำแนะนำขอบคุณ @randomra)

สำหรับอีกสามไบต์เราสามารถเปลี่ยนบรรทัดที่สามเพื่อเพิ่มการปรับแต่งเพิ่มเติมได้อีกเล็กน้อย:

"\__/"aiv
"&-1v!?:<&a" ()
__\"\~"/
?!;o>l

สิ่งนี้สร้างหนึ่งในหลอดไฟที่ยิงขึ้นด้านบนเพราะขาดวิธีที่ดีกว่าในการวาง:

\__/
 ()
 ()
 ()
 ()
 ()
/__\

3

R, 54 52 46 ไบต์

cat("RRRR",rep(" ()",scan()),"/__\\",sep="\n")

ในรุ่นนี้อินพุตและเอาต์พุตเกือบรวมกัน:

{in / out} PUT:

> cat("RRRR",rep(" ()",scan()),"/__\\",sep="\n")
1: 4
2: 
Read 1 item
RRRR
 ()
 ()
 ()
 ()
/__\

แก้ไข 1 : -2ไบต์ขอบคุณความคิดเห็น @manatwork
แก้ไข 2 : -6ไบต์ เครดิตเต็มไปที่ @ manatwork อีกครั้ง


1
ไม่มีอะไรเปลี่ยนแปลง แต่ดู: ควรจะเป็น" /_\\" "/__\\"BTW เป็น\rสิ่งที่จำเป็น?
จัดการ

@ การจัดการมันเปลี่ยนรูปร่างของเท้าของหลอดทำให้มันเสถียรขึ้น + คำพูดของคุณเกี่ยวกับการ\rช่วยฉันสองไบท์! ควรอ่านรหัสของฉันอีกครั้ง! ขอบคุณมาก!
Frédéric

1
อืม ... เครื่องมือแปลก ๆ ไม่สามารถทำงานได้แบบไม่โต้ตอบ อย่างไรก็ตามcat("RRRR",rep(" ()",scan()),"/__\\",sep="\n")ดูเหมือนว่าจะทำงาน
จัดการ

@ การทำงาน: ดี ... ฉันไม่เคยคิดว่ามันจะทำงานได้! แน่นอนมันเป็นทางออกที่ดี R เต็มไปด้วยความประหลาดใจ!
Frédéric

Bonjour Frédéricถ้าคุณยังทำงานอยู่กับ PPCG คุณสามารถบันทึกได้ 5 ไบต์
JayCe

3

ฟาง 26 ไบต์ (ไม่แข่งขัน)

<#~('--'
)>( ()
)-*>(/__\)>

ใช้'--'เป็นโป๊ะโคม, ใส่ค่าเป็นเอกในขณะนี้เป็นทศนิยม


มันทำงานอย่างไร
Conor O'Brien

@BetaDecay * ดังนั้นจึงไม่ใช่การแข่งขัน
Conor O'Brien


2

JavaScript ES6, 34 ไบต์

i=>`|==|
${` ()
`.repeat(i)}/__\\`

บรรทัดใหม่มีความสำคัญ

ตัวอย่างที่มีการป้อนข้อมูล 5:

|==|
 ()
 ()
 ()
 ()
 ()
/__\

2

sed, 28 ไบต์

s#.# ()\n#g
s#^\|$#/__\\\n#g

ใช้อินพุตเป็น unary เงาคือการเลือกที่ชัดเจน (เหมือนกับฐาน)

ทดสอบการทำงาน

$ echo -n 111 | sed -f lamp.sed
/__\
 ()
 ()
 ()
/__\


1

jq: 30 ตัวอักษร

(ตัวเลือกรหัสบรรทัด 29 ตัวอักษร + 1 ตัวอักษร)

8888,(range(.)|" ()"),"/__\\"

วิ่งตัวอย่าง:

bash-4.3$ jq -r '8888,(range(.)|" ()"),"/__\\"' <<< 3
8888
 ()
 ()
 ()
/__\

การทดสอบออนไลน์ ( -rไม่รองรับการส่งผ่าน URL - ตรวจสอบข้อมูลดิบด้วยตัวคุณเอง)





1

พื้นที่ว่าง 169 ไบต์

[S S S N
_Push_0][T  N
T   T   _Read_STDIN_as_integer][S S S T S T T   T   S S N
_Push_92_\][S S S T S T T   T   T   T   N
_Push_95__][S N
S _Duplicate_95__][S S S T  S T T   T   T   N
_Push_47_/][N
S S N
_Create_Label_LOOP][S S S N
_Push_0][T  T   T   _Retrieve_at_address_0][S S S T N
_Push_1][T  S S T   _Subtract][S N
S _Duplicate][S S S N
_Push_0][S N
T   _Swap_top_two][T    T   S _Store_at_address_0][N
T   T   S N
_If_neg_Jump_to_Label_PRINT][S S S T    S T S N
_Push_10_newline][S S S T   S T S S T   N
_Push_41_)][S S S T S T S S S N
_Push_40_(][S S S T S S S S S N
_Push_32_space][N
S N
N
_Jump_to_Label_LOOP][N
S S S N
_Create_Label_PRINT][S S S T    S T S N
_Push_10_newline][S S S T   S S S S T   N
_Push_33_!][S N
S _Duplicate_33_!][S N
S _Duplicate_33_!][S N
S _Duplicate_33_!][N
S S T   N
_Create_Label_LOOP_2][T N
S S _Print_as_character][N
S N
T   N
_Jump_to_Label_LOOP_2]

เพิ่มตัวอักษรS(ช่องว่าง), T(แท็บ) และN(บรรทัดใหม่) เป็นการเน้นเท่านั้น
[..._some_action]เพิ่มเป็นคำอธิบายเท่านั้น

ลองใช้ออนไลน์ (ด้วยพื้นที่ว่างเปล่าแท็บและบรรทัดใหม่เท่านั้น)

คำอธิบายในรหัสเทียม:

ใส่อักขระทั้งหมดในลำดับที่กลับด้านไปยังสแต็กจากนั้นพิมพ์อักขระเหล่านั้นในลูป

Integer i = STDIN as input
Push "\__/" to the stack
Start LOOP:
  i = i - 1
  if(i is negative):
    Go to function PRINT
  Push "\n)( " to the stack
  Go to next iteration of LOOP

function PRINT:
  Push "\n!!!!" to the stack
  Start LOOP_2:
    Print top as character to STDOUT
    Go to next iteration of LOOP_2

หมายเหตุ: iในรหัสหลอกด้านบนจะถูกเก็บไว้ในกองในการวนซ้ำทุกครั้งLOOPเนื่องจากเราไม่ต้องการทิ้งไว้ในสแต็กที่จะพิมพ์ในตอนท้าย



1

05AB1E , 17 15 13 11 ไบต์

„ (и„/_.ø)˜∞

-2 ไบต์ (17 → 15) ขอบคุณที่@EriktheOutgolfer
-2 byte (13 → 11) หลังจากได้รับแรงบันดาลใจจากคำตอบ Canvas ของ@dzaimaคำตอบผ้าใบ

Cap เหมือนกับฐาน (/__\ )

คำอธิบาย:

 (            # Literal string " ("
   и           # Repeat " (" the input amount of times
               #  i.e. " (" and 3 → [' (',' (',' (']
    „/_        # Literal string "/_"
             # Surround the list of " (" with "/_" on both ends
               #  i.e. [' (',' (',' ('] → ['/_',[' (',' (',' (',' ('],'/_']
         ˜     # Flatten this list
               #  i.e. ['/_',[' (',' (',' ('],'/_'] → ['/_',' (',' (',' (','/_']
              # Mirror each item
               #  i.e. ['/_',' (',' (',' (','/_'] → ['/__\',' () ',' () ',' () ','/__\']
               # And output the list new-line delimited (implicitly due to the mirror)

คำตอบเก่า 13 ไบต์:

„/_D (Iиs)˜∞

ลองออนไลน์


1

Excel, 31 ไบต์

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

โคมไฟนี้เป็นดนตรี - และจะช่วยทำให้มีชีวิตชีวาและทำให้วันของคุณสว่างขึ้น

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

เอาท์พุต

ฉันรักโคมไฟ


1

PowerShell 5.1 28 26 ไบต์

ขอบคุณ Mazzy สำหรับ 2 ไบต์

8008;," ()"*"$args";"/__\"

เนื่องจากเฉดสีสามารถมีอักขระได้ 4 ตัวการใช้ตัวเลขจึงบันทึกคู่ของคำพูด ส่วนที่ยากที่สุดคือการหาร่มเงาที่ดูดี

เอาท์พุท:

PS C:\Users\ItsMe\Desktop> .\scratch.ps1 4
8008
 ()
 ()
 ()
 ()
/__\

โคมไฟที่ดี)
mazzy

1
ลองสิ่งนี้8008;," ()"*"$args";"/__\"
mazzy

1

Python 2, 36 ไบต์

print"-"*4+"\n ()"*input()+"\n/__\\"

สำหรับอินพุต 4:

----
 ()
 ()
 ()
 ()
/__\

โปรดทราบว่าสำหรับงูหลามที่โป๊ะโคมใด ๆ ที่ใช้ไพพ์นั้นมีค่าน้อยกว่าไบต์

-1 ไบต์ขอบคุณ @Alex!


1
ฉันคิดว่าถ้าคุณเปลี่ยนโป๊ะเป็นตัวเดียวและคูณด้วย 4 คุณสามารถบันทึกหนึ่ง byte:print"-"*4+"\n ()"*input()+"\n/__\\"
Alex



0

Julia, 36 ไบต์

n->print("|~~|\n"*" ()\n"^n*"/__\\")

สิ่งนี้จะสร้างฟังก์ชันที่ไม่มีชื่อซึ่งใช้จำนวนเต็มเป็นอินพุตและพิมพ์ไปยัง stdout

ตัวอย่าง:

julia> f(4)
|~~|
 ()
 ()
 ()
 ()
/__\

0

Bash + coreutils, 37 ไบต์

yes ' ()'|sed '1i####
'$1'{a/__\\
q}'

การขึ้นบรรทัดใหม่มีความจำเป็นและนับเป็นจำนวนไบต์ทั้งหมด ต้องการ GNU sed

วิ่ง:

./squiggly_lamp.sh 2

เอาท์พุท:

####
 ()
 ()
/__\



0

Java 7 11, 84 83 37 ไบต์

n->"i!!i\n"+" ()\n".repeat(n)+"/__\\"

ลองออนไลน์ (หมายเหตุ: Java 11 ยังไม่รองรับ TIO ดังนั้นจึงString.repeat(int)ถูกจำลองด้วยrepeat(String,int)ไบต์เดียวกัน)

ใช้i!!iเป็นหมวก ¡!!¡ดูดีขึ้นแต่มีขนาดสองไบต์

คำอธิบาย:

n->                    // Method with integer parameter and String return-type
  "i!!i\n"             //  Return the cap + new-line
  " ()\n".repeat(n)    //   appended with " ()" and a new-line `n` amount of times
  "/__\\"              //   append with "/__\"


0

ไปข้างหน้า , 38 ไบต์

I"|MM|"Wr
~W" ()"oN<s!:-1~
@W"/__\"oN<

ลองออนไลน์!

ตัวอย่าง

1
|MM|
 ()
/__\

2
|MM|
 ()
 ()
/__\

3
|MM|
 ()
 ()
 ()
/__\

2
บางทีคุณอาจให้ลิงค์ไปยังสภาพแวดล้อมการทดสอบออนไลน์เพื่อให้ผู้ใช้สามารถดำเนินการส่งได้อย่างง่ายดาย?
Jonathan Frech

ตอนนี้ลิงก์
@JonathanFrech


0

PHP, 38 ไบต์

/--\<?while($argn--)echo"
 ()"?>

/__\

บันทึกเป็นไฟล์; ใช้เป็นท่อที่มี-nFหรือลองออนไลน์

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