Kurzusok
/
jq
jq
/
Feladatok
/
Virágmező
Virágmező

Virágmező

Nehéz

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·

További jq parancssori kapcsolók

A tesztekben feltűnhet néhány extra kapcsoló a jq-hoz.

run jq -s -R -c -f flower-field.jq << 'END_INPUT'

Mik ezek?

  • -s

    Ez a „slurp” mód. Ahelyett, hogy a bemenetet JSON-objektumok folyamaként kezelné, az összes bemenetet egyetlen tömbbe szippantja be.

    $ seq 5 | jq -c '.'
    1
    2
    3
    4
    5
    $ seq 5 | jq -s -c '.'
    [1,2,3,4,5]
    
  • -R

    A -r kapcsolót talán már láttad: az „nyers” stringeket ír ki (idézőjelek nélkül). Ez épp az ellenkezője. A bemenet minden sorát stringként veszi.

    Két példa:

    $ seq 5 | jq -R -c .
    "1"
    "2"
    "3"
    "4"
    "5"
    
    $ echo 42 | jq '. * 2'      # input is a JSON number
    84
    $ echo 42 | jq -R '. * 2'   # input is a JSON string
    "4242"
    

Ha ezt a két kapcsolót együtt használod, nem stringek tömbjét kapod: a teljes bemenetet egyetlen stringként kapod meg, a sorvégi újsorokat is beleértve.

$ seq 5 | jq -s -R -c .
"1\n2\n3\n4\n5\n"

Ennek a kezelése is része a feladat kihívásának.

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

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

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) jq nyelvet 12 fogalom75 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.