Zeigen Sie die 12 Zahlen auf einem Ziffernblatt genau so an:
12
11 1
10 2
9 3
8 4
7 5
6
Um das Raster besser zu sehen, ist hier eines mit Punkten:
...........12............
.....11...........1......
.........................
.10...................2..
.........................
.........................
9.......................3
.........................
.........................
..8...................4..
.........................
......7...........5......
............6............
Beachten Sie, dass das Gitter um den Faktor zwei in der Breite gestreckt ist, damit es quadratischer aussieht.
Beachten Sie auch, dass zweistellige Zahlen an der richtigen Stelle ausgerichtet sind. Die 9-stellige sollte linksbündig sein.
Gibt das Ergebnis als mehrzeilige Zeichenfolge zurück oder druckt es aus (keine Zeilenliste). Alle nachfolgenden Leerzeichen sind optional. Der letzte Zeilenumbruch ist ebenfalls optional.
charCodeAt()
05AB1E ,
393331 BytesDanke an Magic Octopus Urn für das Speichern von 6 Bytes!
Code
Einige 33-Byte-Alternativen:
Verwendet die 05AB1E- Codierung . Probieren Sie es online!
quelle
ÿ
mit.V
, sehr originell! Und komisch, wie Sie es gewohnt12¤
sind, beides12
und2
auf den Stapel zu bekommen . Ich hätte wahrscheinlich nur benutzt12Y
, aber ich denke, wie irrelevant ist, da beide 12 und 2 auf dem Stapel haben. Wenn ich diese Herausforderung in 05AB1E ausprobiert hätte, wäre ich viel höher in der Byte-Anzahl gelandet. Ich schätze, ich muss noch viel lernen. ;)Y
. Das wäre eine einfachere Option gewesen, hahaha.6xsŸ5L•δ;Ì’•2ôúð.ø‚ζJ012∞S¶×‚ζJ.c
korrigiere.6xŠ»
auch mit, daran hätte ich nie gedacht.6502 Maschinencode (C64),
827673 Bytes1
Ziffern nicht speziell zu behandelnDie Idee hier ist, nur die Ziffern aller Zahlen in der Reihenfolge zu speichern, in der sie benötigt werden. Zusätzliche Informationen sind die Anzahl der Zeilenvorschübe und die Anzahl der vorangestellten Leerzeichen.
Die maximale Anzahl von Zeilenumbrüchen ist
3
2 Bit, und die maximale Anzahl von Leerzeichen ist23
5 Bit. Daher können wir diese Informationen für jede zu druckende Ziffer in einem einzigen "Steuerbyte" zusammenfassen.Die Daten für diese Lösung benötigen also genau 30 Bytes: 15 einzelne Ziffern und 15 zugeordnete "Steuerbytes".
Online-Demo
Verwendung: um
SYS49152
zu beginnen.Kommentierte Demontage :
quelle
JSR $FFD2 / DEY / BNE loop / LDA .control,X / RTS
das sowohl für Zeilenumbrüche als auch für Leerzeichen aufgerufen wird , 2 Byte einsparen? Ich denke, es wäre +10 Bytes lang und spart -12 Bytes im Hauptcode.JSR $FFD2 / DEY / BPL loop / LDA .control,X / RTS
und der Einstiegspunkt der istDEY
. Auf diese Weise müssen Sie den Hauptcode nicht testen0
.DEY / BPL / RTS
wird sofort ohne Verarbeitung beendetJSR $FFD2
. (Beachten Sie, dass bei diesem Schema der Einstiegspunkt der Unterroutine sein mussDEY
.)Perl 6 ,
7674 BytesProbieren Sie es online!
Die Antwort von Port of Arnauld, bis ich mir etwas kürzeres einfallen lassen kann.
quelle
R ,
7568 BytesProbieren Sie es online!
Komprimiert die Ziffernpositionen. Haben Sie dies getan, nachdem Sie viel Zeit damit verbracht haben, eine trigonometrische Antwort zu finden (siehe Änderungsverlauf).
Inspiriert von dieser anderen Antwort von R buy J.Doe - upvote it!
7 Bytes gespart dank J.Doe.
quelle
write
Aufruf, um das Standardtrennzeichen zu verwenden.HTML + JavaScript (Canvas), 13 + 161 = 174 Byte
Die willkürliche Canvas-Positionierung verwendet 6 Bytes.
Mit Gitter zum Vergleich:
Erklärung der Positionierungsformel
Siehe mein JavaScript mit SVG-Antwort .
quelle
Java
811,141138 BytesProbieren Sie es online aus (HINWEIS:
String.repeat(int)
wird emuliert alsrepeat(String,int)
für die gleiche Anzahl von Bytes , da Java 11 noch nicht auf TIO läuft.)Die Erklärung ist ähnlich wie unten, wird jedoch
" ".repeat(x-48)
für die Leerzeichen anstelle des Formats mit verwendet"%"+(x-48)+"s"
.Java 8, 141 Bytes
Probieren Sie es online aus.
Erläuterung:
Weitere Erklärung
92BCN5BB92BNN1BA991CNNNJ995DNNN2I991ENN6H92FN93G
:92
.)quelle
R,
168159125 BytesDie naive Lösung, die Zahlen an den vorgegebenen Stellen in eine Textmatrix zu schreiben. Punkte werden als UTF-8-Buchstaben gespeichert, die mit dekodiert wurden
utf8ToInt
9 Bytes mit dem Vorschlag von JayCe entfernt
write
, die Matrix zu verwenden und zu vermeiden.Weitere 34 Bytes mit JayCes Speicherempfehlung gelöscht.
quelle
m
und verwendenwrite
: TIO . PS: Sie sind nicht verpflichtet, einen TIO-Link in Ihre Antwort aufzunehmen, aber er formatiert die Antwort gut für Sie. Siehe Link-Symbol oben auf der TIO-Seite.!
Operator überladen , um 125 Zeichen zu erhalten . Wirklich schöne Lösung!Haskell,
8887 BytesDie Methode zum Codieren von Leerzeichen als Buchstaben (erstmals in der Antwort von @ Arnauld zu sehen ) in Haskell. Die Verwendung
{
und Erweiterung auf\n
1 Byte ist kürzer als die\n
direkte Verwendung .Probieren Sie es online!
quelle
Rust , 96 Bytes
Probieren Sie es online!
quelle
Brainfuck ,
240235 BytesProbieren Sie es online!
Kommentierter Code
Ein seltenes Beispiel, bei dem sich der Text so oft wiederholt, dass das Brainfuck-Programm weniger als
zweimal ausgeführt wirdoft 1,6-fachen Länge der Ausgabe beträgt!2 Bytes gespart durch Vorschlag von Jo King:
>>>>>>-
->[<]>-
Durch Verschieben des dritten 20-stelligen Abwärtszählers von ganz rechts neben den ASCII-Codes
10 30 50
nach unmittelbar links von ihnen werden 3 Bytes gespart . Speichert,<<>>
wenn die Lücke zwischen8
und gefüllt wird4
, fügt der Zeile jedoch 1 Byte hinzu>>>++
.Originalfassung
quelle
Python 2 , 97 Bytes
Probieren Sie es online!
Berechnet alle Abstände und Zeilenumbrüche in der Schleife
quelle
Gelee , 32 Bytes
Ein vollständiges Programm, das das Ergebnis druckt.
Probieren Sie es online!
Wie?
(Ich habe noch nicht an etwas gedacht / gefunden, was
“¿×¿ Œ4ç4Œ!¿Ø‘
mir für diesen Teil lang erscheint - Prellen / Basis-Dekomprimieren / Inkrementieren, nichts scheint zu retten!)quelle
C (gcc) ,
145137125 BytesNur die Tabulatorpositionen sind fest codiert: Alle Zeilenabstände und Taktwerte werden in der Schleife generiert.
Nochmals vielen Dank an ceilingcat für die Vorschläge.
Probieren Sie es online!
quelle
"\r\7\3"[j]
stattdessen vor"NHDA"[j]-65
PHP , 97 Bytes
Probieren Sie es online!
Dies ist eine hartcodierte komprimierte Zeichenfolge. Ich konnte keine kürzere Lösung finden!
quelle
file_put_contents($path, '<?=gzinflate("'.gzdeflate($clockString,9).'");');
, aber ich bin nicht sicher, wie ich einen Code mit Binärdaten darin posten soll. Eine solche Datei hat 70 Bytes.Pyke , 37 Bytes
Probieren Sie es hier aus! (Rohbytes)
Probieren Sie es hier aus! (Für Menschen lesbar)
quelle
Brainfuck ,
315313 Bytes2 bytes gespart dank ovs !
Probieren Sie es online!
Alles in einem Codeblock:
quelle
++++[>++++<-]>
für die 16 am Anfang verwenden.><
in Ihrem CodePowershell,
948882 BytesDirekter Powershell-Format-Operator .
{i,w}
Bedeutet einen Platzhalter für einen Parameter mit Indexi
. Die Breite des Platzhalters istw
rechtsbündig.Powershell, 88 Bytes
Port of Arnauld's Javascript Antwort
-6 Bytes dank @AdmBorkBork
Verwenden Sie
'.'
stattdessen , um das Raster besser zu sehen' '
.quelle
.PadLeft
für 88 Bytes statt für String-Multiplikation online testen!-f
. Warum fügst du keine Links zu Try it online hinzu? Damit andere sehen können, wie Ihr Code funktioniert?This site can’t be reached
. Es tut uns leid.C (GCC) ,
125109105 Bytessizeof(wchar_t) == sizeof(int)
wird ) - unter Windows nicht funktioniert :) Vielen Dank an ErikF für die Idee.Probieren Sie es online!
Dies ist ein Port meine allgemeinen Idee von der 6502 - Lösung auf C. Es ist ein wenig geändert: Anstatt eine Flag für eine Leitung von mit
1
, wird das Zeichen als Dezimalzahl gedruckt von 48 subtrahiert, so 10 - 12 codiert sind , als:
zu<
.quelle
Attache , 69 Bytes
Probieren Sie es online!
Dies kodiert jede Reihe von Leerzeichen als
NTS[count of spaces]
:;NTS
ist die integrierte Funktion "Numerisch zu Kurz", mit der Zahlen als Zeichenfolgen ausgedrückt werden können. ZBNTS[95] = $R1
undNTS[170297] = $XQO
.STN
ist das Gegenteil von diesem eingebauten.Diese Antwort ersetzt (
ReplaceF
) alle Vorkommen von Buchstaben (/\l/
) in der Eingabe mit dem Ergebnis der Funktionsp&`*@STN
, die den Buchstaben zuerst dekodiert und dann sosp
oft (ein Leerzeichen) wiederholt .quelle
Swift ,
178165 Bytesvar b="";for c in"L12nF11L1nnB10T2nnn9X3nnnC8T4nnG7L5nM6"{let i=c.unicodeScalars.first!.value;if c=="n"{b+="\n"}else if i>64{for _ in 0..<(i-65){b+=" "}}else{b+="(c)"}};print(b)
Basierend auf dem, was Downgoat gepostet hat, habe ich dies auf 165 Bytes reduziert:
print("L12nF11L1nnB10T2nnn9X3nnnC8T4nnG7L5nM6".unicodeScalars.map{let x=Int($0.value);return x==110 ?"\n":(x>64 ?String(repeating:" ",count:x-65):"($0)")}.joined())
Erweitert, mit
$0
in eine benannte Variable konvertiert:print("L12nF11L1nnB10T2nnn9X3nnnC8T4nnG7L5nM6".unicodeScalars.map { c in let x = Int(c.value) return x == 110 ? "\n" : (x>64 ? String(repeating:" ", count: x-65) : "(c)") }.joined())
Die Eingabezeichenfolge wird wie folgt codiert: Großbuchstaben (
A-Z
) stehen für um 65 versetzte Leerzeichenblöcke. BedeutetA
also 0 Leerzeichen,B
bedeutet 1 Leerzeichen, die ersteL
bedeutet 11 Leerzeichen usw.n
s werden in Zeilenumbrüche konvertiert. Alle anderen Zeichen werden unverändert gedruckt.Führe es hier online aus (danke, mbomb007)
quelle
{"L12NF11L1NNB10T2NNN9X3NNNC8T4NNG7L5NM6".unicodeScalars.map({(c)->String in let x=c.value;return x==78 ? "\n" : x>64 ?String(repeating:" ",count:x-65) : "\(c)"}).joined()}
(Swift 3 (-swift-version 3
auf Repl), weil Swift 4 Subtraktion es aussieht)Pure Bash , 123
printf
macht das schwere heben hier:Probieren Sie es online!
quelle
Rot , 151 Bytes
Probieren Sie es online!
quelle
JavaScript mit SVG, 188 Bytes
Eine willkürliche Zeilenhöhe von 120% verwendet 4 Bytes.
Mit Gitter zum Vergleich:
Erklärung der Positionierungsformel
Lassen
f(x) = round(sin(x * π/6) * 6)
.Unter der Annahme, dass der Ursprung die Mitte der Uhr ist, sind die Gitterkoordinaten der am weitesten rechts stehenden Stelle einer bestimmten Uhrennummer
x
[f(x) * 2
,f(9 - x)
].quelle
Bash, 225 Bytes
Ärgerlicherweise ist dies länger als die naive Lösung, jede Zeile in einer Schleife auszudrucken (132 Zeichen, wenn Tabstopps verwendet werden).
quelle
tr -d \<space>
(wo<space>
ist das Leerzeichen) anstelle der sed-Substitution funktionieren?tr -d\
wäre gleichbedeutend mitsed 's/ //g'
Python 3 ,
1128887 BytesEine Lösung mit String-Interpolation.
Probieren Sie es online!
-25 Bytes dank ovs und Herman L.
quelle
{11:7}
.C (gcc) ,
135123110 BytesDieser verwendet eine einfache Codierung , wo jeder
c
zwischen'a'
und'z'
stelltc-'a'+1
wiederholt Räume,'`'
eine neue Zeile darstellt und alle anderen Zeichen unverändert bleiben.Probieren Sie es online!
quelle
*s=L"...";f(i){
stattdessen vorf(i){char*s="...";
T-SQL, 132 Bytes
Nur 12 Bytes kürzer als die einfache Lösung (
PRINT
der gesamten Zeichenfolge wie sie ist).Ich habe eine Variation gefunden, die viel länger ist (
235226 Bytes), aber viel mehr wie SQL:STRING_SPLIT
Bricht es an den Kommas in Zeilen auf undPARSENAME
teilt jede Zeile an den Punkten auf. Die Felder 1 und 3 geben an, wie viele Stellen gedruckt werden sollen, die Felder 2 und 4 geben an, was angezeigt werden soll.(Zeilenumbrüche dienen nur der Lesbarkeit)
quelle
Perl 6 , 116 Bytes
Probieren Sie es online!
(Ta @JoKing zum Speichern von 26 Bytes)
Perl 6 , 142 Bytes
Probieren Sie es online!
Ich wollte etwas anderes machen. Also berechnet dieser die Positionen aller Ziffern über Zeichenpaare, entfernt den Anfangsraum und druckt die Zeilen.
Einfach für verschiedene Parameter änderbar, z. B. eine 45 Zeichen breite Version mit 17 Stellen .
quelle