Вдохновленный этим . Существует число, заданное как целое число, строка или массив цифр (на ваш выбор). Найдите базу, в которой представление числа будет иметь наибольшее число «4», и верните эту базу.
Номер результата 624 5 444 10 68 16
ограничения:
- Возвращаемая база не должна быть больше, чем ввод.
- числа, меньшие или равные abs (4), не должны считаться допустимыми, поэтому допускаются неопределенные возвраты
[1,15,3,64,43]
для некоторого числа в базе80
. Вы выводите только базовый номер, так что вы можете технически проверить каждую базу от2
доn
.1
,2
и3
, которые имеют такое же число «4» s (0) в каждой базе? Кроме того, многие числа имеют одинаковое число «4» во многих базах (например,4
в любой базе> 5,44
в любой базе> 45,14
в базе 9 или любой базе> 15 и т. Д.). Должен ли правильный ответ быть наименьшей базой с наибольшим числом «4»?Ответы:
APL (
3119)Сейчас тестирует все возможные базы.
Объяснение:
⍳K←⎕
: прочитайте ввод пользователя, сохраните в K. Составьте список от 1 до K, которые являются основами для попытки.{
...}¨
: для каждого из них запустите следующую функциюK⊤⍨K⍴⍵
: закодировать K в эту базу, давая список цифр (в виде чисел) для каждой базы. Используйте K цифр (большое завышение, но это не имеет значения, потому что неиспользуемые все равно будут равны нулю).4=
: посмотрите, какие из них равны 4+/
: суммируй, теперь мы знаем, сколько четверок на базу⊃⍒
: дать индексы списка, если он отсортирован вниз, поэтому индекс самого большого находится впереди. Возьмите первый пункт этого списка.источник
⍨
GolfScript, 30 символов
Работает на любой базе - протестируйте код онлайн .
Комментарий: это решение было основано на оригинальной версии вопроса. Таким образом, он может возвращать базу больше, чем вход, например, для входа 4 он корректно возвращает базу 5 - которая больше не действительна по новым правилам.
источник
GolfScript (23 символа)
или
или
Обратите внимание, что для этого требуется ввод из stdin: для честного сравнения с версией Говарда для GolfScript вычтите один символ.
Говард указывает, что правила изменились, и не очень логично, что они теперь исключают
4
в качестве возможного ввода, когда он имеет допустимый вывод (любое целое число больше 4). Чтобы охватить этот случай, также требуются дополнительные 2 символа, которые могут быть добавлены различными способами:или
будучи парой очевидных.
источник
Python 2.x, 77 символов
Работает до базовой 98 и номера не более 98 цифр.
источник
J, 38 знаков
Использование:
источник
VBA, 121
использование:
?k(num)
=k(A1)
источник
For w=5To a
Mathematica 59
Код
Давайте дадим названной функции имя.
объяснение
Count[IntegerDigits[n,k],4]
: Подсчитать количество четверок в базовом k представлении n .Sort
базы от наименьшего до большинства 4с.Некоторые специальные цифры
Теперь давайте применим whichBase к следующим специальным номерам.
Если вы преобразуете каждое число в соответствующую базу, вы увидите, что в них особенного.
источник
n
там. Кроме того,MaximalBy
действительно помогает, сбивает его до 49 байт:MaximalBy[Range[a=#],a~IntegerDigits~#~Count~4&]&
(просто игнорируйте сообщения от него, пытаясь использовать base-1)Japt
-h
, 10 байт444
в базе10
is,[4,4,4]
которая содержит число и цифру4
3 раза, но444
в базе100
is,[4,44]
которая также содержит цифру4
3 раза, но только в виде числа один раз. Учитывая ожидаемый результат в444
тестовом примере, я думаю, мы должны считать число 4:Попытайся
Но если мы будем подсчет цифры 4 , то:
Попытайся
источник
C - (114 символов)
Во всем это слава гольфа:
И в некотором роде
Просто для удовольствия вот вывод для чисел
[0,127]
(это самые большие базы под самим вводимым числом).источник
R -
148137 символов(так, далеко от остальных конкурентов, но все же)
В основном преобразуйте входные данные из базы 10 во все базы от 4 до n (с использованием
%%
деления по модулю и целому числу%/%
) и выберите индекс первого, имеющего наибольшее число 4.источник
J перевод решения @marinus 'APL:
Просто для интереса, вот некоторые значения:
Он выводит наименьшую базу, которая дает самое яркое преобразование. Для последних нескольких значений в таблице представления выглядят как «4n» (например, 31 в базе 7 - «43»).
источник
Желе , 6 байт
Попробуйте онлайн!
Выводит «все» базы до N, что дает наибольшее число 4. Если вы хотите максимальную или минимальную базу, добавьте
Ṁ
(max) илиṂ
(min) соответственно.Как это работает
источник
05AB1E ,
109 байтов-1 байт благодаря @Cowabunghole .
Если несколько баз имеют одинаковое количество 4s, оно выведет наименьшую (т.е.
16
приведет к6
, но12
также было бы возможным выводом).Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
источник
Qƶà
наk>
? т.е. найти индекс на основе 0 для максимума и увеличить его?C # с Linq 273
или
Уверен, что число переменных можно уменьшить, а if можно преобразовать в? S. Ну что ж...
источник
C # (
482~ 423 байта)Первая попытка «гольфового» решения. Я использовал в основном тот же алгоритм, что и VBA выше. Я мог бы, вероятно, сохранить несколько байтов, вставляя функцию преобразования или сокращая имя. Как я уже сказал, это первая попытка, поэтому, пожалуйста, будьте осторожны.
С пробелами:
источник
namespace
требуется. Все имена должны состоять из одного символа, включаяProgram
иcBase
. И да, вы должны встроитьcBase
. Также объедините объявление и инициализацию, тint c=0,m=0
. Е.int
параметр и возвращаетint
параметр, даже безMain
метода, и вызывать символ для подсчета вашей оценки.Бурлеск - 28 байт
Попробуйте онлайн.
источник
к , 18 байт
Попробуйте онлайн!
источник
Perl 6 , 44 байта
Попробуйте онлайн!
Старый добрый полимод .
источник
Шелуха , 9 байт
Попробуйте онлайн!
источник