Skip to content

Instantly share code, notes, and snippets.

@koorchik
Last active July 21, 2019 09:13
Show Gist options
  • Save koorchik/867460697526af0d84940960ee82652b to your computer and use it in GitHub Desktop.
Save koorchik/867460697526af0d84940960ee82652b to your computer and use it in GitHub Desktop.
SecretNumber OdessaJS JS Golf

Небольшая заруба для всех участников конференции OdessaJS. Играем в JavaScript Golf. Есть простая задача, нужно написать решение и чье решение будет содержать меньше всего символов, тот и победил.

Задача будет опубликована в чате @jsgolf. Подключится можно в любой момент, делитесь ссылкой.

Задача

Уменьшить целое число до "секретного числа".

Пример

Вот так выглядит процесс:

Единственным аргументом к скрипту будет число (аргумент передается всегда и всегда только один).

  1. Шаг за шагом смещаясь по одной цифре мы берем пара цифр и считаем их сумму. Число 1234 будет обработано таким образом: 1+2, 2+3, 3+4.
  2. Если сумма пары числе больше 9-ти, то просуммируйте цифры результата, чтобы получилось число не от нуля до девяти.
  3. Сконкатенируйте все результаты в новое число. Новое число будет на одну цифру короче.
  4. Повторяйте шаги 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.

Правила

  1. Скрипт должен выдать результат по каждой итерации включая стартовое число. После каждого числа должен быть символ перевода строки.
>node secret.js 8169
8169
976
74
2
  1. Нельзя использовать никакие внешние библиотеки.
  2. Все скрипты будут тестироваться на NodeJs 12.
  3. Программа может быть многострочной. Несколько переводов строк подряд считаются как один перевод строки.
  4. Если у двух людей совпадает количество символов в программе, то первым будет та, у которой больше алфавитныйх символов (a-zA-Z)
  5. Минификаторами пользоваться не запрещено. К примеру, https://jscompress.com/
  6. Держите свой скрипт в секрете, все скрипты будут опубликованы после определения победителя.
  7. Но длину вашего решения смело публикуйте в чат :)

Дедлайн

Закончить нужно до 21:00 21.07.2019

 Механизм сабмита решени:

  1. Помещаем свой код в секретный gist https://gist.github.com/new. Можете несколько файлов (с финальным решением и, к примеру, развернутые версии до минификации). Сделать gist нужно до 21:00 21.07.2019.
  2. После 9 вечера сбрасываете в чат @jsgolf длину решения и ссылку на gist с решением.
  3. Делитесь результатом, даже, если это не самый лучший результат!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment