สร้างยิมออกกำลังกายของคุณเองและติดตามไปตาม irl


10

เรามาออกกำลังกายด้วยกันใช่ไหม เพียงแค่ติดตามการเคลื่อนไหวของ stickman คุณถามอะไร stickman คนที่เรากำลังจะสร้าง!

สร้างโปรแกรมที่อนุญาตให้มีการป้อนสตริงเท่านั้นที่มีจำนวนเต็มและส่งออกตัวเลขเก้าตัวต่อไปนี้โดยมีช่วงเวลาระหว่าง:

 @  \@/ |@_ _@| @/   \@ |@| \@\ /@/
/|\  |   |   |   |   |   |   |   |
/ \ / \ / \ / \ /|\ /|\ / \ / \ / \
 1   2   3   4   5   6   7   8   9

สิ่งนี้จะส่งผลให้มีภาพเคลื่อนไหวซึ่งเราสามารถติดตามได้ตาม irl

นี่คือตัวอย่างของเอาต์พุตที่สร้างขึ้นเมื่ออินพุตคือ " 123245762":

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

กฎบางอย่าง:

  • นี่คือการติดแท็กดังนั้นรหัสที่สั้นที่สุดในไบต์ชนะ
  • อินพุตมีstringเพียง[1-9]ความยาวที่อาจแตกต่างกันตั้งแต่ 2 ถึง 100 ตัวอักษร **
  • ภาพเคลื่อนไหวจะต้องวนซ้ำไม่สิ้นสุด
  • ช่วงเวลาต้องเป็น 750 มิลลิวินาที
  • ไม่อนุญาตให้ใช้จำนวนเต็มที่อยู่ติดกันที่ซ้ำกันในอินพุต - ซึ่งรวมถึงจำนวนเต็มแรกและสุดท้ายของอินพุต (ดูกรณีทดสอบที่เจ็ดและแปด) **

** วิธีที่จะล้มเหลวในกรณีของการป้อนข้อมูลที่ไม่ถูกต้องสมบูรณ์ขึ้นอยู่กับคุณ แต่มันควรจะเป็นที่ชัดเจนว่ามันล้มเหลว มันสามารถโยนข้อยกเว้น; เพียงกลับมาที่จุดเริ่มต้น รีบูทพีซีของคุณ ลบมันเป็นซอร์สโค้ด / คอมไพล์โค้ดของตัวเอง; เจาะเข้าไปในกองทัพแล้วยิงจรวดไปยังตำแหน่ง GPS ที่รวบรวม การโทรของคุณ แก้ไข:ไม่อนุญาตให้เพียงแสดงภาพเคลื่อนไหว (ถูกต้อง / ครึ่ง) เป็นอินพุตที่ล้มเหลว จะต้องมีความชัดเจนว่ามีบางอย่างผิดปกติกับอินพุตสำหรับการทดสอบล้มเหลวด้านล่าง ขอบคุณ@ user81655 ที่ทำให้สิ่งนี้เป็นที่สนใจของฉันดังนั้นการแก้ไข

Subrules:

  • โปรดโพสต์ gif สำหรับหนึ่งในกรณีทดสอบ (ที่ไม่ใช่ความล้มเหลว) ด้านล่างในคำตอบของคุณซึ่งคุณสามารถทำได้ง่ายด้วยโปรแกรมต่อไปนี้: screentogif.codeplex.com (โปรแกรมสร้าง gif อื่นใดก็ได้เช่นกัน)
  • คะแนนโบนัสหากคุณออกกำลังกายควบคู่ไปกับอนิเมชั่น irl เมื่อทำเสร็จแล้ว ;)

คำตอบที่ถูกต้อง:

  1. 123245762
  2. 65
  3. 121234346565879879132418791576

การทดสอบล้มเหลว:

  1. 2 // ตัวละครน้อยเกินไป
  2. 7282918274959292747383785189478174826894958127476192947512897571298593912374857471978269591928974518735891891723878 // ตัวละครมากเกินไป
  3. 1232405762// ที่มีอินพุตไม่ถูกต้อง ( 0)
  4. 112212// ล้มเหลวเพราะของ11และ22ปัจจุบัน
  5. 1232457621 // ล้มเหลวเนื่องจากการเริ่มต้นและนำหน้า 1

5
IMO นี่คือการดักจับเส้นเขตแดนของสิ่งนี้
Peter Taylor

1
BTW การแก้ไขหลังจากความท้าทายถูกโพสต์หมดกำลังใจ
บลู

imo การตรวจสอบการป้อนข้อมูลทำลายความท้าทาย
FlipTack

@FlipTack คุณพูดถูก ฉันควรจะเก็บไว้กับความท้าทายและถือว่าข้อมูลทั้งหมดนั้นถูกต้อง นี่เป็นคำถามแรกของฉันที่นี่ใน PPCG สายเกินไปที่จะเปลี่ยนตอนนี้แม้ว่า
Kevin Cruijssen

คำตอบ:


0

Pyth, 114 ไบต์

.V0j@cv.Z"xÚí» À0DW¹NM@+Üñ\">íÂA¸êÄÓw»`3±2þ&'NövfAé8é~0,p'ÆìÞúr_'¥,d!YÈBíéqs"3tv@zb.d.75

เอาต์พุต GIF

ลองที่นี่

(ไม่มีการหยุดชั่วคราวไม่มีที่สิ้นสุด)


อืมมันเป็นไปไม่ได้ที่จะกลับ / โยนหรือวนซ้ำอย่างไม่มีที่สิ้นสุดใน Pythis? หรือจะใช้ไบต์มากเกินไป / ใช้เวลานานเกินไปในการสร้าง? (ปัจจุบันมันใช้งานได้เหมือนกันสำหรับ testcase ที่ถูกต้องทั้งหมดรวมถึง testcase ที่ล้มเหลวทั้งหมดและมันยังเพิ่มในเอาต์พุตสำหรับ0) ไม่ว่าจะเป็นการขอบคุณสำหรับการเข้าร่วม หนึ่งในตัวอย่างโค้ดที่อ่านไม่ได้มากที่สุดสำหรับรายการนี้คือการเดาของฉัน :)
Kevin Cruijssen

ล่ามออนไลน์ไม่ได้ล้าง IO ในระหว่างการนอนหลับดังนั้นจึงไม่สังเกตเห็น คุณพูดว่าคุณต้องการวนรอบไม่สิ้นสุดดังนั้นฉันไม่แน่ใจว่าคุณกำลังถามอะไรอยู่ที่นั่น "ความล้มเหลวขึ้นอยู่กับคุณ" - ฉันกำลังทำพฤติกรรมที่ไม่ได้กำหนดไว้สำหรับสิ่งนี้ รหัสอาจทำอะไรก็ได้ (แม้ว่ามันจะทำงานเหมือนกัน) นอกจากนี้ฉันคาดหวังว่าสิ่งนี้จะสามารถอ่านได้ค่อนข้างเปรียบเทียบกับรายการที่เป็นไปได้
Blue

4

SpecBAS - 387 ไบต์

1 DIM m$=" @"#13"/|\"#13"/ \","\@/"#13" |"#13"/ \","|@_"#13" |"#13"/ \","_@|"#13" |"#13"/ \","@/"#13" |"#13"/|\"," \@"#13" |"#13"/|\","|@|"#13" |"#13"/ \","\@\"#13" |"#13"/ \","/@/"#13" |"#13"/ \"
2 INPUT a$: o=0
3 IF LEN a$<2 OR LEN a$>100 THEN 10
4 FOR i=1 TO LEN a$
5 n=VAL(a$(i))
6 IF n=0 OR n=o THEN 10
7 CLS : ?m$(n): o=n: WAIT 750
8 NEXT i
9 GO TO 4
10 CLS : ?" @"#13"-O-"#13"/ \"#13"FAT"

คงการวนซ้ำจนกว่าคุณจะกด ESC ความล้มเหลวในการออกกำลังกายอย่างถูกต้อง (อินพุตไม่ถูกต้อง - ในตัวอย่างนี้ 0 เป็นหนึ่งในขั้นตอน) นำไปสู่ความอ้วน GIF ลูปในโปรแกรมมันหยุดที่จุดนั้น

#13SpecBAS เทียบเท่ากับ\nและให้คุณรวมการป้อนบรรทัดเป็นสตริง

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


1
"FAT": D ......
Adam Varhegyi


1

JavaScript (ES6), 210 ไบต์

s=>setInterval(_=>(c=console).clear(i=0)&c.log(`, @
/|\\
/ \\,\\@/
 |
/ \\,|@_
 |
/ \\,_@|
 |
/ \\,@/
 |
/|\\, \\@
 |
/|\\,|@|
 |
/ \\,\\@\\
 |
/ \\,/@/
 |
/ \\`.split`,`[s[i++%s.length]]),750)

สิ่งนี้จัดการกับกฎเกี่ยวกับการยกเว้น0และการทำซ้ำได้อย่างไร
Morgan Thrapp

4
@ Morgan'Venti'Thrappuccino How it fails in case of invalid input is completely up to youผมก็รู้สึกว่าปัจจัยการผลิตที่ไม่ถูกต้องไม่จำเป็นต้องมีพฤติกรรมที่กำหนดไว้ตั้งแต่มันบอกว่า ฉันจัดการกับอินพุตที่ไม่ถูกต้องโดยการแสดงภาพเคลื่อนไหว : P ไม่มีคำตอบอื่น ๆ ที่มีอยู่ตรวจสอบสิ่งนี้ แต่คำตอบที่ OP เพิ่งโพสต์ทำดังนั้นเขาอาจต้องการให้เราจัดการกับอินพุตที่ไม่ถูกต้อง
user81655

"ฉันเพิ่งจัดการอินพุตที่ไม่ถูกต้องโดยการแสดงภาพเคลื่อนไหว: P" ฮ่า ๆ .. นั่นเป็นวิธีหนึ่งในการดู xD ฉันจะแก้ไขคำถาม
Kevin Cruijssen

0

Mathematica ขนาด 252 ไบต์

i=0;Dynamic[Uncompress["1:eJxTTMoPSuNkYGAoZgESPpnFJcFCQIaCQ4yBoZF+TUwMmFaIiQELx8Q46IMEFGrgwoJA4RqHeCyi8Q41aKICQFEUA2qg5gIlHdCEIeaimyAMcQTEWWj26aO7DQDaqDEh"][[FromDigits[#~StringTake~{i=i~Mod~StringLength@#+1}]]],UpdateInterval->3/4,TrackedSymbols->{}]&

คงจะดีถ้ามีคนสร้าง GIF ได้ ทำงานในโน้ตบุ๊ค


0

Python3, 338 ไบต์

import os,time
p=" @ \n/|\\\n/ \\","\\@/\n | \n/ \\","|@_\n | \n/ \\","_@|\n | \n/ \\","@/ \n | \n/|\\"," \\@\n | \n/|\\","|@|\n | \n/ \\","\\@\\\n | \n/ \\","/@/\n | \n/ \\"
i=input()
for j in range(len(i)):(i[j]in"123456789"and i[j]!=i[(j+1)%len(i)])or exit()
while 1:[[time.sleep(0.75),os.system("clear"),print(p[int(j)-1])]for j in i]

0

Java 8, 663 636 634 631 596 355 354 ไบต์

สำหรับ lols ฉันพยายามทำโปรแกรมใน Java เป็นที่ยอมรับว่าฉันเล่นกอล์ฟและเล่นกอล์ฟไม่ดีนัก อย่างไรก็ตามที่นี่อยู่ใน Java 7
ตอนนี้เกือบสองปีต่อมาและฉันเกือบครึ่งรหัสใน Java 8 ทำไมฉันเคยทำกฎเหล่านั้นเกี่ยวกับการตรวจสอบการป้อนข้อมูลและต้องใช้โปรแกรมเต็มแม้ว่า ... >.> ฉันเกลียด ตัวฉันในอดีตตอนนี้ ..

interface M{static void main(String[]a)throws Exception{if(!a[0].matches("[1-9]{2,100}")|a[0].matches("(.).*\\1|.*(.)\\2.*"))return;for(;;)for(int c:a[0].getBytes()){c-=48;System.out.printf("%s%n%s%n%s%n",c<2?" @ ":c<3?"\\@/":c<4?"|@_":c<5?"_@|":c<6?"@/ ":c<7?" \\@":c<8?"|@|":c<9?"\\@\\":"/@/",c<2?"/|\\":" | ",c%7>4?"/|\\":"/ \\");Thread.sleep(750);}}}

คำอธิบาย:

ลองออนไลน์ (หลังจากหมดเวลาหลังจาก 60 วินาที)

interface M{                     // Class
  static void main(String[]a)    //  Mandatory main-method
      throws Exception{          //    Required throws for the `Thread.sleep`
    if(!a[0].matches("[1-9]{2,100}")
                                 //   Validate 2-100 integers only containing 1-9
       |a[0].matches("(.).*\\1|.*(.)\\2.*")
                                 //   Validate no adjacent duplicated char (with wrap-around)
      return;                    //    If either isn't valid, stop the program
    for(;;)                      //   Loop indefinitely
      for(int c:a[0].getBytes()){//    Inner loop over the characters of the input
        c-=48;                   //     Convert character-code to integer
        System.out.printf("%s%n%s%n%s%n",
                                 //     Print:
          c<2?" @ ":c<3?"\\@/":c<4?"|@_":c<5?"_@|":c<6?"@/ ":c<7?" \\@":c<8?"|@|":c<9?"\\@\\":"/@/",
                                 //      The top part of the stick figure
          c<2?"/|\\":" | "       //      The middle part of the stick figure
          c%7>4?"/|\\":"/ \\");  //      The bottom part of the stick figure
        Thread.sleep(750);}}}    //     Sleep 750 ms

Gif:
(หมายเหตุ: gif เก่าเนื่องจากเห็นได้ชัดว่าเป็น jdk1.8 + ตอนนี้)

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


โดยปกติเราจะพูดJava 7ถึงการอ้างถึง Java เวอร์ชันนี้ซึ่ง1.7อาจทำให้สับสนบางคนคิดว่ามันถูกJava 1แก้ไข7
GamrCorps

p(new String[]{" @ ",y,"|@_", ... }[c-49]);if(c==49){p(x);l();}else if(c==53){w();p(x);}else d();ยาวถ้ามีคำสั่งอาจจะกลายเป็นสิ่งที่ชอบ นอกจากนี้ฉันคิดว่าการกำหนดlและการwสูญเสียอักขระตอนนี้พวกเขาใช้เพียงสองครั้ง พิจารณาปล่อยให้sเป็นchar[] s=a[0].toCharArray(); การดำเนินการอื่น ๆ ทั้งหมดที่มีจะสั้นกว่ามาก
Alex Meiburg
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.