드래그 레이스 카운트 다운


10

도전:

가상 시나리오에서 레이스의 카운트 다운 타이머는 카운트 사이에 임의의 간격 이있어 조기 시작을 방지합니다. 예 :

3 (0.82 seconds pass), 2 (0.67 seconds pass), 1

입력:

아무것도


산출:

각 카운트 사이에 0.50 초에서 1 초 사이의 임의의 시간 간격으로 3 개의 숫자를 인쇄하는 프로그램 (또는 함수)을 작성하십시오.


노트 :

  • 프로그램은 각 숫자 (3, 2, 1)를 임의의 숫자 ( 0.50에서 1에서 100까지의 숫자; 하드 코딩 없음)와 각각의 시간 간격으로 출력해야합니다. 임의 간격의 정밀도는 수백 개로 나갑니다 (예 : 0.52). 간격 만 출력 할 필요는 없으며 카운트 만 출력해야합니다.
  • @ JoKing이 분명히 알았 듯이, 나는 균일하게 무작위를 의미합니다 (귀하의 언어의 의사 난수 생성기를 사용할 수 있음).
  • 많은 사람들이 분명히 말했듯이, 실제로 0.5와 1 사이의 2 진수를 의미합니다 (0.50, 0.51 등 0.98, 0.99, 1까지)

이것은 이므로 바이트 수가 가장 적은 프로그램이 승리합니다.


4
안녕하세요 LordColus, PPCG에 오신 것을 환영합니다! 이것은 좋은 첫 번째 도전처럼 보입니다. 향후 문제를 해결하려면 먼저 샌드 박스를 통해 모든 세부 사항을 해결하는 것이 좋습니다 .

1
@LordColus : 원본 문장과 몇 가지 다른 편집 내용을 개선하고 원하는 경우 살펴보고 승인합니다.
Muhammad Salman

1
이전에 삭제 된 주석에서 말했듯이 정밀도가 너무 엄격하지 않은 경우 "균일하게 임의"를 지정하는 것이 좋습니다. 현재는 일시 정지 시간이 소수점 이하 두 자리의 정밀도로 균일해야합니다 (또는 소수점 이하 두 자리 이상 입니까?). 이는 분포가 세트 0.5, 0.51, 0.52, ..., 1에서 균일해야합니까, 아니면 0.5와 1 사이의 부동 소수점 일 수 있습니까?
Luis Mendo

2
가장 최근에 편집 한 내용이 지워 집니까?
LordColus

6
@ mbomb007 같은 ... 왜 다시 닫히나요? 기본적으로 3에서 1 사이에 두 개의 .50-1.00 초 대기 시간이 있습니다. 정말 복잡하지 않습니다.
Magic Octopus Urn

답변:



2

SmileBASIC, 64 62 바이트

?3M?2M?1DEF M
M=MILLISEC
WHILE MILLISEC<M+500+RND(501)WEND
END

불행히도 WAIT는 1/60 초 간격 만 지원하기 때문에 사용할 수 없습니다 (입력 / 출력이 프레임 당 한 번만 업데이트되므로 덜 유용하지는 않습니다)

실행중인 시스템 속도에 따라 조정해야하므로 유효하지 않을 수 있습니다 (46 바이트).

?3M?2M?1DEF M
FOR I=-66E4-RND(66E4)TO.NEXT
END

잘못된 WAIT 버전 (36 바이트) :

?3WAIT 30+RND(30)?2WAIT 30+RND(30)?1

2

R , 46 44 바이트

실제 카운트 다운 :

for(i in 3:1){cat(i)
Sys.sleep(runif(1,.5))}

온라인으로 사용해보십시오!

내가 처음 도전 (46 바이트) 덕분에 오해로 간격을 인쇄 주세페을 2 개 문자를 저장하는.

for(i in 3:1)cat(i,format(runif(1,.5),,2)," ")

온라인으로 사용해보십시오!


저는 믿습니다 runif()기본적으로 왼쪽과 오른쪽 엔드 포인트를 가지고 01각각 그래서 runif(1,.5)대해 동일한 작업을해야 -2 모두 바이트.
주세페

@Giuseppe에게 감사드립니다.
JayCe

2

파이썬 2 , 58 바이트

from time import*
for a in'321':print a;sleep(1-time()%.5)

온라인으로 사용해보십시오!

나는 많은 사람들처럼 시드 시간이 걸리는 매우 간단한 난수 생성기를 만들었습니다.


개량


1-time()%.5트릭을해야합니다. (당신 [3,2,1]은 그런데 필요 )
Jonathan Allan


@JonathanAllan 아주 좋은 지적, 업데이트되었습니다.
Neil

카운트 다운 전에 한 번 잠 들어 있습니다. 잠자기 전에 인쇄 진술서가 필요하다고 생각합니다.
Magic Octopus Urn

@MagicOctopusUrn 동의하고 업데이트되었습니다.
Neil

1

APL + WIN, 37 바이트

3⋄r←⎕dl ↑n←.49+.01×2?51⋄2⋄r←⎕dl 1↓n⋄1

1

자바 8, 86 바이트

v->{for(int i=0;++i<4;Thread.sleep((int)(Math.random()*500+500)))System.out.print(i);}

구분 기호없이 인쇄합니다. 이것이 허용되지 않으면 (줄 바꿈 문자) 로 변경 print하여 +2 바이트 println입니다.

온라인으로 사용해보십시오.
구간이 올바른 [500, 1000)ms 범위에 있는지 증명하십시오 .

설명:

v->{                        // Method with empty unused parameter and no return-type
  for(int i=0;++i<4;        //  Loop in range [1,4)
      Thread.sleep((int)(Math.random()*500+500)))
                            //    After every iteration: sleep for [500, 1000) ms randomly
     System.out.print(i);}  //   Print the current number


1

자바 스크립트 (Node.js) , 75 65 60 바이트

  • 10 바이트를 줄인 @Shaggy 덕분에
  • 5 바이트를 줄인 @Kevin Cruijssen 덕분에
f=(i=3)=>i&&setTimeout(f,Math.random()*500+500,i-1,alert(i))

온라인으로 사용해보십시오!



1
@Shaggy Date를 사용하면 정말 무작위입니까? (두 번째로 무작위 발생)
DanielIndie

1
*1000%500+500? 당신은 사용할 수 있습니다 *500+500.
Kevin Cruijssen

사양이 업데이트되면 아마도 충분히 무작위는 아니지만 설명을 요구할 가치가 있습니다.
Shaggy


1

-wingjj , 33 바이트

0123456e7f s
???????p*9S!ZZZtaABb

온라인으로 사용해보십시오!

칩, 우리는 정확히 기다릴 수 없다 (1) / (100) 초,하지만 우리는 기다릴 수 (1) / (256) 우리가 여기에를 사용하므로, 초.

p물었다하면 스택 헤드 (한 바이트) *의 실행 일시 중지 1 / 256 초. 각 사이클에서, 우리는 항상 스택 (높은 비트 세트 128 / 256 ) 및 (무작위로 다른 스택 비트 세트 ?'S). 이것은 0.50에서 1.00 초 사이의 균일 한 분포를 제공합니다.

인수의 일부, -w-gjj상기 입력 대신 표준 입력을 사용로부터 카운트되도록 지정 0xFF하는 0x00(후 배치). 카운트 다운을 위해 낮은 2 비트를 제공하기 위해 이것을 사용합니다. 다른 모든 출력 비트는 (ASCII에 해당하는 값에서) 일정하게 유지됩니다 0.

마지막으로, 우리가 끝나면 프로그램을 종료 t하고 마지막 숫자 이후의 일시 중지를 방지합니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.