Time for an 2014 update…
This commit is contained in:
parent
372c577f83
commit
09687c4926
2520 changed files with 34227 additions and 7318 deletions
|
|
@ -0,0 +1,17 @@
|
|||
# syntax: GAWK -f TRABB_PARDO-KNUTH_ALGORITHM.AWK
|
||||
BEGIN {
|
||||
printf("enter 11 numbers: ")
|
||||
getline S
|
||||
n = split(S,arr," ")
|
||||
if (n != 11) {
|
||||
printf("%d numbers entered; S/B 11\n",n)
|
||||
exit(1)
|
||||
}
|
||||
for (i=n; i>0; i--) {
|
||||
x = f(arr[i])
|
||||
printf("f(%s) = %s\n",arr[i],(x>400) ? "too large" : x)
|
||||
}
|
||||
exit(0)
|
||||
}
|
||||
function abs(x) { if (x >= 0) { return x } else { return -x } }
|
||||
function f(x) { return sqrt(abs(x)) + 5 * x ^ 3 }
|
||||
|
|
@ -1,20 +1,21 @@
|
|||
import std.stdio, std.math, std.range, std.conv, std.algorithm;
|
||||
import std.stdio, std.math, std.conv, std.algorithm, std.array;
|
||||
|
||||
double f(in double x) pure nothrow {
|
||||
return x.abs().sqrt() + 5 * x ^^ 3;
|
||||
return x.abs.sqrt + 5 * x ^^ 3;
|
||||
}
|
||||
|
||||
void main() {
|
||||
double[] data;
|
||||
|
||||
while (true) {
|
||||
write("Please enter eleven numbers on a line: ");
|
||||
data = readln().split().map!(to!double)().array();
|
||||
"Please enter eleven numbers on a line: ".write;
|
||||
data = readln.split.map!(to!double).array;
|
||||
if (data.length == 11)
|
||||
break;
|
||||
writeln("Those aren't eleven numbers.");
|
||||
}
|
||||
foreach (x; data.retro()) {
|
||||
immutable y = f(x);
|
||||
writefln("f(%0.3f) = %s", x, y > 400 ? "Too large" : text(y));
|
||||
foreach_reverse (immutable x; data) {
|
||||
immutable y = x.f;
|
||||
writefln("f(%0.3f) = %s", x, y > 400 ? "Too large" : y.text);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
-module( trabb_pardo_knuth ).
|
||||
|
||||
-export( [task/0] ).
|
||||
|
||||
task() ->
|
||||
Sequence = get_11_numbers(),
|
||||
S = lists:reverse( Sequence ),
|
||||
[perform_operation( fun function/1, 400, X) || X <- S].
|
||||
|
||||
|
||||
alert( N ) -> io:fwrite( "Operation on ~p overflowed~n", [N] ).
|
||||
|
||||
get_11_numbers() ->
|
||||
{ok, Ns} = io:fread( "Input 11 integers. Space delimited, please: ", "~d ~d ~d ~d ~d ~d ~d ~d ~d ~d ~d" ),
|
||||
11 = erlang:length( Ns ),
|
||||
Ns.
|
||||
|
||||
function( X ) -> math:sqrt( erlang:abs(X) ) + 5 * math:pow( X, 3 ).
|
||||
|
||||
perform_operation( Fun, Overflow, N ) -> perform_operation_check_overflow( N, Fun(N), Overflow ).
|
||||
|
||||
perform_operation_check_overflow( N, Result, Overflow ) when Result > Overflow -> alert( N );
|
||||
perform_operation_check_overflow( N, Result, _Overflow ) -> io:fwrite( "f(~p) => ~p~n", [N, Result] ).
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
Trabb: Procedure options (main); /* 11 November 2013 */
|
||||
|
||||
declare (i, n) fixed binary;
|
||||
declare s fixed (5,1) controlled;
|
||||
declare g fixed (15,5);
|
||||
|
||||
put ('Please type 11 values:');
|
||||
do i = 1 to 11;
|
||||
allocate s;
|
||||
get (s);
|
||||
put (s);
|
||||
end;
|
||||
put skip(2) ('Results:');
|
||||
do i = 1 to 11;
|
||||
g = f(s); put skip list (s);
|
||||
if g > 400 then put ('Too large'); else put (g);
|
||||
free s;
|
||||
end;
|
||||
|
||||
f: procedure (x) returns (fixed(15,5));
|
||||
declare x fixed (5,1);
|
||||
return (sqrt(abs(x)) + 5*x**3);
|
||||
end f;
|
||||
|
||||
end Trabb;
|
||||
Loading…
Add table
Add a link
Reference in a new issue