Anzeige von n mit n


18

Was ich möchte:

Ganz einfach, ich möchte ein textbasiertes Display, das nach einer Eingabe fragt nund dann diesen Wert auf dem Display anzeigt! Aber da ist ein Fang. Jedes der 'wahren' 'Pixel' (die ausgefüllten) muss durch diese Zahl dargestellt werden n.

Beispiel

Sie erhalten eine Eingabe n. Sie können davon ausgehen, dass nes sich um eine einzelne Ziffer handelt

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

Herausforderung:

Machen Sie das in so wenigen Bytes wie möglich.

Ich akzeptiere nur Antworten, die alle Anforderungen erfüllen.

Das Umgeben von Leerzeichen ist optional, solange die Ziffer richtig angezeigt wird.

Außerdem ist <75 Byte eine Abstimmung von mir, die niedrigste Annahme, aber ich könnte die akzeptierte Antwort immer ändern, also lassen Sie sich nicht entmutigen, zu antworten.



Dies ist sicherlich ein Duplikat. Es ist auf jeden Fall ganz in der Nähe dieses
Shaggy


2
Ich glaube nicht, dass es ein Trottel ist. Die Fragen sind sich sehr ähnlich, aber ich denke, dass der reduzierte Satz von Zeichen (0-9) für einige ganz andere Antworten sorgt.
Digital Trauma

Antworten:


8

SOGL V0.12 , 30 Bytes

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

Probieren Sie es hier aus! Die komprimierte Zeichenfolge ■'τč▲Β►║⁰ΡāQšJ┘tXdnοO¹‘ist

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

Das sind (beginnend mit 1, endend mit 0) die Zahlen, Zeile für Zeile, Nummer für Nummer. Der Rest

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

Ich bin beeindruckt, wie Sie es in 35 Bytes auf einmal geschafft haben ! Obwohl ich SOGL noch nie benutzt habe, habe ich einen Online-Tester benutzt und es funktioniert!
VortexYT

Die Zahlenformdaten sind wirklich nur 17 Bytes (die 6 Bytes, die dort verloren gehen, sind Längendaten und das ist `` und -), und der Rest ist einfach. Ich bin gespannt, welchen Online-Tester hast du benutzt? Ich habe noch keine gemacht oder gesehen.
Dzaima

Oh, klicken Sie einfach oben auf die SOGL! Sie müssen so etwas wie 1 MB oder so etwas herunterladen. Ich habe es sofort gelöscht. : /
VortexYT

Wie hast du es gemacht?
VortexYT

Oh wow! Glückwunsch! Sie scheinen viele Dateien darin zu haben. Vielleicht ein bisschen
trennen

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>

Die Zahlen kodieren, welche Quadrate Leerzeichen für eine bestimmte Ziffer enthalten, z. B. hat die linke untere Ecke den Wert 146, da die Zahlen 1, 4 und 7 ihn nicht verwenden und 146 = 2¹ + 2⁴ + 2⁷.


11

05AB1E , 40 39 38 Bytes

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

Probieren Sie es online!

Erläuterung

•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 Bytes

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

Enthält einige nicht druckbare Elemente. Probieren Sie es online!

Tallies: 13 Byte komprimierte Daten, 9 Byte zum Dekomprimieren und 21 Byte zum Bilden der Ausgabe.

Erläuterung

Ungolfed-Code:

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

Es gibt genau 4 verschiedene Zeilenmöglichkeiten: (steht #für eine Ziffer)

#  
  #
# #
###

Somit kann jede Nummer als ein Satz von fünf Basis-4-Ziffern gespeichert werden. Da jede Nummer dann in 10 Bit gespeichert werden kann, beträgt die Summe 100 Bit, was 13 Byte entspricht. Ich überspringe den Komprimierungsprozess und erkläre stattdessen die Dekomprimierung.

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.

Nach der Dekomprimierung sieht die 13-Byte-komprimierte Zeichenfolge folgendermaßen aus:

3131332333332111200122213333313321011121213133133133

Beachten Sie, dass dies fehlschlagen würde, wenn einer der vierstelligen Läufe mit gestartet würde 0, da die führenden Nullen beim s4Ausführen weggelassen würden . Wir können dies beheben, indem wir 0repräsentieren lassen #  , was nur dreimal vorkommt und keines davon zu Beginn eines 4-stelligen Laufs fällt.

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

Okay, damit unsere 50-stellige Zeichenfolge in 4er-Blöcken komprimiert wird, mussten wir zwei zusätzliche Ziffern hinzufügen. Wenn Sie sie am Anfang der Zeichenfolge einfügen, können Sie sie mit dem Ein-Byte-Befehl abtrennen ¤.

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

Peinlicherweise verfügt Japt nicht über eine integrierte Funktion zum Aufteilen eines Strings in Segmente der Länge X. Es ist jedoch eine integrierte Funktion zum Abrufen jedes x-ten Zeichens vorhanden, sodass alle Daten gespeichert werden können, indem zuerst alle oberen Zeilen codiert werden alle zweiten Reihen usw.

Jetzt haben wir also die 5-stellige Zeichenfolge, die die zu erstellende Ziffer codiert, z . B. 32223für 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.

Um die magische Zahl zu erklären, beziehen Sie sich auf die vier verschiedenen Zeilen. Wenn Sie #mit 1und  mit ersetzen 0, erhalten Sie

100
001
101
111

Wenn wir dies transponieren und dann zu einer einzelnen Zeichenfolge zusammenfügen, erhalten wir 101100010111. In Dezimalzahl konvertieren und voilà, Sie haben 2839. Beim Umkehren des Prozesses werden die Ziffern 0123in die vier oben gezeigten Binärzeilen abgebildet.

Fast fertig! Jetzt müssen nur noch die Leerzeichen und Ziffern hinzugefügt werden:

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

Um den Rest kümmert sich die implizite Ausgabe. Es tut mir leid, diese Erklärung ist so lang, aber ich sehe keinen wirklichen Weg, um Golf zu spielen, ohne es weniger verständlich zu machen (wenn es verständlich ist ...)


9

JavaScript (ES6), 115 111 Byte

Übernimmt die Eingabe als Zeichenfolge.

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

Wie es funktioniert

Musterkodierung

Die vier unterschiedlichen Mustern "XXX", "X..", "..X"und "X.X"kann als komprimiert werden "XXX...X.X"und auf diese Weise extrahiert:

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

Durch Ersetzen der Eingabeziffer ndurch "X"und Verwenden von tatsächlichen Leerzeichen erhält man den Ausdruck:

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

Ziffernkodierung

Unter Verwendung der oben definierten Musterkennungen kann jede Ziffer durch eine 5 * 2 = 10-Bit-Menge dargestellt werden.

Zum Beispiel:

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

Die vollständige Liste ist:

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

Durch Teilen dieser Werte durch 2 können jedoch zwei Bytes gespart werden. Also speichern wir stattdessen:

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

Demo


6

Bash + GNU-Utils, 114

  • 2 Bytes gespart dank @SophiaLechner

Hier gibt es wahrscheinlich noch einige weitere Komprimierungsmöglichkeiten, aber hier ist ein Anfang:

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

Erläuterung

Jede Reihe jeder Ziffer ist eines dieser vier Muster:

  x
x
x x
xxx

Durch Beschriften dieser 0-3 kann jede Ziffer durch 5 Basis-4-Ziffern dargestellt werden. ZB wäre 0 32223, und die vollständige Liste der Ziffern wird in Basis 4 als codiert 32223000003031330303223003130331323300003232332303. Dies ist hexadezimal codiert als EAC00CDF33AC373DEF00EEFB3.

  • dcwandelt hex EAC00CDF33AC373DEF00EEFB3in base-4 um.
  • fold Setzt 5 Base-4-Ziffern in jede Zeile
  • sed:
    • löscht alle Eingabezeilen bis auf die Zeilennummer n + 1 (sed 1-indexes lines)
    • Übersetzt die Basis-4-Ziffern in das Muster (von xes) für jede Zeile der angegebenen Ziffer, zusammen mit einer neuen Zeile für das Ende jeder Zeile
    • transliteriert die xes zu Ziffer n.

Probieren Sie es online aus .


1
Gute Idee! Speicher ein paar Bytes durch den Ersatz s/1/x \n/gmit s/1/x\n/g, da diese Räume nicht visuell den Ausgang beeinflussen.
Sophia Lechner

5

MATL , 45 43 Bytes

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

Probieren Sie es online!

Erläuterung

'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

Retina, 166 164 163 Bytes

Zwei Leerzeichen in der dritten Zeile von unten

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

Probieren Sie es online!

Eine verbesserte Version der @ Okx- Lösung


2

Pyth 82 85 91 100 Bytes

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

Viel Golfen wahrscheinlich möglich, meine erste Herausforderung.


Willkommen bei PPCG!
Martin Ender

2

Batch-Datei, 8 + 184 Bytes

Hier ist meine obligatorische Batch-Lösung. Leider ist die Standardmethode, um dies zu erreichen, mehr als 300 Bytes im Batch, so dass wir auf viel billigere Taktiken zurückgreifen.

@type %1

Im aktuellen Verzeichnis habe ich 10 Dateien eingerichtet, die von 0 bis 9 benannt sind. In jeder dieser Dateien befindet sich das jeweilige 5x3-Pixelraster. Beispielsweise:

Bildbeschreibung hier eingeben

Die Anzahl der Bytes für diese sind:

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

Schlage immer noch Java.


1

Ruby, 94 Bytes

->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 im Testprogramm

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 Bytes

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

Probieren Sie es online!

Erweitert

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

Kodierung Probieren Sie es online!


1

Netzhaut , 125 Bytes

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

Probieren Sie es online! (Löschen Sie die Testsuite in der Kopfzeile, um einzelne Eingabestellen zu testen.) Die letzte Zeile enthält zwei Leerzeichen.


1

PowerShell, 126 120 113 109 101

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

Unicode macht Spaß. Zeichen sind auch viel kürzer als Zahlen. Der obige Code enthält zweimal U + 0000 und kann daher nicht direkt kopiert werden (funktioniert jedoch in einer Datei einwandfrei). Der folgende Code kann kopiert werden:

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

Wir verlieren drei Bytes, weil wir zu Beginn die UTF-8-Signatur benötigen. Andernfalls funktioniert die Zeichenfolge nicht.


1

Netzhaut , 190 Bytes

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
  

Es gibt zwei Leerzeichen in der letzten Zeile, aber SE möchte es nicht rendern: / Fixed!

Probieren Sie es online!


Ich habe das Gefühl, es gibt eine Möglichkeit, das wiederholte Ersetzen amit drei Ziffern und einer Zeilenumbruch zu kombinieren. (Vielleicht mit Lookaheads?)
Math Junkie

@ Mathjunkie Yeah: /
Okx

1

Java 8, 278 214 210 204 Bytes

n->("A"+n+"\nB"+n+"\nC"+n+"\nD"+n+"\nE"+n).replaceAll("([ACE][235689]|A0|E0|C4|A7)(?<=(.))","$2$2$2").replaceAll("(B[0489]|D[068]|A4|C0)(?<=(.))","$2 $2").replaceAll("D2|B5|B6",n).replaceAll("[A-E]","  ")

Port of @Neils Retina Antwort . Nimmt die Eingabe als String.

Probieren Sie es hier aus.



1

PowerShell , 159 135 128 118 Byte

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

Aktuelle Antwort: Benennung von Fremdvariablen entfernt

Probieren Sie es online!

Ich werde sehen müssen, ob ich aus den anderen Antworten ein paar Tricks herausholen kann: P

EDIT Mit dem Mega-String schlauer werden

EDIT2 Umschalten auf die Verwendung einer Zahlenfolge zum Indizieren $a, um 7 Bytes zu sparen. Obwohl mir meine vorherigen dynamischen Variablennamenaufrufe im folgenden Code (135 Byte) gefallen haben

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

0

Kohle , 61 38 Bytes

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

Probieren Sie es online! Link ist eine ausführliche Version des Codes. Hinweis: Leerzeichen am Ende. Erläuterung:

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

Teilen Sie die (komprimierte) Zeichenfolge in 5er-Gruppen auf, nehmen Sie die Zeichenfolge am durch die Eingabe angegebenen Index und ordnen Sie sie den Zeichen in der Gruppe zu (die immer 1, 4, 5 oder 7 sind).

⭆421⎇&IιIλθ 

Konvertieren Sie das Zeichen von der Basis 10 in die dreistellige Basis 2, indem Sie das eingegebene Zeichen und das Leerzeichen als Ziffern verwenden. Die 5 Ergebnisse werden dann implizit in separaten Zeilen gedruckt.

Ein generischer Port ist etwas langweilig, daher hier eine idiomatischere 61-Byte-Antwort:

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

Probieren Sie es online! Keine ausführliche Version, da der Deverbosifier keine Richtungslisten oder gar Multidirektionalitäten in gewöhnlichen Polygonen versteht. Erläuterung:

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

Jeder Pfad wird mithilfe einer Liste von Richtungen ( ←↑→↓) angegeben. Vier verwendbare Verknüpfungen speichern Bytes: LRepräsentiert ↑→, ¬Repräsentiert ↓←, TRepräsentiert, →↓←während +Repräsentiert →↓←↑, obwohl mindestens ein Pfeil übrig bleiben muss, damit die Liste als Richtungsliste erkannt wird (also zum Beispiel TTnicht verwendet werden kann 3).




0

Python 3 , 119 Bytes

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

Probieren Sie es online!

Jedes 'Pixel' wird als Ganzzahl dargestellt, wobei jede Zweierpotenz angibt, ob das Pixel einfarbig ist. Dies nutzt die Tatsache aus, dass die drei rechten Ecken immer die Ziffer sind.


-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
Dies ist genau die gleiche Antwort wie @Neils JavaScript-Antwort vom 27. April. Wenn Sie etwas haben, das er verbessern kann, sollten Sie zu seiner Antwort einen Kommentar abgeben , anstatt eine neue zu posten , die gleich ist (EDIT: Und ja, das ist mir klar Sie haben noch nicht genug Ruf, um einen Kommentar
abzugeben
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.