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
106
Task/Ludic-numbers/FreeBASIC/ludic-numbers.freebasic
Normal file
106
Task/Ludic-numbers/FreeBASIC/ludic-numbers.freebasic
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
' FB 1.05.0 Win64
|
||||
|
||||
' As it would be too expensive to actually remove elements from the array
|
||||
' we instead set an element to 0 if it has been removed.
|
||||
|
||||
Sub ludic(n As Integer, lu() As Integer)
|
||||
If n < 1 Then Return
|
||||
Redim lu(1 To n)
|
||||
lu(1) = 1
|
||||
If n = 1 Then Return
|
||||
Dim As Integer count = 1, count2
|
||||
Dim As Integer i, j, k = 1
|
||||
Dim As Integer ub = 22000 '' big enough to deal with up to 2005 ludic numbers
|
||||
Dim a(2 To ub) As Integer
|
||||
For i = 2 To ub : a(i) = i : Next
|
||||
|
||||
Do
|
||||
k += 1
|
||||
|
||||
For i = k to ub
|
||||
If a(i) > 0 Then
|
||||
count += 1
|
||||
lu(count) = a(i)
|
||||
If n = count Then Return
|
||||
a(i) = 0
|
||||
k = i
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
|
||||
count2 = 0
|
||||
j = k + 1
|
||||
|
||||
While j <= ub
|
||||
If a(j) > 0 Then
|
||||
count2 +=1
|
||||
If count2 = k Then
|
||||
a(j) = 0
|
||||
count2 = 0
|
||||
End If
|
||||
End If
|
||||
j += 1
|
||||
Wend
|
||||
Loop
|
||||
|
||||
End Sub
|
||||
|
||||
Dim i As Integer
|
||||
Dim lu() As Integer
|
||||
ludic(2005, lu())
|
||||
Print "The first 25 Ludic numbers are :"
|
||||
For i = 1 To 25
|
||||
Print Using "###"; lu(i);
|
||||
Print " ";
|
||||
Next
|
||||
Print
|
||||
|
||||
Dim As Integer Count = 0
|
||||
For i = 1 To 1000
|
||||
If lu(i) <= 1000 Then
|
||||
count += 1
|
||||
Else
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
Print
|
||||
Print "There are"; count; " Ludic numbers <= 1000"
|
||||
Print
|
||||
|
||||
Print "The 2000th to 2005th Ludics are :"
|
||||
For i = 2000 To 2005
|
||||
Print lu(i); " ";
|
||||
Next
|
||||
Print : Print
|
||||
|
||||
Print "The Ludic triplets below 250 are : "
|
||||
Dim As Integer j, k, ldc
|
||||
Dim b As Boolean
|
||||
For i = 1 To 248
|
||||
ldc = lu(i)
|
||||
If ldc >= 244 Then Exit For
|
||||
b = False
|
||||
For j = i + 1 To 249
|
||||
If lu(j) = ldc + 2 Then
|
||||
b = True
|
||||
k = j
|
||||
Exit For
|
||||
ElseIf lu(j) > ldc + 2 Then
|
||||
Exit For
|
||||
End If
|
||||
Next j
|
||||
If b = False Then Continue For
|
||||
For j = k + 1 To 250
|
||||
If lu(j) = ldc + 6 Then
|
||||
Print "("; Str(ldc); ","; ldc + 2; ","; ldc + 6; ")"
|
||||
Exit For
|
||||
ElseIf lu(j) > ldc + 6 Then
|
||||
Exit For
|
||||
End If
|
||||
Next j
|
||||
Next i
|
||||
Erase lu
|
||||
Print
|
||||
|
||||
Print "Press any key to quit"
|
||||
Sleep
|
||||
23
Task/Ludic-numbers/Oforth/ludic-numbers.oforth
Normal file
23
Task/Ludic-numbers/Oforth/ludic-numbers.oforth
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
: ludic(n)
|
||||
| ludics l p |
|
||||
ListBuffer newSize(n) seqFrom(2, n) over addAll ->l
|
||||
ListBuffer newSize(n) dup add(1) dup ->ludics
|
||||
|
||||
while(l notEmpty) [
|
||||
l removeFirst dup ludics add ->p
|
||||
l size p / p * while(dup 1 > ) [ dup l removeAt drop p - ] drop
|
||||
] ;
|
||||
|
||||
: ludics
|
||||
| l i |
|
||||
ludic(22000) ->l
|
||||
"First 25 : " print l left(25) println
|
||||
"Below 1000 : " print l filter(#[ 1000 < ]) size println
|
||||
"2000 to 2005 : " print l extract(2000, 2005) println
|
||||
|
||||
250 loop: i [
|
||||
l include(i) ifFalse: [ continue ]
|
||||
l include(i 2 +) ifFalse: [ continue ]
|
||||
l include(i 6 +) ifFalse: [ continue ]
|
||||
i print ", " print i 2 + print ", " print i 6 + println
|
||||
] ;
|
||||
24
Task/Ludic-numbers/Sidef/ludic-numbers.sidef
Normal file
24
Task/Ludic-numbers/Sidef/ludic-numbers.sidef
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
func ludics_upto(nmax=100000) {
|
||||
Enumerator({ |collect|
|
||||
collect(1)
|
||||
var arr = @(2..nmax)
|
||||
while (arr) {
|
||||
collect(var n = arr[0])
|
||||
arr.range.by(n).each {|i| arr[i] = nil}
|
||||
arr.compact!
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func ludics_first(n) {
|
||||
ludics_upto(n * n.log2).first(n)
|
||||
}
|
||||
|
||||
say("First 25 Ludic numbers: ", ludics_first(25).join(' '))
|
||||
say("Ludics below 1000: ", ludics_upto(1000).len)
|
||||
say("Ludic numbers 2000 to 2005: ", ludics_first(2005).last(6).join(' '))
|
||||
|
||||
var a = ludics_upto(250).to_a
|
||||
say("Ludic triples below 250: ", a.grep{|x| a.contains_all([x+2, x+6]) } \
|
||||
.map {|x| '(' + [x, x+2, x+6].join(' ') + ')' } \
|
||||
.join(' '))
|
||||
Loading…
Add table
Add a link
Reference in a new issue