สร้างโปรแกรม Parrot


15

รับอินพุต, เอาต์พุตที่อินพุตตามด้วย newline ไม่รู้จบ

ข้อมูลที่ป้อนจะเป็นสตริงที่ประกอบด้วยอักขระ ASCII ที่พิมพ์ได้ ( 0x20-0x7E) และบรรทัดใหม่ ( 0x0A)

หากอินพุตมีความยาว 0 ให้ส่งบรรทัดใหม่อย่างไม่สิ้นสุด

นี่คือจำนวนน้อยที่สุดในแต่ละภาษาที่ชนะ!


ครึ่งหนึ่งของใช่เป็น 91 สายยาว
จัดการ


@VoteToClose ฉันรู้ว่าฉันได้ตอบคำถามนี้มาก่อน ..
L3viathan

Microsoft, 1 Steve Ballmer - นักพัฒนา, นักพัฒนา, นักพัฒนา, นักพัฒนา, ...
sergiol

คำตอบ:


13

Bashขนาด 8 ไบต์

yes "$1"

ลองออนไลน์!


ด่า 10 นาที! แต่สิ่งนี้จะไม่พิมพ์บรรทัดใหม่เป็นบรรทัดใหม่
phil294

ขอโทษฉันไม่ได้หมายความว่าyes-newlines แต่การขึ้นบรรทัดใหม่ใด ๆ \nที่อาจจะอยู่ในการป้อนข้อมูลจะถูกพิมพ์ออกมาเป็นแทน ขึ้นอยู่กับว่าคุณอ่านคำถามอย่างไร: D
phil294

@Blauhirn โอ้ฉันเข้าใจผิดในส่วนนี้: / คุณต้องเรียกสิ่งนี้ว่า./script $'Hello\n World'จะรวมถึงการขึ้นบรรทัดใหม่จริง ใน TIO คุณสามารถเพิ่มการขึ้นบรรทัดใหม่ให้กับอาร์กิวเมนต์บรรทัดคำสั่ง
ovs

1
ใบเสนอราคาจำเป็นหรือไม่? yes $1ใช้งานได้ดีสำหรับฉัน
DrnglVrgs

2
@DrnglVrgs สิ่งนี้ไม่ทำงานสำหรับฉันสำหรับการป้อนข้อมูลที่ว่างเปล่า
ovs

9

ทำไมคุณไม่ทำ[I,?
FrodCube

@FrodCube: เพราะน่าเสียดายที่ไม่สามารถใช้งานได้กับอินพุตว่าง :(
Emigna

@FrodCube: ที่จริงคำถามที่ระบุการป้อนข้อมูลของความยาว 0 และใส่ไม่ว่างเปล่าดังนั้นผมจึงสามารถลดนี้ :)
Emigna

1
@FrodCube: ใช่มันเป็นคุณสมบัติใหม่ใน 05AB1E จริง ๆ ฉันแน่ใจว่า Ohm จะได้รับในที่สุดเช่นกัน
Emigna

10
[=ใช้งานได้และเป็นหน้ายิ้ม การยิ้มนั้นเป็นประโยชน์อย่างเดียว
Magic Octopus Urn


5

โอห์ม 3 ไบต์

∞┼,

ลองออนไลน์!

มันไม่ทำงานกับอินพุตว่างเพราะโอห์มจัดการกับอินพุตไม่ดีเมื่อเทียบกับภาษาอื่น แต่คุณสามารถป้อน "" ได้

คำอธิบาย

∞     Infinite loop next code (until ";" or end of line)
 ┼    Get first input
  ,   Println

สิ่งนี้ดูดี ... คุณช่วยอธิบายได้ไหม: D
Beta Decay

@BetaDecay เสร็จแล้ว!
FrodCube

1
FYI, Ohm v2 (หวังว่าจะมาเร็ว ๆ นี้ -ish) จะมีการจัดการอินพุตที่ดีขึ้นกว่า แต่ก่อน!
Nick Clifford

@NickClifford เจ๋ง! ฉันหวังว่าจะเป็นเช่นนั้น! ฉันชอบภาษาของคุณ
FrodCube

1
Oooo ... โอ๋เหมือนกับ 05AB1E กับคำสั่งที่แตกต่างกันหรือไม่! เริ่มอ่านหน้า GitHub อย่างแรง
Magic Octopus Urn

5

sed, 5

:      # label (unnamed) 
p      # print the pattern space
b      # branch back to the label

ป้ายกำกับที่ไม่มีชื่อเป็น "คุณสมบัติ" ที่ไม่มีเอกสารใน sed ที่ใช้งานได้กับรุ่น 4.2.2 แต่อาจไม่สามารถใช้งานได้ในเวอร์ชันในอนาคต





4

V , 2 ไบต์

òÙ

คุณไม่สามารถลองออนไลน์ได้ด้วยเหตุผลที่ชัดเจน

ò    'Recursively
 Ù   'Duplicate the current line downwards

TIO ทำงานจริงเป็นเวลา 60 วินาทีจากนั้นจะยกเลิกและพิมพ์ STDOUT ขึ้นจนกว่าจุดสิ้นสุดจะถูกตัดเป็น 128KiB แรก
Magic Octopus Urn

1
ในVเนื่องจากเอาต์พุตมันอยู่ในเซสชัน nvim และไม่ถูกพิมพ์ไปยัง STDOUT จนกว่าจะเสร็จสิ้น TIO จะฆ่าเซสชันและไม่เห็นสิ่งใดบน STDOUT ฉันไม่รู้เกี่ยวกับสิ่งที่คุณพูด แต่น่าเสียดายที่มันไม่สามารถแก้ไข V
nmjcman101

1
Ahhhh ... โชคไม่ดีฉันลืมคุณสมบัติของ V ฉันใช้มันครั้งเดียวเท่านั้นไม่สำเร็จ
Magic Octopus Urn

3

ทับทิม, 18 17 12 + 2 = 14 ไบต์

วิ่งด้วย-nธง

loop{$><<$_}

แก้ไข: ขอบคุณสำหรับ @sethrin สำหรับ-nธง!


ใช้ธงและข้าม-n gets
canhascodez

@ เซ็ทริน Nice one! ฉันไม่รู้เกี่ยวกับธงนี้!
Peter Lenkefi

3

AutoHotkeyขนาด 20 ไบต์

OP ไม่ได้ระบุว่าผลลัพธ์ควรเกิดขึ้นได้อย่างไรกล่าวว่าจะต้องเกิดขึ้นอย่างไม่สิ้นสุดกับ newline หลังจากนั้น AHK ไม่ได้ถูกปรับแต่งสำหรับการตอบสนองแบบ cmd ดังนั้นผลลัพธ์ที่เกิดขึ้นซ้ำ ๆ ในToolTipตำแหน่งเมาส์:

tooltip

loop
tooltip,%1%`n`n

ฉันชอบloopคุณสมบัติของ AHK loopทำซ้ำบล็อกถัดไปตลอดไปloop, 10จะทำซ้ำ 10 ครั้ง บางครั้งฉันพลาดฟีเจอร์นี้ในภาษาอื่นเช่น Python

อักขระเลี่ยงใน AutoHotkey คือ`(ดังนั้นจึงไม่มีปัญหากับแบ็กสแลชในพา ธ Windows) ด้วยเหตุผลบางอย่างขึ้นบรรทัดใหม่จะถูกละเว้นดังนั้นจึงจำเป็นต้องใช้สองครั้ง (trayTipอาจไม่มี "ข้อผิดพลาด" นี้ แต่ฉันไม่สามารถทดสอบได้เพราะทำงานกับไวน์)

คำตอบเก่า:

loop
msgbox,%1%

ฉันเพิ่งตระหนักว่า OP อาจไม่ชอบวิธีนี้ผลลัพธ์ที่เกิดขึ้นกับการโต้ตอบกับผู้ใช้และไม่มีบรรทัดใหม่ ฉันจะมองหาวิธีอื่น


1
ดีคุณมี upvote ของฉันสำหรับการแก้ปัญหาความคิดสร้างสรรค์
Skidsdev

3

LibreLogo , 33 ไบต์

รหัส:

x=input " repeat [ label x bk 9 ]

คำอธิบาย:

x = input "               ; Input Stored in x as String
repeat [                  ; Endless Loop
    label x               ; Print x in Current Position
    bk 9                  ; Move Back 9 pt
]

ผลลัพธ์:

enter image description here


2

Python 2 , 25 ไบต์

s=input()
while 1:print s

ลองออนไลน์!

ข้อมูลที่คาดว่าจะเป็นตัวอักษร Python (คำพูดสำหรับสตริงวงเล็บเหลี่ยมหรือวงเล็บที่มีรายการคั่นด้วยเครื่องหมายจุลภาคสำหรับรายการ / tuple ฯลฯ )

Python 3 จะเป็น +1 byte เนื่องจากprintเป็นฟังก์ชัน แต่ยังสามารถป้อนข้อมูลดิบโดยไม่มีการลงโทษ 4 ไบต์สำหรับraw_input()ใน Python 2




2

Haskell ขนาด 14 ไบต์

cycle.(++"\n")

ลองออนไลน์!

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

รุ่นทางเลือก 14 ไบต์เช่นกัน:

unlines.repeat

รุ่นอื่นค่อนข้างหรูหรา :)
Conor O'Brien

2

Braingolf , 14 12 ไบต์

#
V[R!&@v1+]

ลองออนไลน์!

-2 ไบต์ขอบคุณโดยสิ้นเชิงมนุษย์

คำอธิบาย

#\nV[R!&@v1+]  Implicit input of string as charcodes
#\n            Push charcode of newline
   V           Create stack2
    [R...v1+]  While loop, runs endlessly
      !&@      Print entire stack1 as chars without popping

2

C, 24 ไบต์

f(char*s){puts(s),f(s);}

โดยทั่วไปฟังก์ชั่นวนซ้ำที่ส่งออกสตริงก่อนที่จะเรียกตัวเองอีกครั้ง มันเป็นโพสต์ที่สองของฉันใน codegolf ดังนั้นโปรดเป็นคนดี: p


2

Cubix , 6 ไบต์

AN/qvo

ทดสอบที่นี่

  A
N / q v
  o
  • N/A กด Newline (10) และใส่ลงในสแต็ก
  • v เปลี่ยนเส้นทางเข้าสู่วง
  • o/q ลูปที่เอาท์พุทตัวละครและผลักมันไปที่ด้านล่างของสแต็คอย่างต่อเนื่อง

ฉันกำลังจะลบตัวบ่งชี้ EOI (-1) ออกจากสแต็ก แต่ดูเหมือนจะไม่ส่งผลกระทบต่อการส่งออกใด ๆ ดังนั้นจึงเหลือการบันทึกไบต์





1

C, 26 ไบต์

f(char*s){for(;;)puts(s);}

ฟังก์ชั่น, fที่ใช้เวลาสตริง sC-สไตล์เป็นพารามิเตอร์ เนื้อความของฟังก์ชันวนซ้ำผ่านสตริงไปยังฟังก์ชันไลบรารีputsซึ่งส่งออกสตริงไปยังเอาต์พุตมาตรฐาน (stdout) พร้อมกับบรรทัดใหม่ต่อท้าย

Pretty simple stuff. The only hack here is taking advantage of default-int for the return value and then not actually returning a value. That doesn't matter in this case, though, since the function never returns (it just keeps printing forever)!

Try it online!


f(char*s){puts(s);f(s);} saves a few
nmjcman101


1

Java 8, 34 bytes

s->{for(;;System.out.println(s));}

Surprised there wasn't a Java answer yet.

Try it here. (Wait 60 second for it to time-out.)


you don't need to wait for it to timeout, it'll reach the max output buffer of 128kb much faster than that :P
Skidsdev

@Mayube Perhaps, but it's still running Real time: 60.008 s according to the Debug-section before it outputs the result (and gives two warnings 60-sec limit exceeded and 128kb exceeded).
Kevin Cruijssen

1
TIO also caches the results, so once it's been run and hit the timelimit, the output is cached and will simply be served to others who run it without actually re-compiling and running the code
Skidsdev

@Mayube True. I didn't knew this also applied to others. Thought it was a local cache. In that case you can ignore the "(Wait 60 second for it to time-out.)" in my answer. :) But if you check on the "disable output cache" setting you'll see it takes ~ 60 seconds.
Kevin Cruijssen


1

><>, 16 bytes

i:0(?v
:o71.>~a{

Try it online!

As mentioned in the comments below my first attempt may have misunderstood the question so the newer 16 byte solution has been made, I have left the original below so people may see.

><>, 13 bytes

<ov!?+1:i
oa<

Try it online!


I think there's been a bracketing problem: this code returns "that input followed by (a newline endlessly)", while most of the other answers give "(that input followed by a newline) endlessly"…
Not a tree

@Notatree, Thanks for mentioning this, I have updated my answer to respect your comment :)
Teal pelican

Nice, my best try was 17 bytes!
Not a tree

@Notatree, I changed the check in the first line from 1+?!v to 0)?v which saved a byte, what was your solution, would be nice to see more ><> answers :) - I also believe with some nifty mirrors you may be able to remove the jump instructions too but haven't figured it out yet.
Teal pelican

1
@Notatree, you were really close to the 16 bytes as well, change your second line to a\~ then move your last line around 1 to o>{: and you would have made it. the jump is just to cut out on extra mirrors across lines but yours works just as well :)
Teal pelican


1

Perl 5, 27 bytes

while(1){print"$ARGV[0]\n"}

Try it online!


input will always be given, it just might be an empty string, so you should be able to do while(1){print"$ARGV[0]\n"}
Skidsdev

@Mayube - thx, updated answer.
tale852150

Also welcome to ppcg! I fixed the formatting on your answer for you, in the future I totally recommend using Try it online (linked in the edited answer) as it not only makes testing way easier, but can give you a fully formatted ppcg answer to post
Skidsdev

@Mayube - thx, glad to be here...
tale852150

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