Вступление
Примечание: это не какой-то метод поощрения мошенничества. Как уже сказал Cᴏɴᴏʀ O'Bʀɪᴇɴ , обучение - лучшее решение для прохождения теста: 3.
Рассмотрим следующие ответы на тест с множественным выбором:
ABCBCAAB
Вот таблица, которая указывает, совпадают ли ответы:
A B C B C A A B
A 1 0 0 0 0 1 1 0
B 0 1 0 1 0 0 0 1
C 0 0 1 0 1 0 0 0
Это дает нам следующие цифры:
10000110, 01010001, 00101000
Задача состоит в том, чтобы распечатать эти двоичные числа. Но важно видеть, какие буквы используются в тесте с множественным выбором. Например:
ABCDCDBCDABC
Это самая высокая буква является D
, что является четвёртым буква в алфавите . Поэтому нам нужно вывести 4 разных двоичных числа. А именно:
100000000100, 010000100010, 001010010001, 000101001000
Обратите внимание, что вы должны смотреть на самую высокую букву . Рассмотрим следующий пример:
AACCACAC
Хотя значение B
не используется, нам нужно вывести двоичный результат для B
. Это означает, что ответ будет:
11001010, 00000000, 00110101
задача
Учитывая ответы на тест с множественным выбором, выведите двоичные числа. Вы можете предположить, что ввод будет не пустым и будет содержать только буквы[A-Z]
. Вместо единиц и нулей вы также можете использовать true и false.
Тестовые случаи:
Input: ABBBABABA
Output: 100010101, 011101010
Input: AAAAAAAAA
Output: 111111111
Input: AFGHEEHFD
Output: 100000000 000000000 000000000 000000001 000011000 010000010 001000000 000100100
Input: Z
Output: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
Input: ABCDCDBCDABC
Output: 100000000100, 010000100010, 001010010001, 000101001000
Это код-гольф , поэтому выигрывает представление с наименьшим количеством байтов!
[a-z]
вместо этого?Ответы:
Pyth, 12 байт
Выводится как вложенный массив логических значений.
Попробуй это здесь .
источник
Python 3, 71
Сохранено 22 байта благодаря Ogaday.
Сохранено 3 байта благодаря DSM.
Сохранено несколько байтов благодаря действительному массиву bools.
Принимает ввод командной строки в верхнем регистре.
источник
*k,=map(ord,input())
PowerShell,
959473 байтаПринимает ввод в виде строки в верхнем регистре, но сразу же преобразует ее
[char[]]
. Затем мы возвращаемся0..
к максимальному значению,$a
взятому в алфавитном порядке (следовательно,-65
для преобразования из ASCII). Например, с помощьюADCEB
, это можно рассматривать как цикл отA
доE
.На каждой итерации мы устанавливаем вспомогательную переменную,
$d
равную текущему алфавитному (не ASCII) значению. Затем цикл через все$a
, каждый раз , когда ввод либо0
или1
на трубопроводе, в зависимости от того$_-$d-65
является truthy или falsey (то есть ли мы в праве «слот»). Это работает, потому что любое ненулевое значение в PowerShell является правдивым, то есть если наша текущая буква$_
не "равна" тому, в каком слоте мы находимся$d
, то!
это$false
или0
.Каждый из этих массивов
0
s и1
s затем-join
объединяется и помещается в конвейер. Когда внешний цикл заканчивается, у нас есть массив строк, который будет печатать одну строку на строку.Примеры
Редактировать 1 - сохранить байт, используя Boolean-not вместо -eq
Редактировать 2 - сохранить еще 21 байт, исключив дополнительный массив $ b
источник
LabVIEW,
302220 Примитивы LabVIEWПроходит от az до тех пор, пока сумма всех bools не станет равной длине ввода. затем преобразует bools в числа.
Теперь напрямую берется максимум вместо проверки суммы bool.
Так как 2D bools жизнеспособны, теперь я сохраняю 2 Примитива, выводя зеленый провод перед ним,
?1:0
мог бы переделать его, но я слишком ленив ...источник
Cjam, 25 байтов
Вздох,
объяснение
источник
Haskell,
4634 байтаПример использования:
g "ACDC"
->[[True,False,False,False],[False,False,False,False],[False,True,False,True],[False,False,True,False]]
.Как это устроено:
источник
Pyth,
2019171514 байтОбъяснение:
Выводит двумерный массив bools
Попробуй здесь
источник
ES6, 92 байта
Возвращает массив массивов ложных и истинных значений. Если вы предпочитаете массив строк из нулей и единиц, то для 97 байтов:
источник
Октава, 19 байт
Использует автоматическое вещание Octave по всему диапазону
A
до элемента max на входе, чтобы создать 2-мерный логический массив совпадающих элементов.Пример:
Попробуйте это здесь на ideone .
источник
Луа,
208189 байтЭто было сложно в Луа, как обычно, мы должны делать все с нуля, и это занимает много места! Эта программа принимает строку в качестве аргумента и выводит результат :).
Изменить: @ Adnan сказал мне, что теперь мы можем вернуть матрицу логических значений, так что вот новая версия! Теперь это функция, которая принимает строку с заглавными буквами и возвращает матрицу :).
Старая версия 208 байт
Это тот, который работает с аргументом и печатать результаты.
Неуправляемый и объяснения
Попытка напечатать массив в Lua привела бы к печати его адреса, и объединение bools невозможно. Итак, вот функция, которая поможет вам, если вы хотите проверить это представление
источник
Perl, 84 байта
О, дорогая, я, кажется, сломал маркер.
Безголовая версия:
источник
PHP,
106929087 байтИспользует кодировку Windows-1252.
Запустите так (
-d
добавлено только для эстетики):$i=0
$x
где-то еще, и увеличивая,$c
чтобы компенсироватьисточник
C #, 68 байт
Запустить в C # Pad
Эта анонимная функция принимает в
char[]
качестве входных данных и выводитIEnumerable<IEnumerable<int>>
только 0 и 1.источник
к, 15 байт
Попробуйте онлайн!
источник