Binär-Dezimal-Konverter
Soweit ich sehen kann, gibt es keine einfache Herausforderung für die Konvertierung von Binärdaten in Dezimalzahlen.
Schreiben Sie ein Programm oder eine Funktion, die eine positive binäre Ganzzahl annimmt und deren Dezimalwert ausgibt.
Sie dürfen keine eingebauten Basisumwandlungsfunktionen verwenden. Ganzzahl-zu-Dezimal-Funktionen (z. B. eine Funktion, die 101010
zu [1, 0, 1, 0, 1, 0]
oder wird "101010"
) sind von dieser Regel ausgenommen und daher zulässig.
Regeln:
- Der Code muss Binärzahlen bis zu dem höchsten numerischen Wert unterstützen, den Ihre Sprache unterstützt (standardmäßig).
- Sie können festlegen, dass die Binärdarstellung führende Nullen enthält
- Die Dezimalausgabe darf keine führenden Nullen enthalten.
- Eingabe- und Ausgabeformate sind optional, zwischen den Ziffern dürfen jedoch keine Trennzeichen stehen.
(1,0,1,0,1,0,1,0)
ist kein gültiges Eingabeformat, aber beides10101010
und(["10101010"])
sind.- Sie müssen die Eingabe in der "normalen" Richtung vornehmen.
1110
ist14
nicht7
.
- Sie müssen die Eingabe in der "normalen" Richtung vornehmen.
Testfälle:
1
1
10
2
101010
42
1101111111010101100101110111001110001000110100110011100000111
2016120520371234567
Diese Herausforderung hängt mit einigen anderen Herausforderungen zusammen, zum Beispiel mit dieser , dieser und dieser .
code-golf
base-conversion
binary
Stewie Griffin
quelle
quelle
-1
(32 1's
und64 1's
) umgewandelt werdenround(x)==x
dir gut geht :)2.000
wird die Ausgabe für akzeptiert10
.Antworten:
Gelee , 5 Bytes
Probieren Sie es online!
Erläuterung
Die Besetzung
D
ist eine Monade (Funktion mit einem Argument): Ziffern, verwandeln sich1234
in[1, 2, 3, 4]
.Ḥ
ist eine Monade, die ihr einziges Argument verdoppelt.+
ist eine Dyade (Funktion mit zwei Argumenten), die ihre linken und rechten Argumente hinzufügt.Von da an wird es etwas knifflig.
Folgendes passiert zum Zeitpunkt der Analyse
D
,,Ḥ
und+
werden gelesen. Die Kette sieht aus wie[D, Ḥ, +]
.Die nächsten beiden Zeichen sind Quick -Operatoren, die sich auf die bisher gelesenen Links (Funktionen) wie Postfix-Operatoren während der Analyse auswirken .
Wenn
¥
gelesen wird, werden die letzten beiden Links angezeigt und durch einen Link ersetzt, der sich wie die Dyade verhält, die durch das Erstellen dieser Links erstellt wurde. So sieht die Kette jetzt aus[D, dyad(Ḥ+)]
.Wenn
/
gelesen wird, das letzte Glied (das sollte eine Dyade sein) wird durch eine Monade knallt und ersetzt, faltet diese Dyade mit (intuitiv:f/
nimmt eine Liste, ersetzt die Kommas in ihm mitf
, und wertet das Ergebnis.)Die letzte Kette sieht aus wie
[D, fold(dyad(Ḥ+))]
zwei Monaden.Folgendes passiert zur Laufzeit
Die Eingabe (eine Zahl) wird implizit in den Arbeitswert (z. B.
101010
) eingelesen .D
wird ausgeführt, wobei der Arbeitswert durch seine Ziffern ([1,0,1,0,1,0]
) ersetzt wird.fold(dyad(Ḥ+))
wird ausgeführt, wobei der Arbeitswert durch ersetzt wird1∗0∗1∗0∗1∗0
, wo∗
sich die Dyade befindetḤ+
.Also, was
x∗y
wertet aus?In einer dyadischen Definition ist der Arbeitswert zunächst das linke Argument
x
.Ḥ
, die Doppelmonade , verdoppelt diesen Wert. Der Arbeitswert ist jetzt2x
.+
, der Plus- Dyade, fehlt ein richtiges Argument, also ist dies ein Haken : ein spezielles syntaktisches Muster, in das das richtige Argument dieser Dyade eingefügt wird+
. Dies ergibt2x + y
den endgültigen Arbeitswert, der zurückgegeben wird.Der gesamte Ausdruck ergibt also:
quelle
Python 2,
49373130 BytesDies wird nun eine Binärzahl in einer Dezimaldarstellung annehmen, da Python beliebig große Ganzzahlen verarbeiten kann.
danke an xnor für das speichern eines bytes :)
Der einfachste Weg, um zu sehen, wie dies funktioniert, besteht darin, eine Grundformel für die Konvertierung von Binärdaten in Dezimalzahlen zu sehen:
Dies ist eine "Standard" -Konvertierungsmethode. Sie können die dritte Zeile folgendermaßen erweitern:
Und das ist im Wesentlichen das, was die rekursive Methode ist, die ich gemacht habe.
Alternative Lösungen, die ich hatte:
quelle
n%5
odern%2
stattn%10
.05AB1E , 6 Bytes
Code:
Nehmen wir zur Erläuterung das Beispiel 101010 . Wir beginnen mit der Nummer 1 (die durch die erste Ziffer dargestellt wird). Danach haben wir zwei Fälle:
Für den Fall 101010 wird also Folgendes berechnet:
Code Erklärung:
Verwendet die CP-1252- Codierung. Probieren Sie es online!
quelle
Haskell,
16111 + 57 = 168 Bytes+57 Bytes für die Kompilierung - Flags
-XOverloadedStrings
,-XOverlappingInstances
und-XFlexibleInstances
.Die Herausforderung hat ein umständliches E / A-Format , da es stark davon abhängt, wie Datentypen im Quellcode ausgedrückt werden. Meine erste Version (16 Bytes) nämlich
Nimmt eine Liste von ganzen Zahlen, zB
[1,0,1,0,1,0]
und wurde für ungültig erklärt, weil wörtliche Haskell-Listen,
zwischen den Elementen stehen. Listen an sich sind nicht verboten. In meiner neuen Version verwende ich dieselbe Funktion, dief
ich jetzt benenne , aber ich überlade "Zitiere eingeschlossene Zeichenfolgen". Die Funktion nimmt immer noch eine Liste von Ganzzahlen auf, wie Sie in der Typanmerkung sehen können[Int] -> Int
, aber Listen mit einstelligen Ganzzahlen können jetzt so geschrieben werden, wie"1234"
zdie auswertet zu
42
. Pech für Haskell, denn das native Listenformat entspricht nicht den Herausforderungsregeln. Übrigensf [1,0,1,0,1,0]
funktioniert immer noch.quelle
(1,0,1,0,1,0,1,0)
ist kein gültiges Eingabeformat, aber beides10101010
und(["10101010"])
ist". Ein Kommentar legt außerdem nahe, dass das Array von Zeichen akzeptabel ist, wenn eine Zeichenfolge-Eingabe auf diese Weise interpretiert wird.10101010
,"10101010"
oder etwas ähnliches und damit es funktioniert dann die Vorlage gültig ist. Sie können es eine Zeichenfolge, Liste, Ganzzahl oder was auch immer nennen. Eingabe[1][0][1][0]
oder[1,0,1,0]
nicht ok. Grundsätzlich sollte es möglich sein, einfach eine Reihe von Einsen und Nullen hintereinander zu treffen. Ist das klar?Retina, 15 Bytes
Konvertiert von binär nach unär, dann von unär nach dezimal.
Probieren Sie es online aus
quelle
PHP, 44 Bytes
Ich hätte schwören können, dass ich diese Frage schon einmal gesehen habe. Aber gut.
Liest die Zahl von links nach rechts, verschiebt sich nach links und fügt das aktuelle Bit hinzu.
quelle
JavaScript (ES6),
3331 BytesBearbeiten: Kürzere aber weniger süß: 2 Bytes dank @ETHproductions gespeichert.
quelle
.map
ist kürzer:s=>[...s].map(c=>+c+r+r,r=0)|r
s=>[...s].map(c=>r+=+c+r,r=0)|r
Labyrinth ,
17-15BytesProbieren Sie es online!
Labyrinth ist eine zweidimensionale, stapelbasierte Sprache. Im Labyrinth folgt die Codeausführung dem Pfad des Codes wie ein Labyrinth, in dem Leerzeichen als Wände fungieren und am Zeichen ganz oben links beginnen, das kein Leerzeichen ist. Der Code-Fluss wird durch das Vorzeichen oben auf dem Stapel bestimmt. Da der Stapel unten implizite Nullen hat, haben die ersten vier Anweisungen (
-+:+
) keine Wirkung.Schleife ab dem
,
,
Schieben Sie den ASCII-Codewert des nächsten eingegebenen Zeichens an das Ende des Stapels oder drücken Sie -1, wenn EOF._48
drückt 48 nach oben auf den Stapel-
Pop y, Pop x, drückenx-y
. Die vorherigen Anweisungen haben den Effekt, 48 von der Eingabe zu subtrahieren, was 0 für "0" und 1 für "1" ergibt.+
Pop y, Pop x, drückenx+y
.:
Duplizieren Sie die Oberseite des Stapels+
Diese und die vorherige Anweisung bewirken, dass der aktuelle Wert mit 2 multipliziert wirdDer kreisförmige Teil des Codes multipliziert also die aktuelle Zahl mit 2 und fügt entweder eine 1 oder eine 0 hinzu, je nachdem, ob das Zeichen 1 oder 0 eingegeben wurde.
Schwanz
Wenn die Oberseite des Stapels negativ ist (was bedeutet, dass EOF gefunden wurde), biegt der Code an der Kreuzung links ab (in Richtung des Semikolons).
)
Ikrementiere den oberen Teil des Stapels, um 2 zu erhalten/
Pop y, pop x, push x / y (ganzzahlige Division). Dies hat den Effekt, dass der letzte Teil*2
der Schleife rückgängig gemacht wird.!
Gibt die ganzzahlige Darstellung des oberen Bereichs des Stapels aus. Zu diesem Zeitpunkt dreht sich das Programm um, weil es eine Sackgasse erreicht hat, und wird dann mit einem Fehler beendet, weil es versucht, durch Null zu dividieren.Vielen Dank an @Martin Ender , der mir 2 Bytes gespart hat (und mir beigebracht hat, wie ich im Labyrinth besser denken kann).
quelle
_48-
dir kann man das einfach machen,#%
aber leider sehe ich nicht, wie es bei der Byteanzahl helfen könnte.`)
anstatt mit;_2
.#%
. Können Sie erklären, wie das als Ersatz für_48-
die Konvertierung von ASCII nach int funktioniert ? Danke für den)
Tipp. Ich werde das ändern.#
ist dies nur eine Abkürzung für_2
. Obwohl_2%
es sich nicht um eine allgemeine Konvertierungsmethode für ASCII in eine Ganzzahl handelt, funktioniert dies hier, da Sie nur an den ersten beiden Ziffern als mögliche Eingabe interessiert sind. Eine Alternative wäre_1&
(da Modulo 2 einfach das niedrigstwertige Bit extrahiert).#%
) verwenden soll, um den Code insgesamt zu verkürzen.Brain-Flak ,
46, 28 BytesProbieren Sie es online!
Vielen, vielen Bytes dank @Riley gespart!
Da Brain-Flak keine Binäreingabe akzeptieren kann, ist die Eingabe eine Liste von '0' und '1'.
Erläuterung:
quelle
([]){({}[()]<({}<>({}){})><>)}<>
([]){{}({}<>({}){})<>([])}<>
Java,
84794648 BytesGeändert zu
long
/ 48 Bytes:Haben Sie etwas Golf gespielt / 46 Bytes:
Vielen Dank an @Geobits! / 79 Bytes:
84 Bytes:
quelle
s
sollte seinchar[]
. Ich hoffe, das ist erlaubt ...Befunge-98, 12 Bytes
Probieren Sie es online!
Liest jeweils ein Zeichen von der Eingabe, konvertiert es in 0 oder 1, indem es seinen Wert modulo 2 annimmt (0 ist char (48), 1 ist char (49)), und verwendet dann den üblichen Algorithmus zum Verdoppeln des aktuellen Werts und Addieren von jedes Mal eine neue Ziffer.
Bonus: Das funktioniert mit jeder Art von Eingabezeichenfolge. Ich habe schon eine Weile versucht, eine lustige Eingabe-> Ausgabe-Kombination zu finden, aber ich konnte nichts produzieren (leider "Antwort" = 46). Können Sie?
quelle
Javascript (ES7)
414036 BytesNimmt einen String als Eingabe
Dank ETHproductions ein Byte rasiert
quelle
**
ist seltsam, aber ein guter Job, wenn man sie hier verwendet.1<<b.length
würde dasselbe tun, aber es würde Klammern erfordern, um nicht analysiert zu werden als(c*1)<<(b.length+...)
. Ich glaube , Sie durch Ersetzen eines Byte speichern kannb[0]
mitb+b
( siehe hier ).C # 6,
853736 Bytesquelle
05AB1E , 7 Bytes
Probieren Sie es online!
Erläuterung
quelle
C 53
Entspricht meiner Javascript-Antwort
Testen Sie Ideone
quelle
v
undc
als globale Variablen deklarieren (obwohl Siev
den Namen der Funktion ändern müssen , da dies bereits der Name der Funktion ist):w=0;c;v(char*s){while(c=*s++)w+=w+c-48;return w;}
w,c;
aber ich möchte keine Globals verwenden, wenn die Antwort eine Funktion ist (auch in Code-Golf)=0
.Perl, 25 Bytes
-3 Bytes dank @Dom Hastings.
24 Byte Code + 1 Byte für
-p
Flag.Um es auszuführen:
Erklärungen:
quelle
Aufdringlich , 10 Bytes
Nimmt die Eingabe als eine Liste von 0/1 auf der Kommandozeile:
$ pushy binary.pshy 1,0,1,0,1,0
.Der Algorithmus zeigt wirklich die Schönheit eines zweiten Stapels:
Diese Methode funktioniert, weil der Stapel
stack length - n
vor Erreichen der Zahl zweimal verdoppeltn
wird, und dann für später im zweiten Stapel abgelegt wird. So sieht der Vorgang bei der Eingabe aus101010
:quelle
Matlab, 30 Bytes
Der letzte Testfall weist (wegen
double
) Rundungsfehler auf. Wenn Sie also die volle Genauigkeit benötigen:mit 47 Bytes.
quelle
@(x)sum(2.^(find(flip(x)-48)-1))
, dass es für 32 Bytes in allen Fällen das richtige Ergebnis gibt.flip
funktioniert wiefliplr
wennx
ist eindimensional.f=@(x)..; f('1111001010')
.Retina , 12 Bytes
Die Anzahl der Bytes setzt die Kodierung nach ISO 8859-1 voraus.
Probieren Sie es online!
Alternative Lösung:
Erläuterung
Dies wird wahrscheinlich einfacher zu erklären sein, basierend auf meiner alten, weniger golfenen Version, und dann zu zeigen, wie ich es verkürzt habe. Früher habe ich Binär in Dezimal konvertiert:
Der einzig sinnvolle Weg, eine Dezimalzahl in Retina zu erstellen, ist das Zählen von Dingen (da Retina über einige Funktionen verfügt, mit denen eine Dezimalzahl ausgegeben werden kann, die einen Betrag darstellt). Der einzig mögliche Ansatz besteht also darin, die Binärzahl in eine unäre Zahl umzuwandeln und dann die Anzahl der unären Stellen zu zählen. Die letzte Zeile zählt, also wandeln die ersten vier Binär in Unär um.
Wie machen wir das? Um von einer Liste von Bits in eine Ganzzahl zu konvertieren, initialisieren wir das Ergebnis auf
0
und gehen dann die Bits von der höchsten bis zur niedrigsten Wertigkeit durch, verdoppeln den bereits vorhandenen Wert und addieren das aktuelle Bit. Wenn zum Beispiel die Binärzahl ist1011
, würden wir wirklich berechnen:Wo ich die einzelnen Bits der Übersichtlichkeit halber markiert habe.
Der Trick dabei ist a) dass das Verdoppeln einfach das Wiederholen der Zahl bedeutet und b) da wir das
1
s am Ende zählen, brauchen wir nicht einmal zwischen0
s und1
s zu unterscheiden . Dies wird in einer Sekunde klarer.Was das Programm macht, ist, dass es zuerst ein Komma an den Anfang fügt, um zu markieren, wie viel von der Eingabe wir bereits verarbeitet haben:
Links vom Marker wird der Wert angezeigt, den wir akkumulieren (der korrekt auf die unäre Darstellung von Null initialisiert ist), und rechts vom Wert wird das nächste zu verarbeitende Bit angezeigt. Jetzt wenden wir die folgende Substitution in einer Schleife an:
Wenn Sie nur auf
,(.)
und schauen$1,
, wird der Marker jedes Mal ein Stück nach rechts verschoben. Wir fügen aber auch ein$`
, was alles vor dem Marker ist, dh den aktuellen Wert, den wir verdoppeln. Hier sind die einzelnen Schritte bei der Verarbeitung von Eingaben1011
, bei denen ich das Ergebnis des Einfügens$`
über jeder Zeile markiert habe (für den ersten Schritt ist es leer):Sie werden sehen, dass wir die Null beibehalten und zusammen mit allem anderen verdoppelt haben, aber da wir sie am Ende ignorieren, spielt es keine Rolle, wie oft wir sie verdoppelt haben, solange die Anzahl der
1
s beträgt richtig. Wenn Sie sie zählen, gibt es11
von ihnen genau das, was wir brauchen.Damit bleibt die Frage, wie dies auf 12 Bytes reduziert werden kann. Der teuerste Teil der 18-Byte-Version ist die Verwendung des Markers. Das Ziel ist es, das loszuwerden. Wir wollen wirklich das Präfix jedes Bits verdoppeln, daher könnte eine erste Idee sein:
Das Problem ist, dass diese Ersetzungen gleichzeitig stattfinden, sodass das erste Bit nicht für jedes Bit verdoppelt wird , sondern jedes Mal nur einmal kopiert wird. Für die Eingabe würden
1011
wir erhalten (Markierung der eingefügten$`
):Wir müssen die Eingabe immer noch rekursiv verarbeiten, sodass das verdoppelte erste Präfix erneut durch das zweite Präfix verdoppelt wird und so weiter. Eine Idee ist, Marker überall einzufügen und sie wiederholt durch das Präfix zu ersetzen:
Nachdem wir zum ersten Mal jeden Marker durch das Präfix ersetzt haben, müssen wir uns merken, wo der Anfang der Eingabe war, damit wir auch Zeilenvorschübe einfügen und die
%
Option verwenden, um sicherzustellen, dass der nächste$`
nur die Dinge aufnimmt, die dem nächsten Zeilenvorschub am nächsten sind.Dies funktioniert, ist aber immer noch zu lang (16 Bytes beim Zählen von
1
s am Ende). Wie wäre es, wenn wir die Dinge umdrehen? Die Stellen, an denen wir Marker einfügen möchten, sind durch\B
(eine Position zwischen zwei Ziffern) gekennzeichnet. Warum fügen wir nicht einfach Präfixe in diese Positionen ein? Das funktioniert fast, aber der Unterschied besteht darin, dass wir in der vorherigen Lösung tatsächlich einen Marker in jeder Ersetzung entfernt haben. Dies ist wichtig, damit der Prozess beendet wird. Es\B
sind jedoch nicht die Charaktere, sondern nur Positionen, sodass nichts entfernt wird. Wir können das aber aufhalten\B
durch stattdessen Einfügen eines nicht-stelligen Zeichens an dieser Stelle. Das verwandelt die Nicht-Wortgrenze in eine Wortgrenze, was dem Entfernen des Markierungszeichens früher entspricht. Und genau das leistet die 12-Byte-Lösung:Der Vollständigkeit halber sind hier die einzelnen Verarbeitungsschritte
1011
mit einer leeren Zeile nach jedem Schritt:Auch hier werden Sie feststellen, dass das letzte Ergebnis genau 11
1
s enthält .Können Sie als Übung für den Leser sehen, wie sich dies auf andere Basen verallgemeinern lässt (für ein paar zusätzliche Bytes pro Inkrement in der Basis)?
quelle
T-SQL, 202 Bytes
quelle
PHP, 64 Bytes
Wir kehren unsere Binärzahl um, teilen sie in ihre einzelnen Ziffern auf und addieren sie nach ihrer Position.
quelle
Bash + GNU-Dienstprogramme, 29 Bytes
I / O über stdin / stdout.
Der
sed
Ausdruck teilt die Binärzahl in jede Ziffer auf und erstellt einen RPN-Ausdruck fürdc
die Auswertung.quelle
PowerShell v2 +, 55 Byte
Fühlt sich zu lang an ...Ich kann es nicht so scheinen, als würde ich Golf spielen - Tipps sind willkommen.Erläuterung
quelle
JavaScript (ES6), 32 Byte
Rekursion rettet den Tag wieder! Obwohl die Parametrisierung etwas langwierig erscheint ...
quelle
[...n]
in Klammern setzen, da es sich um ein einzelnes "Argument" handelt ?Mathematica,
271311 BytesNimmt ein
List
von Bits als Eingabe (zB{1, 0, 1, 1, 0}
- Mathematica ‚s binäre Darstellung der Zahl22
)quelle
Characters
Funktion.IntegerDigits
.D
, der das Gleiche tut wieIntegerDigits
Clojure,
1141056341 BytesV4: 41 Bytes
-22 Bytes dank @cliffroot. Da
digit
es sich um ein Zeichen handelt, kann es über in seinen Code konvertiert werdenint
. Dann müssen 48 davon subtrahiert werden, um die tatsächliche Zahl zu erhalten. Die Karte wurde ebenfalls ausgeklammert. Ich weiß nicht, warum es notwendig schien.V3: 63 Bytes
-42 Bytes (!) Durch Betrachten anderer Antworten. Mein "Zippen" war offensichtlich sehr naiv. Anstatt 2 zur Potenz der aktuellen Stelle zu erhöhen, sie dann mit der aktuellen Ziffer zu multiplizieren und das Ergebnis zum Akkumulator hinzuzufügen, multipliziert es nur den Akkumulator mit 2, addiert die aktuelle Ziffer und addiert sie dann zum Akkumulator. Außerdem wurde die Reduktionsfunktion in ein Makro umgewandelt, um ein wenig zu rasieren.
Vielen Dank an @nimi und @Adnan!
Ungolfed:
V2: 105 Bytes
-9 Bytes durch Umkehren der Zeichenfolge, damit kein unangenehmer absteigender Bereich erstellt werden muss.
V1: 114 Bytes
Nun, ich gewinne bestimmt nicht! Zu meiner Verteidigung ist dies das erste Programm, das ich jemals geschrieben habe und das zwischen Basen konvertiert. Daher musste ich lernen, wie man das macht. Es hilft auch nicht, dass
Math/pow
ein Double zurückgegeben wird, von dem konvertiert werden muss, undInteger/parseInt
dass kein Zeichen akzeptiert wird. Daher muss die Ziffer vor dem Übergeben umbrochen werden.Zippt die Zeichenfolge mit einem absteigenden Index, der die Ortsnummer darstellt. Reduziert die resultierende Liste.
Ungolfed:
quelle
#(reduce(fn[a b](+(* a 2)(-(int b)48)))0 %)
verbesserte Version. Einmap
Teil des Codes wurde direkt in diereduce
geänderte Integer-Parsing-Methode verschoben. Externe Funktionen werden mit der Lambda-Kurzschrift-Syntax erstellt.int
kann zum Parsen verwendet werden !? Das klopft bei jeder Herausforderung, die ich hier gemacht habe, um die 10 Bytes.Perl,
21,19,16 + 4 = 20 Bytes-4 Bytes dank @Dada
Führen Sie mit
-F -p
(einschließlich des zusätzlichen Leerzeichens nach demF
) aus. Pipe Werte zur Funktion mitecho -n
Rennen wie
echo -n "101010" | perl -F -pE '$\+=$_+$\for@F}{'
Ich bin der Meinung, dass dies ausreichend von @ Dadas Antwort abweicht, sodass es einen eigenen Eintrag verdient.
Erläuterung:
Dabei wird mein persönlicher Algorithmus zur Umwandlung von Binär in Dezimal verwendet. Starten Sie Ihren Akkumulator bei einer gegebenen Binärzahl bei 0 und gehen Sie die Bits nacheinander durch. Verdoppeln Sie den Akkumulator für jedes Bit, fügen Sie das Bit selbst zu Ihrem Akkumulator hinzu, und Sie erhalten den Dezimalwert. Dies funktioniert, weil jedes Bit entsprechend der Anzahl der für seine Position verbleibenden Bits in der ursprünglichen Binärzahl entsprechend oft verdoppelt wird.
quelle
perl -F -pE '$\+=$_+$\for@F}{'
R (32 Bit), 64 Byte
Die Eingabe für die Funktion sollte als Zeichen erfolgen. Die Basisfunktionen von R unterstützen 32-Bit-Ganzzahlen.
Eingang:
Ausgabe:
R (64-Bit), 74 Bytes
Die Eingabe für die Funktion sollte als Zeichen erfolgen. Das Paket
bit64
muss für 64-Bit-Ganzzahlen verwendet werden.Eingang:
Ausgabe:
quelle
el(strsplit(x,""))
Anstattstrsplit(x,split="")[[1]]
ein paar Bytes zu speichern.el
Funktion - ich war mir dessen nicht bewusst.Dyalog APL , 12 Bytes
⍞
Zeichenketteneingabe erhalten⍎¨
Wandle jedes Zeichen in eine Zahl um⌽
umkehren(
...)/
füge die folgende Funktion zwischen die Zahlen ein++⊢
die Summe der Argumente plus das richtige Argumentngn rasierte 2 Bytes.
quelle
k, 8 Bytes
Gleiche Methode wie bei der obigen Haskell-Antwort.
Beispiel:
quelle