langs a-z
This commit is contained in:
parent
db842d013d
commit
d066446780
11389 changed files with 98361 additions and 1020 deletions
24
Task/Mutual-recursion/Nemerle/mutual-recursion.nemerle
Normal file
24
Task/Mutual-recursion/Nemerle/mutual-recursion.nemerle
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
using System;
|
||||
using System.Console;
|
||||
|
||||
module Hofstadter
|
||||
{
|
||||
F(n : int) : int
|
||||
{
|
||||
|0 => 1
|
||||
|_ => n - M(F(n - 1))
|
||||
}
|
||||
|
||||
M(n : int) : int
|
||||
{
|
||||
|0 => 0
|
||||
|_ => n - F(M(n - 1))
|
||||
}
|
||||
|
||||
Main() : void
|
||||
{
|
||||
foreach (n in [0 .. 20]) Write("{0} ", F(n));
|
||||
WriteLine();
|
||||
foreach (n in [0 .. 20]) Write("{0} ", M(n));
|
||||
}
|
||||
}
|
||||
7
Task/Mutual-recursion/OCaml/mutual-recursion.ocaml
Normal file
7
Task/Mutual-recursion/OCaml/mutual-recursion.ocaml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
let rec f = function
|
||||
| 0 -> 1
|
||||
| n -> n - m(f(n-1))
|
||||
and m = function
|
||||
| 0 -> 0
|
||||
| n -> n - f(m(n-1))
|
||||
;;
|
||||
19
Task/Mutual-recursion/Objeck/mutual-recursion.objeck
Normal file
19
Task/Mutual-recursion/Objeck/mutual-recursion.objeck
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
class MutualRecursion {
|
||||
function : Main(args : String[]) ~ Nil {
|
||||
for(i := 0; i < 20; i+=1;) {
|
||||
f(i)->PrintLine();
|
||||
};
|
||||
"---"->PrintLine();
|
||||
for (i := 0; i < 20; i+=1;) {
|
||||
m(i)->PrintLine();
|
||||
};
|
||||
}
|
||||
|
||||
function : f(n : Int) ~ Int {
|
||||
return n = 0 ? 1 : n - m(f(n - 1));
|
||||
}
|
||||
|
||||
function : m(n : Int) ~ Int {
|
||||
return n = 0 ? 0 : n - f(m(n - 1));
|
||||
}
|
||||
}
|
||||
34
Task/Mutual-recursion/Objective-C/mutual-recursion.m
Normal file
34
Task/Mutual-recursion/Objective-C/mutual-recursion.m
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
#import <objc/Object.h>
|
||||
|
||||
@interface Hofstadter : Object
|
||||
+ (int)M: (int)n;
|
||||
+ (int)F: (int)n;
|
||||
@end
|
||||
|
||||
@implementation Hofstadter
|
||||
+ (int)M: (int)n
|
||||
{
|
||||
if ( n == 0 ) return 0;
|
||||
return n - [self F: [self M: (n-1)]];
|
||||
}
|
||||
+ (int)F: (int)n
|
||||
{
|
||||
if ( n == 0 ) return 1;
|
||||
return n - [self M: [self F: (n-1)]];
|
||||
}
|
||||
@end
|
||||
|
||||
int main()
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i=0; i < 20; i++) {
|
||||
printf("%3d ", [Hofstadter F: i]);
|
||||
}
|
||||
printf("\n");
|
||||
for(i=0; i < 20; i++) {
|
||||
printf("%3d ", [Hofstadter M: i]);
|
||||
}
|
||||
printf("\n");
|
||||
return 0;
|
||||
}
|
||||
19
Task/Mutual-recursion/Octave/mutual-recursion-1.octave
Normal file
19
Task/Mutual-recursion/Octave/mutual-recursion-1.octave
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
function r = F(n)
|
||||
for i = 1:length(n)
|
||||
if (n(i) == 0)
|
||||
r(i) = 1;
|
||||
else
|
||||
r(i) = n(i) - M(F(n(i)-1));
|
||||
endif
|
||||
endfor
|
||||
endfunction
|
||||
|
||||
function r = M(n)
|
||||
for i = 1:length(n)
|
||||
if (n(i) == 0)
|
||||
r(i) = 0;
|
||||
else
|
||||
r(i) = n(i) - F(M(n(i)-1));
|
||||
endif
|
||||
endfor
|
||||
endfunction
|
||||
5
Task/Mutual-recursion/Octave/mutual-recursion-2.octave
Normal file
5
Task/Mutual-recursion/Octave/mutual-recursion-2.octave
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
# testing
|
||||
ra = F([0:19]);
|
||||
rb = M([0:19]);
|
||||
disp(ra);
|
||||
disp(rb);
|
||||
17
Task/Mutual-recursion/Order/mutual-recursion.order
Normal file
17
Task/Mutual-recursion/Order/mutual-recursion.order
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
#include <order/interpreter.h>
|
||||
|
||||
#define ORDER_PP_DEF_8f \
|
||||
ORDER_PP_FN(8fn(8N, \
|
||||
8if(8is_0(8N), \
|
||||
1, \
|
||||
8sub(8N, 8m(8f(8dec(8N)))))))
|
||||
|
||||
#define ORDER_PP_DEF_8m \
|
||||
ORDER_PP_FN(8fn(8N, \
|
||||
8if(8is_0(8N), \
|
||||
0, \
|
||||
8sub(8N, 8f(8m(8dec(8N)))))))
|
||||
|
||||
//Test
|
||||
ORDER_PP(8for_each_in_range(8fn(8N, 8print(8f(8N))), 0, 19))
|
||||
ORDER_PP(8for_each_in_range(8fn(8N, 8print(8m(8N))), 0, 19))
|
||||
15
Task/Mutual-recursion/Oz/mutual-recursion.oz
Normal file
15
Task/Mutual-recursion/Oz/mutual-recursion.oz
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
declare
|
||||
fun {F N}
|
||||
if N == 0 then 1
|
||||
elseif N > 0 then N - {M {F N-1}}
|
||||
end
|
||||
end
|
||||
|
||||
fun {M N}
|
||||
if N == 0 then 0
|
||||
elseif N > 0 then N - {F {M N-1}}
|
||||
end
|
||||
end
|
||||
in
|
||||
{Show {Map {List.number 0 9 1} F}}
|
||||
{Show {Map {List.number 0 9 1} M}}
|
||||
2
Task/Mutual-recursion/PARI-GP/mutual-recursion.pari
Normal file
2
Task/Mutual-recursion/PARI-GP/mutual-recursion.pari
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
F(n)=if(n,n-M(F(n-1)),1)
|
||||
M(n)=if(n,n-F(M(n-1)),0)
|
||||
20
Task/Mutual-recursion/PL-I/mutual-recursion.pli
Normal file
20
Task/Mutual-recursion/PL-I/mutual-recursion.pli
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
test: procedure options (main);
|
||||
|
||||
M: procedure (n) returns (fixed) recursive; /* 8/1/2010 */
|
||||
declare n fixed;
|
||||
if n <= 0 then return (0);
|
||||
else return ( n - F(M(n-1)) );
|
||||
end M;
|
||||
|
||||
F: procedure (n) returns (fixed) recursive;
|
||||
declare n fixed;
|
||||
if n <= 0 then return (1);
|
||||
else return ( n - M(F(n-1)) );
|
||||
end F;
|
||||
|
||||
declare i fixed;
|
||||
|
||||
do i = 1 to 15;
|
||||
put skip list ( F(i), M(i) );
|
||||
end;
|
||||
end test;
|
||||
34
Task/Mutual-recursion/Pascal/mutual-recursion.pascal
Normal file
34
Task/Mutual-recursion/Pascal/mutual-recursion.pascal
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
Program MutualRecursion;
|
||||
|
||||
{M definition comes after F which uses it}
|
||||
function M(n : Integer) : Integer; forward;
|
||||
|
||||
function F(n : Integer) : Integer;
|
||||
begin
|
||||
if n = 0 then
|
||||
F := 1
|
||||
else
|
||||
F := n - M(F(n-1));
|
||||
end;
|
||||
|
||||
function M(n : Integer) : Integer;
|
||||
begin
|
||||
if n = 0 then
|
||||
M := 0
|
||||
else
|
||||
M := n - F(M(n-1));
|
||||
end;
|
||||
|
||||
var
|
||||
i : Integer;
|
||||
|
||||
begin
|
||||
for i := 0 to 19 do begin
|
||||
write(F(i) : 4)
|
||||
end;
|
||||
writeln;
|
||||
for i := 0 to 19 do begin
|
||||
write(M(i) : 4)
|
||||
end;
|
||||
writeln;
|
||||
end.
|
||||
6
Task/Mutual-recursion/Perl-6/mutual-recursion.pl6
Normal file
6
Task/Mutual-recursion/Perl-6/mutual-recursion.pl6
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
multi F(0) { 1 }; multi M(0) { 0 }
|
||||
multi F(\𝑛) { 𝑛 - M(F(𝑛 - 1)) }
|
||||
multi M(\𝑛) { 𝑛 - F(M(𝑛 - 1)) }
|
||||
|
||||
say map &F, ^20;
|
||||
say map &M, ^20;
|
||||
17
Task/Mutual-recursion/PostScript/mutual-recursion-1.ps
Normal file
17
Task/Mutual-recursion/PostScript/mutual-recursion-1.ps
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
/female{
|
||||
/n exch def
|
||||
n 0 eq
|
||||
{1}
|
||||
{
|
||||
n n 1 sub female male sub
|
||||
}ifelse
|
||||
}def
|
||||
|
||||
/male{
|
||||
/n exch def
|
||||
n 0 eq
|
||||
{0}
|
||||
{
|
||||
n n 1 sub male female sub
|
||||
}ifelse
|
||||
}def
|
||||
13
Task/Mutual-recursion/PostScript/mutual-recursion-2.ps
Normal file
13
Task/Mutual-recursion/PostScript/mutual-recursion-2.ps
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
/F {
|
||||
{
|
||||
{0 eq} {pop 1} is?
|
||||
{0 gt} {dup 1 sub F M sub} is?
|
||||
} cond
|
||||
}.
|
||||
|
||||
/M {
|
||||
{
|
||||
{0 eq} {pop 0} is?
|
||||
{0 gt} {dup 1 sub M F sub} is?
|
||||
} cond
|
||||
}.
|
||||
9
Task/Mutual-recursion/PowerShell/mutual-recursion.psh
Normal file
9
Task/Mutual-recursion/PowerShell/mutual-recursion.psh
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
function F($n) {
|
||||
if ($n -eq 0) { return 1 }
|
||||
return $n - (M (F ($n - 1)))
|
||||
}
|
||||
|
||||
function M($n) {
|
||||
if ($n -eq 0) { return 0 }
|
||||
return $n - (F (M ($n - 1)))
|
||||
}
|
||||
4
Task/Mutual-recursion/Pure/mutual-recursion-1.pure
Normal file
4
Task/Mutual-recursion/Pure/mutual-recursion-1.pure
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
F 0 = 1;
|
||||
M 0 = 0;
|
||||
F n = n - M(F(n-1)) if n>0;
|
||||
M n = n - F(M(n-1)) if n>0;
|
||||
4
Task/Mutual-recursion/Pure/mutual-recursion-2.pure
Normal file
4
Task/Mutual-recursion/Pure/mutual-recursion-2.pure
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
> let females = map F (0..10); females;
|
||||
[1,1,2,2,3,3,4,5,5,6,6]
|
||||
> let males = map M (0..10); males;
|
||||
[0,0,1,2,2,3,4,4,5,6,6]
|
||||
42
Task/Mutual-recursion/PureBasic/mutual-recursion.purebasic
Normal file
42
Task/Mutual-recursion/PureBasic/mutual-recursion.purebasic
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
Declare M(n)
|
||||
|
||||
Procedure F(n)
|
||||
If n = 0
|
||||
ProcedureReturn 1
|
||||
ElseIf n > 0
|
||||
ProcedureReturn n - M(F(n - 1))
|
||||
EndIf
|
||||
EndProcedure
|
||||
|
||||
Procedure M(n)
|
||||
If n = 0
|
||||
ProcedureReturn 0
|
||||
ElseIf n > 0
|
||||
ProcedureReturn n - F(M(n - 1))
|
||||
EndIf
|
||||
EndProcedure
|
||||
|
||||
Define i
|
||||
If OpenConsole()
|
||||
|
||||
For i = 0 To 19
|
||||
Print(Str(F(i)))
|
||||
If i = 19
|
||||
Continue
|
||||
EndIf
|
||||
Print(", ")
|
||||
Next
|
||||
|
||||
PrintN("")
|
||||
For i = 0 To 19
|
||||
Print(Str(M(i)))
|
||||
If i = 19
|
||||
Continue
|
||||
EndIf
|
||||
Print(", ")
|
||||
Next
|
||||
|
||||
Print(#CRLF$ + #CRLF$ + "Press ENTER to exit")
|
||||
Input()
|
||||
CloseConsole()
|
||||
EndIf
|
||||
20
Task/Mutual-recursion/REBOL/mutual-recursion.rebol
Normal file
20
Task/Mutual-recursion/REBOL/mutual-recursion.rebol
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
REBOL [
|
||||
Title: "Mutual Recursion"
|
||||
Date: 2009-12-14
|
||||
Author: oofoe
|
||||
URL: http://rosettacode.org/wiki/Mutual_Recursion
|
||||
References: [http://en.wikipedia.org/wiki/Hofstadter_sequence#Hofstadter_Female_and_Male_sequences]
|
||||
]
|
||||
|
||||
f: func [
|
||||
"Female."
|
||||
n [integer!] "Value."
|
||||
] [either 0 = n [1][n - m f n - 1]]
|
||||
|
||||
m: func [
|
||||
"Male."
|
||||
n [integer!] "Value."
|
||||
] [either 0 = n [0][n - f m n - 1]]
|
||||
|
||||
fs: [] ms: [] for i 0 19 1 [append fs f i append ms m i]
|
||||
print ["F:" mold fs crlf "M:" mold ms]
|
||||
19
Task/Mutual-recursion/Run-BASIC/mutual-recursion.run
Normal file
19
Task/Mutual-recursion/Run-BASIC/mutual-recursion.run
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
print "F sequence:";
|
||||
for i = 0 to 20
|
||||
print f(i);" ";
|
||||
next i
|
||||
print :print "M sequence:";
|
||||
for i = 0 to 20
|
||||
print m(i);" ";
|
||||
next i
|
||||
end
|
||||
|
||||
function f(n)
|
||||
f = 1
|
||||
if n <> 0 then f = n - m(f(n - 1))
|
||||
end function
|
||||
|
||||
function m(n)
|
||||
m = 0
|
||||
if n <> 0 then m = n - f(m(n - 1))
|
||||
end function
|
||||
15
Task/Mutual-recursion/SNOBOL4/mutual-recursion.sno
Normal file
15
Task/Mutual-recursion/SNOBOL4/mutual-recursion.sno
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
define('f(n)') :(f_end)
|
||||
f f = eq(n,0) 1 :s(return)
|
||||
f = n - m(f(n - 1)) :(return)
|
||||
f_end
|
||||
|
||||
define('m(n)') :(m_end)
|
||||
m m = eq(n,0) 0 :s(return)
|
||||
m = n - f(m(n - 1)) :(return)
|
||||
m_end
|
||||
|
||||
* # Test and display
|
||||
L1 s1 = s1 m(i) ' ' ; s2 = s2 f(i) ' '
|
||||
i = le(i,25) i + 1 :s(L1)
|
||||
output = 'M: ' s1; output = 'F: ' s2
|
||||
end
|
||||
39
Task/Mutual-recursion/Seed7/mutual-recursion.seed7
Normal file
39
Task/Mutual-recursion/Seed7/mutual-recursion.seed7
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
$ include "seed7_05.s7i";
|
||||
|
||||
const func integer: m (in integer: n) is forward;
|
||||
|
||||
const func integer: f (in integer: n) is func
|
||||
result
|
||||
var integer: res is 0;
|
||||
begin
|
||||
if n = 0 then
|
||||
res := 1;
|
||||
else
|
||||
res := n - m(f(n - 1));
|
||||
end if;
|
||||
end func;
|
||||
|
||||
const func integer: m (in integer: n) is func
|
||||
result
|
||||
var integer: res is 0;
|
||||
begin
|
||||
if n = 0 then
|
||||
res := 0;
|
||||
else
|
||||
res := n - f(m(n - 1));
|
||||
end if;
|
||||
end func;
|
||||
|
||||
const proc: main is func
|
||||
local
|
||||
var integer: i is 0;
|
||||
begin
|
||||
for i range 0 to 19 do
|
||||
write(f(i) lpad 3);
|
||||
end for;
|
||||
writeln;
|
||||
for i range 0 to 19 do
|
||||
write(m(i) lpad 3);
|
||||
end for;
|
||||
writeln;
|
||||
end func;
|
||||
5
Task/Mutual-recursion/Standard-ML/mutual-recursion-1.ml
Normal file
5
Task/Mutual-recursion/Standard-ML/mutual-recursion-1.ml
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
fun f 0 = 1
|
||||
| f n = n - m (f (n-1))
|
||||
and m 0 = 0
|
||||
| m n = n - f (m (n-1))
|
||||
;
|
||||
5
Task/Mutual-recursion/Standard-ML/mutual-recursion-2.ml
Normal file
5
Task/Mutual-recursion/Standard-ML/mutual-recursion-2.ml
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
val rec f = fn 0 => 1
|
||||
| n => n - m (f (n-1))
|
||||
and m = fn 0 => 0
|
||||
| n => n - f (m (n-1))
|
||||
;
|
||||
2
Task/Mutual-recursion/TI-89-BASIC/mutual-recursion.ti-89
Normal file
2
Task/Mutual-recursion/TI-89-BASIC/mutual-recursion.ti-89
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
Define F(n) = when(n=0, 1, n - M(F(n - 1)))
|
||||
Define M(n) = when(n=0, 0, n - F(M(n - 1)))
|
||||
37
Task/Mutual-recursion/TXR/mutual-recursion.txr
Normal file
37
Task/Mutual-recursion/TXR/mutual-recursion.txr
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
@(define f (n out))
|
||||
@ (local n1 fn1 mfn1)
|
||||
@ (cases)
|
||||
@ (bind n "0")
|
||||
@ (bind out "1")
|
||||
@ (or)
|
||||
@ (next `!echo $(( @n - 1 ))`)
|
||||
@ n1
|
||||
@ (f n1 fn1)
|
||||
@ (m fn1 mfn1)
|
||||
@ (next `!echo $(( @n - @mfn1 ))`)
|
||||
@ out
|
||||
@ (end)
|
||||
@(end)
|
||||
@(define m (n out))
|
||||
@ (local n1 mn1 fmn1)
|
||||
@ (cases)
|
||||
@ (bind n "0")
|
||||
@ (bind out "0")
|
||||
@ (or)
|
||||
@ (next `!echo $(( @n - 1 ))`)
|
||||
@ n1
|
||||
@ (m n1 mn1)
|
||||
@ (f mn1 fmn1)
|
||||
@ (next `!echo $(( @n - @fmn1 ))`)
|
||||
@ out
|
||||
@ (end)
|
||||
@(end)
|
||||
@(next `!seq 0 15`)
|
||||
@(collect :vars ())
|
||||
@ n
|
||||
@ (f n fn)
|
||||
@ (m n mn)
|
||||
@ (output)
|
||||
f(@n) = @fn; m(@n) = @mn
|
||||
@ (end)
|
||||
@(end)
|
||||
32
Task/Mutual-recursion/UNIX-Shell/mutual-recursion.sh
Normal file
32
Task/Mutual-recursion/UNIX-Shell/mutual-recursion.sh
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
M()
|
||||
{
|
||||
local n
|
||||
n=$1
|
||||
if [[ $n -eq 0 ]]; then
|
||||
echo -n 0
|
||||
else
|
||||
echo -n $(( n - $(F $(M $((n-1)) ) ) ))
|
||||
fi
|
||||
}
|
||||
|
||||
F()
|
||||
{
|
||||
local n
|
||||
n=$1
|
||||
if [[ $n -eq 0 ]]; then
|
||||
echo -n 1
|
||||
else
|
||||
echo -n $(( n - $(M $(F $((n-1)) ) ) ))
|
||||
fi
|
||||
}
|
||||
|
||||
for((i=0; i < 20; i++)); do
|
||||
F $i
|
||||
echo -n " "
|
||||
done
|
||||
echo
|
||||
for((i=0; i < 20; i++)); do
|
||||
M $i
|
||||
echo -n " "
|
||||
done
|
||||
echo
|
||||
8
Task/Mutual-recursion/Ursala/mutual-recursion-1.ursala
Normal file
8
Task/Mutual-recursion/Ursala/mutual-recursion-1.ursala
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#import std
|
||||
#import nat
|
||||
#import sol
|
||||
|
||||
#fix general_function_fixer 0
|
||||
|
||||
F = ~&?\1! difference^/~& M+ F+ predecessor
|
||||
M = ~&?\0! difference^/~& F+ M+ predecessor
|
||||
3
Task/Mutual-recursion/Ursala/mutual-recursion-2.ursala
Normal file
3
Task/Mutual-recursion/Ursala/mutual-recursion-2.ursala
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
#cast %nLW
|
||||
|
||||
test = ^(F*,M*) iota 20
|
||||
18
Task/Mutual-recursion/XPL0/mutual-recursion.xpl0
Normal file
18
Task/Mutual-recursion/XPL0/mutual-recursion.xpl0
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
code ChOut=8, CrLf=9, IntOut=11;
|
||||
|
||||
ffunc M; \forward-referenced function declaration
|
||||
|
||||
func F(N);
|
||||
int N;
|
||||
return if N=0 then 1 else N - M(F(N-1));
|
||||
|
||||
func M(N);
|
||||
int N;
|
||||
return if N=0 then 0 else N - F(M(N-1));
|
||||
|
||||
int I;
|
||||
[for I:= 0 to 19 do [IntOut(0, F(I)); ChOut(0, ^ )];
|
||||
CrLf(0);
|
||||
for I:= 0 to 19 do [IntOut(0, M(I)); ChOut(0, ^ )];
|
||||
CrLf(0);
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue