Hiển thị n với n


18

Những gì tôi muốn:

Rất đơn giản, tôi muốn một màn hình dựa trên văn bản, yêu cầu nhập liệu n, sau đó hiển thị giá trị đó trên màn hình! Nhưng có một nhược điểm. Mỗi "pixel" đúng "(những cái được điền vào) phải được biểu thị bằng số đó n..

Thí dụ :

Bạn được cung cấp một đầu vào n. Bạn có thể giả sử nsẽ là một chữ số

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

Thử thách:

Làm điều đó ở trên trong càng ít byte càng tốt.

Tôi sẽ chỉ chấp nhận câu trả lời đáp ứng tất cả các yêu cầu.

Khoảng trắng xung quanh là tùy chọn, miễn là chữ số được hiển thị đúng.

Ngoài ra, <75 byte là phiếu bầu từ tôi, mức chấp nhận thấp nhất, nhưng tôi luôn có thể thay đổi câu trả lời được chấp nhận, vì vậy đừng nản lòng khi trả lời.



Chắc chắn, đây là một bản sao. Nó chắc chắn rất gần với điều này
Shaggy


2
Tôi không nghĩ đó là bản sao. Mặc dù các câu hỏi rất giống nhau, tôi nghĩ rằng bộ ký tự rút gọn (0-9) sẽ tạo ra một số câu trả lời khá khác nhau.
Chấn thương kỹ thuật số

Câu trả lời:


8

SOGL V0.12 , 30 byte

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

Hãy thử nó ở đây! Chuỗi nén ■'τč▲Β►║⁰ΡāQšJ┘tXdnοO¹‘

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

đó là (bắt đầu bằng 1, kết thúc bằng 0) các số, từng dòng, số thành số. Phần còn lại

...‘             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

Tôi ấn tượng về cách bạn quản lý để làm điều đó trong 35 byte trong một lần! Mặc dù tôi chưa bao giờ sử dụng SOGL trước đây, tôi đã sử dụng một trình kiểm tra trực tuyến và nó hoạt động!
VortexYT

Dữ liệu hình dạng số thực sự chỉ có 17 byte (mất 6 byte có dữ liệu độ dài và đó là `` và -), và phần còn lại thì dễ dàng. Tôi tò mò, bạn đã sử dụng thử nghiệm trực tuyến nào? Tôi đã không thực hiện cũng không nhìn thấy bất kỳ.
dzaima

Ồ, chỉ cần nhấp vào SOGL ở trên! Bạn phải tải xuống một cái gì đó như 1MB hoặc một cái gì đó. Tôi đã xóa nó ngay lập tức. : /
VortexYT

Bạn đã làm nó như thế nào?
VortexYT

Tuyệt vời! Chúc mừng bạn! Bạn dường như có rất nhiều tập tin trong đó. Có thể tách biệt nó một chút
VortexYT

13

JavaScript (ES6), 88 byte

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>

Các số mã hóa các ô vuông chứa khoảng trắng cho một chữ số đã cho, ví dụ góc dưới bên trái có giá trị 146 vì 1, 4 và 7 không sử dụng nó và 146 = 2¹ + 2⁴ + 2⁷.


11

05AB1E , 40 39 38 byte

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

Hãy thử trực tuyến!

Giải trình

•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

Japt , 43 byte

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

Chứa một số không thể in. Hãy thử trực tuyến!

Tallies: 13 byte dữ liệu nén, 9 byte để giải nén nó và 21 byte để tạo đầu ra.

Giải trình

Mã bị đánh cắp:

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

Có chính xác 4 khả năng hàng khác nhau: ( #đại diện cho một chữ số)

#  
  #
# #
###

Do đó, mỗi số có thể được lưu trữ dưới dạng một bộ gồm năm chữ số cơ bản. Vì mỗi số có thể được lưu trữ trong 10 bit, nên tổng số là 100 bit, tương ứng với 13 byte. Tôi sẽ bỏ qua quá trình nén và thay vào đó giải thích giải nén.

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.

Sau khi giải nén, chuỗi nén 13 byte trông như thế này:

3131332333332111200122213333313321011121213133133133

Lưu ý rằng điều này sẽ thất bại nếu bất kỳ lần chạy 4 chữ số nào bắt đầu 0, vì các số 0 đứng đầu sẽ bị tắt khi s4chạy. Chúng tôi có thể khắc phục điều này bằng cách có 0đại diện #  , chỉ xuất hiện ba lần và không ai trong số đó rơi khi bắt đầu chạy 4 chữ số.

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

Được rồi, vì vậy để có được chuỗi 50 chữ số của chúng tôi nén độc đáo trong các khối 4, chúng tôi đã phải thêm hai chữ số phụ. Thêm chúng vào đầu chuỗi có nghĩa là chúng ta có thể cắt chúng ra bằng một lần ¤.

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

Xấu hổ thay, Japt thiếu một phần tử tích hợp để chia một chuỗi thành các lát có độ dài X. Tuy nhiên, nó có tích hợp sẵn để nhận mọi char thứ X, tuy nhiên, trước tiên chúng ta có thể lưu trữ tất cả dữ liệu bằng cách mã hóa tất cả các hàng trên cùng tất cả các hàng thứ hai, v.v.

Vì vậy, bây giờ chúng ta có chuỗi 5 chữ số mã hóa các chữ số chúng ta muốn tạo, ví dụ như 32223cho 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.

Để giải thích số ma thuật, hãy tham khảo lại bốn hàng riêng biệt. Nếu bạn thay thế #bằng 1 với 0, bạn nhận được

100
001
101
111

Chuyển đổi điều này và sau đó tham gia vào một chuỗi duy nhất cho chúng ta 101100010111. Chuyển đổi thành số thập phân và, voilà, bạn có 2839. Đảo ngược quá trình ánh xạ các chữ số 0123thành bốn hàng nhị phân được hiển thị ở trên.

Sắp xong! Bây giờ tất cả những gì còn lại phải làm là thêm vào khoảng trắng và chữ số:

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

Và uy tín, đầu ra ngầm chăm sóc phần còn lại. Tôi xin lỗi giải thích này quá dài, nhưng tôi không thấy bất kỳ cách thực sự nào để chơi golf mà không làm cho nó trở nên khó hiểu hơn (nếu có thể hiểu được ...)


9

JavaScript (ES6), 115 111 byte

Đưa đầu vào dưới dạng một chuỗi.

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)+`
`)

Làm thế nào nó hoạt động

Mã hóa mẫu

Bốn mẫu riêng biệt "XXX", "X..", "..X""X.X"có thể được nén dưới dạng "XXX...X.X"và trích xuất theo cách này:

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

Bằng cách thay thế chữ số đầu vào ncho "X"và sử dụng các khoảng trắng thực tế, điều này mang lại biểu thức:

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

Mã hóa chữ số

Sử dụng các định danh mẫu được xác định ở trên, mỗi chữ số có thể được biểu thị bằng số lượng 5 * 2 = 10 bit.

Ví dụ:

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

Danh sách đầy đủ là:

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

Tuy nhiên, chia các giá trị này cho 2 cho phép lưu hai byte. Vì vậy, thay vì chúng tôi lưu trữ:

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

Bản giới thiệu


6

Đồ dùng Bash + GNU, 114

  • Lưu 2 byte nhờ @SophiaLechner

Có thể có thêm một số cơ hội để nén ở đây, nhưng đây là một khởi đầu:

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/"

Giải trình

Mỗi hàng của mỗi chữ số là một trong bốn mẫu sau:

  x
x
x x
xxx

Bằng cách dán nhãn 0-3 này, mỗi chữ số có thể được biểu thị bằng 5 chữ số cơ bản-4. Ví dụ 0 sẽ là 32223, và danh sách đầy đủ các chữ số được mã hóa trong cơ sở 4 là 32223000003031330303223003130331323300003232332303. Điều này được mã hóa trong hex như EAC00CDF33AC373DEF00EEFB3.

  • dcchuyển đổi hex EAC00CDF33AC373DEF00EEFB3thành cơ sở-4.
  • fold đặt 5 chữ số cơ bản 4 trên mỗi dòng
  • sed:
    • xóa tất cả các dòng đầu vào ngoài số dòng n + 1 (dòng sed 1-index)
    • dịch các chữ số cơ bản 4 thành mẫu (của xes) cho mỗi dòng của chữ số đã cho, cùng với một dòng mới cho cuối mỗi hàng
    • phiên âm xes thành chữ số n.

Hãy thử trực tuyến .


1
Ý tưởng tốt! Lưu một vài byte bằng cách thay thế s/1/x \n/gbằng s/1/x\n/g, vì những khoảng trắng đó sẽ không ảnh hưởng trực quan đến đầu ra.
Sophia Lechner

5

MATL , 45 43 byte

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

Hãy thử trực tuyến!

Giải trình

'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

Võng mạc, 166 164 163 byte

Hai khoảng trắng trên dòng thứ ba từ dưới lên

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} $+¶

Hãy thử trực tuyến!

Phiên bản cải tiến của giải pháp @ Okx's


2

Pyth 82 85 91 100 byte

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

Có thể chơi golf rất nhiều, thử thách đầu tiên của tôi.


Chào mừng đến với PPCG!
Martin Ender

2

Batch File, 8 + 184 byte

Đây là giải pháp hàng loạt bắt buộc của tôi. Thật không may, phương pháp tiêu chuẩn để thực hiện điều này là hơn 300 byte theo lô, vì vậy chúng tôi sử dụng các chiến thuật rẻ hơn nhiều.

@type %1

Trong thư mục hiện tại, tôi có 10 tệp được thiết lập, được đặt tên từ 0 đến 9. Trong mỗi tệp này là lưới pixel 5x3 tương ứng. Ví dụ:

nhập mô tả hình ảnh ở đây

Số byte cho chúng là:

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

Vẫn đánh bại Java.


1

Ruby, 94 byte

->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]}}

Ungolfed trong chương trình thử nghiệm

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

PHP, 115 byte

for(;$i<5;)echo strtr(sprintf("%03b\n","1754"[[425,0,465,273,26,285,413,1,409,281][$argn]/4**$i++%4]),[" ",$argn]);

Hãy thử trực tuyến!

Mở rộng

for(;$i<5;)
  echo strtr(
    sprintf("%03b\n",  # make a binary
      "1754"[[425,0,465,273,26,285,413,1,409,281][$argn]/4**$i++%4])
    ,[" ",$argn]); # replace 0 with space and 1 with the input

Mã hóa Hãy thử trực tuyến!


1

Võng mạc , 125 byte

.
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]
  

Hãy thử trực tuyến! (Xóa bộ kiểm tra trong tiêu đề để kiểm tra các chữ số đầu vào riêng lẻ.) Dòng cuối cùng chứa hai khoảng trắng.


1

PowerShell, 126 120 113 109 101

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

Unicode rất vui Các ký tự cũng ngắn hơn số. Mã ở trên chứa U + 0000 hai lần, do đó không thể được sao chép trực tiếp (mặc dù hoạt động tốt trong một tệp). Các mã sau đây có thể được sao chép:

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

Chúng tôi mất ba byte vì chúng tôi cần chữ ký UTF-8 khi bắt đầu. Nếu không, chuỗi sẽ không hoạt động.


1

Võng mạc , 190 byte

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
  

Có hai khoảng trắng trên dòng cuối cùng nhưng SE không muốn hiển thị nó: / Đã sửa !

Hãy thử trực tuyến!


Tôi có cảm giác có một cách để kết hợp việc thay thế lặp đi lặp lại avới ba chữ số và một dòng mới. (Có thể sử dụng lookahead?)
nghiện toán học

@mathjunkie Yeah: /
Okx



1

PowerShell , 159 135 128 118 byte

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

Câu trả lời hiện tại: loại bỏ việc đặt tên biến

Hãy thử trực tuyến!

Tôi sẽ phải xem liệu tôi có thể nhận được một số mẹo từ các câu trả lời khác không: P

EDIT Trở nên thông minh hơn với việc gọi chuỗi mega

EDIT2 Chuyển sang sử dụng một chuỗi số để lập chỉ mục $ađể lưu 7 byte. Mặc dù tôi thích các cuộc gọi tên biến động trước đây của mình trong đoạn mã dưới đây (135 byte)

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

0

Than , 61 38 byte

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

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Lưu ý: Không gian lưu trữ. Giải trình:

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

Chia chuỗi (đã nén) thành các nhóm 5, lấy chuỗi ở chỉ số được đưa ra bởi đầu vào và ánh xạ qua các ký tự trong nhóm (luôn luôn là 1, 4, 5 hoặc 7).

⭆421⎇&IιIλθ 

Chuyển đổi ký tự từ cơ sở 10 thành 3 chữ số cơ sở 2 bằng cách sử dụng ký tự đầu vào và khoảng trắng làm chữ số. 5 kết quả sau đó được in ngầm trên các dòng riêng biệt.

Một cổng chung hơi nhàm chán, vì vậy đây là câu trả lời 61 byte đơn giản hơn:

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

Hãy thử trực tuyến! Không có phiên bản dài dòng vì deverbosifier không hiểu danh sách các hướng hoặc thậm chí đa hướng trong các đa giác thông thường. Giải trình:

     ⟦...⟧      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

Mỗi đường dẫn được chỉ định bằng cách sử dụng danh sách chỉ đường ( ←↑→↓). Bốn phím tắt có thể sử dụng lưu byte: Lđại diện ↑→, ¬đại diện ↓←, Tđại diện →↓←trong khi +đại diện →↓←↑, mặc dù ít nhất một mũi tên phải còn lại để danh sách được nhận dạng dưới dạng danh sách hướng (ví dụ: TTkhông thể sử dụng ví dụ 3).




0

Python 3 , 119 byte

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]],)

Hãy thử trực tuyến!

Mỗi 'pixel' được biểu diễn dưới dạng một số nguyên trong đó mỗi lũy thừa của hai cho biết pixel đó có ở trạng thái rắn không. Điều này lợi dụng thực tế là ba góc bên phải luôn là chữ số.


-1

JavaScript (ES8), 87 byte

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
Đây chính xác là câu trả lời giống như JavaScript của @Neil vào ngày 27 tháng 4 .. Nếu bạn có điều gì đó anh ấy có thể cải thiện, bạn nên nhận xét câu trả lời của anh ấy thay vì đăng một câu hỏi mới giống như vậy (EDIT: Và vâng, tôi nhận ra bạn chưa đủ danh tiếng để bình luận ..)
Kevin Cruijssen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.