Учитывая число n
и верхний предел, l
список чисел, которые могут быть созданы путем умножения двух или более чисел, состоящих только из семерок длины n
или меньше, которые меньше l
. A161145 близок к этому испытанию, однако вы НЕ будете включать 7, 77, 777, 7777, 77777 и т. Д.
Примеры
n=anything, l<49
приведет к:
[]
n=1, l=49
приведет к:
7*7=49
f(1,49)=[49]
n=1, l=343
приведет к:
7*7 =49
7*7*7 =343
f(1,343)=[49,343]
n=2,l=6000
приведет к:
7*7 =49
7*7*7 =343
7*7*7*7=2401
7*77 =539
7*7*77 =3773
77*77 =5929
f(2,6000)=[49,343,539,2401,3773,5929]
n=3, l=604000
приведет к:
[49, 343, 539, 2401, 3773, 5439, 5929, 16807, 26411, 38073, 41503, 59829, 117649, 184877, 266511, 290521, 418803, 456533, 603729]
И т.д...
правила
- Вам не нужно выводить промежуточные шаги, это было сделано для ясности.
- Вывод может быть в виде массива или разделен любым символом (даже символом новой строки).
- Вывод должен быть в числовом порядке, от низшего к высшему.
- Чтобы сделать заголовок релевантным,
n
нужно обработать самое высокоеn=77
(если вы не можете справиться с таким высоким, обратите внимание, почему - языковые ограничения допустимы, лень - нет). Это ограничение мешает тем, кто хочет построить весь суперсет в памяти. - Если TIO не может работать
n=77
для вашего кода, объясните, каких спецификаций требовалось достичьn=77
. - Чтобы товар был действительным, он должен состоять как минимум из 2 цифр.
- Это код-гольф с самым низким количеством байтов будет считаться победным.
- Вы можете выбрать список, содержащий элементы меньше
l
или меньше или равноl
. - БОНУС : Если ваш код ровно 77 байтов, слава мне; ничего не стоящего, я знаю.
n
или меньше, которые меньше чемl
»n=77
иl=7**7**7
, к примеру?Ответы:
05AB1E , 19 байтов
Попробуйте онлайн!
объяснение
Очень неэффективно. TIO link выполняет
ceil(l^(1/7))
итерации вместоl
итераций, используемых в версии для гольфа, чтобы упростить тестирование больших тестовых случаев.источник
$L7ׂ˜
- пытался получить 5 байтов, не мог..p
или.s
слишком, но даже те, кажется, дольше. Я случайно нажал «обновить» на странице TIO с моей реализацией примера вместо запуска, удалил ее из существования. Я думаю, что было 26, хотя.Желе ,
21201918 байтОбратите внимание, что вывод не соответствует ОП. Я оставил комментарий.
Попробуйте онлайн!
Как это устроено
источник
Python 2 ,
116113109 байтОбратите внимание, что TIO не хватает памяти для последнего теста.
Попробуйте онлайн!
источник
JavaScript (ES6),
103101 байтПринимает ввод в синтаксисе карри
(n)(l)
.Контрольные примеры
Последний контрольный пример может занять несколько секунд.
Показать фрагмент кода
источник
PHP, 142 байта
-5 байт удалить
$r=[];
и заменитьsort($r);
на@sort($r);
Онлайн версия
расширенный
Рекурсивная функция делает все перестановки, включая предел
PHP, 145 байт
расширенный
цикл до включения лимита проверяет каждое значение, которое делится на 49
Онлайн версия
на несколько байт больше, и можно создать ассоциативный массив, указав число и в качестве значения массив используемых семерок
Онлайн версия
источник
while($c=$t*$v[+$i++])$l<$c?f($c)&$r[$c]=$c;
сохраняет 3 байта; но так и должно быть$l<=$c
.$r?sort($r)&print_r($r):0;
вместо того, чтобы$r=[];
сохранить один.$z.=7;
на 5 байт короче$z=$z*10+7;
.@
еще на 4 байта короче$r?...:0;
. (Спасибо @Christoph)$l<=$c
? Кажется, вчера был не мой день для$z.=7
и 2 дополнительных байта, которые я нашел. Сначала я подумываю над вашими двумя другими предложениями. Вы пропустите:
время циклаthat are less than l
, в своих примерах ониare less than or equal
. В зависимости от уточнения,$c>$l||...
/$c>$l?:...
или$c<$l&&...
кратчайшие.Рубин,
8986 байтРекурсивное решение.
-3 байта, помня, что все 0 раз равно 0.
Попробуйте онлайн!
источник
Pyth , 22 байта
Попробуйте онлайн!
Спекуляции
l[newline]n
array containing the sorted result
источник
PHP,
128 125 130 129 127123 байтабудет работать до 22
7
с, но будет округлять большие значения (7 ** 23 - с плавающей запятой на 64-битной машине).3 байта сохранены Jörg, 3 мной,
5 41 добавлены, чтобы избежать предупреждения о пустых результатах.принимает входные данные из аргументов командной строки; запустить
-nr
или попробовать это онлайн .сломать
источник
for([,$c,$z]=$argv,$n=1+$c;$c<$z;
вместоfor($n=1+$c=$argv[1];$c<$z=$argv[2];
@
вместо того,$r&&
чтобы подавить предупреждение?$p<$z&&$r[$p]=$p
$p>$z?:$r[$p]=$p
из примераn=1, l=343
ясно, чтоl
должно быть включено. Поэтому нет экономии там при использовании$p>$z||$r[$p]=$p
или$p>$z?:$r[$p]=$p
.@
; будет редактировать, когда OP отвечает.$p>$z||
или$p<$z&&
. Я буду придерживаться описания.Брахилог , 28 байт
Здесь есть много возможностей для улучшения самого языка; Многие вещи, которые я написал, выглядят так, как будто они были бы немыслимы с некоторыми изменениями в дизайне языка. Это самый короткий путь, который я нашел в текущей версии. Я вполне могу сделать некоторые предложения для Brachylog, которые сделали бы эту программу более эффективной, более короткой и более удобочитаемой.
Очень, очень медленно; Время ожидания TIO даже на самом простом нетривиальном ответе, так что нет смысла предоставлять ссылку TIO. Я проверил эту программу, запустив ее локально.
Это функция (а не полная программа), выход которой является генератором (в отличие от списка). Добавьте
.w⊥
в конец функции, если вы хотите увидеть все выходные данные, а не только первый. (Обратите внимание, что на практике это на самом деле не имеет значения, потому что программа в любом случае слишком медленная для TIO, вы должны запускать ее локально, а локальный интерпретатор Brachylog запускается в REPL, который прекрасно описывает генератор.)объяснение
источник
Утилиты Bash + GNU, 108
Попробуйте онлайн . TIO занимает около минуты для последнего теста. Мои результаты совпадают с @ Dennis's.
источник
Pyth -
57514942 байтаПопытайся
источник
7
и77
для вашего текущего ввода.m
вместоF
илиV
и т. Д. (Функциональное программирование или контроль выполнения); используяhQ
вместо@Q0
; используяeQ
вместо@Q1
; используяi*hQ]7T
вместо длинного цикла for для генерации777...7
.