var QUESTION_ID=106182,OVERRIDE_USER=8478;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Antworten:
Brachylog V1, 05AB1E, J, K, Unterlast, MATL, Forth, PigeonScript, Gestapelt, Implizit, Jolf, Clojure, Braingolf, 8., Common Lisp, Julia, Pyt, Appleseed, Stax, Reality, dc 1 Byte
Sie können diese Antwort bearbeiten, um weitere Sprachen hinzuzufügen, für die
*
eine gültige Antwort vorliegt.quelle
*(5,16)
C (GCC), 13 Bytes
Funktioniert nicht bei allen Implementierungen, aber das ist in Ordnung.
Probieren Sie es auf TIO!
quelle
a
? Ich verstehe nicht ...a
Gibt eine lokale Stapelvariable anf()
- warum wird ihr Wert zurückgegeben?). +1, übrigens - sehr kluger Missbrauch der ABI.return
Schlüsselwort platziert einfach die Redult des Arguments im EAX-Register. In diesem Fall führt die generierte ausführbare Datei die Berechnunga*b
in diesem Register durch undreturn
unternimmt daher nichts.f(a,b){a*=b;}
Teil durch ersetzen1##&
und dann gerade Ihre Sprache zu Mathematica ändern.Beatnik , 888 Bytes
Probieren Sie es online!
Ich verwende den C-Interpreter, weil der Python-Interpreter auf TIO die Adresse ärgerlicherweise ausführt, wenn die Bedingung für das Zurückspringen nicht erfüllt ist. Ein einfacher Workaround für den Python-Interpreter besteht darin, einige Nops aufzufüllen, um die Adresse als Nop zu definieren. Ich glaube keiner ist richtig:
Die Eingabe sollte aus zwei durch ein Leerzeichen getrennten Ganzzahlen bestehen, ohne dass Zeilenumbrüche folgen.
Diese Antwort funktioniert theoretisch für alle ganzen Zahlen, wenn jede Zelle einen willkürlich großen Wert speichern kann, der nicht auf 0 - 255 beschränkt ist. Sie läuft jedoch über, wenn | A | + | B | > 22. Und es läuft sehr langsam, wenn | A | + | B | > 6. Es gibt also nicht viele Fälle, die Sie tatsächlich testen können, und eine If-else-Lösung für diese Fälle könnte sogar noch kürzer sein.
Die Idee ist, die Dreieckszahlen T (N) = N (N + 1) / 2 durch Dekrementieren des Wertes auf 0 und Summieren aller Zwischenwerte zu berechnen. Dann können wir die Antwort A * B = T (A + B) - T (A) - T (B) erhalten.
Es ist jedoch schwierig, alle drei Werte zu berechnen. Dies geschieht, indem zuerst T (A + B) - A berechnet wird, eine Kopie von A im Stapel verbleibt, die später addiert wird, und die Eingabe B verwendet wird. Dann wird rekursiv die größte dreieckige Zahl ermittelt, die kleiner als diejenige ist, die T (ist. A + B-1) mit Ausnahme der Sonderfälle Null. Wir können B = T (A + B) - A - T (A + B-1) zurückholen und von dort T (B) berechnen.
Eine Zahl N ist eine Dreieckszahl, wenn sie der größten Dreieckszahl kleiner als N plus der Anzahl der nicht negativen Dreieckszahlen kleiner als N entspricht. Dies läuft in O (2 ^ (T (A + B) -A)) und ist der langsamste Teil im Programm.
quelle
Mathematica, 4 Bytes
Anwendungsbeispiel:
1##&[7,9]
Rückgabe63
. In der Tat multipliziert dieselbe Funktion eine beliebige Anzahl von Argumenten eines beliebigen Typs.Wie Mathematica-Codegolfer wissen, funktioniert dies, weil es
##
sich auf die gesamte Folge von Argumenten für eine Funktion bezieht und die Verkettung in Mathematica (oft) die Multiplikation darstellt. so1##
bezieht sich auf (1 - mal) , um das Produkt aller Argumente der Funktion. Das&
ist nur kurz für dieFunction
Befehl, der eine reine (unbenannte) Funktion definiert.In anderen Codes fungiert das gemeinsame Symbol
*
als Multiplikation. Ebenso ein Leerzeichen, das7 9
interpretiert wird als7*9
(tatsächlich zeigt die aktuelle REPL-Version von Mathematica solche Leerzeichen als Multiplikationszeichen an!). Noch besser ist, wenn Mathematica erkennen kann, wo ein Token beginnt und ein anderes endet, dann werden für einen Multiplikationsoperator überhaupt keine Bytes benötigt: Wird5y
automatisch als5*y
und3.14Log[9]
als interpretiert3.14*Log[9]
.quelle
##&
ungültig?##&
Gibt die Liste der Argumente als "Sequenz" -Objekt zurück, das zum Einfügen in andere Funktionen mit mehreren Argumenten geeignet ist. In diesem Zusammenhang wird##&
die Liste der Argumente nicht geändert. Wir möchten, dass diese Liste multipliziert wird.Retina ,
383731 BytesVöllig neuer Ansatz, der alte ist unten.
Probieren Sie es online!
Erläuterung
Zunächst beschäftigen wir uns mit dem Zeichen:
-
Stimmt mit allen in der Zeichenfolge überein und gibt sie durch Zeilenumbrüche getrennt zurück(mit einer folgenden leeren Zeile)
*\)
bedeutet, dass das Ergebnis dieses und der vorherigen Schritte ohne eine neue Zeile gedruckt werden sollte und die Zeichenfolge dann auf die vorherige zurückgesetzt wird (die Eingabezeichenfolge). Der verbleibende Teil entfernt zwei-
durch einen Zeilenumbruch getrennte.Dann konvertieren wir die erste Zahl in unary:
(Es gibt ein Leerzeichen am Ende der ersten Zeile). Wir verwenden
_
in diesem Fall als unäre Ziffer, da die Standardziffer1
in der zweiten Ziffer vorhanden sein kann und dies später zu Konflikten führen würde.Nun kommen wir zur eigentlichen Multiplikation:
Jedes
_
wird durch die unäre Darstellung von allem ersetzt, was darauf folgt (immer noch_
als unäre Ziffer verwendend). Da bei der Konvertierung nach Unary nicht-stellige Zeichen ignoriert werden, wird die unäre Darstellung der zweiten Zahl "für die erste Zahl" wiederholt. Die zweite Zahl bleibt am Ende der Zeichenfolge in dezimaler Darstellung.Am Ende geben
_
wir mit single die Anzahl von zurück_
in der Zeichenkette zurück, die das Ergebnis der Multiplikation ist.Vorherige Antwort: (Warnung: Gibt eine leere Zeichenfolge aus, wenn sie ausgegeben werden soll
0
)Netzhaut ,
454241 BytesLassen Sie uns ein Spiel spielen! Multiplizieren Sie relative Zahlen mit einer Sprache, die keine arithmetischen Operatoren und nur eingeschränkte Unterstützung für natürliche Zahlen hat ... Klingt lustig :)
Erläuterung
Die ersten drei Zeilen befassen sich mit dem Vorzeichen:
Dadurch werden alle Zeichenfolgen sortiert
O
und umgekehrt^
, die dem regulären Ausdruck entsprechen^|-
. In der Praxis stimmt dies mit der leeren Zeichenfolge am Anfang und dem eventuellen Minuszeichen vor der zweiten Zahl überein und ordnet sie neu an, indem sie die leere Zeichenfolge an die Stelle des Minus setzen. Danach-
befinden sich alle am Anfang der Zeichenfolge, und ein Paar von ihnen kann mit den nächsten beiden Zeilen problemlos entfernt werden.Danach verwenden wir ein Builtin, um Zahlen in eine unäre Darstellung umzuwandeln, und dann kommt die tatsächliche Multiplikation:
Wir passen jeden
1
an und ersetzen jeden durch alle1
folgenden Leerzeichen. Jede Ziffer der ersten Ziffer wird durch die vollständige zweite Ziffer ersetzt, während jede Ziffer der zweiten Ziffer durch die leere Zeichenfolge ersetzt wird.Der letzte Teil ist wieder ein eingebautes Element, das von unär nach dezimal konvertiert werden kann.
Probieren Sie es online!
quelle
$*
sein sollte_
.).+,(.+)
bis$.($1**
), aber das ist eigentlich mehr Bytes hier.Scratch , 1 Byte
Verwendung: Platzieren Sie die Zahlen auf beiden Seiten des
*
ZeichensHinweis: Da Scratch eine visuelle Sprache ist, konnte ich nicht herausfinden, wie viele Bytes es verbraucht, bis @ mbomb007 mich über eine Methode zum Zählen von Scratch-Bytes informierte
quelle
Brain-Flak , 56 Bytes
Dies muss als vollständiges Programm ausgeführt werden, da es nicht stapelbereinigt ist und die Eingaben die einzigen Elemente in jedem Stapel sein müssen.
Probieren Sie es online!
Erklärung: (benenne die Eingänge x und y)
Teil 1:
Zu diesem Zeitpunkt haben wir [x, y] auf einem Stapel und [-x, -y] auf dem anderen.
Teil 2:
quelle
JavaScript (ES6), 9 Byte
ES6 verfügt über eine dedizierte Funktion für 32-Bit-Ganzzahlen, die schneller ist als der allgemeinere
*
Operator.Das ist übrigens nur so lange wie:
quelle
Brain-Flak ,
565452 Bytes2 Bytes gespart durch einen Fehler von Nitrodon
Probieren Sie es online!
Stack saubere Version,
6260 BytesProbieren Sie es online!
Erläuterung
Diese Erklärung ist eher eine Erklärung des beteiligten Algorithmus und lässt den tatsächlichen Code weg. Es wird vorausgesetzt, dass Sie wissen, wie man Brain-Flak richtig liest. Wenn Sie Hilfe benötigen, um den Code oder den Algorithmus zu verstehen, bearbeite oder antworte ich gerne, wenn Sie einen Kommentar hinterlassen.
Dies ist ein bisschen seltsam und verwendet etwas seltsame Mathematik, die gerade noch klappt. Als erstes habe ich eine Schleife erstellt, die immer in O (n) Schritten endet . Der normale Weg, dies zu tun, ist, n und -n auf entgegengesetzte Stapel zu setzen und eins zu jedem zu addieren, bis man Null erreicht, aber ich habe es auf eine etwas seltsamere Weise getan. Bei meiner Methode setze ich einen Zähler unter die Eingabe und inkrementiere den Zähler bei jedem Schritt zu n und kehre das Vorzeichen von n um .
Lassen Sie uns ein Beispiel durchgehen. Sagen Sie n = 7
Ich werde es hier nicht beweisen, aber dies wird immer für jede Eingabe beendet und dies in ungefähr 2n Schritten tun . Tatsächlich endet es in 2n Schritten, wenn n positiv ist, und in 2n-1 Schritten, wenn n negativ ist. Sie können das testen hier .
Jetzt haben wir ungefähr 2n Schritte in unserer Schleife. Wie multiplizieren wir mit n ? Nun, hier haben Sie etwas Mathe-Magie. Folgendes tun wir: Wir erstellen einen Akkumulator. In jedem Schritt des Prozesses fügen wir den zweiten Eingang ( m ) zum Akkumulator hinzu und kippen das Vorzeichen von beiden. Dann schieben wir die Summe über alle auftretenden Schleifen Produkt.
Warum um alles in der Welt ist das so?
Lassen Sie uns ein Beispiel durchgehen und es wird hoffentlich klar. In diesem Beispiel multiplizieren wir 5 mit 3 , ich zeige nur die wichtigen Werte
Hoffentlich ist der Mechanismus hier offensichtlich. Wir gehen alle Vielfachen von m in der Reihenfolge ihrer absoluten Werte durch. Sie werden dann feststellen , dass das 2n - te Term ist immer m * n und der Begriff vor immer -m * n . Dies macht es so, dass unser Looping perfekt mit den gewünschten Ergebnissen übereinstimmt. Ein bisschen ein glücklicher Zufall;)
quelle
Dyalog APL , 1 Byte
×
Nimmt eine Nummer links und eine rechts×
... oder auch mehrere Zahlen links oder rechts oder beidseitig×/
multipliziert alle Zahlen in einer Liste×/¨
multipliziert die Paare in einer gegebenen Liste×/∊
multipliziert alle Zahlen in einem ArrayDies gilt für alle arithmetischen Funktionen, Arrays aller Größen und Ränge sowie Zahlen aller Datentypen.
quelle
R, 3 Bytes
Dies ist eine Funktion, die genau zwei Argumente akzeptiert. Führen Sie so
'*'(a,b)
.Sehen Sie auch,
prod
was dasselbe tut, aber eine beliebige Anzahl von Argumenten annehmen kann.quelle
'*'
.ArnoldC , 152 Bytes
Probieren Sie es online!
quelle
Hexagony , 9 Bytes
Probieren Sie es online!
Das ist eigentlich ziemlich einfach. Hier ist die entfaltete Version:
Das
/
Umleiten nur den Steuerablauf zu der zweiten Zeile Bytes auf dem dritten zu speichern. Das reduziert den Code auf dieses lineare Programm:Dieser lineare Code alleine wäre eine gültige Lösung, wenn die Eingabe auf streng positive Zahlen beschränkt wäre. Aufgrund der Möglichkeit nicht positiver Ergebnisse kann jedoch nicht garantiert werden, dass die Eingabe beendet wird.
Das Programm verwendet drei Speicherflanken in Y-Form:
Der Speicherzeiger beginnt an der Kante und
A
zeigt zur Mitte.Ich habe eine Brute-Force-Suche nach 7-Byte-Lösungen durchgeführt (dh nach Lösungen, die in die Seitenlänge 2 passen), und wenn ich keinen Fehler gemacht habe (oder es gibt eine Lösung für vielbeschäftigte Biber, deren Fertigstellung viel Zeit in Anspruch nimmt). was ich bezweifle) dann gibt es keine 7-byte-lösung. Möglicherweise gibt es eine 8-Byte-Lösung (z. B. durch Wiederverwenden des
?
Befehls oder durch Verwenden nur eines Umleitungsbefehls anstelle von zwei/
), aber meine Brute-Force-Suche kann dies nicht. Ich habe noch keinen von Hand gefunden.quelle
Piet , 16 Bytes
Online-Dolmetscher hier verfügbar.
Erläuterung
Fügen Sie zum Ausführen den obigen Code in das Textfeld auf der rechten Seite der verknüpften Seite ein. Unten finden Sie eine grafische Darstellung dieses Codes mit der Codelgröße 31. Das Raster dient der Lesbarkeit und kann traditionelle Piet-Interpreter stören.
Der Code verläuft linear von links nach rechts und verläuft am oberen Bildrand bis zum ersten grünen Block, in dem der Programmfluss zur mittleren Codereihe wechselt. Der White-Lone-White-Codel ist für den Programmablauf erforderlich. Es könnte durch ein Codel einer anderen Farbe als Grün oder Dunkelblau ersetzt werden, aber ich habe mich aus Gründen der Lesbarkeit für Weiß entschieden.
Wenn Sie der Meinung sind, dass Text nicht die beste Art ist, ein Piet-Programm darzustellen, oder wenn Sie ein Problem mit der Bytegröße von Piet-Programmen im Allgemeinen haben, teilen Sie uns Ihre Meinung in der Diskussion über Meta mit .
quelle
BitCycle
-U
, 68 BytesProbieren Sie es online!
Das Multiplizieren von zwei Zahlen ist in BitCycle kein triviales Problem, insbesondere wenn Zeichen verarbeitet werden müssen! Dies ist mein zweiter Versuch; Der erste (im Wesentlichen derselbe Algorithmus, anderes Layout) war 81 Byte, so dass es durchaus möglich ist, dass dieser auch gekürzt werden könnte.
Das Programm nimmt die beiden Zahlen als Befehlszeilenargumente und gibt sie an stdout aus. Das
-U
Flag dient dazu, die Dezimalzahlen in vorzeichenlose Zahlen umzuwandeln , da BitCycle nur Nullen und Einsen kennt.Erläuterung
Diese Erklärung setzt voraus, dass Sie die Grundlagen von BitCycle verstehen (siehe Esolangs oder die GitHub-Readme). Ich werde meine Erklärung auf dieser ungolfed Version, gesehen hier Computing Base
-2
Zeiten3
:Überblick
Vorzeichenlose Zahlen bestehen aus dem Vorzeichen (
0
für nicht positiv, leer für positiv), gefolgt von der Größe (eine Zahl von1
s, die dem absoluten Wert der Zahl entspricht). Um zwei von ihnen zu multiplizieren, müssen wir die Vorzeichen XOR-verknüpfen (a ausgeben,0
wenn genau eines von ihnen ist0
, oder nichts, wenn beide oder keine vorhanden sind) und dann die Größen multiplizieren (und so viele1
s ausgeben ). Wir werden die Multiplikation durch wiederholte Addition erreichen.Zeichen Bits
Ausgehend von den beiden Quellen
?
trennen wir die Vorzeichen von den verwendeten Größen ab+
.0
s (Vorzeichenbits) biegen nach links ab und sind entlang der oberen Reihe ausgerichtet, während1
s (Größen) nach rechts abbiegen und in den beidenB
Kollektoren landen .Der Abschnitt, der die Zeichen behandelt, sieht folgendermaßen aus:
Wenn beide Zahlen nicht positiv sind, kommen zwei
0
Bits von oben hereinv
. Der erste reflektiert von der Spitze\
, wird nach Süden geschickt und reflektiert von der Spitze/
. In der Zwischenzeit passiert das zweite Bit die deaktivierte Oberseite\
und wird von der Unterseite reflektiert\
. Die beiden Bits passieren sich gegenseitig, durchlaufen die jetzt deaktivierten Splitter in der unteren Reihe und verlassen das Spielfeld.Wenn nur eine der Zahlen nicht positiv ist,
0
kommt eine von oben. Es springt um alle drei Splitter herum und landet wieder in nördlicher Richtung, bis es auf den trifftv
und erneut nach Süden geschickt wird. Dieses Mal passiert es die deaktivierten Splitter und erreicht die<
, die es in die Spüle schickt!
.Loops zum Speichern der Größen
Die Größe der ersten Zahl wird
B
in diesem Abschnitt in den Sammler eingegeben:Bevor der
B
Collector geöffnet wird, gibt derA
Collector die0
darin platzierte Single frei , die dann am Ende der Warteschlange eingehtB
. Wir werden es als Flag-Wert verwenden, um die Schleife zu beenden, wenn alle1
BitsB
weg sind.Bei jedem
B
Öffnen der Kollektoren entfernt der\
Splitter das erste Bit aus der Warteschlange und sendet es an die Verarbeitungslogik in der Mitte. Der Rest der Bits geht inC
und wenn dieC
Kollektoren geöffnet werden, werden sie zurück in gesendetB
.Die Größe der zweiten Zahl wird
B
in diesem Abschnitt in den Kollektor eingegeben:Wenn sich die
B
Kollektoren öffnen, gehen die Bits in den unteren Dupneg~
. Die ursprünglichen1
Bits biegen nach rechts ab und werden in der Mitte nach Westen in die Verarbeitungslogik gesendet. Die negierten Kopien0
drehen sich nach links und treffen sofort einen anderen Dupneg. Hier0
biegen Sie rechts ab und verlassen das Spielfeld, während die (jetzt doppelt) negierten1
s links abbiegen und in gesendet werdenC
. WennC
geöffnet, gehen sie zurück inB
.Wiederholte Zugabe
Die zentrale Verarbeitungslogik ist dieser Teil:
Bits von beiden Schleifen (eine von der Westseite und alles von der Ostseite) werden nach Süden in den Switch gesendet
=
. Das Timing muss so eingestellt werden, dass das Bit aus der westlichen Schleife zuerst dort ankommt. Wenn dies der Fall ist1
, wechselt der Schalter zu}
und sendet die folgenden Bits nach Osten in die Senke!
, um ausgegeben zu werden. Sobald alle1
s weg sind, bekommen wir die0
, die den Schalter auf ändert{
. Dies sendet die folgenden Bits in das@
, was das Programm beendet. Kurz gesagt, wir geben die (unäre) Größe der zweiten Zahl so oft aus, wie es1
s in der (unären) Größe der ersten Zahl gibt.quelle
Python 3 , 11 Bytes
Probieren Sie es online!
Funktioniert auch für Ganzzahlen unter
2**32
in Python 2.quelle
Java 8,
109 BytesProbieren Sie es hier aus.
Java 7, 31 Bytes
Probieren Sie es hier aus.
Als volles Programm (
99 bis90 Bytes) :Probieren Sie es hier aus.
quelle
*
deinem vollen Programm, von dem installiert werden sollte+
.a,b
im Lambda-Ausdruck keine Klammern .Pyth, 2 Bytes
Probieren Sie es hier aus!
Pyths automatische Auswertung steht hier im Weg. Um das zu umgehen, verwende ich eine explizite Auswertung für eines der Argumente
quelle
TI-Basic, 2 Bytes
Sehr einfach.
quelle
Ans
ist keine zulässige E / A-Methode .PHP, 21 Bytes
Nimmt Eingaben von Befehlszeilenargumenten entgegen. Funktioniert auch mit Schwimmern.
quelle
Retina ,
39-35BytesVielen Dank an Leo, der mir erlaubt hat, eine Idee von ihm zu verwenden, die letztendlich 4 Bytes einspart.
Der Eingang ist zeilenweise getrennt.
Probieren Sie es online! (Durch Leerzeichen getrennte Testsuite zur Vereinfachung.)
Erläuterung
Die ersten beiden Stufen geben ein Minuszeichen aus, wenn genau einer der beiden Eingänge negativ ist. Sie tun dies, ohne die Eingabe tatsächlich zu ändern. Dies geschieht, indem man sie in der zweiten Stufe mit gruppiert
)
und in einen Trockenlauf mit umwandelt*
. Die\
Option in der zweiten Stufe verhindert das Drucken eines nachfolgenden Zeilenvorschubs.Zuerst entfernen wir alles außer den Minuszeichen.
Dann löschen wir die Minuszeichen, wenn noch zwei übrig sind.
Nun konvertieren wir jede Zeile in die unäre Darstellung ihres absoluten Wertes. Das Minuszeichen wird dadurch entfernt
$*
nur nach der ersten nicht-negativen Zahl im Match gesucht wird (dh Minuszeichen werden nicht erkannt und ignoriert).Die erste Zeile wird konvertiert in
_
, indem einzelne1
s abgeglichen werden, solange sie neben der vorherigen Übereinstimmung liegen (daher können wir die nicht abgleichen1
s in der zweiten Zeile nicht zuordnen, da der Zeilenvorschub diese Kette unterbricht).Dies führt die tatsächliche Multiplikation durch. Wir ersetzen jede
_
(in der ersten Zeile) sowie die gesamte zweite Zeile alles nach diesem Spiel. Die_
Übereinstimmungen umfassen daher die gesamte zweite Zeile (multipliziert mit der Anzahl von0
s in der ersten Zeile), und die zweite Zeile wird entfernt, da nach dieser Übereinstimmung nichts mehr vorhanden ist. Natürlich wird das Ergebnis auch etwas Müll in Form von enthalten_
S und Linefeeds enthalten, aber das spielt keine Rolle.Zum Schluss zählen wir einfach die Anzahl der
1
s im Ergebnis.quelle
MATLAB,
54 Bytesdot
Nimmt das Skalarprodukt zweier Vektoren gleicher Länge. Wenn wir es mit zwei Skalaren füttern, multipliziert es einfach die beiden Zahlen.prod
Nimmt das Produkt der Werte in allen Zeilen jeder Spalte einer Matrix. Wenn die Matrix eindimensional ist (dh ein Vektor), wirkt sie entlang der Nicht-Singleton-Dimension und nimmt das Produkt aller Elemente im Vektor.dot
ist ein Byte kürzer alsprod
das noch offensichtlicher eingebautetimes
.Nennen Sie es als solches:
quelle
PigeonScript , 1 Byte
Erläuterung:
*
Überprüft den Stapel, um festzustellen, ob dort etwas vorhanden ist. Andernfalls werden Sie zur Eingabe aufgefordert und die Eingaben werden miteinander multipliziertquelle
Perl 6 , 4 Bytes
Dies ist nur der gewöhnliche Infix-Multiplikationsoperator
*
, ausgedrückt als gewöhnliche Funktion. Als Bonus gibt es, wenn es eine Zahl gibt, diese Zahl zurück, und wenn es keine Zahlen gibt1
, die multiplikative Identität.quelle
*×*
> <>, 5 Bytes
Nimmt die Eingabe als ASCII-Zeichen und gibt eine Zahl aus.
Erläuterung:
Das könntest du auch tun
Aber ich denke, meine Lösung ist noch cooler.
Eine andere Möglichkeit besteht darin, das Semikolon zu löschen, was dazu führen würde, dass der Zeiger vom Spiegel abprallt, den Druckbefehl ausführt und einen Fehler ausgibt, da der Stapel leer ist.
quelle
Intel 8080 Maschinencode , MITS Altair 8800 , 28 Bytes
Dies implementiert eine binäre Multiplikation auf der Intel 8080-CPU (ca. 1974), die keine Multiplikations- oder Divisionsanweisungen hatte. Eingaben sind 8-Bit-Werte und das Produkt ist ein 16-Bit-Wert, der in der zurückgegeben wird
BC
Registerpaar zurückgegeben wird.Hier finden Sie den Maschinencode sowie schrittweise Anleitungen zum Laden des Programms in einen Altair 8800 mithilfe der Schalter an der Vorderseite.
Probieren Sie es online!
Wenn Sie alles richtig eingegeben haben, sieht Ihr RAM-Inhalt in der Maschinenstatus-Schublade im Simulator folgendermaßen aus:
Eingang
Multiplikator im
C
Register und Multiplikand inD
. Die Aktie Altair hat keineSTDIN
Eingabe, daher erfolgt die Eingabe nur über Schalter an der Vorderseite.Ausgabe
Das Ergebnis wird binär auf den
D7
-D0
Leuchten (obere rechte Reihe) angezeigt .5 x 16 = 80 (0101 0000)
4 x 5 = 20 (0001 0100)
7 x 9 = 63 (0011 1111)
8 x -9 = -72 (1011 1000)
Hinweis zur Kompatibilität: Dies sollte auch auf dem IMSAI 8080 ausgeführt werden , obwohl es derzeit nicht getestet wird.
quelle
C #, 10 Bytes
Es ist nur eine einfache Multiplikation.
quelle
Gelee , 1 Byte
Probieren Sie es online!
Obligatorische Jelly Vorlage.
quelle
Clojure, 1 Byte
: P Als Bonus funktioniert dies mit einer beliebigen Anzahl von Argumenten:
Interessanterweise können Sie den Quellcode leicht erhalten:
quelle
Eule , 11 Bytes
Dies kann einer Funktion wie dieser zugewiesen werden:
und so genannt:
quelle