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/Vampire-number/FreeBASIC/vampire-number.freebasic
Normal file
106
Task/Vampire-number/FreeBASIC/vampire-number.freebasic
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
'Vampire numbers.
|
||||
'FreeBASIC version 24. Windows
|
||||
'Vampire.bas
|
||||
Function WithinString(n As Ulongint,f As Ulongint) As Integer
|
||||
var m=Str(n),p=Str(f)
|
||||
For z As Integer=0 To Len(p)-1
|
||||
var i=Instr(m,Chr(p[z]))
|
||||
If i Then
|
||||
m=Mid(m,1,i-1)+Mid(m,i+1)
|
||||
Else
|
||||
Return 0
|
||||
End If
|
||||
Next z
|
||||
Return -1
|
||||
End Function
|
||||
|
||||
Sub AllFactors(N As Ulongint,factors() As Ulongint)
|
||||
Dim As String Sn=Str(n)
|
||||
Dim As Integer half=Len(sn)\2
|
||||
Redim factors(1 To 1)
|
||||
#macro bsort(array)
|
||||
For p1 As Integer = 1 To Ubound(array) - 1
|
||||
For p2 As Integer = p1 + 1 To Ubound(array)
|
||||
If array(p1)>array(p2) Then Swap array(p1),array(p2)
|
||||
Next p2
|
||||
Next p1
|
||||
#endmacro
|
||||
|
||||
Dim As Ulongint c
|
||||
For i As Ulongint = 1 To Sqr(N)
|
||||
If N Mod i=0 Then
|
||||
If Len(Str(i))=half Then
|
||||
If WithinString(N,i) Then
|
||||
c=c+1
|
||||
Redim Preserve factors(1 To c)
|
||||
factors(c)=i
|
||||
End If
|
||||
End If
|
||||
If N <> i*i Then
|
||||
If Len(Str(n\i))=half Then
|
||||
If WithinString(N,n\i) Then
|
||||
c=c+1
|
||||
Redim Preserve factors(1 To c)
|
||||
factors(c)=n\i
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
Next i
|
||||
bsort(factors)
|
||||
End Sub
|
||||
|
||||
Function VampireNumbers(N As Ulongint) As Integer
|
||||
Dim As Integer flag
|
||||
Dim As Ulongint LastFactor
|
||||
Redim As Ulongint Factor()
|
||||
AllFactors(N,Factor())
|
||||
For p1 As Integer = 1 To Ubound(Factor)
|
||||
For p2 As Integer=1 To Ubound(Factor)
|
||||
If Factor(p1)*Factor(p2)=n Then
|
||||
If Factor(p1) Mod 10<>0 Or Factor(p2) Mod 10 <>0 Then
|
||||
If WithinString(n,valulng(Str(Factor(p1))+Str(Factor(p2)))) Then
|
||||
If LastFactor=Factor(p2) Then Exit For,For
|
||||
flag=1
|
||||
Print n;": [";Factor(p1);",";Factor(p2);"]"
|
||||
LastFactor=Factor(p1)
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
Next p2
|
||||
Next p1
|
||||
If flag Then Return -1
|
||||
End Function
|
||||
|
||||
'============== IMPLEMENT ==============================
|
||||
print "First 28 Vampire numbers"
|
||||
print
|
||||
Print "Number: [fangs]"
|
||||
Print
|
||||
Dim As Ulongint n=1000
|
||||
Dim As Integer count
|
||||
Dim As Double t1,t2
|
||||
t1=Timer
|
||||
Do
|
||||
n=n+1
|
||||
Var s=Str(n)
|
||||
If Len(s) Mod 2<>0 Then n=n*10
|
||||
If vampireNumbers(n) Then count=count+1
|
||||
Loop Until count=27
|
||||
Print
|
||||
print "Individual tests:"
|
||||
print
|
||||
'individual tests
|
||||
n=16758243290880ull
|
||||
If Not vampirenumbers(n) Then Print n;": [returns no fangs]"
|
||||
Print
|
||||
n=24959017348650ull
|
||||
If Not vampirenumbers(n) Then Print n;": [returns no fangs]"
|
||||
print
|
||||
n=14593825548650ull
|
||||
If Not vampirenumbers(n) then print n;": [returns no fangs]"
|
||||
t2=Timer
|
||||
print
|
||||
Print "Completed in ";
|
||||
Print t2-t1;" Seconds"
|
||||
Sleep
|
||||
Loading…
Add table
Add a link
Reference in a new issue