UniLecs #140_1. Лошадью ходи
UniLecsЗадача: дана строка с кодом шахматного хода, например, "E2-E4". Необходимо определить, является ли заданный код - ходом коня.
Входные данные: строка с 5ю символами: (Буква)(Цифра)(Дефис)(Буква)(Цифра). Буквы - заглавные буквы англ.алфавита. Все символы заданы в кодировке ASCII.
Вывод: TRUE/FALSE - является ли заданный ход - ходом коня.
Пример:
"E2-E4" -> False
"B1-C3" - True
Реализация:
- @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