Kurzusok
/
Cairo
Cairo
/
Feladatok
/
Üdvözlünk a Tech Palace-ban!
Üdvözlünk a Tech Palace-ban!

Üdvözlünk a Tech Palace-ban!

Tanulófeladat

Bevezetés

A Cairo-nak nincs natív string típusa, de kétféleképpen is kezelheti őket: rövid stringekként szimpla idézőjelekkel, illetve ByteArray-ként dupla idézőjelekkel.

A rövid string olyan ASCII string, amelyben minden karakter egyetlen bajton van kódolva.

A Cairo alapértelmezés szerint a felt252 típust használja a rövid stringekhez, így azok maximális hossza mindössze 31 karakter.

// below are different ways to write the same value
let name: felt252 = 'Jane';     // short string format
let name: felt252 = 0x4a616e65; // byte format
let name: felt252 = 1247899237; // decimal format

Technikailag bármely felt252-nél kisebb egész típus ábrázolható a rövid string formátummal.

// all of the below are equal u8 values, they are just written using different formats!
let lowercase_a_in_ascii: u8 = 'a';  // short string format
let lowercase_a_in_ascii: u8 = 0x61; // byte format
let lowercase_a_in_ascii: u8 = 97;   // decimal format

A 31 karakternél hosszabb stringekhez a Cairo a ByteArray típust kínálja, amelynek hossza korlátlan.

let long_string: ByteArray = "this is a string which has more than 31 characters";

A ByteArray típusok a + operátorral fűzhetők össze:

"Jane" + " " + "Austen"
// => "Jane Austen"

Egyes speciális karaktereket egy kezdő visszaperjellel kell escape-elni, például a \t a tabulátort, a \n pedig az új sort jelöli a stringekben.

"How is the weather today?\nIt's sunny"  
// =>
// How is the weather today?
// It's sunny

Egy ByteArray egyes bájtjaihoz akár az indexük segítségével is hozzáférhetsz.

De légy óvatos: a visszaadott bájt típusa u8, nem pedig ByteArray!

let hello: ByteArray = "Hello World!";
let exclamation_mark: u8 = hello[11];
// => 33

A core könyvtár számos hasznos metódust és operátort biztosít a ByteArray típusok kezeléséhez.

A ByteArray metódusairól bővebb információt a ByteArrayTrait dokumentációjában találsz.

Íme néhány példa:

let name: felt252 = 'Jane';
let mut greeting: ByteArray = "Welcome ";

// append_word appends a single word of a given number of bytes to the end of the ByteArray 
greeting.append_word(name, 4);
// => "Welcome Jane"

// rev returns a ByteArray with the all characters reversed
let rev_greeting = greeting.rev();
// => "enaJ emocleW"

Utasítások

A közelben található egy „Tech Palace” nevű háztartásigép-bolt. A bolt tulajdonosa nemrég egy nagy kijelzőt telepített, hogy marketingüzeneteket jelenítsen meg vele, és hogy különleges üdvözlést mutasson, amikor a vásárlók a bejáratnál leolvastatják a hűségkártyájukat. A kijelző sok apró LED-lámpából áll, és több sor szöveget is meg tud jeleníteni.

A bolt tulajdonosának segítségre van szüksége az új kijelző szövegét előállító kóddal kapcsolatban.

1. Készítsd el az üdvözlő üzenetet

A legtöbb vásárlónál, aki leolvastatja a hűségkártyáját, a bolt tulajdonosa azt szeretné, hogy a kijelzőn a Welcome to the Tech Palace, szöveg jelenjen meg, majd utána a vásárló neve csupa nagybetűvel.

Valósítsd meg a welcome_message függvényt, amely a vásárló nevét egy rövid string (felt252) argumentumként fogadja, és a kívánt üzenetet ByteArray-ként adja vissza.

welcome_message("Judy")
// => Welcome to the Tech Palace, JUDY

2. Adj hozzá egy díszes szegélyt

A bolt hűséges, sokat vásárló ügyfelei számára a tulajdonos díszesebbé tenné az üdvözlő kijelzőt azzal, hogy az üdvözlő üzenet elé és mögé is egy-egy csillagsort tesz. Még nem tudják biztosan, hány csillag legyen a sorokban, ezért beállíthatóvá szeretnék tenni.

Írj egy add_border függvényt, amely egy üdvözlő üzenetet (egy ByteArray) és a soronkénti csillagok számát (u32 típus) fogadja argumentumként. A visszatérési értéke egy ByteArray legyen, amely 3 sorból áll: a kívánt számú csillagot tartalmazó sor, majd a bemenetként kapott üdvözlő üzenet, végül egy újabb csillagsor.

add_border("Welcome!", 10)

A következőt kell visszaadnia:

**********
Welcome!
**********

3. Tisztítsd meg a régi marketingüzeneteket

Mielőtt felszerelték ezt az új kijelzőt, a boltban egy hasonló kijelző volt, amely csak nem beállítható, statikus sorokat tudott megjeleníteni. A tulajdonos szeretne néhány régi marketingüzenetet újra felhasználni az új kijelzőn. A régi adatokban azonban már benne van egy csillagszegély, és néhány szerencsétlen szóköz is. A feladatod, hogy megtisztítsd az üzeneteket, hogy újra felhasználhatók legyenek.

Valósítsd meg a clean_up_message függvényt, amely a régi marketingüzenetet egy ByteArray-ként fogadja. A függvény először távolítsa el az összes csillagot a szövegből, majd a maradék szöveg elejéről és végéről a szóközöket. Ezután a megtisztított üzenetet kell visszaadnia.

let message: ByteArray = "
**************************
*    BUY NOW, SAVE 10%   *
**************************
";

clean_up_message(message)
// => BUY NOW, SAVE 10%
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Cairo Exercism

Készen állsz elkezdeni a(z) Üdvözlünk a Tech Palace-ban! feladatot?

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