nをnとともに表示する


18

私が欲しいもの:

簡単に言うと、入力を求めるテキストベースのディスプレイが必要でn、その値をディスプレイに表示します。しかし、キャッチがあります。「true」「pixels」(塗りつぶされたもの)のそれぞれは、その番号で表される必要がありnます

例:

入力が与えられますn。あなたはn1桁になると仮定することができます

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
私はそれがだめだとは思わない。質問は非常に似ていますが、文字セット(0〜9)を減らすと、まったく異なる答えになると思います。
デジタル外傷

回答:


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でバイト1 GO!以前にSOGLを使用したことはありませんが、オンラインテスターを使用しましたが、動作します!
VortexYT

数値形状データは実際には17バイトのみで(そこに失われた6バイトは長さデータであり、それは ``とである-)、残りは簡単です。興味がありますが、どのオンラインテスターを使用しましたか?私は作ったり見たりしていません。
-dzaima

ああ、上のSOGLをクリックしてください!1MBか何かのようなものをダウンロードする必要があります。すぐに削除しました。:/
VortexYT

どうやってやったの?
VortexYT

ああすごい!おめでとうございます!たくさんのファイルが入っているようです。多分それを少し分離する
-VortexYT

13

JavaScript(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>

1、4、および7では使用されず、146 =2¹+2⁴+2⁷であるため、左下隅の値は146です。


11

05AB1E40 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

ジャプト、43バイト

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

いくつかの印刷できないものが含まれています。オンラインでお試しください!

タリー:13バイトの圧縮データ、9バイトの圧縮解除データ、21バイトの出力形式。

説明

未ゴルフコード:

"Ýûÿ©ÿß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

4桁の実行のいずれかがで始まる場合、これは失敗することに注意してください。実行0時に先行ゼロが省略されるs4ためです。これを修正するに0#  、represent を使用します。これは、3回しか表示されず、4桁の実行の開始時に該当するものはありません。

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

さて、50桁の文字列を4つのチャンクでうまく圧縮するには、2桁追加する必要がありました。文字列の先頭に追加すると、one-byterでそれらを切り取ることができ¤ます。

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

恥ずかしいことに、Japtには文字列を長さXのスライスに分割するための組み込み機能がありません。ただし、X番目のすべての文字を取得するための組み込み機能があります。すべての2行目など。

だから今我々は、例えばを作成したい桁エンコード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.

マジックナンバーについて説明するには、4つの異なる行を参照してください。あなたが交換した場合#1して 0、あなたが得ます

100
001
101
111

これを転置してから単一の文字列に結合すると、が得られ101100010111ます。10進数に変換すると、2839になります。プロセスを逆にすると、数字がマッピングされます0123上記の4つのバイナリ行にがされます。

ほぼ完了しました!あとは、スペースと数字を追加するだけです。

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

そして、残りは暗黙の出力で処理されます。この説明が長すぎて申し訳ありませんが、ゴルフを理解しにくくすることなくゴルフをする本当の方法はありません(理解できる場合は...)


9

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

使い方

パターンエンコーディング

4つの異なるパターンが"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

Bash + GNU utils、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/"

説明

すべての数字の各行は、次の4つのパターンのいずれかです。

  x
x
x x
xxx

これらの0〜3にラベルを付けることにより、各桁を5桁の4桁で表すことができます。例えば、0はとなり32223、数字の完全なリストはとしてbase-4にエンコードされ32223000003031330303223003130331323300003232332303ます。これは16進数でとしてエンコードされEAC00CDF33AC373DEF00EEFB3ます。

  • dc16進数EAC00CDF33AC373DEF00EEFB3を基数4に変換します。
  • fold 各行に4桁を5桁入れます
  • sed
    • 行番号n + 1(sed 1-indexes行)を除くすべての入力行を削除します
    • x各行の終わりの改行とともに、指定された数字の各行の基数4桁を(esの)パターンに変換します
    • xesを数字nに音訳します。

オンラインでお試しください


1
良いアイデア!これらのスペースは視覚的に出力に影響を与えないため、に置き換えs/1/x \n/gて数バイト節約しますs/1/x\n/g
ソフィア・レヒナー

5

MATL45 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バイト

下から3行目の2つのスペース

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

バッチファイル、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

まだJavaに勝っています。


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]
  

オンラインでお試しください!(ヘッダーのテストスイートを削除して、個々の入力数字をテストします。)最後の行には2つのスペースが含まれています。


1

PowerShellの、126 120 113 109 101

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

Unicodeは楽しいです。文字は数字よりもずっと短いです。上記のコードにはU + 0000が2回含まれているため、直接コピーすることはできません(ただし、ファイルで正常に動作します)。次のコードをコピーできます。

$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
  

最後の行には2つのスペースがありますが、SEはそれをレンダリングしたくありません:/修正済み!

オンラインでお試しください!


繰り返しの置換aを3桁と改行で組み合わせる方法があると感じています。(先読みを使用している可能性がありますか?)
数学中毒

@mathjunkieうん:/
Okx



1

PowerShellの159の 135 128 118バイト

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

現在の回答:無関係な変数の命名を削除

オンラインでお試しください!

私は他の答えからいくつかのトリックを得ることができるかどうかを確認する必要があります:P

編集メガ文字列を呼び出して賢くする

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³θ

オンラインでお試しください!deverbosifierは通常のポリゴン内の方向のリストや多方向性さえも理解しないため、冗長バージョンはありません。説明:

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

各パスは、方向のリスト(←↑→↓)を使用して指定されます。バイト保存四の使用可能なショートカット:L表し↑→¬表し↓←T表し→↓←ながら+表す→↓←↑少なくとも一つの矢印は方向リストとして認識されるリストは維持しなければならないが(そのため、例えば、TT使用することはできません3)。




0

Python 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の各累乗はピクセルがソリッドかどうかを示します。これは、3つの右隅が常に数字であるという事実を利用しています。


-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の回答まったく同じ答えです。改善できるものがある場合は、同じものを投稿するのではなく、彼の答えにコメントする必要があります(編集:はい、わかりますあなたはまだコメントするのに十分な評判を持っていません。)
ケビンCruijssen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.