같이 운동을하자. stickman의 움직임을 따르십시오. 어떤 스틱맨에게 물어봐? 우리가 만들려고하는 것!
정수만 포함하는 문자열 입력을 허용하고 간격을두고 다음 9 개의 스틱 피겨를 출력하는 프로그램을 만드십시오.
@ \@/ |@_ _@| @/ \@ |@| \@\ /@/
/|\ | | | | | | | |
/ \ / \ / \ / \ /|\ /|\ / \ / \ / \
1 2 3 4 5 6 7 8 9
그러면 애니메이션이 생겨 irl을 따라갈 수 있습니다.
입력이 ” 123245762
“일 때 생성되는 출력의 예는 다음과 같습니다 .
몇 가지 규칙 :
- 이 코드 는 code-golf 이므로 바이트 단위의 가장 짧은 코드가 승리합니다.
- 입력은 2 ~ 100 자 길이로 잠재적으로 변하는 길이
string
를[1-9]
가진 유일한 것입니다 ** - 애니메이션은 무한 루프 여야합니다
- 간격 시간은 750ms 여야합니다.
- 입력에서 중복 된 인접 정수는 허용되지 않습니다. 여기에는 입력의 첫 번째 정수와 마지막 정수도 포함됩니다 (7 번째와 8 번째 테스트 사례 참조). **
** 유효하지 않은 입력의 경우 실패하는 방법은 전적으로 귀하에게 달려 있지만 실패한다는 것은 분명해야합니다 . 예외가 발생할 수 있습니다. 시작시에 간단히 돌아옵니다. PC를 재부팅하십시오. 자체 소스 / 컴파일 코드를 삭제하십시오. 군대를 해킹하고 컴파일 GPS 위치에 로켓을 쏴. 당신의 전화. 편집 : (정확한 / 반) 애니메이션을 실패한 입력으로 표시하는 것은 허용되지 않습니다. 아래 테스트 실패 사례에 대한 입력에 문제가 있음을 분명히해야합니다. 이 점을 주목하여 편집 한 @ user81655 에게 감사드립니다 .
하위 규칙 :
- 아래의 (비 실패) 테스트 사례 중 하나에 대한 gif를 답에 게시하십시오. screentogif.codeplex.com (다른 gif 작성 프로그램도 물론 가능합니다.)
- 애니메이션이 끝났을 때 실제로 애니메이션과 함께 운동을하면 보너스 포인트가됩니다. 😉
올바른 테스트 사례 :
123245762
65
121234346565879879132418791576
실패한 테스트 사례 :
2
// 너무 적은 문자7282918274959292747383785189478174826894958127476192947512897571298593912374857471978269591928974518735891891723878
// 너무 많은 문자1232405762
// 잘못된 입력을 함유합니다 (0
)112212
// 때문에의 실패11
와22
현재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
(일시 정지, 무한정)
답변
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입니다.)