Небольшая заруба для всех участников конференции OdessaJS. Играем в JavaScript Golf. Есть простая задача, нужно написать решение и чье решение будет содержать меньше всего символов, тот и победил.
Задача будет опубликована в чате @jsgolf. Подключится можно в любой момент, делитесь ссылкой.
Уменьшить целое число до "секретного числа".
Вот так выглядит процесс:
Единственным аргументом к скрипту будет число (аргумент передается всегда и всегда только один).
- Шаг за шагом смещаясь по одной цифре мы берем пара цифр и считаем их сумму. Число 1234 будет обработано таким образом: 1+2, 2+3, 3+4.
- Если сумма пары числе больше 9-ти, то просуммируйте цифры результата, чтобы получилось число не от нуля до девяти.
- Сконкатенируйте все результаты в новое число. Новое число будет на одну цифру короче.
- Повторяйте шаги 1-3 пока не получите одну цифру (это и будет "Секретное число")
Вот полный пример расчета для числа 8169.
Шаг 1: 8+1=9, 1+6=7, 6+9=15 Шаг 2: 15 больше 9, значит складываем цифры 1+5=6 Шаг 3: Результат = "9" + "7" + "6" = 976
Шаг 1: 9+7=16, 7+6=13 Шаг 2: 16 больше 9, значит складываем цифры 1+6=7 Шаг 2: 13 больше 9, значит складываем цифры 1+3=4 Шаг 3: Результат = "7"."4" = 74
Шаг 1: 7+4=11 Шаг 2: 11 больше 9, значит складываем цифры 1+1=2 Шаг 3: Результат = "2" = 2 Шаг 4: Готово
"Секретное число" для 8169 равно 2.
- Скрипт должен выдать результат по каждой итерации включая стартовое число. После каждого числа должен быть символ перевода строки.
>node secret.js 8169
8169
976
74
2
- Нельзя использовать никакие внешние библиотеки.
- Все скрипты будут тестироваться на NodeJs 12.
- Программа может быть многострочной. Несколько переводов строк подряд считаются как один перевод строки.
- Если у двух людей совпадает количество символов в программе, то первым будет та, у которой больше алфавитныйх символов (a-zA-Z)
- Минификаторами пользоваться не запрещено. К примеру, https://jscompress.com/
- Держите свой скрипт в секрете, все скрипты будут опубликованы после определения победителя.
- Но длину вашего решения смело публикуйте в чат :)
Закончить нужно до 21:00 21.07.2019
- Помещаем свой код в секретный gist https://gist.github.com/new. Можете несколько файлов (с финальным решением и, к примеру, развернутые версии до минификации). Сделать gist нужно до 21:00 21.07.2019.
- После 9 вечера сбрасываете в чат @jsgolf длину решения и ссылку на gist с решением.
- Делитесь результатом, даже, если это не самый лучший результат!