Bu zorlukta, toprağınızın ne kadar büyük olduğunu hesaplarsınız.
İnşa ettiğiniz duvarı göz önüne alarak toprağınızın büyüklüğünü hesaplayan bir program veya işlev yazın. "Yukarı", "aşağı", "sol" ve "sağ" gibi dört yönü gösteren 4 farklı karakterden oluşan boş olmayan bir giriş dizesi verilir ( ^ v < >
bu mücadelede kullanacağım ). 180 derece dönüş yapmak mümkün değildir ( <>
veya ^v
), ancak duvarınızı geçebilirsiniz.
Toprağı "yakalama" şekliniz onu duvarınızla sarmaktır. Duvarın kendisi de topraklarınızın bir parçası olarak kabul edilir. Birkaç örnek daha net hale getirecek. Ben kullanacağız o
, duvarla çevrili olan arazi için x
duvara kendisi için ve S
duvar başlayan noktası için, sadece duvar inşa nasıl göstermek için. Çıktı da arazinin toplam büyüklüğü olması (sayısında gerektiğini o
, x
ve S
test durumları aşağıda).
Input: >>>>
Land: Sxxxx
Output: 5
Input: <<<^^^>>>vv
Land:
xxxx
xoox
xoox
xxxS
Output: 16
Input: <<<^^^>>>v
Land:
xxxx
x x
x
xxxS
Output: 11
Input: <
Land: xS
Output: 2
Input: >>>>>>vvvvvvvvv<<<<<^^^^>>>>>>>>vvvvvvvvvv<<<<<<<<<<<<<<<^^^^^^^^^>>>vvvvvv<<<<<
Land:
Sxxxxxx
x
x
x
x
xxxxxxxxx
xxxx xoooox x
xoox xoooox x
xoox xoooox x
xoox xxxxxx x
xoox x
xoox x
xxxxxx x
x x
x x
xxxxxxxxxxxxxxxx
Output: 101
Input: >>vvvv>>^^<<<<^
Land:
Sxx
xox
xxxxx
xox
xxx
Output: 17
Input: <<^^^>>>vv
Land:
xxxx
x x
x x
xxS
Output: 11 <- Note, diagonal edges do not close the "loop"
Açıklamalar:
- Duvarı çizmenize gerek yoktur, çıktı yalnızca bir tamsayı olmalıdır
- Giriş formatı isteğe bağlıdır. Bir dize
<>^v
, basamak(1, -1, i, -i)
listesi, karakter listesiABCD
vb.
Bu kod-golf olduğundan her dilde en kısa kod kazanır. Unutmayın, açıklamalar "normal" dillerde bile önemlidir!