Описание
Мы рассматриваем целое число с не менее чем 3 цифрами с тройным балансом, если при разбиении на три части цифры в каждой части суммируются до одного и того же числа. Разобьем числа следующим образом:
abcdefghi - Standard case: the number of digits is divisable through 3:
abc def ghi
abcdefgh - Number % 3 == 2: The outer groups are both assigned another digit
abc de fgh (the inner group will have one digit less than both outer groups)
abcdefghij - Number % 3 == 1: The inner group is assigned the extra digit
abc defg hij (the inner group will have one digit more than the outer groups)
Вызов
Ваша задача - написать программу, которая, учитывая целое число, состоящее не менее чем из 3 цифр, определяет, является ли данное число тройным балансом, и выводит истинное или ложное значение на основе его результата.
Контрольные примеры
333 -> True
343 -> False
3123 -> True
34725 -> True
456456 -> False
123222321 -> True
Это код-гольф , поэтому применяются стандартные лазейки, и победит кратчайший ответ в байтах!
code-golf
number
arithmetic
decision-problem
racer290
источник
источник
when split in three parts,
Ответы:
Python 2 ,
938886 байт-4 байта благодаря @LeakyNun
-2 байта благодаря @ Mr.Xcoder
Попробуйте онлайн!
источник
Желе , 23 байта
Попробуйте онлайн!
Должен быть более короткий путь, который каким-то образом пролетел над моей головой ...
источник
Сетчатка , 89 байт
Попробуйте онлайн! Ссылка включает в себя тестовые случаи. Объяснение: На первом этапе добавляются новые строки в начале и конце ввода. Затем второй этап пытается перемещать цифры по новым строкам в парах, однако, если в середине недостаточно цифр, то третий этап может переместить их назад, вызывая остановку цикла. Четвертый этап затем преобразует каждую цифру отдельно в одинарное, суммируя их, в то время как последний этап просто проверяет, что суммы равны.
источник
Mathematica, 142 байта
источник
Желе , 20 байт
Попробуйте онлайн!
Как это устроено
источник
MATL , 26 байт
Попробуйте онлайн! Или проверьте все тестовые случаи .
источник
Javascript, 178 байт
источник
([...b],s=~b.length/3|0,f=(m,v)=>+m+ +v,y=b.splice(s).reduce(f))=>b.splice(-s).reduce(f)==y&y==b.reduce(f)
(будьте осторожны при копировании из комментариев, так как Stack Exchange вставляет невидимые символы).Java 8, 149 байт
Принимает вход как
int[]
.Объяснение:
Попробуй это здесь.
Вот обзор 0-индексированных (эксклюзивных) частей для каждой длины:
a
мы выполняем цикл от0
до(length + 1) / 3)
(это значение теперь сохраняется вs
);b
мы выполняем цикл сs
поlength / 3 * 2 +
(0
если длина по модулю-3 равна 0;1
если длина по модулю-3 равна 1 или 2) (это значение теперь сохраняется вs
);c
мы из циклаs
вlength
.(все три цикла исключены с 0 индексами)
источник
Рёда , 82 байта
Попробуйте онлайн!
Объяснение:
источник
JavaScript,
129, 104 байтаФункция r разрезает строку на основе параметров b и e, а затем суммирует цифры и возвращает значение.
Чтобы нарезать правильные размеры, мы делим длину на 3 и округляем результат. Вызов slice (0, result) дает нам первый блок, slice (result, -result) дает нам второй, а slice (result) дает нам последний. Из-за способа, которым я вызываю слайс, я использовал слайс (результат, 4 * результат) вместо последнего, но он дает тот же результат.
Наконец, я сравниваю результаты, показываю, что значения равны.
Изменить: тот же принцип, лучше в гольф
источник
&&
чтобы&
в JavaScript? Кажется, что обе подержанные проверки (&&z
и&&y[1]==y[2]
) не изменяют значения, поэтому, если это возможно, это не должно влиять на результат из того, что я вижу.