สวัสดีชาวโลก 0.0!


78

ดิลเบิร์ตยอดเยี่ยมมาก
แหล่งที่มา: Dilbert, 8 กันยายน 2535

ฉันหวังว่าจะเพิ่มความแปลกใหม่ให้กับ "Hello World!" โครงการ

โค้ดโปรแกรมที่เอาต์พุตHello World!โดยไม่มี:

  • ตัวอักษรสตริง / ตัวอักษร
  • ตัวเลข (ฐานใด ๆ )
  • ฟังก์ชั่นที่สร้างไว้ล่วงหน้าที่กลับมา "Hello World!"
  • ตัวอักษร RegEx

ด้วยข้อยกเว้นของ "O" และ 0

† "O" เป็นตัวพิมพ์ใหญ่ "o" ไม่เป็นที่ยอมรับ


4
โปรดหนึ่งใน [code-golf] และ [code-challenge] ไม่ใช่ทั้งสองอย่าง จุดของแท็กเหล่านี้เพื่อช่วยให้ผู้คนค้นหาคำถามเกี่ยวกับกฎที่ต้องการใช้ โดยพื้นฐานแล้วทุกคำถามในเว็บไซต์นี้ควรเป็นเกมประเภทใดเกมหนึ่ง
dmckee

4
-1 พวกเรามีปัญหากับHello Worldแล้วและฉันคิดว่าความท้าทายนี้คล้ายกันเกินไป ฉันจะลงคะแนน "ใกล้เคียงกับที่ซ้ำกัน" ถ้าฉันไม่ได้เป็น mod
Chris Jester-Young

2
@zzzzBov: ฉันไม่คิดว่ามันจะแตกต่างกันพอที่จะรับประกันคำถามอื่นในชุดรูปแบบ "สวัสดีโลก" ชุดรูปแบบที่แตกต่างกันจะดีกว่า แต่นั่นเป็นเพียงความคิดเห็นของฉัน
Chris Jester-Young

1
ฉันคิดว่านี่เป็นรหัสกอล์ฟที่ดี - และดีกว่ารุ่นก่อน ๆ
MtnViewMark

2
บางคนคิดว่านั่น"O"*หมายความว่าพวกเขาสามารถมีสตริงตัวอักษรกับจำนวนของ O ใด ๆ รวมถึงศูนย์ ฉันไม่คิดว่าเป็นความตั้งใจ กรุณาชี้แจง
Timwi

คำตอบ:


83

Windows PowerShell มากเกินไป

ใช่แน่นอนในวันที่เราต้องเขียน»สวัสดีชาวโลก«ใช้ศูนย์ (เกือบเฉพาะ) ...

&{-join[char[]]($args|% Length)} `
O00000000000000000000000000000000000000000000000000000000000000000000000 `
O0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O0000000000000000000000000000000 `
O00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O00000000000000000000000000000000

เมื่อทราบอย่างจริงจังมากขึ้น:

Windows PowerShell, 25

Write-Host Hello World!

ไม่มีตัวอักษรสตริง Hello World!ในมีเพียงแค่เกิดขึ้นจะแยกวิเคราะห์เป็นสตริงตั้งแต่ PowerShell อยู่ในโหมดการแยกอาร์กิวเมนต์มี


2
นั่นเป็นเรื่องจริงได้อย่างไร? O_o
Josh

1
ฉันค้นหาอินเทอร์เน็ตเพื่อดูตัวอย่างหรือประวัติของสิ่งนี้ นี่มันแปลกมาก คุณสามารถให้ลิงค์ใด ๆ
Caleb Jares

1
"ย้อนกลับไปในวันนั้น" :) พันปีคุณเลิกฉัน👍

โอ้ เอก ฉันเข้าใจแล้ว
Matthew Roh

86

C, 327 ตัวอักษร

#define O(O)-~O
#define OO(o)O(O(o))
#define Oo(o)OO(OO(o))
#define oO(o)Oo(Oo(o))
#define oo(o)oO(oO(o))
#define O0 putchar
main() {
    O0(OO(oO(!O0(~O(Oo(OO(-O0(~O(Oo(-O0(O(OO(O0(oo(oO(O0(O(oo(oO(OO(Oo(oo(oO(
    O0(oo(oo(!O0(O(OO(O0(O0(O(OO(Oo(O0(O(Oo(oo(oO(O0(oo(oo(oO(oo(oo(0))))))))
    ))))))))))))))))))))))))))))))))))))));
}

น่าแปลกที่มันไม่เสียความงามหลังจากประมวลผลล่วงหน้า:

main() {
putchar(-~-~-~-~-~-~-~-~-~-~!putchar(~-~-~-~-~-~-~-~-putchar(~-~-~-~-~-~-
putchar(-~-~-~putchar(-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~putchar(
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~putchar(-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
-~-~-~-~-~-~-~-~-~-~-~-~-~!putchar(-~-~-~putchar(putchar(-~-~-~-~-~-~-~putchar
(-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~putchar(-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~0))))))))))));
}

2
น่ากลัว แม้ว่าจะหายไป!
Mark Reed

1
นี่คือศิลปะที่แท้จริง!
Askaga

ฉันรู้สึกว่าร่างกายจะสั้นลงได้ด้วยตัวประมวลผลล่วงหน้ามากยิ่งขึ้น ไม่แน่ใจว่ารหัสโดยรวมจะได้ประโยชน์หรือไม่
Zwei

@Zwei มันเป็นไปได้ที่จะย่อให้สั้นลง ฉันไม่ได้พยายามหามาโครที่ดีที่สุด
ugoren

ทำไมคุณไม่ใส่ parens ใน CLANG #define ด้วยล่ะ จะบันทึกไม่กี่ไบต์ไม่ แก้ไข: ไม่เป็นไรลองแล้วและตอนนี้ฉันเห็นว่าทำไมมันไม่ทำงาน ahaha
Albert Renshaw

52

BrainFuck, 102 111ตัวอักษร

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

ตรงตามกฎทั้งหมด

เครดิตไปที่แดเนียล Cristofani


1
ฉันไม่สามารถตัดสินใจได้ว่าควรระบุกฎด้วยหรือ0 and/or "O" must be usedไม่ มันเป็นความหมายเล็กน้อยสำหรับ BrainFuck และ golfscript แต่พวกเขาไม่มีเวลาลำบากกับความท้าทายนี้
zzzzBov

34
@zzzzBov: หากพวกเขาจะต้องใช้รหัส Brainfuck ก็จะรวมพวกเขา แม้ว่าจะไม่ส่งผลกระทบต่อโปรแกรม แต่อย่างใด
Joey

38

C, 182 ไบต์

#define decode(c,o,d,e,g,O,l,f) e##c##d##o
#define HelloWorld decode(a,n,i,m,a,t,e,d)
#define Puzzles(flog) #flog
#define CodeGolf Puzzles(Hello World!)
HelloWorld(){puts(CodeGolf);}

1
+1, ฮ่า ๆ , คุณยังคงใช้เคล็ดลับการวางโทเค็น! เพื่อนที่ดี :-)
Quixotic

35

โปรแกรม C - 45

(โกง)

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

#define s(x)#x
main(){puts(s(Hello World!));}

3
สำหรับแนวคิดที่สะดวกมากของ "lexically" :) แต่ความอ่อนโยน FTW!
JB

24

Haskell - 143 ตัวอักษร

o%y=o.o.o$y;o&y=(o%)%y;o!y=o$o$(o%)&y
r=succ;w=pred;a=r%y;e=r$w&l;l=r!'O';o=r e;u=(w&)&a;y=r%l
main=putStrLn[w!o,o,l,l,y,w u,w$r&'O',y,a,l,e,u]

เอ่อนั่นมันขน!

ไม่มีตัวเลขไม่มีการดำเนินการที่เป็นตัวเลขตัวแปรที่ถูกเปลี่ยนชื่อเพื่อความสนุก

การแสดงออกบางอย่างอาจดี:

  • o%y, o&yและo!yแต่ละฟังก์ชันใช้oกับyหลาย ๆ ครั้ง: 3, 9 และ 29 ครั้งตามลำดับ 29?!?! ใช่ 29!
  • rและจะมีต่อไปและก่อนหน้านี้ตัวละครซึ่งเมื่อนำมาใช้โดยใช้ฟังก์ชั่นการสั่งซื้อดังกล่าวข้างต้นสูงกว่าสามารถทำเพื่อให้ได้รับตัวอักษรทั้งหมดที่จำเป็นจากw'O'

ลำดับของการข้ามที่จำเป็นคือ:

'O' +29    -> 'l'
'O'  +9 -1 -> 'W'
'l'  -9 +1 -> 'd'
'l'  +3    -> 'o'
'd'  +1    -> 'e'
'o'  +3    -> 'r'
'e' -29    -> 'H'
'r' -81    -> '!'
'!'  -1    -> ' '

  • แก้ไข: (134 -> 144) ลืมเอาเครื่องหมายอัศเจรีย์ถอนหายใจ ....
  • แก้ไข: (144 -> 143) ลบออกไม่จำเป็น$เปลี่ยน#ไป!สำหรับ Hugs

1
o rly? oo ....
Joey Adams

มันไม่ทำงาน codepad.org/lyKyj1Ox
nyuszika7h

@ Nyuszika7H นั่นเป็นเพราะบริการนี้เปิดตัวเลือกคอมไพเลอร์ตามค่าเริ่มต้น มันควรจะรวบรวมกับ GHC ธรรมดา
FUZxxl

@ Nyuszika7H มันใช้งานได้ดีกับ GHC ปัญหาคือบริการที่ใช้ Hugs จากปี 2006 ดูเหมือนจะมีสองสิ่งที่ Hugs ไม่สามารถจัดการได้: 1) การใช้ '#' เป็นตัวดำเนินการ เปลี่ยนเป็น '!' ทำให้มันใช้งานได้ 2) คำจำกัดความของr=succและw=predดำเนินการตามที่ Hugs ดำเนินการ จำกัด monomorphism เปลี่ยนเป็นr x=succ xและw x=pred xทำให้ใช้งานได้ (มีค่าใช้จ่าย 4 ตัวอักษร) สิ่งเหล่านี้ดูเหมือนจะเป็นปัญหาในอ้อมกอด
MtnViewMark

ยังคงใช้ได้หลังจากการแก้ไข @Community หรือไม่
Hosch250

22

Unary , 10 197 1137672766964589547169964037018563746793726105983919528073581559828 ไบต์

ฉันประหลาดใจที่ยังไม่มีใครทำสิ่งนี้ ...

มันนานเกินไปที่จะโพสต์ที่นี่ แต่ก็1137672766964589547169964037018563746793726105983919528073581559828เลขศูนย์

หรืออ่านง่ายขึ้น: ~ 10 67 zeroes

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


2
เมื่อฉันอ่าน "ฉันเคยเขียนฐานข้อมูลทั้งหมดโดยใช้เลขศูนย์เท่านั้น" ความคิดแรกของฉันคือ "เขาต้องทำมันด้วยเอกภาพ" +1 สำหรับการเป็นคำตอบเดียวในการทำงานอย่างที่การ์ตูนทำ
Cyoce

21

Mathematica 12 ตัวอักษร

สัญลักษณ์เท่านั้นไม่มีสตริง

Hello World!   

ตัว! เป็นตัวดำเนินการแฟคทอเรียล แต่เนื่องจากสัญลักษณ์ Hello และ World นั้นไม่ได้กำหนดไว้จะส่งคืนอินพุตที่ไม่เปลี่ยนแปลง

หากเราปรับเปลี่ยนโปรแกรมเล็กน้อย:

Hello=2;
World=3;
Hello World!  

จากนั้นจะพิมพ์12(2 * 3!)


16

ชุดประกอบ i386 (Linux, ไวยากรณ์ gcc), 440 442 435

วันนี้เป็นวันชุมนุมของฉันและหลังจากนั้นฉันก็จะมีเวลาพอ ฉันอนุญาตให้ตัวเองหมายเลข 128 ดูโปรแกรมด้านล่างเพื่อการอภิปรายว่าทำไม ไม่มีอะไรพิเศษ: ฉันแค่เข้ารหัส "Hello World!" ในฐานะที่เป็นแอสเซมบลี opcodes ที่ทำให้รู้สึกโดยไม่ต้องมีค่าคงที่ตัวเลขและเติมในส่วนที่เหลือด้วยเลขคณิต

#define M mov
M $0,%ecx;inc %cx;M %ecx,%ebx;inc %cx;M %ecx,%eax;add %ax,%ax
M %ecx,%edx;shl %cl,%dx;M (e),%ch;add %dl,%ch;dec %ch;M %ch,(l)
M %ch,(j);M %ch,(z);M $0,%ch;shl %cl,%edx;M %dl,(s);inc %dl
M %dl,(b);M (o),%dl;M %dl,(u);add %al,%dl;dec %dl;M %dl,(r)
M $m,%ecx;M $n,%edx;int $c;M %ebx,%eax;M $0,%ebx;int $c
.data
m:dec %eax;e:gs;l:es;j:es;o:outsl (%esi),(%dx)
s:es;push %edi;u:es;r:es;z:es;fs;b:es;n=.-m
t=(n+n)/n;c=t<<(t*t+t)

(ประกอบกับgcc -nostartfiles hello.S -o helloอาจ-m32ขึ้นอยู่กับส่วนโค้งของคุณ)

ทำไมต้องอดทนกับ 128 ฉันต้องการ syscalls เพื่อแสดงอะไรเลย Linux syscalls อยู่ใน INT 80h (128 ทศนิยม); รูปแบบตัวถูกดำเนินการเดียวสำหรับ INT นั้นทันทีดังนั้นจึงเป็นไปไม่ได้ที่จะมีสิ่งอื่นนอกเหนือจากค่าคงที่ ฉันสามารถ (หลังจากฉันเงียบขรึม) พยายามที่จะแสดงว่ามันเป็นฟังก์ชั่นของค่าคงที่เชิงสัญลักษณ์อื่น ๆ ในรหัสน่าจะเป็นnแต่นั่นก็น่าเบื่อมากสำหรับการได้รับไม่มาก ฉันอ่านข้อ จำกัด เกี่ยวกับตัวเลขเพื่อป้องกันการเข้ารหัส ASCII และนั่นไม่ใช่สิ่งที่ฉันทำที่นี่แน่นอนดังนั้นฉันจึงรู้สึกไร้เดียงสามากพอที่จะส่งสิ่งนี้ (FWIW ฉันยังลองแก้ไขรหัสด้วยตนเอง แต่แยกกันแล้ว) ตอนนี้ไม่มี 128 เหลือแล้ว รหัสบริสุทธิ์!

  • Edit1ฟอร์แมตใหม่เพื่อบันทึกบรรทัด; ลบตัวเลข 1 (ไม่มีใครสังเกตเห็น?!)
  • บีบอัดEdit2movด้วยมาโคร CPP; กำจัดส่วนที่เหลืออีก 128

6
นี่คือวิธีโปรแกรมผู้ชายจริง
นิตย์

14

Javascript - 305

ค่อนข้างยาว แต่ฉันชอบวิธีที่ใช้

O=0;O++;O=O.toString();alert([O+0+0+O+0+0+0,0+O+O+0+0+O+0+O,O+O+0+O+O+0+0,O+O+0+O+O+0+0,O+O+0+O+O+O+O,O+0+0+0+0+0,O+0+O+0+O+O+O,O+O+0+O+O+O+O, O+O+O+0+0+O+0,O+O+0+O+O+0+0,O+O+0+0+O+0+0,O+0+0+0+0+O].map(function(e){O=0;O++;O++;return String.fromCharCode(parseInt(e,O))}).reduce(function (a,b){return a+b}))

ฉันชอบมัน. มันจะดีกว่าที่มีพารามิเตอร์ฟังก์ชั่นเป็นOO, OOOแต่แน่นอนที่จะทำให้มันอีกต่อไป
zzzzBov

ดีจริงๆ. ', new string ()' จำเป็นต้องมีหรือไม่ในตอนท้าย? ดูเหมือนว่าจะทำงานโดยไม่มีมัน
Stephen Perelson

3
อ่าไม่ได้ บางครั้งฉันลืมจาวาสคริปต์ที่พิมพ์ได้อย่างอ่อน
david4dev

คุณไม่จำเป็นต้องเหลือ 0 บิต ('0+') และพื้นที่และเครื่องหมายอัศเจรีย์มี 0 บิตเหลือสองบิต การลดทั้งหมดของ 28 ตัวอักษร
Stephen Perelson

10

C # (131 ตัวอักษร)

141 ตัวอักษร 142 ตัวอักษร

enum X{Hello,World,A,B=A<<A<<A}class Y{static void Main(){var c=(char)X.B;System.Console.Write(X.Hello.ToString()+c+++X.World+c);}}

อ่านได้:

// Define some constants (B = 32)
enum X { Hello, World, A, B = A << A << A }
class Y
{
    static void Main()
    {
        // Generate the space (character #32)
        var c = (char) X.B;

        // Remember that “!” is character #33
        System.Console.Write(X.Hello.ToString() + c++ + X.World + c);
    }
}

2
นี่เป็นบิดและดี ฉันรักมัน.
jcolebrand

+1 วิธีที่ดีในการสร้างตัวเลขที่แน่นอน จำไว้นะ!
Igby Largeman

LinqPad โปรแกรม 102 ตัวอักษร:enum X{Hello,World,A,B=A<<A<<A}void Main(){var c=(char)X.B;(X.Hello.ToString()+c+++X.World+c).Dump();}
Cœur

.ToString()-> +""บันทึกเงินได้บางส่วน
Firo

2
@Firo: ... และทำลายกฎ (ไม่อนุญาตให้ใช้ตัวอักษรสตริง)
Timwi

8

JavaScript, 88

t=!0<<-~-~-~-~!0
r=[]
for(i in{Hello:"O",World:0})r+=i+String.fromCharCode(t++)
alert(r)

99

ขอบคุณ @Timwi สำหรับคำแนะนำ

ลบผู้ประกอบการที่ประกอบไปด้วย:

o={Hello:"O",World:0}
t=!0<<-~-~-~-~!0
c=String.fromCharCode
r=c(0)
for(i in o)r+=i+c(t++)
alert(r)

103
aliasedString.fromCharCode

o={Hello:"O",World:0}
t=!0<<-~-~-~-~!0
c=String.fromCharCode
for(i in o)o[i]?r=i+c(t):alert(r+i+c(++t))

117
เปลี่ยน if-else เป็น operator แบบประกอบ

o={Hello:"O",World:0},t=!0<<-~-~-~-~!0
for(i in o)o[i]?r=i+String.fromCharCode(t):alert(r+i+String.fromCharCode(++t))

125
ฉันกำลังจะเก็บ"O""โอ" ไว้ในรายการ

o={Hello:"O",World:0},t=!0<<-~-~-~-~!0
for(i in o)if(o[i])r=i+String.fromCharCode(t)
else alert(r+i+String.fromCharCode(++t))

133

o={Hello:"O",World:0},t=!0<<(!0+!0<<!0)+!0
for(i in o)if(o[i])r=i+String.fromCharCode(t)
else r+=i+String.fromCharCode(t+!0)
alert(r)

@ โจอี้นั่นคือประเด็นหลัก
zzzzBov

@ โจอี้ฉันอ่าน meta codegolf ว่าควรหลีกเลี่ยงการตอบคำถามของตนเองในบางครั้งเพื่อกระตุ้นให้ผู้อื่นลองใช้วิธีการที่แตกต่างกัน แผนของฉันคือการยกเลิกข้อคิดเห็นในหนึ่งหรือสองวัน
zzzzBov

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

@ โจอี้: "มีเพียงห้าคนเท่านั้น" ผิด ทุกคนสามารถแนะนำการแก้ไข เพียงคลิกที่ "แก้ไข" ระหว่าง "ลิงก์" และ "ตั้งค่าสถานะ" แล้วคุณจะเห็นรหัส
John

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

7

GolfScript 63 ตัวอักษร

[0))):O.)?O.*-.O.?+)).O.*+((..O+.O(.O+?.O-O*@.O+O.+$.O.*-).O/]+

ยังไม่มีอะไรใน GolfScript?

อันนี้ใช้ตัวอักษรตัวเลขเดียว0และตัวแปรที่ชื่อว่าO(ซึ่งใช้เพื่อเก็บหมายเลข3) ทุกอย่างอื่นคือเลขคณิตและการจัดการกองซ้อน สตริงHello World!ถูกสร้างขึ้นจากรหัส ASCII ของตัวอักษรโดยตัวละคร

นี่คือวิธีการทำงาน:

[             # insert start-of-array marker
  0))):O      # increment 0 thrice to get 3, and save it in the variable O
  .)?O.*-     # calculate 3^(3+1) - 3*3 = 81 - 9 = 72 = "H" 
  .O.?+))     # calculate 72 + 3^3 + 1 + 1 = 72 + 27 + 2 = 101 = "e"
  .O.*+((     # calculate 101 + 3*3 - 1 - 1 = 101 + 9 - 2 = 108 = "l"
  .           # ...and duplicate it for another "l"
  .O+         # calculate 108 + 3 = 111 = "o"
  .           # ...and duplicate it for later use
  O(.O+?      # calculate (3-1)^(3-1+3) = 2^5 = 32 = " "
  .O-O*       # calculate (32 - 3) * 3 = 29 * 3 = 87 = "W"
  @           # pull the second 111 = "o" to the top of the stack
  .O+         # calculate 111 + 3 = 114 = "r"
  O.+$        # copy the (3+3 = 6)th last element on the stack, 108 = "l", to top
  .O.*-)      # calculate 108 - (3*3) + 1 = 108 - 9 + 1 = 100 = "d"
  .O/         # calculate int(100 / 3) = 33 = "!"
]             # collect everything after the [ into an array
+             # stringify the array by appending it to the input string

7

Brainfuck, 111 ไบต์

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

อัลกอริทึมอธิบาย

Increment cell 0 to 10 (it will be loop counter)
Repeat 10 times ; will stop at cell 0
  Increment cell 1 to 7
  Increment cell 2 to 10
  Increment cell 3 to 3
  Increment cell 4 to 1
Increment cell 1 by 2 and output it ; Thus, output ASCII 72 'H'
etc. for all symbols in 'Hello World!'

รุ่นที่ยาวกว่าโดยไม่มีลูป 389 ไบต์:

+++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++.+++++++++++++++++
++++++++++++.+++++++..+++.-------------------
---------------------------------------------
---------------.+++++++++++++++++++++++++++++
++++++++++++++++++++++++++.++++++++++++++++++
++++++.+++.------.--------.------------------
---------------------------------------------
----.-----------------------.

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

5

Lua 144 97 86 ตัวอักษร

วิธีการที่แตกต่างกันขึ้นอยู่กับความจริงที่ว่าปุ่มตารางเป็นสตริงและความจริงที่ว่า #Hello == #World == 32 == string.byte '\ n'

e=#"O"t=e+e for k,v in pairs{Hello=0,World=e}do T=t^#k io.write(k,string.char(T+v))end

วิธีแก้ปัญหาถ่าน 145

  • ไม่มีสตริงยกเว้น "O" หรือ 0
  • ไม่มี Regexes
  • ไม่มีฟังก์ชั่นที่สร้างไว้ล่วงหน้า

ไม่ได้เข้ารหัสเดลต้าไบต์แล้วบาง primenumbers ฯลฯ ฯลฯ :)

รุ่น Golfed:

e=#"O"d=e+e t=d+e v=d+t z=v+t T=t^d*d^t n=0 for l,m in pairs{T,T/t-z,z,0,d,-T-z,z*z+t*d,T/d,d,-d*t,-t^d,-T+v}do n=n+m io.write(string.char(n))end

แสดงความคิดเห็น:

-- without numbers, strings, regex
-- except "O" and 0
e=#"0"
t=e+e --2
d=t+e -- 3
v=d+t -- 5
z=v+t -- 7
n=0
T=t^d*d^t -- 72 = 2^3+3^2
for l,m in pairs{T, --72
T/t-z, -- 29 = 72/2-7
z, --7
0, -- 0
d, -- 3
-T-z, -- -79 = -72 - 7
z*z+t*d, -- 55 = 7*7 + 2*3
T/d, -- 24 = 72/3
d, -- 3
-d*t, -- -6
-t^d, -- -8
-T+v -- -67 = -72+5
} do
    n=n+q[k]
    io.write(string.char(n))
end

แก้ไข:เปลี่ยนสตริง O หลายรายการและพบว่ามีตัวเลือกที่เหมาะสมที่สุด


"O" * - ฉันคิดว่า * มีไว้สำหรับเชิงอรรถไม่ใช่ "จำนวนของ O ใด ๆ
RomanSt

regex'ing คือสิ่งที่ฉันทำตามธรรมชาติ: p. สามารถแทนที่ได้ด้วยราคา 5 หรือ 3 อักขระพิเศษสำหรับการแก้ปัญหาครั้งแรกและครั้งที่สองตามลำดับ
jpjacobs

แต่ต่อไปฉันจะแก้ไขมันออกมาขอบคุณสำหรับหัวขึ้น
jpjacobs

สวัสดีและผู้สร้างตารางในโลกยังคงเป็นตัวอักษรสตริง - นั่นเป็นเพียงน้ำตาล syntatic
Oleg V. Volkov

5

Python ( 126 130)

O=ord("O")
N=O/O
T=N+N
R=N+T
E=T**R
E<<T
print'O'[0].join(chr(c+O)for c in[N-E,E*R-T,_-R,_-R,_,N-_-E-E,E,_,_+R,_-R,E*R-R,T-_-E-E])

''ไม่อนุญาตให้ใช้ตัวอักษร
RomanSt

1
@romkyns: จริงมากแก้ไขแล้ว
Hoa Long Tam

5
ไม่คงที่ (เอาต์พุตผิด) [:0]คุณอาจจะคิดว่า
WolframH

5

J, 250

oo=:#a.
o0=:<.o.^0
o0o=:%:%:%:oo
ooo=:p:^:(-*oo)
o=:<.(^^^0)*(^^0)*(^^0)
o00=:o,~(,[)o0(**(**[))o0o
oo0=:*/p:(!0),>:p:!0
echo u:(o0(**(**]))o0o),(ooo ooo ooo(o.o.^^^0)*oo),o00,(+:%:oo),(oo0-~!p:>:>:0),o,(<.-:o.o.^o.^0),(>:p:(]^])#o00),(*:#0,#:oo),oo0

ฉันสนุกไปกับสิ่งนี้มากเกินไปและฉันเรียนรู้ที่จะบู๊ต J อีกเล็กน้อย นอกจากนี้ooo ooo oooอาจเป็นรหัสที่โง่ที่สุดที่ฉันเคยเขียน


5

QR พร้อม halfblocks (169) 121 ตัวอักษร

ด้วย QR-Code โดยใช้ UTF-8 อักขระครึ่งตัว:

▗▄▄▄▗▄▖▗▄▄▄  
▐▗▄▐▝█▙▐▗▄▐  
▐▐█▐▝▄ ▐▐█▐  
▐▄▄▟▗▗▗▐▄▄▟  
▗▗▖▄▞▝ ▗ ▖▄  
 ▟▜ Code ▀▟  
 ▙▀ Golf ▘▚  
▗▄▄▄▐▗▘▟▙▝▝  
▐▗▄▐▝▀▛▘▘█▖  
▐▐█▐▐▖▐▝▖▜▘  
▐▄▄▟▗ ▌█▛▗▝  3

โชคไม่ดีที่สิ่งนี้จะไม่แสดงที่นั่น มีตัวอย่างเล็กน้อยที่มีสไตล์ชีทที่เหมาะสม แต่ .. ไม่! ภาษาที่แสดงที่นี่ไม่ใช่ HTML! ภาษาที่นำเสนอที่นี่คือรหัส QR ! (HTML และ CSS ใช้ที่นี่เพื่อแก้ไขข้อผิดพลาดในการนำเสนอเท่านั้น!)

QR พร้อม halfblocks (169)

  ▛▀▀▌▚▝▐▀▌▛▀▀▌
  ▌█▌▌▖▞▚▚▘▌█▌▌
  ▌▀▘▌ ▚▛▞ ▌▀▘▌
  ▀▀▀▘▚▌▙▘▌▀▀▀▘
  ▄▙▛▚▜▀▄▀█▖▝▄▌
  ▖▄▄▘▖▄▄▄▟▗ ▀▘
  ▜Code  golf!▌
  ▚▟▘▘▝▙▛▚▐▀▖▜▘
  ▘▘ ▀▛▗▚▗▛▀▌▄ 
  ▛▀▀▌▟▌▜▖▌▘█▐▘
  ▌█▌▌▘█▌▟█▜▙▐ 
  ▌▀▘▌▚▌▌█▗▝▌▚▘
  ▀▀▀▘ ▝▘▘▀▀▀▀▘

Idealy สิ่งนี้อาจมีลักษณะ:

QR: สวัสดีชาวโลก!


ใช้สมาร์ทโฟนของคุณเพื่อดูสิ่งนี้หรือzbarภายใต้ลินุกซ์ (ตัวอย่าง: xwd | xwdtopnm | zbarimg /dev/stdin)
เอฟ HAURI

ไม่ใช่Code golf!ตัวอักษรใช่ไหม
ugoren

2
ฉันคิดว่าคำตอบนี้มีความคิดสร้างสรรค์ แต่ไม่มีคุณสมบัติเพราะไม่ใช่โปรแกรม QR เป็นวิธีการเข้ารหัสข้อมูลไม่ใช่ภาษาโปรแกรม
ugoren

1
นอกจากนี้สิ่งที่เกี่ยวกับภาษาเช่นpostscript, svgหรืออื่น ๆภาษาที่นำเสนอใช้แล้วมี !? วิธีการเข้ารหัสเป็นภาษาอยู่แล้ว ... ผมคิดว่า!
F. Hauri

1
ฉันใช้ HTML (ลบด้วย JS) เป็นตัวอย่างสำหรับสิ่งที่ไม่ใช่ภาษา กันไปสำหรับ QR ดูเกณฑ์เหล่านี้
ugoren

4

สกาล่า ( 357 423) 361 ตัวอักษร)

ไม่ใช่คำตอบที่สั้นที่สุดน่าเสียดาย แต่หวังว่าจะได้รับคะแนนโบนัสสำหรับการใช้งาน'O'และ'0'

def h(){type t=scala.Char;def OO(c:t)={(c-('O'/'O')).toChar};def O(c:t)={OO(OO(OO(c)))};def O00(c:t)={(c+('O'/'O')).toChar};def O0(c:t)={O00(O00(O00(c)))};val l=O('O');val z=O0(O0(O0(O0(O0(O0(O0(O0(O0(O0(O0(0)))))))))));print(OO(O(O('O'))).toString+(OO(O(O(O('O')))).toString+l+l+'O'+OO(z)+O0(O0(O0(OO('O'))))+'O'+O0('O')+l+OO(OO(O(O(O('O')))))+z).toLowerCase)}

ก่อนหน้านี้:

def h(){type t=scala.Char;print(OO(O(O('O'))).toString+(OO(O(O(O('O')))).toString+O('O')+O('O')+'O'+OO(O0(O0(O0(O0(O0(O0(O0(O0(O0(O0(O0(0))))))))))))+O0(O0(O0(OO('O'))))+'O'+O0('O')+O('O')+OO(OO(O(O(O('O')))))+O0(O0(O0(O0(O0(O0(O0(O0(O0(O0(O0(0)))))))))))).toLowerCase);def OO[Char](c:t)={(c-('O'/'O')).toChar};def O[Char](c:t)={OO(OO(OO(c)))};def O00[Char](c:t)={(c+('O'/'O')).toChar};def O0[Char](c:t)={O00(O00(O00(c)))}}

รุ่นเก่า (ผิดกฎหมาย):

def h(){type t=scala.Char;print(""+OO(O(O('O')))+(""+OO(O(O(O('O'))))+O('O')+O('O')+'O'+OO(O(O(O(O(O('0'))))))+O0(O0(O0(OO('O'))))+'O'+O0('O')+O('O')+OO(OO(O(O(O('O')))))+O(O(O(O(O('0')))))).toLowerCase);def O0[Char](c:t)={O00(O00(O00(c)))};def O[Char](c:t)={OO(OO(OO(c)))};def OO[Char](c:t)={(c-('O'/'O')).toChar};def O00[Char](c:t)={(c+('O'/'O')).toChar}}

ฉันเชื่อว่าไม่อนุญาตให้ใช้สตริงที่ว่างเปล่า ( "") และสตริง / ตัวอักษรที่มีอักขระเป็นศูนย์ ( '0') เฉพาะสตริง"O"(capital O) และหมายเลข0เท่านั้น
Timwi

ซวยละ. จำเป็นต้องมีการแก้ไขบางอย่าง ...
Gareth

4

C (หรือ C ++) (ส่วนของร่างกาย: 49) (โกง)

เมื่อรวบรวมรวบรวมเป็นเลขฐานสองที่เรียกว่าHello\ World\!รหัสคือ:

#include <stdio.h>
#include <string.h>
int main(int i,char**a)
{
  int j=i+i,k=j<<j;puts(strrchr(*a,'O'-(k<<j))+i);
}

strrchrส่วนจะต้องลบเส้นทางแบบเต็มในกรณีที่ชื่อโปรแกรมผ่านมีเส้นทางแบบเต็มยังไม่มีข้อโต้แย้งจะต้องผ่านใน ..

บรรทัดการคอมไพล์ทั่วไปอาจเป็น: gcc -o Hello\ World\! foo.c


3

C ++, 141, 146

ครั้งแรกที่ลองใช้หนึ่งในนั้นอาจมีการปรับปรุงให้ดีขึ้นเล็กน้อย:

char o='O'/'O',T=o+o,X=T+o,f=T+X,t=f+f,F=t*f,h=F+F,l=h+t-T,O=l+X;
char c[]={F+t+t+T,h+o,l,l,O,o<<f,h-t-X,O,l+f+o,l,h,0};
cout<<c;

แก้ไข:

ขโมยเคล็ดลับการหารจากโพสต์อื่นไม่น่าเชื่อว่าฉันไม่คิดอย่างนั้น :(


1
คุณควรที่จะรวมถึงเทคนิคโปรแกรมการทำงานทั้งหมดในการนับตัวละครรวมถึงสิ่งที่ต้องการหลักห้องสมุดรวมใด ๆstd::ฯลฯ ฯลฯ
Wug

3

Haskell - 146

a:b:c:f:g:s:j:z=iterate(\x->x+x)$succ 0
y=[f+j,d+a,c+s+h,l,a+b+l,s,f-s+o,o,a+b+o,l,l-f,a+s]
[h,e,l,_,o,_,w,_,r,_,d,x]=y
main=putStrLn$map toEnum y

ฉันคิดว่าการจับคู่รูปแบบจะทำให้ Haskell มีขนาดใหญ่ขึ้นโดยเฉพาะอย่างยิ่งเพราะคุณสามารถเริ่มต้นพลังของสองอย่างดังนี้:

one:two:four:eight:sixteen:thirty_two:sixty_four:the_rest = iterate (*2) 1

แต่เท่าที่เห็นในMtnViewMark ของ Haskell คำตอบ (ซึ่งสมควรได้รับ upvotes หลายหลายโดยวิธีการ) และคำตอบอื่น ๆ การบีบอัดที่ดีขึ้นสามารถทำได้โดยการใช้มากกว่าเพียงแค่การและ+-


3

Clojure - 46 ตัวอักษร

(map print(butlast(rest(str'(Hello World!)))))

โปรดทราบว่าHelloและWorld!เป็นสัญลักษณ์ไม่ใช่ตัวอักษรใด ๆ


3

C ++

/*
Hello World!
*/
#define CodeGolf(r) #r
#include<iostream>
using namespace std;
int main()
{
    char str[*"O"];
    freopen(__FILE__,CodeGolf(r),stdin);
    gets(str);gets(str);puts(str);
}

1
การ100ละเมิดกฎเกี่ยวกับตัวเลข โปรดแทนที่ด้วยสิ่งที่สนุกมากขึ้น
Joey Adams

@ joey-adams ขอบคุณที่ชี้นำ เปลี่ยนแล้ว
fR0DDY

Line 7: error: ISO C++ forbids declaration of 'main' with no type
นาธานออสมัน

@ george-edison แก้ไขแล้ว แม้ว่ามันจะทำงานได้โดยไม่ต้องintใช้ g ++
fR0DDY

3

PHP - 49 ตัวอักษร

<?=Hello.chr(($a=-~-~-~0).~-$a).World.chr($a.$a);

รายการเปลี่ยนแปลง :

  • (73 -> 86) ลืมเอาเครื่องหมายอัศเจรีย์ ... ถอนหายใจ
  • (86 -> 57) ใช้ตัวแปรเดี่ยวพร้อมการเพิ่มขึ้น
  • (57 -> 51) เปลี่ยนเป็นใช้ตัวดำเนินการ bitwise ใน 0
  • (51 -> 49) ตัวดำเนินการระดับบิตเพิ่มเติม

1
ค่อนข้างแน่ใจว่าค่าคงที่จะนับเป็นตัวอักษรสตริงเนื่องจากการแปลง
เควินบราวน์

@ Bass5098 ขอบคุณสำหรับการแก้ไขของคุณ! ฉันอนุมัติแล้ว
nyuszika7h

@ Bass5098 ที่ใช้งานไม่ได้คุณต้องมีตัวอักษร 32 และ 33 ไม่ใช่ 21 และ 22 <?$a=-~-~-~0;echo Hello.chr($a.$a-1).World.chr($a.$a);แต่ใช้ได้ 54 ตัวอักษร
zzzzBov

@zzzzBov ฉันไม่สามารถหาวิธีล้างการแก้ไขได้ในตอนแรกและลืมที่จะย้อนกลับเมื่อได้รับการอนุมัติ
Kevin Brown

อ๊ะฉันออกจากที่1นั่น ที่นั่นฉันไปผิดกฎของตัวเอง ... <?$a=-~-~-~0;echo Hello,chr($a.~-$a),World,chr($a.$a);คือสิ่งที่ฉันควรจะใช้ยังคง 54 ตัวอักษร
zzzzBov

3

Python, 106

o=-~-~-~0
L=o+o
d,W=-~L,o**o
_=o*W
print str().join(chr(L+W+_-i)for i in[d*L,L+d,L,L,o,-~_,W,o,0,L,d+d,_])

ใช้ '' (โดยไม่มีที่ว่างก่อนหน้า) แทน str ()
aditsu

2
นอกจากนี้ดีมาก! :) Btw การมอบหมายหลายรายการไม่ได้บันทึกตัวละครใด ๆ
aditsu

@aditsu: ฉันทำไม่ได้นั่นจะเป็นสตริงตัวอักษร ขอบคุณสำหรับความคิดเห็นของคุณ :)
flornquake

โอ้โหสตริงที่ว่างเปล่าไม่ได้ลงทะเบียนเป็นตัวอักษรในใจของฉัน
aditsu

3

Perl, 186 ไบต์

@A=(0,0,0,0);@B=(@A,@A);@C=(@B,@B);@D=(@C,@C);@E=(@D,@D);@d=(@E,@D,@A);$l=[@d,@B];$o=[@$l,0,0,0];print(chr@$_)for[@E,@B],[@d,0],$l,$l,$o,\@D,[@E,@C,@A,0,0,0],$o,[@$o,0,0,0],$l,\@d,[@D,0]

ตัวอักษรแต่ละตัวจะถูกพิมพ์ผ่านหมายเลขลำดับซึ่งเป็นความยาวของอาร์เรย์ การสร้างอาร์เรย์ได้รับการปรับให้เหมาะสมผ่านการแสดงเลขฐานสองของตัวเลขตัวอักษร

Ungolfed:

@A = (0, 0, 0, 0);          # A = 2^2
@B = (@A, @A);              # B = 2^3
@C = (@B, @B);              # C = 2^4
@D = (@C, @C);              # D = 2^5
@E = (@D, @D);              # E = 2^6

# d = 100 = 0x64 = 1100100b
@d = (@E, @D, @A);          # d = 2^6 + 2^5 + 2^2 

# l = 108 = 0x6C = 1101100b
$l = [@d, @B];              # l = d + 2^3

# o = 111 = 0x6F = 1101111b
$o = [@$l, 0, 0, 0];        # o = l + 3

print (chr @$_) for
    [@E, @B],              # "H"    H  =  72 = 0x48 = 1001000b = 2^6 + 2^3
    [@d, 0],               # "e"    e  = 101 = 0x65 = 1100101b = d + 1  
    $l, $l, $o,            # "llo"
    \@D,                   # " "   ' ' =  32 = 0x20 = 0100000b = 2^5
    [@E, @C, @A, 0, 0, 0], # "W"    W  =  87 = 0x57 = 1010111b = 2^6 + 2^4 + 2^2 + 3
    $o,                    # "o"
    [@$o, 0, 0, 0],        # "r"    r  = 114 = 0x72 = 1110010b = o + 3
    $l, \@d,               # "ld"
    [@D,0]                 # "!"    !  =  33 = 0x21 = 0100001b = 2^5 + 1

ดูเหมือนว่า vodoo ไบนารีของฉันเป็นแรงบันดาลใจให้คุณ :) +1
masterX244

3

Java 389 ตัวอักษร

พบการประกาศที่ไม่จำเป็น

class A{static int a=0,b=a++,f=a,e=a++;static char p(String s){return(char)Byte.parseByte(s,a);}public static void main(String[]z){long x=e,y=b;String c=((Long)x).toString(),d=((Long)y).toString();char l=p(c+c+d+c+c+d+d),m=p(c+c+d+d+c+d+c),o=(char)(l+a+f),_=p(c+d+d+d+d+d),$=_++;System.out.print(new char[]{p(c+d+d+c+d+d+d),m,l,l,o,$,p(c+d+c+d+c+c+c),o,(char)(o+a+f),l,(char)(m-f),_});}}

ประวัติอยู่ในประวัติการแก้ไขในขณะนี้ซึ่งเป็นเวอร์ชันดั้งเดิมที่อ่านได้:

// H  e  l    l   o      W  o  r   l    d  !
//72,101,108,108,111,32,87,111,114,108,100 33
import static java.lang.Integer.*;
class A
{


    public static void main(String[] args)
    {
        Integer a=0,b=a++,e=a++;  // making a 0 a 1 and a 2 which is required later;
        String c=e.toString(),d=b.toString(),z=c.substring(0,0);  //

        String H = ((char)parseInt(d+c+d+d+c+d+d+d,a))+z+  // make binary values and then to char
                (char)parseInt(d+c+c+d+d+c+d+c,a)+
                (char)parseInt(d+c+c+d+c+c+d+d,a)+
                (char)parseInt(d+c+c+d+c+c+d+d,a)+
                (char)parseInt(d+c+c+d+c+c+c+c,a)+
                (char)parseInt(d+d+c+d+d+d+d+d,a)+
                (char)parseInt(d+c+d+c+d+c+c+c,a)+
                (char)parseInt(d+c+c+d+c+c+c+c,a)+
                (char)parseInt(d+c+c+c+d+d+c+d,a)+
                (char)parseInt(d+c+c+d+c+c+d+d,a)+
                (char)parseInt(d+c+c+d+d+c+d+d,a)+
                (char)parseInt(d+d+c+d+d+d+d+c,a)
                ;
        System.out.println(H);  //obvious
    }

3

Perl 6 , 199 ไบต์

my \O=+[0];my \t=O+O;my \T=t+O;my \f=(t+t,O);my \F=t+T;my \S=T+T;my \L=(S,F);
say [~] ((S,T),(|L,t,0),(my \l=(|L,T,t)),l,(my \o=(|l,O,0)),F,(S,|f,t,0),o,(|L,|f),l,(|L,t),(F,0),)
.map({chr [+] t X**@_})

(มีการเพิ่มบรรทัดใหม่เพื่อลดความกว้าง แต่ไม่จำเป็นจึงไม่นับ)


Hello World! ถูกเข้ารหัสเป็นรายการของพลังของ 2 ตัวอักษรแต่ละตัว

มีเป็นสิ่งที่เดียวที่ฉันมีตัวอักษรที่ใช้สำหรับอะไรอื่นนอกจาก0 0มันถูกใช้เพื่อสร้างรายการองค์ประกอบหนึ่งซึ่งจะกลายเป็นหมายเลขทันที1ด้วยตัวดำเนินการคำนำหน้าตัวเลข ( +[0])

my \O=+[0];    # one          # (List.elems)
my \t=O+O;     # two
my \T=t+O;     # Three
my \f=(t+t,O); # (four, one)  # <W r>
my \F=t+T;     # five
my \S=T+T;     # six

my \L=(S,F);   # lowercase letter  # (6,5)

say [~] (
  (S,T),            # H
  (|L,t,0),         # e
  (my \l=(|L,T,t)), # l
  l,                # l  reuse <l>
  (my \o=(|l,O,0)), # o  reuse <l>, add 0,1
  F,                # ␠
  (S,|f,t,0),       # W
  o,                # o  reuse <o>
  (|L,|f),          # r
  l,                # l  reuse <l>
  (|L,t),           # d
  (F,0),            # !
).map({chr [+] t X**@_})

3

JavaScript 662 ตัวอักษร

O=[[,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],[],[,,,,,,,,,,,,,,,,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,]];for(O_O=[].length;O.length>O_O;O_O++)document.write(String.fromCharCode((O[O_O].length||-Math.pow([,,].length,[,,,,,].length)-[,,,,,,,].length)+Math.pow([,,].length,[,,,,,,].length)+Math.pow(++[,].length,[,,,].length)-[,].length));document.write(String.fromCharCode(Math.pow([,,].length,[,,,,,].length)+[,].length))

สิ่งที่เกี่ยวกับการใช้อาเรย์ตัวอักษรในทางที่ผิดเพียงเพื่อให้มีฐานเป็นนารี 0โปรแกรมนี้จะได้ประโยชน์จากการไม่ได้ใช้


แม้ว่านี่อาจจะใช้ได้ แต่ปริศนานี้เป็นรหัสกอล์ฟซึ่งหมายความว่าคุณควรเล็งรหัสสั้นที่สุดเท่าที่จะเป็นไปได้ ที่ 600+ ตัวอักษรคุณจะอยู่ใกล้กับ <100 ตัวอักษรที่โซลูชัน JS ปัจจุบันมีอยู่แล้ว
zzzzBov

1
@zzzzBov: จริง ๆ แล้วฉันไม่ได้พยายามจะชนะ
Konrad Borowski

1
0โปรแกรมนี้จะได้ประโยชน์จากการไม่ได้ใช้ เกี่ยวกับO_O=0;อะไร
Erik the Outgolfer

@EriktheGolfer: แก้ไขแล้วขอบคุณ ฉันไม่สังเกตเห็นสิ่งนั้น
Konrad Borowski

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