Tạo bài tập thể dục của riêng bạn và làm theo irl


10

Chúng ta hãy cùng tập thể dục nhé? Đơn giản chỉ cần làm theo các chuyển động của stickman. Bạn hỏi gì về stickman? Người mà chúng ta sắp tạo ra!

Tạo một chương trình cho phép đầu vào chuỗi chỉ chứa các số nguyên và xuất ra chín hình dính sau với khoảng cách ở giữa:

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

Điều này sẽ dẫn đến một hình ảnh động, sau đó chúng ta có thể theo dõi irl.

Dưới đây là một ví dụ về đầu ra được tạo khi đầu vào là " 123245762":

nhập mô tả hình ảnh ở đây

Một số quy tắc:

  • Đây được gắn thẻ , vì vậy mã ngắn nhất tính bằng byte thắng
  • Đầu vào stringchỉ chứa [1-9]có độ dài có khả năng thay đổi từ 2 đến 100 ký tự **
  • Hoạt hình phải là một vòng lặp vô tận
  • Khoảng thời gian phải là 750 ms
  • Không cho phép các số nguyên liền kề trùng lặp trong đầu vào - điều này cũng bao gồm các số nguyên đầu tiên và cuối cùng của đầu vào (xem trường hợp thử nghiệm thứ bảy và tám) **

** Làm thế nào nó thất bại trong trường hợp đầu vào không hợp lệ hoàn toàn phụ thuộc vào bạn, nhưng rõ ràng là nó thất bại . Nó có thể ném một ngoại lệ; chỉ đơn giản là trở lại khi bắt đầu; khởi động lại PC của bạn; xóa mã nguồn riêng của nó- / biên dịch mã; đột nhập vào quân đội và bắn một tên lửa vào vị trí biên dịch GPS. Cuộc gọi của bạn. EDIT: Không được phép hiển thị hình ảnh động (chính xác / một nửa) khi không nhập liệu. Cần phải rõ ràng rằng có điều gì đó không ổn với đầu vào cho các testcase thất bại bên dưới. Cảm ơn @ user81655 đã chú ý đến điều này, do đó tôi đã chỉnh sửa.

Phân hệ:

  • Vui lòng gửi gif cho một trong những trường hợp thử nghiệm (không thất bại) dưới đây trong câu trả lời của bạn, điều mà bạn có thể thực hiện rất dễ dàng với chương trình sau: screentogif.codeplex.com (Tất cả các chương trình tạo gif khác cũng được cho phép).
  • Điểm thưởng nếu bạn thực sự thực hiện bài tập cùng với irl hoạt hình khi hoàn thành. ;)

Kiểm tra đúng:

  1. 123245762
  2. 65
  3. 121234346565879879132418791576

Không thử nghiệm:

  1. 2 // Quá ít ký tự
  2. 7282918274959292747383785189478174826894958127476192947512897571298593912374857471978269591928974518735891891723878 // Quá nhiều ký tự
  3. 1232405762// Chứa đầu vào không hợp lệ (the 0)
  4. 112212// Thất bại vì 1122hiện tại
  5. 1232457621 // Thất bại vì bắt đầu và dẫn đầu 1

4
IMO đây là bản dupe của đường biên giới này
Peter Taylor

1
BTW, thực hiện chỉnh sửa sau khi một thách thức được đăng là không được khuyến khích.
Màu xanh

imo xác nhận đầu vào làm hỏng thách thức.
FlipTack

@FlipTack Bạn thực sự đúng. Tôi chỉ nên giữ thử thách và cho rằng tất cả đầu vào là hợp lệ. Đây là câu hỏi đầu tiên của tôi ở đây trên PPCG. Bit quá muộn để thay đổi nó bây giờ, mặc dù.
Kevin Cruijssen

Câu trả lời:


0

Bình thường, 114 byte

.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 đầu ra

Hãy thử nó ở đây

(Không tạm dừng, không vô hạn)


Hmm, không thể quay lại / ném hoặc lặp vô hạn trong Pyth? Hoặc nó sẽ mất quá nhiều byte / quá tốn thời gian để thực hiện? (Hiện tại nó hoạt động giống nhau cho tất cả các testcase chính xác, cũng như tất cả các testcase thất bại. Và nó cũng thêm vào đầu ra cho 0.) Bất kể, cảm ơn vì đã nhập. Chắc chắn một trong những đoạn mã khó đọc nhất cho mục này là phỏng đoán của tôi. :)
Kevin Cruijssen

Trình thông dịch trực tuyến không xả IO trong khi ngủ nên không được chú ý. Bạn đã nói rằng bạn muốn một vòng lặp vô hạn vì vậy tôi không chắc bạn đang hỏi gì ở đó. "Làm thế nào nó thất bại là tùy thuộc vào bạn" - Tôi đang thực hiện hành vi không xác định cho việc này; mã có thể làm bất cứ điều gì (mặc dù nó NÊN hành xử giống nhau) Ngoài ra tôi hy vọng điều này sẽ tương đối dễ đọc so với một số mục có thể
Blue

4

SpecBAS - 387 byte

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"

Tiếp tục lặp cho đến khi bạn nhấn ESC. Không tập thể dục đúng cách (đầu vào không chính xác - trong ví dụ này là 0 là một trong các bước) dẫn đến béo. Các vòng lặp GIF, trong chương trình, nó chỉ dừng lại ở điểm đó.

#13là SpecBAS tương đương \nvà cho phép bạn bao gồm nguồn cấp dữ liệu trong chuỗi.

nhập mô tả hình ảnh ở đây


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

2

JavaScript (ES6), 165 byte

f=s=>{n=s[0];e.textContent=' @ \\@/|@__@|@/  \\@|@|\\@\\/@/'.substr(n*3-3,3)+(n>1?`
 | 
`:`
/|\\
`)+(n<5|n>6?'/ \\':'/|\\');s=s.slice(1)+n;s[0]-n&&setTimeout(f,750,s)}
f("123245762")
<pre id=e>


1

JavaScript (ES6), 210 byte

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

Làm thế nào điều này xử lý các quy tắc về loại trừ 0và trùng lặp?
Morgan Thrapp

4
@ Morgan'Venti'Thrappuccino Tôi có ấn tượng rằng đầu vào không hợp lệ không cần hành vi xác định, vì nó nói How it fails in case of invalid input is completely up to you. Tôi chỉ xử lý đầu vào không hợp lệ bằng cách hiển thị một hình ảnh động. : P Không có câu trả lời nào khác hiện có kiểm tra điều này, tuy nhiên câu trả lời mà OP vừa đăng, vì vậy có lẽ anh ấy muốn chúng tôi xử lý dữ liệu nhập không hợp lệ.
dùng81655

"Tôi chỉ xử lý dữ liệu nhập không hợp lệ bằng cách hiển thị hình động. P" Lol .. Đó là một cách để xem xét nó. xD tôi sẽ chỉnh sửa câu hỏi.
Kevin Cruijssen

0

Toán học, 252 byte

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

Sẽ thật tuyệt nếu ai đó có thể tạo một GIF. Chạy vào một cuốn sổ.


0

Python3, 338 byte

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 byte

Chỉ dành cho các lols tôi đã cố gắng tạo chương trình bằng Java. Phải thừa nhận rằng tôi khá tệ trong việc chơi golf và regexes, vì vậy rất có thể nó có thể được chơi golf (rất nhiều?). Tuy nhiên, đây là trong Java 7.
Bây giờ gần hai năm sau và tôi gần như giảm một nửa mã trong Java 8. Tại sao tôi lại đưa ra các quy tắc về xác thực đầu vào và yêu cầu một chương trình đầy đủ, mặc dù ...>.> Tôi ghét quá khứ của tôi bây giờ ..

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);}}}

Giải trình:

Hãy thử trực tuyến. (Sau khi hết giờ sau 60 giây.)

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:
(Lưu ý: Gif cũ, vì bây giờ rõ ràng là jdk1.8 +.)

nhập mô tả hình ảnh ở đây


Thông thường chúng tôi nói rằng Java 7đề cập đến phiên bản Java này vì 1.7có thể khiến một số người nhầm lẫn rằng đó là Java 1bản sửa đổi7
GamrCorps

Câu lệnh if dài có thể được biến thành một cái gì đó như p(new String[]{" @ ",y,"|@_", ... }[c-49]);if(c==49){p(x);l();}else if(c==53){w();p(x);}else d();. Ngoài ra tôi nghĩ rằng việc xác định lwlãng phí các ký tự, bây giờ chúng chỉ được sử dụng hai lần. sThay vào đó hãy xem xét cho phép char[] s=a[0].toCharArray(); tất cả các hoạt động khác với nó ngắn hơn nhiều, sau đó.
Alex Meiburg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.