레겐… 기다려라…


68

고마워!

다음 며칠 동안 나에게 일어날 일과 전혀 관련이없는 이벤트에서는 다음을 수행하는 코드를 작성해야합니다.

  1. 인쇄

    Legen... wait for it...
    

    후행 줄 바꿈과 함께 즉시.

  2. 다음 1 시간 동안 기다립니다 (배지 부여를위한 크론 작업이 실행될 때).

  3. 인쇄

    dary!
    

    옵션 후행 줄 바꿈.

추가 규칙

  • 프로그램이나 함수를 작성할 수 있지만 출력은 STDOUT (또는 사용자 언어의 가장 가까운 대안)으로 인쇄되어야합니다.

  • 60 분이 아니라 다음 전체 시간 까지 기다려야합니다 . 코드가 6:58에 실행되면 두 번째 줄은 7시에 인쇄해야합니다.

  • 마지막 라인은 다음 전체 시간 후 1 초 이내에 인쇄되어야합니다.

  • 전체 시간의 첫 번째 초에 프로그램이 시작된 경우 다음 전체 시간을 기다려야합니다.

  • 현지 시간이나 UTC 시간을 쿼리 할 수 ​​있습니다.

  • 표준 규칙이 적용됩니다.


1
나는 세 번째 추가 규칙이 기본 "다음 전체 시간까지 기다림"과 어떻게 다른지 이해하지 못합니다
Fatalize

2
@Fatalize 이는 분과 초가 모두 00 이 될 때까지가 아니라 시간이 변경 될 때까지 기다려야한다는 것을 명확히하는 것 입니다.
Dennis

25
@Dennis의 행복한 전설 배지!
Kritixi Lithos

36
@ ΚριτικσιΛίθος 감사합니다! (탭 완성을 위해 신에게 감사합니다.)
Dennis

2
"시간에"는 당신이 "다음 전체 시간"(적어도 미국 영어로)이라고 부르는 것을 묘사하는 좀 더 표준적인 방법입니다.
jpmc26

답변:


12

피스, 42 41

J.d6." wâ«­hÖ`Ùá©h´^"WqJ.d6;"dary!

아래는 코드의 16 진 덤프입니다.

00000000  4a 2e 64 36 2e 22 20 77  0c 10 89 e2 ab 1b ad 68  |J.d6." w.......h|
00000010  0f 8c d6 60 d9 e1 a9 68  82 b4 5e 22 57 71 4a 2e  |...`...h..^"WqJ.|
00000020  64 36 3b 22 64 61 72 79  21                       |d6;"dary!|

@isaacg 덕분에 1 바이트 절약

.d함수를 사용하여 현지 시간 관련 값을 가져옵니다. .d6현재 시간을 반환합니다. 첫 번째 문자열을 인쇄 한 다음 프로그램 시작 시간과 시간이 다를 때까지 기다렸다가 두 번째 문자열을 인쇄합니다.

온라인으로 .d7또는 .d8몇 분 / 초 동안 온라인으로 시도 할 수 있지만 온라인 컴파일러는 프로그램이 종료 될 때만 인쇄합니다.

축하합니다, 데니스! :)


pack-str을 사용하여 문자열을 1 바이트로 압축 할 수 있습니다. Hexdump :0000000: 2e22 2077 0c10 89e2 ab1b ad68 0f8c d660 ." w.......h...` 0000010: d9e1 a968 82b4 5e22 0a ...h..^".
isaacg

@isaacg Whoops, 나는 그것을 확인했지만 계산을 엉망으로 만들어야합니다. 여분의 .길이가 동일한 1 바이트 만 압축한다고 생각했습니다 . 바보 오프별로 한 오류 : P
FryAmTheEggman

이것이 pyth에 전혀 경험이없는 것이 무엇인지 알아 내려고 노력하면서 나를 웃게했습니다. 알겠습니다 dary,하지만 legen! pyth는 기존 프로그래밍에 익숙한 사람들이 이해하기 쉽다고 주장합니다.
Cyoce

@Cyoce 편집 기록을 보면 더 읽기 쉬운 버전을 찾을 수 있습니다. 는 ."문자열이 실제 문자열을 얻기 위해 그것을 수행 일부 작업을해야 함을 나타냅니다. 골프를위한 압축 기법 일뿐입니다. Pyth를 배우려고한다면 행운을 빕니다! 그것에 대한 대화방도 잊지 마세요 :)
FryAmTheEggman

26

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

테스트하기 전에 시스템 시계를 변경하고 59 분 전에 여기에 착륙 한 경우 축하합니다.

setTimeout(a=alert,36e5-new Date%36e5,"dary!");a`Legen... wait for it...
`


11
겠습니까 36e5대신에 일을 3.6e6?
ETHproductions

8
@ETHproductions 당신 아름다움!
George Reith

3
@ETHproductions 그것은 잘못된 과학적 표기법입니다. Javascript에서 작동하는지 전혀 몰랐습니다. 오늘 무언가를 배웠습니다 !!!
Ismael Miguel

2
@Optimizer 아 몰랐 setTimeout겠습니까을 eval나를 위해. 사실 ... 원래 사용하려고 console.log했지만 컨텍스트로 인해 변수에 저장하면 작동하지 않습니다. 당신도 아름답습니다!
George Reith

1
setTimeout적절하게 사용 하고 1 바이트를 저장할 수도 있습니다 .alert`Legen…`;setTimeout(alert,36e5-new Date%36e5,"dary!")
Bergi

9

CJam, 49 48 바이트

et3="Legen... wait for it...
"o{_et3==}g;"dary!"

현지 시간을 사용합니다. 테스트 목적으로 두 인스턴스를 다음 3으로 교체 4하거나 5다음 분 / 초가 시작될 때 인쇄되도록 할 수 있습니다.

여기에서 테스트하십시오. 그러나 온라인 인터프리터는 프로그램이 종료 될 때까지 출력을 표시하지 않습니다. 또는 Try it online 에서 출력을 버퍼링 대신 거의 즉시 표시 할 수 있습니다 (시간 대신 초 단위로 테스트하면 지연이 눈에 띄게 나타남). 어쨌든 Java 인터프리터를 사용하여 로컬로 실행하면 매력처럼 작동합니다.

설명

이것은 CJam을 사용 et하여

[year month day hour minute second ms weekday utc_offset]

코드는 다음과 같습니다.

et3=       e# Get the current hour.
"Legen..." e# Push the first string including the linefeed.
o          e# Print it.
{          e# While the top of stack is truthy (which is popped)...
  _        e#   Copy the original hour.
  et3=     e#   Get the current hour.
  =        e#   Check for equality.
}g
;          e# Discard the original hour.
"dary!"    e# Push the second string which is printed automatically.

보너스

이것은 동일한 바이트 수에서도 작동합니다.

et4<"Legen... wait for it...
"o{et1$#!}g;"dary!"

시간을 선택하는 대신 날짜 시간으로 접두사를 선택 하고 datetime 배열에 여전히 접두사가있는 동안 루프를 계속 유지합니다.


9

애플 스크립트, 157 149 바이트

허. 놀랍게도 논쟁.

(현재 날짜)의 시간 문자열에서 d를 1로 설정
log "Legen ... 잠시만 기다려주세요 ..."
(현재 날짜)의 시간 문자열에서 d = 숫자 1 동안 반복
종료
로그 "건조!"

log스크립트 편집기의 메시지 분할 창에 인쇄 되므로 STDOUT에 가장 가까운 출력이라고 생각합니다. 기본적으로 현재 날짜의 시간 문자열을 얻으면 다음과 같이됩니다.

암호:

(현재 날짜)의 시간 문자열

산출:

오후 5:02:03

5콜론 앞의 첫 번째 숫자 ( )를 가져옵니다.

실제로 이보다 훨씬 길다고 생각했습니다. xD


03:03:00에 실행하면 어떻게됩니까?
Blacklight Shining

@BlacklightShining 앞면에 숫자 3을 얻고 4가 될 때까지 기다립니다. 콜론 앞의 숫자 만 알고 있습니다.
애디슨 크럼프

아, 나는 그것을 놓쳤다. 괜찮아. 이상한 일이지만, 사실은 단지 얻고 "1"에서 number 1 in time string of(current date)...
의 Blacklight 빛나는

@BlacklightShining 이전 버전 인 El Capitan을 사용하고있을 가능성이 first number in time string of (current date)있습니다.
애디슨 크럼

요세미티에 있습니다. first number또한 시간의 첫 번째 자리 ( "0"현재 04:38) 만 제공합니다.
Blacklight Shining

8

눈사람 1.0.2 , 70 69 바이트

~"Legen... wait for it...
"sP3600000*vt#nDnC!*:vt+#nD!#nL;bD"dary!"sP

설명:

~              Make all variables active.
"..."sP        Print the first string.
3600000*vt#nD  Get the number of hours since the Unix epoch.
nC             Ceiling (round up), giving the time (divided by 36000) at which to
                 print the second string.
!*             Save that in a permavar.
:...;bD        Do the stuff in the block while its "return value" is truthy.
  vt+#nD       Again, get the number of hours since epoch.
  !#             Store the permavar that we saved earlier.
  nL             Is the current time less than the target time? (if so,
                   keep looping)
"..."sP        Print the second string.

7

PHP, 76, 70, 65, 62 51 바이트

Legen... wait for it...
<?while(+date(is));?>dary!

이전 논리 (63b) :

Legen... wait for it...
<?for($h=date(G);date(G)==$h;)?>dary!

이런 종류의 코딩은 작업을 느슨하게하지만 시간이 init보다 1 시간 더 길어질 때까지 반복됩니다.

-1 대체하여 바이트 {}로하면서 Afer 즉 ;(감사 manatwork)
-5 바이트를 대체하여 echo'dary!';?>dary!(감사 manatwork)
-4 바이트를 대체하여 <?php짧은 버전 <?(감사 프리모)
-1 바이트를 대체하여 whileA에 대한 for
대체함으로써 -3 바이트 date(G)!=$h+1까지 date(G)==$h(감사 프리모)


좋은 것은 아니지만 {};echo?>는 조금 줄입니다. 내가 선호하지만Legen... wait for it...↵<?php while(+date('is'));?>dary!
manatwork

1
몇 가지 팁 : 짧은 개방형 태그를 사용할 수 있습니다 ( <?대신 <?php). 사용 for(;;)은의 길이와 동일 while()하지만 $h세미콜론 ( for($h=date(h);...) 없이 할당 을 이동할 수 있습니다 . 은 {}필요하지 않았다, 그러나 둘은입니다 ;?>. $h그러나 12에 문제가있을 수 있습니다 ( date(h)13이 아닙니다).
primo

둘 다 고마워, 이에 따라 내 대답을 업데이트했습니다. 기분이 좋지 않다. 오늘 중요한 일을해서는 안된다고 생각한다. 하하가 명확하게 보여주기 때문이다.
Martijn

2
변경 date(G)!=$h+1date(G)==$h. 더 짧고 시간 문제를 해결합니다.) 또한 세미콜론을 제거하십시오 ?>.
primo

1
@manatwork 코드가에서 실행 HH:00:00되면 (즉, 전체 시간의 첫 1 초 내에) 기다리지 못합니다 .
primo


5

자바 스크립트 94 90 87 바이트

그렇게 많이 골프를하지 ...

alert`Legen... wait for it...`,l=l=>~~(Date.now()/36e5);for(z=l();z==l(););alert`dary!`

다운 고트 버전 :

(a=alert)`Legen... wait for it...`,z=(b=new Date().getHours)();for(;z==b(););a`dary!`

현재 시간을 저장하고 "오래된"시간이 현재 시간과 같은 한 반복합니다. 시간이 변경 되 자마자 나머지가 인쇄됩니다! :디

면책 조항 : 브라우저가 싫어하면 경고 메시지가 표시됩니다.


2
87 바이트 :(a=alert)`Legen... wait for it...`,l=new Date,z=(b=l.getHours)();for(;z==b(););a`dary!`
Downgoat

@ Downgoat 감사합니다! (지금 당장 골프를 치려고 노력 중입니다.)
Stefnotch

1
더 짧은 (85 바이트) :(a=alert)`Legen... wait for it...`,z=(b=new Date().getHours)();for(;z==b(););a`dary!`
Downgoat

2
@Downgoat 1 바이트 더 짧은 :for((a=alert)`Legen... wait for it...`,z=(b=new Date().getHours)();z==b(););a`dary!`
Ismael Miguel

4

MATLAB-89 바이트

a=@()hour(now);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')

꽤 자명하다. 먼저, 시스템 시계의 현재 시간을 잡는 함수 핸들을 만듭니다. 그런 다음, 표시 Legen... wait for it...캐리지 리턴으로, 그리고 우리는에 가서 while우리가 1 추가 현재 시간이 있는지 계속 확인 루프 없는 현재의 시간과 동일. 그렇다면 계속 반복하십시오. 다음 시간이 발생하는 순간까지만 표시 dary!하고 캐리지 리턴이 발생합니다.

MATLAB의 시간은 24 시간 인덱싱을 기준으로하므로 mod오후 24시 작업은 오후 11시 (23:00)에서 자정 (00:00)까지의 유출을 처리해야합니다.

미성년자

hour기능에는 재무 시계열 도구 상자가 필요합니다. 이 now기능에는이 제한이 적용되지 않지만 현재 날짜와 시간을 일련 번호로 검색하여 현재 시간 hour을 계산하는 데 사용합니다.

옥타브에서 이것을 실행하고 싶습니까?

확실한! Octave에는이 도구 상자가 없기 때문에 hour함수 를 수정 datevec하여 연, 월, 일,시, 분 및 초 각각에 하나씩 6 개의 요소로 구성된 벡터를 반환하도록 호출 하면됩니다. 출력의 네 번째 요소를 추출해야합니다.

a=@()datevec(now)(4);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')

추가 문자는 솔루션을 최대 98 바이트까지 만들지 만 옥타브에서이를 실행할 수 있습니다. 함수 핸들에 임시 변수가없는 인플레 이스 인덱싱에 유의하십시오.

Financial Time Series Toolbox가 없습니까?

Financial Time Series Toolbox 없이 MATLAB에서 이것을 실행하려면 임시 변수없이 변수에 즉시 색인을 생성 할 수 없으므로 작성하는 데 약간 더 많은 바이트가 필요합니다.

disp('Legen... wait for it...');h=datevec(now);ans=h;while(mod(h(4)+1,24)~=ans(4)),datevec(now);end;disp('dary!');

먼저 현재 시간과 날짜를 가져 와서 변수에 저장하고이를 h라는 자동 변수에 저장합니다 ans. 이후, 우리는 계속 반복하고 현재 시간이 다음 시간과 다른지 확인합니다. 반복 할 때마다 현재 시간과 날짜로 자동 변수를 계속 업데이트합니다. 다음 시간이 현재 시간 및 날짜와 일치하면 문자열의 마지막 부분이 표시되고 종료됩니다. 바이트 수를 114로 푸시합니다.


또한 온라인으로 시도 할 수 없습니다. 옥타브 인터프리터 온라인은 코드가 실행될 때 시간 제한이 있으며 while, 다음 시간이 발생할 때까지 기다리는 루프 이기 때문에 코드가 실행될 때 까지 시간이 초과됩니다. 가장 좋은 방법은 자신의 컴퓨터에서 실행하고 작동하는지 확인하는 것입니다.


첫 번째에서는 nowwhile 루프 를 체크인 하여 3 바이트를 절약 할 수 a=@()disp('Legen... wait for it...');while floor(mod(now*86400,3600))end;disp('dary!')있습니다. a=@()코드가 전체 프로그램을 구성하기 때문에 비트 를 제거하여 5 바이트를 더 절약 할 수도 있습니다 . 첨부 된 코드에는 FTS 도구 상자가 필요하지 않습니다.
톰 카펜터

Financial Toolbox hour기능 에 대해 지구에서 어떻게 알았 습니까? :-)
Luis Mendo 1

이제 색인을 생성하기 위해 중간 변수가 필요하다는 귀하의 의견의 의미를 알 수 있습니다 ...
Luis Mendo

4

매스 매 티카, 85 84 81 바이트

c=Print;c@"Legen... wait for it...";a:=DateValue@"Hour";b=a;While[a==b];c@"dary!"

"dary!"를 만들어서 2 바이트를 절약 할 수 있다고 생각합니다. 표현식 출력
CalculatorFeline

@CatsAreFluffy 그렇다면 그것은 단지 스 니펫 일 뿐이며 전체 프로그램이 아닙니다.
LegionMammal978

그래서? Mathematica에서 표현식 출력이 허용되지 않습니까, 아니면 뭔가 빠졌습니까?
CalculatorFeline

@CatsAreFluffy Mathematica 스크립트가 존재하므로 주어진 전체 프로그램이 하나에서 실행될 것으로 예상됩니다.
LegionMammal978

4

C, 163 바이트

#include<time.h>
f(){puts("Legen... wait for it...");time_t t=time(0);struct tm l=*localtime(&t);while(l.tm_min+l.tm_sec)t=time(0),l=*localtime(&t);puts("dary!");}

3
PPCG에 오신 것을 환영합니다!
Outgolfer Erik

155 바이트 (시간 초과 후 1 분이 완료되지 않습니다, TIO에 실행을 귀찮게하지 않습니다)
MD XF

3

마이크로 스크립트 II, 45 바이트

"Legen... wait for it..."P[36s5E*sD%_]"dary!"

마지막으로 D명령에 사용합니다.

첫 번째 문자열을 인쇄하고 0을 산출 할 때까지 UTC 시간을 밀리 초 단위로 3,600,000 단위로 반복적으로 입력 한 다음 암시 적으로 인쇄되는 두 번째 문자열을 생성합니다. 코드에서 3,600,000은 36x10 5로 표시 됩니다.


설명을 추가 할 수 있습니까? c :
애디슨

@VoteToClose 완료
SuperJedi224

3

TI-BASIC, 70 64 바이트

getTime
Disp "Legen... wait for it...
Repeat sum(getTime-Ans,1,1
End
"dary

이 2 바이트 소문자를 저주하십시오!

getTime세 개의 요소로 구성된 list를 반환 {hours minutes seconds}하므로 첫 번째 요소에서 첫 번째 요소까지의 합계는 시간입니다. 시작 시간과 현재 시간 사이에 차이가 있으면 루프가 종료됩니다. 이 관찰에 대한 @FryAmTheEggman에게 감사합니다.


3

R-97 바이트

cat('Legen... wait for it...\n')
Sys.sleep(1)
while(as.double(Sys.time())%%3600>0){}
cat('dary!')

3

파이썬 3-92 89 바이트

from time import*;print("Legen... wait for it...");sleep(3600-time()%3600);print("dary!")

3

파이썬 2, 82 81 바이트

from time import*;print'Legen... wait for it...';sleep(-time()%3600);print'dary!'

언급 할 평판이 너무 낮습니다. Alexander Nigl 솔루션의 Python 2 버전. 대괄호에서 잃어버린 문자를 저장합니다. 또한 3600은 절전 시간 계산에 필요하지 않습니다.

전체적으로 7자가 저장되었습니다.

편집 : @ Kevin Cruijssen 덕분에 -1 바이트


1
;프로그램 끝에서 후행 을 제거하여 하나의 추가 바이트를 저장할 수 있습니다 . 그것 없이는 잘 작동하는 것 같습니다. :) 좋은 답변, 그래서 +1 (지금 당신은 의견을 말할 수 있습니다).
Kevin Cruijssen

감사로드 @ KevinCruijssen
Henry T

2

Windows 명령 스크립트, 87 바이트

@set.=%time:~,2%&echo.Legen... wait for it...
:.
@if %.%==%time:~,2% goto:.
@echo.dary!

이는 시작시 저장된 시간 변수를 현재 시간과 지속적으로 비교하고 다른 경우 성공합니다.


2

펄, 62 바이트

sleep -++$^T%3600+print'Legen... wait for it...
';print'dary!'

특수 변수 $^T(aka $BASETIME)는 스크립트가 시작된 시점부터 시작된 시간 (초)을 기록합니다. 다행히 윤초는 총계로 계산되지 않으므로 다음과 같습니다.

print$^T%3600;
@T=gmtime;print$T[1]*60+$T[0];

놀랍게도이 변수는 읽기 전용이 아닙니다.


계산하지 않는 -E것은 여기에 평범한 것 같습니다 say.
Dennis

도전 과제 설명에서 : "프로그램이나 함수를 작성할 수 있습니다." 명령 행에서 실행되는 코드도 마찬가지입니다.
primo

너의 의도를 알 겠어. 그러나 프로그램이나 기능에 대한 제한 은 기본적 으로 모든 문제에 적용되지만 perl -E온라인 통역사 만있는 제출 및 언어는 허용 됩니다.
Dennis

나는 동의하지 그는 -E기본적으로 허용해야합니다. 어쨌든 대부분의 경우 개선은 사소하고 흥미 롭습니다.
primo

2

Japt , 72 61 바이트

`{?tT?e?t(Ã?t,36e5-?w D?e%36e5,'ÜÝ!'),'Leg?... Ø2 f? ?...\n'}

각각 ?은 인쇄 할 수없는 유니 코드 문자를 나타냅니다. 전문을 얻는 방법은 다음과 같습니다.

  1. 온라인 통역사를 엽니 다 .
  2. 이 코드를 코드 상자에 붙여 넣습니다.
Oc"`\{setTimeout(alert,36e5-new Date%36e5,'dary!'),'Legen... wait for it...\\n'}
  1. 코드를 실행 한 다음 코드 상자에서 지 웁니다.
  2. 출력 상자의 내용을 선택하고 코드 상자로 끕니다 . 복사 붙여 넣기가 작동하지 않습니다 .
  3. 첫 번째 공간을 비 분리 공간으로 교체하십시오.
  4. (선택 사항) 컴퓨터 시계를 xx : 59로 설정하십시오.
  5. 코드를 실행하십시오.

또는 다음은 (가장 가역적 인) hexdump입니다.

00000000: 607b a074 548b 658c 7428 c300 742c 3336 65    `{ tT?e?t(Ã?t,36e
00000011: 352d 9a77 2044 8565 2533 3665 352c 27dc dd    5-?w D?e%36e5,'ÜÝ
00000022: 2127 293b 274c 6567 812e 2e2e 20d8 3220 66    !'),'Leg?... Ø2 f
00000033: 8e20 8a2e 2e2e 5c6e 277d                      ? ?...\n'}

이 코드는 George Reith의 JavaScript 답변을 기반으로 하며 몇 가지 Japt 관련 변경 사항이 있습니다. 다른 날 에는 코드를 압축하여 백틱으로 묶은 문자열에 삽입하면 자동으로 압축 해제됩니다. 컴파일을 통해 처리되는 방법은 다음과 같습니다.

`{?tT?e?t(Ã?t,36e5-?w D?e%36e5,'ÜÝ!'),'Leg?... Ø2 f? ?...\n'}
"{setTimeout(alert,36e5-new Date%36e5,'dary!'),'Legen... wait for it...\n'}"
""+(setTimeout(alert,36e5-new Date%36e5,'dary!'),'Legen... wait for it...\n')+""

JS에서 괄호 쌍은 마지막 값을 반환합니다. 따라서이 코드는 시간이 지정된 이벤트를 설정 한 다음 'Legen...'문자열 을 반환하며 STDOUT으로 자동 전송됩니다. Japt는 현재 컴파일시 자동 출력 이외의 내용을 STDOUT에 추가 할 수있는 방법이 없으므로 대신 alert타임 아웃 출력에 바닐라 JS 기능 을 사용했습니다 . 이것이 허용되기를 바랍니다.


이 16 진수 덤프를 게시 할 수 있습니까?
스파게티

@quartata 님. 나는 그것이 옳다고 믿는다.
ETHproductions

2

파워 쉘, 52 51 바이트

-1 바이트 덕분에 @Veskah

'Legen... wait for it...'
for(;Date|% M*e){}'dary!'

이 식은 현재 DateTime 값 Date|% M*e에서 Minute속성 값을 가져옵니다 . 루프는 Minute0과 같을 때 종료됩니다 .


1
중괄호 바로 뒤에 'dary'를 넣거나 PSv5에서 할 수 있어야합니다.
Veskah

1

파이썬, 112 바이트

import time as t;print "Legen... wait for it...";n=t.ctime();t.sleep((60-n.tm_min)*60+60-n.tm_sec);print "dary!"

꽤 자명하다.


print 문과 다음 문자열 사이의 공백을 제거하여 2를 절약 할 수 있습니다. :)
Henry T

1

파이썬-159 바이트

from datetime import*;from threading import*;p=print;n=datetime.now();p('Legen... wait for it...');Timer(3600-(n.minute*60+n.second),lambda:p('dary!')).start()

1

Mouse-2002 , 62 바이트

사용자가 Enter 키를 눌러야합니다. 내 생각에

"Legen... wait for it..."?&HOUR 1+x:(&HOUR x.=["dary"33!'0^])

글쎄, 우리는 많은 바이트를 차지하고 아무것도 얻지 않지만 약간의 재미를 보자.

"Legen... wait for it... "?     ~ print & require keypress

&HOUR 1+ x:                     ~ get hr, add 1 and assign
(                               ~ while(1)
  &HOUR x. =                    ~ cmp current hr, stored hr
  [                             ~ if same
    #B;                           ~ backspace
    "dary"36!'                    ~ print this string and a !
    0^                            ~ exit cleanly
  ]                             ~ fi
  &MIN 59 - &ABS !              ~ get min, subtract from 59, abs & print
  ":"                           ~ record sep
  &SEC 59 - &ABS !              ~ same for second
  #B;                           ~ backspace
)
$B 8!' 8 !' 8 !' 8 !' 8 !'@     ~ backspace 5*
$                               ~ \bye

견본:

$ mouse legend.m02
Legen... wait for it... 20:32

다음 시간에 업데이트되는 카운트 다운 타이머입니다. 아무 것도 안해도 코어를 차지하는 while 루프를 잘 활용합니다.


1

기본, 90 바이트

Print"Legen... wait for it...":x$=Left(Time,2):Do:Loop Until x$<>Left(Time,2):Print"dary!"

간단하고 형식 접두사와 암시 적 End문을 사용하여 골퍼를 쳤다 . 비용은 FreeBasic 방언 에서만 작동한다는 것 fblite입니다.


1

비 펀지 98 - (69) 63 바이트

 v
v>a"...ti rof tiaw ...negeL<ETB>"k,
>"EMIT"4(MS+_"!yrad"5k,@

이 코드에는 인쇄 할 수없는 문자가 하나 있습니다 (인쇄 할 수없는 문자 <ETB>는 코드 블록에 표시되지 않는 것으로 나타남). 문자 코드는 23 ( 끝 전송 블록 문자 )입니다.

경고 : 앞의 코드는 사용량이 많은 루프에서 실행되어 스택이 반복 될 때마다 커지고 많은 양의 메모리를 소비 할 수 있습니다.


1

젤리 , 48 47 바이트 , 비경쟁

골퍼 에릭 덕분에 -1 바이트 ( "Leg"를 압축 단어로 사용)

“ÇỴġƒḃhlḂṀ⁷*Ḣ¡w*Jḷv»Ṅø3ŒTṣ”:V_@59ḅ60‘œS@“dary!”

TryItOnline! 또는하드 코딩 된 시간 형식 문자열( "mm : ss") 로 테스트 버전 실행하십시오“59:57” .

Jelly의 첫 번째 커밋은 Dennis가이 도전을 만든 지 며칠 만에 이루어졌습니다.이 코드가 처음으로 작동 한 날짜는 확실하지 않지만 어떤 경우에도 경쟁이 아닙니다.
글을 쓰는 시점에는 형식화 된 문자열을 통해 시간에 액세스하는 한 가지 방법 만 ŒT있습니다.

이 코드는 대기 시간과 대기 시간을 계산합니다. 에서 호출하는 경우 hh:00:00가 기다립니다 3600초 : 그것은 변환 "00:00"하기 위해 [0,0]다음으로부터 감산 59수율 [59,59], 기본 육십에서 제공하는 것으로 변환 3599, 다음의 총 대기 시간에 대한 하나의 추가 3600초.

아마도 루프가 만들어 질 수도 있습니다. 또는 "전설"이라는 단어를 사용한 압축 문자열을 어떻게 든 활용할 수 있습니까?

“ÇỴġƒḃhlḂṀ⁷*Ḣ¡w*Jḷv»Ṅø3ŒTṣ”:V_@59ḅ60‘œS@“dary!” - Main link: no arguments
“ÇỴġƒḃhlḂṀ⁷*Ḣ¡w*Jḷv»                            - compressed "Legen... wait for it..."
                    Ṅ                           - print z + '\n', return z
                     ø                          - niladic chain separation
                      3ŒT                       - '011' (3) time formatted string = "mm:ss"
                         ṣ”:                    - split on ':' -> ["mm","ss"]
                            V                   - eval -> [m,s]
                             _@59               - subtract from 59 - > [59-m, 59-s]
                                 ḅ60            - convert from base 60 -> 60*(59-m)+(59-s)
                                    ‘           - increment -> 60*(59-m)+(59-s) = y
                                        “dary!” - "dary!" = x
                                     œS@        - sleep y seconds then return x
                                                - implicit print

1
“ÇỴġƒḃhlḂṀ⁷*Ḣ¡w*Jḷv»대신에 사용하십시오 “¤ßƇṪOƭ!½ȯƤxEẹ<Ȯ¹z7⁷». Leg(from Legen)도 단어입니다.) 또한이 대답은 분과 초에 따라 다르기 때문에 유효하지 않습니다 00. 다음과 4ŒT같은 규칙이 있기 때문에 대신 무언가를해야 합니다.In the event that the program is started in the first second of a full hour, it should it wait for the next full hour.
Outgolfer Erik

쿨, "다리"는 바이트를 절약합니다. 그러나 링크는 00:00해당 조건을 테스트하지 않기 때문에 호출 될 때 작동합니다. 다음 링크 까지 몇 초를 계산 "00:00"한 다음 대기합니다. 그래서 변환 것이라고 "00:00"할 수 [0,0]에서 빼 59수율 [59,59]기본 육십에서 얻을 수 있음을 변환 3599얻기 위해 하나를 추가 한 후와 3600(과 테스트 버전을 사용하여 테스트 "00:00"대신에 "59:57")
조나단 앨런

1
오. 긴 젤리 코드를 읽을 수 없으며 모든 사람의 용도와 기대를 알 수없는 것 같습니다.) 설명에서는 설명 60*(59-m)+(59-s)해야합니다.60*(59-m)+(59-s)+1 그것은 두 번째로 나타나는 것이 .
Outgolfer Erik

문제 없습니다. 해설은 내가 작성한 것 중 가장 명확하지 않습니다.
Jonathan Allan

글쎄, 번거 로움을 sleep x seconds then return y겪지 않으면 편집 할 수 있습니다. 또한 왼쪽 / 오른쪽으로 x / y를 수행하는 것이 좋습니다. 왜냐하면 <dyad>@스왑 된 인수가 있는 다른 다이어 드로 정의 될 수 있기 때문입니다.
Outgolfer Erik

1

MathGolf , 39 바이트

"Legen... wait for it..."pÆt♪/╚÷▼"dary!

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

pyth를 거의 이겼다 ...

설명

Æ     ▼  Repeat the next 5 characters while false
 t       push unix time in milliseconds
  ♪/     divide by 1000
    ╚÷   check if divisible by 3600 (tio solution has 3 in its place)

"거의"? 당신이 한 것처럼 보입니다.
Patrick Roberts

@ 패트릭 로버츠 (PatrickRoberts) 36 바이트 인 또 다른 pyth 솔루션이 있으며 압축 된 문자열과 다른 트릭으로도 얻을 수 없었습니다.
maxb

아 그거 틀렸다, 의견을 봐.
Patrick Roberts

@PatrickRoberts "00:00에서 실행하면 1 시간을 기다려야합니다"기준에서도 실패 할 수 있지만 동일한 바이트 수로 3600000으로 나눌 수있는 밀리 초 단위로 Unixtime을 확인하도록 변경할 수 있습니다. 밀리 초, 항상 작동합니다
maxb

0

Pyth-36 바이트

while 루프를 사용하여 분이 0이 될 때까지 기다립니다.

"Legen... wait for it..."W.d7)"dary!

11
분과 초가 0이 될 때까지 기다려야하며 프로그램이 실행되는 경우 전체 시간을 기다려야합니다.:00:00
lirtosiast

0

자바, 136 바이트

class a{void A(){System.out.println("Legen... wait for it...");while(System.currentTimeMillis()%3600000!=0);System.out.print("dary!");}}

마지막 전체 시간 이후 몇 밀리 초가 경과했는지는 System.currentTimeMillis()mod 3,600,000 의 결과입니다 .

동등한 단일체 프로그램의 길이는 159 바이트입니다.

interface a{static void main(String[]A){System.out.println("Legen... wait for it...");while(System.currentTimeMillis()%3600000!=0);System.out.print("dary!");}}

0

QBIC , 58 바이트

?@Legen... wait for it...|#Dary!|{~mid$$|(_d,4,2)=@00||_XB

설명

?@Legen... wait for it...|     Define string literal "Leg[..]it..." and print it
#Dary!|                        Define string B as "Dary!", but don't use it yet
{                              Opens an indefinite DO loop
~mid$$|(...)=@00|              Translates to IF MID$(...) = C$, where C$ is "00"
    The MID$ takes two characters, starting from pos 4, from the system's time (_d)
    So, if the string "11:00" has "00" starting at pos 4,
_XB                            Terminate the program and print string B
(The DO loop and the IF are closed implicitly)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.