태그 보관물: ascii-art

ascii-art

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

같이 운동을하자. 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


답변

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

여기 사용해보십시오

(일시 정지, 무한정)


답변

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하며 문자열에 줄 바꿈을 포함 할 수 있습니다.

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


답변

자바 스크립트 (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>


답변

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

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


답변

수학, 252 바이트

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

누군가 GIF를 만들 수 있다면 좋을 것입니다. 노트북에서 실행하십시오.


답변

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]


답변

자바 (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입니다.)

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