Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
|
|
@ -0,0 +1,27 @@
|
|||
PROGRAM BINOMIAL
|
||||
|
||||
!$DOUBLE
|
||||
|
||||
PROCEDURE BINOMIAL(N,K->BIN)
|
||||
LOCAL R,D
|
||||
R=1 D=N-K
|
||||
IF D>K THEN K=D D=N-K END IF
|
||||
WHILE N>K DO
|
||||
R*=N
|
||||
N-=1
|
||||
WHILE D>1 AND (R-D*INT(R/D))=0 DO
|
||||
R/=D
|
||||
D-=1
|
||||
END WHILE
|
||||
END WHILE
|
||||
BIN=R
|
||||
END PROCEDURE
|
||||
|
||||
BEGIN
|
||||
BINOMIAL(5,3->BIN)
|
||||
PRINT("Binomial (5,3) = ";BIN)
|
||||
BINOMIAL(100,2->BIN)
|
||||
PRINT("Binomial (100,2) = ";BIN)
|
||||
BINOMIAL(33,17->BIN)
|
||||
PRINT("Binomial (33,17) = ";BIN)
|
||||
END PROGRAM
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
' FB 1.05.0 Win64
|
||||
|
||||
Function factorial(n As Integer) As Integer
|
||||
If n < 1 Then Return 1
|
||||
Dim product As Integer = 1
|
||||
For i As Integer = 2 To n
|
||||
product *= i
|
||||
Next
|
||||
Return Product
|
||||
End Function
|
||||
|
||||
Function binomial(n As Integer, k As Integer) As Integer
|
||||
If n < 0 OrElse k < 0 OrElse n <= k Then Return 1
|
||||
Dim product As Integer = 1
|
||||
For i As Integer = n - k + 1 To n
|
||||
Product *= i
|
||||
Next
|
||||
Return product \ factorial(k)
|
||||
End Function
|
||||
|
||||
For n As Integer = 0 To 14
|
||||
For k As Integer = 0 To n
|
||||
Print Using "####"; binomial(n, k);
|
||||
Print" ";
|
||||
Next k
|
||||
Print
|
||||
Next n
|
||||
|
||||
Print
|
||||
Print "Press any key to quit"
|
||||
Sleep
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
def
|
||||
choose( n, k ) | k < 0 or k > n = 0
|
||||
choose( n, 0 ) = 1
|
||||
choose( n, n ) = 1
|
||||
choose( n, k ) = product( [(n - i)/(i + 1) | i <- 0:min( k, n - k )] )
|
||||
|
||||
println( choose(5, 3) )
|
||||
println( choose(60, 30) )
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
import integers.factorial
|
||||
|
||||
def
|
||||
binomial( n, k ) | k < 0 or k > n = 0
|
||||
binomial( n, k ) = factorial( n )/factorial( n - k )/factorial( k )
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
define binomial(n::integer,k::integer) => {
|
||||
#k == 0 ? return 1
|
||||
local(result = 1)
|
||||
loop(#k) => {
|
||||
#result = #result * (#n - loop_count + 1) / loop_count
|
||||
}
|
||||
return #result
|
||||
}
|
||||
// Tests
|
||||
binomial(5, 3)
|
||||
binomial(5, 4)
|
||||
binomial(60, 30)
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
// Number of combinations nCr
|
||||
00 0E Go: ENT R0 // n
|
||||
01 1E ENT R1 // r
|
||||
02 2C CLR R2
|
||||
03 2A Loop: ADD1 R2
|
||||
04 0D DEC R0
|
||||
05 1D DEC R1
|
||||
06 C3 JNZ Loop
|
||||
07 3C CLR R3 // for result
|
||||
08 3A ADD1 R3
|
||||
09 0A Next: ADD1 R0
|
||||
0A 1A ADD1 R1
|
||||
0B 50 R5 = R0
|
||||
0C 5D DEC R5
|
||||
0D 63 R6 = R3
|
||||
0E 46 Mult: R4 = R6
|
||||
0F 3A Add: ADD1 R3
|
||||
10 4D DEC R4
|
||||
11 CF JNZ Add
|
||||
12 5D DEC R5
|
||||
13 CE JNZ Mult
|
||||
14 61 Divide:R6 = R1
|
||||
15 5A ADD1 R5
|
||||
16 3D Sub: DEC R3
|
||||
17 9B JZ Exact
|
||||
18 6D DEC R6
|
||||
19 D6 JNZ Sub
|
||||
1A 94 JZ Divide
|
||||
1B 35 Exact: R3 = R5
|
||||
1C 2D DEC R2
|
||||
1D C9 JNZ Next
|
||||
1E 03 R0 = R3
|
||||
1F 80 JZ Go // Display result
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
proc binomialCoeff(n, k): int =
|
||||
result = 1
|
||||
for i in 1..k:
|
||||
result = result * (n-i+1) div i
|
||||
|
||||
echo binomialCoeff(5, 3)
|
||||
|
|
@ -0,0 +1 @@
|
|||
: binomial(n, k) | i | 1 k loop: i [ n i - 1+ * i / ] ;
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
numer = 0
|
||||
binomial(5,3)
|
||||
see "(5,3) binomial = " + numer + nl
|
||||
|
||||
func binomial n, k
|
||||
if k > n return nil ok
|
||||
if k > n/2 k = n - k ok
|
||||
numer = 1
|
||||
for i = 1 to k
|
||||
numer = numer * ( n - i + 1 ) / i
|
||||
next
|
||||
return numer
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
func binomial(n,k) {
|
||||
n! / ((n-k)! * k!)
|
||||
}
|
||||
|
||||
say binomial(400, 200)
|
||||
|
|
@ -0,0 +1 @@
|
|||
say 400.nok(200)
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
# nCk assuming n >= k
|
||||
def binomial(n; k):
|
||||
if k > n / 2 then binomial(n; n-k)
|
||||
else reduce range(1; k+1) as $i (1; . * (n - $i + 1) / $i)
|
||||
end;
|
||||
|
||||
def task:
|
||||
.[0] as $n | .[1] as $k
|
||||
| "\($n) C \($k) = \(binomial( $n; $k) )";
|
||||
;
|
||||
|
||||
([5,3], [100,2], [ 33,17]) | task
|
||||
Loading…
Add table
Add a link
Reference in a new issue