ฉันหนาวเกินไปเปลี่ยนอุณหภูมิ


53

นี่คือการแข่งขันกอล์ฟครั้งแรกของฉัน

สิ่งที่คุณต้องทำ

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

ตอนนี้ฉันไม่ต้องการให้คุณสร้างมันขึ้นมาจริงๆหรืออะไรก็ตามเพียงแค่เล่นกอล์ฟนี้:

การเพิ่มขึ้นของอุณหภูมิอย่างช้าๆเริ่มต้นที่ 40 องศาและสิ้นสุดที่ 72 ทุกเวลาที่เพิ่มขึ้นจะต้องเป็น 500 มิลลิวินาทีต่อการเพิ่มขึ้นเสมอ สามารถรออีก 500 มิลลิวินาทีในตอนท้าย ฉันต้องการที่จะหยุดอย่างไรก็ตาม การเพิ่มขึ้นของตัวเองจะต้องเพิ่มขึ้นสองเท่าในแต่ละครั้งเช่นระยะไกลของฉัน

คุณไม่ควรล้างหน้าจอ คุณควรมีการขึ้นบรรทัดใหม่

จะเกิดอะไรขึ้น

เอาท์พุทตัวอย่าง (ไม่ควรเอาท์พุททุกอย่างในวงเล็บ)

40
(wait 500 millis)
42
(wait 500 millis)
44
(..repeat until 72..)
72
(stop or wait 500ms)

โปรดทราบว่า นี่เป็นสนามกอล์ฟแห่งแรกของฉันดังนั้นฉันจึงต้องขออภัยถ้าสนามกอล์ฟนี้ยากเกินไป :(

ขอให้โชคดีนักกอล์ฟ!


3
สิ่งเล็ก ๆ น้อย ๆ แต่ "ต้องเป็น 500 มิลลิวินาที" นั้นเข้มงวดเกินไปสำหรับอุปกรณ์ที่สมเหตุสมผล ฉันขอแนะนำให้ระบุความแปรปรวนบางอย่างเช่น +/- 10%
FryAmTheEggman

1
คุณสามารถรอ 500ms ก่อนแสดงเอาต์พุตเริ่มต้นได้หรือไม่
FlipTack

35
-1 สำหรับการใช้ฟาเรนไฮต์ (ไม่ใช่จริง ๆ แต่อย่างน้อยคุณควรจะบอกว่าคุณกำลังใช้มันอยู่ 40 องศาเซลเซียสไม่เย็นเกินไปในช่วงเวลาที่น้อยที่สุด)
John Dvorak

20
+1 สำหรับการใช้ฟาเรนไฮต์มันมีความละเอียดที่ดีกว่าเซลเซียสและเป็นอะไรก็ได้ที่ไม่ใช่เคลวินหรือแรนคินโดยพลการ
Nick T

8
@NickT คุณโชคไม่ดีเพราะความละเอียดของรีโมตนี้คือ2 ° Fซึ่งสูงกว่า 1 ° C และคุณสามารถรับความละเอียดสูงขึ้นใน Celcius กว่าฟาเรนไฮต์ด้วยรีโมทที่สามารถแสดง 0.5 และอื่น ๆ อีกมากมายหากสามารถแสดงถึง 0.1 อย่างไรก็ตามฉันเป็นคนเรียบง่ายและไม่สามารถแยกความแตกต่างระหว่าง 22 และ 23 ° C ดังนั้นความละเอียดสูงในกรณีนี้ไม่มีประโยชน์สำหรับฉัน
phuclv

คำตอบ:


43

ยูทิลิตี Bash + linux, 19

seq 40 2 72|pv -qlL2

seqสร้างผลลัพธ์ตัวเลข pvให้ค่าเป็น 2 บรรทัด / วินาที


2
เอาต์พุต-qหยุดทำงานไปที่ STDERR ดังนั้นฉันไม่คิดว่าคุณต้องการมัน
เดนนิส

14
การสาธิตที่ยอดเยี่ยมของ "ทำสิ่งเดียวและทำได้ดี" ด้วยเครื่องมือที่เหมาะสมสำหรับงาน :)
Doorknob

2
เข้ามาใกล้กับดินแดน"anti-golfscript anti-golf"
วิ

42

Minecraft 1.9.0+, 204 162 bytes + 58 36 28 24 20 บล็อก = 262 240 232 186 182 blytes

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

วิ่ง!  MINECRAFT จะฆ่าคุณ!

วิธีการแก้ปัญหานี้ใช้หลักการเดียวกับด้านล่างเพียง 4 ช่วงตึกขนาดกะทัดรัดมากขึ้น

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

  • การใช้ลูกสูบอย่างไม่ถูกต้องใช้เวลา 0.30 วินาทีในการขยายอย่างสมบูรณ์และการจับกลุ่มต้องใช้เวลาเพียง 0.10 วินาทีในการลงทะเบียนสัญญาณ

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

  • ด้านบนของการละเมิดทั้งหมดเหล่านี้ shortener สัญญาณ (สิ่งที่อยู่ภายใต้ TNT) เป็นแบบใช้ครั้งเดียวหลังจากที่ได้รับพลังงานมันเปลี่ยนรูปร่างทำให้สามารถส่งสัญญาณผ่านมันไปยัง "incrementer" (บล็อกสีส้มบนสุด)

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


วิธีแก้ปัญหาเก่า Minecraft 1.9.0+, 186 blytes:

การละเมิดขั้นต่ำ

เนื่องจากปกติแล้ว TNT จะระเบิดหลังจาก 3.0 วินาทีใน Minecraft จึงต้องมีคำสั่ง ( /setblock) พร้อมฟิวส์ที่ระบุ นอกจากนี้ยังใช้การออกแบบที่กะทัดรัดยิ่งขึ้นเพื่อลบบล็อกคำสั่งที่ซ้ำซ้อน (ที่มี 42 ไบต์) และการจับกลุ่มเทียบกับรุ่นเก่ากว่า ฉันแน่ใจว่านี่จะไม่ลดลง ...

วิธีแก้ปัญหาที่เก่ากว่า Minecraft 1.9.0+, 232 blytes:

โอ๊ะฉันพบคำตอบที่เก่ากว่านี้เพิ่มขึ้น 4 ...

golfcraft

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

โซลูชันที่เก่ากว่า Minecraft 1.7.0+, 240 blytes:

สัตว์ประหลาดอนัตตา

ใช้ตัวจับเวลาขนาดกะทัดรัด (TNT) จากนั้นจึงเป็นโซลูชันแรก (ด้านล่าง)

ทางออกที่เก่าที่สุด Minecraft 1.7.0+, 262 blytes:

สัตว์ประหลาดตัวเก่า


นี่เป็นเวลานานเนื่องจากวิธีการที่ Minecraft จัดการกับตัวแปร:

  • ในการกำหนดตัวแปร (int): scoreboard objectives add <variable> dummy

  • ในการตั้งค่าเป็นตัวแปร (แต่ละเอนทิตีรวมถึงผู้เล่นมีค่าตัวแปรของตัวเอง): scoreboard players set <entity> <variable> <value>

    • *สามารถใช้เป็นการ<entity>เลือกเอนทิตีทั้งหมดและบันทึกไบต์

    • สามารถใช้ตัวแปรที่กำหนดได้เท่านั้น

    • ค่าของตัวแปรต้องถูกตั้งค่าเป็นตัวเลขไม่ใช่ตัวแปร

  • วิธีเพิ่มค่า var1 ด้วย var2: scoreboard players operation <entity> var1 += <entity> var2

    • <entity>จะต้องเป็นนิติบุคคลเดียวเช่น @pไม่ใช่*

ภาพหน้าจอเป็นของฉันเองมีสิทธิ์ใช้งานคู่ภายใต้WTFPLและสิทธิ์ใช้งาน SE ใดตัดสินใจใช้วันนี้ (ปัจจุบัน cc by-sa 3.0 with attribution required) :-)


2
ว้าว! คุณใช้ Minecraft นั่นคืออัจฉริยะ! +1 :)
IMustBeSomeone

1
@ ImustBeSomeone เดี๋ยวก่อนฉันพบวิธีในการตีกอล์ฟนี้ :)
RudolfJelin

1
... วงจรของคุณระเบิดขึ้นเมื่อเสร็จแล้ว
SuperJedi224

@ SuperJedi224 ใช่ มันผิดไหม?
RudolfJelin

2
@ RudolfL.Jelínekฉันค่อนข้างแน่ใจว่ามันไม่ได้ขัดกับกฎจริงๆ แต่มันแปลกดี จากนั้นอีกครั้งนั่นเป็นส่วนหนึ่งของรหัสเกี่ยวกับกอล์ฟ
SuperJedi224

18

เป็นกลุ่ม, 24 , 23 ไบต์ / การกดแป้น

i40<esc>qq:sl500m
Yp2<C-a>q15@q

บันทึกหนึ่งไบต์ด้วย @Kritixi Lithos!

เขียนจากโทรศัพท์ของฉันทดสอบในกลุ่มมือถือ (ซึ่งเห็นได้ชัดว่าเป็นเรื่องจริง)

นี่คือ gif ของมันทำงาน:

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

และนี่คือคำอธิบายแบบคำสั่ง:

i40<esc>            " Insert '40' into the buffer
        qq          " Start recording into register 'q'
          :sl500m   " Sleep form 500 ms
Y                   " Yank this line
 p                  " and paste it on a newline
  2<C-a>            " Increment this line twice
        q           " Stop recording
         15@q       " Callback register 'q' 15 times

sในmsเป็นตัวเลือกที่คุณสามารถลบมันจะบันทึกไบต์ :)
Kritixi Lithos

@KritixiLithos ฉันรู้แล้ว! ฉันจะมองข้ามสิ่งนั้นได้อย่างไร ขอบคุณ!
DJMcMayhem

8
นักเรียนกลายเป็นครู: P
Kritixi Lithos

1
"ฉันจะโพสต์ gif และคำอธิบายในภายหลังเมื่อฉันสามารถเข้าถึงคอมพิวเตอร์ได้" รอครึ่งปี (ไม่มาก)
HyperNeutrino

@HyperNeutrino ฮาฮาฮาฮาฮาฉันลืมคำตอบนี้ไปแล้ว ดีกว่านี้: P
DJMcMayhem

10

JavaScript (ES6), 52 ไบต์

f=(i=40)=>console.log(i)|i-72&&setTimeout(f,500,i+2)

f()


f=(i=40)=>setTimeout(i>70||f,500,i+2,console.log(i))นี่เป็นระเบียบมากขึ้นอีกครั้งการจัดเรียงของคำตอบของคุณสำหรับคุณ: น่าเศร้าที่ยังคงเหมือนเดิม 52 ไบต์
Ismael Miguel

ไม่ควรเป็นจำนวน50ไบต์เนื่องจากคุณไม่จำเป็นต้องนับf=ตามมติเมตาที่อนุญาตให้มีการประกาศฟังก์ชันที่ไม่ระบุชื่อได้
R. Kap

1
@ R.Kap การตรวจจับที่ดี แต่ในกรณีf=นี้จำเป็นต้องมีเนื่องจากฟังก์ชันจำเป็นต้องเรียกตัวเอง (เป็นพารามิเตอร์แรกถึงsetTimeout)
ETHproductions

8

เยลลี่ , 13 12 ไบต์

40µṄœS.+2µ⁴¡

ลองออนไลน์! โปรแกรม Jelly ถูกห่อด้วยสคริปต์ Bash เพื่อใส่คำนำหน้าแต่ละบรรทัดของเอาต์พุตด้วยการประทับเวลา

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

40µṄœS.+2µ⁴¡  Main link. No arguments.

40             Set the return value to 40.
  µ      µ⁴¡  Execute the chain between the two µ 16 times.

   Ṅ           Print the return value, followed by a linefeed.
      .        Yield 0.5.
    œS         Sleep for 0.5 seconds. Yield the previous result.
       +2      Add 2.

หลังจากการทำซ้ำครั้งสุดท้ายค่าสุดท้ายของ72จะถูกพิมพ์โดยนัยและออกจากโปรแกรม


ว้าวนั่นเป็นคุณสมบัติที่ตั้งใจสามารถโทรไปยังภาษาอื่นจาก Bash ใน tio ได้หรือไม่?
ไมล์

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

สำหรับภาษาที่ชนะความท้าทายการเล่นกอล์ฟและส่วนหนึ่งของความท้าทายที่เพิ่มขึ้นตามค่าคงที่นี้ดูยาวมากสำหรับฉัน :)
AlexRacer

6

Perl 6 , 30 ไบต์

for 20..36 {sleep .5;say 2*$_}

ขออภัยที่ดูเหมือนว่ารหัสที่ไม่ตีกอล์ฟฉันไม่เห็นวิธีที่จะทำให้สั้นลง ...

รุ่นที่หยุดทันทีหลังตัวเลขสุดท้ายจะเป็น 37 ไบต์:

for 20..36 {sleep .5 if $++;say 2*$_}

คุณต้องการพื้นที่36หรือไม่
NoOneIsHere

2
.say&sleep(.5) for 40,42...7229 bytes
ugexe

@ugexe: อาศัยผลข้างเคียงของข้อโต้แย้งของผู้ประกอบการที่ไม่ใช่การลัดวงจรที่จะเกิดขึ้นในการสั่งซื้อรู้สึกเหมือนแฮ็คเฉพาะการดำเนินการกับฉันเพราะ AFAIK สเป็คภาษาไม่รับประกัน OTOH บางทีสำหรับรหัสกอล์ฟก็ไม่เป็นไร?
smls

@SeeOneRhino: ใช่ เครื่องหมาย{วงเล็บต่อจากนิพจน์อื่นที่ไม่มีช่องว่างถูกตีความว่าเป็นจุดเริ่มต้นของตัวห้อยแฮช ("associative array") Perl 6 นั้นเข้มงวดมากเพราะไวยากรณ์ได้รับการออกแบบมาโดยเจตนาเพื่อให้สามารถแยกวิเคราะห์ซอร์สโค้ดหนึ่งรอบด้วย (เกือบ) โดยไม่มีการย้อนรอย
smls

6

Pyth - 12 ไบต์

ง่ายมากใช้สำหรับลูปตั้งแต่ 0-17

V17+40yN.d.5

ที่เล็กที่สุดจนถึงตอนนี้คุณถูกผูกไว้กับที่หนึ่ง :)
IMustBeSomeone

6

TI-Basic (CE หรือ CSE เท่านั้น), 16 ไบต์

:For(A,40,72
:Pause A,.5
:End

โปรดทราบว่าคำสั่งจำนวนมากเป็นโทเค็นไบต์เดียว


ฉันเห็น 29 ไบต์? เป็นไปได้ไหมที่คุณจะแสดงรหัส 8 ไบต์?
redstarcoder

1
TI-Basic มีชุดอักขระของตัวเอง For(, Pause , Endและทวิภาคที่จุดเริ่มต้นของเส้นที่มีทั้งหมดไบต์เดียว
Julian Lachniet

แปลก ... เอาล่ะดูเหมือนว่าคำตอบอื่น ๆ ก็เช่นกัน
redstarcoder

1
ดีที่สุดของเราจนถึงตอนนี้! อย่างไรก็ตามฉันไม่รู้ว่าฉันจะนับชุดตัวละครแบบไหน
IMustBeSomeone

2
เกี่ยวข้อง: meta.codegolf.stackexchange.com/questions/1541/…
Jordan

5

MATL , 14 ไบต์

17:E38+".5Y.@D

ลองใช้งานในMATL Online! คุณอาจต้องโหลดหน้าซ้ำหากไม่ได้ผลในตอนแรก

คำอธิบาย

17:     % Push array [1 2 ... 17]
E       % Multiply by 2, element-wise
38+     % Add 38, element-wise. This gives [40 42 ... 72]
"       % For each k in that array
  .5Y.  %   Pause 0.5 seconds
  @D    %   Push k and display
        % End (implicit)

เวอร์ชันเก่า (ก่อนการเปลี่ยนแปลงข้อมูลจำเพาะ) การล้างหน้าจอ

17:E38+"5&Xx@D

ลองใช้งานในMATL Online!


คุณไม่จำเป็นต้องล้างหน้าจอ
2559

@ Adámขอบคุณ ฉันรู้ แต่มันใช้จำนวนไบต์เท่ากันและดูดีกว่า :-)
Luis Mendo

1
@LuisMendo ความท้าทายกอล์ฟระบุบางสิ่งบางอย่างเกี่ยวกับการไม่ล้างหน้าจอหลังจากแก้ไข / ทำให้กระจ่าง (อาจเป็นหลังจากโพสต์ของคุณ)
Thomas Ward

@ThomasWard ขอบคุณสำหรับการเฮฮา! OP ควรแจ้งผู้ตอบคำถามเกี่ยวกับการเปลี่ยนแปลงจริงๆ
Luis Mendo

4

Dyalog APL ขนาด 20 ไบต์

{⎕DL.5⊣⎕←⍵}¨38+2×⍳17

{ ฟังก์ชั่นที่ไม่ระบุชื่อ

⎕DL ล่าช้า ...

.5⊣ half (a) มากกว่าค่าของ

⎕← พิมพ์ (ขึ้นบรรทัดใหม่)

 อาร์กิวเมนต์

นำไปใช้กับแต่ละ

38+ สามสิบแปดบวก

สองครั้ง

⍳17 จำนวนเต็มตั้งแต่ 1 ถึง 17


4

C คอมไพล์ด้วย Clang 3.8.1 บน Linux, 62 59 58 bytes

บันทึก 2 ไบต์ด้วย @ranisalt

s=38;main(){for(;s<74;printf("%d\n",s+=2))usleep(500000);}

59 ไบต์

s=38;main(){for(;s<73;printf("%d\n",s+=2+usleep(500000)));}

62 ไบต์

s=38;main(){for(;s!=72;){printf("%d\n",s+=2);usleep(500000);}}

s=38                # Initializes a global (int) variable, this is only possible in C, in other languages from the C family variables must have an explicit type.
main()              # Is the main entry point, again as before, in case a type isn't specified C defaults to int
printf("%d\n",s+=2) # printf outputs to stdout based on the pattern defined in the first parameter 
                    # %d is a placeholder for an int variable
                    # \n appends a newline to stdout
                    # The second parameter increments the s variable and afterwards it goes in the placeholder's spot.
usleep(500000)      # This function is Linux specific, it takes an int as parameter, it represents how much time the app needs to sleep in microseconds

2
ขอบคุณสำหรับคำตอบและยินดีต้อนรับสู่เว็บไซต์ คุณสามารถเพิ่มคำอธิบายเล็กน้อยสำหรับผู้ที่ไม่คุ้นเคยกับภาษาของคุณหรือไม่?
isaacg

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

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

1
@isaacg ขอบคุณมาก มันดูดีขึ้นแล้ว
ลุยไทเลอร์

1
การใช้s<72บันทึกไบต์อื่น
ranisalt

4

รอยขีดข่วน 5 บล็อก

(พื้นที่ดิสก์ 56.0kb)

img

(ขออภัยสำหรับความละเอียดต่ำ!)

อธิบายตนเองได้จริงๆ ค่าตัวแปรจะปรากฏในกล่องบน "เวที"


สิ่งนี้ไม่มีการเพิ่มขึ้น 4 หรือไม่? (ตรงข้ามกับ 2 ตามคำขอ)
VisualMelon

1
@VisualMelon อาขอบคุณสำหรับการแจ้ง - ฉันเข้าใจผิดคำถามก่อนที่จะแก้ไข; ฉันอ่านมันอีกครั้งในภายหลังและแก้ไขคำตอบอื่น ๆ ของฉันในขณะที่ลืมสิ่งนี้ ขอบคุณ!
RudolfJelin

3

Mathematica, 34 ไบต์

Pause[Print@#;.5]&/@Range[40,72,2]

โปรแกรมเต็มรูปแบบ ไม่รับอินพุตและเอาต์พุตไปที่ STDOUT


3

R, 49 ไบต์

x=38;while(x<72){Sys.sleep(.5);x=x+2;cat(x,"\n")}

แก้ปัญหาเล็กน้อยมาก แต่มันก็หลอก


เริ่มต้น x = 40 ไม่ได้พิมพ์ 40 เมื่อเริ่มต้น คุณต้องเริ่มต้นด้วย x = 38
rnso

ตลกความคิดเดียวกัน แต่ด้วยfor-loop นั้นมีความยาวเท่ากัน
JAD

3

Perl 6 , 27 ไบต์

sleep .say/2 for 40,42...72

sayผลตอบแทนTrueซึ่งจะบังคับให้ตัวเลขเมื่อหารด้วย12

Unicode shenanigans สามารถลดความยาวได้ถึง 23 ตัวอักษร:

sleep .say/2 for ㊵,㊷…72

แต่นั่นเป็น 29 ไบต์ UTF-8 ที่เข้ารหัส


3

Python 2, 57 56 55 Bytes

import time
a=40
while a<73:print a;time.sleep(.5);a+=2

แก้ไข:

-1 ไบต์ต้องขอบคุณ Mega Man

-1 ไบต์ขอบคุณ Flp.Tkc


1
คุณสามารถบันทึกหนึ่งไบต์โดยใช้. 5 แทน 0.5
Mega Man

@ MegaMan ขอบคุณฉันไม่ได้ตระหนักว่าสามารถใช้งานได้
sonrad10

ทำไมไม่ถอดวงเล็บล้อมรอบคำสั่งการพิมพ์และใช้ Python 2
FlipTack


3

C #, 95 ไบต์

()=>{for(int i=40;i<73;i+=2){System.Console.WriteLine(i);System.Threading.Thread.Sleep(500);}};

มันง่ายต่อการวนรอบรออีก 500 มิลลิวินาทีในตอนท้าย


3

QBICขนาด 21 ไบต์

[44,72,4|?a┘'sleep 1.

QBIC เริ่มต้น FOR-loop เรียกใช้จาก 44 เป็น 72 และเพิ่มจำนวนตัวนับ 4 ในทุก ๆ ลูป จากนั้นจะหลับเป็นเวลา 1 วินาที QBasic ไม่มีระบบควบคุมที่ดีsleepกว่าดังนั้นฉันจึงเพิ่มการ.จำลองการให้.5เป็นอาร์กิวเมนต์


3

Kotlin, 47 ไบต์

ฉันเดาว่ามันไม่ได้กล่าวไว้ในคำแถลงปัญหาว่าวิธีแก้ปัญหาควรมีการเพิ่มขึ้นสองเท่าดังนั้น 40+2*iนี่เป็นสิ่งถูกกฎหมาย

หากเขียนเป็นแหล่ง Kotlin ปกติด้วยmain:

fun main(args:Array<String>){(0..16).map{println(40+2*it);Thread.sleep(500)}}

(77 ไบต์)

UPD : ใน Kotlin 1.3args:Array<String>สามารถลบได้ดังนั้นจึงน้อยกว่า 18 ไบต์

และใน Kotlin Script โปรแกรมทั้งหมดจะเป็น

(0..16).map{println(40+2*it);Thread.sleep(500)}

(47 ไบต์)


โปรแกรมแรกของคุณดูเหมือนจะรอเป็นเวลานานก่อนแล้วจึงออกผลลัพธ์ทั้งหมด
devRicher

1
@devRicher ดูเหมือนว่าคุณกำลังใช้งานอยู่ที่ try.kotlinlang.org ถ้าเป็นเช่นนั้นนั่นเป็นปัญหาของสภาพแวดล้อมดูเหมือนว่า stdout จะไม่ถูกล้างออกหรือบางสิ่งบางอย่าง เมื่อฉันเรียกใช้ภายในเครื่องมันจะทำงานตามที่ต้องการ
ปุ่มลัด


2

Haskell, 67 ไบต์

import System.Posix.Unistd
mapM((>>usleep 500000).print)[40,42..70]

หากคุณต้องการที่จะไปกับ GHC เท่านั้นคุณสามารถบันทึกไม่กี่ไบต์โดยการนำเข้าGHC.Concและการใช้แทนthreadDelayusleep



2

Clojure, 54 ไบต์

(doseq[t(range 32 73 2)](println t)(Thread/sleep 500))

เสียงกระเพื่อมที่สาม ftw เพียงแค่วนซ้ำช่วงพิมพ์และนอนซ้ำแต่ละครั้ง นอนตอนท้าย

Ungolfed:

(doseq [t (range 32 73 2)]
    (println t)
    (Thread/sleep 500)))

รุ่นที่ไม่ได้หลับตอนท้าย 66 ไบต์

(doseq[t(range 32 73 2)](println t)(if(< t 72)(Thread/sleep 500)))

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


2

แร็กเก็ต 46 ไบต์

(for((i(range 40 73 2)))(println i)(sleep .5))

Ungolfed:

(define (f)
  (for ((i (range 40 73 2)))
    (println i)
    (sleep .5)))

คำสั่งให้เรียกใช้: (f)


1
โปรดจำไว้ว่ามันไม่จำเป็นต้องหยุดที่ 72 ก็สามารถรออีก 500 มิลลิวินาที :)
IMustBeSomeone

2

อ็อกเทฟ38 38ไบต์

บันทึกแล้ว 3 ไบต์ขอบคุณ @LuisMendo โดยเปลี่ยนendforเป็นend

for i=20:36;disp(2*i);sleep(.5);end

ลองออนไลน์!

ฉันยังใหม่กับ Octave ดังนั้นโซลูชันนี้ยังอาจตีกอล์ฟต่อไป ยินดีต้อนรับเคล็ดลับใด ๆ !

Ungolfed

for i=20:36
  disp(2*i)
  sleep(.5)
end

2

Python 2, 57 58 Bytes

แก้ไข

นับเป็น 57 ไบต์บนมือของฉัน แต่ TIO บอกว่า 58 ตอนนี้ฉันกลับมาที่เครื่องของตัวเองแล้วนั่นเป็นข้อเสนอสุดท้ายของฉัน น่าสนใจพอที่ TIO ดูเหมือนจะไม่เคารพการหมดเวลาและรอและพิมพ์รายการทั้งหมดในครั้งเดียว ใช้งานได้กับ QPython สำหรับ Android และ Python 2 บนกล่อง Ubuntu ของฉันซึ่งดีพอสำหรับฉัน

import time
for x in range(40,74,2):print x;time.sleep(.5)

ลองออนไลน์!

น่าจะเป็น58 59 ใน Python 3 ดังนั้นอย่าเอาชนะ @ sonrad10 ต่อไป


1
นี่จะทำให้เกิดข้อผิดพลาดทางไวยากรณ์คุณต้องมีโคลอน (ไม่ใช่เซมิโคลอน) หลังจากrange(...)
FlipTack

ขอบคุณ @ Flp.Tkc มันถูกพิมพ์ลงบนมือที่มีประโยชน์ของฉัน
ElPedro

2

R, 44 42 ไบต์

ตรงไปตรงมาสำหรับวงมีวิธีนักเล่นกอล์ฟ (นอกจากนี้เครื่องหมายกากบาท 44 ยังเป็นปกติ 44 ... )

for(i in 20:36*2)cat(i,"\n",Sys.sleep(.5))

2

F #, 60 ไบต์

async{for i in 40..2..72 do printfn"%d"i;do!Async.Sleep 500}

นี้คือการแสดงออก async ในเพื่อที่จะรันผ่านมันเข้าหรือAsync.StartAsync.RunSynchronously


2

Noodelขนาดไม่น้อยกว่า 10 ไบต์

ไม่สามารถแข่งขันได้เนื่องจากNoodelเกิดหลังจากการท้าทายถูกสร้างขึ้น :(

40Ḷ16ñ++ḍh

ลองมัน:)

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

40         # Creates the literal number 40 and places it into the pipe.
  Ḷ16      # Loop the following code 16 times.
     ñ     # Print what is in the front of the pipe with a new line.
      ++   # Increment what is in the pipe by two.
        ḍh # Delay for a half a second (500ms).

ไม่มีรุ่นของNoodelที่รองรับไวยากรณ์ที่ใช้ในคำตอบนี้ นี่คือรุ่นที่ถูกต้อง:

kȥḶ16ñ⁺2ḍh

<div id="noodel" code="kȥḶ16ñ⁺2ḍh" input="" cols="10" rows="17"></div>

<script src="https://tkellehe.github.io/noodel/noodel-latest.js"></script>
<script src="https://tkellehe.github.io/noodel/ppcg.min.js"></script>

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