Kurzusok
/
Rust
Rust
/
Feladatok
/
Virágmező
Virágmező

Virágmező

Közepes

Bevezetés

A Virágmező a népszerű Aknakereső játék együttérző újragondolása. A játék célja, hogy megtaláld a kert összes virágát olyan számokkal jelzett utalások segítségével, amelyek megmutatják, hány virág van közvetlenül egy mező mellett (vízszintesen, függőlegesen, átlósan). A Virágmező a Microsoft Windows olaszországi, németországi, dél-koreai, japán és tajvani változataiban jelent meg.

Utasítások

A feladatod, hogy egy kész Virágmező-kert üres mezőibe beírd a virágok számát. Maga a kert egy téglalap alakú tábla, amely olyan mezőkből áll, amelyek vagy üresek (' '), vagy virágot jelölnek ('*').

Minden üres mezőnél számold meg, hány virág van mellette (vízszintesen, függőlegesen és átlósan). Ha az üres mező mellett nincs virág, hagyd üresen. Egyébként írd be a helyére a mellette lévő virágok számát.

Például kaphatsz egy ilyen, 5 x 4-es táblát (az üres helyek itt a '·' karakterrel vannak jelölve, hogy a képernyőn is látszódjanak):

·*·*·
··*··
··*··
·····

A kódodnak pedig ezt kell belőle előállítania:

1*3*1
13*31
·2*2·
·111·

Teljesítménytipp

Minden bemenet és kimenet ASCII-ben van. A Rust String és &str típusai utf8-asak, ezért bár azt várnánk, hogy a "Hello".chars() egyszerű, valójában minden karakteren meg kell néznie, hogy 1, 2, 3 vagy 4 u8 hosszú-e. Ha tudjuk, hogy egy &str ASCII, akkor meghívhatjuk rajta az .as_bytes() metódust, és a mögöttes adatra &[u8]-ként (bájtszeletként) hivatkozhatunk. Sokkal gyorsabb egy ASCII-bájtokból álló szeleten végigiterálni, mert nem kerülnek képbe kódpontok: minden ASCII-bájt egy u8 hosszú.

Meg tudod oldani a feladatot anélkül, hogy klónoznád a bemenetet?

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

Készen állsz elkezdeni a(z) Virágmező feladatot?

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

Mélyelemzés: Virágmező!

Felfedezzük az egymásba ágyazott for-ciklusokat, a min/max ügyes használatát a határellenőrzés egyszerűsítésére, a funkcionális pipeline-okat és a kétdimenziós mátrixok használatát.