10분 걷기: Codewars kata 솔루션 작성: Papan Sarkar

10분 걷기: Codewars kata 솔루션
이 기사에서는 Codewars의 kata 솔루션에 대해 설명합니다. 이 카타(문제)는 JKphobic에 의해 작성되었습니다. 그리고 여기 카타가 있습니다
링크: https://www.codewars.com/kata/54da539698b8a2ad76000228/train/python

문제:
당신은 모든 도로가 완벽한 그리드로 배치된 데카르트 도시에 살고 있습니다. 약속 시간보다 10분 일찍 도착해서 잠시 산책을 하기로 했습니다. 시는 시민들에게 휴대전화에 도보 생성 앱을 제공합니다. 버튼을 누를 때마다 도보 방향을 나타내는 한 글자 문자열 배열(예: ['n', ''', 'w' , '에']). 당신은 항상 각 글자(방향)에 대해 한 블록만 걸으며 한 도시 블록을 가로지르는 데 1분이 걸린다는 것을 알고 있으므로 앱에서 제공하는 도보가 정확히 10분이면 true를 반환하는 함수를 만듭니다. 빠르거나 늦고 싶지 않습니다!) 물론 출발점으로 돌아갑니다. 그렇지 않으면 false를 반환합니다.

참고: 항상 임의의 방향 문자('n', 's', 'e' 또는 'w'만 해당)가 포함된 유효한 배열을 받게 됩니다. 그것은 당신에게 빈 배열을 제공하지 않을 것입니다 (그것은 걷기가 아니라 정지되어 있습니다!).

우선 문제를 이해해야 합니다. 그런 다음 입력이 무엇인지, 물론 어떤 종류의 출력이 우리에게 원하는지 알 수 있습니다.

문제를 두 번, 세 번 읽으면 우리가 마음속에 간직해야 할 것과 같은 몇 가지를 알게 될 것입니다. 처럼 :

도보는 10분이어야 합니다.
출발점으로 돌아가야 합니다
모든 목록 항목(각 문자) 또는 단일 블록은 1분을 나타냅니다.

이 지침을 코드로 변환하고 전체 솔루션 코드의 작은 부분을 만들어 보겠습니다.
그래서,

if len(walk) == 10 //True
else // False


두 개의 변수를 만들고 0으로 초기화하여 걷기, ns(북남) 및 ew(동서)를 추적합니다.

ns = 0
ew = 0


우리가 걷는 모든 단일 블록에 대해 각각 1씩 증가 및 감소합니다.

if we move in n direction then ns += 1
if we move in s direction (coming back) then ns -= 1
if we move in e direction then ew += 1
if we move in w direction (coming back) then ew -= 1


그런 다음 마지막으로 우리가 같은 위치로 돌아갔는지 여부를 확인할 것입니다.

if ns == 0 and ew == 0 //True
else //False


이 모든 것을 결합합시다.

# Python Solution
def is_valid_walk(walk):
    ns, ew = 0, 0
    if len(walk) == 10:
        for i in walk:
            if i == 'n': ns+=1
            if i == 's': ns-=1
            if i == 'w': ew+=1
            if i == 'e': ew-=1
    else:
        return False
    return ns == 0 and ew == 0



//Javascript solution
function isValidWalk(walk) {
    let ns = 0, ew = 0; 
    if(walk.length === 10){
      for (let i of walk) { 
        if (i == 'n') ns += 1; 
        if (i == 's') ns -= 1; 
        if (i == 'e') ew += 1; 
        if (i == 'w') ew -= 1; 
      } 
    }
    else
      return false
      return ns === 0 && ew === 0; 
  }


이제 다른 최고의 영리한 솔루션을 사용할 차례입니다.
가장 많이 추천된 항목:

def isValidWalk(walk):
    return len(walk) == 10 and walk.count('n') == walk.count('s') and walk.count('e') == walk.count('w')

Second one:
def isValidWalk(walk):
    if (walk.count('n') == walk.count('s') and 
        walk.count('e') == walk.count('w') and
        len(walk) == 10):
            return True
    return False


도움이 되고 유용했으면 합니다. 당신의 생각을 저에게 말 해주세요. 읽어 주셔서 감사합니다.

"바보라면 누구나 컴퓨터가 이해할 수 있는 코드를 작성할 수 있습니다. 훌륭한 프로그래머는 인간이 이해할 수 있는 코드를 작성합니다."- 마틴 파울러

좋은 웹페이지 즐겨찾기