51
\$\begingroup\$

This challenge, while probably trivial in most "standard" languages, is addressed to those languages which are so esoteric, low-level, and/or difficult to use that are very rarely seen on this site. It should provide an interesting problem to solve, so this is your occasion to try that weird language you've read about!

The task

Take two natural numbers a and b as input, and output two other numbers: the result of the integer division a/b, and the remainder of such division (a%b).

This is : shortest answer (in bytes), for each language, wins!

Input/Output

  • 0<=a<=255, 1<=b<=255. Each of your inputs (and outputs too) will fit in a single byte.
  • You may choose any format you like for both input and output, as long as the two numbers are clearly distinguishable (e.g. no printing the two results together without a delimiter)

Examples

a,b->division,remainder
5,7->0,5
5,1->5,0
18,4->4,2
255,25->10,5

Note: Builtins that return both the result of the division and the remainder are forbidden. At least show us how your language deals with applying two functions to the same arguments.

Note 2: As always, an explanation of how your code works is very welcome, even if it looks readable to you it may not be so for someone else!


The Catalogue

The Stack Snippet at the bottom of this post generates the catalogue from the answers a) as a list of shortest solution per language and b) as an overall leaderboard.

To make sure that your answer shows up, please start your answer with a headline, using the following Markdown template:

## Language Name, N bytes

where N is the size of your submission. If you improve your score, you can keep old scores in the headline, by striking them through. For instance:

## Ruby, <s>104</s> <s>101</s> 96 bytes

If there you want to include multiple numbers in your header (e.g. because your score is the sum of two files or you want to list interpreter flag penalties separately), make sure that the actual score is the last number in the header:

## Perl, 43 + 2 (-p flag) = 45 bytes

You can also make the language name a link which will then show up in the snippet:

## [><>](https://esolangs.org/wiki/Fish), 121 bytes

/* Configuration */
var QUESTION_ID = 114003; // Obtain this from the url
// It will be like https://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 8478; // This should be the user ID of the challenge author.
/* App */
var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page;
function answersUrl(index) {
 return "https://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER;
}
function commentUrl(index, answers) {
 return "https://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER;
}
function getAnswers() {
 jQuery.ajax({
 url: answersUrl(answer_page++),
 method: "get",
 dataType: "jsonp",
 crossDomain: true,
 success: function (data) {
 answers.push.apply(answers, data.items);
 answers_hash = [];
 answer_ids = [];
 data.items.forEach(function(a) {
 a.comments = [];
 var id = +a.share_link.match(/\d+/);
 answer_ids.push(id);
 answers_hash[id] = a;
 });
 if (!data.has_more) more_answers = false;
 comment_page = 1;
 getComments();
 }
 });
}
function getComments() {
 jQuery.ajax({
 url: commentUrl(comment_page++, answer_ids),
 method: "get",
 dataType: "jsonp",
 crossDomain: true,
 success: function (data) {
 data.items.forEach(function(c) {
 if (c.owner.user_id === OVERRIDE_USER)
 answers_hash[c.post_id].comments.push(c);
 });
 if (data.has_more) getComments();
 else if (more_answers) getAnswers();
 else process();
 }
 }); 
}
getAnswers();
var SCORE_REG = /<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;
var OVERRIDE_REG = /^Override\s*header:\s*/i;
function getAuthorName(a) {
 return a.owner.display_name;
}
function process() {
 var valid = [];
 
 answers.forEach(function(a) {
 var body = a.body;
 a.comments.forEach(function(c) {
 if(OVERRIDE_REG.test(c.body))
 body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>';
 });
 
 var match = body.match(SCORE_REG);
 if (match)
 valid.push({
 user: getAuthorName(a),
 size: +match[2],
 language: match[1],
 link: a.share_link,
 });
 else console.log(body);
 });
 
 valid.sort(function (a, b) {
 var aB = a.size,
 bB = b.size;
 return aB - bB
 });
 var languages = {};
 var place = 1;
 var lastSize = null;
 var lastPlace = 1;
 valid.forEach(function (a) {
 if (a.size != lastSize)
 lastPlace = place;
 lastSize = a.size;
 ++place;
 
 var answer = jQuery("#answer-template").html();
 answer = answer.replace("{{PLACE}}", lastPlace + ".")
 .replace("{{NAME}}", a.user)
 .replace("{{LANGUAGE}}", a.language)
 .replace("{{SIZE}}", a.size)
 .replace("{{LINK}}", a.link);
 answer = jQuery(answer);
 jQuery("#answers").append(answer);
 var lang = a.language;
 lang = jQuery('<a>'+lang+'</a>').text();
 
 languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang, user: a.user, size: a.size, link: a.link};
 });
 var langs = [];
 for (var lang in languages)
 if (languages.hasOwnProperty(lang))
 langs.push(languages[lang]);
 langs.sort(function (a, b) {
 if (a.lang_raw.toLowerCase() > b.lang_raw.toLowerCase()) return 1;
 if (a.lang_raw.toLowerCase() < b.lang_raw.toLowerCase()) return -1;
 return 0;
 });
 for (var i = 0; i < langs.length; ++i)
 {
 var language = jQuery("#language-template").html();
 var lang = langs[i];
 language = language.replace("{{LANGUAGE}}", lang.lang)
 .replace("{{NAME}}", lang.user)
 .replace("{{SIZE}}", lang.size)
 .replace("{{LINK}}", lang.link);
 language = jQuery(language);
 jQuery("#languages").append(language);
 }
}
body {
 text-align: left !important;
 display: block !important;
}
#answer-list {
 padding: 10px;
 width: 290px;
 float: left;
}
#language-list {
 padding: 10px;
 width: 500px;
 float: left;
}
table thead {
 font-weight: bold;
}
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="https://cdn.sstatic.net/Sites/codegolf/all.css?v=ffb5d0584c5f">
<div id="language-list">
 <h2>Shortest Solution 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>
<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>
<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>

asked Mar 27, 2017 at 12:38
\$\endgroup\$
21
  • \$\begingroup\$ Can I reverse the arguments, i.e. instead of providing a b providing b a instead? \$\endgroup\$ Commented Mar 27, 2017 at 13:29
  • \$\begingroup\$ @EriktheOutgolfer: You may choose any format you like for both input and output, as long as the two numbers are clearly distinguishable \$\endgroup\$ Commented Mar 27, 2017 at 13:30
  • \$\begingroup\$ @Emigna Yeah, I was not sure if reversing didn't make them indistinguishable though. \$\endgroup\$ Commented Mar 27, 2017 at 13:32
  • \$\begingroup\$ @EriktheOutgolfer if you know that they need to be reversed you have no problem in distinguishing them :) \$\endgroup\$ Commented Mar 27, 2017 at 13:45
  • \$\begingroup\$ Unfortunately, the BF algorithm doesn't work if the divisor is 1. \$\endgroup\$ Commented Mar 27, 2017 at 13:45

104 Answers 104

1
\$\begingroup\$

Microscript, 11 bytes

ivissCl/pl%
answered Mar 27, 2017 at 16:07
\$\endgroup\$
1
\$\begingroup\$

brainfuck, 47 bytes

>,>,-[+<[->-[>+>>]>[+[-<+>]>+>>]<<<<<]>>>>]<<.>.

Input/output in byte-values.

Try it online! - Computes 109,10->10,9, which in characters corresponds to m,\n->\n,\t

This is simply the esolang brainfuck divmod algorithm, with a wrapper for doing input/output and dealing with the case where divisor=1. I'm sure that someone could modify the algorithm to make it work with any input without the need for my boilerplate, but at least now there's a brainfuck answer^^

answered Mar 27, 2017 at 16:42
\$\endgroup\$
1
\$\begingroup\$

QBIC, 12 bytes

::?a'\`b,a%b

Explanation:

:: Gets two integers from the command line, a and b
? PRINT
 a'\`b Integer division in QBasic is '\', however, '\' is the command for ELSE in QBIC
 To tell QBIC not to swap in ELSE at the '\', we need a code literal.
 Everything from the ' to the `is passed on to QBasic without being parsed.
 ,a%b Also print a MOD b
answered Mar 27, 2017 at 21:04
\$\endgroup\$
1
\$\begingroup\$

J, 9 bytes

(<.@%,|~)

Usage:

 5 (<.@%,|~) 7
0 5
 5 (<.@%,|~) 1
5 0
 18 (<.@%,|~) 4
4 2
 255 (<.@%,|~) 25
10 5

Explanation:

In J a verb is like a function. Verbs are monadic (f x) or dyadic (x f y) and builtin verbs share the same symbol for different monadic and dyadic cases (e.g. x % y is division, % x is reciprocal).

(<.@% , |~) is a train of 3 verbs (fork in J terminology). A fork is: x (f g h) y = (x f y) g (x h y). Our verbs are:

  • |~ - | is modulo in J, but arguments are for some reason reverse to what you'd expect. We need the adverb ~ to reverse the arguments: x f~ y = y f x

  • <. @ % - x % y is division. @ is a conjunction denoting function composition: x (f @ g) y = f (x g y) (J applies right-to-left). <. x is floor.

  • , - Append.

The parenthesis are needed to form the 3-verb train. No parenthesis would parse as x <.@% (, (|~ y)).

answered Mar 27, 2017 at 21:51
\$\endgroup\$
1
\$\begingroup\$

QBasic 4.5, 23 bytes

INPUT a,b
?a\b,a MOD b

This speaks for itself: get two numbers (input needs to be separated by comma) and print their integer division and modulo. QBasic doesn't have a shorthand for MOD, the %symbol is reserved for defining integers.

answered Mar 27, 2017 at 21:16
\$\endgroup\$
1
\$\begingroup\$

REXX, 20 bytes

arg a b
say a%b a//b
answered Mar 28, 2017 at 12:16
\$\endgroup\$
1
\$\begingroup\$

jq, 25 characters

def f(a;b):a/b|floor,a%b;

Sample run:

bash-4.3$ jq -n 'def f(a;b):a/b|floor,a%b;f(255;25)'
10
5

On-line test

answered Mar 28, 2017 at 13:48
\$\endgroup\$
1
\$\begingroup\$

Gema, 25 characters

* *=@div{*;*} @mod{1ドル;2ドル}

Sample run:

bash-4.3$ gema '* *=@div{*;*} @mod{1ドル;2ドル}' <<< '255 25'
10 5
answered Mar 28, 2017 at 13:52
\$\endgroup\$
1
\$\begingroup\$

Mathematica, (削除) 32 (削除ここまで) 31 bytes

Thanks to Martin Ender for calming the code down to the tune of 1 byte!

0@#2//.a_@b_/;b>=#:>(a+1)[b-#]&

Just to mess with the language. Pure function taking the two positive integer arguments in the opposite (counterintuitive) order, and returning the quotient q and the remainder r in the same style, q[r], as in Martin Ender's Mathematica answer. While that answer is shorter, this one is ... more contrary? It implements repeated subtraction on expressions of the form a[b].

answered Mar 27, 2017 at 17:27
\$\endgroup\$
0
1
\$\begingroup\$

AHK, 35 bytes

a=%1%
b=%2%
Send,% a//b ","Mod(a,b)

AutoHotkey assigns numbers 1-n as variable names for the incoming parameters. It causes some problems when you try to use those in functions because it thinks you mean the literal number 1 instead of the variable named 1. The best workaround I can find is to assign them to different variables.

answered Mar 30, 2017 at 12:54
\$\endgroup\$
1
\$\begingroup\$

Forth, 4 bytes

/MOD

Top of stack will be the quotient, then the remainder.

answered Mar 30, 2017 at 18:32
\$\endgroup\$
1
\$\begingroup\$

TI-Basic (TI-84 Plus CE): 18 bytes

Prompt A
Prompt B
{int(A/B),remainder(A,B

Prompt, A, B, newline, {, int(, /, ,, and ) are all one-byte tokens, but remainder( is a two-byte token.

Prompt prompts you for the numbers.

int(A/B) computes the floored division of A and B

remainder(A,B computes remainder when A is divided by B

{ causes the values of int(A/B) and remainder(A,B) to be stored to a list. This list is implicitly returned, as it is the last evaluated value in the program.

The returned list is printed as {divison remainder}, with a space between the numbers.

Note: TI-Basic does not require closing parentheses or brackets in most cases; one exception being here with int(A/B): the ) is needed so as not to pass the value after the comma as a second argument to int( (which would raise an Error: Syntax).

answered Mar 31, 2017 at 2:36
\$\endgroup\$
1
  • 1
    \$\begingroup\$ You can save 2 bytes with Prompt A,B:int({A/B,remainder(A,B \$\endgroup\$ Commented Apr 6, 2017 at 18:42
1
\$\begingroup\$

Pip, 8 bytes

Pa//ba%b

Try it online!

Explanation:

 The input is read automatically into the vars a and b
 a%b calculate a%b. Since this is the last thing we do, this is printed implicitly.
 a//b We also want to show a // b (double slashes is integer div).
P So we need an explicit PRINT command.
answered Mar 27, 2017 at 21:08
\$\endgroup\$
0
1
\$\begingroup\$

Sinclair ZX80 16-bit Integer BASIC (4K ROM), ~152 BASIC bytes used (listing)

 1 LET R=0
 2 PRINT "ENTER A NUMBER THEN DIVISOR"
 3 INPUT Z
 4 INPUT D
 5 PRINT Z;"/";D;"=";
 6 GO SUB 9
 7 PRINT R;" REMAINDER ";Z
 8 STOP
 9 FOR I=1 TO 0
10 LET Z=Z-D
11 LET R=R+1
12 LET I=(Z>D)+(Z=D)
13 NEXT I
14 RETURN

Some notes:

Because the ZX80 (with the old ROM) can only handle 16-bit signed integer numbers, your range is -32768 to +32767 for your inputs. There is no native modulo function, nor does there seem to be a >= (if there is then I can't find it) - hence why this had to be split in line 12.

I haven't handled the division by zero in the program, but I guess that it entering 0 as your divisor will keep the sub-routine from line 9 in an infinite loop (as it should), except for the 16-bit integer range, so Z/0 should be Z r ∞.

The byte count is only an approximation for now.

answered Mar 28, 2017 at 9:00
\$\endgroup\$
1
\$\begingroup\$

Taxi, 1189 bytes

"," is waiting at Writer's Depot.Go to Post Office:w 1 l 1 r 1 l.Pickup a passenger going to The Babelfishery.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:s 1 l 1 r.Pickup a passenger going to Cyclone.Pickup a passenger going to Cyclone.Go to Cyclone:n 1 l 1 l 2 r.Pickup a passenger going to What's The Difference.Pickup a passenger going to Divide and Conquer.Pickup a passenger going to Divide and Conquer.Go to Divide and Conquer:n 2 r 2 r 1 r.Pickup a passenger going to Trunkers.Go to Trunkers:e 1 r 3 r 1 l.Pickup a passenger going to Cyclone.Go to Cyclone:w 2 r.Pickup a passenger going to Multiplication Station.Pickup a passenger going to Multiplication Station.Go to Multiplication Station:s 1 l 2 r 4 l.Pickup a passenger going to What's The Difference.Go to Cyclone:s 1 r 2 l 2 r.Pickup a passenger going to The Babelfishery.Go to What's The Difference:n 1 l.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:e 3 r.Pickup a passenger going to Post Office.Go to Writer's Depot:n 1 l 1 l 2 l.Pickup a passenger going to Post Office.Go to The Babelfishery:n 1 r 2 r 1 r.Pickup a passenger going to Post Office.Go to Post Office:n 1 l 1 r.

Try it online!


With line breaks:

"," is waiting at Writer's Depot.
Go to Post Office:w 1 l 1 r 1 l.
Pickup a passenger going to The Babelfishery.
Pickup a passenger going to The Babelfishery.
Go to The Babelfishery:s 1 l 1 r.
Pickup a passenger going to Cyclone.
Pickup a passenger going to Cyclone.
Go to Cyclone:n 1 l 1 l 2 r.
Pickup a passenger going to What's The Difference.
Pickup a passenger going to Divide and Conquer.
Pickup a passenger going to Divide and Conquer.
Go to Divide and Conquer:n 2 r 2 r 1 r.
Pickup a passenger going to Trunkers.
Go to Trunkers:e 1 r 3 r 1 l.
Pickup a passenger going to Cyclone.
Go to Cyclone:w 2 r.
Pickup a passenger going to Multiplication Station.
Pickup a passenger going to Multiplication Station.
Go to Multiplication Station:s 1 l 2 r 4 l.
Pickup a passenger going to What's The Difference.
Go to Cyclone:s 1 r 2 l 2 r.
Pickup a passenger going to The Babelfishery.
Go to What's The Difference:n 1 l.
Pickup a passenger going to The Babelfishery.
Go to The Babelfishery:e 3 r.
Pickup a passenger going to Post Office.
Go to Writer's Depot:n 1 l 1 l 2 l.
Pickup a passenger going to Post Office.
Go to The Babelfishery:n 1 r 2 r 1 r.
Pickup a passenger going to Post Office.
Go to Post Office:n 1 l 1 r.
answered Apr 11, 2017 at 20:53
\$\endgroup\$
1
\$\begingroup\$

Triangular, (削除) 21 (削除ここまで) 19 bÿtes

$\:A@$U.vS/p%_<%mp<

Prints the result of division, a newline, then the remainder. Formats into this triangle:

 $
 \ :
 A @ $
 U . v S
 / p % _ <
% m p < ÿ ÿ

ÿ is the no-op that is automaticallÿ inserted when there is no code to fill the smallest possible triangle.

Trÿ it online!

Explanation:

(削除) I don't know whÿ \ is the first character... (削除ここまで) Removed it and managed to save two bÿtes. Still don't know whÿ it was there in the first place. ಠ_ಠ

Directionals:

 .
 \ .
 . . .
 . . v .
 / . . . <
. . . <

This is how the interpreter sees the code, without directionals:

$:$S_%pUA@pm%
  • $: reads integer input to the stack and duplicates it. Stack contains input1 input1.
  • $S reads another input to the stack, then stashes it in memorÿ. Stack contains input1 input1 input2, and memorÿ contains input2.
  • _ divides the top two stack values. Now the stack contains input1 input1/input2.
  • % prints the top of stack as an integer.
  • p pops the top of stack. Now the stack contains input1.
  • U pulls memorÿ onto the stack. Now the stack contains input1 input2.
  • A pushes 10 to the stack. Stack contains input1 input2 10.
  • @ prints it as ASCII (newline).
  • p pops it - stack contains input1 input2.
  • m performs modulus on the top two stack values. Stack now contains input1%input2.
  • % prints the top of stack as an integer.
  • the IP then runs off the plaÿing field, and the program terminates.
answered Jun 16, 2017 at 18:13
\$\endgroup\$
1
\$\begingroup\$

Implicit, 9 bytes

$$|/%;_@9

Try it online!

$$|/%;_@9
$$ read two integer inputs
 | duplicate stack
 / division
 % print
 ; pop
 _ modulus
 @9 print HTAB (delimiter)
answered Sep 10, 2017 at 3:53
\$\endgroup\$
1
\$\begingroup\$

Whispers v2, 77 bytes

> Input
> Input
>> 1÷2
>> ⌊3⌋
>> 1%2
>> Output 4
>> Output 5
>> Then 6 7

Try it online!

answered Apr 12, 2018 at 12:08
\$\endgroup\$
0
1
\$\begingroup\$

Keg, (削除) 12 (削除ここまで) 10 bytes

Other than the creator, I think only I am actively using it. Therefore it is rarely seen on this site; in addition it is esoteric.

Takes 2 inputs separated with newlines.

¿¿:^:"$/"%

Explanation

¿¿# Takes 2 integer inputs: e.g. stack [1, 2]
 :# Duplicate the top item. stack [1, 2, 2]
 ^# Reverse the stack. stack [2, 2, 1]
 :# Duplicate the stack. stack [2, 2, 1, 1]
 "# Right shifts (put top to bottom) stack [1, 2, 2, 1]
 $# Swap top two items stack [1, 2, 1, 2]
 /# Divide top two stack [1, 2, 0.5]
 "# Right shifts stack [0.5, 1, 2]
 %# Modulos top two items stack [0.5, 1]
# Stack is implicitly outputted

TIO

answered Sep 15, 2019 at 8:07
\$\endgroup\$
1
\$\begingroup\$

33, 11 bytes

OcOcsdoilro

Try it online!

Explanation

OcOc | Harvest input from user
 s | Store "a" for later use
 doi | Print the integer division followed by a newline
 l | Get "a" back
 ro | Print the remainder of the division
answered Sep 15, 2019 at 9:04
\$\endgroup\$
1
\$\begingroup\$

Vyxal, 3 bytes

(ḭ%

Try it Online!

Try a test suite!

The header and footer are for formatting purposes. Otherwise takes arguments in reversed order.

Explained

(ḭ%
( # parallel apply the next two commands and collect into a list:
 ḭ% # integer divide and modulo
answered Apr 6, 2021 at 2:57
\$\endgroup\$
1
  • \$\begingroup\$ What is the input format, if I just want to use it without the test suite? \$\endgroup\$ Commented Apr 6, 2021 at 3:01
1
\$\begingroup\$

Factor, 20 bytes

Stack shuffling:

[ 2dup /i -rot mod ]

Try it online!

Explanation

 ! 24 9
2dup ! 24 9 24 9
/i ! 24 9 2
-rot ! 2 24 9
mod ! 2 6

Factor, 22 bytes

Data flow combinators:

[ [ /i ] [ mod ] 2bi ]

Try it online!

Factor, 25 bytes

Local variables:

[| a b | a b /i a b mod ]

Try it online!

Factor, 4 bytes

Built-in:

/mod

Try it online!

answered Nov 30, 2021 at 0:14
\$\endgroup\$
1
\$\begingroup\$

Google Sheets, 41 bytes

=concatenate(MOD(A1,A2)," ",QUOTIENT(A1,A2

A1 = divident and A2 = diviser

Last parentheses are auto completed.

answered Feb 12, 2022 at 17:36
\$\endgroup\$
1
\$\begingroup\$

Go, 38 bytes

func(a,b int)(int,int){return a/b,a%b}

Attempt This Online!

Anonymous function that takes 2 ints and returns 2 ints.

answered Jul 11, 2022 at 2:22
\$\endgroup\$
1
\$\begingroup\$

Desmos, 28 bytes

f(a,b)=[floor(a/b),mod(a,b)]

Try It On Desmos!

answered Jul 1, 2022 at 21:05
\$\endgroup\$
1
\$\begingroup\$

APL, 6 bytes

{0⍵⊤⍺}

Definitely not the shortest possible solution, but the classic one, should be compatible with any APL implementation.

answered Jul 11, 2022 at 3:10
\$\endgroup\$
1
\$\begingroup\$

Arturo, 15 bytes

$[x y][x/y x%y]

Try it!

answered Jul 27, 2023 at 3:18
\$\endgroup\$
1
\$\begingroup\$

Trilangle 1.3, 9 bytes

??!z,!:%@

Try it on the online interpreter!

TODO: Add colorized explanation

?? Read two numbers in
 z Duplicate them both
 : Compute the quotient
 ! Print the quotient followed by a newline
 , Pop the quotient off the stack
 % Compute the remainder
 ! Print the remainder (followed by a newline)
 @ Terminate the program

The z instruction (DP2) makes this fairly straightforward. Without that, the answer is a bit more involved:

Trilangle 1.0, 13 bytes

??j2S,':%@2!!
?? Read two numbers in
 2 Duplicate the one on top of the stack
 ' 2 Push the number 2...
 j ...and use it to index into the stack, copying the bottom to the top
 S Swap the top two values, so the stack is [a b a b] instead of [a b b a]
 , : ! Compute, print, and pop the quotient
 % ! Compute and print the remainder
 @ Terminate the program
answered Jul 27, 2023 at 19:06
\$\endgroup\$
1
\$\begingroup\$

BrainChild ASM, 6 bytes

asm function divmod(int,int)->int,int{
 apopb
 apopa
 divab
 apusha
 apushb
 ret
}

Hex-dump of bytecode

 0 1 2 3 4 5 6 7 8 9 A B C D E F
00000000: 35 34 23 2E 2F 14 | 54#./. 

Try It Online! With all tests

I/O on the stack which is the standard for BrainChild ASM functions. BrainChild's div instructions leave the remainder in the other register, conveniently.

BrainChild, 28 bytes

(int a,int b)->int,int=>a/%b

Try It Online! With all tests

DivMod operator ftw.

answered Nov 11, 2024 at 22:49
\$\endgroup\$
1
\$\begingroup\$

Bespoke, 115 bytes

using A at head,using B at tail
code for it can evaluate answer
having a div of/mod of integers
evaluating answer/s

STACKTOP MODULO gets the remainder of division, and STACKTOP QUOTIENTOF gets the quotient.

answered Aug 23 at 7:06
\$\endgroup\$

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.