typestar

Conjuntos en Scala

Un conjunto de aperturas de ajedrez estudiadas, consultado por pertenencia y cruzado con un repertorio rival.

// a Set literal keeps one copy of each element, in no fixed order
val studied: Set[String] = Set("Sicilian", "London", "Caro-Kann")

// a Set is a function from element to Boolean, so applying it
// asks about membership exactly like contains does
val knowsLondon: Boolean = studied("London")
val knowsBenoni: Boolean = studied.contains("Benoni")

// + and - build new sets, and adding a duplicate changes nothing
val plusBenoni: Set[String] = studied + "Benoni"
val minusLondon: Set[String] = studied - "London"
val stillThree: Boolean = (studied + "London").size == 3

// union gathers the elements of both sets
val opponent: Set[String] = Set("London", "Bird", "Sicilian")
val eitherPlayer: Set[String] = studied.union(opponent)

// intersect keeps only the ones both sets have
val bothPlayers: Set[String] = studied.intersect(opponent)

Cómo funciona

  1. Set("Sicilian", "London", "Caro-Kann") guarda una sola copia de cada apertura, sin orden fijo.
  2. studied("London") aplica el conjunto como función a Boolean, la misma pregunta que contains hace por nombre.
  3. studied + "Benoni" y studied - "London" crean conjuntos nuevos; union junta ambos e intersect deja los comunes.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
19
Caracteres a escribir
840
Tokens
122
Ritmo de tres estrellas
75 tpm

Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 98 segundos.

Escribe este fragmento

Paso 3 de 3 en Colecciones; paso 12 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →