เครื่องพิมพ์ Integer อเนกประสงค์


93

เขียนโค้ดที่สามารถใช้งานได้ในภาษาต่าง ๆ อย่างน้อยสามภาษา รหัสจะต้องส่งออกจำนวนเต็ม1ในภาษาหมายเลขหนึ่ง2ในภาษาหมายเลขสอง3ในภาษาหมายเลขสาม ฯลฯ

กฎ:

  • เอาต์พุตจะต้องเป็นจำนวนเต็มเท่านั้น แต่การขึ้นบรรทัดใหม่จะเป็นไปตามปกติ
  • รหัสไม่สามารถรับชนิดใด ๆ
  • เวอร์ชันหลักที่แตกต่างกันของภาษาเดียวกันถือว่าไม่ซ้ำกัน ดังนั้นโค้ดของคุณสามารถเรียกใช้งานได้ใน Python 2 และ Python 3 อย่างไรก็ตาม Python 2.5 และ Python 2.7 ไม่ถือว่าเป็นรหัสเฉพาะ
  • คุณสามารถใช้ภาษาใหม่ได้หากมีบทความ esolang / wiki, ล่ามและเอกสารที่มีอยู่และผู้ใช้อย่างน้อยสองคนบน PPCG ใช้ก่อนที่จะใช้มันในการท้าทายนี้ จะต้องปฏิบัติตามกฎ 4 ข้อเหล่านี้ด้วย

คะแนนการส่งของคุณคือจำนวนไบต์ในรหัสของคุณหารด้วยจำนวนภาษาที่สามารถทำงานในคิวบ์ ดังนั้นโซลูชัน 54 ไบต์ที่สามารถใช้งานได้ใน 3 ภาษาจะมีคะแนน 2:

54 / 3^3 = 2  

คะแนนต่ำกว่าดีกว่า


ลีดเดอร์บอร์ด


6
@muddyfish คุณอาจจะสามารถดึงข้อมูลรุ่นเล็ก ๆ น้อย ๆ ภายในรหัสที่แล้วจะให้คุณแก้ปัญหาฟรีสำหรับทุกคนที่จะ2.7.1 2.7.n(อันที่จริงแล้ว sweerpotato ทำเช่นนั้นกับรุ่นใหญ่)
Martin Ender

14
ฉันคิดว่าบางทีคำตอบที่สั้นที่สุดตามภาษาอาจไม่สมเหตุสมผล ... : P
FryAmTheEggman

3
@Mego ฉันไม่ใช่นั่นคือเหตุผลที่ฉันแสดงความคิดเห็นประชดประชันเกี่ยวกับปัญหาเพื่อให้คนอื่นรู้เกี่ยวกับมัน: P
FryAmTheEggman

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

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

คำตอบ:


90

30 ภาษา 248 ไบต์ 248/30 ^ 3 = 0.009185

#|#?15g,@           kkmNmSaIeoe99+{\#/-;n@0ea
#[9!@>.>.eeaww#-1@*"12" L
#{  
###
#`{
25
print(4^2 +7)/2


"""
Jo is here.
$'main'MoO OOM
 7
>Jo, 30
>X Jo
f::=~27
::=]##}#(prin 29)
print (7/6*24)###;alert 2#-[>+<-----]>-.|#(write(if(= 1/5 .2)26 3))"""

แก้ไข: Beatnikถูกนำออกเนื่องจากการทดสอบเบื้องต้นใน Beatnik อาจเป็นไปไม่ได้

รหัสมีแท็บอยู่ (ซึ่งได้รับการ mangled โดย Stack Exchange) และบรรทัดใหม่ต่อท้ายดังนั้นนี่คือxxd:

00000000: 237c 233f 3135 672c 4020 2020 0920 2020  #|#?15g,@   .   
00000010: 206b 6b6d 4e6d 5361 4965 6f65 3939 2b7b   kkmNmSaIeoe99+{
00000020: 5c23 2f2d 3b6e 4030 6561 0a23 5b39 2140  \#/-;n@0ea.#[9!@
00000030: 3e2e 3e2e 6565 6177 7723 2d31 402a 2231  >.>.eeaww#-1@*"1
00000040: 3222 094c 0a23 7b20 090a 2323 230a 2360  2".L.#{ ..###.#`
00000050: 7b0a 3235 0a70 7269 6e74 2834 5e32 202b  {.25.print(4^2 +
00000060: 3729 2f32 0a0a 0a22 2222 0a4a 6f20 6973  7)/2...""".Jo is
00000070: 2068 6572 652e 0a24 276d 6169 6e27 4d6f   here..$'main'Mo
00000080: 4f20 4f4f 4d0a 2037 0a3e 4a6f 2c20 3330  O OOM. 7.>Jo, 30
00000090: 0a3e 5820 4a6f 0a66 3a3a 3d7e 3237 0a3a  .>X Jo.f::=~27.:
000000a0: 3a3d 5d23 237d 2328 7072 696e 2032 3929  :=]##}#(prin 29)
000000b0: 0a70 7269 6e74 2028 372f 362a 3234 2923  .print (7/6*24)#
000000c0: 2323 3b61 6c65 7274 2032 232d 5b3e 2b3c  ##;alert 2#-[>+<
000000d0: 2d2d 2d2d 2d5d 3e2d 2e7c 2328 7772 6974  -----]>-.|#(writ
000000e0: 6528 6966 283d 2031 2f35 202e 3229 3236  e(if(= 1/5 .2)26
000000f0: 2033 2929 2222 220a                       3))""".

หรือคุณสามารถคัดลอกและวางรหัสจาก"ลองออนไลน์!" ลิงค์

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

เรียกใช้โปรแกรมทั้งหมดด้วย</dev/null 2>/dev/null(เช่นอินพุตว่าง, STDERR ที่ถูกบีบอัด)

คำอธิบายค่อนข้างยาวดังนั้นนี่เป็นบทสรุปของผู้บริหาร:

No.  Lang.              Non-esolang?     2D esolang?      BF/BF-deriv?
--------------------------------------------------------------------------
1    COW                                                       ✓
2    CoffeeScript            ✓
3    Common Lisp             ✓
4    Retina
5    Befunge-93                               ✓
6    Python 2                ✓
7    Rail                                     ✓
8    ETA
9    Prelude
10   Gol><>                                   ✓
11   evil
12   Foo                                                       ✓
13   Ruby                    ✓
14   ><>                                      ✓
15   Brian & Chuck                                             ✓
16   Whitespace
17   3var
18   Axo                                      ✓
19   Labyrinth                                ✓
20   Starry
21   Fission                                  ✓
22   Brainfuck                                                 ✓
23   Julia                   ✓
24   Lily                    ✓
25   GolfScript
26   Chicken Scheme          ✓
27   Thue
28   Perl 6                  ✓
29   Picolisp                ✓
30   TRANSCRIPT

1 วัว

COW เป็นอนุพันธ์ Brainfuck ด้วยคำสั่งเพิ่มเติมซึ่งหนึ่งในนั้นคือเอาท์พุทตัวเลข สิ่งที่ไม่ถูกต้องจะถูกละเว้นดังนั้นโปรแกรมที่ดำเนินการเป็นเพียง

MoO OOM

ซึ่งจะเพิ่มเซลล์เป็น 1 จากนั้นพิมพ์เป็นตัวเลข

2. CoffeeScript (รวมล่าม)

CoffeeScript เห็นว่า:

# comments
###
multiline comment
###;alert 2# comment

ซึ่งเพียงแค่เตือน 2

(ใช่มันน่าจะดีกว่าถ้าภาษาอื่นใช้ช่องนี้ แต่ฉันขี้เกียจเกินกว่าที่จะสับที่จุดนี้: P)

3. Common LISP | ideone

Common Lisp (clisp) เห็นว่า:

#|
multiline comment
|#(write(if(= 1/5 .2)26 3))"""

1/5มีเหตุผลและไม่เท่ากับ0.2ดังนั้น 3 จะถูกพิมพ์ การดำเนินการ"""เป็นข้อผิดพลาดทางไวยากรณ์

โปรดทราบว่าprintดูเหมือนว่าจะส่งออกขึ้นบรรทัดใหม่และพื้นที่ต่อท้ายใน Common LISP อย่างไรก็ตามโชคดีที่writeทำงานได้ทั้ง Common Lisp และ Chicken Scheme

4. Retina | ลองออนไลน์!

ข้อ จำกัด ที่แนะนำ : ทุก ๆ บรรทัดที่สองที่เริ่มต้นจากความต้องการแรกจะต้องเป็น regex ที่ถูกต้อง

ทุกคู่ของบรรทัดจะสร้างสเตจแทนที่โดยแทนที่อินสแตนซ์ของการจับคู่ของ regex ของบรรทัดแรกด้วยบรรทัดที่สอง ตรงกลางเรามีคู่

"""

"""ซึ่งแทนที่สตริงว่างครั้งแรกกับ บรรทัดสุดท้ายที่ว่างเปล่าซึ่งไม่ได้เป็นส่วนหนึ่งของคู่ใด ๆ ถือว่าเป็นขั้นการแข่งขันนับจำนวนการแข่งขันของ regex มีสี่กรณีของสตริงที่ว่างเปล่าอยู่ในคือ"""1"2"3"4

5. Befunge-93 | ล่าม

Befunge เป็นภาษา 2D และคำแนะนำที่เกี่ยวข้องคือ

# # 15g,@

ในบรรทัดแรกและ5ใน25บรรทัด #ข้ามคำสั่งถัดไป15gรับถ่านที่ตำแหน่ง(1, 5)ในรหัส ( 5ใน25บรรทัด),ส่งออกถ่านและ@หยุด

6. Python 2 | ideone

Python เห็น:

# comments
25
print(4^2 +7)/2


"""
multiline string
"""

(4^2+7)/2 = (xor(4,2)+7)/2 = (6+7)/2 = 13/2 = 6ซึ่งได้รับ printเอ็ด

7. รถไฟ | ลองออนไลน์!

Rail เป็นภาษา 2D และการดำเนินการเริ่มต้นจาก$ฟังก์ชั่นหลักมุ่งไปทางตะวันออกเฉียงใต้ ดังนั้นส่วนที่เกี่ยวข้องของรหัสคือ

$'main'
 7
  o
   J

ด้วยoและJมาจากบรรทัดที่ใช้โดย TRANSCRIPT หลังจากส่งออก 7 รถไฟจะชนกับสิ่งที่ไม่รู้จักJคำสั่งที่ซึ่งทำให้โปรแกรมขัดข้อง

8. ETA | ลองออนไลน์!

ข้อ จำกัด แนะนำ:etaoinshตัวอักษรก่อนที่โปรแกรมการทางพิเศษแห่งประเทศไทยไม่ควรจะอยู่ใน

การทางพิเศษแห่งประเทศไทยเพียงรู้จักตัวอักษรetaoinshและตัวพิมพ์ใหญ่ของพวกเขาหมายถึงรหัสเริ่มต้นด้วย

NSaIeoe

n...eผลักดันให้จำนวนฐาน 7 ขึ้นอยู่กับสิ่งที่อยู่ภายในตัวคั่นซึ่งSaIเป็น624หรือ 312 ในทศนิยม oจากนั้นเอาท์พุตเป็นถ่านเห็นได้ชัดว่าหลังจากโมดูโล 256 ทำให้ถ่าน8(รหัสจุด 56)eจากนั้นพยายามหารด้วยสแต็กเปล่าซึ่งล้มเหลว

9. โหมโรง | ลองออนไลน์!

ข้อ จำกัด ที่แนะนำ:ไม่มีมากกว่าหนึ่ง()ในคอลัมน์ใด ๆ ที่()ตรงกับการอ่านคอลัมน์ในแต่ละครั้งไม่มีการวน()ซ้ำไม่สิ้นสุด

ต้องมีตัวแปลภาษา Python NUMERIC_OUTPUT = Trueตั้งค่า

โหมโรงเป็นภาษาที่แต่ละบรรทัดจะดำเนินการแยกกัน ตัวอักษรจำนวนมากถูกประหารชีวิต แต่ส่วนที่สำคัญคือ

9!

บนบรรทัดที่สองซึ่งส่งออก 9. ()ในพรีลูดแสดงถึงลูป แต่ต้องขอบคุณความโดดเด่นของ#s (ซึ่งป็อปจากสแต็ก) ท็อปส์ซูของสแต็คจะเป็น 0 เสมอในขณะที่ลูปถูกตีดังนั้นไม่มีใครเลย กำลังวิ่ง ข้อ จำกัด ของซอร์สโค้ดของ Prelude เกี่ยวกับ()แนะนำการเว้นวรรคภายนอกบางอย่าง

10. Gol> <> | ล่าม

ส่วนนี้ (และ> <>) ทำงานเหมือนคำตอบที่มาร์ติน รหัสที่เกี่ยวข้องคือ

#                                      ;n@0ea

Gol> <> เป็นภาษา 2D และ#สะท้อน IP ทำให้มันเดินทางไปทางซ้าย มันล้อมรอบกด 10, 14 และ 0 เพื่อสแต็ค @จากนั้นหมุนสแต็กโดยนำ 10 ขึ้นไปด้านบนnออกเอาท์พุตและ;หยุดโปรแกรม

11. ชั่วร้าย | ลองออนไลน์!

ส่วนนี้คล้ายกับคำตอบของ Martin

ความชั่วร้ายละเว้นทุกสิ่งยกเว้นตัวอักษรตัวเล็ก ไม่สนใจอักขระเพิ่มอีกสองสามตัวส่วนที่เกี่ยวข้องคือ

aeeeaeeaww

ที่aเพิ่มตัวแปรA, eฟังก์ชั่นการสานความชั่วร้ายซึ่ง shuffles บิตของAและเอาท์พุทw Aด้วยเหตุนี้เราส่งออกครั้งที่สองให้111

แต่สิ่งที่เกี่ยวกับคำแนะนำที่เหลือและโดยเฉพาะอย่างยิ่งที่ wในบรรทัดสุดท้าย สมมติว่าบางครั้งมันง่ายที่สุดที่จะยุ่งกับรหัสและสวดมนต์มันยังคงใช้ได้ในทุกสิ่งที่นี่มันทำอย่างใด ...

12. Foo | ลองออนไลน์!

ฟูเอาท์พุทอะไรก็ได้ระหว่างเครื่องหมายคำพูดคู่ดังนั้นส่วนที่เกี่ยวข้องคือ

"12"

บนบรรทัดที่สอง #-1@แต่เนื่องจากเราต้องคำพูดคู่ต่อมาเราใช้วิธีการคล้ายกับคำตอบที่มาร์ตินที่จะทำให้ข้อผิดพลาดฟูออกคือก่อนหน้านี้ มันไม่ชัดเจนว่าทำไมมันถึงใช้งานได้ในภาษาที่ทหารใช้ในการเผชิญหน้ากับกองที่ว่างเปล่าและการหารโดยไม่มีข้อผิดพลาด แต่ฉันดีใจที่มัน

13. ทับทิม | ideone

เช่นเดียวกับ Python Ruby เห็น:

# comments
25
print(4^2 +7)/2


"""
multiline string
"""

แต่ก็เป็นที่น่าสังเกตว่าหลายสตริงเป็นจริงสามสายแยกต่างหาก ( "", "...", "") ตัดแบ่งกัน บรรทัดที่พิมพ์ออก(4^2+7) = xor(4,2)+7 = 6+7 = 13ก่อนที่จะพยายามแยกข้อผิดพลาดnilด้วย 2

14. > <> | ลองออนไลน์!

ส่วนนี้เหมือนกับ Gol> <> ส่วนยกเว้น@จะเพิ่ม 14 ขึ้นไปด้านบนแทนซึ่งจะได้รับผลลัพธ์

15. Brian & Chuck | ลองออนไลน์!

Brian & Chuck เป็นอนุพันธ์ BF ที่มีสองเทปโดยที่ตัวชี้คำแนะนำของเทปหนึ่งเป็นตัวชี้หน่วยความจำของเทปอีกตัวหนึ่ง ในกรณีที่ไม่มี```ซอร์สโค้ดสองบรรทัดแรกจะถูกใช้เพื่อเริ่มต้นเทป

ตัวอักษรที่เกี่ยวข้องในสองบรรทัดแรกคือ:

   ?15
#     >.>.

?ในเทปของไบรอันผ่านการควบคุมไปโยนในเซลล์ที่ถูกชี้ไป (คน#) จะไม่ใช่ศูนย์ ชัคก็ดำเนินการ>.>.เอาต์พุตทั้งสองตัวอักษรหลังจากเครื่องหมายคำถาม

16. ช่องว่าง | ล่าม

ใช้STLสำหรับพื้นที่แท็บและบรรทัดตามลำดับการเริ่มต้นของโปรแกรมคือ:

SSSTSSSSL
TL
STL
L
L

บรรทัดแรกพุช 16 ( +10000ฐาน 2) ซึ่งก่อนหน้านี้TLSTพิมพ์ออกมาเป็นตัวเลข ขึ้นบรรทัดใหม่อีกสามบรรทัดจะหยุดโปรแกรม

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

17. 3var | ลองออนไลน์!

ในบรรทัดแรกนั้นมีคำสั่งที่ถูกประหาร แต่ก็มีคำสั่งที่เกี่ยวข้อง

kkmmao#/

เนื่องจากข้อ จำกัด ของ ETA เราใช้kเพื่อลดตัวแปร B แทนaการเพิ่มขึ้น kkdecrements B เพื่อ -2 และmmสี่เหลี่ยม B สองครั้งเพื่อ 16 ซึ่งจะเพิ่มขึ้นถึง 17 aด้วย oนี้จะออกมาแล้วด้วย

#จะถูกใช้เพื่อรีเซ็ต B เป็น 0 และ/ทำให้โปรแกรมเกิดข้อผิดพลาดผ่านการหารด้วย 0

18. Axo | ลองออนไลน์!

ข้อ จำกัด ที่แนะนำ:ไม่มีคำแนะนำก่อนโปรแกรม Axo ที่เปลี่ยนทิศทางของ IP

อีกครั้งคำสั่งที่ไม่เสียค่าใช้จ่ายจะถูกดำเนินการในบรรทัดแรก แต่เป็นคำสั่งที่เกี่ยวข้อง

# # 15 ,@            9 9  + {   \

Axo เป็นภาษา 2D เช่น Befunge และ#ในทำนองเดียวกันสะพานที่ข้ามคำสั่งถัดไป แต่เฉพาะในกรณีที่ส่วนบนสุดของสแต็คเป็นศูนย์ 15,ผลักดันไปยังกอง @แต่กองอบด้วย 99+จากนั้นกด 18 {เอาต์พุตและ\หยุดการทำงาน

19. เขาวงกต | ลองออนไลน์!

เขาวงกตเป็นภาษา 2D อีกภาษาหนึ่งและมีคำแนะนำในการดำเนินการ

#|#
 [9!@

#ดันความยาวของสแต็กซึ่งเป็น 0 ในครั้งแรก |เป็นบิตหรือไม่เปลี่ยนแปลงอะไรเลยตั้งแต่สแต็คเพิ่งมี 0 ณ จุดนี้และอันที่สอง#จะผลัก 1 เนื่องจากศูนย์เดียว เราเลี้ยวขวาเนื่องจาก 1, 9แปลงนี้ 1 1*10+9 = 19, !พิมพ์มันและ@หยุดพัก

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

20. Starry | ลองออนไลน์!

ข้อ จำกัด ที่แนะนำ:+ s ทั้งหมดต้องมีพื้นที่ว่างก่อนหน้าอย่างน้อยหนึ่งรายการ

หากเราตัดอักขระที่ไม่รู้จักออกส่วนที่เกี่ยวข้องของรหัสคือ

,       +.. +

,เป็นอินพุต แต่เนื่องจากเราไปป์จากที่/dev/nullนั่นไม่มีให้กด 0 ไปยังสแต็ก A ที่+มีn >= 5ช่องว่างก่อนหน้าจะถูกดันn-5ดังนั้นคำสั่งถัดไปจะผลัก 2. ..จากนั้นเอาต์พุตสองหลักเหล่านี้ในลำดับย้อนกลับ

ต่อไปเรามี +ช่องว่างที่นำหน้าซึ่งซ้ำกัน อย่างไรก็ตามสแต็กต์ว่างเปล่าดังนั้นเราจึงผิดพลาด

21. ฟิชชัน | ลองออนไลน์!

ส่วนที่เกี่ยวข้องเท่านั้นสำหรับฟิชชันคือ

*"12"L

Lวางไข่ของอะตอมที่เคลื่อนที่ไปทางซ้าย"21"พิมพ์ 21 และ*หยุดพัก

22. Brainfuck | ลองออนไลน์!

ข้อ จำกัด ที่นำมาใช้:ไม่.ก่อนหน้าแรก[

สิ่งนี้ต้องการล่ามที่ให้ 0 ใน EOF และมีเซลล์ 8 บิต รหัสที่เกี่ยวข้องคือ

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

inital -คือการชดเชย+และครั้งแรก[...]ไม่ได้ดำเนินการตั้งแต่เซลล์เป็น 0 ต่อไปนี้-[>+<-----]>-ตั้งค่าเซลล์เพื่อรหัสถ่าน2และ..ส่งออกมันสองครั้ง

23. Julia | ลองออนไลน์!

จูเลียเห็น:

# comments
25
print(4^2 +7)/2

สิ่งที่พิมพ์ออกมาคือ4^2+7 = pow(4,2)+7 = 16+7 = 23ข้อผิดพลาดของโปรแกรมที่พยายามหารnothingด้วย 2 โปรดทราบว่า Julia ดูเหมือนจะไม่สนใจความจริงที่ว่ารหัสที่เหลือจะทำให้เกิดข้อผิดพลาดทางไวยากรณ์

24. ลิลลี่ | ล่าม

ลิลลี่เห็น:

# comment
#[
multiline comment
]## comment
print (7/6*24)# comment

7/6*24 = 1*24 = 24 ถูกพิมพ์

25. GolfScript | ลองออนไลน์!

GolfScript เห็น:

# comments
25
print(

GolfScript เป็นสแต็คที่ใช้จึง 25 printจะถูกผลักไปกองโผล่แล้วและพิมพ์ด้วย (จากนั้นพยายามลดค่าสตริงว่างโดยนัยบนสแต็กซึ่งล้มเหลวและเกิดข้อผิดพลาดกับโปรแกรม

26. โครงการไก่ | ideone

Chicken Scheme มี#| ... |#ไวยากรณ์ความคิดเห็นหลายบรรทัดเหมือนกับ Common LISP อย่างไรก็ตามใน

(write(if(= 1/5 .2)26 3))

1/5เป็นลอยซึ่งเป็นเท่ากับ0.2ดังนั้น 26 จะออกมาแทน

27. Thue | ลองออนไลน์!

เนื่องจากเป็นภาษาที่ใช้การเขียนสตริงใหม่ ส่วนแรกที่เกี่ยวข้องคือ

f::=~27
::=

ซึ่งได้กำหนดทดแทนแล้วหมายถึงการสิ้นสุดของการแทนด้วยf -> 27 ::=โลนfในifนั้นจะถูกแทนที่ด้วย27ซึ่งเป็นเอาต์พุต

28. Perl 6 | ideone

Perl 6 มีไวยากรณ์ความคิดเห็นใหม่#`(some bracket)ซึ่งก็คือความคิดเห็นหลายบรรทัดไปทางวงเล็บที่ตรงกัน ดังนั้น Perl 6 เห็น:

# comments
#`{
multiline comment
}# comment
print (7/6*24)# comment

7/6*24 = 28ซึ่งพิมพ์

29. Picolisp | ideone

Picolisp เห็น:

# comment
#{
multiline comment
}#(prin 29)

ซึ่งพิมพ์ 29. บรรทัดหลังจากนั้นทำให้เกิดข้อผิดพลาดทางไวยากรณ์

30. TRANSCRIPT | ลองออนไลน์!

TRANSCRIPT เป็น esolang ใจความแบบอย่างหลังจากการผจญภัยข้อความ บรรทัดที่ไม่รู้จักจะถูกละเว้น (ซึ่งช่วยให้คุณสามารถเพิ่มข้อความ / เรื่องราวพิเศษในหมู่คำแนะนำรหัสจริง) ดังนั้นบรรทัดที่เกี่ยวข้องคือ:

Jo is here.
>Jo, 30
>X Jo

บรรทัดแรกประกาศตัวแปรสตริงJoโดยใช้ชื่อสองตัวอักษรเนื่องจากชื่อตัวอักษรหนึ่งตัวดูเหมือนจะล้มเหลว บรรทัดที่สองตั้งค่าสตริงนี้"30"เป็นซึ่งถูกส่งออกโดยX("ตรวจสอบ") ในบรรทัดที่สาม


12
Daaaaaaaaaang ...
AdmBorkBork

9
ฉันสงสัยว่านี่อาจเป็นคะแนนที่ไม่ใช่ศูนย์ต่ำที่สุดสำหรับคำถามใด ๆ ที่นี่
Morgan Thrapp

นี่คือ ... เหลือเชื่อ ฉันอยู่ในความกลัว
Nic Hartley

2
* เป็นบวกมีคะแนนลบเล็กน้อยสำหรับคำตอบสั้น ๆ พร้อมโบนัส
CalculatorFeline

เคล็ดลับระดับมืออาชีพจากอนาคต: แท็บของคุณจะไม่สับสนหากคุณล้อมรอบโค้ดของคุณในpreแท็กแทนที่จะใช้บล็อคโค้ดสไตล์ Markdown
จา

148

15 ภาษา, 68 66 65 ไบต์ / 15 ^ 3 = 0.019 ...

Retina , Starry ,โหมโรง ,การทางพิเศษแห่งประเทศไทย , Axo ,เขาวงกต , Hexagony ,ฟู ,ไบรอันและชัค , Gol> <> ,ชั่วร้าย ,ช่องว่าง ,เซลล์ , > <>และGolfScript

หลังจากเขียนใหม่ครั้งใหญ่ฉันจัดการให้เหมาะกับภาษาอื่นอีกสี่ภาษา รหัสมีแท็บไม่กี่แท็บสำหรับช่องว่าง เนื่องจาก Exchange Exchange แปลงเป็นช่องว่างฉันจึงแสดงแทนด้วย\tด้านล่าง:

#I5aeeNTH{\?      \t\t + +3;n@"8"ea9
15}7'`--~!@<"31"LSOe.\t
 \teaww`

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

พิมพ์ Retina 1

ลองออนไลน์

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

บรรทัดที่สามเป็นของตัวเองดังนั้นจึงถือว่าเป็นสเตจการแข่งขันซึ่งตามค่าเริ่มต้นจะนับจำนวนการแข่งขัน อย่างไรก็ตาม`ตัวคั่นเป็นตัวบอก Retina ว่าส่วนที่อยู่ข้างหน้ามันเป็นสตริงการกำหนดค่า (มันไม่ได้เกิดขึ้นเมื่อรู้ว่ามีตัวเลือกใด ๆ ที่ให้ไว้) และส่วนหลังจากนั้นคือ regex ดังนั้น regex จึงว่างเปล่าและ Retina ค้นหาคู่ที่ตรงกันอย่างแน่นอน

พิมพ์เต็มไปด้วยดวงดาว 2

ลองออนไลน์

Starry +*,'`.ละเว้นทุกอย่างยกเว้นช่องว่างและ แต่ละคำสั่งเป็นหนึ่งในตัวละครเหล่านั้นร่วมกับช่องว่างตั้งแต่ตัวอักษรสุดท้าย ดังนั้นขอลบรหัสภายนอกทั้งหมด:

       + +'`. `

เซเว่นช่องว่างตามมาด้วยการผลักดัน+ 2เว้นวรรคหนึ่งช่องตามด้วย+ซ้ำ 'เป็นการกระโดดตามเงื่อนไข มันปรากฏด้านบนของสแต็คซึ่งเป็น truthy (บวก) จึงกระโดดไปป้ายที่สอดคล้องกัน (ที่ฉลากจะมีการแสดง`และ "กัน" หมายถึง "มีหมายเลขเดียวกันของช่องว่างนำ") `ซึ่งเป็นครั้งแรก .โดยไม่ต้องเว้นวรรคด้านหน้าแล้วพิมพ์ที่ด้านบนของสแต็กเป็นตัวเลข

โหมโรงพิมพ์ 3

ลองออนไลน์

นี่ถือว่า Python interpreter ซึ่งใช้เอาต์พุตตัวเลข ลองลบ no-ops ทั้งหมด:

# 5        ?         + +3    8   9
15 7  -- !   31

เสียงแรกทำสิ่งต่างๆมากมาย แต่ไม่มีอะไรสำคัญเพราะไม่มี!การพิมพ์ผลลัพธ์ใด ๆ เสียงที่สองดัน1แล้วแล้ว5 7เราจะใช้ความแตกต่างของสองคนสุดท้ายที่จะได้รับ-2แล้วลบว่าจากที่จะได้รับ1 พิมพ์มัน เสียงที่สามไม่มีเสียงประกอบ3!

ETA พิมพ์ 4

ลองออนไลน์

การทางพิเศษแห่งประเทศไทยละเว้นทุกอย่างยกเว้นตัวละครETAOINSH(ในกรณีใด ๆ ) ดังนั้นรหัสตามที่ ETA เห็นคือ:

IaeeNTHneaSOeea

Iพยายามที่จะอ่านเข้า -1แต่ไม่สามารถดังนั้นจึงผลักดันให้ aผลักดันให้จำนวนบรรทัดปัจจุบันบวก 1 2ซึ่งเป็น eคือdivmodซึ่งแทนที่ด้วย0และ1(หรือ-1ฉันไม่รู้จริงๆ แต่มันไม่สำคัญ) ถัดไปแทนที่ทั้งสองของพวกเขาด้วยe0

ตอนนี้เป็นส่วนที่น่าสนใจ NTHneเป็นตัวเลขฐาน 7 Nและเป็นเพียงตัวคั่นและตัวเลขสามหลักเป็นe THNนั่นคือ54(ที่Tเป็นหลัก1, Hเป็น0และnเป็น5) aผลักดัน2อีกครั้ง Sลบออกทำให้เกิดผลลัพธ์52และOส่งออกเป็นอักขระ ( 4) ตอนนี้eพยายาม divmod อีกครั้ง แต่สแต็คมีสองศูนย์ดังนั้นโปรแกรมจะยุติข้อผิดพลาด (แต่ไม่ก่อให้เกิดมลพิษ STDOUT ในขณะที่ทำเช่นนั้น)

พิมพ์ Axo 5

ลองออนไลน์

ภาษานี้ค่อนข้างรับผิดชอบในการเขียนใหม่เพียงลำพัง ฉันไม่ได้}อยู่ในบรรทัดแรกเพราะมันจะปิดกั้นการป้อนข้อมูลใน Axo (ดูประวัติการแก้ไขสำหรับสิ่งที่ฉันพูดถึง) สำหรับ Axo รหัสนี้มีความเกี่ยวข้องเท่านั้น:

#I5aeeNTH{\

โชคดีที่ Axo มีปริยาย0ที่ด้านล่างของสแต็กเพราะ#จะปรากฏที่ด้านบนสุดของสแต็ก ตัวอักษรล้วนไม่มีตัวเลือก จากนั้น5ดัน a 5, {พิมพ์, \ยกเลิกโปรแกรม ค่อนข้างง่ายจริงๆ

เขาวงกตพิมพ์ 6

ลองออนไลน์

ฉันตัดทอนโค้ดนิดหน่อยเพราะไม่ถึงครึ่งขวาและฉันก็ใช้tแทน\tดังนั้นคอลัมน์จึงเรียงกันอย่างถูกต้อง:

#I5aeeNTH{\
15}7'`--~!@
 teaww`

ตอนนี้ตัวอักษรช่องว่างและแท็บเป็นผนังใน Labyrinth ดังนั้นรหัสที่เข้าถึงได้จะมีลักษณะดังนี้:

# 5      {\
15}7'`--~!@
      `

ตัวชี้คำสั่งจะตามเส้นทางนั้นโดยอัตโนมัติ #ผลักดันความลึกของกองหลัก (คน0) และเปลี่ยนมันเป็น15 ย้ายออกไปยังสแต็คเสริมและเราจะไม่ใช้มันอีกต่อไป สิ่งอำนวยความสะดวกที่ทำให้ด้านบนของสแต็คเป็นศูนย์เพื่อที่ IP ไม่เลี้ยวซ้ายเข้า เปลี่ยนค่าศูนย์ให้เป็น a , คือ no-op เป็นผลทางลบเอกเพื่อให้เราได้รับ ตอนนี้หักลบจากนัยใต้ทำให้มัน คราวนี้ IP จะเลี้ยวขวาไปที่ซึ่งเป็นการปฏิเสธโดยไม่สมัครใจดังนั้นเราจึงกลับมาอีกครั้ง IP พบจุดจบของจุดจบ การทำเช่นเดียวกับเมื่อก่อนดังนั้นเราจึงได้รับ15}577'`-7--707`7-7อีกที. เนื่องจากด้านบนสุดของสแต็คตอนนี้เป็นบวก IP จะเลี้ยวขวา มีอีกอย่าง-ที่ให้-7อีกครั้ง จากนั้น~จะไม่ bitwise ซึ่งให้6และ!พิมพ์ นั่นเป็นเพียงช่วงเวลาที่เหมาะสมที่จะทำเช่นนั้นเพราะตอนนี้สแต็คเป็นที่ว่างเปล่าอีกครั้งเช่นว่า IP จะไม่เลี้ยวซ้ายเข้า{แต่ยังคงตรงไปข้างหน้าเข้ามา@ซึ่งสิ้นสุดโปรแกรม

พิมพ์ Hexagony 7

ลองออนไลน์

โค้ดที่กางออกมีลักษณะดังนี้:

     # I 5 a e
    e N T H { \
   ? + + 3 ; n @
  " 8 " e a 9 1 5
 } 7 ' - - ~ ! @ <
  " 3 1 " L S O e
   . e a w w . .
    . . . . . .
     . . . . .

โดยปกติแล้วจะเป็นโปรแกรม Hexagony ที่น่ากลัว แต่ตัวละครที่ใช้งานจริงมีจำนวนไม่มาก ในความเป็นจริงพวกเขาสวยมากเหมือนกับที่ใช้โดยเขาวงกตและฉันคิดว่าวิธีที่ฉันแยกความแตกต่างระหว่าง5และ6ค่อนข้างดี :)

โดยทั่วไปแถวบนสามารถละเว้นได้ #โดยปกติแล้วจะเปลี่ยนเป็น IP อื่น แต่ขอบหน่วยความจำปัจจุบันเป็น0เช่นนั้นจึงไม่ ตัวอักษรเพิ่งตั้งค่าหน่วยความจำคงที่ แต่เราจะไม่ใช้มัน หลังจากสิ้นสุดแถวแรกโฟลว์ควบคุมยังคงดำเนินต่อไปในแถวกลาง (เริ่มจาก}ไปทางขวา) }ย้ายไปที่ขอบหน่วยความจำอีก 7ตั้งค่าขอบ7นั้นเป็น 'ย้ายกลับไปที่ที่เรามา -ลบขอบหน่วยความจำที่เราเคยตั้งเพียงเพื่อ7จากขอบที่ไม่ได้ใช้หน่วยความจำ ( 0) -7ดังนั้นเราได้รับ ถัดไป-ทำสิ่งเดียวกันอีกครั้งดังนั้นจึงไม่มีการ op จนถึงตอนนี้ค่อนข้างคล้ายกับ Labyrinth (นอกเหนือจากเลย์เอาต์ของหน่วยความจำ) แต่ตอนนี้~ไม่ใช่ bitwise ไม่ใช่ แต่เป็นการปฏิเสธใน Hexagony ดังนั้นนี้จะช่วยให้แทน7 เช่นเดียวกับใน Labyrinth จะพิมพ์ค่าและยกเลิกโปรแกรม6!@

ฟูพิมพ์ 8

ลองออนไลน์

อย่างที่เราทุกคนทราบกันดีว่าเนื่องจากการพิมพ์แบบทดสอบภาษาโปรแกรม Programmingนั้นค่อนข้างน่าสนใจใน Foo แม้ว่ารหัสส่วนใหญ่จะเป็นตัวอักษรที่สับสน ไม่มีตัวอักษรที่ส่งผลกระทบต่อการส่งออกยกเว้นที่พิมพ์"8" 8เอาละมี"31"ต่อมา แต่ Foo ยุติด้วยข้อผิดพลาดในตอนท้ายของบรรทัดแรก ฉันไม่แน่ใจว่าทำไมถึงเกิดขึ้น แต่ต้องมี3(หรือตัวเลขอื่น ๆ ) ที่แถวบนสุดซึ่งไม่ได้ใช้ที่อื่น

พิมพ์ Brian & Chuck 9

ลองออนไลน์

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

         { ?         + +         9
  }   --   <        .

เช่นเดียวกับการเตือนความจำแต่ละบรรทัดจะเหมือน Brainfuck ซึ่งเทปคือซอร์สโค้ดของโปรแกรมอื่น การควบคุมการไหลเริ่มต้นที่บรรทัดแรก (เรียกว่า Brian)

{ย้ายหัวเทปทุกทางไปทางซ้าย (ที่มันเป็นอยู่แล้ว) และ?การควบคุมการไหลมือไปโยน (บรรทัดที่สอง) ที่นั่น}เลื่อนหัวเทปไปทางขวาจนกระทั่งพบเซลล์ศูนย์ 9ว่าจะไม่เกิดขึ้นจนกว่าจะสิ้นสุดของโปรแกรมเพื่อให้หัวเทปลงท้ายเซลล์หนึ่งหลังจากที่ -ลดลงเซลล์นั้น แต่ไม่เกี่ยวข้อง <ย้ายหัวเทปไปที่9และ.พิมพ์ Chuck ไม่มีโปรแกรมและสิ้นสุด

Gol> <> งานพิมพ์ 10

ทดสอบที่นี่

#เป็นมิเรอร์ดังนั้น IP จะข้ามไปที่ท้ายบรรทัดแรกทันที (และไปทางซ้าย) 9สามารถละเลย aผลักดัน10, eผลักดัน14, "8"ผลักดันให้รหัสอักขระของ8, @หมุนด้านบนสามองค์ประกอบสแต็ค (ดึงขึ้น10) เช่นที่nพิมพ์10และ;สิ้นสุดโปรแกรม

ขอบคุณ Sp3000 ที่แนะนำให้ใช้@แทน!(ซึ่งบันทึกเป็นไบต์)

พิมพ์ชั่ว 11

ขอบคุณ Sp3000 ที่ส่งรายการคำสั่งที่บังคับให้ฉันสร้างตัวเลขหลักเดียว

ลองออนไลน์

ความชั่วร้ายละเว้นทุกสิ่งยกเว้นตัวอักษรตัวเล็กดังนั้นรหัสจึงมีลักษณะดังนี้:

aeeneaeeaww

นอกจากนี้ยังnส่งผลกระทบต่อบางรัฐที่เราไม่สนใจดังนั้นเราจะเพิกเฉยเช่นกัน ตอนนี้aเพิ่มการลงทะเบียน (ซึ่งเริ่มต้นที่0) และeเป็นการดำเนินการ "สาน" มายากลที่ชั่วร้ายซึ่งอนุญาตให้บิตในวิธีเฉพาะ aeeeaeeaที่เกิดขึ้นกับผลผลิตค่าซึ่งเป็นรหัสอักขระของ49 พิมพ์สองครั้ง1ww

พิมพ์ช่องว่าง 12

ลองออนไลน์

ตกลงเรารู้ว่าช่องว่างเท่านั้นอ่านช่องว่างแท็บและ linefeeds ดังนั้นให้เขียนโค้ดตามที่เห็นโดย Whitespace ด้วยSTL:

SSSSSSTTSSLTLST

นั่นเป็นสองคำสั่ง:

SSSSSSTTSSL
TLST

12คนแรกที่ผลักดันให้จำนวน โดยเฉพาะSSเริ่มตัวเลขที่แท้จริง ถัดไปSคือบิตสัญญาณ (บวก) จากนั้นทุกอย่างจนถึงLเป็นตัวแทนเลขฐานสอง มีศูนย์นำหน้ามากมายที่เราต้องการสำหรับ Starry แต่มันไม่ส่งผลกระทบต่อจำนวน จากนั้นTTSSs อยู่12ในรูปของไบนารี สนุกจริง: ถ้าผมเพิ่มภาษาที่ 16 ผมจะสามารถประหยัดไบต์ที่นี่เพราะ Starry สามารถใช้สี่Sใน represtation 16ไบนารีของ ฉันสงสัยว่าฉันจะ ...

TLSTเพียงแค่พิมพ์ด้านบนของสแต็คเป็นตัวเลข ( TLทำเครื่องหมายคำสั่งเป็นคำสั่ง I / O และSTกำลังพิมพ์ตัวเลข)

ฟิชชันพิมพ์ 13

ลองออนไลน์

การแยกส่วนเห็นเพียงส่วนหนึ่งของรหัสนี้:

           <"31"L

Lเริ่มการไหลของการควบคุมด้วยอะตอมซ้าย "สลับโหมดการพิมพ์เพื่อให้เพียงแค่พิมพ์31 13จากนั้นอะตอมจะถูกจับในลิ่มของโปรแกรม<ซึ่งจะยุติโปรแกรม

> <> งานพิมพ์ 14

ทดสอบที่นี่

การแยกแยะระหว่าง> <> และ Gol> <> นั้นไม่ง่ายอย่างที่คิดเพราะ Gol> <> ทำสิ่งเดียวกับ> <> สำหรับคำสั่งที่มีอยู่ทั้งสองและคำสั่งที่มีอยู่ใน Gol> < > สาเหตุ> <> ผิดพลาด แต่@หมุนรอบวิธีอื่น ๆ ใน> <> ดังกล่าวว่าจะผลักดันให้ลง7แทนการดึงขึ้น10และจากนั้นได้รับการพิมพ์แทน1410

GolfScript พิมพ์ 15

ลองออนไลน์

อันนี้ง่ายที่สุด: #แสดงความคิดเห็นในบรรทัดแรก จากนั้น15ผลักดันตัวเองและ}เป็น "ความคิดเห็นสุดยอด" ซึ่งจะไม่สนใจส่วนที่เหลือทั้งหมดของโปรแกรม ดังนั้น15จะพิมพ์ออกมาในตอนท้ายของโปรแกรม


34
มันน่าประทับใจจริงๆ!
sweerpotato

1
@ YassinHajaj ขอบคุณแก้ไขแล้ว
Martin Ender

2
Niiice ยอดเยี่ยมสำหรับ 15 ภาษา!
ev3commander

1
@SnoringFrog ดีแล้วคุณไป
Martin Ender

1
@Eumel ขอบคุณ แต่ความโปรดปรานนั้นมีไว้สำหรับภาษา "ปกติ" ที่ระบุไว้ในคำอธิบายดังนั้นค่าหัวจึงควรตอบเช่นนี้ (เช่นทางออกที่ดีมากของ Sp3000) ฉันคิดว่าฉันได้รับตัวแทนเพียงพอจากนี้อยู่ดี ;)
Martin Ender

42

Python 1.x, 2.x และ 3.x, 32 bytes / 3 ^ 3 = 1.1851 ...

import sys
print(sys.version[0])

พิมพ์หมายเลขแรกของเวอร์ชันซึ่งอยู่1ใน Python 1.x 2ใน Python 2.x และ3Python 3.x

ตามเวลาที่เราได้รับ Python 9.x คะแนนของฉันจะยิ่งใหญ่0.04389!

: ~)!


10
จากการแชท: ใช่นี่คือทั้งถูกและถูกต้อง =) นี่เป็นส่วนหนึ่งของเหตุผลว่าทำไมรุ่นหลักเท่านั้นจึงมีความโดดเด่นพอ ฉันไม่ทราบว่ามีรุ่น Python กี่รุ่น แต่คุณอาจได้รับคะแนนของคุณค่อนข้างต่ำโดยใช้บางสิ่งบางอย่าง ... นี่เป็นหนึ่งในไม่กี่โซลูชันที่ฉันเข้าใจว่าเกิดอะไรขึ้นจริงดังนั้น +1 จากฉัน - )
Stewie Griffin

6
ใน python 10.x (เมื่อมีอยู่) จะไม่พิมพ์หรือไม่1เพราะเป็นอักขระตัวแรกของสตริง "10.whething"
ev3commander

1
@ ev3 คำสั่งอย่างไรก็ตามการส่งนี้ไม่ได้ระบุไว้ในการผลิตผลลัพธ์ที่ถูกต้องใน python10
Tyzoid

แก้ไขแล้ว! การทำงานกับเวอร์ชันที่พิสูจน์อนาคต แต่ Python 1.x ไม่เป็นมิตรต่อผู้ใช้เหมือนกับคนอื่น ๆ : ~)!
sweerpotato

1
สิ่งที่ฉันต้องทำคือสร้างภาษาที่มีสามเวอร์ชันหลัก ในสามเวอร์ชันหลักนั้นเมื่อเรียกใช้ไฟล์ว่างจะส่งคืนหมายเลขเวอร์ชันหลัก ผลลัพธ์จะเป็น 0/3 ^ 3 = 0 สมบูรณ์
Braden Steffaniak

32

3 ภาษา 2 ไบต์ / 27 = 0.074

1P

อย่างน้อยก็ครึ่งหนึ่งของการส่งอย่างน้อย: P

1. GolfScript

GolfScript ละเว้นP, การแสดงผลเพียงแค่ 1. ลองออนไลน์

2. พาร์

Pคือ 1P = 2^1 = 22-to-พลังงานของดังนั้น ลองมันออนไลน์

3. อย่างจริงจัง

Pให้ไพรม์ลำดับที่ n มีค่าดัชนีเป็นศูนย์ เราได้ 3 เนื่องจากมันเป็นอันดับสอง ลองมันออนไลน์


หมายเหตุ

เป้าหมายของฉันคือการหาคำตอบที่ถูกต้องใน 1 ไบต์ ความพยายามครั้งแรกของฉันคือใช้\x12งานได้ในBubblegumและgs2แต่ความท้าทายต้องใช้อย่างน้อยสามภาษา \x13จะใช้งานได้หากมีภาษาที่ให้ผลลัพธ์ 1

เมื่อตอบถึง 1 ไบต์ฉันย้ายไปสองไบต์ 3uเป็นสายที่ใกล้ชิดซึ่งให้ผลลัพธ์ 1 ในJaptaptor 3 ใน GolfScript และ 4 ใน Seriously แต่มันก็ยากที่จะหาภาษาที่เอาท์พุท 2 เพื่อเติมเต็มช่องว่าง

ทั้งหมดนี้ทำให้ฉันยาวเกินไป: /


20

6 ภาษา - 44 ไบต์ / 6 ^ 3 = 0.204 ...

ขอบคุณ SnoringFrog สำหรับการบันทึก 10 ไบต์!

ทำงานใน:

  • Befunge
  • Pyth
  • brainfuck
  • Hexagony
  • ช่องว่าง
  • AniRad v0.2

2# "1",@"-[----->+<]>.*@@@!4<SSTST
T
ST
 >6=

หมายเหตุ: ก่อนที่จะลองออนไลน์ให้แน่ใจว่าได้แทนที่ S ด้วยช่องว่างและ T ด้วยแท็บหรือแปลง hexdump ต่อไปนี้เป็น ASCII

32 23 20 22 31 22 2c 40 22 2d 5b 2d 2d 2d 2d 2d 3e 2b 3c 5d 3e 2e 2a 40 40 40 21 34 3c 20 20 09 20 09 0d 0a 09 0d 0a 20 09 0d 0a 20 3e 36 3d

ฉันจะลองใช้ภาษาการเขียนโปรแกรมเพิ่มเติม :)

Befunge (ภาพพิมพ์1):

ลองออนไลน์

2# "1",@"-[----->+<]>.*@@@!4<
2                             # This puts 2 onto the stack
 #                            # Skips the next op (the space)
   "1"                        # Sets the ASCII value of 1 onto the stack
      ,                       # Pop the last item (1)
       @                      # Terminate program

Pyth (ภาพพิมพ์2):

ลองออนไลน์

2# "1",@"-[----->+<]>.*@@@!4<
2                             # Prints 2
 #                            # Infinite while loop until an error occurs
   "1"                        # String
      ,@                      # This gives the error and terminates the program

Brainfuck (ภาพพิมพ์3):

ลองออนไลน์

2# "1",@"-[----->+<]>.*@@@!4<
2# "1",@"                     # Since these are not brainfuck ops, these will be ignored
         -[----->+<]>         # Puts "3" on the stack
                     .        # Prints the last item (3)     

Hexagony (ภาพพิมพ์4):

ลองออนไลน์

2# "1",@"-[----->+<]>.*@@@!4<   

รุ่นที่อ่านได้มากขึ้น:

   2 # " 1       # The steps:
  " , @ " -      # 1 (2) - Hexagony starts at the top-left of the hexagon
 [ - - - - -     #       - This immediately puts 2 onto the stack
> + < ] > . *    # 2 (#) - Since the stack is 2, this makes the 2nd pointer the 
 @ @ @ ! 4 <     #       - new current pointer
  > 6 = . .      # 3 (*) - The position of the 2nd pointer is in the left-most
   . . . .       #       - position. This sets the stack to the product
                         - of the two neighbours which is zero
                 # 4 (<) - Changes the pointer direction to west
                 # 5 (4) - Sets the stack to 4
                 # 6 (!) - Outputs the decimal 4
                 # 7 (@) - Terminates the program

ช่องว่าง (พิมพ์5):

ลองออนไลน์

เนื่องจากตัวละครอื่น ๆ จะถูกละเว้น แต่ช่องว่างและแท็บเราจึงเหลือดังต่อไปนี้

SSTST                 # This pushes 5 onto the stack
T                     # 
ST                    # This prints the decimal

AniRadเวอร์ชั่น 0.2 (ภาพพิมพ์6):

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

2# "1",@"-[----->+<]>.*@@@!4<      # (#)  Starts at the hashtag (starting point)
                                   #      Direction is down
                                   # (>)  When the pointer gets to the '>', it changes
 >6=                               #      its direction
                                   # (6) Puts 6 onto the stack 
                                   # (=) Pushes the result and terminates

1
ฉันคิดว่าภาษาอื่น ๆ เป็นวิธีที่แน่นอนมากขึ้น ... ตัวหารลูกบาศก์เป็นคนใจกว้างจริงๆดังนั้นมันจึงไม่ยากที่จะเอาชนะคะแนนของฉันเมื่อคุณมี 5 หรือ 6 ภาษา
Martin Ender

@ MartinBüttnerใช่แม้ว่าฉันไม่เห็นวิธีการเพิ่มภาษาใหม่
Adnan

2
@ มาร์ตินใช่มันเป็นคนใจกว้าง จุดของตัวส่วนลูกบาศก์คือการสนับสนุนภาษามากขึ้นอย่างมาก ฉันคิดว่า 6 ภาษาใน 50 ไบต์ควรมีค่าเท่ากับ 5 ภาษาใน 30 ไบต์ :-) มันจะทำให้ภาษาที่คุณใช้มากขึ้น
Stewie Griffin

โค้ด Whitespace ของคุณอาจลดลงเล็กน้อย (และฉันไม่คิดว่ามันจะส่งผลกระทบต่อภาษาอื่น ๆ ของคุณ (ใช้ L สำหรับ linefeed) แทนการที่SSSSSSSSSSTTSTSTLTLSSคุณมีตอนนี้คุณสามารถทำได้SSSTSTLTLSTสิ่งนี้จะผลักดัน 5 ตัวอักษรใน stack จากนั้นพิมพ์เป็นจำนวนเต็ม
SnoringFrog

@SnoringFrog ขอบคุณ! ฉันได้แก้ไขมัน
Adnan

14

6 7 ภาษา, 32 37 ไบต์, คะแนน0.148 ... 37/7 3 ≈ 0.107872 ...

#7+!"@\"6.@;n5
print(4--int(-3/2)#"
)

brainfuck-ng

+เพิ่มเซลล์ปัจจุบัน!พิมพ์เป็นจำนวนเต็ม@ออก #และ"เป็น NOP

Python 2

บรรทัดแรกคือความคิดเห็น การใช้การหารจำนวนเต็มคำนวณ4 - -int(-3 / 2) = 4 - -int(-2) = 4 - -(-2) = 4 - 2 = 2และพิมพ์ผลลัพธ์

Python 3

เหมือนกับก่อนหน้านี้ แต่มีการหารแบบลอย 4 - -int(-3 / 2) = 4 - -int(-1.5) = 4 - -(-1) = 4 - 1 = 3.

Lua

--เริ่มแสดงความคิดเห็นและในบรรทัดแรกคือความคิดเห็นดังนั้นโดยทั่วไป#print(4)

> <>

#สะท้อนถึง IP 5กด 5 nพิมพ์ตัวเลขและ;ออก

Befunge

#ข้ามมากกว่า+, !มีเหตุผลขัดแย้งด้านบนของสแต็ค, "@\"ดันสตริง@\, 6ผลักดัน 6 .พิมพ์ตัวเลขและ@จบการทำงาน

Pyth

#เริ่มการวนซ้ำไม่สิ้นสุดการยกเลิกข้อผิดพลาดใด ๆ 7พิมพ์ 7 จากนั้นตามด้วย+!"string")สาเหตุที่ทำให้เกิดข้อผิดพลาดเนื่องจากไม่มีตัวถูกดำเนินการสองตัวเพื่อ+ยกเลิกโปรแกรม


13

JavaC ++ C, 363/27 = 13.4 ....

Java พิมพ์ 1, C ++ พิมพ์ 2, C พิมพ์ 3 ไม่ทำลายสถิติใด ๆ ที่นี่ (เพราะ Java) แต่ฉันชอบวิธีที่ชาญฉลาดและไม่เหมาะสมในการสร้างรูปหลายเหลี่ยมในภาษาเหล่านี้ที่ฉันค้นพบ

//\u000a/*
#include<stdio.h>
#ifdef __cplusplus
#define o "2"
#else
#define o "3"
#endif
int p(int a){printf(o);}
struct{int(*print)(int);}out;
//*/
/*\u002a/
import static java.lang.System.out;
public class P{//*/
/*\u002a/public static void//*/
main(/*\u002a/String[] args//*/
){//\u000a/*
out.print=p;
//\u002a/
out.print(1);}
/*\u002a/}//*/

นี่เป็นระเบียบ นี่คือรายละเอียดของวิธีการทำงาน ตัวอักษร Unicode ( \u000aหรือที่รู้จักกันในชื่อ linefeed และ\u002aหรือที่รู้จักกันในชื่ออื่น ๆ*) จะถูกขยายโดยคอมไพเลอร์ Java เป็นอักขระจริง ดังนั้นนี่คือสิ่งที่คอมไพเลอร์ Java เห็น:

//
/*
#include<stdio.h>
#ifdef __cplusplus
#define o "2"
#else
#define o "3"
#endif
int p(int a){printf(o);}
struct{int(*print)(int);}out;
//*/
/**/
import static java.lang.System.out;
public class P{//*/
/**/public static void//*/
main(/**/String[] args//*/
){//
/*
out.print=p;
//*/
out.print(1);}
/**/}//*/

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

นี่เป็นโค้ด Java ที่เทียบเท่าโดยลบความคิดเห็นออก:

import static java.lang.System.out;
public class P{
public static void
main(String[] args
){
out.print(1);}
}

นี่คือสิ่งที่คอมไพเลอร์ C / C ++ เห็น (ฉันได้ลบตัวอักษร Unicode เนื่องจากพวกเขาไม่ได้ถูกขยายโดยคอมไพเลอร์จึงไม่ทำอะไรเลย):

///*
#include<stdio.h>
#ifdef __cplusplus
#define o "2"
#else
#define o "3"
#endif
int p(int a){printf(o);}
struct{int(*print)(int);}out;
//*/
/*/
import static java.lang.System.out;
public class P{//*/
/*/public static void//*/
main(/*/String[] args//*/
){//\/*
out.print=p;
///
out.print(1);}
/*/}//*/

ที่นี่ความคิดเห็นบรรทัดเดียวจะแทนที่ตัวคั่นความคิดเห็นแบบหลายบรรทัดในตอนเริ่มต้นดังนั้นทั้งหมดของ#defines และ#includeรับการประมวลผลล่วงหน้า จากนั้นความคิดเห็นแบบหลายบรรทัดใช้เพื่อคอมเม้นต์โค้ด boiletplate สำหรับ Java นี่คือรหัสที่เทียบเท่าโดยลบความคิดเห็นออก:

#include<stdio.h>
#ifdef __cplusplus
#define o "2"
#else
#define o "3"
#endif
int p(int a){printf(o);}
struct{int(*print)(int);}out;
main(
){
out.print=p;
out.print(1);}

เคล็ดลับหลายภาษา C / C ++ มาตรฐาน (the #ifdef __cplusplus) ถูกนำมาใช้เพื่อกำหนดโทเค็นoเป็นอย่างใดอย่างหนึ่ง"2"หรือ"3"ขึ้นอยู่กับว่ามันเป็น C + + หรือ C คอมไพเลอร์ที่รวบรวมรหัส ต่อไปเราจะกำหนด funtion pที่รับintอาร์กิวเมนต์(ละเว้น) และการโทรprintfเดียวโดยใช้oโทเค็นที่กำหนดใหม่ของเรา ตามปกติแล้วค่าส่งคืนจะถูกปล่อยออกเนื่องจากเราไม่ได้อยู่ในโหมดเข้มงวด ต่อไปเราจะกำหนดstructกับสมาชิกตัวชี้ฟังก์ชั่นที่มีลายเซ็นตรงกับp's outและสร้างเช่นเดียวชื่อ ในวิธีการหลัก (เราออกไปintตามปกติ) ที่อยู่ของpได้รับมอบหมายให้out.print(ดังนั้นการโทรout.printออกp) และมันถูกเรียกว่า

หาก C ++ ไม่รวมอยู่ในภาษาที่เราอาจลดลงทั้งหมดของรหัส preprocessor และกำหนดเป็นp int p(int a){puts("2");}น่าเสียดายที่ C ++ ต้องการ#includeI / O สิ่งที่ต้องทำ หากไม่ได้รวม C เราสามารถลบนิยามpและ#ifdefแมโครตัวประมวลผลล่วงหน้าและกำหนดฟังก์ชันสมาชิกโดยตรงstructแทนการต้องการตัวชี้ฟังก์ชัน น่าเสียดายที่ C ไม่รองรับฟังก์ชั่นสมาชิก


12

4 ภาษา 28 ไบต์ / 64 = 0.4375

print((0 and 3^1or 1/2>0)+1)

1. Python 2

0เป็นเท็จและ/เป็นจำนวนเต็มดังนั้น

(0 and 3^1 or 1/2 > 0) + 1 = (1/2 > 0) + 1 = (0 > 0) + 1 = False + 1 = 1

2. Perl (เช่น Python 3)

0งี่เง่าและ/เป็นส่วนที่ลอยดังนั้น

(0 and 3^1 or 1/2 > 0) + 1 = (1/2 > 0) + 1 = (0.5 > 0) + 1 = 1 + 1 = 2

3. ทับทิม

0เป็นความจริงและเป็น bitor ^xor ดังนั้น

(0 and 3^1 or 1/2 > 0) + 1 = xor(3,1) + 1 = 2 + 1 = 3

4. ลัวะ

0เป็นความจริงและ^เป็นการยกกำลังดังนั้น

(0 and 3^1 or 1/2 > 0) + 1 = pow(3,1) + 1 = 3 + 1 = 4

โปรดทราบว่า Lua และ Ruby ไม่สามารถเพิ่ม booleans ราวกับว่ามันเป็นจำนวนเต็มดังนั้นการรวมกลุ่มของพวกเขาเข้าด้วยกัน น่าเสียดายที่0andใช้งานไม่ได้ใน Lua ดังนั้นเราจึงไม่สามารถบันทึกไบต์ได้


เวอร์ชันก่อนหน้า 17 ไบต์ซึ่งพิมพ์ 1 (Lua), 2 (Ruby), 3 (Python / Perl):

print(2^(0 or 1))

-3 ไบต์ต้องขอบคุณ @xnor สำหรับรุ่นนี้ทำให้มันเป็น neater มาก :)


จะ2^(0 or 1)ทำงานอย่างไร
xnor

@xnor Ah ใช่ขอบคุณ :)
Sp3000

8

BFSRS> <> funge93thon123, 73/343 ≈ 0.212827 ...

Brainfuck, จริงจัง ,> <>, Befunge-93, Python 1, Python 2, Python 3

# 4['.]@kX21z-[>+<-----]>--.<;n3
import sys;print(3+int(sys.version[0]))

มี unprintables, hexdump (ย้อนกลับได้ด้วยxxd -ps -r):

2320345b272e5d406b5832317a7f2d5b3e2b3c2d2d2d2d2d5d3e2d2d2e3c
3b6e330a696d706f7274207379733b7072696e7428332b696e7428737973
2e76657273696f6e5b305d2929

ฉันจะเพิ่มภาษามากขึ้น (และอาจเป็นไบต์) เมื่อเวลาผ่านไป ภาษาในส่วนหัวจะแสดงตามลำดับสิ่งที่พิมพ์ สมมติว่ามีการห่อเซลล์ 8 บิตและเทปที่จะไม่บ่นเกี่ยวกับการออกจากตำแหน่งเริ่มต้น (การตัดหรือไม่ จำกัด ) สำหรับ Brainfuck

brainfuck:

[.]   initial value of first cell is 0, so loop is skipped
-[>+<-----]>--  push 49 (ASCII ordinal of 1)
.     print "1"
<     move to blank cell
[0]   skip loop because cell is 0
      everything else is ignored

อย่างจริงจัง :

# 4['.]@  does some stuff we don't care about
kX        pop entire stack, push as list, discard (essentially the same as é, but is ASCII so we can use Python)
2         push 2
1z        pop 1 item from stack and print (used instead of . so Brainfuck doesn't print here; same as ü in this scenario, but is ASCII so we can use Python)
0x7f      terminate program
          everything else is ignored

><>:

#    mirror, reverse direction
3n;  push 3, print "3", end (reversed because IP is scanning RTL at this point)
     everything else is ignored

Befunge-93:

#     jump over the space
4['.] push 4, print 4 (brackets and ' do nothing)
@     end program
      everything else is ignored

Python 1 (ขอบคุณ muddyfish):

# 4['.]@kX21z-[>+<-----]>--.<;n3         comment; ignored
import sys;print(4+int(sys.version[0]))  prints 4+1=5

Python 2 :

# 4['.]@kX21z-[>+<-----]>--.<;n3         comment; ignored
import sys;print(4+int(sys.version[0]))  prints 4+2=6

Python 3 :

# 4['.]@kX21z-[>+<-----]>--.<;n3         comment; ignored
import sys;print(4+int(sys.version[0]))  prints 4+3=7

Python 1 ใช้งานได้เช่นกัน ดูcodegolf.stackexchange.com/a/65652/32686 ไม่เพิ่มตัวอักษรใด ๆ (แต่เปลี่ยน3เป็น4)
Blue

8

14 ภาษา, 73 ไบต์, คะแนน = (73/14 ^ 3) = 0.02660349854

#Y2(3`5n~thneo e        ;n@0d c
#   -[>+<"9"L-----]>+.
14  
print(int(15/2))+3

ฉันสามารถเพิ่มภาษาได้อีก แต่ฉันคิดว่าฉันจะเพิ่มสิ่งที่ฉันมีที่นี่

1. Brainbool ; ลองออนไลน์!

รหัสที่เกี่ยวข้อง:

    [>+<         ]>+.

               + 

นี่เป็นเพียงแค่+.+ผลลัพธ์ 1

2. Jolf ; ลองที่นี่!

(ถ่านหยุดการตีความรหัสที่มาดังนั้นรหัส relavent คือ:

#Y2

สิ่งนี้เทียบเท่ากับ (ใน JavaScript)

var Y = []; toHex(Y); alert(2);

ผลลัพธ์ใด 2

3. องค์ประกอบ; ลองออนไลน์!

รหัสที่เกี่ยวข้อง:

    3`

สิ่งนี้จะจับ3และพิมพ์

4. Brainfuck ; ลองออนไลน์!

รหัสที่เกี่ยวข้องคือ:

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

  -    -      + 

ซึ่งเป็นวิธีมาตรฐานในการสร้างรหัส char ของ 4 และส่งออกและสิ่งอื่น ๆ หลังจากนั้น

5. เร้ง; ลองที่นี่!

~ ยุติโปรแกรมดังนั้นรหัสที่เกี่ยวข้องที่นี่คือ:

#Y2(3`5n~

#นิยามใหม่Yให้เป็น TOS ในกรณี0นี้ 2กด 2 (หมุนสแต็ก N ครั้งโดย popping N จากสแต็ก 3`กด -3; และสุดท้ายพิมพ์5n5

6. การทางพิเศษแห่งประเทศไทย; ลองออนไลน์!

การทางพิเศษแห่งประเทศไทยอ่านตัวอักษร E, T, A, O, I, N, S, H ดังนั้นรหัสเท่านั้นที่ดำเนินการคือ:

       n thneo e         n     


  int int          

รหัสที่เกี่ยวข้องมาก:

       n thneo

nthne oหรือเท่ากัน: n...eเป็นฐาน -7 ตัวอักษรและthnเป็นเลขฐาน 7 สำหรับ 54 oเอาต์พุตอักขระนี้ ข้อผิดพลาดในการส่งออกมา แต่ฉันไม่ทราบสาเหตุ

7. Python 3

สิ่งที่เห็น:

# comment
# comment
14
print(int(15/2))+3

15/2ผลผลิต 7.5 เช่นเดียวกับ/ส่วนที่ลอย int(...)ทำให้ตัวเลขเป็น int ซึ่งจะถูกพิมพ์ออกมา ข้อผิดพลาดของโปรแกรมจะเกิดขึ้นเมื่อ+3พบ

8. จูเลีย

จูเลียเห็น:

# comment
# comment
14
print(int(15/2))+3

แทนที่จะตัดทอน 15/2, Julia ปัดมันขึ้นโดยยอม 8 มันพิมพ์สิ่งนี้แล้วเกิดข้อผิดพลาดเมื่อพบ +3

9. ฟิชชัน; ลองออนไลน์!

รหัสที่เกี่ยวข้อง:

        <"9"L         

ฉันได้ความคิดนี้จากส่วนฟิชชันของมาร์ติน (เหมือนขโมย) Lเริ่มต้นเป็นสิ่งที่ซ้ายหันจับและจบลงด้วยการ9<

10. ช่องว่าง; ลองที่นี่!

รหัสที่เกี่ยวข้องแปลช่องว่างเป็นSและแท็บลงในT:

SSSTSTS
T
ST

มันเพิ่ม 10 ถึงสแต็กและส่งออกเป็นตัวเลข ( T\nST)

11. Python 2

Python 2 เห็นสิ่งนี้:

# comment
# comment
14
print(int(15/2))+3

(int(15/2))+3 ได้รับการประเมินว่าเป็น 11 และถูกพิมพ์ออกมา

12. Gol> <>; ลองที่นี่!

รหัสที่เกี่ยวข้อง:

#                      ;n@0d c

วิธีนี้ใช้กลอุบายที่ใช้ในคำตอบของ Martinที่@หมุนทิศทางต่าง ๆ ใน> <> และ Gol> <> #กระจกcดัน 12 dผลักดัน 13 0ผลักดัน 0 และ@นำcไปด้านบนของสแต็คแล้วถูก outted ;nและพิมพ์ด้วย

13. > <>; ลองออนไลน์!

รหัสที่เกี่ยวข้อง:

#                      ;n@0d c

อีกครั้งโดยใช้ที่@หมุนทิศทางที่แตกต่างกันใน> <> และ Gol> <> #กระจกcดัน 12 dผลักดัน 13 0ผลักดัน 0 และ@นำdไปด้านบนของสแต็คแล้วถูก outted ;nและพิมพ์ด้วย

14. Golfscript; ลองออนไลน์!

สิ่งที่เห็น:

# comment
# comment
    14
print(-int(-15/2))+3

มันดัน14, prints มันและข้อผิดพลาด ขโมยแรงบันดาลใจจากคำตอบของ SP3000


7

Subskin , Brainfuck และFob 27 ไบต์ / 3 ^ 3 = 1

0#>&$3#<>$-[----->+<]>-.
31

Subskin

0
31

เราตั้งตัวชี้การเรียนการสอน (ไม่ได้เรื่องที่นี่) ไปและลงทะเบียนออกไป0 31หากเนื้อหาของการลงทะเบียนการส่งออกคือเราส่งออกมูลค่าที่มีอยู่เป็น>= 0 charรหัสอื่น ๆ ทั้งหมดจะถูกละเว้น

brainfuck

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

ทำให้3ในการลงทะเบียน, decrements ค่าครั้งด้วยและในที่สุดก็เอาท์พุทด้วย-.

โกง

#>&$3#<>$

นี่เป็นเรื่องยุ่งยากเล็กน้อยเนื่องจาก Brainfuck อ่าน<และ>คำแนะนำใน Fob ด้วย เราเข้าสู่โหมดการดำเนินการด้วย#และเพิ่มตัวชี้ของ Brainfuck ทีละอันซึ่งทำให้เราง่ายขึ้นในภายหลัง เรายังไม่มีสิ่งใดที่จะต้องดำเนินการดังนั้นจึงไม่มีการดำเนินการใด ๆ

เราเข้าสู่โหมดการสะสมที่มีการ$โยนใน3, เข้าสู่โหมดการดำเนินการอีกครั้งผลักดันเนื้อหาสะสมไปยังกองด้วยและในที่สุดเราส่งออกเนื้อหาที่มี<>

เพื่อป้องกันไม่ให้ brainfuck $จากการกวดขันกับโปรแกรมที่เราเข้าสู่โหมดการสะสมอีกครั้งกับ


7

7 ภาษา, 55/7 ^ 3 ≈ 0.16035

ทำงานใน PowerShell v1, v2, v3, v4 และ v5, Foo และ Pyth

#7.q"6""
$p=$PSVersionTable;($p.PSVersion.Major,1)[!$p]

ตัวเลข 1-5 ใช้ตรรกะที่คล้ายกับ sweerpotato ของคำตอบ $PSVersionTableตัวแปรพิเศษเป็นที่รู้จักใน PowerShell v2 และมีการสร้างรายการเต็มรูปแบบ, การแก้ไข ฯลฯ นี่คือตัวอย่างการส่งออกของตัวแปร:

PS C:\Tools\Scripts> $PSVersionTable

Name                           Value                                                                                                                           
----                           -----                               
PSVersion                      4.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.34209
BuildVersion                   6.3.9600.17400
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion      2.2

ในรหัสนี้เราจะเก็บมันไว้ก่อน$pเพื่อให้ความยาวรหัสสั้นลง จากนั้นเราตรวจสอบการมีอยู่ของมันโดยใช้ประโยชน์จากตัวแปรเป็นดัชนีในอาร์เรย์สองรายการ:

  • ถ้าตัวแปรไม่ได้อยู่ PowerShell แบบไดนามิกจะสร้างมันขึ้นมาและกำหนดให้$NULLผู้!ซึ่งเป็น$TRUEหรือ11ซึ่งสอดคล้องกับองค์ประกอบที่สองในอาร์เรย์ซึ่งเอาท์พุท
  • หากตัวแปรนั้นมีอยู่ (เช่นในกรณีของ v2 +) ดังนั้น!ตัวแปรจะส่งผลให้เกิด$FALSEหรือ0ซึ่งดัชนีไปที่องค์ประกอบแรกซึ่งส่งออกหมายเลขเวอร์ชัน

ใช้ Foo เป็นเวลา 6 ปีเราใช้ประโยชน์จากสิ่งนั้น #ความคิดเห็นใน PowerShell ดังนั้นสิ่งนี้จึงถูกละเว้นเมื่อดำเนินการในสภาพแวดล้อม PS อย่างไรก็ตามฟูจะแยกจำนวนอย่างมีความสุขจาก6นั้นดำเนินการต่อในส่วนที่เหลือของโปรแกรมซึ่งไม่ได้ทำอะไรเลย

ใช้ Pyth สำหรับ 7 เรากลับมา7แล้วออกทันทีด้วย.qดังนั้นลูปไม่ จำกัด ในขณะที่เป็นจริงที่เริ่มต้นด้วย#ไม่สำคัญ เนื่องจากเรามีสิ่งที่เหลืออยู่ที่ได้รับการพิมพ์โดยนัย ขอบคุณ @ FryAmTheEggmanสำหรับการเพิ่มนี้

แก้ไข - เล่นกอล์ฟจำนวนหนึ่งไบต์ด้วยMauris Edit - คำอธิบายPythis ที่ชัดเจนขอบคุณSp3000


แล้วไง$p=$PSVersionTable;($p.PSVersion.Major,1)[!$p]ล่ะ สิ่งนี้ใช้ได้กับ Powershell ของฉัน แต่อาจไม่ได้อยู่ในเวอร์ชันก่อนหน้าทั้งหมด
ลินน์

7

7 ภาษา, 287/7 ^ 3 = 0.836

น่าจะเป็นคะแนนต่ำสุดที่ได้รับในต่อไปฉันชอบ C polyglot 3 รุ่นนี้

เพิ่มโซลูชัน Python ที่น่าเบื่อเป็นอย่างน้อยจึงผ่านการรับรองสำหรับภาษา "3 อันที่ไม่ซ้ำกัน"

เพิ่ม Java โดยการทริกเกอร์ C ที่ไม่เหมาะสมสำหรับการแทรกความคิดเห็นที่แตกต่างกัน

ทำงานใน:

  • Python 1

  • Python 2

  • Python 3

  • C89

  • C99

  • C ++

  • ชวา

รุ่น golfed:

/*
*??/
/
#include <stdio.h>
#ifndef __cplusplus
#define true 8/*
import sys
print(sys.version[0])
'''
#*??/
/
#endif
int main(){int a=(true>1)?-6:3;printf("%d",(true//*
+a
//**??/
/+2));}
#define a \
'''
/**\u002f
public class p{public static void main(){System.out.println("7");}}
/**/

Ungolfed:

/*
*??/
/

#include <stdio.h>

#ifndef __cplusplus
#define true 8/*

import sys
print(sys.version[0])
'''
#*??/
/
#endif 

int main()
{
    int a = (true > 1) ? -6 : 3;
    printf ("%d", (true//*
    +a
    //**??/
/
    +2));
}
#define a \
'''

/**\u002f
public class p
{
    public static void main()
    {
        System.out.println("7");
    }
}
/**/

โอเคนี่อาจจะได้รับการกำจัดแล้วและฉันหวังว่าทักษะภาษาอังกฤษของฉันดีพอที่จะอธิบายได้ตามปกติ

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

ดังนั้นให้นำบล็อกแรก:

/*
*??/
/

สำหรับ Java นี่เป็นเพียงจุดเริ่มต้นของความคิดเห็นหลายบรรทัด แต่ ... ใน C99 / 89 / ++ นี่จะประเมินเป็น

/*
*/

เนื่องจาก??/เป็น trigraph \ในขณะที่อยู่ใน C \ตัวละครจึงมีความสอดคล้องกันและแม้กระทั่งกินการขึ้นบรรทัดใหม่ใน commandfunctionality สิ่งนี้ทำให้ผลลัพธ์ของการ\nเป็นเพียง "แสดง" แทนการแบ่งบรรทัดซ้อน นั่นหมายความว่าหากได้รับอาร์เรย์ไบต์นี้แทนบล็อกแรก: [ /] [ ] [ ] [ *] [ \n] [ *] [ ?] [ ?] [ /] [ \n] [ /] จะได้รับการประเมินผลหลังจาก trigraph: [ /] [ *] [ \n] [ *] [ \] [ \n] [ /] [ ] เมื่อฟังก์ชันการทำงานของ\ทริกเกอร์และ "สิ้นเปลือง" สอดคล้องกันฟังก์ชัน\nที่เหลือและ finaly ใน C langs ที่ประเมินคือ: [ /] [ *] [ \n] [ *] [ /] [ ]

แต่เกี่ยวกับจาวาทั้งหมดนี้ไม่รู้อะไรเลยและปฏิบัติต่อสิ่งต่อไปนี้ในฐานะที่เป็นความคิดเห็นจนกระทั่งกลเม็ดนี้กลับคืนมา

(ยังมีต่อ!)


7

4 ภาษา (Befunge-93, Microscript II, Microscript และ Foo), คะแนน 7/64 = 0.109

"4"1.@2

Befunge: กด 4 กด 1 พิมพ์ 1 และยุติ

Microscript II: สร้างสตริง "4" ทิ้งมันเอาสแควร์รูทของหนึ่งทิ้งนั้นและตั้งค่า x เป็น 2 ในที่สุดจากนั้นจะถูกพิมพ์โดยปริยาย

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

Foo: พิมพ์สตริง "4" จากนั้นกด 2


6

Python 1 | 2 | 3, 27 ไบต์ / 27 = 1

print(len("\xabc")+(1/2>0))

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

คำอธิบาย

เพื่อแยกความแตกต่างของ Python 3 จากรุ่นก่อนหน้านี้เราใช้ประโยชน์จากการหารจำนวนเต็มมาตรฐานกับเคล็ดลับการหารจุดลอย (1/2>0) == (0>0)ส่งคืน 0 pre-Python 2.3 หรือFalsePython 2.3 เป็นต้นไปและ(1/2>0) == (0.5>0)ส่งคืนTrueสำหรับ Python 3

เพื่อแยกความแตกต่างของ Python 1 จากส่วนที่เหลือเราจะใช้ความยาวของสตริง"\xabc"ซึ่งเป็นความยาวหนึ่งใน Python 1 และความยาวสองจาก Python 2 เป็นต้นไป ทำไม? เพราะ

ตอนนี้ \ x escape ในตัวอักษรสตริงจะมีตัวเลขฐานสิบหก 2 หลัก ก่อนหน้านี้มันจะใช้เลขฐานสิบหกทั้งหมดที่ตามหลัง 'x' และรับผลบิตต่ำสุด 8 บิตดังนั้น \ x123456 จึงเท่ากับ \ x56

(จากมีอะไรใหม่ใน Python 2.0 )


6

Python 3, Ruby, Perl, C, C ++, Objective-C 202 ไบต์ / 6 ^ 3 = 0.935 ...

มันค่อนข้างสนุกจริง ๆ และเล่นกับบูลีนมากมาย

คุณสามารถรหัสทุกรุ่นได้ที่เว็บไซต์ต่อไปนี้โดยการคัดลอกและวางรหัสลงในล่าม

#include <stdio.h> /*
print ((("0"+"0"==0)and 3) or (0and 2or 1));
__DATA__ = 1
"""""
*/
int main(){putchar(
#ifdef __OBJC__
'6'
#else
#ifdef __cplusplus
'5'
#else
'4'
#endif
#endif
);return 0;}/*
"""
#*/

Python 3 พิมพ์ 1

เคล็ดลับมีดังต่อไปนี้:

print ((("0"+"0"==0)and 3) or (0and 2or 1));

สิ่งนี้จะพิมพ์ 1

ทับทิมพิมพ์ 2

รหัสตีความสำหรับทับทิมคือ:

print ((("0"+"0"==0)and 3) or (0and 2or 1));

ดังนั้นสิ่งนี้จึงพิมพ์ออกมา 2

Perl พิมพ์ 3

รหัสตีความสำหรับ Perl คือ:

print ((("0"+"0"==0)and 3) or (0and 2or 1));
__DATA__ = 1

ก่อนอื่น__DATA__โทเค็นจะบอกคอมไพเลอร์ Perl ว่าการรวบรวมเสร็จสิ้น ทุกอย่างหลังจากนั้นจะถูกละเว้น

print ((("0"+"0"==0)and 3) or (0and 2or 1));

และพิมพ์ภาพ 3

C พิมพ์ 4

รหัสที่แปลค่อนข้างแตกต่างจากรหัสอื่น

#include <stdio.h>
int main(){putchar(
#ifdef __OBJC__
'6'
#else
#ifdef __cplusplus
'5'
#else
'4'
#endif
#endif
);return 0;}

4นี้ก็จะพิมพ์ถ่าน

C ++, การพิมพ์ 5

เช่นเดียวกับรหัส C

นี้จะพิมพ์ตัวอักษร 5นี้จะพิมพ์ถ่าน

วัตถุประสงค์ -C, พิมพ์ 6

เช่นเดียวกับรหัส C

6นี้จะพิมพ์ถ่าน


5

5 ภาษา, 18 ไบต์ / 5 ^ 3 = 0.144

วิ่งในBrainbool , มาติกา , ฟู , > <>และBefunge-93

4!<n;+Print@2"3".5

Brainbool

Brainbool เป็นเหมือน brainfuck แต่จะดำเนินการเฉพาะในบิตและ input และ output ประกอบด้วย แต่เพียงผู้เดียวของและ01

4!<n;+Print@2"3".5
  <                   move the pointer to the left
     +                logic not
                .     print the current cell

มาติกา

ใน Mathematica ทุกอย่างเป็นการแสดงออกและมีคุณค่า Print@2พิมพ์2และส่งคืนสัญลักษณ์Nullและส่งกลับสัญลักษณ์หลังจากนั้นรหัสจะทำการคำนวณเชิงสัญลักษณ์ แต่ไม่ได้พิมพ์อะไรเลย

ฟู

"3" ภาพที่ 3 ฉันไม่รู้ว่าส่วนอื่นทำอะไร

> <>

4!<n;+Print@2"3".5
4                     push 4
 !                    skip the next command
   n                  pop and print it as a number
    ;                 end the program

Befunge

4!<n;+Print@2"3".5
4                     push 4
 !                    logical not
  <                   makes the program counter travel to the right
 !                    logical not
4                     push 4
                 5    push 5
                .     pop and print it as a number
             "3"      push the string "3"
            2         push 2
           @          end the program

12 ภาษา, 35 ไบต์ / 12 ^ 3 = 0.0202546 ...

ใช้เคล็ดลับของ sweerpotatoราคาถูก แต่ทรงพลัง

วิ่งในBrainbool , Mathematica 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 และ 10.0 , ฟูและ> <>

cn;+"11".Print@Floor@$VersionNumber


5

6 ภาษา, 38/6 ^ 3 = 0.17592̅5̅9̅

ช่องว่าง , Brainfuck, Ruby, Labyrinth , Foo, จริงจัง

ตำนาน:

£: แท็บ

: พื้นที่

§: 0x7f

puts•2;#4!@•-[>+<-----]>6.§"5"•£    
£
•£

มีอักขระที่ไม่สามารถพิมพ์ได้ดังนั้นนี่คือ hexdump:

7075747320323b23342140202d5b3e2b3c2d2d2d2d2d5d3e362e7f22352220090a090a20090a

คำอธิบาย:

ช่องว่าง

ลองออนไลน์ (หมายเหตุ: โปรแกรมของฉันละเว้นการปิดสามบรรทัดฟีดเพื่อยกเลิกโปรแกรมฉันเขียน / ทดสอบบนWhitelipsและสร้างผลลัพธ์ที่เหมาะสมที่นั่น แต่ไม่ได้อยู่ใน Try It Online ดังนั้นโปรแกรมที่เชื่อมโยงจึงมีอักขระสองตัวที่เพิ่มเข้าไป อย่างที่ฉันบอกได้นักแปลบางคนให้คุณทำอย่างนั้นคนอื่น ๆ ติดอยู่ในวงวนไม่ จำกัด โดยไม่มีการยกเลิกอย่างชัดเจน)

(ละเว้นอักขระที่ละเว้น)

spacespacespacetabenter: กด 1 ลงบนสแต็ก

tabenterspacetab: เอาต์พุตด้านบนของสแต็ก

ทับทิม

ไม่จำเป็นต้องอธิบาย พิมพ์ 2 ถือว่าส่วนที่เหลือของบรรทัดนั้น (ergo โปรแกรม brainfuck) เป็นความคิดเห็นถือว่าไฟล์ที่เหลือเป็นไฟล์ว่าง

brainfuck

ลองออนไลน์

ต้องใช้ล่ามที่รองรับอันเดอร์โฟลว์ ลดจำนวนเซลล์แรกให้เหลือ 255 จากนั้นใช้ค่านั้นสำหรับตัวนับลูปเพื่อสร้าง 51 ซึ่งเป็นรหัส ASCII สำหรับ 3

เขาวงกต

ลองออนไลน์

(เว้นสองบรรทัดสุดท้ายเพื่อความชัดเจนเนื่องจากไม่สามารถเข้าถึงได้)

puts•2;#4!@ -[>+<-----]>6.§"5"•£
puts•                            skipped
     2                           push 2 onto stack
      ;                          pop 2 from stack
       #                         push current stack depth (0) to stack
        4                        push 4 to stack
         !                       print top of stack as integer
          @                      program terminates

ฟู

ลองออนไลน์

สิ่งเดียวที่มีผลต่อเอาต์พุตคือ "5" ซึ่งพิมพ์ 5

อย่างจริงจัง

ลองออนไลน์

puts•2;#4!@ -[>+<-----]>6.§"5"•£
puts•2;#4!@ -[>+<-----]>           assorted stack manipulation that doesn't affect this program
                        6          push 6 to the stack
                         .         output top of the stack
                          §        (0x7f) terminate program

5

5 ภาษา, Chaîne , Minkolang , Foo , Brainf ** k-ng , และVitsy , 21/5 ^ 3 = 0.168

2|<«+!@"3".N+m

5N»

Brainf ** k-ng

2|<«+!@"3".N+m

5N»
  <            go left (should still be ok)
    +!         output 1
      @        halt execution

Chaîne

2|<«+!@"3".N+m

5N»
2              «add 2 to the current string»
 |<            «take off and put on the string (no op)»
   «           «comment»

  »
               «implicit output»

ฟู

2|<«+!@"3".N+m

5N»
       "3"     print three

Minkolang

2|<«+!@"3".N+m

5N»
2              C push 2 to the stack [2] C
 |             C mirror C
2              C push 2 to the stack [2,2] C
             m C ignored C
            +  C add top two [4] C
           N   C output C
          .    C terminate program C

Vitsy

2|<«+!@"3".N+m

5N»
2              push 2
 |             mirror
2              push 2
             m pop 2, goto line 2
5              push 5
 N             output 5
  »            ignored

ฉันอาจเพิ่ม> <> หรืออะไรก็ได้


1
คุณก็รู้ว่าฉันไม่เคยใช้กระจกนี้มาก่อน xD
Addison Crump

5

Craneflak , Brain-Flak Classic , Rain-Flak , BrainHack , Brain-Flue , miniflak , miniHack : .1020

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

ลองออนไลน์!

คำอธิบาย

สิ่งแรกที่เกิดขึ้นที่นี่คือมีความแตกต่างในวิธีการอ่านความคิดเห็นระหว่างล่าม BrainHack, CraneFlak และ Rain-Flak Craneflak ไม่มีความคิดเห็นใน Rain-Flak #แสดงความคิดเห็นส่วนที่เหลือของบรรทัดและใน BrainHack ให้#{...}ความเห็นด้านใน

ดังนั้นนี่คือสิ่งที่แต่ละภาษาอ่าน:

Rain-Flak: (([]()()()<()()()>)()()){}         -> 3
BrainHack: (([]()()()<()()()>)()()){}({}())   -> 4
Craneflak: (([]()()()<()()()>)()()){}{}({}()) -> 1

สิ่งต่อไปคือความแตกต่างระหว่างสมองและจุดอ่อนของ miniflaks ทั้ง Rain-Flak และ BrainHack รองรับ miniflak ซึ่งการดำเนินการพิเศษทั้งหมดจะถูกลบออกไปอย่างง่ายดาย ซึ่งหมายความว่าพวกเขาสูญเสีย[]และ<...>

Rain-Flak: (()()()()()())         -> 6
BrainHack: (()()()()()())({}())   -> 7

ต่อไปเรามีความแตกต่างระหว่าง Brain-Flak และ Brain-Flak Classic ในแบบคลาสสิค[]คือ-1แทนความสูงของกองซึ่งหมายความว่าผลของเราคือ 1 น้อยกว่าในปกติฝน Flak ทำให้ 2

ในที่สุดเราก็มีความแตกต่างระหว่างสมอง Flak และสมอง ในสมอง - ปล่องจะใช้คิวแทนสแต็ก โดยปกติสมองที่สะบัดจะผลัก 3 และ 5 ออกมาและดึง 5 ออกไปอย่างไรก็ตามในสมองที่ผสมพันธุ์ป๊อปจะกำจัด 3 และไม่ใช่ 5


4

ทางช้างเผือก 1.0.2 , CJamและSTXTRM , 20 ไบต์ / 3 ^ 3 = 0.741

ฉันจินตนาการว่ามีภาษาอื่นอย่างน้อยหนึ่งภาษาที่ฉันสามารถเพิ่มได้

'2"3""1"1<<1>;;"2"3;

คำอธิบาย


ทางช้างเผือก ,1

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

นี่คือการสร้างภาพสแต็ค (สแต็กที่แสดงเป็นผลลัพธ์ของการดำเนินการที่แสดงหลังจากเกิดขึ้น):

["", 0]                                             #  default stack

["", 0, ""]                                 #   '   #  read input from command line
["", 0, "", 2]                              #   2   #  push 2 to the stack
["", 0, "", 2, "3"]                         #  "3"  #  push "3" to the stack
["", 0, "", 2, "3", "1"]                    #  "1"  #  push "1" to the stack
["", 0, "", 2, "3", "1", 1]                 #   1   #  push 1 to the stack
[0, "", 2, "3", "1", 1, ""]                 #   <   #  rotate the stack leftwards
["", 2, "3", "1", 1, "", 0]                 #   <   #  rotate the stack leftwards
["", 2, "3", "1", 1, "", 0, 1]              #   1   #  push 1 to the stack
[1, "", 2, "3", "1", 1, "", 0]              #   >   #  rotate the stack rightward
[1, "", 2, "3", "1", 1, 0, ""]              #   ;   #  swap the top two stack elements
[1, "", 2, "3", "1", 1, "", 0]              #   ;   #  swap the top two stack elements
[1, "", 2, "3", "1", 1, "", 0, "", 2]       #  "2"  #  push 2 to the stack
[1, "", 2, "3", "1", 1, "", 0, "", 2, "3"]  #   3   #  push "3" to the stack
[1, "", 2, "3", "1", 1, "", 0, "", "3", 2]  #   ;   #  swap the top two stack elements

CJam ,2

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

นี่คือการสร้างภาพสแต็ค (สแต็กที่แสดงเป็นผลลัพธ์ของการดำเนินการที่แสดงหลังจากเกิดขึ้น):

[]                         #  default stack

['2]               #  '2   #  push the character code of "2" to the stack
['2, "3"]          #  "3"  #  push "3" to the stack
['2, "3", "1"]     #  "1"  #  push "1" to the stack
['2, "3", "1", 1]  #   1   #  push 1 to the stack
['2, "3", "1"]     #   <   #  leave the greater of the top two stack elements on the stack
['2, 0]            #   <   #  leave the greater of the top two stack elements on the stack
['2, 0, 1]         #   1   #  push 1 to the stack
['2, 1]            #   >   #  leave the lesser of the top two stack elements on the stack
['2]               #   ;   #  pop the top stack value
[]                 #   ;   #  pop the top stack value
['2]               #  "2"  #  push the character code of "2" to the stack
['2, "3"]          #   3   #  push "3" to the stack
['2]               #   ;   #  pop the top stack item

STXTRM ,3

ใน MSM สิ่งใดก็ตามที่ไม่ใช่ตัวดำเนินการจะถูกส่งไปยังสแต็กเป็นอักขระ เครื่องหมายอัฒภาคทำซ้ำองค์ประกอบสแต็คด้านบน โปรแกรมจะดำเนินต่อไปจนกว่าจะไม่มีตัวดำเนินการอีกต่อไปหรือมีองค์ประกอบเดียวในสแต็ก

อักขระสุดท้ายบนสแต็กคือ3ซึ่งซ้ำกันโดยผู้ดำเนินการขั้นสุดท้าย 3เป็นองค์ประกอบสูงสุดในตอนท้ายของโปรแกรมดังนั้นจึงเป็นเอาท์พุท


4

5 ภาษา, 18 ไบต์ / 5 ^ 3 = 0.144

Ouroboros , Pip , QBasic, Fooและ Pyth

5'"4"()"
1?3'@n()2

1. Ouroboros

แต่ละบรรทัดของโปรแกรมแสดงถึงงูที่กินหาง

งู 1

ผลักดัน5, 'คือไม่มี-op ดัน52(รหัส ASCII ของ"4") (ทำให้งูปรากฏเป็นจำนวนมากและกินหางตัวละครหลายตัว เนื่องจากสิ่งนี้ส่งผลให้กลืนตัวชี้คำสั่ง (และงูทั้งตัว) การหยุดทำงาน

งู 2

ผลัก1ดันกดหมายเลขสุ่ม ( ?), กด3, 'เป็นแบบไม่มี op @หมุน1ไปที่ด้านบนสุดของสแต็กและnส่งออกเป็นตัวเลขโดยปล่อยให้3อยู่ด้านบนสุดของสแต็ก จากนั้น(กินตัวละครมากมายจากปลายงูกลืนตัวชี้คำสั่งและหยุด

คุณสามารถเรียกใช้โปรแกรมนี้ออนไลน์ในล่ามกอง Snippet ที่นี่

2. Pip

โปรแกรมส่วนใหญ่ประกอบด้วยนิพจน์ที่ได้รับการประเมินและยกเลิก:

  • 5
  • '" (ตัวอักษรตัวอักษร)
  • 4
  • "()"
  • 1?3'@ (การแสดงออกที่สาม)
  • n (ตัวแปร = newline)
  • () (ไม่มี)

ในที่สุดนิพจน์สุดท้าย2จะถูกพิมพ์

3. QBasic

ทุกอย่างหลังจากนั้น'คือความคิดเห็น บรรทัดแรกจึงเดือดลงไป5เป็นหมายเลขบรรทัด ในบรรทัดที่สอง1เป็นจำนวนเส้นและเป็นทางลัดสำหรับ?3PRINT 3

(เห็นได้ชัดว่ามีหมายเลขบรรทัดที่ไม่ตรงตามคำสั่งจะไม่มีปัญหาแม้ว่าจะแก้ไขได้ง่ายถ้าเป็นเช่นนั้น)

4. ฟู

เกือบทุกอย่างไม่มีตัวเลือก พิมพ์"4" 4วงเล็บ (x2) เป็นลูปที่ทำงานจนกระทั่งเซลล์อาร์เรย์ปัจจุบันเป็นศูนย์ซึ่งเป็นจริงทันทีและออกจากลูป @เมื่อไม่ได้ตามด้วยตัวเลขจะรับค่าของเซลล์อาร์เรย์ปัจจุบัน (เริ่มต้นที่ 0) และผลักไปยังสแต็ก

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

5. Pyth

5เป็นเอาท์พุท จากนั้นการเผชิญหน้าโปรแกรมซึ่งพยายามที่จะอ่านจากไฟล์ชื่อ'"4" 4ตราบใดที่ไม่มีไฟล์ดังกล่าวอยู่ฉันคิดว่านี่ควรยุติโปรแกรมด้วยข้อผิดพลาด ( เวอร์ชันออนไลน์บอกว่าname 'open' is not defined- ฉันถือว่าเพราะการเปิดไฟล์ไม่ได้รับอนุญาตออนไลน์)

stray "ที่ท้ายบรรทัด 1 ทำให้แน่ใจว่าบรรทัด 2 ไม่ทำให้เกิดข้อผิดพลาดทางไวยากรณ์ก่อนที่จะดำเนินการ



@ เดนนิสขอบคุณ! หน้า Esolangs ไม่มีลิงก์ไปยังล่ามนั้น
DLosc

นี่คือดัชนีของภาษาที่มีอยู่ในปัจจุบัน หากคุณต้องการให้ฉันเพิ่มเข้าไปเพียงแค่ ping ฉันในการแชท
เดนนิส

4

4 ภาษา 24 ไบต์ 24/4 ^ 3 = 0.375

print(1//0.5--1+1/2*2
);

1. PHP

PHP เรียกใช้งานprint(1);ซึ่งเท่ากับ 1

2. ลัวะ

Lua ดำเนินการprint(1//0.5);ซึ่งเท่ากับ 2

3. Python 2

Python 2 ดำเนินการ print(1//0.5--1+1/2*2);ซึ่งเท่ากับ 3 (การหารจำนวนเต็ม)

4. Python 3

Python 3 ดำเนินการprint(1//0.5--1+1/2*2);ซึ่งเท่ากับ 4 (ส่วนลอย)


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

คุณอาจสนใจในการเปิด 100 ตัวแทนที่อธิบายไว้ในความท้าทาย Outgolf Sp3000 (28 ไบต์, 4 ภาษา) โดยใช้ภาษาธรรมดาเท่านั้น (ตามที่ระบุในลิงก์) และเป็นของคุณ :-) น่าเสียดายที่ไพ ธ อน 2 และ 3 ไม่ถือว่าเป็นเอกลักษณ์ในการท้าทายค่าหัว
Stewie Griffin

3

Brainfuck-ng, Foo,> <>, 9 ไบต์ / 3 ^ 3 = 0.333 ...

#+!"2";n3

brainfuck-ng

อักขระเท่านั้นที่รู้จักคือ+และ!:

+ Increment cell by one
! Print as integer

พิมพ์ 1

ฟู

พิมพ์ทุกอย่างด้วยเครื่องหมายคำพูด

"2"

พิมพ์ 2

> <>

#ทำมิเรอร์ให้ชี้ไปทางซ้าย3ผลัก3ไปที่สแต็กnเอาท์พุทเป็นจำนวนเต็ม;หยุดโปรแกรม

#      ;n3

2

3 ภาษา, 82 83/3 ^ 3 = 3.074 ...

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

K... Jax... Jy... Jy...   ...
My...    My...
... ...     ......................XO!

1. ???

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

??? นั้นเป็นความคิดพื้นฐาน แต่ใช้เครื่องหมายวรรคตอนทั่วไปเป็นคำสั่งแทนอักขระดั้งเดิม .เพิ่มหน่วยความจำเซลล์ปัจจุบันซึ่งทำ 49 ครั้ง ใช้มือถือหน่วยความจำในปัจจุบันและพิมพ์เป็นตัวละครที่นี่!1

2. ช่องว่าง

[Space][Space][Space][Tab][Line Feed]
[Tab][Line Feed]
[Space][Tab]

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

3. Beatnik

K Jax
Jy Jy
My My
XO

Beatnik เป็นภาษาที่แต่ละคำถูกแปลงเป็นคะแนน Scrabble ของมันจากนั้นคะแนนเหล่านั้นจะถูกตีความว่าเป็นคำสั่ง บรรทัดแรกกด17ลงบนสแต็ก บรรทัดที่สองซ้ำด้านบนของสแต็คสองครั้งและบรรทัดที่สามเพิ่มด้านบนเพื่อองค์ประกอบของสแต็คเข้าด้วยกันเป็นครั้งที่สองได้อย่างมีประสิทธิภาพสามเข้า17 บรรทัดสุดท้ายพิมพ์ตัวอักษรที่อยู่ด้านบนของสแต็คที่นี่51 โปรดทราบว่าฉันใช้ Beatnik ที่ Face Value โดยถือว่าไม่มีข้อผิดพลาดในข้อมูลจำเพาะของ Beatnik ดั้งเดิม โปรดทราบว่าฉันกำลังใช้ระบบการให้คะแนน Scrabble ของอเมริกาเหนือ3

หากยังไม่ชัดเจนในตอนนี้ภาษาเหล่านี้แต่ละภาษาจะยอมรับเฉพาะอักขระบางประเภทเท่านั้น (เครื่องหมายวรรคตอนช่องว่างและตัวอักษรตามลำดับ) ดังนั้นการเขียนภาษาหลายภาษานี้จึงเป็นเรื่องง่ายเหมือนกับการเขียนแต่ละโปรแกรม "เคล็ดลับ" ที่แท้จริงเพียงอย่างเดียวคือการใช้รหัสช่องว่างเพื่อแยกคำจาก Beatnik นอกเหนือจากนั้นแต่ละโปรแกรมจะไม่ทับซ้อนกัน แต่อย่างใด


2
3 ^ 3 = 27 ==> 82/27 = 3.037037037037037 ...
AdmBorkBork

1
รหัสพิมพ์ช่องว่างของคุณ 0 ไม่ 2. การทดสอบที่นี่และที่นี่
Dennis

@ เดนนิสขอบคุณฉันข้ามเครื่องหมายบิตไปแล้ว
Mike Bufardeci

2

5 ภาษา, 175/5 ^ 3 = 1.4

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

ดังนั้นนี่คือคำตอบของฉันที่มีคุณสมบัติสำหรับการรับรางวัลที่ท้าทาย:

มันรวบรวมมา

  • C99
  • objC90
  • C ++ 0x
  • ทับทิม
  • Perl
#if __cplusplus
#define x\
=begin\
=pod
#endif
int a=
#ifndef x
1//**/
+1
#else
3
#endif
;int main(){printf("%d",a);}
#ifdef f
=end
puts 5;
=begin
=cut
print"4";
=end
#endif

2

3 ภาษา 15 ไบต์คะแนน 0.555 ...

จะเพิ่มภาษาอื่น ๆ ในภายหลัง

2//1+1#😅😨

1. อิโมติโนมิกอน

อิโมติโนมิค่อนละเว้นข้อความใด ๆ ที่ไม่ใช่สตริง 😅กด 1 เพื่อสแต็กและ😨ส่งออก TOS เป็นตัวเลข

2. Javascript

ความคิดเห็นใน Javascript เริ่มต้นด้วย//ดังนั้นเฉพาะ2ส่วนที่ได้รับการดำเนินการ

3. Python 2/3 REPL

ความคิดเห็นใน Python เริ่มต้นด้วย#ดังนั้นเฉพาะ2//1+1ส่วนที่ได้รับการดำเนินการ //เป็นการหารจำนวนเต็มใน Python 3 และเหมือนกับ/Python 2 2 หารด้วย 1 คือ 2 บวก 1 คือ 3


2

4 ภาษา 97 ไบต์ 0.37890625

s="1";s=~-3;2//2;'''/.to_s.ord;"=;print 4;
__DATA__
=1;
";#'''#";print=s=>console.log(3)
print(s)

ทับทิม

ชุดนี้sจะ"1"เปรียบเทียบโดยใช้=~กับ-3ในบริบทโมฆะพยายามที่จะแบ่ง2จาก/2;'''/.to_s.ordนั้นก็เริ่มสตริงใหม่ที่มี=;print 4; __DATA__ =1;ฮิตแสดงความคิดเห็นแล้วprints ซึ่งยังคงเป็นs1

หลาม

ชุดsที่จะ"1"ตามข้างต้นแล้วชุดมันอีกครั้งเพื่อซึ่งเป็น~-3 2เราทำงานส่วนจำนวนเต็มของ2//2แล้วมี docstring ที่มี/.to_s.ord;"=;print 4; __DATA__ =1; ";#ตามมาด้วยการแสดงความคิดเห็นในที่สุดprintไอเอ็นจีซึ่งยังคงเป็นs2

JavaScript

ตั้งค่าsเป็น"1"จากนั้นตั้งค่าอีกครั้ง~-3เป็นตามข้างต้นจากนั้นมี2บรรทัดตามด้วยความคิดเห็น แล้วเราตั้งค่าตัวแปรที่จะ__DATA__ 1มีสตริงสั้น ๆ ที่มี;#'''#ตามด้วยคำจำกัดความของฟังก์ชั่นprintซึ่ง hardcodes ผลลัพธ์เป็น 3 ซึ่งถูกเรียกในบรรทัดถัดไป

Perl

ทำงานเทียบเท่าทดแทนs/"1";s/~-3;2\/\/2;'''\/.to_s.ord;"/, prints 4และส่วนที่เหลือของสตริงที่มีการสวมหน้ากากอยู่เบื้องหลัง__DATA__ระบุ


2

QBasic, QBIC และ> <>, 18 ไบต์ / 3 ^ 3 ภาษา = 0.66666 คะแนน

1:?v+1'-5`
''`>3n;

ชำรุด:

1. QBasic ( รับ IDE )

1:          Line number 1
  ?         Print
   v+1      undefined var v = 0 + 1 = 1
'-5`        The rest of theis code is a QBasic comment
''`>3n;     As is this

2. QBIC ( รับล่าม )

1     inserts a 1 in the code - mostly harmless
:     Reads from the cmd line. Nothing there, creates an empty variable a
?     Print
v+1   v is initialised to 6, +1 = 7
'     Code Literal: everything till the ` is passed to QBasic without processing
 -5`  7-5 = 2

''`>3n; Code literal with the first literal being a ': comment in QBasic

3. > <> ( ลองออนไลน์ )

1:  Push a 1 on the stack, duplicate stack
?   Pop top off the stack and skip next instruction if that's a 0
v   Move downwards - rest of the line is ignored

>   move to the right
3   Push 3 onto the stack
n   Print the top of the stack as a number
;   End the program

1
ฉันคิดว่าคุณต้องการลูกบาศก์จำนวนภาษาในคะแนนของคุณ (เช่น 18 / (3 ^ 3))
คณิตศาสตร์ junkie

1

JavaScript, HTML และ PHP, 72 ไบต์ / 3 ^ 3 = 2.67

1<!top?2:2//><!--<?='--'.'><script>document.body.innerHTML=3</script>'?>

ใน HTML สิ่งนี้จะพิมพ์ส่วนนำ 1 ละเว้น<!window?2:2//>แท็กและส่วนที่เหลือเป็นความคิดเห็น HTML

ใน JavaScript จะประเมิน1<!window?2:2และแสดงผล 2 (ต้องทำงานในคอนโซล) และส่วนที่เหลือเป็นความคิดเห็น

ใน PHP ต่อไปนี้เป็นผลผลิตจากเซิร์ฟเวอร์: 1<!top?2:2//><!----><script>document.body.innerHTML=3</script>ซึ่งแทนที่ของ HTML ด้วย13


1
ยินดีต้อนรับสู่ PPCG.SE! โพสต์แรกสุดยอด! สองสิ่ง: โดยปกติเราไม่ชอบคำตอบจาก REPL (โปรแกรม Javascript) นอกจากนี้โค้ด PHP ดูเหมือนจะไม่ทำงานเมื่อฉันใส่มันลงในล่ามออนไลน์ว่า PHP ทำงานอย่างไร
GamrCorps

ขอบคุณ! มันเป็นเทคนิค PHP + HTML (เช่นถ้านี่คือซอร์สโค้ดสำหรับ code.php, การเยี่ยมชมเว็บไซต์ / code.phpในเบราว์เซอร์จะแสดง 3.
cuniculus

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