패턴을 따르는 모든 시간 찾기


13

귀하의 직업은 다음 패턴 중 하나를 따르는 모든 시간 (HH : MM, 24 시간 형식)을 인쇄하는 프로그램을 작성하는 것입니다.

  • 분과 같은 시간, 예 : 22 : 22,01 : 01
  • 역 분과 같은 시간, 예 : 10:01, 01:10, 22:22
  • H : MM 또는 HH : MM과 일치하는 시퀀스는 항상 HH : MM으로 인쇄됩니다. 예 : 00:12, 01:23, 23:45, 03:45 등 (항상 숫자 사이의 단일 단계)

규칙 :

  • 원하는 언어를 선택할 수 있습니다
  • 반복해서 인쇄 할 수 없습니다
  • 하루의 순서에 따라 라인 당 한 번
  • 우승자는 2 월 5 일에 선발됩니다.

추신 : 이것은 내 첫 번째 질문이며 일부 불일치가있을 수 있습니다. 자유롭게 편집하십시오.

PS2 : 예상되는 44 가지 솔루션은 다음과 같습니다 (이미 Josh와 primo가 발표했습니다!)

00:00
00:12
01:01
01:10
01:23
02:02
02:20
02:34
03:03
03:30
03:45
04:04
04:40
04:56
05:05
05:50
06:06
07:07
08:08
09:09
10:01
10:10
11:11
12:12
12:21
12:34
13:13
13:31
14:14
14:41
15:15
15:51
16:16
17:17
18:18
19:19
20:02
20:20
21:12
21:21
22:22
23:23
23:32
23:45

2
그 기대 3:45기록 03:45HH:MM따라서 순서를하지 형식과.
Howard

권리! 나는 예에서 그를 그리워
RSFalcon7

3
않는 13:57순서로 계산? 무엇에 대해 6:54? 같은 메모에서 6:42결정해야합니다.
John Dvorak

3
00:01시퀀스 로 카운트하는 것과 같이 선행 0이 아닌 하나의 숫자 만있는 시간이 있습니까?
Josh

2
@ RSFalcon7 그렇다면 선행 0 만 무시됩니까? 어느 것? 23:45, 02:34, 00:23, 00:02는 비슷한 경우 인 것 같습니다.
Joachim Isaksson

답변:


4

골프 스크립트 ( 82 72)

아직 초보자는 많지만 GS 답변이 없었으므로 ... :)

24,{'0'\+-2>..+\.-1%+}%5,{'0'7,{+}/>4<.(;0\+}%|{2=54<},$);{2/~':'\++}%n*

PHP는 그것을 이길 수 없습니다.
primo

그리고 C는 확실히 그것을 이길 수 없습니다.
Josh

4

PHP-93 바이트

<?for(;24>$h;)@ereg(+$h=&date(i,$i).$m=date(s,$i++),"0123456$h$h".strrev($h))&&print"$h:$m
";

이것은 같은 패턴을 찾을 수 02:34있지만 00:23또는 같은 패턴을 찾을 수 없습니다 00:02. 의견에서 OP의 설명을 이해하면 이것이 맞습니다.

총 44 개의 결과를 인쇄합니다.

00:00
00:12
01:01
01:10
01:23
02:02
02:20
02:34
03:03
03:30
03:45
04:04
04:40
04:56
05:05
05:50
06:06
07:07
08:08
09:09
10:01
10:10
11:11
12:12
12:21
12:34
13:13
13:31
14:14
14:41
15:15
15:51
16:16
17:17
18:18
19:19
20:02
20:20
21:12
21:21
22:22
23:23
23:32
23:45

4

C, 118 (초기 136)

h,m;main(){h<24&&main(m>57?m=0,h++:h==m|h==m%10*10+m/10|m-12==h*11|h==m-22&!(~-m++%11)&&printf("%02d:%02d\n",h,m-1));}

119 자의 반복 버전 :

h;main(m){for(;h<24;h++)for(m=0;m<57;m++)h==m|h==m%10*10+m/10|m-12==h*11|h==m-22&!(~-m%11)&&printf("%02d:%02d\n",h,m);}

@squeamish ossifrage에게 큰 감사합니다!


1
지금은 좋아야합니다.
Josh

2
내 솔루션은 (예 :)를 출력합니다 02:34. 규칙 m-12==h*11은 그들을 잡는다.
Josh

2
다음 100*h+m==1234||100*h+m==2345과 같이 바꿀 수 있습니다 ((m-h)==22)&&!((m-1)%11)(대괄호가
적을

1
공동 자금! 128 자로 줄이십시오. 감사!
Josh

1
내 이해에는와 같은 한 자리 숫자 만있는 시퀀스는 포함하지 않아야했습니다 00:01. 설명을 위해 원래 질문에 게시하겠습니다.
Josh

2

파이썬 (178)

s=sorted
for i in[x for x in['%04d'%i for i in range(2400)if i/10%10<6]if s(x[:2])==s(x[2:])or len({i-ord(y)for i,y in enumerate(x.lstrip('0'))})==1]:print'%2s:%2s'%(i[:2],i[2:])

시퀀스 전에 모든 선행 0을 제거하면 총 57 개의 결과가 제공됩니다.


2

APL (90)

F←{,'ZI2'⎕FMT⍵}⋄↑⊃¨{(F⍺),':',F⍵}/¨Z/⍨{(⍺=⍵)∨(≡/0 1⌽∘F¨⍺⍵)∨∧/¯1=2-/⍎¨(⍕⍺),F⍵}/¨Z←,1-⍨⍳24 60

그게 다야. 모든 키워드와 대부분의 기능이 단일 문자 인 perl의 방언을 만들려고합니다. +1, btw;)
primo 2019

1

자바 스크립트-171 자 (5/2/14)!

for(h='00';+h<24;h=(++h<10?'0':'')+h)for(m='00';+m<60;m=(++m<10?'0':'')+m)if(h[1]+h[0]==m||h==m||+m[1]-m[0]==1&&+m[0]-h[1]==1&&(!+h[0]||+h[1]-h[0]==1))console.log(h+':'+m)

나는 골프를 심각하게 중단하고있다. 지금부터 되돌아 보면 거의 30자를 줄였습니다! JSBin .

Ungolfed (및 의견) :

// Note: +'string' is same as 'parseInt(string, 10)'
// Also, this code is not the shortest one, I have purposely made this code longer for
// understanding purposes

for(h = '0'; +h < 24; h = +h + 1 + '') //initialize h(our), loop while it's less than 24
{                                      // increase it by 1 and cast back to string
    for(m = '0'; +m < 60; m= +m + 1 + '') // intialize m(inute), loop while < 60
    {                                  // increase it by 1 and cast back to string
        if(h.length < 2) h = 0 + h;    // if it is '9', convert to '09'
        if(m.length < 2) m = 0 + m;    // if it is '9', convert to '09'

        // Tests for printing
        if(h[0] === m[1] && m[0] === h[1] ||
           h === m ||
           +m[1] - +m[0] === 1 && +m[0] - +h[1] === 1 && (+h[0] === 0 || +h[1] -+ h[0] === 1))
        console.log(h + ':' + m);  // print
    } // inner loop end
}     // outer loop end

187 자 (구) (14/2/4)

for(h='00';+h<24;h=(+h<9?'0':'')+(+h+1))for(m='00';+m<60;m=(+m<9?'0':'')+(+m+1))if(h[0]==m[1]&&m[0]==h[1]||h==m||+m[1]-m[0]==1&&+m[0]-h[1]==1&&(!+h[0]||+h[1]-h[0]==1))console.log(h+':'+m)

약간의 실험과 로트 개선 (9 문자) :) JSBin

196 자 (구) (14/2/3)

for(h='00';+h<24;h=(+h<9?'0':'')+(+h+1))for(m='00';+m<60;m=(+m<9?'0':'')+(+m+1))if(h[0]==m[1]&&m[0]==h[1]||h==m||+m[1]-m[0]==1&&+m[0]-h[1]==1&&(!+h[0]||+h[1]-h[0]==1))console.log(h+':'+m)

신선한 마음으로 앉아서 많은 라이너를 개선했습니다 :) JSBin .

208 자 (구) (2/2/14)

for(h='0';+h<24;h=+h+1+''){for(m='0';+m<60;m=+m+1+''){if(h.length<2)h=0+h
if(m.length<2)m=0+m
if(h[0]==m[1]&&m[0]==h[1]||h==m||+m[1]-+m[0]==1&&+m[0]-+h[1]==1&&(+h[0]==0||+h[1]-+h[0]==1))console.log(h+':'+m)}}

정확히 44 시간이 필요합니다 (각 줄마다)

내 코드를 계속 개선 할 것입니다.

의견을 보내 주셔서 감사합니다. 감사합니다.


최근 업데이트 !!
Gaurang Tandon

1

파이썬 3, 248 자

나는 조금 늦었고 좋지도 않다고 생각하지만, 마지막으로 공유 할 첫 번째 코드 골프를 얻었습니다.

00:12가 아닌 01:23 및 23:45와 같은 실제 시퀀스 만 지원하기로 결정했습니다. 어쨌든, 나는 더 나은 일이 많을 것이므로 내 의견을 공유하십시오.

import itertools as t
s=sorted
r=range
i=int
d='%02d'
e=d+':'+d
print([e%(i(a[0]),i(a[1])) for a in t.product([d% x for x in r(0,24)], [d% x for x in r(0,60)]) if s(a[0])==s(a[1]) or list(a[0]+a[1])==[str(x) for x in r(i(a[0][0]),i(a[1][-1])+1)]])

pastebin 에 매우 설명적인 버전이 있습니다.


0

델파이

여전히 작업 중이지만 이것이 내가 지금까지 한 것입니다.
작동하지만 더 짧아 질 수는 없습니다.
편집 : 48 회 인쇄합니다.

들여 쓰기없이 422 자

uses System.SysUtils,DateUtils;var t:TTime;a,b,c,d:integer;s:string;begin t:=StrToTime('00:01');while t<StrToTime('23:59')do begin s:=FormatDateTime('hhnn',t);a:=StrToInt(s[1]);b:=StrToInt(s[2]);c:=StrToInt(s[3]);d:=StrToInt(s[4]);if((a+1=b)and(b+1=c)and(c+1=d))or((a=0)and(b+1=c)and(c+1=d))or((a=0)and(b=0)and(c+1=d))or((a=d)and(b=c))or((a=c)and(b=d))then WriteLn(FormatDateTime('hh:nn',t));t:=IncMinute(t)end;ReadLn;end.

들여 쓰기 557 자

uses
  System.SysUtils, DateUtils;

var
  t:TTime;
  a,b,c,d:integer;
  s:string;
begin
  t:=StrToTime('00:01');
  while t<StrToTime('23:59')do
  begin
    s:=FormatDateTime('hhnn',t);
    a:=StrToInt(s[1]);
    b:=StrToInt(s[2]);
    c:=StrToInt(s[3]);
    d:=StrToInt(s[4]);
    if((a+1=b) and (b+1=c) and (c+1=d)) or
      ((a=0) and (b+1=c) and (c+1=d)) or
      ((a=0) and (b=0) and (c+1=d)) or
      ((a=d) and (b=c)) or ((a=c) and (b=d)) then
      WriteLn(FormatDateTime('hh:nn',t));
    t:=IncMinute(t)
  end;
  ReadLn;
end.

0

q (116)

distinct{t:string 00:00+x;$[(t[0 1]in(t[3 4];t[4 3]))|all 1=1_deltas{"I"$x}each t[0 1 3 4];t;"00:00"]}each til 1440

00:00에서 23:59까지 증가하고 문자열로 캐스팅 한 다음 검사 (1 또는 2 테스트) 또는 3

산출:

("00:00";"01:01";"01:10";"01:23";"02:02";"02:20";"03:03";"03:30";"04:04";"04:40";"05:05";"05:50";"06:06";"07:07";"08:08";"09:09";"10:01";"10:10";"11:11";"12:12";"12:21";"12:34";"13:13";"13:31";"14:14";"14:41";"15:15";"15:51";"16:16";"17:17";"18:18";"19:19";"20:02";"20:20";"21:12";"21:21";"22:22";"23:23";"23:32";"23:45")

0

PHP- 56 39 31 바이트

<? http_redirect("goo.gl/W2M5mo")?>

어떤 식 으로든 규칙을 구부리지 않습니다. php.ini에서 pecl_http 모듈을 설치하고 short_open_tag를 "1"로 설정해야합니다.


+1, sneakiness에 대한 아무것도 경우 옥타브는 38 자에서 그 친다하더라도 disp(urlread('http://bit.ly/1fzhb3C')):)
요아킴 이삭손

... 당신은 아마 사용자 정의 설계 정적 HTML을 고려해야하지만, 당신이 다른 정적 파일을 할 것있는 거로드 소스 코드의 일부 (동등하게 계산되지 ...?)
요아킴 이삭손

-7

TI-BASIC

TI-84 계산기 용

DelVar AWhile A<24:A+1→A:Disp A,":",A:End

3
이것은 어떤 식으로 질문에 대답합니까?
Howard

2
공정하게 질문에 " 다음 패턴 중 하나 를 따르십시오 "
Danny

2
@ 대니 나는 이것이 규칙을 너무 많이 굽히고 있다고 생각합니다.
John Dvorak

1
@JanDvorak 이것은 어떻게 규칙을 굽히는가 ???
Timtech

2
좋아 ... 규칙을 표현하는 다른 방법을 생각해 보자. 나는 당신이 의도적으로 그것을 잘못 해석했는지 확실하지 않지만, 지금까지 나뿐만 아니라 다른 anwerer에게도 충분히 분명해 보입니다.
John Dvorak
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.