대각선으로 세어보세요!


30

우리는 숫자에 대한 가로 축이 많지만 솔직히 지루하다고 생각합니다. 오늘 당신의 임무는 입력으로 주어진 두 개의 음이 아닌 정수 사이의 대각선 축의 일부를 만드는 것입니다.

대각선 축을 만드는 방법?

  • input과 함께 예제를 보자 0, 5. 축은 다음과 같아야합니다.

    0
     1
      2
       삼
        4
         5
    
  • 그러나 우리의 축은 더 많은 자릿수를 가진 숫자에 좋을 것입니다! 입력이 예를 들어 0, 14이면 새 축은 다음과 같아야합니다.

    0
     1
      2
       삼
        4
         5
          6
           7
            8
             9
              10
                11
                  12
                    13
                      14
    
  • 축에서 다음 숫자의 첫 번째 숫자는 항상 이전 숫자의 마지막 숫자 바로 뒤에 위치해야합니다. 아이디어를 더 잘 이해하기 위해 다음과 997, 1004같은 또 다른 예가 있습니다 .

    997
       998
          999
             1000
                 1001
                     1002
                         1003
                             1004
    

규칙

  • 입력이 오름차순 또는 내림차순이라고 가정 할 수 있습니다 ( 5,3및 사이에서 선택 가능 3,5).

  • 두 정수의 차이가 100보다 작다고 가정 할 수도 있습니다.

  • 선행 줄 바꿈 또는 일관된 선행 공간 (각 줄에)이있을 수 있습니다. 후행 공백 / 줄 바꿈도 좋습니다.

  • 기본 허점은 금지되어 있습니다.

  • 표준 수단으로 입력하고 출력 할 수 있습니다 .

  • 이것은 이므로 모든 언어에서 가장 짧은 바이트 코드가 이깁니다!


다른 테스트 사례

  • 1, 10:

    1
     2
      삼
       4
        5
         6
          7
           8
            9
             10
    
  • 95, 103:

    95
      96
        97
          98
            99
              100
                 101
                    102
                       103
    
  • 999999, 1000009:

    999999
          1000000
                 1000001
                        1000002
                               1000003
                                      1000004
                                             1000005
                                                    1000006
                                                           1000007
                                                                  1000008
                                                                         1000009
    

선행 공백이 허용 됩니까 , 아니면 첫 번째 숫자 화면의 왼쪽에 정확히 있어야 합니까?
Nathan.Eilisha Shiraini

@NathanShiraini 선도적 인 개행이 허용됩니다
Mr. Xcoder


@StepHen 참고하기 때문에 감사합니다.
Mr. Xcoder

1
@Adnan 각 줄마다 줄 바꿈 줄이나 일관된 줄 간격이있을 수 있습니다.
Mr. Xcoder

답변:


19

05AB1E , 8 7 6 바이트

바이트를 저장해 준 Magic Octopus Urn 에게 감사합니다 !

어떻게 든 작동하지만 솔직히 나는 이유를 모른다.

암호

Ÿvy.O=

05AB1E 인코딩을 사용합니다 . 온라인으로 사용해보십시오!

설명

Ÿ          # Create the range [a, .., b] from the input array
 vy        # For each element
   .O      #   Push the connected overlapped version of that string using the
                 previous version of that string. The previous version initially
                 is the input repeated again. Somehow, when the input array is
                 repeated again, this command sees it as 1 character, which gives
                 the leading space before each line outputted. After the first
                 iteration, it reuses on what is left on the stack from the
                 previous iteration and basically attaches (or overlaps) itself 
                 onto the previous string, whereas the previous string is replaced 
                 by spaces and merged into the initial string. The previous string
                 is then discarded. We do not have to worry about numbers overlapping 
                 other numbers, since the incremented version of a number never
                 overlaps entirely on the previous number. An example of 123 and 456:

                 123
                    456

                 Which leaves us "   456" on the stack.
     =     #   Print with a newline without popping

.O = pop a,b push connected_overlap(b) (deprecated)-아 그래요?
매직 문어 Urn

@MagicOctopusUrn 그래, .O1 년 이상 극도로 버그가 있고 더 이상 사용되지 않으므로 작동하는 것과 작동하지 않는 것을 전혀 모른다. 내가 필요하다고 맹세 할 수는 Î있지만, 갑자기 더 이상 그렇지 않은 것 같습니다 (?). 감사! :)
Adnan

1
Btw Î는 최대 선행 공간 수를 1로 줄이는 데 필요했습니다.
Adnan

나 ... 잠깐만 ... 뭐, 어떻게 ...?
매직 문어 Urn

1
@ Mr.Xcoder 추가
Adnan

14

파이썬 2 , 43 바이트

lambda a,b:'\v'.join(map(str,range(a,b+1)))

래더 효과를 만들기 위해 세로 탭을 사용합니다. thet \v가 렌더링 되는 방식 은 콘솔에 따라 다르므로 TIO와 같이 모든 곳에서 작동하지 않을 수 있습니다.
실행 코드


\x0b코드에서 리터럴을 사용 하여 바이트를 저장할 수 있습니까?
Dom Hastings

@DomHastings 어쩌면 모르겠지만
Rod

방금 테스트했는데 작동하는 것 같습니다. 시험에 파일에 문자를 받고, 나는 숭고한 텍스트를 사용하고 발견을했고위한 정규식 모드로 교체 \\v하고 교체 \x0B업하는 쇼 VT당신도 가역 16 진 덤프 (게시 할 수 있습니다 처치 그 자리에 문자 xxd또는 무언가)를하거나 " \v문자 그대로의 세로 탭입니다"라고 말하면 공정하다고 생각합니다. 희망이 도움이됩니다!
Dom Hastings


7

R, 70 69 61 바이트

function(a,b)for(i in a:b){cat(rep('',F),i,'
');F=F+nchar(i)}

시작 및 종료 변수를 인수로 취하는 함수입니다. 시퀀스를 반복하고 충분한 공백이 앞에 붙은 각 요소를 인쇄합니다. F로 시작하고 FALSE=0각 반복 중에 해당 값의 문자 수가 추가됩니다. F인쇄 된 공간의 양을 결정합니다.

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

@Giuseppe 덕분에 -8 바이트


거기에 70 바이트가 있습니다. scan()두 번 사용하면 67 바이트로 줄일 수 있습니다 for(i in scan():scan()){cat(rep(' ',F),i,'\n',sep='');F=F+nchar(i)}.
djhurio

불행히도 F를 재설정해야합니다. 그렇지 않으면 새 세션에서이 기능을 한 번만 사용할 수 있습니다. F=0;for(i in scan():scan()){cat(rep(' ',F),i,'\n',sep='');F=F+nchar(i)}(71 바이트)
djhurio

@djhurio 함수 내부에서 F는 자체 네임 스페이스에서만 수정되므로 필요하지 않습니다. 또한을 사용하여 69 바이트를 계산 nchar합니다.
JAD

1
그러나 \n실제 줄 바꿈을 대체 해도 효과가 있으며 분명히 2 바이트 비용은 들지 않습니다.
JAD

1
좋았습니다.의 자동 간격을 남용하려고 생각 cat했지만 똑바로 생각하고 어떤 이유로 든 알아낼 수 없었습니다.
JAD

6

C #, 90 89 85 바이트

s=>e=>{var r="";for(int g=0;e>s;g+=(s+++"").Length)r+="".PadLeft(g)+s+"\n";return r;}

@LiefdeWen 덕분에 1 바이트가 절약되었습니다.
@auhmaan 덕분에 4 바이트를 절약했습니다.

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

풀 / 포맷 버전 :

namespace System
{
    class P
    {
        static void Main()
        {
            Func<int, Func<int, string>> f = s => e =>
            {
                var r = "";
                for (int g = 0; e > s; g += (s++ + "").Length)
                    r += "".PadLeft(g) + s + "\n";

                return r;
            };

            Console.WriteLine(f(0)(5));
            Console.WriteLine(f(0)(14));
            Console.WriteLine(f(997)(1004));
            Console.WriteLine(f(1)(10));
            Console.WriteLine(f(95)(103));
            Console.WriteLine(f(999999)(1000009));

            Console.ReadLine();
        }
    }
}

1
+1, 이제 정확히 5k가 없습니다. D
Mr. Xcoder

1 바이트의 i<=ee>i
LiefdeWen

@LiefdeWen 감사합니다 :)
TheLethalCoder

나는 당신이 그것을 제거 i하고 s대신에 재사용함으로써 더 많은 4 바이트를 절약 할 수 있다고 생각합니다
auhmaan

@auhmaan 왜 입력 변수를 사용하지 않을지 모르겠습니다.
TheLethalCoder


6

수학, 59, 바이트

Grid[(DiagonalMatrix@Range[1+##]/. 0->""+1)-1,Spacings->0]&

입력

[10,15]

-3 @JungHwanMin 바이트
고정 0 문제를 (자세한 내용은 주석을 참조)
고맙습니다에 @ngenisis


1
와우, 실제로 Diagonal
Mr. Xcoder

Spacings -> 0문자를 정확하게 입력 하려면 추가해야합니다 .
Mr.Wizard

입력은 음이 아니고 양으로 보장되지 않습니다.
user202729에서

Grid[(DiagonalMatrix@Range[1+##]/. 0->""+1)-1,Spacings->0]&이 문제를 해결하는 가장 짧은 방법입니다
ngenisis


5

매스 매 티카, 48 바이트

Rotate[""<>Table[ToString@i<>" ",{i,##}],-Pi/4]&

답변이 너무 많아서이 답변이 포함되어야한다고 생각했습니다

입력

[0,10]

산출
여기에 이미지 설명을 입력하십시오


1
유효하지 않습니까? 그러나 문자 그대로 제목을 취하기 만하면 +1됩니다.
Zacharý

5

C, 166 (134) 95 82 바이트

새로운 답변

전체 프로그램이 아닌 기능처럼.

f(a,b){int s=0,i;while(a<=b){i=s;while(i--)printf(" ");s+=printf("%i\n",a++)-1;}}

13 바이트를 중단시키는 데 도움을 준 Falken에게 감사의 말을 전합니다.

12 바이트를 녹여 준 Steph Hen에게 감사드립니다!

1 바이트를 시작하는 데 도움을 준 Zacharý에게 감사드립니다!

이전 답변

main 전에 int를 제거하고 const char * v []를 char ** v로 변경하고 리턴 0을 제거했습니다.

main(int c,char**v){int s=0;for(int a=atoi(v[1]);a<=atoi(v[2]);a++){for(int i=0;i<s;i++)printf(" ");printf("%i\n",a);s+=log10(a)+1;}}


int main(int c,const char*v[]){int s=0;for(int a=atoi(v[1]);a<=atoi(v[2]);a++){for(int i=0;i<s;i++)printf(" ");printf("%i\n",a);s+=log10(a)+1;}return 0;}

이것은 처음으로 골프를 쳤으며 C에서 무언가를 시도하고 싶었습니다.이 형식을 올바르게 지정했는지 확실하지 않지만 재미있게 만들었습니다!

int main(int c, const char * v[]) {
    int s = 0;
    for(int a=atoi(v[1]); a<=atoi(v[2]); a++) {
        for(int i=0; i<s; i++) printf(" ");
        printf("%i\n",a);
        s += log10(a)+1;
    }
    return 0;
}

설명

int s = 0; // Number of spaces for each line

for(int a=atoi(argv[1]); a<=atoi(argv[2]); a++) { // Loop thru numbers

for(int i=0; i<s; i++) printf(" "); // Add leading spaces

printf("%i\n",a); // Print number

s += log10(a)+1; // Update leading spaces

용법

여기에 이미지 설명을 입력하십시오


PPCG에 오신 것을 환영합니다! 나는 당신이 이름을 바꿀 수 있다고 생각 argc하고 argv하나 개의 문자 변수에.
Stephen

에서 int s=0와 같이 for 루프 로 이동할 수 있다고 생각합니다 for(int s=0;a<=b;a++).
Zacharý

아 맞아, 고마워 게시물을 업데이트했습니다!
수면

내부 루프 int i=s;while(i--)대신 사용 for(int i=0;i<s;i++)하면 2 바이트가 절약됩니다.
Falken

1
당신의 권리는 0에 대한 log10과 음수를 잊어 버렸습니다. 솔루션 덕분에 업데이트했습니다!
수면

4

C ++, 167165 바이트

Zacharý 덕분에 -2 바이트

#include<string>
#define S std::string
S d(int l,int h){S r;for(int m=0,i=l,j;i<=h;){for(j=0;j<m;++j)r+=32;S t=std::to_string(i++);r+=t;r+=10;m+=t.size();}return r;}

1. 바이트를 저장하기 위해를 int m=0,i=l,j첫 번째 for루프로 옮길 수 있습니까? 2.로 변경할 r+=t;r+=10r+=t+10있습니까? 3. 나는 누군가를 때렸다.
Zacharý

@ Zacharý 나는 할 수는 r+=t+=10있지만 r+=t+10오류가 발생했습니다
HatsuPointerKun

그러나 r+=t+=10작동합니까? 영향을 미치지 t.size()않습니까?
Zacharý

@ Zacharý 예, +로만 작동합니다. int를 매개 변수로 사용하여 과부하를 찾을 수는 없지만 + =를 사용하면 char로 과부하를 사용합니다.
HatsuPointerKun

아, 바이트를 더 절약 ++i하기 위해를 std::to_string(i)로 옮길 수 std::to_string(i++)있습니까?
Zacharý

4

APL (Dyalog) , 25 24 바이트

Zacharý 에게 -1 감사합니다 .

⎕IO←00부터 시작하는 계산을 가정 합니다. 하한을 왼쪽 인수로, 상한을 오른쪽 인수로 사용합니다.

{↑⍵↑⍨¨-+\≢¨⍵}(⍕¨⊣+∘⍳1--)

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

() 인수 사이에 다음과 같은 암묵적 기능을 적용하십시오.

- 상한에서 상한을 빼다

1- 하나에서 빼기 (예 : 1 + ∆)

⊣+∘⍳ 왼쪽 하한 + 0부터 정수까지

⍕¨ 각 형식 (문자열)

{} 다음에 익명으로 적용하십시오 (⍵로 표시).

≢¨ 각 길이 (숫자)

+\ 누적 합계

- 부정하다

⍵↑⍨¨ 각 문자열 번호에 대해 끝에서 많은 문자를 가져옵니다 (공백이있는 패드)

 문자열 목록을 문자 행렬로 혼합


+-⍨--있습니까?
Zacharý

@ Zacharý 물론입니다. 감사.
Adám

4

레티 나 , 81 78 바이트

.+
$*
+`\b(1+)¶11\1
$1¶1$&
1+
$.& $.&
 (.+)
$.1$* 
+1`( *)(.+?)( +)¶
$1$2¶$1$3

온라인으로 사용해보십시오! 입력을 개행으로 구분 된 두 정수 목록으로 취합니다. 편집 : 내 대답에서 범위 확장 코드를 훔쳐 3 바이트를 절약 했습니다. 프라임 클러스터를 공유합니까? 설명:

.+
$*

두 입력을 모두 단항으로 변환하십시오.

+`\b(1+)¶11\1
$1¶1$&

목록의 마지막 두 요소 (a, b)는 1 이상 다르지만 (a, a + 1, b)로 바꿉니다. 이렇게하면 목록이 튜플에서 범위로 확장됩니다.

1+
$.& $.&

다시 십진수로 다시 변환하십시오.

 (.+)
$.1$* 

사본을 공백으로 변환하십시오.

+1`( *)(.+?)( +)¶
$1$2¶$1$3

각 줄에서 다음 줄까지의 공간을 누적 합산하십시오.



3

로고 , 53 바이트

[for[i ? ?2][repeat ycor[type "\ ]pr :i fd count :i]]

"온라인으로 사용해보십시오!"는 없습니다 모든 온라인 로고 인터프리터가 템플리트 목록을 지원하지 않기 때문에 링크하십시오.

그것은 템플릿 목록입니다 (다른 언어의 람다 함수와 동일).

용법:

apply [for[i ? ?2][repeat ycor[type "\ ]pr :i fd count :i]] [997 1004]

( apply함수를 호출)

인쇄합니다

997
   998
      999
         1000
             1001
                 1002
                     1003
                         1004

노트 :

이것은 거북이의 ycor(Y 좌표)를 사용하여 입력하는 데 필요한 공간 수를 저장합니다.

  • 거북이는 매번 호출하기 전에 기본 위치로 향하고 집을 향해야합니다.
  • windowycor거북이가 화면에서 벗어나기에는 너무 커지면 실행해야합니다 . 설명 window명령 if the turtle is asked to move past the boundary of the graphics window, it will move off screen., 기본 설정과는 달리 wrap, 어떤if the turtle is asked to move past the boundary of the FMSLogo screen window, it will "wrap around" and reappear at the opposite edge of the window.

설명:

for[i ? ?2]        Loop variable i in range [?, ?2], which is 2 input values
repeat ycor        That number of times
type "\            space character need to be escaped to be typed out.
pr :i              print the value of :i with a newline
fd count :i        increase turtle's y-coordinate by the length of the word :i. (Numbers in LOGO are stored as words)


3

자바 스크립트 (ES8), 69 67 62 바이트

카레 구문을 사용하여 오름차순으로 정수로 입력을받습니다. 문자열 배열을 반환합니다.

x=>y=>[...Array(++y-x)].map(_=>s="".padEnd(s.length)+x++,s="")

시도 해봐

o.innerText=(f=

x=>y=>[...Array(++y-x)].map(_=>s="".padEnd(s.length)+x++,s="")

)(i.value=93)(j.value=105).join`\n`
oninput=_=>o.innerText=f(Math.min(i.value,j.value))(Math.max(i.value,j.value)).join`\n`
label,input{font-family:sans-serif}input{margin:0 5px 0 0;width:100px;}
<label for=i>x: </label><input id=i type=number><label for=j>y: </label><input id=j type=number><pre id=o>


3

Japt , 12 바이트

òV
£¯Y ¬ç +X

어떤 순서로든 입력을 받고 항상 배열을 오름차순으로 반환합니다.

온라인으로 사용해보십시오! -R배열을 개행과 결합 하는 플래그로.

설명

U및의 암시 적 입력 V.

òV
£

포괄적 인 범위를 [U, V]만들고 각 값을

¯Y ¬ç

현재 ( ¯Y) 이전의 값 은 문자열 ( ¬)에 결합되고 공백 ( ç)으로 채워집니다 .

+X

현재 숫자를 더한 값입니다. 결과 배열이 내재적으로 출력됩니다.


3

파이썬 2 , 65 63 62 61 바이트

-2 바이트 @Mr 덕분입니다. Xcoder : exec중괄호가 필요하지 않습니다

@ Zacharý 덕분에 -1 안녕 : print s*' 'asprint' '*s

def f(m,n,s=0):exec(n-m+1)*"print' '*s+`m`;s+=len(`m`);m+=1;"

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


1
exec에 중괄호가 필요하지 않습니다. m,n=input();s=0;exec(n-m+1)*"print s*' '+`m`;s+=len(`m`);m+=1;"충분하다.
Mr. Xcoder

1
나는 변경할 수 있다고 생각 print s*' '하는 print' '*s한 바이트를 저장합니다.
Zacharý

2

자바 스크립트, 57 바이트

f=(x,y,s='')=>y>=x?s+`
`+f(x+1,y,s.replace(/./g,' ')+x):s

55 바이트 : y=>g=(x,s='')=>y<x?s:s+'\n'+g(x+1,s.replace(/./g,' ')+x)정수를 반대로하여 카레를 사용하여 호출 : f(103)(95).
얽히고 설킨

54 바이트 : x=>y=>g=(s='')=>y<x?s:s+'\n'+g(s.replace(/./g,' ')+x++)같은 전화 f(x)(y)().
얽히고 설킨

2

파이썬 2, 60 59 바이트

내 함수에서 s = 0을 선택적 변수로 정의한 Mr.Xcoder 덕분에 -1 바이트.

def f(l,u,s=0):
 while l<=u:print' '*s+`l`;s+=len(`l`);l+=1

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

나는 이것을 람다 버전으로 옮기는 것이 가능하다고 생각하지만 어떻게 해야할지 모르겠다. 또한 공간과 현재 숫자의 길이 사이에 일종의 매핑이 있다고 생각하지만 아직까지도 파악하지 못했습니다. 그래서 여전히 개선의 여지가 있다고 생각합니다.

내가 한 것은 각 행에 숫자를 곱한 값으로 l하한에서 상한 까지의 범위를 만드는 것이 었 습니다 . 현재 숫자의 길이에 따라 승수를 늘리고 있습니다.us




오늘 "나중에" "exec"버전으로 당신이 한 것을 알아낼 것입니다. 아마도 미래의 코딩에 도움이 될 것입니다. 감사합니다
Simon


2

파이썬 2, 78 77 79 바이트

def f(a,b):
 for i in range(a,b+1):print sum(len(`j`)for j in range(i))*' '+`i`

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

f(A, B) A와 B 사이의 축 부분을 인쇄합니다.

처음 도전에 대답합니다!

Python 2의 백틱을 사용하고 남용하여 숫자 앞에 추가해야하는 공간 수를 계산합니다.

Mr.Xcoder 덕분에 -1 바이트

+2를 잊었 기 때문에 +2 +1


4
PPCG에 오신 것을 환영합니다! 좋은 첫 번째 대답. -1 바이트 sum(len(`j`)) for가 될 수 있음sum(len(`j`)for
Mr. Xcoder

1
당신은 교체해야합니다,이 답변이 유효하게하려면 range(a,b)range(a,b+1)파이썬 세미 포함 범위를 가지고 있기 때문에.
Mr. Xcoder

사실, 나는 그것을 놓쳤다. 무엇보다 놀라운 것은 내가 있다는 것입니다 않았다 내 테스트를했을 때 +1 것을 추가! 내가 ... 산화 티타늄으로 입력 한 경우 당연히 나는 2 바이트가 누락 없었다
Nathan.Eilisha Shiraini에게

2

C (gcc) , 41 38 바이트

ASCII 전용으로 -3 바이트

t(x,v){while(x<=v)printf("%d\v",x++);}

PuTTY를 통해 액세스하는 RedHat6에서 작동

증명

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


1
이것은 올바른 출력을 생성하지 않습니다.
Outgolfer Erik

까다 롭고 파일로 출력 한 다음 more그 파일에서 사용 합니다
Giacomo Garabello

2
@GiacomoGarabello 프로그램을 실행할 수 있으려면 전체 코드를 제공해야합니다. 테스트 환경을 제공하지 않거나 올바른 출력을 생성하도록 프로그램을 실행하는 방법에 대한 지침을 제공하지 않으면이 답변을 삭제하십시오.
Mr. Xcoder

줄 바꿈은 줄 시작으로 돌아올 수 있습니다. 그렇지 않으면 작동합니다.
user202729

@ Mr.Xcoder 편집
Giacomo Garabello

2

V , 16 바이트

ÀñÙywÒ $pça/jd

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

내가 취할 수 있다면 이것은 훨씬 쉬울 start end - start것이지만, 나는 그것이 도전을 조금 너무 많이 바꾸고 있다고 생각합니다.

버퍼에 입력으로 시작 번호를, 인수로 종료 번호를 사용합니다. 실제로에서 사다리 생성 start에를 start + end한 후 마지막 번호 뒤에 모든 것을 삭제합니다.


2

MATL , 11 바이트

vii&:"t~@Vh

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

설명

이것은 각 숫자에 대한 문자열을 생성하고 이전 문자열의 논리적으로 부정 된 사본과 연결하여 작동합니다. 따라서 char 0 앞에 이전 문자열의 길이만큼 0이 붙습니다. 문자 0은 공백으로 표시되고 각 문자열은 다른 줄에 표시됩니다

v       % Concatenate stack (which is empty): pushes []
ii      % Input two numbers
&:      % Range between the two numbers
"       % For each
  t     %   Duplicate
  ~     %   Logical negation. This gives a vector of zeros
  @     %   Push current number
  V     %   Convert to string
  h     %   Concatenate with the vector of zeros, which gets automatically 
        %   converted into chars.
        % End (implicit). Display stack (implicit), each string on a diferent
        % line, char 0 shown as space


2

펄, 19 바이트

참고 : \x0b1 바이트로 계산됩니다.

다른 사람들과 함께 커서 이동을 사용하는 것이 가장 짧은 경로라고 생각했는데 이는 TIO에서 작동하지 않는다는 것을 의미합니다.

print"$_\x0b"for<>..<>

용법

perl -e 'print"$_\x0b"for<>..<>' <<< '5
10'
5
 6
  7
   8
    9
     10

좋아, Perl을 전혀 보지 못했다. 테스트 링크를 추가 할 수 있습니까? 또한 1..두 개의 정수가 주어지기 때문에 거기에서 무엇을하는지 궁금합니다 .
Mr. Xcoder

@ Mr.Xcoder 그래, 1..내가 사양을 완전히 읽지 않았 습니까, 이제 수정되었습니다! 온라인 테스트의 경우 출력에 세로 탭이 포함되어 있으므로 예상대로 렌더링되지 않습니다. 제어 문자를 지원하는 렌더러를 찾을 수 있는지 확인하려고하면 ... 그렇지 않은 경우 새 프로젝트 일 수 있습니다.
Dom Hastings

2

Japt , 10 9 바이트

òV åÈç +Y

온라인으로 테스트하십시오! 행의 배열을 반환합니다. -R쉽게 볼 수 있도록 개행에 참여하기 위해 플래그가 포함되었습니다.

설명

 òV åÈ   ç +Y
UòV åXY{Xç +Y}   Ungolfed
                 Implicit: U, V = inputs, P = empty string
UòV              Create the range [U, U+1, ..., V-1, V].
    åXY{     }   Cumulative reduce: Map each previous result X and current item Y to:
        Xç         Fill X with spaces.
           +Y      Append Y.
                 Implicit: output result of last expression

이전 버전, 10 바이트 :

òV £P=ç +X

온라인으로 테스트하십시오!

 òV £  P= ç +X
UòV mX{P=Pç +X}  Ungolfed
                 Implicit: U, V = inputs, P = empty string
UòV              Create the range [U, U+1, ..., V-1, V].
    mX{       }  Map each item X to:
         Pç        Fill P with spaces.
            +X     Append X.
       P=          Re-set P to the result.
                   Implicitly return the same.
                 Implicit: output result of last expression

Dang, 나는 내 자신의 대답을 향상시키는 것과 동일한 해결책을 생각해 냈습니다.
Justin Mariner

2

D, 133 127 126 125 121 119 바이트

import std.conv,std.stdio;void f(T)(T a,T b,T s=0){for(T j;j++<s;)' '.write;a.writeln;if(a-b)f(a+1,b,s+a.text.length);}

젤리와 APL이 촬영되었습니다.

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

콘솔 의존적 인 결과가 괜찮다면 (Giamomos의 C 답변과 동일한 원칙을 벗어남) 72 71 바이트에 대한 결과가 있습니다.

import std.stdio;void f(T)(T a,T b){while(a<=b){a++.write;'\v'.write;}}

방법? (D 특정 트릭 만)

  • f(T)(T a,T b,T s=0) D의 템플릿 시스템은 유형을 유추 할 수 있습니다
  • for(T j;j++<s;)정수는 기본적으로 0입니다.
  • ' '.write;a.writelnD는 당신 fun(arg)arg.fun(D가 가지고있는 몇 가지 골프 물건 중 하나) 를 호출 할 수 있습니다
  • a.text.length위와 동일하고 D를 사용하면 마치 속성 인 것처럼 매개 변수가없는 메서드를 호출 할 수 있습니다 ( text문자열로 변환 됨)
  • 관련성이있을 수있는 한 가지 (그러나 이것을 사용하지는 않았습니다) 줄 바꿈은 문자열에있을 수 있습니다!

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