UniLecs #140_1. Лошадью ходи

UniLecs #140_1. Лошадью ходи

UniLecs

Задача: дана строка с кодом шахматного хода, например, "E2-E4". Необходимо определить, является ли заданный код - ходом коня.

Входные данные: строка с 5ю символами: (Буква)(Цифра)(Дефис)(Буква)(Цифра). Буквы - заглавные буквы англ.алфавита. Все символы заданы в кодировке ASCII.

Вывод: TRUE/FALSE - является ли заданный ход - ходом коня.

Пример

"E2-E4" -> False

"B1-C3" - True

Реализация:

  1. @artkvl, Python: 1 балл

Решение с разбором: https://repl.it/repls/HumbleStudiousContent


2. @jinxonik, С++, Ruby, GolfScript: (1 + 0.1 балл за Метод 1А + 0.5 балла за Метод 2 + 2*0.1) = 1.8 балла

Метод №1: проверка перемещения по горизонтали (dx) на 1 позицию и по вертикали (dy) на 2, либо наоборот. Единственный метод, где абсолютная величина берётся при вычислении dx и dy.
Метод №1A: оптимизация предыдущего метода. Перемножим dx и dy и возьмём абсолютное значение от результата. Если получили 2, значит один из них = ±1, а другой = ±2, другие варианты дадут иной результат.
Метод №2: теорема Пифагора. Вычислим квадрат расстояния от первой точки до второй. При ходе конём получим ответ = 5.

https://gist.github.com/jin-x/83eb60c48698661aab21352a4c1dc48b


3. Andrew Bystrov, Java: 1 балл

Решение с разбором: https://gist.github.com/AndrewBystrov/c730376b3142dcd334ddfbaf3eb86d9a


4. @akolosov364, JS: 1 балл

https://repl.it/@AlieksieiKoloso/task140?language=nodejs


5. @LostInKadath, Python: 1 балл

Перво-наперво валидируем полученную строку. Она должна разбиваться дефисом на два двухсимвольных токена,каждый из которых состоит из буквы и цифры. Буква может быть только в диапазоне 'abcdefgh', цифра - в '12345678'.Затем мы считаем разность между буквами и разность между цифрами с помощью ASCII-кода символов.Ход шахматного коня имеет структуру - два поля в одном направлении и одно поле в другом.Проверяем две полученные разности на соответствие одному из кортежей (1, 2) или (2, 1).

https://gist.github.com/LostInKadath/0018b943ba100e58ec48bca9088fcfba


6. @IegorT, JS: 1 балл

Решение с разбором: https://gist.github.com/IegorT/9dabc4168714a07a78f712a5cae26105


7. Антон, Rust, Haskell: 1.1 балла

Rust: https://gist.github.com/AnthonyMikh/1b933711dc3299d701eedbdff0789673#gistcomment-2761821

Test Rust: https://play.rust-lang.org/?gist=218483431bc3fd37c5c497dcc1be8e9c

Haskell: https://gist.github.com/AnthonyMikh/5c49db4dde06b5597197f06edc1a571f

Test Haskell: https://rextester.com/CVACV76066


8. @yevhen_samoilenko, JS: 1 балл

Для решения задачи я представил доску как систему координат. Ход коня в шахматах - это смещение по одной из осей на 1 единицу, по другой на 2 единицы.

https://gist.github.com/deugene/5fc20238ba9ba775b933b864addbf3ec

Test: https://repl.it/@YevhenSamoilenk/isHorseMovejs


9. @kirillmotrichkin, Python, Java: 1.1 балла

Ход конём - движение по одной оси на 1, а по другой на 2. Если произведение движений по осям равно по модулю двум, то это ход конём.

https://gist.github.com/superkiria/7711d1c731ba8757094b43e62e34487a

Test Python: https://repl.it/@superkiria/unilecs140-py

Test Java: https://repl.it/@superkiria/unilec140-java


10. @voodoo_woodpecker, VBA, JS, Python, R, Excel, Google.Sheets: (1 + 3*0.1 за 3 доп ЯП + 0.5 балла за оригинальный подход с помощью решения на Excel) = 1.8 балла.

Решение состоит из 3 шагов. Первым делом проверяем что нам дали и если это не шахматный ход, возвращаем False. Второй шаг -- смотрим движение по горизонтали и вертикали. Третий -- проверяем конный ли это ход.

https://gist.github.com/MikePeleah/e91b6073763980762441b9d37414be0a

Решение формулами листа Excel и Google.Sheets:

https://gist.github.com/MikePeleah/e91b6073763980762441b9d37414be0a#file-unilecs140xl-md


Report Page