다이아몬드 카타는 문자 하나를 입력으로 받아 다이아몬드 모양으로 출력해요. 문자를 하나 주면 'A'로 시작하고, 주어진 문자가 가장 넓은 지점에 오는 다이아몬드를 출력해요.
다음 예시에서 공백은 · 문자로 표시했어요.
'A'에 대한 다이아몬드:
A
'C'에 대한 다이아몬드:
··A··
·B·B·
C···C
·B·B·
··A··
'E'에 대한 다이아몬드:
····A····
···B·B···
··C···C··
·D·····D·
E·······E
·D·····D·
··C···C··
···B·B···
····A····
diamond 함수를 구현해야 해요. 이 함수는 A에서 시작하고, 가장 넓은 지점에 주어진 문자가 오는 다이아몬드를 출력해요. 타입이 확실하지 않다면 제공된 시그니처를 사용해도 되지만, 그것 때문에 창의성을 제한하지는 마세요:
diamond :: Char -> Maybe [String]
이 연습 문제는 텍스트 데이터를 다뤄요. 역사적인 이유로 Haskell의 String 타입은 문자들의 리스트인 [Char]와 같은 의미예요. 텍스트 데이터를 더 효율적으로 다루려면 Text 타입을 사용할 수 있어요.
이 연습 문제의 선택적 확장으로, 다음을 해볼 수 있어요.
import qualified Data.Text as T
import Data.Text (Text)
diamond :: Char -> Maybe [Text]처럼 작성하고, Data.Text의 함수를 T.pack처럼 참조할 수 있어요,Data.Text 문서를 찾아봐요,String이 나오는 곳을 모두 Text로 바꾸면 돼요:diamond :: Char -> Maybe [Text]
이 부분은 전적으로 선택 사항이에요.
Exercism에 가입하고 Haskell 트랙을 연습 문제 107개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.