June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
39
Task/Vampire-number/Sidef/vampire-number.sidef
Normal file
39
Task/Vampire-number/Sidef/vampire-number.sidef
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
func is_vampire (n) {
|
||||
return [] if n.ilog10.is_even
|
||||
|
||||
var l1 = n.isqrt.ilog10.ipow10
|
||||
var l2 = n.isqrt
|
||||
|
||||
var s = n.digits.sort.join
|
||||
|
||||
gather {
|
||||
n.divisors.each { |d|
|
||||
|
||||
d < l1 && next
|
||||
d > l2 && break
|
||||
|
||||
var t = n/d
|
||||
|
||||
next if (d%%10 && t%%10)
|
||||
next if ("#{d}#{t}".sort != s)
|
||||
|
||||
take([d, t])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
say "First 25 Vampire Numbers:"
|
||||
|
||||
with (1) { |i|
|
||||
for (var n = 1; i <= 25; ++n) {
|
||||
var fangs = is_vampire(n)
|
||||
printf("%2d. %6s : %s\n", i++, n, fangs.join(' ')) if fangs
|
||||
}
|
||||
}
|
||||
|
||||
say "\nIndividual tests:"
|
||||
|
||||
[16758243290880, 24959017348650, 14593825548650].each { |n|
|
||||
var fangs = is_vampire(n)
|
||||
say "#{n}: #{fangs ? fangs.join(', ') : 'is not a vampire number'}"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue