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