Obwohl diese Herausforderung in den meisten "Standard" -Sprachen wahrscheinlich trivial ist, richtet sie sich an Sprachen, die so esoterisch, einfach und / oder schwierig zu bedienen sind, dass sie auf dieser Website nur sehr selten zu finden sind. Es sollte ein interessantes Problem zu lösen sein, also ist dies Ihre Gelegenheit, die seltsame Sprache auszuprobieren, über die Sie gelesen haben!
Die Aufgabe
Nehmen Sie zwei natürliche Zahlen a
und b
als Eingabe und geben Sie zwei andere Zahlen aus: das Ergebnis der Ganzzahldivision a/b
und den Rest einer solchen Division ( a%b
).
Das ist Code-Golf : Die kürzeste Antwort (in Bytes) für jede Sprache gewinnt!
Input-Output
- 0 <=
a
<= 255, 1 <= b
<= 255. Jeder Ihrer Eingänge (und auch Ausgänge) passt in ein einzelnes Byte.
- Sie können ein beliebiges Format sowohl für die Eingabe als auch für die Ausgabe auswählen, sofern die beiden Zahlen klar voneinander zu unterscheiden sind (z. B. kein Ausdruck der beiden Ergebnisse ohne Trennzeichen).
Beispiele
a,b->division,remainder
5,7->0,5
5,1->5,0
18,4->4,2
255,25->10,5
Hinweis: Builtins, die sowohl das Ergebnis der Division als auch den Rest zurückgeben, sind verboten . Zeigen Sie uns zumindest, wie Ihre Sprache damit umgeht, zwei Funktionen auf dieselben Argumente anzuwenden.
Hinweis 2: Wie immer ist eine Erklärung der Funktionsweise Ihres Codes sehr willkommen, auch wenn er für Sie lesbar aussieht, ist dies für andere möglicherweise nicht der Fall!
Bestenliste
Hier ist ein Stack-Snippet, um 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
var QUESTION_ID=114003,OVERRIDE_USER=62393;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={};e.forEach(function(e){var o=e.language;/<a/.test(o)&&(o=jQuery(o).text().toLowerCase()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link,uniq:o}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.uniq>s.uniq?1:e.uniq<s.uniq?-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}#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=617d0685f6f3"> <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="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td><a href="{{LINK}}">{{SIZE}}</a></td></tr></tbody> </table>
a b
bereitzustellenb a
?You may choose any format you like for both input and output, as long as the two numbers are clearly distinguishable
1
.Antworten:
BitCycle ,
1467964 BytesIch habe gerade festgestellt, dass ein ganzer Abschnitt meines ursprünglichen Codes nicht erforderlich war. Riesige Reduzierung!
Das Programm nimmt Eingaben in unary über die Befehlszeile vor, wobei der Divisor an erster Stelle steht. Es gibt den Quotienten und den Rest in Unary aus, getrennt durch ein
0
. Zum Beispiel, hier ista=11
,b=4
,a/b=2
,a%b=3
:Ungolfed in Aktion
Hier ist meine ungolfed Version Computing
a=3
,b=5
mit Animation eingeschaltet (sorry über die glitchiness):Versuch einer Erklärung
Die Erklärung gilt für die ungolfed Version. Bevor Sie es angehen, empfehle ich Ihnen dringend, die Esolangs-Seite zu lesen , um ein Gefühl dafür zu bekommen, wie die Sprache funktioniert.
Der Algorithmus sieht folgendermaßen aus:
0
gefolgt von den vorhandenen Dividendenbits, und schließen Sie dann ab.Das Herzstück des Codes sind die Beziehungen zwischen den Sammlern (die Großbuchstaben). Da es mit jedem Buchstaben mehrere separate Kollektoren sind, lassen Sie uns auf sie beziehen , wie
A1
,A2
,B1
,B2
usw., die Nummerierung von oben nach unten.A1
undA2
halten Sie den Divisor bzw. Dividend am Anfang der Hauptschleife.B1
.C1
und eins inC3
. Der Rest der Dividende fließt inB2
.C2
.C3
oderC2
für die Ausgabe zu verarbeiten. Der Rest der Dividende fließt inC4
.B
Kollektoren irgendwelche Bits , werden die Inhalte zu denA
Kollektoren zurückgeführt und in der inneren Schleife fortgesetzt.A
undB
Kollektoren alle leer sind,C
öffnen sich die Kollektoren und wir gehen zur Verarbeitungsstufe über:C1
undC4
lade ihren Inhalt (den Divisor bzw. die verbleibende Dividende) inD1
undD3
.C2
leer ist, wird der Quotient immer noch gedruckt.C3
nach rechts oben=
. Das erste1
Bit geht direkt zu!
und wird ausgegeben.1
Bit durchgeht, aktiviert es den Schalter nach rechts, wodurch alle nachfolgenden Bits von der Karte gesendet werden.C2
nicht leer, drucken wir den Rest.C2
wird auf a negiert0
und durch den Switch geleitet. Das0
geht weiter!
und wird ausgegeben.0
Bit passiert, aktiviert es den Schalter, um nach links zu zeigen. Jetzt gehen alle Bits vomC3
Schalter nach links und werden in den umgelenkt!
, wobei der gesamte Rest ausgegeben wird.C2
wird ebenfalls an gesendetD2
.D
öffnen sich die Sammler.D2
ist, bedeutet das, dass wir nur den Rest gedruckt haben. Das Bit vonD2
trifft das@
, was das Programm beendet.D1
und dieD3
Schleife wieder inA1
undA2
starten bzw., und die Hauptschleife über.quelle
Brainfuck ,
4341 BytesDies verwendet eine modifizierte Version meines Destruktivmodul-Algorithmus auf Esolangs .
Das Programm liest zwei Bytes - d und n , in dieser Reihenfolge - von STDIN und druckt zwei Bytes - n% d und n / d , in dieser Reihenfolge - nach STDOUT. Hierfür ist ein Brainfuck-Interpreter mit einem doppelt unendlichen oder kreisförmigen Band erforderlich, z. B. das auf TIO.
Probieren Sie es online!
Wie es funktioniert
Vor dem Programmstart haben alle Zellen den Wert 0 . Nach dem Lesen von d von STDIN (
,
), einem Schritt nach links (<
) und dem Lesen von n von STDIN (,
) sieht das Band wie folgt aus.Unter der Annahme, dass n> 0 ist , betreten wir als nächstes die while-Schleife
Dadurch wird das Band wie folgt transformiert.
Zuerst
>->+<
Fortschritte der Zelle C und dekrementiert sie schreitet dann zur Zelle D und erhöht sie, und schließlich geht zurück auf Zelle C . Was als nächstes passiert, hängt davon ab, ob der Wert von Zelle C Null ist oder nicht.Wenn Zelle C einen positiven Wert enthält
[>]
(nach rechts gehen, während die Zelle nicht Null ist), wird zu Zelle E übergegangen .>>>>+<<<
rückt zu Zelle J vor, um es zu erhöhen, und kehrt dann zu Zelle F zurück .Da Zelle F immer 0 enthält , wird die while-Schleife
[<+>-]
vollständig übersprungen und<<
kehrt zu Zelle D zurück .Schließlich, da weder D noch C halten 0 ,
[<]
(gehen Sie nach links , während die Zelle nicht Null ist) wird zu Zelle retrozedieren A .Wenn die Zelle C hält 0 , die Schleife
[>]
vollständig übersprungen;>>>>+<<<
rückt zu Zelle G vor, um es zu erhöhen, und kehrt dann zu Zelle D zurück .An diesem Punkt D hält d (in der Tat die Summe der Werte in C und D wird immer d ), so
[<+>-]
(bei D positive, Inkrement C und Dekrement - D ) wird eingestellt C bis D und D bis 0 .Schließlich
<<
retrozediert zu Zelle B ,[<]
(nach links , während die Zelle nicht Null ist) , weiter nach links zu Zelle A .In beiden Fällen
>-
rückt die Zelle B vor und dekrementiert sie, und die Schleife beginnt von vorne, es sei denn, dies löscht sie auf Null.Nach k Iterationen sieht das Band wie folgt aus.
Nach n Iterationen wird B auf Null gesetzt und wir brechen aus der Schleife aus. Die Sollwerte ( n% d und n / d ) werden in den Zellen gespeichert werden , D und G , so
>>.>>>.
druckt sie.quelle
Funktion ,
224108 BytesDie Byteanzahl setzt eine UTF-16-Codierung mit Stückliste voraus.
Probieren Sie es online!
Das Obige definiert eine Funktion
f
, die zwei ganze Zahlen nimmt und sowohl ihre Division als auch ihr Produkt zurückgibt (Funktionen in Funciton können mehrere Ausgänge haben, solange die Summe der Ein- und Ausgänge 4 nicht überschreitet).Die Verwendung von zwei Eingabewerten für mehrere Zwecke ist eigentlich ziemlich trivial: Sie trennen den Stecker einfach mit einer T-Verzweigung ab, wobei der Wert entlang beider Zweige dupliziert wird, und wir können ihn dann für Division und Modulo getrennt an die eingebauten Werte weitergeben.
Eigentlich habe ich doppelt so lange gebraucht, um herauszufinden, wie das Ergebnis dem Benutzer angezeigt werden soll, als nur, um die Lösung zu implementieren.
Außerdem hat Funciton einen eingebauten DivMod,
÷%
und amüsanterweise sind die eingebauten÷
und von%
meiner Lösung verwendeten Funktionen in Bezug auf implementiert÷%
. Meinef
obige Funktion ist jedoch nicht ganz identisch mit÷%
: Ich musste die Reihenfolge der Eingaben vertauschen, und obwohl es anscheinend einfach sein sollte, dies zu ändern, war ich bisher nicht in der Lage, dies zu tun, ohne die Byteanzahl zu erhöhen .quelle
JavaScript (ES6), 17 Byte
Vielen Dank an @Arnauld für das Abschlagen eines Bytes
Erhält Eingaben im Format (x) (y)
Ermittelt den Grundwert von x / y durch bitweises Durchführen oder
Ermittelt den Restwert durch x% y
Setzt beide Werte in ein Array, sodass beide zurückgegeben werden können
Probieren Sie es online!
quelle
APL (Dyalog) , 5 Bytes
-2 Bytes dank @ngn
Dies ist eine Spitze (2-Zug) einer Gabel (3-Zug), wobei der rechte Zinken der Spitze eine abgeleitete Funktion ist (das Ergebnis eines auf eine Funktion angewendeten Operators):
⌊
Boden von÷
Teilung,
verkettet an|
Divisionsrest⍨
mit vertauschten Argumenten (APL-Modul ist "rückwärts")Probieren Sie es online!
quelle
⌊÷,|⍨
Brachylog , 6 Bytes
Probieren Sie es online!
Erläuterung
Wir missbrauchen das Metapredikat
ᶠ findall
, um zwei unterschiedliche Prädikate auf die Eingabeliste mit zwei Argumenten anzuwenden:quelle
MATL ,
1210 BytesEingabe ist
a
dannb
. Die Ausgabe ist der Rest, dann der Quotient.Probieren Sie es online!
Erläuterung
Dies vermeidet sowohl Modulo als auch Division. Stattdessen wird die Umformung von Arrays verwendet :
a+1
Elementen ungleich Null.b
Zeilen. Dies wird bei Bedarf automatisch mit Nullen aufgefüllt.1
, sind jeweils der Rest und der Quotient.Betrachten Sie zum Beispiel
a=7
,b=3
.quelle
Mathematica,
20 bis18 BytesGeringfügiger Missbrauch der flexiblen Ausgaberegeln: Das Ergebnis wird als gegeben
div[mod]
, was unbewertet bleibt. Die einzelnen Nummern können mitresult[[0]]
und extrahiert werdenresult[[1]]
.Und hey, es ist nur ein Byte länger als das lächerlich benannte eingebaute
QuotientRemainder
.Mathematica bietet eine praktische Möglichkeit, mehrere Funktionen auf dieselbe Eingabe anzuwenden, die jedoch drei Byte länger ist:
quelle
quotRem
Vergleich zum Aufrufenquot
und fürrem
sich genommen erheblich Zeit sparen .05AB1E , 5 Bytes
Probieren Sie es online!
05AB1E hat einen Fehler, so dass implizite Eingaben nicht funktionieren :(Emigna merkte an, dass Eingaben oft in umgekehrter Reihenfolge erfolgen.quelle
You may choose any format you like for both input and output, as long as the two numbers are clearly distinguishable
, dass Sie entscheiden können, dass die Eingaben als genommen werdendivisor, dividend
. Sie könnendivisor, dividend
in der Antwort einfach angeben, dass Eingaben als genommen werden , und sie werden klar unterscheidbar sein :)Qualle , 14 Bytes
Probieren Sie es online!
Erläuterung
Qualle ist eine schöne Sprache, wenn es darum geht, mehrere Funktionen auf einen Eingang anzuwenden. Die Sprache ist 2D und alle Binärfunktionen suchen nach Süden für einen Eingang und nach Osten für einen anderen. Wenn wir uns also einem Wert von Westen und Norden nähern, können wir ihn zwei Funktionen zuweisen, ohne ihn im Code duplizieren zu müssen.
Die beiden
i
s im Programm werden beim Programmstart durch die beiden Eingabewerte ersetzt. Jetzt%
ist die Teilung. Es nimmt eine Eingabe direkt aus dem Osten, und wenn es nach Süden geht, trifft esE
die Umleitungen, die auch nach Osten suchen. Beide Eingaben werden also%
als Argumente eingegeben.|
ist das eingebaute Modulo, das im Grunde das Gleiche tut, aber am Ende nach Süden schaut, um beide Puts zu finden.Wir verknüpfen beide Ergebnisse zu einem Paar mit
,
. Dannm
folgt die Floor-Funktion (die wir brauchen, weil%
es sich um eine Gleitkommadivision handelt) und schließlich drucken wir das Ergebnis mitp
.quelle
Cubix , 12
13BytesWelche Karten auf den folgenden Würfel
Probieren Sie es hier aus
Erklärung mit ausgeführten Schritten
,I|I,
- Beginnt mit einer überflüssigen Ganzzahldivision, holt die erste Ganzzahl von der Eingabe, reflektiert zurück und holt die nächste Ganzzahl von der Eingabe, teilt dann erneutO;
- gibt das Ergebnis der Ganzzahldivision aus und füllt es aus%
- führt den Mod aus. Dies könnte später geschehen, endete aber hier.S\o
- Leerzeichen zum Stapeln hinzufügen, umleiten und Leerzeichen ausgeben.W;
- Nach links verschieben und Leerzeichen aus dem Stapel entfernen.O|@
- Den zuvor berechneten Mod ausgeben , durch den horizontalen Reflektor laufen und anhalten.quelle
Brain-Flak ,
5654 BytesProbieren Sie es online!
-2 Bytes dank Wheat Wizard
Erläuterung
Die derzeit bekannteste Ganzzahldivision und das Modulo in Brain-Flak sind sehr ähnlich (tatsächlich ist die derzeit verwendete Ganzzahldivision nur eine Modifikation, die ich auf Feersums Modulo vorgenommen habe).
Vergleich von Modulo und Integer Division:Praktischerweise verwendet das Ganzzahlteilungsprogramm nur den dritten Stapel zum Speichern von Daten, während das Modulo-Programm nur die normalen zwei Stapel zum Speichern von Daten verwendet. Indem sie einfach beide gleichzeitig ausführen, kollidieren sie nicht miteinander.
Kombination von Modulo und Integer Division:Schließlich wurden sowohl das Integer-Divisions- als auch das Modulo-Programm, die in dieser Kombination verwendet wurden, so entworfen, dass sie stapelrein sind (keinen Müll auf den Stapeln zurücklassen / nicht von der (Nicht-) Existenz von Werten auf den Stapeln abhängen, außer deren Eingabe), aber das ist nicht notwendig für dieses Problem. So können wir zwei Bytes sparen, indem wir uns nicht die Mühe machen, die Null am Ende der Hauptschleife zu platzieren, und weitere zwei Bytes, indem wir am Anfang nicht die Null drücken, anstatt auf den Nullabstand am Boden der Stapel zu vertrauen.
Dies gibt uns das endgültige Programm:Zur Erklärung des Integer-Divisionsprogramms siehe die Antwort von feersum
Erklärung der Ganzzahldivision in Kürze ...
quelle
Java 8, 18 Bytes
(a,b)->a/b+","+a%b
Dies ist ein Lambda-Ausdruck des Typs
BiFunction<Integer, Integer, String>
.Ich bin überrascht ... das ist eigentlich eine ziemlich prägnante Lösung für Java. Gehen Sie Lambda-Ausdrücke!
quelle
Brain-Flak ,
168 148110 BytesIch denke, ich hätte zuerst das Wiki überprüfen sollen
Format:
Probieren Sie es online!
quelle
sed, 36 bytes
35 Byte Code, +1 für das
-r
Flag.Nimmt Eingaben in unären, durch Leerzeichen getrennten Formaten vor, wobei die kleinere Zahl an erster Stelle steht. Ausgabe als unär, wobei der Quotient an erster Stelle in
1
s und der Rest an zweiter Stelle in stehtx
s steht. (Wenn dies nicht akzeptabel ist, lassen Sie es mich wissen und ich werde es1
wie die Eingabe in durch Leerzeichen getrennte s ändern .)Erläuterung
quelle
Excel 2013,
31 3026 BytesErläuterung
Die Eingabe erfolgt in Zelle
A1
undB1
. Dies gibt einfach die Rückgabewerte derFLOOR
undMOD
-Funktion zurück, die für die Aufteilung und für den Rest gelten. Diese Werte sind durch ein Komma getrennt.quelle
FLOOR(A1/B1;1)
anstelle vonQUOTIENT(A1;B1)
FLOOR(A1/B1;1)
meines Erachtens durch "INT (A1 / B1)" ersetzen , um 4 weitere Bytes zu sparenPython 2 , 20 Bytes
Probieren Sie es online!
Eingebaut, 6 Bytes
Probieren Sie es online!
quelle
Gelee , 3 Bytes
Probieren Sie es online!
quelle
OIL ,
134106103102 BytesÜbernimmt die Eingabe von stdin, die zwei durch eine neue Zeile getrennten Zahlen. Gibt das Ergebnis der Ganzzahldivision, eine neue Zeile und den Rest aus.
Dies ist eines der kompliziertesten OIL-Programme, die ich je geschrieben habe, da es in OIL keine integrierten Funktionen für Division, Rest, Addition, Subtraktion usw. gibt. Es funktioniert mit der primitiven Art der Division: wiederholte verschachtelte Dekrementierung.
Ich präsentiere den Code in einem kommentierten Format mit Kommentaren im Stil von Skriptsprachen. Vor der Ausführung müssen die Kommentare entfernt werden.
edit: 3 weitere Bytes wurden abgeschnitten, indem eine "Konstante" an eine einstellige Stelle verschoben wurde (weniger Bytes als Referenz) und dann 2 Nullstellen impliziert wurden (indem stattdessen eine leere Zeile verwendet wurde. Eine davon hätte ich tun können Vor).
edit: Und noch ein Byte, indem die anfängliche Null implizit gemacht wird. Wir brauchen wirklich nur eine einzige wörtliche Null.
quelle
Retina , 14 Bytes
Lassen Sie uns die Eingabe- / Ausgabeformate missbrauchen!
Nimmt die Eingabe als
b\na
unär, wobei als unäres Zeichen ein einzelnes Zeichen verwendet wird, das keine Ziffer und kein Zeilenumbruch ist. Gibt den Quotienten als Dezimalzahl aus, unmittelbar gefolgt vom Rest als Unärzahl, wobei dasselbe Zeichen wie die Eingabe verwendet wird.Probieren Sie es online!
(.*) ¶(\1)*
Stimmt mit der ersten Nummer überein, dann mit einer neuen Zeile (¶ ist die Abkürzung von Retina für \ n) und dann mit der ersten Nummer so oft wie möglich. Die Anzahl der Übereinstimmungen der zweiten Gruppe ergibt sich aus der Division, der nicht übereinstimmende Teil ist der Rest.Mit
$#2
ersetzen wir alles, was in der vorherigen Zeile abgeglichen wurde, durch die Anzahl der Erfassungen der zweiten Gruppe und erhalten dann unser Ergebnis.quelle
ArnoldC ,
286283 BytesProbieren Sie es online!
Wie es funktioniert
Ausgabeformat
quelle
Labyrinth , 11 Bytes
Probieren Sie es online!
Erläuterung
Die IP stößt dann auf eine Sackgasse, dreht sich um und das Programm wird aufgrund der versuchten Division durch Null beendet, wenn
%
es erneut ausgeführt wird.quelle
C 32 Bytes
Probieren Sie es online!
quelle
> <> ,
27 2616 + 1 = 17 BytesHinweis
-v
Flags, siehe TIO für ein Beispiel.Probieren Sie es online!
Erläuterung
Beachten Sie, dass der Stapel aufgrund des verwendeten Flags als
A, B
, woA
undB
als erste und zweite Eingabe beginnt-v
.quelle
į
wird 255.-v
Flag) sparen .C, 21 Bytes
Ein Makro, das f (a, b) durch zwei durch Kommas getrennte Begriffe ersetzt. Obwohl Sie es besser an eine Funktion übergeben, sonst gibt es keine Möglichkeit, die 2 auseinander zu nehmen.
Probieren Sie es online
quelle
Haskell , 21 Bytes
Probieren Sie es online! Anwendungsbeispiel:
13#2
Rückgabe(6,1)
. Ja, das ist ziemlich langweilig, allerdings etwas interessanter als dasdivMod
Build-in, das genauso funktioniert.Während wir gerade dabei sind, gibt es auch
quot
,rem
undquotRem
die verhalten sich genauso auf natürliche Zahlen wiediv
,mod
unddivMod
. Bei negativen Eingaben hat das Ergebnis vonmod
jedoch dasselbe Vorzeichen wie der Divisor, während das Ergebnis vonrem
dasselbe Vorzeichen wie die Dividende hat. Oder, wie in der Prelude-Dokumentation beschrieben ,quot
wird die Ganzzahldivision gegen Null unddiv
die Ganzzahldivision gegen negative Unendlichkeit abgeschnitten.Wie wäre es mit Nein
div
odermod
Einbauten?Keine Einbauten,
36 3231 BytesProbieren Sie es online! Anwendungsbeispiel:
13#2
Gibt zurück(1,6)
, dh dasmod
Ergebnis ist das erste und dasdiv
Ergebnis das zweite. Wenna
kleiner istb
, danna mod b
ista
unda div b
ist0
, so(a,0)
wird zurückgegeben. Ansonsten rekursivmod
unddiv
vona-b
und berechnenb
,1
zum Divisionsergebnis addieren und den Rest behalten.Das Addieren von 1 zum Divisionsergebnis wird durch Verwenden von erzielt
<$>
, das üblicherweisemap
zum Abbilden von Funktionen über Listen verwendet wird, aber auch für Tupel funktioniert, die Funktion wird jedoch nur auf das zweite Tupelelement angewendet.Edit: Dank xnor ein Byte gespeichert!
quelle
<$>
auf einem Tupel an seinem zweiten Elemente zu handeln:a#b|a<b=(a,0)|m<-a-b=(+1)<$>m#b
.SWI-Prolog, 109 Bytes
Ausgabe:
Beschreibung:
Einfacher rekursiver Algorithmus ohne integrierte Division oder Modulo. Es zählt einfach "wie oft passt die zweite Zahl in die erste?" und meldet das Ergebnis (vereinheitlicht mit D) mit dem Rest (R).
// edit: unnötige Leerzeichen entfernt
quelle
:-
in der letzten Zeile Leerzeichen gibt, in den anderen jedoch keine. Werden sie dort aus irgendeinem Grund benötigt? Gleiches gilt für dieE + 1
ZeitF-S
, in der keine Leerzeichen erforderlich sind.Gol> <> , 11 Bytes
Online-Dolmetscher
quelle
MATL, 5 Bytes
Probieren Sie es bei MATL Online aus!
Erläuterung
quelle
Ouroboros , 15 Bytes
Nimmt die Nummern in umgekehrter Reihenfolge (zB
10 42
). Probieren Sie es hier aus.Erläuterung
quelle