단축형 정수 시퀀스 확장


18

단축형 정수 시퀀스 형식으로 숫자 목록을 입력하면 시퀀스 전체를 출력합니다.

단축형 정수 시퀀스 형식은 앞에 오는 숫자 m 보다 적은 숫자를 가진 모든 숫자 n 을 찾아서 작동합니다 . 와 D 의 자릿수로서 N , 최근 개발 의 숫자 m은 모든 숫자로 대체 N . 입력 예는 다음과 같습니다.

123 45 6 7 89 200

대체 규칙을 적용하면 45 <123이기 때문에 먼저 45를 145로 바꿉니다.

123 145 6 7 89 200

동일한 규칙을 반복해서 적용하면 다음과 같습니다.

123 145 146 7 89 200
123 145 146 147 89 200
123 145 146 147 189 200

순서가 정렬되었습니다 (규칙에 적용 할 숫자가 없음). 이것이 최종 출력입니다.

당신은 가정 할 수 있습니다

  • 속기 표기법은 가능하면 항상 사용됩니다. 예를 들어 input은 12 3never 12 13입니다.

  • 같은 자릿수를 유지하면서 숫자는 감소하지 않습니다. 예를 들어 입력은 절대로되지 않습니다 333 222.

  • 속기 규칙을 적용해도 시퀀스의 이전 숫자보다 여전히 적은 숫자가 발생하지 않습니다. 예를 들어 입력은 절대로되지 않습니다 123 12.

  • 숫자는 항상 양의 정수이며 앞에 0을 포함하지 않습니다 (문자열 형식을 사용하는 경우).

  • 전체 확장 시퀀스에는 중복 번호가 포함되지 않습니다. (단축 법 시퀀스는 ex 10 1 20 1.-> 10 11 20 21입니다.)

  • 입력에 하나 이상의 숫자가 있습니다.

입력 및 출력은 숫자 / 문자열의 목록 / 배열이거나 숫자가 아닌 요소로 구분 된 단일 문자열 일 수 있습니다.

이것이 이므로 바이트 단위의 가장 짧은 코드가 승리합니다.

교대 라인에 입력 및 출력이있는 테스트 사례 :

1 2 3 10 1 2 20 5 100 200 10 3 5 26 9 99 999 9999
1 2 3 10 11 12 20 25 100 200 210 213 215 226 229 299 999 9999
223 1184 334 441 5 927 2073 589 3022 82 390 5 9
223 1184 1334 1441 1445 1927 2073 2589 3022 3082 3390 3395 3399
5 10 5 20 5 30 5 40 5 50 5
5 10 15 20 25 30 35 40 45 50 55
7 8 9 70 80 90 700 800 900 7000 8000 9000
7 8 9 70 80 90 700 800 900 7000 8000 9000
42
42

도전은 꽤 오래되었지만 a) 입력 내용이 비어있을 수 있습니까? b) 입력은 하나의 숫자 만 포함 할 수 있습니까?
Outgolfer Erik

@EriktheOutgolfer 저는 계속해서 입력에 ≥1 숫자가 있다고 말할 것입니다.
Doorknob

답변:


7

젤리, 7 바이트

DUṛ"\UḌ

온라인으로 사용해보십시오! 또는 모든 테스트 사례를 확인하십시오 .

작동 원리

DUṛ"\UḌ  Main link. Input: A (list of integers)

D        Convert each integer to a list of its base 10 digits.
 U       Reverse each digit list.
    \    Do a cumulative reduce, applying the dyadic link to the left:
   "       For each pair of corresponding digits:
  ṛ          Select the right one.
           Vectorization leaves digits that do not have a counterpart untouched.
     U   Reverse the resulting digit arrays.
      Ḍ  Convert from base 10 to integer.

5

자바 스크립트, 45 42 바이트

@Neil 덕분에 3 바이트가 떨어져 있습니다.

a=>a.map(x=>z=z.slice(0,-x.length)+x,z='')

위 함수는 문자열 배열을 예상합니다.


1
z=z.slice(0,-x.length)+x,z=''(또는 선택한 변수 이름)을 사용하여 4 바이트를 저장하십시오 .
Neil

@ 닐. 좋은 것! 그렇게 할 방법이 있어야한다는 것을 알았습니다
삭제

(저장을 잘못 계산하여 죄송합니다.) 또한 문자열 버전 s=>s.split` `.map(은 2 바이트보다 짧습니다 (이번 두 번 확인했습니다) s=>s.replace(/\d+/g,.
Neil

@ 닐. 유효한 포인트. 응답 내 첫 번째 목표 이었기 때문에 난 그냥 거기 잎이 달린 ...하지만 당신이 맞다
제거


0

35 자

<D>=@set{p;@fill-right{${p;};$0}}$p

입력 : 숫자로 구분 된 문자열, 출력 문자열.

샘플 실행 :

bash-4.3$ gema '<D>=@set{p;@fill-right{${p;};$0}}$p' <<< '123 45 6 7 89 200'
123 145 146 147 189 200

0

루비, 39 자

->a{l='';a.map{|c|l=l[0..-c.size-1]+c}}

입력 : 문자열 배열, 출력 : 문자열 배열

샘플 실행 :

2.1.5 :001 > ->a{l='';a.map{|c|l=l[0..-c.size-1]+c}}[%w{123 45 6 7 89 200}]
 => ["123", "145", "146", "147", "189", "200"] 

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