This commit is contained in:
Ingy döt Net 2013-04-10 21:29:02 -07:00
parent 764da6cbbb
commit db842d013d
19005 changed files with 197040 additions and 7 deletions

View file

@ -0,0 +1,8 @@
12 7
\$@$@$@$@$@$@$@$@$@$@\ { 6 copies }
"sum = "+."
difference = "-."
product = "*."
quotient = "/."
modulus = "/*-."
"

View file

@ -0,0 +1,17 @@
USING: combinators io kernel math math.functions math.order
math.parser prettyprint ;
"a=" "b=" [ write readln string>number ] bi@
{
[ + "sum: " write . ]
[ - "difference: " write . ]
[ * "product: " write . ]
[ / "quotient: " write . ]
[ /i "integer quotient: " write . ]
[ rem "remainder: " write . ]
[ mod "modulo: " write . ]
[ max "maximum: " write . ]
[ min "minimum: " write . ]
[ gcd "gcd: " write . drop ]
[ lcm "lcm: " write . ]
} 2cleave

View file

@ -0,0 +1,13 @@
a=8
b=12
sum: 20
difference: -4
product: 96
quotient: 2/3
integer quotient: 0
remainder: 8
modulo: 8
maximum: 12
minimum: 8
gcd: 4
lcm: 24

View file

@ -0,0 +1,7 @@
[a,b] = input["Enter numbers",["a","b"]]
ops=["+", "-", "*", "/", "div" ,"mod" ,"^"]
for op = ops
{
str = "$a $op $b"
println["$str = " + eval[str]]
}

View file

@ -0,0 +1,7 @@
10 + 20 = 30
10 - 20 = -10
10 * 20 = 200
10 / 20 = 1/2 (exactly 0.5)
10 div 20 = 0
10 mod 20 = 10
10 ^ 20 = 100000000000000000000

View file

@ -0,0 +1,15 @@
run := function()
local a, b, f;
f := InputTextUser();
Print("a =\n");
a := Int(Chomp(ReadLine(f)));
Print("b =\n");
b := Int(Chomp(ReadLine(f)));
Display(Concatenation(String(a), " + ", String(b), " = ", String(a + b)));
Display(Concatenation(String(a), " - ", String(b), " = ", String(a - b)));
Display(Concatenation(String(a), " * ", String(b), " = ", String(a * b)));
Display(Concatenation(String(a), " / ", String(b), " = ", String(QuoInt(a, b)))); # toward 0
Display(Concatenation(String(a), " mod ", String(b), " = ", String(RemInt(a, b)))); # nonnegative
Display(Concatenation(String(a), " ^ ", String(b), " = ", String(a ^ b)));
CloseStream(f);
end;

View file

@ -0,0 +1,14 @@
def arithmetic = { a, b ->
println """
a + b = ${a} + ${b} = ${a + b}
a - b = ${a} - ${b} = ${a - b}
a * b = ${a} * ${b} = ${a * b}
a / b = ${a} / ${b} = ${a / b} !!! Converts to floating point!
(int)(a / b) = (int)(${a} / ${b}) = ${(int)(a / b)} !!! Truncates downward after the fact
a.intdiv(b) = ${a}.intdiv(${b}) = ${a.intdiv(b)} !!! Behaves as if truncating downward, actual implementation varies
a % b = ${a} % ${b} = ${a % b}
Exponentiation is also a base arithmetic operation in Groovy, so:
a ** b = ${a} ** ${b} = ${a ** b}
"""
}

View file

@ -0,0 +1 @@
arithmetic(5,3)

View file

@ -0,0 +1,13 @@
class BasicIntegerArithmetic {
public static function main() {
var args =Sys.args();
if (args.length < 2) return;
var a = Std.parseFloat(args[0]);
var b = Std.parseFloat(args[1]);
trace("a+b = " + (a+b));
trace("a-b = " + (a-b));
trace("a*b = " + (a*b));
trace("a/b = " + (a/b));
trace("a%b = " + (a%b));
}
}

View file

@ -0,0 +1,13 @@
DLG(Edit=A, Edit=B, TItle='Enter numeric A and B')
WRITE(Name) A, B
WRITE() ' A + B = ', A + B
WRITE() ' A - B = ', A - B
WRITE() ' A * B = ', A * B
WRITE() ' A / B = ', A / B ! no truncation
WRITE() 'truncate A / B = ', INT(A / B) ! truncates towards 0
WRITE() 'round next A / B = ', NINT(A / B) ! truncates towards next integer
WRITE() 'round down A / B = ', FLOOR(A / B) ! truncates towards minus infinity
WRITE() 'round up A / B = ', CEILING(A / B) ! truncates towards plus infinity
WRITE() 'remainder of A / B = ', MOD(A, B) ! same sign as A
WRITE() 'A to the power of B = ', A ^ B
WRITE() 'A to the power of B = ', A ** B

View file

@ -0,0 +1,12 @@
A=5; B=-4;
A + B = 1
A - B = 9
A * B = -20
A / B = -1.25
truncate A / B = -1
round next A / B = -1
round down A / B = -2
round up A / B = -1
remainder of A / B = 1
A to the power of B = 16E-4
A to the power of B = 16E-4

View file

@ -0,0 +1,13 @@
procedure main()
writes("Input 1st integer a := ")
a := integer(read())
writes("Input 2nd integer b := ")
b := integer(read())
write(" a + b = ",a+b)
write(" a - b = ",a-b)
write(" a * b = ",a*b)
write(" a / b = ",a/b, " rounds toward 0")
write(" a % b = ",a%b, " remainder sign matches a")
write(" a ^ b = ",a^b)
end

View file

@ -0,0 +1,24 @@
Enter Two Numbers is a room.
Numerically entering is an action applying to one number. Understand "[number]" as numerically entering.
The first number is a number that varies.
After numerically entering for the first time:
now the first number is the number understood.
After numerically entering for the second time:
let A be the first number;
let B be the number understood;
say "[A] + [B] = [A + B]."; [operator syntax]
say "[A] - [B] = [A minus B]."; [English syntax]
let P be given by P = A * B where P is a number; [inline equation]
say "[A] * [B] = [P].";
let Q be given by the Division Formula; [named equation]
say "[A] / [B] = [Q].";
say "[A] mod [B] = [remainder after dividing A by B].";
end the story.
Equation - Division Formula
Q = A / B
where Q is a number, A is a number, and B is a number.

View file

@ -0,0 +1 @@
calc =: + , - , * , <.@% , |~ , ^

View file

@ -0,0 +1,2 @@
17 calc 3
20 14 51 5 2 4913

View file

@ -0,0 +1,11 @@
labels =: ];.2 'Sum: Difference: Product: Quotient: Remainder: Exponentiation: '
combine =: ,. ":@,.
bia =: labels combine calc
17 bia 3
Sum: 20
Difference: 14
Product: 51
Quotient: 5
Remainder: 2
Exponentiation: 4913

View file

@ -0,0 +1,10 @@
over : 2 pick
2dup : over over
arithmetic : \
" A=" ,t over , sp " B=" ,t dup , nl \
" A+B=" ,t 2dup + , nl \
" A-B=" ,t 2dup - , nl \
" A*B=" ,t 2dup * , nl \
" A/B=" ,t 2dup / , nl \
" A%B=" ,t % , nl

View file

@ -0,0 +1,9 @@
input "Enter the first integer: "; first
input "Enter the second integer: "; second
print "The sum is " ; first + second
print "The difference is " ; first -second
print "The product is " ; first *second
if second <>0 then print "The integer quotient is " ; int( first /second); " (rounds towards 0)" else print "Division by zero not allowed."
print "The remainder is " ; first MOD second; " (sign matches first operand)"
print "The first raised to the power of the second is " ; first ^second

View file

@ -0,0 +1,9 @@
to operate :a :b
(print [a =] :a)
(print [b =] :b)
(print [a + b =] :a + :b)
(print [a - b =] :a - :b)
(print [a * b =] :a * :b)
(print [a / b =] int :a / :b)
(print [a mod b =] modulo :a :b)
end

View file

@ -0,0 +1,5 @@
eval(A+B)
eval(A-B)
eval(A*B)
eval(A/B)
eval(A%B)

View file

@ -0,0 +1,3 @@
define(`A', 4)dnl
define(`B', 6)dnl
include(`operations.m4')

View file

@ -0,0 +1,8 @@
x = getKBValue prompt:"First number"
y = getKBValue prompt:"Second number:"
format "Sum: %\n" (x + y)
format "Difference: %\n" (x - y)
format "Product: %\n" (x * y)
format "Quotient: %\n" (x / y)
format "Remainder: %\n" (mod x y)

View file

@ -0,0 +1,15 @@
MCSKIP "WITH" NL
"" Arithmetic/Integer
"" assumes macros on input stream 1, terminal on stream 2
MCSKIP MT,<>
MCINS %.
MCDEF SL SPACES NL AS <MCSET T1=%A1.
MCSET T2=%A2.
a + b = %%T1.+%T2..
a - b = %%T1.-%T2..
a * b = %%T1.*%T2..
a / b = %%T1./%T2..
a rem b = %%T1.-%%%T1./%T2..*%T2...
Division is truncated to the greatest integer
that does not exceed the exact result. Remainder matches
the sign of the second operand, if the signs differ.

View file

@ -0,0 +1,44 @@
Arith(first,second) ; Mathematical operators
Write "Plus",?12,first,"+",second,?25," = ",first+second,!
Write "Minus",?12,first,"-",second,?25," = ",first-second,!
Write "Multiply",?12,first,"*",second,?25," = ",first*second,!
Write "Divide",?12,first,"/",second,?25," = ",first/second,!
Write "Int Divide",?12,first,"\",second,?25," = ",first\second,!
Write "Power",?12,first,"**",second,?25," = ",first**second,!
Write "Modulo",?12,first,"#",second,?25," = ",first#second,!
Write "And",?12,first,"&",second,?25," = ",first&second,!
Write "Or",?12,first,"!",second,?25," = ",first!second,!
Quit
Do Arith(2,3)
Plus 2+3 = 5
Minus 2-3 = -1
Multiply 2*3 = 6
Divide 2/3 = .6666666666666666667
Int Divide 2\3 = 0
Power 2**3 = 8
Modulo 2#3 = 2
And 2&3 = 1
Or 2!3 = 1
Do Arith(16,0.5)
Plus 16+.5 = 16.5
Minus 16-.5 = 15.5
Multiply 16*.5 = 8
Divide 16/.5 = 32
Int Divide 16\.5 = 32
Power 16**.5 = 4
Modulo 16#.5 = 0
And 16&.5 = 1
Or 16!.5 = 1
Do Arith(0,2)
Plus 0+2 = 2
Minus 0-2 = -2
Multiply 0*2 = 0
Divide 0/2 = 0
Int Divide 0\2 = 0
Power 0**2 = 0
Modulo 0#2 = 0
And 0&2 = 0
Or 0!2 = 1

View file

@ -0,0 +1,10 @@
DoIt := proc()
local a := readstat( "Input an integer: " ):
local b := readstat( "Input another integer: " ):
printf( "Sum = %d\n", a + b ):
printf( "Difference = %d\n", a - b ):
printf( "Product = %d\n", a * b ):
printf( "Quotient = %d\n", iquo( a, b, 'c' ) ):
printf( "Remainder = %d\n", c ); # or irem( a, b )
NULL # quiet return
end proc:

View file

@ -0,0 +1,9 @@
> DoIt();
Input an integer: 15;
Input another integer: 12;
Sum = 27
Difference = 3
Product = 180
Quotient = 1
Remainder = 3
>

View file

@ -0,0 +1,9 @@
a = Input["Give me an integer please!"];
b = Input["Give me another integer please!"];
Print["You gave me ", a, " and ", b];
Print["sum: ", a + b];
Print["difference: ", a - b];
Print["product: ", a b];
Print["integer quotient: ", IntegerPart[a/b]];
Print["remainder: ", Mod[a, b]];
Print["exponentiation: ", a^b];

View file

@ -0,0 +1,10 @@
block(
[a: read("a"), b: read("b")],
print(a + b),
print(a - b),
print(a * b),
print(a / b),
print(quotient(a, b)),
print(remainder(a, b)),
a^b
);

View file

@ -0,0 +1,42 @@
:- module arith_int.
:- interface.
:- import_module io.
:- pred main(io::di, io::uo) is det.
:- implementation.
:- import_module int, list, string.
main(!IO) :-
io.command_line_arguments(Args, !IO),
( if
Args = [AStr, BStr],
string.to_int(AStr, A),
string.to_int(BStr, B)
then
io.format("A + B = %d\n", [i(A + B)], !IO),
io.format("A - B = %d\n", [i(A - B)], !IO),
io.format("A * B = %d\n", [i(A * B)], !IO),
% Division: round towards zero.
%
io.format("A / B = %d\n", [i(A / B)], !IO),
% Division: round towards minus infinity.
%
io.format("A div B = %d\n", [i(A div B)], !IO),
% Modulus: X mod Y = X - (X div Y) * Y.
%
io.format("A mod B = %d\n", [i(A mod B)], !IO),
% Remainder: X rem Y = X - (X / Y) * Y.
%
io.format("A rem B = %d\n", [i(A rem B)], !IO),
% Exponentiation is done using the function int.pow/2.
%
io.format("A `pow` B = %d\n", [i(A `pow` B)], !IO)
else
io.set_exit_status(1, !IO)
).

View file

@ -0,0 +1,18 @@
string s[];
message "input number a: ";
s1 := readstring;
message "input number b: ";
s2 := readstring;
a := scantokens s1;
b := scantokens s2;
def outp(expr op) =
message "a " & op & " b = " & decimal(a scantokens(op) b) enddef;
outp("+");
outp("-");
outp("*");
outp("div");
outp("mod");
end

View file

@ -0,0 +1,17 @@
MODULE ints;
IMPORT InOut;
VAR a, b : INTEGER;
BEGIN
InOut.WriteString ("Enter two integer numbers : "); InOut.WriteBf;
InOut.ReadInt (a);
InOut.ReadInt (b);
InOut.WriteString ("a + b = "); InOut.WriteInt (a + b, 9); InOut.WriteLn;
InOut.WriteString ("a - b = "); InOut.WriteInt (a - b, 9); InOut.WriteLn;
InOut.WriteString ("a * b = "); InOut.WriteInt (a * b, 9); InOut.WriteLn;
InOut.WriteString ("a / b = "); InOut.WriteInt (a DIV b, 9); InOut.WriteLn;
InOut.WriteString ("a MOD b = "); InOut.WriteInt (a MOD b, 9); InOut.WriteLn;
InOut.WriteLn;
END ints.

View file

@ -0,0 +1,15 @@
MODULE Arith EXPORTS Main;
IMPORT IO, Fmt;
VAR a, b: INTEGER;
BEGIN
a := IO.GetInt();
b := IO.GetInt();
IO.Put("a+b = " & Fmt.Int(a + b) & "\n");
IO.Put("a-b = " & Fmt.Int(a - b) & "\n");
IO.Put("a*b = " & Fmt.Int(a * b) & "\n");
IO.Put("a DIV b = " & Fmt.Int(a DIV b) & "\n");
IO.Put("a MOD b = " & Fmt.Int(a MOD b) & "\n");
END Arith.