Kurzusok
/
R
R
/
Feladatok
/
Ozan lejátszási listája
Ozan lejátszási listája

Ozan lejátszási listája

Tanulófeladat

Bevezetés

Az R-ben nincs külön halmaz adattípus, helyette különféle függvényekkel lehet hasonló műveleteket végezni vektorokon.

A %in% operátor a halmaztagságot ellenőrzi.

2 %in% 1:10 # TRUE
12 %in% 1:10 # FALSE

A releváns függvények közé tartozik a unique (az ismétlődő elemek eltávolítására), valamint a union(), intersect(), setdiff() és setequal(), amelyek halmazpárokon végeznek műveleteket.

> set_1 <- c("a", "b", "c", "b", "a")
> unique(set_1) # deduplicate
[1] "a" "b" "c"

> set_2 <- c('a', "c", "d")
> union(set_1, set_2) # values in either set
[1] "a" "b" "c" "d"

> intersect(set_1, set_2) # values in both sets
[1] "a" "c"

> setdiff(set_1, set_2) # values in set_1 but not set_2
[1] "b"

> setdiff(set_2, set_1) # values in set_2 but not set_1
[1] "d"

setequal(set_1, c("c", "b", "a", "b")) # are elements the same after deduplication?
[1] TRUE

Mindegyik esetben a set_1 és a set_2 változatlanok maradnak.

Utasítások

Ozan lejátszási listát állít össze egy közelgő kirándulásra. Nem szeretné ugyanazt a számot kétszer meghallgatni, de a lista már olyan hosszú lett, hogy nehezen emlékszik rá, mely számokat adta már hozzá.

Ozan zenelejátszójának API-ja csak vektorokkal tud dolgozni. Explicit ciklusokra és if/else logikára nincs lehetőség. Segítségre van szüksége!

1. Távolítsd el a duplikált számokat

Valósítsd meg a remove_duplicates függvényt, amely egy lejátszási listát kap paraméterként, és egy új lejátszási listát ad vissza, amelyben minden szám csak egyszer szerepel.

> playlist <- c(
  "Court and Spark - Joni Mitchell",
  "Big Yellow Taxi - Joni Mitchell",
  "Court and Spark - Joni Mitchell"
)

> remove_duplicates(playlist)
[1] "Court and Spark - Joni Mitchell" "Big Yellow Taxi - Joni Mitchell"

2. Ellenőrizd, hogy egy szám már szerepel-e a listán

Valósítsd meg a has_track függvényt, amely egy lejátszási listát és egy számot kap paraméterként, és egy Boolean értéket ad vissza, amely megmondja, hogy a lista tartalmazza-e a számot.

> playlist <- c(
  "The Fashion Show - Grace Jones",
  "Dr. Funkenstein - Parliament"
)

> has_track(playlist, "Dr. Funkenstein - Parliament")
[1] TRUE

> has_track(playlist, "Walking in the Rain - Grace Jones")
[1] FALSE

3. Adj hozzá számokat

Valósítsd meg az add_tracks függvényt, amely egy lejátszási listát és egy vagy több számból álló vektort kap paraméterként, és egy új lejátszási listát ad vissza, amely tartalmazza ezeket a számokat.

> playlist <- c("Selma - Bijelo Dugme")

> playlist <- add_tracks(playlist, "Atomic Dog - George Clinton")
> playlist
[1] "Selma - Bijelo Dugme"   "Atomic Dog - George Clinton"

> add_tracks(playlist, "Selma - Bijelo Dugme")
[1] "Selma - Bijelo Dugme"   "Atomic Dog - George Clinton"

> add_tracks(playlist, c("The Chain - Fleetwood Mac", "Selma - Bijelo Dugme"))
[1] "Selma - Bijelo Dugme"   "Atomic Dog - George Clinton" "The Chain - Fleetwood Mac"  

4. Törölj számokat

Valósítsd meg a delete_tracks függvényt, amely egy lejátszási listát és egy vagy több számot kap paraméterként, és egy új lejátszási listát ad vissza, amely nem tartalmazza ezeket a számokat.

> playlist <- c(
  "The Treasure - Fra Lippo Lippi",
  "After the Fall - Klaus Nomi"
)

> playlist <- delete_tracks(playlist, "The Treasure - Fra Lippo Lippi")
> playlist
[1] "After the Fall - Klaus Nomi"

> delete_tracks(playlist, "I Feel the Magic - Belinda Carlisle")
[1] "After the Fall - Klaus Nomi"

5. Hasonlítsd össze a lejátszási listákat

Ozan megismerkedik egy új baráttal, és kíváncsi rá, mennyire hasonló a zenei ízlésük. Valósítsd meg a find_common_tracks függvényt, amely két lejátszási listát kap, és egy új lejátszási listát ad vissza, amely csak azokat a számokat tartalmazza, amelyek mindkettőben szerepelnek.

> playlist_1 <- c("Karma - Taylor Swift", "Tired - Adele")
> playlist_2 <- c("Andromeda - Weyes Blood", "Karma - Taylor Swift")
> find_common_tracks(playlist_1, playlist_2)
[1] "Karma - Taylor Swift"
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
R Exercism

Készen állsz elkezdeni a(z) Ozan lejátszási listája feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) R nyelvet 21 fogalom111 feladat segítségével, valódi emberi mentorálással, mindez ingyen.