typestar

Ordenar tu propio struct en Mojo

Conforma con Comparable y el sort estándar ordenará tus valores.

from std.builtin.sort import sort


@fieldwise_init
struct Card(ImplicitlyCopyable, Movable, Comparable):
    var rank: Int

    def __lt__(self, other: Self) -> Bool:
        return self.rank < other.rank

    def __eq__(self, other: Self) -> Bool:
        return self.rank == other.rank


def main():
    var hand = [Card(7), Card(2), Card(10), Card(5)]
    sort(hand)
    for card in hand:
        print(card.rank)

Cómo funciona

  1. Comparable se satisface con __lt__ y __eq__ juntos.
  2. Los dos comparan el campo rank, que es lo que aquí significa ordenar una carta.
  3. sort(hand) reacomoda la lista en el lugar, del rango más bajo primero.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
19
Caracteres a escribir
369
Tokens
102
Ritmo de tres estrellas
70 tpm

Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 87 segundos.

Escribe este fragmento

Paso 5 de 5 en Traits; paso 20 de 22 en Structs y traits.

← Anterior Siguiente →