Возьмите в десять минут: кодовые главы для решения KATA В этой статье я объясню решение KATA от кодовых цен. Эта ката (проблема) создана jkphobic. А вот ката Ссылка: https://www.codewars.com/kata/54da539698b8a2ad76000228/train/python.
Проблема: Вы живете в городе Карэзиан, где все дороги выложены в идеальной сетке. Вы прибыли десять минут слишком рано назначению, поэтому вы решили принять возможность пойти на короткую прогулку. Город предоставляет своим гражданам прогулке, генерирующим приложение на своих телефонах – каждый раз, когда вы нажимаете кнопку, он отправляет вам массив одной буквы одной буквы, представляющим направления для прогулки (например, [‘n’, ‘s’, ‘w’, ‘e’]). Вы всегда идете только один блок для каждой буквы (направления), и вы знаете, что это требует от одной минуты, чтобы пройти один городской блок, поэтому создайте функцию, которая вернется True, если прогулка приложение дает вам ровно десять минут Не хочу быть рано или поздно!) И будет, конечно, вернуть вас в свою отправную точку. Верните ложь в противном случае.
Примечание. Вы всегда получите действительный массив, содержащий случайное ассортимент направления букв («N», «S», «E» или «W»). Это никогда не даст вам пустой массив (это не прогулка, это все равно!).
Прежде всего, нам нужно понять проблему. Тогда мы увидим, что он будет введен и, конечно, какой вывод он хочет от нас.
Если вы прочитаете проблему дважды или трижды, вы увидите несколько таких вещей, как то, что нам нужно держать в наших умах. Нравится:
Прогулка должна быть в течение 10 минут. Вам необходимо вернуться в исходную точку каждый элемент списка (каждая буква) или один блок представляет одну минуту
Давайте преобразуем эти инструкции в код и сделайте небольшие сегменты всего кода решения: Так,
if len(walk) == 10 //True else // False
Мы создадим две переменную и инициализируем до 0, чтобы отслеживать нашу прогулку, NS (North-юг) и EW (East-West) –
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
Я надеюсь, что это было полезно и полезно. Пожалуйста, поделись своими мыслями. Спасибо за чтение.
«Любой дурак может написать код, который может понять компьютер. Хорошие программисты написать код того, что люди могут понять ». – Мартин Фаулен
Оригинал: “https://dev.to/papansarkar101/take-a-ten-minute-walk-a-codewars-kata-solution-by-papan-sarkar-4mf0”