Четыре целочисленные последовательности
В этом задании вы протестируете четыре различных свойства положительного целого числа, заданного следующими последовательностями. Положительное целое число N является
- совершенный ( OEIS A000396 ), если сумма делителей из N равно N . Последовательность начинается с 6, 28, 496, 8128, 33550336, 8589869056, 137438691328, 2305843008139952128 ...
- refactorable ( OEIS A033950 ), если число делителей N является делителем N . Последовательность начинается с 1, 2, 8, 9, 12, 18, 24, 36, 40, 56, 60, 72, 80, 84, 88, 96, 104, 108, 128 ...
- практический ( OEIS A005153 ), если каждое целое число 1 ≤ K ≤ N является суммой некоторых различных делителей N . Последовательность начинается с 1, 2, 4, 6, 8, 12, 16, 18, 20, 24, 28, 30, 32, 36, 40, 42, 48, 54, 56 ...
- высоко композит ( OEIS A002128 ), если каждое число 1 ≤ K <N имеет строго меньше , чем делителей N . Последовательность начинается с 1, 2, 4, 6, 12, 24, 36, 48, 60, 120, 180, 240, 360, 720, 840, 1260, 1680, 2520, 5040 ...
Четыре программы
Ваша задача - написать четыре программы (т.е. полные программы, определения функций или анонимные функции, которые выполняют ввод / вывод любым из стандартных методов ). Каждая программа должна решить проблему принадлежности одной из этих последовательностей. Другими словами, каждая программа будет принимать положительное целое число N ≥ 1 в качестве входных данных и выводить истинное значение, если N находится в последовательности, и ложное значение, если нет. Вы можете предположить, что N находится в пределах стандартного целочисленного типа вашего языка программирования.
Программы должны быть связаны следующим образом. Есть четыре строки, ABCD
такие, что
AC
это программа, которая распознает идеальные числа.AD
это программа, которая распознает рефактивные числа.BC
это программа, которая распознает практические числа.BD
это программа, которая распознает очень сложные числа.
счет
Ваша оценка - это общая длина (в байтах) строк ABCD
или, другими словами, общее количество байтов четырех программ, разделенное на две. Самый низкий балл в каждом языке программирования - победитель. Применяются стандартные правила игры в гольф .
Например, если четыре строки a{
, b{n
, +n}
и =n}?
, затем четыре программы a{+n}
, a{=n}?
, b{n+n}
и b{n=n}?
, и счет 2 + 3 + 3 + 4 = 12.
Ответы:
JavaScript (ES6), 46 + 55 + 6 + 36 =
282274...158143 байтаA:
B:
C:
D:
Результат 4 анонимных функции , которые дают truthy / falsy значение для соответствующих входов (
AC
,AD
иBC
даютtrue
/false
,BD
дают1
/0
).Тестовый фрагмент
Показать фрагмент кода
источник
Желе , 8 + 17 +
21 + 2 =2928 байтA:
B:
C:
D:
Для практических чисел (до н.э.)
0
это ложь, а любой другой результат правдив.AC и BC - полные программы, так как они не могут быть повторно использованы в качестве функций.
источник
ÆDŒPS€ḟ@RṆµṖÆd<ÆdẠµ
работает как B, хотя стоит два байта (и делает BC возвращать 0 и 1 только как остальные).ŒP
сŒṖ
. Какой позор! Это работает, если вы это исправите? (то есть попробуйте мое новое редактирование) Это не так, что в любом случае это очень легко проверить, поэтому я еще не включил ссылку TIO.Хаскелл , 69 + 133 + 3 + 3 = оценка 208
A:
B:
C:
D:
Попробуйте онлайн!
Да, это довольно дешево, но я не достаточно умен для более крутого решения. :П
источник
subsequences
[x|x<-[1..n],mod n x<1]
короче чемfilter((<1).mod n)[1..n]
.