Irgendwann in unserem Leben wurde uns allen gesagt, dass es unmöglich ist, sich durch 0 zu teilen. Und zum größten Teil ist diese Aussage wahr. Aber was , wenn es war ein Weg , um die verbotene Operation auszuführen? Willkommen zu meiner neuesten Kreation: b
-Nummern.
b
-Zahlen sind ein bisschen wie imaginäre Zahlen: Das Hauptpronumer repräsentiert einen Ausdruck, der mathematisch nicht unmöglich ist ( i
repräsentiert ). In diesem Fall sollden Ausdruck. Von hier aus ist es einfach zu bestimmen, was x wäre gleich:
Die Aufgabe
Bei einem Ausdruck, der eine Division durch 0 beinhaltet, wird der vereinfachte Wert in Form von ausgegeben . Beachten Sie, dass die Eingabe in der Form erfolgt, in der n/0
n eine beliebige rationale Zahl oder eine b
beliebige dezimale Zahl ist . Führende und nachfolgende Nullen werden nicht berücksichtigt.
Beispiel Eingabe
4/0
1/0
0/0
80/0
-8/0
1.5/0
2.03/0
-1/0
-3.14/0
b/0
3b/0
-b/0
121/0
Beispielausgabe
4b
b
0
80b
-8b
1.5b
2.03b
-b
-3.14b
b
3b
-b
121b
Ergebnis
Dies ist Codegolf, so dass nur wenige Bytes gewinnen. Standardlücken sind verboten.
Bestenlisten
Hier ist ein Stack-Snippet, um sowohl eine reguläre Rangliste als auch eine Übersicht der Gewinner nach Sprache zu generieren.
Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:
# Language Name, N bytes
Wo N
ist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Wenn Sie mehrere Zahlen in Ihre Kopfzeile aufnehmen möchten (z. B. weil Ihre Punktzahl die Summe von zwei Dateien ist oder wenn Sie die Strafen für Interpreter-Flags separat auflisten möchten), stellen Sie sicher, dass die tatsächliche Punktzahl die letzte Zahl in der Kopfzeile ist:
# Perl, 43 + 2 (-p flag) = 45 bytes
Sie können den Namen der Sprache auch als Link festlegen, der dann im Leaderboard-Snippet angezeigt wird:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
b/0 = b
dann, wenn ich beide Teile bisb
dahin teile1/0 = 1
. Brauche ichc
-Zahlen, um so zu teilen?b/b = 0
wenn es normalerweise (und ich bin mir ziemlich sicher, dass es aus all den verschiedenen Axiomen leicht zu beweisen ist) erwartet wird, dass es 1 ist (andernfalls scheint das multiplikative Inverse von b nicht das multiplikative Inverse zu sein). Ich bin mir ziemlich sicher, dass Sie einfach keine Lücke gegen die Division durch Null durch Additionb=1/0
oder ähnliches schließen können.0b
lieber ausgegeben haben als0
? Wenn die beiden Ausdrücke gleich wären, hätte die Frage keine Prämisse3.1b/0
Antworten:
Malbolge Unshackled (20-Trit-Rotationsvariante), 3,62e6 Bytes
Die Größe dieser Antwort überschreitet die maximal verfügbare Programmgröße (eh), sodass sich der Code in meinem GitHub-Repository befindet (Hinweis: Kopieren Sie den Code nicht mit STRG + A und STRG + C, sondern klicken Sie mit der rechten Maustaste und klicken Sie auf "Zielelement speichern unter". .. ").
Wie führe ich das aus?
Dies könnte ein schwieriger Teil sein, da naive Haskell-Interpreter eine Ewigkeit brauchen, um dies auszuführen. TIO hat einen anständigen Malbogle Unshackled-Interpreter, aber leider kann ich ihn nicht verwenden (Einschränkungen).
Das Beste, was ich finden konnte, ist die Variante mit fester Rotationsbreite von 20 Trit, die sehr gut funktioniert und (fast ) sofort berechnet .
Um den Dolmetscher ein bisschen schneller zu machen, habe ich alle Checks von Matthias Lutters Malbolge Unshackled-Dolmetscher entfernt.
Es funktioniert!
quelle
PHP ,
65646158 Bytes-1 Byte mit einem
b
anstelle von''
(leere Zeichenfolge). Da "b" gekürzt werden, entspricht dies in diesem speziellen Fall einer leeren Zeichenfolge.-3 Bytes durch Verwenden von
substr
anstelle vonexplode
, um den ersten Teil der Eingabe zu erhalten.-3 Bytes durch Verwendung besserer Methoden zum Erkennen
1
und-1
.Probieren Sie es online!
Tests: Online ausprobieren!
Wenn der erste Teil der Eingabe vor "/" (wir nennen es
$n
) 0 ist, wird 0 ausgegeben.Andernfalls wird
$n
ein "b" am Ende und Sonderfälle von -1 und 1 behandelt, sodass die Ziffer "1" nicht gedruckt wird. Und am Ende hängt ein einzelnes "b" an. Der Zuschnitt soll sicherstellen, dass am Ende kein doppeltes "b" wie "3bb" angezeigt wird.quelle
$n==-1
durch$n>0
(-2 Bytes) scheint zu funktionieren. Sie könnten das versuchen.$n<0
, da wir Eingaben wie haben-8/0
.$n==-1?'-':$n
durch$n+1?$n:'-'
, um 2 Bytes zu sparen!Jelly , 19 Bytes
Probieren Sie es online!
Volles Programm.
quelle
Jelly , 18 Bytes
Am Ende habe ich Eriks
ṾṖ$İƑ¡
für diesen gestohlen (sonst hätte ich auch 19) ...Ein vollständiges Programm, das das Ergebnis druckt.
Probieren Sie es online! Oder sehen Sie sich die Testsuite an .
Wie?
quelle
v
...: DPerl 6 , 32 Bytes
Probieren Sie es online!
Ein paar regulären Ausdrücke, ein zu prüfen , ob der Eingang
0/0
und die anderen die nachgestellten zu ersetzen/0
mit nurb
(und zu entfernen , dem altenb
,1
und / oder-1
)Erklärung (alt)
quelle
Retina ,
2824 BytesProbieren Sie es online!
Versuchen Sie zunächst, Retina zu verwenden, damit Sie wahrscheinlich genügend Platz zum Golfen haben.
quelle
\b
ist (ich bin so unerfahren mit Regex), war ich etwas enttäuscht, dass es sich nicht auf das nicht druckbare Backspace-Zeichen verkürzen lässt. Wie auch immer, danke\b
ist es nur eine ASCII-Darstellung des Rücktastenzeichens in normalen Zeichenfolgen: PPython 3 , 68 Bytes
Probieren Sie es online!
quelle
import re
steigt der bytecount auf 64.Keg , 18B
Alle Kredite gehen an Jono 2906.
Erläuterung
TIO!
quelle
Wolfram Language (Mathematica) , 37 Byte
Probieren Sie es online!
Nimmt eine Liste von Zeichen als Eingabe.
quelle
JavaScript (ES6), 45 Byte
Probieren Sie es online!
Kommentiert
quelle
C,
209203137 Bytes-66 bytes dank ceilingcat
TIO
quelle
Brainfuck, 25 Bytes
Erläuterung
quelle
b/0
erwartetb
, bekambb
;0/0
erwartet0
, bekam0b
;-1/0
erwartet-b
, bekommen-1b
./0
fürb
und nicht berücksichtigt nicht jedem der Fälle für0b
,1b
,-1b
oder alle Eingänge , die bereits enthaltenb