Sha256: 687f494167affccc761c902445234c48b23bf29f29073db268a15d9a66021bbc

Contents?: true

Size: 1.23 KB

Versions: 396

Compression:

Stored size: 1.23 KB

Contents

#
# Determine if triangle with given sides is invalid, equilateral, isoceles or scalene.
#
# Variables:
#
# $a0 - side a (int)
# $a1 - side b (int)
# $a2 - side c (int)
# $v0 - enum 0: scalene, 1: isoceles, 2: equilateral, 3: invalid
# $t0 - a == b
# $t1 - b == c
# $t5 - a == b && b == c (equilateral)
# $t6 - a == b || b == c (isoceles, if not above)

.globl triangle


triangle:
        bgt     $a0, $a1, swap_ab
        bgt     $a1, $a2, swap_bc
        j       solve

swap_ab:
        move    $t0, $a1
        move    $a1, $a0
        move    $a0, $t0
        j       triangle

swap_bc:
        move    $t0, $a2
        move    $a2, $a1
        move    $a1, $t0
        j       triangle

solve:
        addu    $t0, $a0, $a1
        bge     $a2, $t0, invalid       # invalid if violate triangle inequality

        seq     $t0, $a0, $a1           # a == b
        seq     $t1, $a1, $a2           # b == c

        and     $t5, $t0, $t1
        or      $t6, $t0, $t1

        bne     $t5, $zero, equilateral
        bne     $t6, $zero, isoceles

        li      $v0, 0
        jr      $ra

equilateral:
        li      $v0, 2
        jr      $ra

isoceles:
        li      $v0, 1
        jr      $ra

invalid:
        li      $v0, 3
        jr      $ra

Version data entries

396 entries across 396 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/mips/exercises/triangle/example.mips
trackler-2.2.1.179 tracks/mips/exercises/triangle/example.mips
trackler-2.2.1.178 tracks/mips/exercises/triangle/example.mips
trackler-2.2.1.177 tracks/mips/exercises/triangle/example.mips
trackler-2.2.1.176 tracks/mips/exercises/triangle/example.mips
trackler-2.2.1.175 tracks/mips/exercises/triangle/example.mips
trackler-2.2.1.174 tracks/mips/exercises/triangle/example.mips
trackler-2.2.1.173 tracks/mips/exercises/triangle/example.mips
trackler-2.2.1.172 tracks/mips/exercises/triangle/example.mips
trackler-2.2.1.171 tracks/mips/exercises/triangle/example.mips
trackler-2.2.1.170 tracks/mips/exercises/triangle/example.mips
trackler-2.2.1.169 tracks/mips/exercises/triangle/example.mips
trackler-2.2.1.167 tracks/mips/exercises/triangle/example.mips
trackler-2.2.1.166 tracks/mips/exercises/triangle/example.mips
trackler-2.2.1.165 tracks/mips/exercises/triangle/example.mips
trackler-2.2.1.164 tracks/mips/exercises/triangle/example.mips
trackler-2.2.1.163 tracks/mips/exercises/triangle/example.mips
trackler-2.2.1.162 tracks/mips/exercises/triangle/example.mips
trackler-2.2.1.161 tracks/mips/exercises/triangle/example.mips
trackler-2.2.1.160 tracks/mips/exercises/triangle/example.mips