Демоническое число - это положительное целое число, десятичное представление которого состоит только из 6. Список демонических чисел начинается с 6, 66, 666, 6666.
Учитывая положительное целое число, выведите ближайшее демоническое число. Если их два, выведите большее.
Testcases:
n output
1 6
2 6
3 6
6 6
35 6
36 66
37 66
100 66
365 66
366 666
666 666
999 666
Это код-гольф . Кратчайший ответ в байтах побеждает.
code-golf
number
arithmetic
Дрянная Монахиня
источник
источник
Ответы:
Python 2, 28 байт
источник
x=>'6'.repeat((''+-~(x*3/11)).length)
3.6666... = 11/3
..JavaScript (ES6),
3129 байтПоказать фрагмент кода
«Вот почему я наслаждаюсь слабостями […] Ибо, когда я слаб, тогда я силен».
источник
Брахилог , 8 байт
Попробуйте онлайн!
объяснение
источник
Java 7,
969366 байтПорт @orlp удивительный ответ Python 2 .
Попробуй это здесь.
Я думаю, мой 66- байтовый счет тоже демон. ;)
(Кстати, не самый короткий ответ Java, см. Ответ @JollyJoker за это .
источник
"6"
должно было быть""
.Желе , 9 байт
Монадическая ссылка.
Попробуйте онлайн! - Почти нет смысла в этой ссылке (см. Ниже)!
Как?
В стиле настоящего игрока в гольф это действительно неэффективно - в TIO время 365 для тестового примера 365 ! Локально это заканчивается в 37-х годах.
Патч для запуска того же алгоритма в пределах 60 с для 365 и 366 на TIO состоит в том, чтобы избежать неявной векторизации
Ḍ
withẆa6Ḍ€ạÐṂ⁸Ṫ
( попробуйте это ), однако теперь это вызовет ошибку сегмента для входа 999 ( Triangle (999) только 499 500, но каждое из них представляет собой список целых чисел, в результате чего общее число тетраэдров (999) = 166 666 500 целых чисел, не потребляющих память, по крайней мере, в Python).источник
Желе , 10 байт
Попробуйте онлайн!
источник
‘×3:11Ṿ”6ṁ
для вывода строки,‘×3:11D6ṁḌ
для целого числа.C 118 байт
Попробуйте онлайн
источник
JavaScript (ES6), 41 байт
Контрольные примеры
Показать фрагмент кода
источник
Mathematica, 36 байт
Чистая функция:
Объяснение:
Итеративно создайте список длины, равной вводу, используя
NestList
следующую последовательность,6+10x(previous_value)
начиная со значения6
.Затем найдите значение в этом списке ближе всего к входу.
Наконец, возьмите максимальное значение из списка ближайших значений.
Хотя длина списка супер неэффективна, так как mathematica может работать с произвольными значениями длины точности, эта программа ограничена только физической памятью.
источник
Шаблоны считаются вредными , 118 байт
Попробуйте онлайн!
Ungolfed:
источник
05AB1E ,
109 байтов- 1 байт благодаря Райли
Попробуйте онлайн!
Приведенный выше код может иметь проблемы с производительностью, вот немного более эффективная версия с 10 байтами: альтернатива TIO
объяснение
источник
Mathematica, 76 байт
источник
Нейм ,
1210 байт (не конкурирует)-1 байт благодаря Стинбергу
Объяснение:
К несчастью,
𝕔
вернет нижнее значение в списке, если два числа имеют одинаковую разницу, поэтому нам пришлось добавить 2 байта, чтобы учесть это.Не конкурирующие как
>
,<
иℝ
были добавлены после того, как этот вопрос был задан (и𝐥
был исправлен для работы с числами, а не только списками)Примечание: не будет работать для чисел с длиной, равной 19 или более, так как они становятся слишком большими для длинных строк Java. (но это довольно большое значение, и должно быть в порядке)
Попытайся
источник
Γ6Θℝ)
сΓΘ𝐈Γ6)𝐣)
?Java 8, 37 байт
Судя по примеру Кевина Cruijssen в и просто возвращает строку.
Сделайте трюк * 3/11, чтобы получить правильную длину, затем замените все шестерками.
источник
-~
что я должен был бы увидеть десять раз на этой странице, если бы я обратил внимание ...QBIC ,
3727 байтВместо использования Maths ™ теперь используется манипулирование строками для поиска разрывов в доменах демонов (36, 366, ...). Вдохновлен ответом @ eush77's JS.
объяснение
источник
постоянный ток , 46 байт
Попробуйте онлайн!
источник
C #, 142 байта
Он использует тот факт, что нам нужно переходить к следующему димоническому числу через каждые 36666 ... В более читаемой форме:
источник
Braingasm , 15 байт
Используя арифметику из решения Python от orlp :
источник
Я не видел этот вопрос в ленте, а случайно наткнулся на него. Вот мой ответ в любом случае:
JavaScript (ES6), 34 байта
Добавьте 1 байт для числового ответа. Первоначально основанный на этом откровенном ответе ES7 (37 байтов, уже числовых):
К сожалению, OP хочет, чтобы 36 было ближе к 66, чем к 6. Объяснение: 11/3 = 3,666 ..., поэтому делим с помощью этого шкалы диапазонов 7,36, 37,3666 и т. Д. До диапазонов 1,9,9,10. ..99.9 и т. Д. Эту проблему можно решить чисто численно, взяв на 2/3 единицу меньше, чем следующая более высокая степень 10, хотя усечь ее лучше, преобразовать в строку, а затем заменить все символы на цифру 6. (Хотя все же не такой гольф, как этот действительно умный рекурсивный ответ.)
источник
CJam, 25 байтов
Не так медленно, как Jonathan Alan's Jelly, но требует O (n²) памяти, где n - номер входа. Да.
Это эквивалентно следующему Python:
Альтернативное решение, 12 байт
Это перевод алгоритма orlp на CJam.
Объяснение:
источник
PHP, 49 байт
обрезать персонажа 6
Попробуйте онлайн!
Вместо этого
trim($x=$argn+$i,6)>""
вы можете использовать решение Regex + 11!preg_match("#^6+$#",$x=$argn+$i)
байт или длину строки, равную счету6
сравненияstrlen($x=$argn+$i)-strspn($x,6)
+ 10 байт.источник
LOLCODE 1.4, 471 байт
Вау. Вот что Ungolfed и объяснил:
Все еще вау. Вот вам псевдояваскрифон.
Все еще не понимаю? Эта программа в основном просто (исключая входы 1-3) сравнивает входные данные с 3,6 * 10 ^ n, где n - длина входного сигнала. Если оно меньше этого числа, оно печатает число на 6 с на единицу меньше длины. Если оно больше или равно этому числу, число шестерок является текущей длиной.
Хотелось бы помочь в гольф!
источник
Haxe, 70 байт
Ввод должен быть передан как тип
Float
несмотря на то, что он является целым числом, в противном случае Haxe будет жаловаться на попытку деления целого числа (да, haxe откажется компилировать, если вы делите целое число на что-либо)Так же, как и все остальные ответы. Умножьте на 3, разделите на 11, выведите 1
6
для каждой цифры.источник
Brainfuck, 315 байт
Запустите это здесь . Выберите размер ячейки, который может обрабатывать значения 3 * (n + 1), поэтому для работы всех тестовых случаев выберите 16. Динамическая (бесконечная) память должна быть включена, чтобы это работало. Это позволяет ленте расширяться влево. Чтобы ввести целое число, введите ввод как
\366
для n = 366.Ungolfed:
Использует тот же алгоритм, что и это решение . Алгоритмы, используемые для каждого отдельного шага, взяты из этой страницы . Все используемые алгоритмы не являются переносами, поэтому программа не будет работать при больших входах.
источник
n=n*3
можно играть в гольф на что-то вроде[->+++<]
? А алгоритм divmod для деления на 10?05AB1E , 7 байтов
Попробуйте онлайн!
источник
Japt , 9 байт
Попытайся
источник
C #, 102 байта
Кинда, разочарованная в длине этого, могла сделать то же самое, что и короткий ответ в Java, но я не очень поняла это, потому что я ленивый, глупый разработчик .NET :)
источник