ปรุงฮอทดอกให้ฉันด้วย! [ปิด]


13

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

1) ใส่ฮอทดอกลงในน้ำเดือด

2) รอเวลา (ตามรายละเอียดด้านล่าง)

3) กินฮอทดอกเมื่อเวลาผ่านไป

คุณอาจสังเกตเห็นว่าฉันพูด

เวลาที่แน่นอน (รายละเอียดด้านล่าง)

และฉันก็จะลงรายละเอียด

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

งานของคุณ

คุณต้องสร้างโปรแกรมที่จะส่งข้อความออกเป็นNot ready yetเวลา 4 นาที 27 วินาที หลังจากเวลานี้ผ่านไปแล้วคุณควรส่งออกEat your hot dogไปจนถึงเวลาสิ้นสุด กรุณาอย่ารับข้อมูลใด ๆ

วิธีชนะ

คุณต้องเขียนรหัสที่สั้นที่สุดในหน่วยไบต์เพื่อให้ชนะเพราะนี่คือ


2
มากที่เกี่ยวข้องอย่างใกล้ชิด
AdmBorkBork

1
ค่อนข้างใกล้กับLegen …รอเลย…ด้วย
จัดการ

ความแตกต่างเพียงอย่างเดียวคือความท้าทายนี้ต้องใช้โปรแกรมที่จะรอให้เฉพาะจำนวนของเวลา
user41805

8
เราจะต้องส่งออก "ยังไม่พร้อม" อย่างต่อเนื่องซ้ำแล้วซ้ำอีกจนกว่าช่วงเวลาจะเสร็จสิ้น ( Not ready yet\nNot ready yet\n...) หรือเราสามารถส่งออกเพียงครั้งเดียวและเปลี่ยนผลลัพธ์เมื่อ 4m 27s สิ้นสุดลงหรือไม่
user41805

1
โอ๊ะคำตอบของฉันเตือนฉันให้กินฮ็อตด็อกของฉันในช่วงสองวันที่ผ่านมา ...
นีล

คำตอบ:


20

ตัวขีดข่วน, 93 78 ไบต์

การแทนภาพ

รหัส:

when gf clicked
say[Not ready yet
wait until<(timer)>[267
say[Eat your hot dog

สร้างโดยhttps://scratchblocks.github.io/ซึ่งดูเหมือนจะเป็นมาตรฐานสำหรับการให้คะแนนแบบเกา

อธิบายตนเองได้อย่างยุติธรรม เมื่อเริ่มโปรแกรมพูดว่า "ยังไม่พร้อม" จนกว่าจะมีการจับเวลา (ซึ่งจะนับเป็นวินาที) มีค่ามากกว่า 267 Eat your hot dogจากนั้นก็เริ่มห่วงอนันต์ที่จะกล่าวว่า

มันเป็นเอาท์พุทต่อเนื่องเพราะsayบล็อกทำงานตลอดไปเว้นแต่คุณsay []หรือsayอย่างอื่น


7
ไม่จำเป็นต้องมีตลอดไปบันทึก 8 ไบต์ มันใช้เวลาถึง 85 ไบต์ นอกจากนี้มันยังสั้นกว่าในHñähñu (Mezquital Otomi)แทนที่จะเป็นภาษาอังกฤษอีก 8 ไบต์ (โดยไม่ต้องใช้ตลอดไป) ทำให้เหลือเพียง 77 ไบต์
ทิม


@ ขอบคุณมาก แต่ธงสีเขียวดูเหมือนจะไม่ทำงาน
Okx

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

@Tim บล็อกสีเขียวอาจยังไม่ได้ใช้งาน (แม้ว่าการแปลยังแปลอยู่) นอกจากนี้ยังไม่มีภาษาHñähñuใน Scratch เป็นทางการ
Erik the Outgolfer

14

Bash + coreutils, 50

timeout 267 yes Not ready yet
yes Eat your hot dog

คำอธิบาย

ฉันคิดว่าตนเองอธิบายได้ค่อนข้างดี แต่ในกรณี:

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

8

ภาษาสคริปต์การทำงานของ Flashpoint 67 ไบต์

#l
s="Not ready yet"
?_time>267:s="Eat your hot dog"
hint s
goto"l"

บันทึกเป็น"hotdog.sqs"(หรืออะไรก็ตาม) [] exec "hotdog.sqs"ในโฟลเดอร์พันธกิจและการโทรที่มี

คำอธิบาย:

#l                                  // Label for the "goto"
s="Not ready yet"
?_time>267:s="Eat your hot dog"     // "?:" means "if () then" in a script.
                                    // "_time" is a local variable that is automatically
                                    // created and updated in every script. Its value
                                    // is the time in seconds since the script started.

hint s                              // Outputs the text in a text box.

~.1                                 // Sleeps for a tenth of a second.
                                    // The script seems to work without sleeping too,
                                    // so I didn't include this in the golfed version.
                                    // Looping in a script without sleeping is always
                                    // a bad idea, though. It sometimes crashes the game.

goto"l"                             // Go back to the beginning of the loop.
                                    // This is the only way to create a loop if you don't 
                                    // want to halt the game (and the time calculation)
                                    // until the loop finishes.

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

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


7

JavaScript ES6, 76 ไบต์

$=>setInterval("console.log(--_>0?`Not ready yet`:`Eat your hot dog`)",_=517)

คำอธิบาย

สิ่งนี้จะพิมพ์สิ่งใดไปยังคอนโซลทุกๆ 517 มิลลิวินาที ตอนแรกมันพิมพ์'Not ready yet'และลดจำนวนตัวนับ หลังจากที่ 517 ซ้ำ ( = 517 * 517 = 267289 ms) 'Eat your hot dog'ก็จะเริ่มการพิมพ์

ทดสอบ

f=
  $=>setInterval("console.log(--_>0?`Not ready yet`:`Eat your hot dog`)",_=517);
(setInterval("console.log('DONE NOW')",267000)&&f())();


คุณไม่สามารถตั้งค่าไทม์เอาต์และบันทึกไบต์ได้ใช่ไหม
user1910744

setTimeoutเรียกใช้งานฟังก์ชันเพียงครั้งเดียวเท่านั้น ความท้าทายคือการส่งออกสตริงอย่างต่อเนื่องดังนั้นsetTimeoutจะไม่ถูกต้อง
ลุค

(--_?ทำงานแทน(--_>0? (-2)
dandavis

น่าเสียดายที่มันจะไม่_ลดลงทุกครั้งที่มีการพิมพ์ดังนั้นจึงมีค่าต่ำกว่าศูนย์ จำนวนเต็มลบทั้งหมดเป็นจริงดังนั้นค่าเหล่านั้นก็จะถูกพิมพ์'Not ready yet'เช่นกัน (ซึ่งไม่ใช่สิ่งที่เราต้องการ)
ลุค

7

Powershell, 85 71 59 ไบต์

1..276|%{Sleep 1;'Not ready yet'};for(){'Eat your hot dog'}

อาจมีวิธีที่ดีกว่านี้มากดังนั้นยินดีต้อนรับคำวิจารณ์! นี่เป็นความพยายามครั้งแรกของฉันในการเล่นกอล์ฟ :)

แก้ไขลงทั้ง 14 ไบต์ด้วย AdmBorkBork! และเป็นเทคนิคในการจดจำอย่างแน่นอน!

แก้ไข 2อีก 12 ไบต์หายไปขอบคุณแมตต์ ไม่โทรเขียนสองครั้งก็ลบ 2 ช่องว่างมีประโยชน์มาก!


1
ยินดีต้อนรับสู่ PPCG! ยินดีที่ได้เห็น PowerSheller อื่น ๆ กอล์ฟง่ายคือการใช้ห่วงคงที่จำนวนครั้ง1..276|%{}แทนที่จะเป็นforห่วงกับการเพิ่มขึ้น ลองดูเคล็ดลับอื่น ๆ ในหน้านั้นด้วย!
AdmBorkBork

สตริงจะถูกส่งไปยัง std out เป็นค่าเริ่มต้น ไม่จำเป็นต้องระบุด้วยwrite-outputcmdlet
Matt

7

ภาษาสคริปต์ของ GameMaker ใช้ใน Nuclear Throne Together mod ขนาด 68 ไบต์

t=0while 1{trace(t++<8010?"Not ready yet":"Eat your hot dog")wait 1}

คำอธิบาย

  • โปรแกรมแยกวิเคราะห์ของ GML ให้อภัยอย่างโอชะ อัฒภาคและวงเล็บเป็นตัวเลือกและคอมไพเลอร์ไม่ได้เลยกังวลเกี่ยวกับระยะห่างของคุณอยู่นอกกฎพื้นฐาน ( 0whileแยกวิเคราะห์เป็น0, whileและทำให้เป็น ok)
  • ตัวแปรรั่วไหลในบริบทการดำเนินการยกเว้นว่ามีการประกาศผ่านvar(เช่นเดียวกับ JS)
  • ตัวแปร GML ที่ใช้ใน NTT จะแนะนำwaitผู้ปฏิบัติงานซึ่งจะผลักดันการดำเนินการ "ไมโครเธรด" ไปยังรายการตามจำนวนเฟรมที่ระบุและดำเนินการต่อในภายหลัง Coroutines โดยทั่วไป

    เกมดังกล่าวโอเวอร์คล็อกที่ 30fps ดังนั้น 4m27s == 267s == 8010 เฟรม

  • ติดตาม () ส่งออกสตริงที่กำหนดลงในการแชท

หากคุณมี videogame + mod ติดตั้งอยู่คุณสามารถบันทึกเป็นส่วนtest.mod.gmlหนึ่งและ/loadmod testดำเนินการเพื่อเรียกใช้การแชทด้วย "รายงานสถานะ":

ภาพหน้าจอ


3
ฉันไม่แน่ใจว่าเกิดอะไรขึ้นที่นี่ แต่ฉันอนุมัติ

3

Python 2, 92 ไบต์

from time import*
t=time()
while 1:print"Not ready yet"if time()-t<267else"Eat your hot dog"

ลองออนไลน์!


9
while 1:print'ENaott yroeuard yh oyte td o g'[time()-t<267::2]for 90 bytes
ovs

@ovs while 1:print['Eat your hot dog','Not ready yet'][time()-t<267]ก็จะ 90 (ในขณะที่ชัดเจนและไม่พิมพ์พื้นที่สีขาวพิเศษ)
Jonathan Allan

3

TI-Basic, 75 ไบต์

For(A,1,267
Disp "Not ready yet
Wait 1
End
While 1
Disp "Eat your hot dog
End

คำอธิบาย

For(A,1,267             # 9 bytes, for 267 times...
Disp "Not ready yet     # 26 bytes, display message
Wait 1                  # 3 bytes, and wait one second
End                     # 2 bytes, ...end
While 1                 # 3 bytes, after that, continuously...
Disp "Eat your hot dog  # 31 bytes, output second message
End                     # 1 byte, ...end

2

แบตช์ 99 ไบต์

@for /l %%t in (1,1,267)do @echo Not ready yet&timeout/t>nul 1
:l
@echo Eat your hot dog
@goto l

รุ่นที่ไม่มีเลขคณิตวันที่ดังนั้นจึงไม่อนุญาตให้มีการหมดเวลาง่ายๆ 267 วินาทีสิ่งที่ดีที่สุดที่ฉันทำได้คือ 267 หมดเวลาหนึ่งวินาที


2

C # 144 ไบต์

()=>{for(int i=0;;){var s="\nEat your hot dog";if(i<267e3){i++;s="\nNot ready yet";}System.Console.Write(s);System.Threading.Thread.Sleep(1);}};

โปรแกรมเต็มรูปแบบ Ungolfed:

class P
{
    static void Main()
    {
        System.Action a = () => 
            {
                for (int i = 0; ;)
                {
                    var s = "\nEat your hot dog";
                    if (i < 267e3)
                    {
                        i++;
                        s = "\nNot ready yet";
                    }
                    System.Console.Write(s);
                    System.Threading.Thread.Sleep(1);
                }
            };

        a();
    }
}

แต่น่าเสียดายที่ผมไม่สามารถใช้?:-operator เป็นฉันไม่ได้พบวิธีที่จะหยุดการเพิ่มโดยไม่ต้องiif


ลองทำบางสิ่งเช่นif(i++<267e3)บันทึกสองสามไบต์
adrianmp

1
@adrianmp: นั่นใช้งานไม่ได้เพราะมันจะยังคงเพิ่มขึ้นiทุกมิลลิวินาที และเมื่อint.MaxValueถึงโปรแกรมแล้วอาจเกิดข้อผิดพลาดหรือเริ่มพิมพ์Not ready yetอีกครั้ง
raznagul

ฉันจัดการเพื่อดึงสิ่งนี้ออกโดยการชะลอการล้นอย่างมาก (หรือแม้กระทั่งบรรเทามันด้วยค่าใช้จ่ายไม่กี่ไบต์) ฉันได้ "ยืม" แนวคิดบางอย่างจากคำตอบของคุณ ขอบคุณ!
adrianmp

2

C #, 174 172 147 ไบต์

บันทึก 25 ไบต์โดย "ยืม" แนวคิดบางอย่างจากคำตอบ C # ของ raznagulและผสานเข้ากับผลรวมของเคล็ดลับ n ตัวเลขแรก!

บันทึก 2 ไบต์โดยใช้ผลรวมของตัวเลข n ตัวแรกเพื่อหลอกให้สูญเสียความแม่นยำ 185 มิลลิวินาที

class P{static void Main(){for(int i=1;;){System.Console.WriteLine(i++<731?"Not ready yet":"Eat your hot dog");System.Threading.Thread.Sleep(i);}}}

โปรแกรม Ungolfed:

class P
{
    static void Main()
    {
        for (int i=1;;)
        {
            System.Console.WriteLine( i++ < 731 ? "Not ready yet" : "Eat your hot dog");
            System.Threading.Thread.Sleep(i);
        }
    }
}

คำอธิบาย:

เนื่องจากเวลาทั้งหมดที่รอรอคือ hardcoded ที่ 267 วินาทีเราสามารถพิจารณาหมายเลขนี้ว่าเป็นผลรวมทางไกลของตัวเลขธรรมชาติ n ตัวแรกn * (n + 1) / 2ซึ่งต้องเท่ากับ 267000 มิลลิวินาที

n^2 + n - 534000 = 0นี้จะเทียบเท่ากับ

ด้วยการแก้สมการอันดับสองนี้n1 = 730.2532073142067, n2 = -n1. แน่นอนเพียง แต่วิธีการแก้ปัญหาในเชิงบวกคือได้รับการยอมรับและสามารถประมาณเป็น730

เวลาทั้งหมดสามารถคำนวณ730 * (730 + 1) / 2 = 266815 millisecondsได้ดังนี้ ความไม่แน่ชัดคือ185 มิลลิวินาทีซึ่งไม่สามารถมองเห็นได้สำหรับมนุษย์ ตอนนี้โค้ดจะทำให้เธรดหลัก (และเท่านั้น) นอนหลับเป็นเวลา 1 มิลลิวินาที, 2 มิลลิวินาทีและต่อเนื่องจนถึง 730 ดังนั้นช่วงเวลาการนอนหลับทั้งหมดคือ ~ 267 วินาที

ปรับปรุง:

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

ข้อความสามารถเปลี่ยนแปลงได้โดยใช้ผู้ประกอบการที่สามในการตรวจสอบการผ่านของเวลาที่กำหนด (~ 267 วินาที)

ลักษณะการจับเวลาถูกควบคุมโดยใช้ตัวนับที่เพิ่มขึ้นและหยุดเธรดการดำเนินการชั่วคราว

อย่างไรก็ตามเนื่องจากตัวแปรตัวนับยังคงเพิ่มขึ้นเรื่อย ๆ โดยไม่มีเงื่อนไขใด ๆ เพื่อตรวจสอบค่าของมันจึงสามารถคาดหวังว่าจำนวนเต็มล้นในบางจุดเมื่อข้อความกลับไปNot ready yetเป็น

สามารถเพิ่มเงื่อนไขเพื่อตรวจจับและบรรเทาปัญหาโดยการกำหนดค่าบวกมากกว่า 730 เมื่อเกิดการล้น - เหมือนi=i<1?731:iภายในforลูป น่าเศร้าที่มีราคาเพิ่ม 11 ไบต์:

class P{static void Main(){for(int i=1;;i=i<1?731:i){System.Console.Write(i++<731?"\nNot ready yet":"\nEat your hot dog");System.Threading.Thread.Sleep(i);}}}

กุญแจนี่คือการใช้ค่าตัวนับเป็นมิลลิวินาทีเพื่อชะลอช่วงเวลาของการล้น

เวลาจนถึงการโอเวอร์โฟลว์สามารถคำนวณได้ตามsum(1..n)สูตรโดยที่ n = ค่าจำนวนเต็มที่ลงนาม 32- บิตสูงสุดใน C # (และ. NET Framework) หรือ 2 ^ 31 - 1 = 2147483647:

2 147 483 647 * 2 147 483 648 / 2 = 2,305843008 x 10^18 milliseconds = 2,305843008 x 10^15 seconds = 26 687 997 779 days = ~73 067 755 years

หลังจาก73 ล้านปีมาแล้วมันอาจไม่สำคัญว่าจะมีข้อผิดพลาดเกิดขึ้นในระบบอย่างไร - ฮอทด็อกผู้หิวโหย OP และผู้คนอาจจะหายไปนาน


รุ่นก่อนหน้า (172 ไบต์):

namespace System{class P{static void Main(){for(int i=1;i<731;){Console.Write("\nNot ready yet");Threading.Thread.Sleep(i++);}for(;;)Console.Write("\nEat your hot dog");}}}

โปรแกรม Ungolfed:

namespace System
{
    class P
    {
        static void Main()
        {
            for (int i = 1; i < 731; )
            {
                Console.Write("\nNot ready yet");
                Threading.Thread.Sleep(i++);
            }
            for ( ; ; )
                Console.Write("\nEat your hot dog");
        }
    }
}

รุ่นก่อนหน้า (174 ไบต์):

namespace System{class P{static void Main(){for(int i=0;i++<267e3;){Console.Write("\nNot ready yet");Threading.Thread.Sleep(1);}for(;;)Console.Write("\nEat your hot dog");}}}

โปรแกรม Ungolfed:

namespace System
{
    class P
    {
        static void Main()
        {
            for (int i=0; i++ < 267e3; )
            {
                Console.Write("\nNot ready yet");
                Threading.Thread.Sleep(1);
            }
            for ( ; ; )
                Console.Write("\nEat your hot dog");
        }
    }
}

อีกทางหนึ่งโปรแกรมอาจแสดงNot ready yetเพียงครั้งเดียวรอจนกระทั่งถึงเวลาที่กำหนดแล้วส่งออกEat your hot dogโดยเขียนทับข้อความก่อนหน้าในขณะที่สั้นลงสักสองสามไบต์:

C #, 145 ไบต์

namespace System{class P{static void Main(){Console.Write("Not ready yet");Threading.Thread.Sleep(267000);Console.Write("\rEat your hot dog");}}}

โปรแกรม Ungolfed:

namespace System
{
    class P
    {
        static void Main()
        {
            Console.Write("Not ready yet");
            Threading.Thread.Sleep(267000);
            Console.Write("\rEat your hot dog");
        }
    }
}

เยี่ยมมาก ฉันจะให้ +1 ถ้าฉันยังไม่ได้ ;)
raznagul

2

Ruby, 80 71 67 ไบต์

แก้ไข: ขอบคุณ manatwork สำหรับการตัดขนทั้งหมด 13 ไบต์

267.times{puts"Not ready yet"
sleep 1}
loop{puts"Eat your hot dog"}

ทำไมไม่267.times{…}?
ผลิต

ว้าวขอบคุณ. ตอนนี้ฉันรู้สึกเป็นใบ้
BRFNGRNBWS

ดูเหมือนว่าคุณกำลังนับด้วยตัวแยกบรรทัด CR / LF เนื่องจาก Ruby อนุญาตให้ LF เท่านั้นเราจึงต้องนับมันเท่านั้น {และมีความจำเป็นในการแบ่งบรรทัดหลังจากที่ไม่มี นั่นจะทำให้ 67 ไบต์
ผลิต

ฉันเป็นผู้เริ่มต้นที่ Ruby และ noob ทั้งหมดในการตีกอล์ฟดังนั้นขอขอบคุณสำหรับความช่วยเหลือทั้งหมด!
BRFNGRNBWS

ในกรณีที่คุณพลาดมันมีคอลเลกชันของเคล็ดลับสำหรับการเล่นกอล์ฟในรูบีเพื่อช่วยให้ผู้เริ่มต้น
ผลิต

2

05AB1E, 43 29 28 ไบต์ (ขอบคุณ Adnan)

267F…€–Žä‡«ªw,}[“Eat€ž…ß‹·“,

ไม่ทำงานออนไลน์เนื่องจากหมดเวลา ออฟไลน์มันจะทำงาน

267F: วน 267 ครั้ง

…€–Žä‡«ª: สตริงแรกที่มีพจนานุกรม

w,: รอหนึ่งวินาทีแล้วพิมพ์

}[: จบถ้าวนซ้ำและเริ่มวนซ้ำไม่สิ้นสุด

“Eat€ž…ß‹·“: สตริงที่สองพร้อมพจนานุกรม

,: พิมพ์


ขอบคุณลูกค้าของฉันเห็นว่ารหัสนี้สั้นและใช้งานออฟไลน์ได้ตอนนี้เขาต้องการให้ฉันเขียนเว็บไซต์ของเขาโดยใช้ภาษานี้ . .
Pascal Raszyk

ใช้งานออนไลน์ แต่ไม่ได้ใช้ล่ามที่ให้ออนไลน์ คุณสามารถเห็นตัวคุณเองได้ที่นี่
P. Knops

ฉันรู้ว่า. มันเป็นเรื่องตลก: D
Pascal Raszyk

1
เป็นการดีที่สุดที่จะตอบคำถามตามปกติ: D
P. Knops

“NotŽä‡«“สามารถถูกแทนที่โดย…€–Žä‡«ª
Adnan

1

Python ขนาด 115 ไบต์

ครั้งแรกที่ฉันลองทำอะไรแบบนี้ ฉันยังเป็นผู้เริ่มต้นดังนั้นที่นี่จะไปใน Python 3 เป็น 115 ไบต์:

import time
for i in range(267):
    time.sleep(1)
    print("Not ready yet")
while 1:
    print("Eat your hotdog")

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

ลบ time.sleep (1) - บันทึกไม่กี่ไบต์
Pascal Raszyk

@praszyk จากนั้นforจะเสร็จสิ้นการวนซ้ำrange(267)เร็วกว่า 4 นาที 27 วินาทีและการแก้ปัญหาจะไม่ถูกต้อง ☹
จัดการ

1

ตัวแก้ไขบล็อก JavaScript สำหรับไมโคร: บิต, 90 ไบต์

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

รหัส:

basic.showString("Not ready yet")
basic.pause(254000)
basic.showString("Eat your hot dog")

คุณสามารถลองได้ที่นี่

ได้รับแรงบันดาลใจจากคำตอบ Scratch เพื่อแก้ปัญหาด้วยไมโครของฉัน: บิต ปัญหาเดียวก็คือว่าบล็อกหยุดชั่วคราวเริ่มต้นหลังจากการส่งออกสตริงแรกดังนั้นฉันจำเป็นต้องลดการหยุด 13s

หมายเหตุ: Microsoft Block Editor แบบเก่าสำหรับ micro: bit สั้นกว่าในการสร้าง แต่สร้างรหัสเพิ่มเติมดังนั้นจึงเป็นจริงอีกต่อไป


1

บนพื้นฐานที่ว่า OP ต้องการให้ฮอทด็อกอย่างต่อเนื่องจนถึงจุดสิ้นสุด - ซึ่งฉันเข้าใจจากวลี:

หลังจากเวลานี้ผ่านไปแล้วคุณควรเอาท์พุทกินฮอทดอกของคุณจนกว่าจะหมดเวลา

นี่คือคำตอบของฉัน:

C ++, 187 188 224 167 ไบต์

ลบช่องว่าง (167 ไบต์):

#include<stdio.h>
#include<windows.h>
int main(){for(;;){for(int x=0;x<267;x++){Sleep(1000);printf("Not ready yet");}Sleep(1000);printf("Eat your hot dog");}return 0;}

แบบฟอร์มที่อ่านได้ (224 ไบต์):

#include <stdio.h>
#include <windows.h>

int main() {
  for( ; ; ){ 
    for(int x=0; x < 267; x++){
      Sleep(1000);
      printf("Not ready yet"); 
    }
    Sleep(1000);
    printf("Eat your hot dog");
  }
  return 0;
}

ถ้าในทางตรงกันข้าม OP สนุกกับฮ็อตด็อกของเขาอย่างพอเหมาะนี่คือคำตอบของฉัน:

ลบช่องว่าง (158 ไบต์):

#include<stdio.h>
#include<windows.h>
int main(){for(int x=0;x<267;x++){Sleep(1000);printf("Not ready yet");}Sleep(1000);printf("Eat your hot dog");return 0;}

แบบฟอร์มที่อ่านได้ (198 ไบต์):

#include <stdio.h>
#include <windows.h>

int main() {
  for(int x=0; x < 267; x++){
    Sleep(1000);
    printf("Not ready yet"); 
  }
  Sleep(1000);
  printf("Eat your hot dog");
  return 0;
}

อะไรนะdelay?
เควนติน

ตกลงนั่นคือฟังก์ชั่นเก่า แทนที่ด้วย Sleep (1,000)
Tombas

คุณสามารถกำจัดพื้นที่ว่างเพื่อบันทึกไบต์ นอกจากนี้ฉันนับ 224 ไบต์ไม่ใช่ 188
HyperNeutrino

@HyperNeutrino คุณพูดถูก - ฉันนับจำนวนจุดสิ้นสุดบรรทัด แต่ไม่นำช่องว่าง แก้ไขแล้ว (ขออภัยฉันใหม่ที่นี่!)
Tombas

@Quentin delay () เป็นฟังก์ชั่นที่ฉันหวังว่าจะสามารถยกได้โดยตรงจาก Arduino ... ปรากฎว่าฉันทำไม่ได้! มันมีอยู่แล้วในวันนี้ซึ่งเป็นส่วนหนึ่งของห้องสมุด dos.h ฉันเข้าใจ
Tombas

1

Excel VBA, 82 ไบต์

ไม่ประสงค์ออกนาม VBE immediates [A1]ฟังก์ชั่นหน้าต่างที่จะนำเข้าและไม่มีผลหรือไม่ว่าคุณควรกินสุนัขร้อนของคุณไปยังเซลล์

d=Now+#0:4:27#:Do:[A1]=IIf(Now<d,"Not ready yet","Eat your hot dog"):DoEvents:Loop

1
ที่น่าสนใจฉันไม่รู้ว่าคุณสามารถเรียกใช้โปรแกรมได้โดยตรงจากหน้าต่างทันที
Stupid_Intern

1

Excel VBA 122 94 ไบต์

Sub p()
e=Now+#0:4:27#
Do
[a1]=IIf(Now<e,"Not ready yet","Eat your hot dog")
Loop
End Sub

ขอบคุณTaylor Scott


คุณสามารถตัดทอนโซลูชันนี้ได้นิดหน่อยCDate("00:04:28")สามารถย่อให้#0:4:27#เป็นคุณสามารถแทนที่While ... Wendลูปของคุณด้วยDo .. Loopลูปและคุณสามารถแทนที่ifประโยคของคุณด้วยiifประโยค
เทย์เลอร์สก็อต

@TaylorScott ใช่ขอบคุณ :)
Stupid_Intern

1
@TaylorScott มีทางเลือกสำหรับ msgbox หรือไม่?
Stupid_Intern

1
@TaylorScott และ iif clause ไม่ทำงานกับ msgbox ฉันไม่แน่ใจว่าทำไมและ # 0: 4: 27 # autoformats ไปยังวันที่ไม่ใช่เวลาที่คุณมีอิสระที่จะแก้ไขคำตอบหากคุณต้องการ
Stupid_Intern

1
ที่จริงแล้วเนื่องจาก VBA ไม่มี STDIN หรือ STDOUT ใด ๆ จึงมีตัวเลือกมากมายสำหรับคุณเช่น VBE ทันทีที่หน้าต่างและเซลล์ใน excel คุณสามารถดูข้อมูลเพิ่มเติมได้ที่codegolf.stackexchange.com/a/107216/ 61846
เทย์เลอร์สกอตต์

0

Javascript, 83 ไบต์

d=Date.now()
while(1)alert(Date.now()-d<267000?"Not ready yet":"Eat your hot dog"))

Alertz สำหรับทุกคน!


1
คุณสามารถเปลี่ยน267000เป็น267e3และบันทึกไบต์
powelles

จากคำถาม: "คุณต้องทำโปรแกรม" นี่ไม่ใช่โปรแกรมหรือฟังก์ชั่น แต่เป็นตัวอย่าง
ลุค

7
นี่คือโปรแกรม
programmer5000

1
คุณสามารถบันทึกไม่กี่ไบต์โดยใช้new DateแทนDate.now()และอีกสองสามโดยใช้for(d=new Date;;)alert...
ETHproductions

2
การแจ้งเตือน () หยุดโปรแกรมจนกว่าผู้ใช้จะปิดและการป้อนข้อมูลเข้าท้าทาย
dandavis


0

PHP 88 ไบต์

<?$t=0;do{$t++;echo "Not ready yet";sleep(1);} while ($t<267);echo "Eat your hotdog";?>

1
“ หลังจากเวลานี้ผ่านไปแล้วคุณควรส่งออกEat your hot dogไปจนถึงเวลาสิ้นสุด” ดังนั้นคุณต้องทำซ้ำข้อความที่ 2 ด้วย ที่จะเพิ่มความยาวของมัน for($t=267;$t--;sleep(1))echo"Not ready yet";for(;;)echo"Eat your hotdog";แต่โชคดีที่มีสถานที่เพื่อตัดมัน อย่างไรก็ตามโค้ดที่php -rยอมรับได้นั้นไม่จำเป็นต้องใช้แท็ก PHP (โดยเฉพาะอย่างยิ่งไม่ใช่แท็กปิดซึ่งถือว่าเป็นนิสัยที่ไม่ดีในกรณีนั้น: " ?>แท็กปิดจะต้องถูกตัดออกจากไฟล์ที่มี PHP เท่านั้น" - PSR-2 )
จัดการ

1
@ การจัดการงานที่ยังไม่ทดลอง: สำหรับ ($ t = 267 ;; sleep (1)) echo $ t -> 0? "ยังไม่พร้อม": "Eat hotdog ของคุณ";
diynevala

สิ่งที่น่าสนใจอย่างหนึ่งคือ @diynevala ตามเอกสาร“ ถ้า PHP พบจำนวนเกินขอบเขตของประเภทจำนวนเต็มมันจะถูกตีความว่าเป็นลอยแทน นอกจากนี้การดำเนินการที่ส่งผลให้จำนวนเกินขอบเขตของประเภทจำนวนเต็มจะส่งกลับลอยแทน - จำนวนเต็มล้นดังนั้นเงื่อนไขควรทำงานอย่างถูกต้องจนกว่าจะหมดเวลา
จัดการ

@ manatwork ยังสลีปเป็นเวลา 1 วินาทีระหว่างเอาต์พุตแม้หลังจาก 267 วินาที
diynevala


0

Java 7, 152 ไบต์

void c(){for(long s=System.nanoTime(),e=s+(long)267e9;s<e;s=System.nanoTime())System.out.println("Not ready yet");System.out.print("Eat your hot dog");}

คำอธิบาย:

void c(){                                 // Method
  for(                                    //  Loop
      long s=System.nanoTime(),           //    Current time in nanoseconds as start
      e=s+(long)267e9;                    //    End time (267 seconds later)
      s<e;                                //    Loop as long as we haven't reached the end time
      s=System.nanoTime())                //    After every iteration get the new current time in nanoseconds
    System.out.println("Not ready yet");  //   Print "Not ready yet" as long as we loop
                                          //  End of loop (implicit / single-line body)
  System.out.print("Eat your hot dog");   //  Print "Eat your hot dog"
}                                         // End of method

0

PHP, 68 ไบต์

for($t=268;$t--;sleep(1))echo$t?"Not ready yet←":"Eat your hot dog";

ผลผลิตต่อเนื่อง คือ ASCII 10 = LF -rทำงานด้วย

เอาต์พุตแบบครั้งเดียว 50 ไบต์

Not ready yet<?sleep(267);echo"←Eat your hot dog";

โดยที่ASCII 13 = CR บันทึกเป็นไฟล์หรือใช้ piping เพื่อเรียกใช้


0

RBX.Lua , 69 ไบต์

for i=1,267 do print"Not ready yet"Wait(1)end;print"Eat your hot dog"

RBX.Lua ภาษาที่ใช้ในROBLOX.com Lua 5.1 เป็นเวอร์ชั่นที่ได้รับการแก้ไขซึ่งมีฟังก์ชั่น 'รอ' อยู่ภายใน โค้ดด้านบนเป็นคำอธิบายที่ค่อนข้างชัดเจนด้านล่างเป็นเวอร์ชั่นที่อ่านได้ง่ายขึ้น:

for i = 1, 267 do
    print("Not ready yet");
    Wait(1);
end

print("Eat your hot dog");

รหัสออกว่า "ยังไม่พร้อม" ในSTDOUTอย่างต่อเนื่องเป็นเวลา 267 วินาที (4 นาที 27 วินาที) ก่อนที่จะแสดงผล "กินฮอทดอกของคุณ"


0

C - 130 ไบต์

อาจสั้นกว่านี้เล็กน้อย (128bytes) แต่ฉันคิดว่ามันน่าจะเขียนทับ "ยังไม่พร้อม"

#include<stdio.h>
#include<unistd.h>
int main(){printf("Not ready yet");fflush(stdout);sleep(267);printf("\rEat your hot dog\n");}

ยินดีต้อนรับสู่เว็บไซต์! คุณสามารถละเว้น#include<unistd.h>(มันจะส่งคำเตือน แต่ยังคงรวบรวม) การทำตามที่คุณทำ (เขียนทับข้อความก่อนหน้านี้) เป็นสิทธิ์ของคุณ แต่เนื่องจากความท้าทายไม่ได้ถามจริง ๆ ฉันจึงแนะนำไม่ให้ทำ มันจะช่วยให้คุณสามารถทำint main(){puts("Not ready yet");sleep(267);puts("Eat your hot dog");}(โดยไม่รวมถึงพวกเขาไม่จำเป็น) - แต่ไม่มีข้อผูกมัดที่จะทำมันแน่นอน
Dada


-1

Python 2.7, 90 88 ไบต์

import time;exec"print'Not ready yet';time.sleep(1);"*267;while 1:print"Eat your hotdog"

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