สร้างผลลัพธ์สองเท่าของความยาวของรหัส


85

ความท้าทาย

เขียนโปรแกรมที่สมบูรณ์ที่เขียนสองไบต์จำนวนมากไปยังเอาต์พุตมาตรฐานตามความยาวของโปรแกรม

กฎระเบียบ

  • โปรแกรมต้องเขียนอักขระ ASCII ไปยังเอาต์พุตมาตรฐาน

  • เนื้อหาของผลลัพธ์ไม่สำคัญ

  • เอาท์พุทวัดในไบต์จะต้องตรงสองครั้งความยาวของโปรแกรมยังวัดในไบต์เว้นแต่คุณจะตอบสนองความโบนัส

  • บรรทัดใหม่ที่ต่อท้ายจะรวมอยู่ในจำนวนไบต์ของเอาต์พุต

โบนัส

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

หากคุณทำเช่นนี้คุณสามารถลบ 25 ไบต์จากคะแนนของคุณ

โปรแกรมที่สั้นที่สุดชนะ

ข้อ จำกัด

  • ไม่มีช่องโหว่มาตรฐาน

  • โปรแกรมต้องมีความยาวอย่างน้อย 1 ไบต์

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

  • หากคุณไม่ได้รับโบนัสโปรแกรมจะต้องไม่รับอินพุต หากคุณเติมเต็มโบนัสจะต้องเป็นจำนวนเต็มเท่านั้น

คะแนนต่ำสุด (ความยาวของโปรแกรมเป็นไบต์ - โบนัส) ชนะ

คำตอบที่สั้นที่สุดสำหรับแต่ละภาษาจะชนะสำหรับภาษานั้น

ลีดเดอร์

นี่คือ Stack Snippet เพื่อสร้างทั้งกระดานผู้นำปกติและภาพรวมของผู้ชนะตามภาษา

เพื่อให้แน่ใจว่าคำตอบของคุณปรากฏขึ้นโปรดเริ่มคำตอบด้วยหัวข้อโดยใช้เทมเพลต Markdown ต่อไปนี้:

# Language Name, N bytes

ที่Nมีขนาดของส่งของคุณ หากคุณปรับปรุงคะแนนของคุณคุณสามารถเก็บคะแนนเก่าไว้ในบรรทัดแรกโดยการตีพวกเขาผ่าน ตัวอย่างเช่น

# Ruby, <s>104</s> <s>101</s> 96 bytes

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

# Perl, 43 + 2 (-p flag) = 45 bytes

นอกจากนี้คุณยังสามารถตั้งชื่อภาษาให้เป็นลิงค์ซึ่งจะปรากฏในตัวอย่างกระดานแต้มนำ:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes


1
สำหรับโบนัสเอาต์พุตจะต้องมีจำนวนn * program lengthไบต์ที่แน่นอนหรือเป็นจำนวนขั้นต่ำหรือไม่
xnor

2
จะต้องมีความแน่นอน
Daniel M.

3
ดูเหมือนว่าต้องมีการแก้ไขโค้ดเพื่อจัดการกับคะแนนลบ
El'endia Starman

40
โบนัสของ -25 นั้นจำเป็นสำหรับบางภาษาเนื่องจากมันทำให้พวกเขาได้คะแนนติดลบ ในอนาคตฉันขอแนะนำให้ใช้โบนัสร้อยละหรือเพียงแค่สร้างโบนัสคำถามหากคุณต้องการคำตอบจริงๆ หรือเพียงแค่ไม่มีโบนัส
xnor

4
สำหรับ "ไม่มีอินพุตให้" เราคิดว่าสตริงว่างถูกส่งผ่านหรือไม่? ฉันไม่เห็นว่าจะจัดการกับผู้ใช้อย่างใดอย่างหนึ่งไม่พิมพ์ในอินพุตและโปรแกรมกำลังรอ
xnor

คำตอบ:


138

HQ9 + , 2 ไบต์

QQ

เอาท์พุท

QQQQ

ฉันคิดว่ามันเป็นสิ่งต้องห้ามที่นี่


14
มันอาจจะไม่ได้รับอนุญาต แต่มันไม่มากระหว่าง ... รอแล้วมันมีแปด upvotes อย่างไร?
John Dvorak

58
@JanDvorak มากพอ ๆ กับที่ฉันไม่ชอบ HQ9 + นี่สำหรับฉันคือการใช้ความคิดสร้างสรรค์ การใช้งานนี้น่าจะไม่ได้ถูกจินตนาการเมื่อสร้าง HQ9 + ซึ่งมากกว่าโปรแกรมอื่น ๆ ของ Hq9 + +1 จากฉัน
Digital Trauma

13
ฉันไม่รู้ด้วยซ้ำว่า Q พิมพ์“ ซอร์สโค้ดของโปรแกรม” ฉันคิดว่ามันแค่พิมพ์ Q. ทำได้ดีมากสำหรับการมองเห็นความแตกต่างที่สำคัญ!
Timwi

7
@ LegionMammal978 ในทางเทคนิคนี่คือความท้าทายในการส่งออกอย่างต่อเนื่องซึ่งหมายความว่าภาษาที่ไม่ใช่การเขียนโปรแกรมได้รับอนุญาต
สปาเก็ตตี้

3
นี้มี 120 คะแนนโหวต 1,200 ตัวแทนสำหรับการพิมพ์QQลงในล่าม
Stan Strum

95

เช็คสเปียร์, 768

ใช่เชคสเปียร์ไม่ค่อยมีภาษาการเล่นกอล์ฟมากนัก ส่งออก 1,536 ช่องว่าง

Rosencrantz and Guildenstern: A Series of Tedious Events.

Rosencrantz, a count of extraordinary determination.
Guildenstern, a spacy character.

Act I: The Long Conversation

Scene I: A Tortured Friendship

[Enter Rosencrantz and Guildenstern]

Rosencrantz:
 You are a gentle, noble, valiant, loyal, loving companion.

Guildenstern:
 You are nothing!

Scene II: Asking the Hard Questions

Rosencrantz:
 Speak your mind.

Guildenstern:
 You are as fair as the sum of yourself and a daisy. Are you as
 daring as the sum of a big, bold, fiery, feisty, rough, rowdy,
 ham-fisted, hawk-eyed, broad-shouldered, bright-eyed lad and a
 large, yellow, vicious, hairy, wild, scary, long-tailed,
 sharp-clawed, small-eared lion?

Rosencrantz:
 If not, let us return to scene II.

แก้ไข: 256

โอเคฉันจะเล่นกอล์ฟจริง ๆ โปรดทราบว่าข้างต้นไม่ได้รวบรวมในการดำเนินการของเช็คสเปียร์ใด ๆ ที่มีอยู่เพราะฉันเขียนมันอย่างระมัดระวังด้วยมือ (แต่ฉันพร้อมที่จะปกป้องความถูกต้องของมัน)

ด้านล่างแปลเป็น C โดยมีหนึ่งคำเตือนใน spl-1.2.1 และเอาต์พุต 512 ช่องว่าง:

Ummm.Ajax,1.Puck,2.Act I:I.Scene I:A.[Enter Ajax and Puck]Ajax:You old old old old old cow.Puck:You are zero!Scene II:B.Ajax:Speak thy mind.Puck:You are the sum of you and a red cat.Are you as big as the square of me?Ajax:If not, let us return to scene II.

15
ฉันจะ +1 ถ้าคุณเล่นกอล์ฟนี้
lirtosiast

1
นี่คือลักษณะของการเล่น Whitchcraft อะไร? ฉันไม่ได้รู้ว่าสิ่งดังกล่าวมีอยู่ ...
Malavos

10
คุณเล่นกอล์ฟมันแล้ว สวรรค์อันศักดิ์สิทธิ์
Malavos

2
@ Malavos ฉันแค่ล้อเล่นเกี่ยวกับวิธีที่คุณสะกดผิดคาถาขอโทษ - ทั้งที่และอาจจะโอเค
แมว

2
ไม่ฉันขอให้อภัยถ้าคุณฟังดูน่ารังเกียจหรือเป็นการป้องกัน ฉันแค่อ้างอิงถึง Futurama! :) เมื่อทราบอย่างจริงจังฉันยังคงประหลาดใจกับคำตอบนี้ เราต้องการมากกว่านั้นในเว็บไซต์
Malavos

69

เรียกคืน 17 ไบต์

................!

16 NOOP จากนั้นดีบักเกอร์!จะถูกเรียกใช้และทิ้งหน่วยความจำไปยังคอนโซล หน่วยความจำว่างเปล่า แต่ส่วนหัวมีความยาว 34 ไบต์:

-- STATE DUMP --
----------------

ลองมันนี่


13
นี่คือหนึ่งในคำตอบที่ยอดเยี่ยมของ IMO
แมว

67

Mathematica REPL, 1 ไบต์

#

#1พิมพ์


14
คำถามบอกว่า "เขียนโปรแกรมทั้งหมด"; นี่เป็นเพียงส่วนย่อยของ REPL
LegionMammal978

60

CJam, -17 ไบต์

r2e|i8,*

ซอร์สโค้ดมีความยาว8 ไบต์และมีสิทธิ์ได้รับโบนัส-25 ไบต์

ลองใช้ออนไลน์ในล่าม CJam

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

r         e# Read a token from STDIN.
 2        e# Push 2.
  e|      e# Logical OR; keep the token if it's not empty, 2 otherwise.
    i     e# Cast to integer.
     8,   e# Push [0 1 2 3 4 5 6 7].
       *  e# Repeat the array the corresponding number of times.

4
อึ. ทำได้ดี.
The_Basset_Hound

1
ไบต์เชิงลบเป็นอย่างไร
Nick T

3
@NickT 8 ไบต์ (ซอร์สโค้ด) - 25 ไบต์ (โบนัส)
เดนนิส

16
คุณสามารถบันทึกสำเนาได้หลายล้านชุดหากพื้นที่ดิสก์ของคุณหมด
Robert Fraser

ไม่ฉันคิดว่าข้อมูลเมตาจะทำให้เป็นบวก
CalculatorFeline

47

Python 2.6, 10

print`-.1`

พิมพ์-0.10000000000000001ซึ่งมี 20 ตัวอักษร

โปรดสังเกตว่าการพิมพ์สตริงแสดงความแม่นยำมากขึ้น print-.1เพียงแค่ให้-.1และprint.1/3ให้0.0333333333333ความแม่นยำเพียง 13 หลักเท่านั้น


5
สิ่งนี้ไม่ทำงานใน Python 2.7 หรือ 3.1 อีกต่อไป
Anders Kaseorg

@AndersKaseorg ดังนั้นrepl.itเป็นสิ่งที่ผิดแล้ว?
mbomb007

2
@ mbomb007 เห็นได้ชัดว่า GitHub แนะนำว่าแทบจะเป็นสิ่งเดียวที่มันผิดเกี่ยวกับ Ideone เห็นด้วยกับ CPython
Anders Kaseorg

ความคิดเห็นเช่นเดียวกับคำตอบอื่น ๆ ของคุณ: นี่พิมพ์บรรทัดใหม่ต่อท้ายหรือไม่หรือให้ 21 ไบต์หรือไม่
Martin Ender

1
คุณหมายถึงprint`+.1`อะไร
mbomb007

46

เมล็ดพันธุ์ 10 ไบต์

4 56111240

โปรแกรมนี้รวบรวมไปยังโปรแกรม Befunge (พบโดยกำลังดุร้าย)

9k.@

ซึ่งสร้าง 20 ไบต์ต่อไปนี้เมื่อทำงาน (ทดสอบใน CCBI จดบันทึกพื้นที่ต่อท้าย):

0 0 0 0 0 0 0 0 0 0 

การไม่คุ้นเคยกับ Befunge 98 ฉันต้องตรวจสอบสเปคสองสามครั้งสำหรับอันนี้:

  • k ดูเหมือนว่าฉันจะเสียไปนิดหน่อยดำเนินการมากกว่าที่ตั้งใจไว้เพราะ IP กำลังเข้าสู่คำสั่งซ้ำ
  • สแต็คของ Befunge 98 มีเลขศูนย์ไม่สิ้นสุดที่ด้านล่าง
  • . เอาต์พุตเป็นตัวเลขตามด้วยช่องว่าง

18
.... ฉัน .... แค่ .... ไม่สามารถ
Daniel M.

44

R, 3 2 ไบต์

รหัส

!0           # NOT FALSE

เอาท์พุท

TRUE

ว้าวในที่สุด R ในที่สุด

ดูเหมือนว่ามันจะ{}ทำงานด้วยเช่นกันNULL

โบนัส33 16 ไบต์:

รหัส

rep(1,number*16)

เอาท์พุท

# if number is not defined
> rep(1,number*16)                     
> Error: object 'number' not found     # output is 32 (or 2*16) bytes long error

# if number is defined
> number = 3                            
> rep(1,number*16)                     # output is 16*number bytes long
> 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

2
ฉันหวังว่าการใช้ชื่อ "หมายเลข" สำหรับตัวแปรไม่เท่ากับ "การเพิ่มช่องว่างที่ไม่จำเป็นในซอร์สโค้ด"
Mutador

26

Matlab, 7 5 ไบต์

น้อยลง 2 ไบต์ด้วย @flawr!

123;3

เอาท์พุท:

ป้อนคำอธิบายรูปภาพที่นี่

เอาต์พุตประกอบด้วยดังนั้น 10 ไบต์newline ans = newline newline 3 newline


1
Let 's ไม่มีใครหวังมีformat compactเป็นค่าเริ่มต้น :)
Sanchises

2
@sanchises :-) ใช่ขึ้นอยู่กับการตั้งค่าของ Matlab แต่format looseเป็นการตั้งค่าเริ่มต้น
Luis Mendo

2
แล้วไง123;4ล่ะ คือสามไบต์ที่สั้นลง =)
ข้อผิดพลาด

@ flawr ความคิดที่ดี! โพสต์ด้วยตัวคุณเอง!
Luis Mendo

ไม่ได้รับแรงบันดาลใจจากคำตอบของคุณมากเกินไป =)
ข้อผิดพลาด

25

JavaScript, 2 ไบต์!

ยิ่งสั้นกว่าโซลูชัน 3 ไบต์:

!0

กลับมาtrueหลังจากทำงาน


2
คุณควรทราบว่าสิ่งนี้ใช้ได้เฉพาะในสภาพแวดล้อม REPL
Cyoce

21

Python 2, 11

print`id`*1

พิมพ์การแทนค่าสตริงของบิวด์อินidซึ่งเป็น 22 ตัวอักษร:

<built-in function id>

*1คือการได้รับรหัส 11 ตัวอักษร print id;00นอกจากนี้คุณยังสามารถทำ

ทางเลือกที่น่าเบื่อมากขึ้นของ 11 คือ:

print'1'*22
print 9**21

ฉันได้เล่นกับตัวเลขที่ซับซ้อน แต่น่าเสียดายที่print.8/-9jเป็นหนึ่งในถ่านสั้น
Sp3000

ไม่พิมพ์บรรทัดใหม่ที่ตามมาทำให้จำนวนไบต์ของผลลัพธ์เป็น 23 หรือไม่
Martin Ender

1
@ MartinBüttnerกฎนั้นได้รับการแก้ไขในภายหลัง แต่เปลี่ยนเป็นprint id,;1พอเพียงที่จะระงับการขึ้นบรรทัดใหม่ มันไม่ได้เพิ่มช่องว่างต่อท้ายเช่นกัน
xnor

@xnor print 9**21ไม่ทำงาน มันคือ 21 ตัวอักษร print 9**23ทำงานได้แม้ว่า
Koishore Roy

18

dc, 10 - 25 = -15

2?A*Ar^1-n

ใช้บรรทัดว่างสำหรับ "ไม่มีอินพุต"

คำนวณ 10 ^ (10 * n) - 1 โดยที่ n คืออินพุตหรือ 2 ถ้าอินพุตว่างเปล่า พิมพ์สตริง9ที่มีความยาวที่ต้องการ

  • 2 กด 2 ไปที่สแต็กในกรณีที่อินพุตว่างเปล่า
  • ? ดันอินพุตไปยังสแต็ก
  • Aกด 10 ไปยังสแต็ก (dc มีทางลัดA- Fสำหรับ 10 - 15)
  • * ป๊อปสองครั้งและคูณ (คูณด้วย 10)
  • A กด 10 ไปที่สแต็ก
  • r ย้อนกลับองค์ประกอบสองกองด้านบน
  • ^ เลขชี้กำลัง 10 ^ (อินพุต 10 *)
  • 1- ลบ 1 จากด้านบนของสแต็ก
  • n พิมพ์โดยไม่ต้องขึ้นบรรทัดใหม่

แดงนั่นช่างฉลาดเหลือเกิน และโชคดีที่มีความยาวโค้ดอยู่ที่นั่น :) แต่บางทีคุณควรเพิ่มคำอธิบายเล็กน้อยสำหรับผู้ที่ไม่ได้ฝึกหัด และผมคิดว่านับบรรทัดใหม่ดังนั้นคุณควรจะใช้แทนn p
daniero

17

TI-Basic, 3 ไบต์

1ᴇ5

100000พิมพ์


ที่จริงฉันคิดว่าบรรทัดใหม่จะนับดังนั้นคุณสามารถทำได้เพียง01 ไบต์
lirtosiast

1
แล้วไงᴇ3ล่ะ และ @lirtosiast เนื่องจาก TI-Basic ไม่มีบรรทัดใหม่ที่ฉันสงสัยเกี่ยวกับสิ่งนั้น
จา

16

Brainfuck, 14 ไบต์

+++++++[....-]

นี่คือแบบฝึกหัดทางคณิตศาสตร์เล็กน้อย Let 's แสดงว่าจำนวนของ+ตัวอักษรในรหัสโดยaและหมายเลขของตัวละครโดย.b

โค้ดเอาต์พุตa*bไบต์ที่มีค่าจากaลงไป1(เหล่านี้ไม่ใช่ ASCII ไบต์ แต่ดูเหมือนว่าตกลงตามข้อมูลจำเพาะ) a+b+3ความยาวของรหัสที่ได้คือ ดังนั้นเราจึงมี

a*b = 2 * (a+b+3)

ลองใช้ค่าที่แตกต่างกันสำหรับaและbเราจะเห็นว่าค่าต่ำสุดที่a+b+3จะทำได้

a = 4       or       a = 7
b = 7                b = 4

โปรแกรมเมอร์ brainfuck ที่มีประสบการณ์จะเห็น+[[>....]-<<+]ตัวเลือก
orthoplex

@orthoplex เมื่อฉันอ่านความคิดเห็นของคุณฉันทันที portmanteau'd brainfuck และโปรแกรมเมอร์: brainfucker
Poke

15

gs2 , -18 ไบต์

CP437 :W↕0!↨.2

การถ่ายโอนข้อมูล Hex: 57 12 30 21 17 2e 32

Wอ่านตัวเลขจาก STDIN ลงในรายการ ↕0ผนวก 2 กับรายการและ!แยกองค์ประกอบแรก จากนั้น↨.(รายการ[0,1,2,3,4,5,6]) ซ้ำ ( 2) หลายครั้ง

นี่คล้ายกับคำตอบ CJam ของเดนนิส - gs2 เพียงรวมrและiเป็นหนึ่งไบต์

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


1
คำตอบแรกของ GS2 ฉันเห็นแล้วว่าไม่มีตัวอักษรในชุดการ์ดเลย!
Cyoce

14

Perl 5, 16 ไบต์ - 25 = -9

$_ =$]x($_*2||4)

นี่เป็นวิธีการแปลกปัญหา

รันด้วย-pอาร์กิวเมนต์บรรทัดคำสั่ง

ฉันเห็นคำตอบ Perl ด้านล่างซึ่งใช้ตัวแปรพิเศษเพื่อพิมพ์ข้อความเพิ่มเติม - และทำให้จำนวนไบต์สั้นลง ดังนั้นฉันจึงใช้ตัวแปรพิเศษ verbose มากขึ้น มันพิมพ์ 8 ตัวอักษรที่มีชื่อตัวแปรตัวละคร 2 ตัว ดังนั้นด้วยการนับไบต์ของ 16 (เบาะกับตัวละครช่องว่างหนึ่งที่จะทำให้มัน 16) มันพิมพ์2 * $]ซึ่ง$]เป็นรุ่นที่พิมพ์ Perl เป็น5.xxxxxxขึ้นอยู่กับรุ่น Perl ของคุณ หากไม่มีอินพุตมันจะพิมพ์สี่ครั้งเท่ากับ8*4หรือเท่ากับ32จำนวนไบต์ของโค้ด

ฉันรัก Perl


ฉันคิดว่านี่จะล้มเหลวในการป้อนข้อมูลที่ว่างเปล่า ตามกฎหากไม่มีการป้อนข้อมูลจะมีค่าเริ่มต้นเป็น 2
Alex A.

@AlexA ประณามฉันคิดถึงสิ่งนั้น ใหม่ถึงรหัสกอล์ฟ แก้ไขคำตอบขาเข้าของฉัน แต่ตอนนี้คำตอบของฉันมีตัวละครเยอะเพราะฉันไม่รู้ว่าจะทำยังไงให้สร้างสรรค์มากขึ้นใน perl :(
Codefun64

2
เฮ้มีเคล็ดลับอีกสองสามข้อที่อาจช่วยคุณที่นี่โดยค่าเริ่มต้นในสคริปต์โปรแกรมpopและshiftทำงาน@ARGV(ในที่subทำงาน@_) ดังนั้นคุณสามารถทำบางสิ่งบางอย่างเช่น$n=pop||2ทำให้โค้ดแรกถูกบล็อกลงและคุณก็จะ;}อยู่ที่ท้าย ซึ่งเกือบจะเป็นเพียงแค่}การบันทึกอีกครั้ง สิ่งที่อาจช่วยให้คุณประหยัดตัวอักษรได้มากขึ้นคือตัวดำเนินการทำซ้ำสตริงxพิจารณาprint 1x20หรือบางอย่างตามสายเหล่านั้น ... :) หวังว่าจะช่วยได้!
Dom Hastings

@ DomHastings คนขอบคุณ! ฉันได้รับทั้งหมด 2 ไบต์เนื่องจากความช่วยเหลือของคุณ :) ขอบคุณมากสำหรับคำแนะนำของคุณ
Codefun64

1
print"n"x(21*pop||42)ฉันคิดว่าคุณสามารถย่อให้เหลือนี้ ทำงานบนบรรทัดคำสั่งด้วยperl -e'print"n"x(21*pop||42)' 3 | wc -c
hmatt1

14

Pyth , 10 9 - 25 = -16

-1 โดย Dennis

**N9?zvz2

พิมพ์ [อินพุต] * 9 อักขระเครื่องหมายคำพูดหรือ 2 * 9 หากอินพุตว่าง

isaacg มีคำตอบสั้นลงที่นี่

Pyth , 1 ไบต์

T

10พิมพ์ มันเป็นตัวแปรในตัวที่กำหนดค่าเริ่มต้นเป็น 10


มันจะมีประโยชน์หาก. x ทำงานกับข้อผิดพลาด มีเหตุผลสำหรับเหตุผลที่มันไม่ได้?
lirtosiast

2
การคาดเดาที่ดีที่สุดของฉันคือการที่QPyth ทำการ Eval อินพุตก่อนที่จะเรียกใช้งานรหัสจริง **N9.xvz2ทำงานได้ตามที่คาดหวัง แต่ไม่สั้นกว่า**N9?zvz2นี้
เดนนิส

2
บรรทัดใหม่ที่ต่อท้ายจะรวมอยู่ในจำนวนไบต์ของเอาต์พุต Tเอาต์พุต10และบรรทัดใหม่ ใช้dเป็นพื้นที่ที่ได้รับการขึ้นบรรทัดใหม่ผนวก
Stan Strum


9

JavaScript ขนาด 4 ไบต์

~$ cat main.js
+1/0
~$ nodejs main.js
Infinity

ฉันคิดว่านี่เป็นวิธีแก้ปัญหา JS ที่สั้นที่สุดที่ไม่มี ES6: P


คุณมี NodeJS รุ่นใด สิ่งนี้ใช้ไม่ได้กับฉัน
เดนนิส

1
สิ่งนี้ยังทำงานบนคอนโซล Firefox
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

1
บรรทัดใหม่ต่อท้ายควรรวมอยู่ในความยาวเอาต์พุต
lirtosiast

Node.js v0.10.40ไม่พิมพ์อะไรเลยเพราะไม่มีคำสั่งพิมพ์ คุณมี Node.js รุ่นอื่นหรือใช้งานได้เฉพาะในเชลล์ที่พิมพ์การประเมินของบรรทัดหรือไม่ (ในกรณีนี้ฉันไม่คิดว่าคำตอบนี้จะถูกต้อง)
Nateowami

4 ไบต์? โปรดทำให้ขนาดนี้ถูกต้องตามจริง
ระบบปฏิบัติการ Star

9

C, 27 25

main(){printf("%50f",0);}

ขอบคุณ @Titus ที่ทำให้ล้มลง 2 ไบต์


และสำหรับโซลูชัน16 ไบต์ที่ไม่ใช่คู่แข่ง ของฉันใน C ไปที่นี่: https://codegolf.stackexchange.com/a/111330/16513

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


1
ฉันไม่คิดว่านับเป็นโปรแกรม C ที่ถูกต้อง แต่ใช้main(){printf("%0.XXf",0);}งานได้
wefwefa3

2
@Zereges ไม่มี, C มี "นัยประกาศ" #includeกฎที่มักจะช่วยให้คุณใช้สิ่งที่ได้โดยไม่ต้องเหมาะสม คอมไพเลอร์จะส่งเสียงเตือนและบางครั้งมันก็จะผิดพลาด แต่โดยปกติจะใช้งานได้
Anatolyg

1
@AlbertRenshaw นอกจากนี้ผมไม่คิดว่ามันจะทำงานที่นี่
Zereges

1
โปรดทราบว่า 27 * 2! = 38.
mbomb007

1
@Zereges รหัสนี้ไม่แสดงพฤติกรรมที่ไม่ได้กำหนด คุณลักษณะ "การประกาศโดยนัย" และ "ประเภทการส่งคืนโดยนัย" ถูกเลิกใช้ในมาตรฐานล่าสุด แต่การใช้งานยังคงได้รับอนุญาตและผลลัพธ์ก็ถูกกำหนดไว้อย่างดี มีสถานการณ์ในการใช้คุณสมบัติดังกล่าวทำให้เกิดพฤติกรรมที่ไม่ได้กำหนด แต่รหัสนี้ไม่เกี่ยวข้องกับสิ่งเหล่านั้น
ปีเตอร์

7

V , 2 ไบต์

ผลลัพธ์นี้

ÿÿÿÿ

ลองออนไลน์!

คำอธิบาย

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

éเป็นคำสั่งที่แทรกอักขระเดียว อย่างไรก็ตามมันทำได้โดยการคว้าไบต์ดิบดังนั้นมันจึงไม่ตีความÿว่าเป็น "สิ้นสุด" มันตีความว่าเป็น "นี่คือตัวละครที่คุณต้องการแทรก" ทำให้มันแทรกอักขระนี้ 4 ครั้งแทนที่จะเป็นหนึ่งตัว


7

ทุบตี, 11 ไบต์

นี่คือการใช้เครื่องมือบีบอัดข้อมูลที่น่าขันอย่างน่ายินดี :) ...

gzip -f<<<2

นี่คือการดัมพ์แบบเลขฐานสิบหกของเอาต์พุต (22 ไบต์) ...

0000000: 1f 8b 08 00 e3 ce 32 59 00 03 33 e2 02 00 90 af  ......2Y..3.....
0000010: 7c 4c 02 00 00 00                                |L....

เอาต์พุตนี้มี 22 ไบต์ของ "Extended ASCII" (เช่น 8 บิตต่อตัวอักษร) ดูเหมือนว่าจะเป็นไปตามคำจำกัดความของ ASCII ของ OP หากคุณอ่านความคิดเห็นในโพสต์คำถาม
Wossname

ในTIOฉันได้ 16 แต่บนเครื่อง linux ของฉันฉันได้ 34
Stan Strum

@ มาตรฐานฉันไม่รู้ว่า TIO คืออะไร แต่ 34 ภายใต้ linux นั้นแปลก คุณอาจใช้นามแฝง gzip เพื่อใช้สวิตช์ต่าง ๆ เป็นปกติหรือไม่
Wossname

ฉันไม่รู้ว่าเป็นอย่างนั้นหรือเปล่า แต่มันก็ดูแปลก ๆ ฉันจะลองใช้ LiveCD บางอันเพื่อดูว่าฉันทำมันสับสนกับหนึ่งในโปรแกรมของฉัน @Wossname หรือไม่
Stan Strum

1
ฉันไม่ใช่คนนั้นและฉันจะไม่ใช้ประโยชน์จาก 129 ตัวแทนรายใหม่ที่ได้รับของฉัน ฉันจะดูว่าฉันสามารถสร้างเวอร์ชันที่ใช้งานได้กับการติดตั้ง Linux หรือไม่
Stan Strum

6

dc, 19 - 25 = -6

2?19*[1n1-d0<l]dslx

รับจำนวน (2 ถูกผลักไปที่สแต็กเป็นการสำรองข้อมูล) และคูณด้วย 19 พิมพ์1(ไม่มีการขึ้นบรรทัดใหม่) และลดจำนวน วนซ้ำในขณะที่ตัวเลขมากกว่า 0


6

C ++, 80 ไบต์

#include<iostream>
int main(){int i=0;while(i<20){std::cout<<&i;i++;}return 0;}

โปรดทราบว่าอักขระขึ้นบรรทัดใหม่คืออักขระสองตัว (หากคุณไม่ต้องการให้เปลี่ยน i <20 เป็น i <= 19 เพื่อกลับไปนับไบต์เดียวกัน)

เอาท์พุทตัวอย่าง (จะเปลี่ยนทุกครั้ง)

0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C

ที่อยู่หน่วยความจำ 8 ตัวอักษรเดียวกัน 20 ครั้ง


คำแนะนำการเล่นกอล์ฟบางอย่าง: forวงหนึ่งสั้นกว่าwhileวงหนึ่งและให้คุณวางสายรัดข้อมือมันถูกกว่าเล็กน้อยในการใช้cstdioและเพียงแค่printfสายและคุณไม่จำเป็นต้องคืนอะไรเลย
ลุค

คุณสามารถตัดวิธีการของคุณเป็น 63 ไบต์: #include<iostream> int main(){for(int i=10;--i;)std::cout<<&i;}แต่มีคำตอบที่สั้นกว่าอยู่แล้วด้วยวิธีที่แตกต่างกันเล็กน้อย
movatica

6

CJam, -9

q_,{i}{;2}?G*'X*

คำอธิบาย

  • q_,

อ่านอินพุตทั้งหมดและดันจากนั้นดันความยาว

  • {i}{;2}?

หากความยาวของอินพุตมากกว่าศูนย์ให้แปลงเป็นจำนวนเต็ม มิฉะนั้นให้ป๊อปอินพุทแล้วกด 2

  • G*

กด 16 (ความยาวของโปรแกรม) จากนั้นคูณด้วย 2 หากไม่มีอินพุตหรือโดยอินพุต

  • 'X*

กด X และคูณด้วยด้านบนสุดของสแต็ก


@ThomasKwa อ๊ะ กำลังอัปเดตในไม่กี่วินาที
The_Basset_Hound

เครื่องหมายจุลภาคไม่จำเป็น แต่คุณสามารถหลีกเลี่ยง "ถ้า" ทั้งหมดถ้าคุณทำตรรกะ "หรือ": q2e|iจะให้หมายเลขที่คุณต้องการ
aditsu

นอกจากนี้คุณสามารถใช้ S แทน 'X ปัญหาเดียวก็คือผลลัพธ์จะไม่ปรากฏจนกว่าคุณจะเลือก (ดีถ้าคุณเรียกใช้แบบออฟไลน์และเปลี่ยนเส้นทางไปยังไฟล์ไม่ใช่ปัญหา)
aditsu

เอ่อ .. ไม่เป็นไรฉันเพิ่งเห็นคำตอบของเดนนิสตอนนี้: p
aditsu

แม้จะมีเงื่อนไขก็ตามคุณก็สามารถย่อให้สั้นลงได้ คุณไม่จำเป็นต้องคำนวณความยาวเนื่องจากสตริงที่ว่างเปล่านั้นปลอมแปลงอยู่แล้ว คุณไม่จำเป็นต้องป๊อปสตริงว่างเปล่าออกจากสแต็กเนื่องจากไม่ได้มีส่วนร่วมกับเอาต์พุต ซึ่งยังช่วยให้คุณสามารถหลีกเลี่ยงการจัดฟันสำหรับสาขาอื่น ฉันมาด้วยนี้ก่อนที่ผมมองไปที่ใด ๆ r_{i}2?SB**ของคำตอบ:
Reto Koradi

6

> <> , 19 + 2 (แฟล็ก -v) - 25 = -4 ไบต์

l?!2f4+*v
-1o;!?::<

ทดสอบที่นี่!

ขอบคุณ Cole และ Sp3000

ตรวจสอบความยาวของสแต็กก่อนถ้าเป็น 0 ใส่ 2 ในสแต็ก คูณด้วย 21 (ความยาวโค้ด) จากนั้นส่งออกการแทน Unicode ของตัวเลขนั้นและลดลงด้วย 1 ลูปจนถึง 0 (คุณจะต้องตรวจสอบเอาต์พุตเพื่อดูอักขระเนื่องจากเบราว์เซอร์จะไม่แสดง)


1
ใช่ขอโทษที่ทำลายคำตอบของคุณ (แต่สั้นกว่าของฉันถ้านั่นทำให้คุณรู้สึกดีขึ้น) แก้ไข: whoops hit ป้อนเร็วเกินไปรายการของคุณในขณะนี้ไม่ถูกต้องตามกฎ "คุณสามารถสันนิษฐานได้ว่า n จะเป็นจำนวนเต็มบวกเสมอหากไม่มีการป้อนข้อมูลใด ๆ จะต้องมีค่าเริ่มต้นเป็น 2" ฉันยังคิดว่ามันอาจพิมพ์อักขระมากเกินไปหนึ่งตัว (จาก 14 เป็น 0 ซึ่งคือ 15 ตัวอักษรตามการนับของฉันไม่ใช่ 14) ถ้าฉันถูกต้องl0=?2f6+*vเป็นบรรทัดแรกและ1-::0=?;o>ที่สองควรทำให้ถูกต้อง
โคล

อืมไม่แน่ใจว่าคุณหมายถึงอะไร ไม่ควรพิมพ์ 0 ในทุกกรณี การใส่ 2 เป็นเอาต์พุตสแต็กเริ่มต้น (แก้ไข: สิ่งที่ฉันไม่สามารถวาง) ซึ่งอย่างน้อยการใช้ตัวนับถ่านนี้คือ 28 ตัวอักษร
torcado

ฉันเข้าใจสิ่งที่คุณกำลังพูดอยู่ตอนนี้ ฉันแปลว่า "โปรแกรมของคุณสามารถเลือกตัวเลข, n, เป็นอินพุท" หมายความว่าถ้าอินพุทเป็น 2 ฉันจะแก้ไขคำตอบขอบคุณ! (i ยังสามารถบันทึกบางอย่างโดยใช้สตริงแทนตัวเลข)
torcado

ยินดีให้ความช่วยเหลือโดยเฉพาะถ้าเป็น> <>
โคล

2
?!มักจะดีกว่า0=?
Sp3000

6

JavaScript (ES5), 68 ไบต์ - 25 โบนัส = 43

alert(Array(1+(+prompt()||2)).join(document.scripts[0].textContent))

(ในกรณีที่เบราว์เซอร์ของคุณไม่อนุญาตให้ตัวอย่างเรียกใช้เพื่อความปลอดภัยลองใช้ซอนี้http://jsfiddle.net/thePivottt/c3v20c9g/ )

สคริปต์นี้ใช้งานได้ในเบราว์เซอร์ที่ตามมาอย่างน้อย DOM3 (พร้อมNode.textContent) และ ECMAScript 5 (หรืออาจเป็นรุ่นที่เก่ากว่า) ฉันพยายามทำให้เป็นไปตามมาตรฐานและเข้ากันได้มากที่สุด นอกจากนี้ยังถือว่าสคริปต์อยู่ในscriptองค์ประกอบแรกของเอกสาร

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

<!DOCTYPE html>
<html>
  <head>
    <title>Minimalist HTML5 page</title>
    <script>alert(Array(1+(+prompt()||2)).join(document.scripts[0].textContent))</script>
  </head>
</html>

สคริปต์นี้ใช้promptและalertเนื่องจากconsole.logไม่ได้เป็นส่วนหนึ่งของมาตรฐานใด ๆ แม้ว่าเบราว์เซอร์สมัยใหม่ส่วนใหญ่จะใช้ หากจำนวนการทำซ้ำที่ส่งผ่านไม่ใช่จำนวนที่ถูกต้องหรือว่างเปล่ามันจะมีค่าเริ่มต้นเป็น 2 หากอินพุตเป็นตัวเลขทศนิยมโปรแกรมจะทำงานล้มเหลวเนื่องจากความยาวของอาร์เรย์ไม่ถูกต้อง

รหัสใช้คุณสมบัติที่น่าสนใจของ JavaScript:

  • Array(1+(+prompt()||2))

    • Array(INT) สร้างอาร์เรย์ของเซลล์ INT

    • +prompt()ใช้อินพุตและแปลงเป็นตัวเลข ถ้าเราผ่านการป้อนข้อมูลเป็นสตริงArrayฟังก์ชั่นก็จะห่อมันในอาร์เรย์องค์ประกอบเดียว

    • +prompt()||2ส่งคืนอินพุตถ้ามันเป็นจริงมิฉะนั้นจะส่งคืน 2

    • รหัสทั้งหมดนี้สร้างอาร์เรย์ขององค์ประกอบที่ว่างเปล่า N โดยที่ N คือหนึ่งมากกว่าจำนวนการทำซ้ำที่ถาม

  • .join(document.scripts[0].textContent)

    • join(STRING)วิธีการของอาร์เรย์สร้างสตริงโดยเชื่อมต่อเซลล์ทั้งหมดโดยวาง STRING ที่จัดเตรียมไว้ระหว่างค่า ในโปรแกรมนี้มีองค์ประกอบที่ว่างเปล่าของ N + 1 อยู่ในอาร์เรย์หรือมีจุด N อยู่ระหว่างจุดทั้งหมด ผลลัพธ์จะเป็นสตริงที่มี N คูณ STRING ที่ให้ไว้

    • document.scripts[o]เป็น<script>องค์ประกอบแรกของเอกสาร

    • textContentของNodeอินสแตนซ์ส่งกลับข้อความทั้งหมดพบภายในพวกเขาและโหนดลูกของพวกเขารวมทั้งสคริปต์


โปรดทราบว่าถ้าคุณใช้ ES6 str.repeatและยังคงเอาท์พุทโค้ดตัวเองมันจะทำให้คะแนนลดลงถึง 26 แต่มันน่าเบื่อเกินไป: P
Domino

เอ่อฉันไม่รู้ว่าที่ 26 มาจากไหนตอนนี้ฉันอายุ 33 ปีฉันน่าจะนอนบ้าง
Domino

โปรดทราบว่าการตั้งค่าเบราว์เซอร์บางอย่างอาจป้องกันไม่ให้ใช้พรอมต์บนตัวอย่างข้อมูล คุณอาจต้องบันทึกเพื่อเรียกใช้
Domino

6

JavaScript ES6, 33 - 25 = 8

(a=2)=>Array(a*33).fill(0).join``

ลองออนไลน์!


ฉันไม่สามารถทำให้โค้ดนี้ทำงานบนคอนโซลได้ ถูกต้องหรือไม่ "Uncaught SyntaxError: โทเค็นที่ไม่คาดคิด =>"
Malavos

@ Malavos คุณต้องใช้เบราว์เซอร์ที่ทำงานได้กับ es6 เช่น Firefox รุ่นล่าสุด Chrome ไม่รองรับการตั้งค่าเริ่มต้น afaik
DankMemes

ฉันใช้ UCBrowser แต่ก็ใช่! มันขึ้นอยู่กับโครเมียมและตุ๊กแกอยู่ดี พยายามทุกคืนได้รับ "0000000000000000000000000000000000000000000000000000000000000000000000" ดี! คุณช่วยอธิบายรหัสของคุณให้ฉันได้ไหม ฉันเป็นมือใหม่
Malavos

2
@ Malavos ฮาร์ดโค้ด33เป็นความยาวของรหัส มันสร้างอาร์เรย์ใหม่ที่มีความยาว33*aโดยที่aพารามิเตอร์อินพุตเริ่มต้นที่ 2 ตาม OP เติมและส่งคืนสตริงที่เข้าร่วม
DankMemes

2
โดยการสร้างอาร์เรย์ของคุณด้วยองค์ประกอบพิเศษหนึ่งรายการคุณสามารถเติมการเข้าร่วมArrary(1+a*<length>)และjoin`0`
Shaun H

5

Julia, 42 ไบต์ - 25 = 17

print("@"^42((r=readline())>""?int(r):2))

นี้อ่านบรรทัดจาก STDIN readline()ใช้ ถ้ามันว่างเปล่านั่นคือไม่มีการป้อนข้อมูลให้แล้วnถูกกำหนดให้เป็นอินพุตที่แปลงเป็นจำนวนเต็ม มิฉะนั้นnคือ 2. จากนั้นเราพิมพ์ 42 n @เพื่อ STDOUT


5

Perl, 18 - 25 = -7

print$=x(<>*9||18)

ตัวแปรพิเศษ$=aka $FORMAT_LINES_PER_PAGEเริ่มต้นชีวิตเป็น60และดังนั้นจึงจำเป็นต้องทำซ้ำครึ่งเท่าของจำนวนไบต์ที่ต้องการ


1
ฉันมีคำตอบที่คล้ายกันมากของ: print$=x9x(pop||2)ดี!
Dom Hastings
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.