สวัสดีชาวโลก!!! การกระจาย Fibonacci


21
  1. โปรแกรมของคุณควรแสดงผลอย่างถูกต้อง: Hello world!!!มีหรือไม่มี linefeed หลังจาก
  2. โปรแกรมของคุณไม่ควรป้อนข้อมูลใด ๆ
  3. การแจกจ่ายอักขระซอร์สโค้ดต้องถูกต้องตาม:
    • จำนวนอักขระที่เป็นตัวเลข (0-9) จะต้องเป็นลำดับหมายเลขฟีโบนักชีอย่างแน่นอน
    • จำนวนของอักขระที่ไม่ใช่ตัวเลขอื่น ๆ ! (0-9) ในซอร์สโค้ดจะต้องตรงกับหมายเลขลำดับฟีโบนักชีก่อนหมายเลขลำดับฟีโบนักชีข้างต้นทั้งหมด

สี่ตัวอย่างของการกระจายตัวอักขระที่ถูกต้องในซอร์สโค้ด:

  • 13 ตัวเลข, 8 อักขระที่ไม่ใช่ตัวเลข
  • 34 ตัวเลข, 21 อักขระที่ไม่ใช่ตัวเลข
  • ตัวเลข 55 ตัว, อักขระที่ไม่ใช่ตัวเลข 34 ตัว
  • ตัวเลข 89 ตัวอักขระที่ไม่ใช่ตัวเลข 55 ตัว

นี่คือ code-golf รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ! โชคดี!

แก้ไข: เนื่องจากคำถามนี้มีข้อ จำกัด เกี่ยวกับขนาดซอร์สโค้ดประกอบกับการเป็น code-golf คำตอบที่ยอมรับได้ (หากมีมากกว่าหนึ่งตัวอักษรที่มีความยาวอักขระที่ชนะเท่ากัน) จะเป็นคำตอบที่ได้รับคะแนนโหวตมากที่สุด 03-01


6
ดังนั้นการแก้ปัญหาทั้งหมดมีจำนวนตัวอักษรซึ่งเป็นจำนวนฟีโบนักชี
Howard

1
นี่เป็นโปรแกรมที่จะตรวจสอบคำตอบ (วางรหัสลงในช่องป้อนข้อมูล.)
จัสติน

1
เป็นไปได้ไหมที่จะทำเช่นนี้ด้วยตัวอักษรน้อยกว่า 55 ตัว? เอาต์พุตที่ต้องการมี 14 ตัวอักษรและฉันไม่สามารถนึกถึงภาษาที่สามารถใช้ตัวเลขในการส่งออกตัวอักษรโดยไม่ต้องใช้อักขระอย่างน้อยหนึ่งตัวต่ออักขระ
จัสติ

2
@Plarsen ไม่ตกลงอย่างแน่นอน
John Dvorak

1
เอาล่ะฉันจะไม่เปลี่ยนกฎแล้ว :)
Plarsen

คำตอบ:


27

พรอมต์คำสั่งของ Windows - 34, 8 , 5 ตัวอักษร (2 ด้านล่าง)

* สิ่งเหล่านี้อาจจะใช่หรือไม่ใช่กฎข้อที่ 2 แต่ที่นี่มันก็เป็นเช่นนั้น

%~099

ตั้งชื่อไฟล์:

&start call echo Hello world!!!&exit -b .cmd


ตอนนี้ให้เสียหายระบบไฟล์เล็กน้อย - 2 ตัวอักษร (หรือน้อยกว่าถ้าคุณต้องการ)

A1

ตั้งชื่อไฟล์ (โดยใช้วิธีการนอกรีตที่คุณต้องการ):

"&start call echo Hello world!!!&exit&.cmd

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

เนื่องจากสคริปต์ cmd ถูกเรียกใช้ด้วย 'cmd.exe / C "% 1"% *' คำสั่งที่เรียกใช้จะเป็น:

cmd.exe /C "c:\PATH_TO_THE_SCRIPT\"&start call echo Hello world!!!&exit&.cmd"

ซึ่งจะอยู่ในลำดับต่อไปนี้:

  • ล้มเหลวในการดำเนินการ "c: \ PATH_TO_THE_SCRIPT \"
  • เปิดการพิมพ์เชลล์ใหม่ Hello world! \ n
  • ออกจากเปลือกเดิม

2
ว้าว! ฉันคิดว่าเรามีผู้ชนะถ้ากฎไม่ได้บอกว่าไม่มีข้อมูล +1 อย่างไรก็ตามสำหรับการคิดนอกกรอบ
Plarsen

2
โค้ดกอล์ฟกับ Windows CMD ... +1 นอกจากนี้ยังเป็นที่ถกเถียงกันอยู่ว่า "ไม่มีการป้อนข้อมูล" อาจมีความหมาย "ไม่อ่าน STDIN": P
Camilo Martin

1
นั่นคือเคล็ดลับที่น่าสนใจสำหรับโรงแรมพร้อมสนามกอล์ฟรหัสอื่น ๆ ด้วย ... เขียนรหัสที่แท้จริงในชื่อไฟล์และการใช้สิ่งที่ต้องการeval $0ที่จะรันมัน <rolleyes>
Tobia

1
นั่นเป็นไปไม่ได้ !! 5 ตัวอักษร? วิธีการที่น่าสนใจจริงๆ
Plarsen

1
ที่จริงแล้วฉันเพิ่งโพสต์วิธีแก้ปัญหาถ่าน 2 ตัวด้านล่าง
Tobia

20

MySQL, 34

x'48656C6C6F20776F726C642121'||'!'

นี่คือการแสดงออกของ MySQL ที่ประเมินHello world!!!สมมติว่าการตั้งค่ารวมถึงsql_mode PIPES_AS_CONCATมันมีตัวเลข 21 หลักและไม่ใช่ตัวเลข 13 หลัก

ไม่ว่าจะมีคุณสมบัตินี้เป็นรายการที่ถูกต้องฉันจะปล่อยให้คณะลูกขุน

ตัวอย่าง

mysql> select x'48656C6C6F20776F726C642121'||'!';
+------------------------------------+
| x'48656C6C6F20776F726C642121'||'!' |
+------------------------------------+
| Hello world!!!                     |
+------------------------------------+
1 row in set (0.00 sec)

5
อะไร ... CMD และ SQL ชนะโค้ดกอล์ฟ?
Camilo Martin

selectและ;มีเนื้อหาที่เป็นส่วนหนึ่งของคำสั่ง แต่ยังคงเป็นทางออกที่ฉลาด
primo

@ พวกเขาคือเหตุผลว่าทำไมฉันไม่แน่ใจว่าสิ่งนี้มีคุณสมบัติหรือไม่ แต่ฉันคิดว่าฉันโพสต์ไว้เพื่อ hilarity ;-)
Tobia


11

GolfScript, 55 ตัวอักษร

[72 101 108 108 111 32 119 111 114 108 100 33 {.}2*]''+

หาวิธีแก้ปัญหา 34 ตัวอักษรไม่ได้ฉันจึงสร้างอันนี้ขึ้นมา


10

Befunge 98 - 55

a"!!!dlrow olleH"ek,@1235813213455891442333776109871597

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


8

Python 34-55

print "Hello world%s"%("!"*int(3.141592653589793238462643383279502884197169399375105820))

ใช่. ฉันทำให้พวกเขาเสียหลัก คุณจะทำอะไรเกี่ยวกับเรื่องนี้?


ใครจะรู้ว่า pi ~ 3 จะมีประโยชน์มาก!
Kyle Kanos

1
คำถามบอกว่าไม่ใช่ตัวเลข 21 บวก 34 ตัวเลขคำตอบของคุณคือ 34 ไม่ใช่ตัวเลขบวก 21 ตัวเลข
user12205

1
"Hello world" ควรเป็น "Hello world"; นั่นคือประโยชน์ของเอช
Justin

7

C (89 ตัวอักษร)

main() {
int i[0000000000000004]={1819043144,1870078063,560229490,2566922529};
puts(i);
}

ในขณะที่ข้างต้นถูกต้อง แต่น่าเสียดายที่ฉันพยายามที่จะกระชับมันด้วยโปรแกรมต่อไปนี้ไม่ตรงตามข้อกำหนด ฉันรู้สึกว่ามันคุ้มค่าที่จะดูและอาจมีคนอื่นที่สามารถย่อให้สั้นลงได้ (64 ตัวอักษร, 37 ตัวเลข, 27 ไม่ใช่ตัวเลข) -fms-extensionsเพื่อรวบรวมมันคุณจะต้องใช้เสียงดังกราวและ

main(){puts((__int128[]){671944380693508453879479574226248i8});}

ตัวอักษรผสมเป็นชื่อของสิ่งที่คุณกำลังมองหา ฉันพยายามที่จะใช้มันเพื่อลดขนาดตัวละครให้เหลือ 21 ตัวละครตอนนี้!
charmlessCoin

จำนวนที่ไม่ใช่ตัวเลขต่ำสุดที่ฉันสามารถเข้าถึงคือ 26 โดยการทำให้เป็นiโกลบอล (ละเว้นint) การใช้longสามารถบันทึกเครื่องหมายจุลภาค แต่มีค่าใช้จ่ายมากขึ้น 21 ไกลมาก
ugoren

ใช่มันเป็นพื้นที่ว่างเปล่ามากมาย ด้วยการใช้เล่ห์กลเล็ก ๆ นั้นฉันสามารถไปถึงได้main(){puts((int[]){1819043144,1870078063,560229490,8481});}แต่นั่นก็ยังคงเป็น 60 ตัวอักษร ถ้าฉันสามารถกำจัดอีกเพียงไม่กี่ ... แก้ไข: ว้าวดังนั้นกลมไม่ต้องมีการประกาศ? ใครจะรู้
vmrob

@vmrob, globals ต้องมีการประกาศ แต่เริ่มต้นชนิดintเพื่อให้เทียบเท่ากับa; int a;
ugoren

@ugoren ฉันรู้ว่าพวกเขาจะต้องมีการประกาศฉันไม่ได้ตระหนักว่ามันเป็นค่าเริ่มต้นที่ int!
vmrob

6

Windows PowerShell (อาจเป็น Bash), 55

curl -L bit.ly/1b9q8ve?1=123581321345589144233377610987

คุณไม่ได้พูดอะไรเกี่ยวกับการเข้าถึงเครือข่ายดังนั้นนี่เป็นวิธีที่สกปรก ฉันได้รับ URL เล็กน้อยด้วยตัวอักษรไม่กี่ครั้งในครั้งที่สอง น่าเสียดายที่มันยังคงไม่ใช่ตัวเลข 21 หลักจำเป็นต้องใช้ 34 หลักหรือสูญเปล่า


คุณรู้หรือไม่ว่าคุณสามารถแก้ไขลิงค์ bit.ly ได้
Timtech

คุณหมายถึงอะไรแก้ไข? นอกจากนี้ฉันจะไม่ได้รับตัวอักษรต่ำกว่า 13 ตัวในทุกกรณี
John Dvorak

คุณสามารถกดดินสอถัดจาก "คัดลอก" และแก้ไขลิงก์ หากคุณทำเวอร์ชันเก่าทั้งหมดจะยังใช้งานได้
Timtech

1
ลดเหลือ 34 curl 37.187.42.18/?hw=112358132134
Dom Hastings



5

ทุบตี 2 ตัวอักษร

ดีมากในกรณีที่คำตอบของโรเบิร์ตไม่ถูกตัดสิทธิ์นี่เป็นของฉัน:

$0

ชื่อแฟ้มและดำเนินการกับecho Hello world!!!sh


5

หลาม

print'092020090920200948656c6c6f20776f726c642121212009200909200920'.decode('hex').strip()

ตัวเลข: 55 ไม่ใช่ตัวเลข: 34


หมายเหตุไม่มีความคิดเห็นในการแก้ปัญหา รหัสเท่านั้น
เอลีชา

4

PHP (55 ไบต์)

โปรแกรมนี้ใช้ไบนารี (ว้าวมันเป็นครั้งที่สามที่ฉันใช้กลอุบายเดิมอีกครั้ง) อักขระที่ไม่ใช่ตัวเลข 21 ตัวอักขระ 34 ตัว ไม่มีตัวอักษรเพราะตัวอักษรน่าเบื่อ

xxd

0000000: 3c3f 3d7e b79a 9393 90df 8890 8d93 9bde  <?=~............
0000010: dede f53b 2331 3233 3435 3637 3839 3031  ...;#12345678901
0000020: 3233 3435 3637 3839 3031 3233 3435 3637  2345678901234567
0000030: 3839 3031 3233 34                        8901234

@JanDvorak: ฉันเกือบจะแน่ใจว่าฉันอ่าน "ก่อนหรือหลัง" โอ้ดีให้ฉันแก้ไขแล้ว
Konrad Borowski


4

Sclipting (34 ตัวอักษร)

丟0000000000긒괡뉆롲닷댠닶롬뉔밈0000000000併0反

น่าเสียดายที่ Sclipting ไม่ได้ใช้อักขระ ASCII เลยดังนั้นฉันต้อง pad โปรแกรมด้วยตัวอักษรตัวเลขที่ไม่มีประโยชน์ 21 ตัว :(


2

ออกมาหรือทับทิม, 55

(34 ตัวเลข + 21 ไม่ใช่ตัวเลข)

ออกมา

." Hello world!!!" \ 3141592653589793238462643383279502

ทับทิม

puts"Hello world!!!"#3141592653589793238462643383279502

การใช้ความคิดเห็นเพื่อแสดงความรู้สึกสกปรก



0

C #, 233 ไบต์

233 ตัวอักษร
144 ตัวเลข
89 อักขระที่ไม่ใช่ตัวเลข

/*I suck at CodeGolf!!!*/new List<int>{0072,00101,000108,000108,000111,0000032,00000119,00000111,0000000000114,0000000000108,00000000000000100,00000000000000033,00000000000000033,00000000000000033}.ForEach(c=>Console.Write((char)c));

ขาออก:

Hello world!!!

0

Japt , 55 ไบต์

"aaaaaaa1234567890123456789012345678901234"`HÁM WŽld!!!

ลองออนไลน์!

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



-3

http://esolangs.org/wiki/Hello%2B%2B

h000000000051090942171709440034

h พิมพ์สวัสดีและที่เหลือเป็นเพียงตัวเลข


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