Sorozat

Sorozat

Könnyű

Utasítások

Adott egy számjegyekből álló string. Add vissza a benne előforduló összes n hosszúságú, összefüggő részstringet abban a sorrendben, ahogy megjelennek.

Például a „49142” stringnek a következő háromjegyű sorozatai vannak:

  • „491”
  • „914”
  • „142”

És a következő négyjegyű sorozatai:

  • „4914”
  • „9142”

Ha pedig egy ötjegyű stringből hatjegyű sorozatot kérsz, azt kapod, amit érdemelsz.

Vedd figyelembe, hogy ezeknek a sorozatoknak csak szomszédos pozíciókat kell elfoglalniuk a bemenetben; a számjegyeknek nem kell számszerűen egymást követőnek lenniük.

Megvalósítás

Definiálj két függvényt: (Kettőt? Igen, néha többet kérünk a Go-tól.)

Az All az s összes n hosszúságú részstringjének listáját adja vissza.

All(n int, s string) []string

Az UnsafeFirst az s első, n hosszúságú részstringjét adja vissza.

UnsafeFirst(n int, s string) string

Ezen a ponton késznek tekintheted a feladatot, és továbbléphetsz.

De várjunk csak, talán felmerül benned egy jogos kérdés: miért Unsafe First a függvény neve? Ha érdekel, olvass tovább, mert jön egy bónuszfeladat.

Bónuszfeladat

Miután sikerül a go test, próbáld ki a go test -tags asktoomuch parancsot. Ez egy build tag segítségével engedélyez egy korábban kikapcsolt tesztet. A build tagek lehetővé teszik, hogy kiválaszd, mely fájlokat használja a csomag. A mi esetünkben ez dönti el, hogy mely tesztfájlok kerüljenek felhasználásra. Ezekről bővebben a Go dokumentációjában olvashatsz.

Talán észreveszed, hogy ezt az asktoomuch tesztet nem tudod kielégíteni. Kell egy mód arra, hogy jelezzük: bizonyos esetekben nem tudod kivenni a string első N karakterét. Az UnsafeFirst erre nem képes, mert csak egy stringet ad vissza.

Hogy ezt megoldjuk, adjunk a függvényhez még egy visszatérési értéket. Definiáld a First(int, string) (first string, ok bool) függvényt, és teszteld a go test -tags first paranccsal.

Az ok bool második visszatérési argumentum gyakori és idiomatikus minta a Go-ban. Például a map lekérdezésekben és a típus-állításokban is találkozhatsz vele.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Go Exercism

Készen állsz elkezdeni a(z) Sorozat feladatot?

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