Это продолжение этой проблемы со стороны Аднана . Если вам нравится этот вызов, скорее всего, вам понравится и другой. Проверьте это!
Тест множественного выбора с 8 вопросов , каждый из которых 4 варианта могут иметь ответы: BCADBADA
. Преобразованный в четыре различных массива, с истиной и ложью, если текущая буква является ответом, это будет выглядеть так
Q#: 1 2 3 4 5 6 7 8
B C A D B A D A
A: [0, 0, 1, 0, 0, 1, 0, 1]
B: [1, 0, 0, 0, 1, 0, 0, 0]
C: [0, 1, 0, 0, 0, 0, 0, 0]
D: [0, 0, 0, 1, 0, 0, 1, 0]
Это может быть сжато, используя немного логики. Каждый из вариантов A
, B
, C
и D
может быть представлена двумя истинных / ложных значений показано ниже:
A: 1 0
B: 0 1
C: 0 0
D: 1 1
Используя эту логику, мы можем сжать четыре вектора выше до двух:
1 2 3 4 5 6 7 8
B C A D B A D A
[0, 0, 1, 1, 0, 1, 1, 1]
[1, 0, 0, 1, 1, 0, 1, 0]
То есть, решение теста просто: 00110111
, 10011010
. Объединяя их, мы получаем двоичное число
0011011110011010
или 14234
десятичное число. Используйте это десятичное значение для проверки вашего теста!
Вызов
Возьмите число N
в (включительно) диапазоне [0, 65535]
и выведите строку с ответом на тест с множественным выбором.
Тестовые случаи:
14234
BCADBADA
38513
ABBDCAAB
0
CCCCCCCC
120
CBBBBCCC
65535
DDDDDDDD
39253
ABCDABCD
Вывод может быть в верхнем или нижнем регистре букв, но вы не можете использовать другие символы.
A=10, B=01
, а затем C=nor(A,B)
, и D=and(A,B)
, вдохновленный вызовом Аднана. Оглядываясь назад, возможно, было бы лучше сделать это наоборот, но хорошо ... Слишком поздно ...