누적 숫자 계단


17

주어진 양의 정수 와 는 아래 설명과 같이 열과 행의 텍스트를 출력 합니다.h w hhh

첫 번째 줄은 11 0초로 시작 하고 두 번째 줄은 10 1초로, 세 번째 줄은 9 2초로, 10 번째 줄은 2 9초로 아래로 내려갑니다 . 처음 10 개의 연속 숫자를 실행 한 후이 첫 10 개의 행 각각에서 다음으로 가장 낮은 두 번째 숫자가 두 번 나타나고 두 번째로 가장 낮은 숫자가 두 번 나타나며이 패턴이 영원히 반복됩니다. 0s 의 런이 발생하면 그 뒤의 숫자는 항상 9s입니다.

10 번째 행 아래의 행은 바로 위 행과 동일하지만 오른쪽으로 1 씩 이동합니다. 표시되는 새 숫자는 다른 인스턴스 옆에 있지 않은 경우 가장 왼쪽의 마지막 숫자와 같습니다. 그렇지 않으면 다음으로 높은 숫자입니다 (9에서 0으로 순환).

처음 요소는 다음과 같습니다.11×10

00000000000
11111111110
22222222211
33333333221
44444443322
55555544332
66666554433
77776655443
88877665544
99887766554

다음은 패턴을보다 선명하게하기 위해 컬러 텍스트가있는 이미지입니다.

고정 텍스트

더 적은 수의 열 / 행을 생성해야하는 경우 위의 텍스트를 간단히 잘라 내야합니다.

이보다 많은 열 / 행을 생성해야하는 경우 기존 계단을 확장해야합니다. 더 많은 열 / 행이 연속 자릿수의 새 계단을 추가하는 경우 자릿수는 정수에서 주기적으로 선택해야합니다. 따라서 입력 경우 출력은(15,13)

000000000009988
111111111100998
222222222110099
333333332211009
444444433221100
555555443322110
666665544332211
777766554433221
888776655443322
998877665544332
099887766554433
009988776655443
100998877665544

다음은이 텍스트의 색상 이미지입니다.

확장 텍스트

규칙

  • 편리한 방법으로 출력 할 수 있습니다 .
  • 전체 프로그램 또는 기능이 허용됩니다. 함수 인 경우 출력하지 않고 출력을 반환 할 수 있습니다.
  • 원하는 경우 줄 목록을 반환 할 수 있습니다.
  • 원하는 경우 2D 자릿수 배열 또는 자릿수 목록을 반환 할 수 있습니다.
  • 표준 허점은 허용되지 않습니다.

가장 짧은 코드가 승리합니다.

테스트 사례

테스트 사례에 대한 입력은 로 가져옵니다 .(,h)

1,1
0

3,2 000 111

20,1 00000000000998877665

11,10 00000000000 11111111110 22222222211 33333333221 44444443322 55555544332 66666554433 77776655443 88877665544 99887766554

15,13 000000000009988 111111111100998 222222222110099 333333332211009 444444433221100 555555443322110 666665544332211 777766554433221 888776655443322 998877665544332 099887766554433 009988776655443 100998877665544


8
패턴을 실제로 이해하지 못합니다. 패턴을 예제에서 추정하지 않고 구체적으로 설명 할 수 있습니까? 어떤 사람들은 예제가 도움이된다고 생각하지만 패턴이 예제에서 어떻게 나오는지 정확히 알지 못합니다.
Post Rock Garf Hunter

@WW 감사합니다, 나는 상단에 약간 더 철저한 설명을 추가했습니다
dylnan

1
1234

@ qwr 아, 우리가 그렇게 할 줄 몰랐어요. 어떤 명령을 했습니까?
dylnan

\ color {red} {text} 내가 믿는
qwr

답변:


7

파이썬 3, 94 93 78 77 74 바이트

lambda x,y:[[[(j-i+10)//2%10,j][j+i<9]for i in range(x)]for j in range(y)]

Dylnan 에서 -1 바이트

xnor 에서 인쇄하는 대신 목록 목록을 반환하여 -15 바이트

-1의 순서를 전환하여 바이트 (j-i+10)//2%10j의 부 if-else

- 를 목록 으로 변경하여 Jo King 에서 -3 바이트ifelse

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


람다 함수를 사용하면 바이트가 절약됩니다. TIO
dylnan

@dylnan 감사합니다!
pizzapants184

1
이 문제로 인해 자릿수 목록을 출력 할 수 있으므로 인쇄하거나 결합 할 필요가없는 것처럼 보입니다.
xnor


2

캔버스, 14 바이트

[⁷{¹∔⁶+»¹m◂@]]

여기 사용해보십시오!

이것을 만드는 동안 여러 곳에서 Canvas에 부정적인 모듈러스가 있음을 알았습니다 (여기서 »-바닥 div 2-0으로 반올림 됨). 수정없이 작동했던 이전 18 바이트 응답은 더 이상 작동하지 않습니다 ( main.js버전간에 만 저장하기 때문에 ). 여전히 TIO에 이전 버전이 있습니다.

설명:

[            ]  for 1..input
 ⁷{         ]     for 1..2nd input
   ¹∔               subtract from this loop counter the outer loops one
     ⁶+             add 12
       »            divide by 2, rounded to -∞
        ¹m          minimum of that & the outer loops counter
          ◂@        in the string "0123456789", get the xth char, 1-indexed

2

, 20 17 바이트

Eη⭆θ﹪⌊⟦ι÷⁺⁻ιλχ²⟧χ

온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다. 설명:

 η                  Height
E                   Map over implicit range
   θ                Width
  ⭆                 Map over implicit range and join
          ⁻ιλ       Subtract column from row
         ⁺   χ      Add 10
        ÷     ²     Integer divide by 2
       ι            Current row
     ⌊⟦        ⟧    Take the minimum
    ﹪           χ   Modulo by 10
                    Implicitly print each row on its own line

편집 : @dzaima의 알고리즘으로 전환하여 3 바이트를 절약했습니다.


2

젤리 , 14 바이트

_@þ:2+6«"J$’%⁵

h

온라인으로 사용해보십시오! 또는 (포스트 형식화 된) 테스트 스위트를 참조하십시오.

어떻게?

_@þ:2+6«"J$’%⁵ - Link: integer w, integer h
  þ            - outer product using (i.e. [[f(i,j) for i in 1..w] for j in 1..h]):
_@             -   subtraction with swapped arguments (i.e. f(i,j): j-i)
               -   e.g. the 4th row is [3, 2, 1, 0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,...]
   :2          - integer divide by two (vectorises)
               -                       [1, 1, 0, 0,-1,-1,-2,-2,-3,-3,-4,-4,-5,-5,-6,...]
     +6        - add six (vectorises)
               -                       [7, 7, 6, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 0,...]
          $    - last two links as a monad:
         J     -   range of length -> [1,2,3,...,h]
        "      -   zip with:
       «       -     minimum (vectorises)
               -                       [4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 2, 2, 1, 1, 0,...]
           ’   - decrement (vectorises)
               -                       [3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 0, 0,-1,...]
             ⁵ - literal ten
            %  - modulo (vectorises)
               -                       [3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 0, 0, 9,...]


2

젤리 , 19 바이트

pizzapants 'Neil 's에 매우 유사한 접근법을 사용합니다 . Jonathan Allan 덕분에 1 바이트를 절약했습니다 .

p’Ḣ_/HḞ+ʋS<9Ɗ?€5s%⁵

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


도우미 링크

_/HḞ+5

이것은 모나 딕 링크 (단일 함수 함수에 해당하는 젤리)이며 quick을 사용하여 다음 링크에서 호출 할 수 있습니다 Ç. 두 정수 목록을 취하여 다음을 수행합니다.

_/

빼기로 줄입니다.

HḞ+5%⁵

절반을 정수로 바꾼 다음 5를 더한 다음 모듈로 10을 가져옵니다.

메인 링크

p’ḢÇS<9Ɗ?€s

ç엑스와이

p’

1([0,엑스))×([0,와이))

S<9Ɗ?€

그리고 카티 전 곱의 각 쌍에 대해 합계가 9보다 작 으면 다음을 수행하십시오.

쌍의 헤드를 검색합니다 (첫 번째 요소). 그렇지 않으면,

Ç

쌍의 헬퍼 링크 (위에 설명)를 호출하십시오.

s%⁵

와이


당신은 끝에 모드 (10)를 이동할 수 있습니다 다음에서 온라인 도우미는 바이트를 저장 - 중 하나 양자 관계로 함께 p’Ḣ_/HḞ+ʋS<9Ɗ?€5s%⁵하거나 p’Ḣ_/:2+ʋS<9Ɗ?€5s%⁵, 또는 모나드로와p’Ḣ_/:2+5ƲS<9Ɗ?€s%⁵
조나단 앨런
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.