Рядок Primenary ( бінарний прайм ) - це той, який, коли записується у вигляді двійкової сітки, у кожному рядку та стовпці має просту суму.
Це досить розпливчасте пояснення, тож давайте розбимо його на відпрацьованому прикладі ...
Для цього прикладу ми будемо використовувати рядок bunny
:
Спочатку знайдіть точку коду ASCII кожного символу та його двійкове представлення:
Char | ASCII | Binary
b 98 1100010
u 117 1110101
n 110 1101110
n 110 1101110
y 121 1111001
Візьміть ці двійкові значення зверху вниз та впорядкуйте їх у сітку (додавши при необхідності нулі):
1 1 0 0 0 1 0
1 1 1 0 1 0 1
1 1 0 1 1 1 0
1 1 0 1 1 1 0
1 1 1 1 0 0 1
Потім підрахуйте кількість 1
s у кожному рядку та стовпці:
1 1 0 0 0 1 0 > 3
1 1 1 0 1 0 1 > 5
1 1 0 1 1 1 0 > 5
1 1 0 1 1 1 0 > 5
1 1 1 1 0 0 1 > 5
v v v v v v v
5 5 2 3 3 3 2
Якщо, і лише якщо, кожне одне сумарне є простим (наприклад, тут), то рядок є дійсним бінарним простим.
Змагання
Ваше завдання - створити функцію або програму, яка при truthy
введенні рядка повертає / виводить, якщо рядок є первинним та falsy
іншим чином.
Правила / подробиці
- Ви можете припустити, що символи рядка завжди будуть у діапазоні ASCII
33-126
(включно). - Рядок не буде порожнім.
- Попередня рядок не повинна мати прості довжини - наприклад,
W1n*
дійсна, незважаючи на 4 символи. - Це код-гольф , тому найкоротша відповідь (у байтах) виграє - але всі подані матеріали вітаються.
- Стандартні лазівки заборонені.
Випробування
'husband' -> True
'HOTJava' -> True
'COmPaTIBILE' -> True
'AuT0HACk' -> True
'PPCW' -> False
'code-golf' -> False
'C++' -> False
'/kD' -> False
'HI' -> False
'A' -> False
На repl.it також є робочий, але неймовірно багатослівний приклад Python, на який можна протестувати своє рішення.
False
, правильно?
0
і 1
не є простим, і кожен рядок введення 1-2 символу , що містить тільки символи в заданому діапазоні гарантовано містить , щонайменше , один 0
або 1
у вигляді вертикальної суми. Ви повинні додати кілька тестів із символами 1 та 2 як тестові випадки.
false
. 2 введення знаків можуть, але не в діапазоні ASCII, який ми використовуємо, тому для цього сценарію ви правильні.
husband
це дійсно? Або будь-який з них? Хоча велика проблема!