n과 함께 n 표시


18

내가 원하는 것 :

간단히 말해서, 텍스트 기반 디스플레이를 원합니다. 입력을 요청한 n다음 디스플레이에 해당 값을 표시합니다! 그러나 캐치가 있습니다. 각각의 '참' '픽셀'(채워진 것)은 그 숫자로 표시되어야합니다 n.

예 :

입력이 제공 n됩니다. n한 자릿수로 가정 할 수 있습니다

Input: 0
Output:
000
0 0
0 0
0 0
000

Input: 1
Output:
  1
  1 
  1
  1
  1

Input: 2
Output:
222
  2
222
2
222

Input: 3
Output:
333
  3
333
  3
333

Input: 4
Output:
4 4
4 4
444
  4
  4

Input: 5
Output:
555
5  
555
  5
555

Input: 6
Output:
666
6    
666
6 6
666

Input: 7
Output:
777
  7
  7
  7
  7

Input: 8
Output:
888
8 8
888
8 8
888

Input: 9
Output:
999
9 9
999
  9
999

도전:

가능한 한 적은 바이트로 위의 작업을 수행하십시오.

모든 요구 사항을 충족하는 답변 만 수락합니다.

숫자가 올바르게 표시 되면 주변 공백은 선택 사항 입니다.

또한 <75 바이트는 저의 투표입니다. 가장 낮은 수락이지만 항상 허용되는 답변을 변경할 수 있으므로 대답하지 않는 것이 좋습니다.



분명히 이것은 중복입니다. 그것은 매우 가까운 확실히의
얽히고 설킨


2
나는 그것의 dup을 생각하지 않습니다. 질문은 매우 비슷하지만 줄어든 문자 세트 (0-9)는 약간 다른 답변을 줄 것이라고 생각합니다.
Digital Trauma

답변:


8

SOGL V0.12 , 30 바이트

■'τč▲Β►║⁰ΡāQšJ┘tXdnοO¹‘'¹n.w3n

여기 사용해보십시오! 압축 된 문자열 ■'τč▲Β►║⁰ΡāQšJ┘tXdnοO¹‘

  ŗ  ŗ  ŗ  ŗ  ŗŗŗŗ  ŗŗŗŗŗ  ŗŗŗŗŗŗ  ŗŗŗŗ  ŗŗŗŗŗ ŗŗ ŗŗŗŗ  ŗ  ŗŗŗŗŗ  ŗŗŗ  ŗŗŗŗŗŗŗŗ  ŗŗŗŗ ŗŗŗŗŗŗŗ  ŗ  ŗ  ŗ  ŗŗŗŗŗ ŗŗŗŗŗ ŗŗŗŗŗŗŗŗ ŗŗŗŗ  ŗŗŗŗŗŗŗŗ ŗŗ ŗŗ ŗŗŗŗ

숫자 (1부터 시작하여 0으로 끝남)는 한 줄씩, 숫자에서 숫자입니다. 나머지

...‘             push the compressed string, replacing the ŗs with pop - the input
    '¹n          split into chunks of 15
       .w        push the (1-indexed, wrapping) input-th item of that array
             3n  split into chunks of 3
                 implicitly output the array, line by line

한 번35 바이트로 처리하는 방법에 깊은 인상을 받았습니다 ! 전에는 SOGL을 사용한 적이 없지만 온라인 테스터를 사용했는데 작동합니다!
VortexYT

숫자 모양 데이터는 실제로 17 바이트 (길이 데이터가 있고``및 '인 6 바이트가 손실 됨 -)이며 나머지는 쉽습니다. 궁금합니다. 어떤 온라인 테스터를 사용하셨습니까? 나는 아무것도 보지 못했다.
dzaima

아, 위의 SOGL을 클릭하십시오! 1MB와 같은 것을 다운로드해야합니다. 즉시 삭제했습니다. : /
VortexYT

어떻게 했어?
VortexYT

오 와우! 축하합니다! 파일이 많이있는 것 같습니다. 어쩌면 조금 분리
VortexYT

13

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

f=
n=>`019
2 3
459
6 7
889`.replace(/\d/g,c=>[2,18,142,96,130,131,698,4,146][c]>>n&1?` `:n)
<input type=number min=0 max=9 oninput=o.textContent=f(this.value)><pre id=o>

숫자는 주어진 자릿수에 대한 공백을 포함하는 사각형을 인코딩합니다. 예를 들어 왼쪽 하단 모서리의 값은 146입니다. 1, 4 및 7은 사용하지 않으며 146 = 2¹ + 2⁴ + 2⁷입니다.


11

05AB1E , 40 39 38 바이트

•Y¤ŸèK'¦ú’ò™^N•4B5ô¹èvð¹«5714yè8+b¦Sè,

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

설명

•Y¤ŸèK'¦ú’ò™^N•            # the compressed string "318975565561233953387608032537"

4B                         # convert to base-4
  5ô                       # split into strings of size 5
    ¹è                     # get the string at index <input>
      v                    # for each digit y in string
          5714yè           # get the digit in 5714 at index y
                8+         # add 8
                  b        # convert to binary
                   ¦       # remove the leading 1
       𹫠         Sè     # with each digit in the binary number, 
                           # index into the string " <input>"   
                      ,    # print with newline

11

apt , 43 바이트

"Ýûÿ©ÿßY÷ß"®c s4äëAU ¬£2839¤ë4X÷d0S1U

인쇄 할 수없는 것들이 포함되어 있습니다. 온라인으로 사용해보십시오!

Tallies : 13 바이트의 압축 데이터, 9 바이트는 압축 해제, 21 바이트는 출력을 형성합니다.

설명

Ungolfed 코드 :

"Ýûÿ©ÿßY÷ß"®   c s4à ¤  ëAU ¬ £  2839¤  ë4Xà ·  d0S1U
"Ýûÿ©ÿßY÷ß"mZ{Zc s4} s2 ëAU q mX{2839s2 ë4X} qR d0S1U

정확히 4 개의 다른 행 가능성이 있습니다 : ( #숫자를 나타냄)

#  
  #
# #
###

따라서, 각 숫자는 5 자리 4 자리 숫자로 저장 될 수 있습니다. 그런 다음 각 숫자를 10 비트로 저장할 수 있으므로 총계는 100 비트이며 13 바이트에 해당합니다. 압축 과정을 건너 뛰고 대신 압축 해제에 대해 설명하겠습니다.

mZ{Zc s4} 

mZ{     }  // Replace each character Z in the compressed string with the following:
   Zc      //   Take the char-code of Z.
      s4   //   Convert to a base-4 string.

압축 해제 후 13 바이트 압축 문자열은 다음과 같습니다.

3131332333332111200122213333313321011121213133133133

로 시작할 0때 선행 0이 제거 되므로 4 자리 실행이 시작되면 실패 s4합니다. 우리는 이것을 세 번만 0나타내며 #  , 4 자리 런의 시작에 해당하는 것은 없어서이를 고칠 수 있습니다 .

s2         // Slice off the first two chars of the result.

자, 50 자리 문자열을 4 개의 덩어리로 잘 압축하려면 두 자리를 더 추가해야했습니다. 문자열의 시작 부분에 추가하면 1 바이트로 잘라낼 수 ¤있습니다.

ëAU        // Take every 10th (A) char in this string, starting at index <input> (U).

당황하게도, Japt에는 문자열을 길이가 X 인 슬라이스로 분리 할 수있는 기능이 내장되어 있지 않습니다. 그러나 모든 X 번째 문자를 가져올 수있는 기능이 내장되어 있으므로 모든 최상위 행을 먼저 인코딩하여 모든 데이터를 저장할 수 있습니다. 두 번째 행 등

이제 만들려는 숫자를 인코딩하는 5 자리 문자열이 있습니다. 예 32223를 들어0 .

q mX{2839s2 ë4X} qR
q                    // Split the resulting string into chars.
  mX{          }     // Replace each char X with the result of this function:
     2839s2          //   Convert the magic number 2839 to a binary string.
            ë4X      //   Take every 4th char of this string, starting at index X.
                 qR  // Join the result with newlines.

매직 넘버를 설명하려면 네 개의 다른 행을 다시 참조하십시오. 당신은 교체하는 경우 #1 0 , 당신은 얻을

100
001
101
111

이것을 바꾸고 단일 문자열로 합치면 101100010111 됩니다. 십진수로 변환하면 voilà는 2839입니다. 프로세스를 반대로하면 숫자 0123가 위에 표시된 네 개의 이진 행으로 매핑 됩니다.

거의 끝났어! 이제 남은 일은 공백과 숫자를 추가하는 것입니다.

d0S1U      // In the resulting string, replace 0 with " " (S) and 1 with <input> (U).

그리고 암시 적 출력은 나머지를 처리합니다. 이 설명이 너무 길어서 미안하지만 이해하기 쉽도록 골프를 칠 수있는 실제 방법을 보지 못합니다 (이해하기 쉬운 경우 ...)


9

자바 스크립트 (ES6), 115 111 바이트

입력을 문자열로받습니다.

n=>'02468'.replace(/./g,c=>(n+n+n+`   ${n} `+n).substr([126,341,36,68,327.5,66,98,340,102,70][n]*4>>c&6,3)+`
`)

작동 원리

패턴 인코딩

다음과 같이 네 가지 패턴 "XXX""X..", "..X""X.X"압축하여 압축을 "XXX...X.X"풀 수 있습니다 .

XXX...X.X
^^^        --> XXX  (id = 0 / pointer = 0)
  ^^^      --> X..  (id = 1 / pointer = 2)
    ^^^    --> ..X  (id = 2 / pointer = 4)
      ^^^  --> X.X  (id = 3 / pointer = 6)

입력 자리 n"X"실제 공백으로 대체 하고 사용하면 다음과 같이 표현됩니다.

n+n+n+`   ${n} `+n

숫자 인코딩

위에 정의 된 패턴 식별자를 사용하여 각 숫자를 5 * 2 = 10 비트 수량으로 나타낼 수 있습니다.

예를 들어 :

XXX  -->  0 *   1 =   0
X.X  -->  3 *   4 =  12
XXX  -->  0 *  16 =   0
..X  -->  2 *  64 = 128
XXX  -->  0 * 256 =   0
                    ---
                    140

전체 목록은 다음과 같습니다.

[252, 682, 72, 136, 655, 132, 196, 680, 204, 140]

그러나이 값을 2로 나누면 2 바이트를 절약 할 수 있습니다. 대신 우리는 다음을 저장합니다.

[126, 341, 36, 68, 327.5, 66, 98, 340, 102, 70]

데모


6

배쉬 + GNU 유틸리티, 114

  • @SophiaLechner 덕분에 2 바이트 절약

압축에는 더 많은 기회가있을 수 있지만 시작은 다음과 같습니다.

dc<<<4o16iEAC00CDF33AC373DEF00EEFB3p|fold -5|sed "$[$1+1]!d
s/0/  x\n/g
s/1/x\n/g
s/2/x x\n/g
s/3/xxx\n/g
y/x/$1/"

설명

모든 숫자의 각 행은 다음 네 가지 패턴 중 하나입니다.

  x
x
x x
xxx

이 0-3으로 레이블을 지정하면 각 숫자를 5 개의 기본 4 자리로 표시 할 수 있습니다. 예를 들어 0은 32223이고 전체 자릿수 목록은 base-4에서로 인코딩됩니다 32223000003031330303223003130331323300003232332303. 이것은 16 진수로 인코딩됩니다 EAC00CDF33AC373DEF00EEFB3.

  • dc16 진수 EAC00CDF33AC373DEF00EEFB3를 base-4 로 변환합니다 .
  • fold 각 줄에 5 자리 4 자리 숫자를 넣습니다.
  • sed:
    • 행 번호 n + 1 (sed 1-indexes 행)을 제외한 모든 입력 행을 삭제합니다.
    • 기본 4 자리 숫자를 x주어진 숫자의 각 줄에 대한 패턴 ( es)으로 변환하고 각 행의 끝을위한 줄 바꿈
    • xes를 숫자 n으로 음역합니다 .

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


1
좋은 생각! 몇 저장을 대체하여 바이트 s/1/x \n/gs/1/x\n/g그 공간을 시각적으로 출력에 영향을 미치지 않습니다 때문에.
Sophia Lechner

5

MATL , 45 43 바이트

'V~4;LR`I-D2q (z%eI)P-nc'F TFZa15eiZ)5eGV*c

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

설명

'V~4;LR`I-D2q (z%eI)P-nc' % Compressed string using printable ASCII except '
F TFZa                    % Decompress (change of base) into alphabet [1 0]
15e                       % Reshape into 15-row matrix. Each column contains the
                          % art for one digit, packed in column-major order
iZ)                       % Take input number and pick the corresponding column.
                          % Indexing is 1-based and modular, so 0 is at the end
5e                        % Reshape into a 5-row matrix. This already looks like
                          % the number, with active pixels as 1 and inactive as 0
GV                        % Push input number again. Convert to string, of one char
*                         % Multiply, element-wise. The previous char is
                          % interpreted as its ASCII code. This changes 1 into the 
                          % ASCII code of the input digit, and leaves 0 as is
c                         % Convert to char. Implicitly display. Char 0 is shown as
                          % a space

3

망막 166 164 163 바이트

바닥에서 세 번째 줄에 두 칸

0
0addda
d
0 0
1
1b1b1b1b1b1
2
2ab2a2b222
3
3ab3ab3a
4
44 44 4ab4b4
5
55ab555b5a
6
66ab6a 6a
7
7ab7b7b7b7
8
88a 8a8 8a
9
99a 9ab9a
(\d)a
$1$1$1$1
^.

b
  
.{3} $+¶

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

@Okx 솔루션 의 개선 된 버전


2

Pyth 82 85 91 100 바이트

Km?dC+48Q\ m.&C@"w$kn<^_d\x7f~"Qdj1906486293414135453684485070928 128V5p.)Kp.)K.)K

내 첫 번째 도전 과제는 아마도 많은 골프입니다.


PPCG에 오신 것을 환영합니다!
Martin Ender

2

배치 파일, 8 + 184 바이트

필수 배치 솔루션은 다음과 같습니다. 불행히도 이것을 달성하는 표준 방법은 300 바이트 이상을 일괄 처리하므로 훨씬 저렴한 전술에 의존합니다.

@type %1

현재 디렉토리에는 0에서 9까지 이름이 지정된 10 개의 파일이 있습니다. 각각 5x3 픽셀의 픽셀이 있습니다. 예를 들면 다음과 같습니다.

enter image description here

이에 대한 바이트 수는 다음과 같습니다.

19 0
19 1
17 2
19 3
19 4
17 5
17 6
19 7
19 8
19 9
Total - 184

여전히 자바를 이겼다.


1

루비, 94 바이트

->n{20.times{|i|print i%4>2?$/:[" ",n]["_Q_@@_]UWUU_GD_WU]_U]AA__U_WU_"[n*3+i%4].ord>>i/4&1]}}

테스트 프로그램에서 언 골프

f=->n{
  20.times{|i|                           #4 characters * 5 rows = 20
    print i%4>2?$/:                      #If i%4=3 print a newline else
    [" ",n][                             #either a space if the expression below is 0 or the digit n if 1.
      "_Q_@@_]UWUU_GD_WU]_U]AA__U_WU_"[  #bitmap data for digits, one character for each column
        n*3+i%4].ord>>i/4&1              #Select the correct character for the column, convert to ascii code,
    ]                                    #rightshift to find the correct bit for the row, 
  }                                      #use & to isolate the bit: 0 or 1
}

f[gets.to_i]


1

레티 나 , 125 바이트

.
A$&¶B$&¶C$&¶D$&¶E$&
([ACE][235689]|A0|E0|C4|A7)(?<=(.))
$2$2$2
(B[0489]|D[068]|A4|C0)(?<=(.))
$2 $2
D2
2
B5
5
B6
6
[A-E]
  

온라인으로 사용해보십시오! (개별 입력 숫자를 테스트하려면 헤더에서 테스트 스위트를 삭제하십시오.) 마지막 행에는 두 개의 공백이 있습니다.


1

PowerShell을 126 120 113 109 101

$n="$args"
-split'ϽϭϿ·ͱ Ο·ͽͼϿ·Ņ ϻ·ͭͭϿ'|%{-join($_[0..2]|%{"$n·"[!($_-band1-shl$n)]})}

유니 코드는 재미있다. 문자도 숫자보다 짧습니다. 위의 코드에는 U + 0000이 두 번 포함되어 있으므로 직접 복사 할 수 없습니다 (파일에서 잘 작동 함). 다음 코드를 복사 할 수 있습니다.

$n="$args"
-split"ϽϭϿ ͱ`0Ο ͽͼϿ Ņ`0ϻ ͭͭϿ"|%{-join($_[0..2]|%{"$n "[!($_-band1-shl$n)]})}

시작할 때 UTF-8 서명이 필요하기 때문에 3 바이트가 손실됩니다. 그렇지 않으면 문자열이 작동하지 않습니다.


1

망막 , 190 바이트

0
000¶aaa000
a
0 0¶
1
aaaaa
a
b1¶
2
ab2¶a2¶a
a
222¶
3
ab3¶ab3¶a
a
333¶
4
4 4¶4 4¶444¶b4¶b4
5
a5b¶ab5¶a
a
555¶
6
a6¶a6 6¶a
a
666¶
7
777aaaa
a
¶b7
8
a8 8¶a8 8¶a
a
888¶
9
a9 9¶ab9¶a
a
999¶
b
  

마지막 줄에는 두 개의 공백이 있지만 SE는 렌더링을 원하지 않습니다 .

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


반복 된 교체 a를 세 자리 숫자와 줄 바꿈 으로 결합하는 방법이 있다고 생각합니다 . (아마도 예견을 사용합니까?)
math

@mathjunkie 예 : /
Okx



1

PowerShell을 , 159 135 128 118 바이트

param($n);0..4|%{("$n$n$n","$n $n","  $n","$n  ")['01110333330203002020110220302003010022220101001020'[$_+($n*5)]-48]}

현재 답변 : 외부 변수 명명 제거

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

다른 답변에서 트릭을 얻을 수 있는지 확인해야합니다.

메가 문자열을 호출하여 더 똑똑하게 편집

EDIT2$a 7 바이트를 절약하기 위해 색인화 할 문자열을 사용하도록 전환되었습니다 . 아래 코드에서 이전 동적 변수 이름 호출이 마음에 들었지만 (135 바이트)

param($n);$a="$n$n$n";$b="$n $n";$c="  $n";$d="$n  ";$r="abbbadddddacadaacacabbaccadacaadabaaccccababaabaca";0..4|%{gv $r[$_+($n*5)]-v}

0

, 61 38 바이트

E§⪪”{⊞¶↙⬤\→*'K«-aRQ¹νÀ⁰”⁵N⭆421⎇&IιIλθ 

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

E§⪪”{⊞¶↙⬤\→*'K«-aRQ¹νÀ⁰”⁵N

(압축 된) 문자열을 5 개의 그룹으로 나누고, 입력에 의해 주어진 색인에서 하나를 가져 와서 그룹의 문자 (항상 1, 4, 5 또는 7)에 맵핑하십시오.

⭆421⎇&IιIλθ 

입력 문자와 공백을 숫자로 사용하여 문자를 10 진수에서 3 자리 숫자 2로 변환합니다. 그런 다음 5 개의 결과가 별도의 줄에 암시 적으로 인쇄됩니다.

일반 포트는 약간 지루하므로 여기에 더 관용적 인 61 바이트 답변이 있습니다.

GH✳✳§⟦⟦↑L↓¬⟧⟦↓↓⟧⟦T↓→⟧⟦T→¬⟧⟦↑↑¬↑⟧⟦←↓T⟧⟦T↑L⟧⟦→↓↓⟧⟦+L↓⟧⟦+↓T⟧⟧N³θ

온라인으로 사용해보십시오! 디버 보시 파이어가 일반 다각형 내부의 방향 목록이나 심지어 다 방향을 이해하지 못하므로 자세한 버전은 없습니다. 설명:

     ⟦...⟧      Array of paths, see below
          N     Input as an integer
    §           Index into the array
  ✳✳            Treat the element as direction data
           ³    Length of each segment (including 1 character overlap)
            θ   Draw using the input character
GH              Draw a path

각 경로는 길 찾기 목록 ( ←↑→↓)을 사용하여 지정됩니다 . 바이트를 저장하는 4 개의 사용 가능한 바로 가기 : Lrepresent ↑→, ¬represent ↓←, while Trepresent →↓←+나타내지 →↓←↑만 목록을 방향 목록으로 인식하려면 화살표가 하나 이상 남아 있어야합니다 (예 :에 TT사용할 수 없음 3).




0

파이썬 3 , 119 바이트

lambda n:(3*f"%s%s{n}\n%s %s\n")[:30]%(*[n if i//(2**n)%2else" "for i in[1021,1005,881,927,893,892,325,1019,877,877]],)

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

각 '픽셀'은 정수로 표시되며, 2의 각 거듭 제곱은 픽셀이 솔리드인지 여부를 나타냅니다. 이것은 오른쪽 세 모서리가 항상 숫자라는 사실을 이용합니다.


-1

JavaScript (ES8), 87 바이트

n=>`019
2 3
459
6 7
889`.replace(/\d/g,c=>[2,18,142,96,130,131,698,4,146][c]>>n&1?' ':n)

2
이것은 @Neil 의 4 월 27 일 의 JavaScript 답변정확히 같은 답변입니다 . 개선 할 수있는 것이 있다면, 새로운 답변을 게시하는 대신 그의 답변에 의견을 말해야합니다 (편집 : 예, 알고 있습니다) 아직 평판이 충분하지 않습니다 ..)
Kevin Cruijssen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.