Wenn eine Ganzzahl n ≥ 0 ist, geben Sie sie in einer nicht positionellen Basis-3-Notation aus, wobei Sie Ziffern 139ABCDE…
und ein 1-Zeichen-Trennzeichen verwenden. Jede Ziffer ist eine fortlaufende Potenz von 3 und die Ziffern auf der linken Seite des Trennzeichens werden negiert, z. B. A931 | B → 81− (1 + 3 + 9 + 27) → 41 . Eine Ziffer darf nur einmal vorkommen.
Der Wert einer Ziffer sei streng genommen:
- sein Wert, wenn die Ziffer 1, 3 oder 9 ist
- 27 wenn die Ziffer ist
A
- 3-facher Wert der Ziffer davor für
B
..Z
Ihre Ausgabe sollte die Summe (Wert der Ziffern rechts von |
) - Summe (Wert der Ziffern links von |
) == Eingabe erfüllen .
Beispiele
input output
----------------
0 |
1 |1
7 3|91
730 |D1
9999 FEDC|GA9
Sie können ein anderes Zeichen ohne Leerzeichen als Trennzeichen verwenden. Sie dürfen auch kein Trennzeichen haben. In diesem Fall startet die größte Ziffer die positive Sequenz. Sie müssen nichts größer als 2 32 −1 ( PMIGDCBA9|RQNLH3
) verarbeiten.
Sie können ein komplettes Programm oder eine komplette Funktion schreiben und die Ein- und Ausgabe kann auf jedem der üblichen Kanäle erfolgen.
Das ist Code-Golf . Je kürzer Ihre Antwort, desto besser!
quelle
|
und die Positiven rechts davon.Antworten:
Java 10,
120113112109107102 Bytes-3 Bytes durch Verwendung eines Teils des Tricks von @Arnauld 's JavaScript (ES6) zum Antworten ,
Ändern von
i=0
undi++<1?49:i<3?51:i<4?57:i+61
nachi=4
und++i>9?i+55:i>8?57:++i+43
.-6 Bytes dank @Arnauld direkt durch Loswerden
i
.Ausgabereihenfolge: Höchste bis niedrigste
|
, niedrigste bis höchste Grenze.Erläuterung:
Probieren Sie es online aus.
quelle
r
des Schleifenkörpers. Vielen Dank!i
haben und wenn Sie sie wiederverwendenc
)?p=1
und nicht*1
in den Code aufzunehmen, wenn dies der Fall ist - auch wenn dies in diesem Fall nicht zu einer besseren Formel führt.)Python 3 ,
1039991 Bytes4 Bytes dank Lynn.
8 Bytes dank ovs.
Probieren Sie es online!
Dank an xnor für die Logik.
quelle
JavaScript (ES6),
828079 ByteAusgaben in Kleinbuchstaben, die hoffentlich in Ordnung sein sollten.
Probieren Sie es online!
Ähnlich der Antwort von Leaky "Ninja Master" Nun und auch basierend auf der Antwort von xnor .
Ziffernkonvertierung
Wir beginnen mit k = 4 . Während k kleiner als 9 ist , erhöhen wir es zweimal bei jeder Iteration und subtrahieren 5 . Danach erhöhen wir es nur einmal und konvertieren es in base-36.
quelle
Gelee , 26 Bytes
Probieren Sie es online!
Verwenden Sie eine Newline als Trennzeichen.
quelle
Perl 6 , 80 Bytes
Probieren Sie es online!
Kein Trennzeichen. Basierend auf der Antwort von xnor .
quelle
Stax ,
3029 BytesFühren Sie es aus und debuggen Sie es
Port meiner Stax-Antwort in Balanced Ternary Converter .
Erläuterung
Verwendet die entpackte Version, um zu erklären.
quelle
C # .NET, 103 Bytes
Port meiner Java 10 Antwort . Wenn ein direkter Port (außer
n->
ton=>
) möglich gewesen wäre, hätte ich meine Java-Antwort mit diesem Polyglot bearbeitet. Leider jedochc+=
auf Charaktere oder mitc=49
in C # nicht möglich, daher diese lose portierte Antwort.Probieren Sie es online aus.
quelle
Perl 5
-p
,7169 Bytesverwendet kein Trennzeichen. Der negative und der positive Teil sind in "römischer Reihenfolge" (größte Ziffer zuerst)
Probieren Sie es online!
quelle
Ruby ,
878482 Bytes2 Bytes dank @ benj2240 gespeichert.
Probieren Sie es online!
quelle
redo
Trick 2 Bytes abschneiden : Probieren Sie es online aus!J , 129 Bytes
Probieren Sie es online!
Zu langwierig, besonders für ein J-Programm ...
Erläuterung:
quelle
C
int
:138123 Byteslong
:152131 BytesIch habe zwei Versionen davon erstellt, da die Grenze der Herausforderungen bei einem maximalen Arbeitseingang von
0x100000000
etwas seltsam erschien. Eine Version arbeitet mit 32-Bit-Ganzzahlen (die aus offensichtlichen Gründen das Limit verfehlen), die andere Version arbeitet mit 64 Bit (die weit über das angegebene Limit hinausgehen und148 zusätzliche Bytes kosten ).32 Bit Version:
64 Bit Version:
Dies ist identisch mit der Ausnahme, dass die Ganzzahlvariable als
long
(64-Bit unter Linux) deklariert wird.Die ungolfed
long
Version:Wie Sie sehen, funktioniert dies bei rekursivem Anstand: Wenn der Rest 1 ist, wird das entsprechende Zeichen nach dem rekursiven Aufruf an die Ausgabezeichenfolge angehängt. Wenn der Rest 2 ist, wird die Ausgabe vor der Rekursion ausgeführt. In diesem Fall erhöhe ich auch den Wert um eins, um die negative Ziffer richtig zu behandeln. Dies hat den zusätzlichen Vorteil, dass der Rest auf Null gesetzt wird und ich ihn
value%3
als Bedingung für die Nachrekursion verwenden kann, wenn.Das Ergebnis der Konvertierung wird in den globalen Puffer gestellt. Der
g()
Wrapper hat die Aufgabe, die resultierende Zeichenkette korrekt mit Null zu beenden und denresult
Zeiger auf den Anfang zurückzusetzen (was auch so ist)g()
das Ergebnis "zurückgegeben" wird).Testen Sie die
long
Version mit diesem Code:Mögliches weiteres, aber zerstörerisches Golfen:
-4 Bytes: Machen Sie die Funktion zu einem One-Shot, indem Sie den Zeiger entfernen, der in zurückgesetzt wurde
g()
.-5 Bytes: Der Aufrufer wird gezwungen, die String-Terminierung durchzuführen, wobei der String ohne Terminierung in
buffer
und das Ende des Strings in zurückgegeben werdenresult
.quelle
Kohle , 36 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Geben Sie den Wert ein.
Verschieben Sie drei leere Listen in die vordefinierte leere Liste.
Durchlaufen Sie die Zeichen
139
und das Großbuchstaben.Indizieren Sie zyklisch die Liste der Listen mit dem Wert und verschieben Sie das aktuelle Zeichen dorthin.
Teilen Sie den Wert durch 3, runden Sie ihn jedoch durch Hinzufügen von 1.
Schleife zweimal. Drucken Sie beim zweiten Mal a
|
.In jeder Schleife wird der letzte Eintrag aus der Liste eingefügt. Beim ersten Mal erhalten wir die Einträge, die einen Rest von
2
(der einer ausgeglichenen ternären Ziffer von entspricht-1
) hatten, während beim zweiten Mal die Einträge erhalten werden, die einer ausgeglichenen ternären Ziffer von entsprechen1
. Das resultierende Array wird normalerweise vertikal gedruckt, aber durch Drehen der Druckrichtung nach oben wird dies abgebrochen.quelle
J ,
69 6458 BytesProbieren Sie es online!
quelle
Perl 5 ,
9289 BytesInspiriert von den Java- und Python-Antworten.
Probieren Sie es online!
Mit etwas Leerraum:
quelle
PHP, 73 Bytes
Port der Antwort von xnor , 53 Bytes
Laufen Sie als Pipe mit
-nr
oder probieren Sie sie online aus .quelle