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
39
Task/Quaternion-type/Sidef/quaternion-type.sidef
Normal file
39
Task/Quaternion-type/Sidef/quaternion-type.sidef
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
class Quaternion(r, i, j, k) {
|
||||
|
||||
func qu(*r) { Quaternion(r...) }
|
||||
|
||||
method to_s { "#{r} + #{i}i + #{j}j + #{k}k" }
|
||||
method reals { [r, i, j, k] }
|
||||
method conj { qu(r, -i, -j, -k) }
|
||||
method norm { self.reals.map { _*_ }.sum.sqrt }
|
||||
|
||||
method ==(Quaternion b) { self.reals == b.reals }
|
||||
|
||||
method +(Number b) { qu(b+r, i, j, k) }
|
||||
method +(Quaternion b) { qu((self.reals ~Z+ b.reals)...) }
|
||||
|
||||
method neg { qu(self.reals.map{ .neg }...) }
|
||||
|
||||
method *(Number b) { qu((self.reals»*»b)...) }
|
||||
method *(Quaternion b) {
|
||||
var (r,i,j,k) = b.reals...
|
||||
qu(sum(self.reals ~Z* [r, -i, -j, -k]),
|
||||
sum(self.reals ~Z* [i, r, k, -j]),
|
||||
sum(self.reals ~Z* [j, -k, r, i]),
|
||||
sum(self.reals ~Z* [k, j, -i, r]))
|
||||
}
|
||||
}
|
||||
|
||||
var q = Quaternion(1, 2, 3, 4)
|
||||
var q1 = Quaternion(2, 3, 4, 5)
|
||||
var q2 = Quaternion(3, 4, 5, 6)
|
||||
var r = 7
|
||||
|
||||
say "1) q norm = #{q.norm}"
|
||||
say "2) -q = #{-q}"
|
||||
say "3) q conj = #{q.conj}"
|
||||
say "4) q + r = #{q + r}"
|
||||
say "5) q1 + q2 = #{q1 + q2}"
|
||||
say "6) q * r = #{q * r}"
|
||||
say "7) q1 * q2 = #{q1 * q2}"
|
||||
say "8) q1q2 #{ q1*q2 == q2*q1 ? '==' : '!=' } q2q1"
|
||||
Loading…
Add table
Add a link
Reference in a new issue