자신의 체육관 운동을 만들고 irl을 따라


10

같이 운동을하자. stickman의 움직임을 따르십시오. 어떤 스틱맨에게 물어봐? 우리가 만들려고하는 것!

정수만 포함하는 문자열 입력을 허용하고 간격을두고 다음 9 개의 스틱 피겨를 출력하는 프로그램을 만드십시오.

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

그러면 애니메이션이 생겨 irl을 따라갈 수 있습니다.

입력이 " 123245762"일 때 생성되는 출력의 예는 다음과 같습니다 .

여기에 이미지 설명을 입력하십시오

몇 가지 규칙 :

  • 이므로 바이트 단위의 가장 짧은 코드가 승리합니다.
  • 입력은 2 ~ 100 자 길이로 잠재적으로 변하는 길이 string[1-9]가진 유일한 것입니다 **
  • 애니메이션은 무한 루프 여야합니다
  • 간격 시간은 750ms 여야합니다.
  • 입력에서 중복 된 인접 정수는 허용되지 않습니다. 여기에는 입력의 첫 번째 정수와 마지막 정수도 포함됩니다 (7 번째와 8 번째 테스트 사례 참조). **

** 유효하지 않은 입력의 경우 실패하는 방법은 전적으로 귀하에게 달려 있지만 실패한다는 것은 분명해야합니다 . 예외가 발생할 수 있습니다. 시작시에 간단히 돌아옵니다. PC를 재부팅하십시오. 자체 소스 / 컴파일 코드를 삭제하십시오. 군대를 해킹하고 컴파일 GPS 위치에 로켓을 쏴. 당신의 전화. 편집 : (정확한 / 반) 애니메이션을 실패한 입력으로 표시하는 것은 허용되지 않습니다. 아래 테스트 실패 사례에 대한 입력에 문제가 있음을 분명히해야합니다. 이 점을 주목하여 편집 한 @ user81655 에게 감사드립니다 .

하위 규칙 :

  • 아래의 (비 실패) 테스트 사례 중 하나에 대한 gif를 답에 게시하십시오. screentogif.codeplex.com (다른 gif 작성 프로그램도 물론 가능합니다.)
  • 애니메이션이 끝났을 때 실제로 애니메이션과 함께 운동을하면 보너스 포인트가됩니다. ;)

올바른 테스트 사례 :

  1. 123245762
  2. 65
  3. 121234346565879879132418791576

실패한 테스트 사례 :

  1. 2 // 너무 적은 문자
  2. 7282918274959292747383785189478174826894958127476192947512897571298593912374857471978269591928974518735891891723878 // 너무 많은 문자
  3. 1232405762// 잘못된 입력을 함유합니다 ( 0)
  4. 112212// 때문에의 실패 1122현재
  5. 1232457621 // 시작과 선행으로 실패 1

5
IMO이의 경계선에 속는 사람입니다
피터 테일러

1
BTW에서 챌린지가 게시 된 후 편집하는 것은 권장되지 않습니다.
Blue

입력 검증은 도전을 망칩니다.
FlipTack

@FlipTack 당신이 맞아요. 난 그냥 도전을 유지하고 모든 입력이 유효하다고 가정해야합니다. 이것은 PPCG에 대한 나의 첫 번째 질문이었습니다. 그래도 너무 늦어서 변경하지 못했습니다.
케빈 크루이 센

답변:


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

여기 사용해보십시오

(일시 정지, 무한정)


흠, Pyth에서 무한대로 되돌아 가거나 던질 수는 없습니까? 아니면 너무 많은 바이트가 필요하고 너무 시간이 많이 걸리나요? (현재 모든 올바른 테스트 케이스와 실패한 모든 테스트 케이스에 대해 동일하게 작동합니다. 또한에 대한 출력도 추가합니다 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가 반복되어 해당 시점에서 중지됩니다.

#13은 SpecBAS와 동일 \n하며 문자열에 줄 바꿈을 포함 할 수 있습니다.

여기에 이미지 설명을 입력하십시오


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

2

자바 스크립트 (ES6), 165 바이트

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

자바 스크립트 (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"Lol .. 그것을 보는 한 가지 방법입니다. xD 질문을 편집하겠습니다.
Kevin Cruijssen

0

수학, 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

자바 (8) 663 636 634 631 596 355 354 바이트

lols에 대해서만 Java로 프로그램을 만들려고했습니다. 분명히 골프와 정규식에 상당히 나쁘기 때문에 골프를 많이 할 수 있습니다. 그럼에도 불구하고 여기에 Java 7이 있습니다.
이제 거의 2 년 후 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 :
(참고 : 지금은 jdk1.8 이상이므로 Old gif입니다.)

여기에 이미지 설명을 입력하십시오


보통 우리가 말하는 Java 7자바의 버전을 참조하는 1.7것이라고 생각 몇 가지를 혼동 할 수 있습니다 Java 1수정7
GamrCorps

긴 if 문은 다음과 같이 될 수 있습니다 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.