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.
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·
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?
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.
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.