Gyémánt

Gyémánt

Könnyű

Utasítások

A diamond kata bemenete egy betű, kimenete pedig egy gyémánt alakzat. A kapott betűből kiindulva egy gyémántot ír ki, amely 'A'-val kezdődik, és a legszélesebb pontján a kapott betű áll.

Követelmények

  • Az első sorban egy 'A' áll.
  • Az utolsó sorban egy 'A' áll.
  • Az első és az utolsó sor kivételével minden sorban pontosan két azonos betű van.
  • Minden sorban annyi záró szóköz van, mint amennyi kezdő. (Ez 0 is lehet.)
  • A gyémánt vízszintesen szimmetrikus.
  • A gyémánt függőlegesen szimmetrikus.
  • A gyémánt négyzet alakú (a szélessége megegyezik a magasságával).
  • A betűk gyémánt alakot formálnak.
  • A felső felében a betűk növekvő sorrendben követik egymást.
  • Az alsó felében a betűk csökkenő sorrendben követik egymást.
  • A négy sarok (amelyek a szóközöket tartalmazzák) háromszög.

Példák

A következő példákban a szóközöket · karakterek jelölik.

Az 'A' betűhöz tartozó gyémánt:

A

A 'C' betűhöz tartozó gyémánt:

··A··
·B·B·
C···C
·B·B·
··A··

Az 'E' betűhöz tartozó gyémánt:

····A····
···B·B···
··C···C··
·D·····D·
E·······E
·D·····D·
··C···C··
···B·B···
····A····

Tippek

Meg kell valósítanod a diamond függvényt, amely egy A-tól induló gyémántot rajzol ki, a megadott karakterrel a legszélesebb pontjain. Ha bizonytalan vagy a típusokban, használhatod a megadott szignatúrát, de ne hagyd, hogy korlátozza a kreativitásodat:

diamond :: Char -> Maybe [String]

Ez a feladat szöveges adatokkal dolgozik. Történelmi okokból a Haskell String típusa ugyanazt jelenti, mint a [Char], azaz a karakterek listája. A szöveges adatok hatékonyabb kezeléséhez a Text típus használható.

A feladat opcionális kiegészítéseként a következőket teheted:

import qualified Data.Text as T
import           Data.Text (Text)
  • Most már írhatsz például ilyet: diamond :: Char -> Maybe [Text], és hivatkozhatsz a Data.Text kombinátoraira, például a T.pack-re,
  • Nézd meg a Data.Text dokumentációját,
  • Ezután a Diamond.hs fájlban a String minden előfordulását lecserélheted Text-re:
diamond :: Char -> Maybe [Text]

Ez a rész teljesen opcionális.


Forrás

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

Készen állsz elkezdeni a(z) Gyémánt feladatot?

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