Introdução
Nota: este não é um tipo de método para incentivar a trapaça. Como Cᴏɴᴏʀ O'Bʀɪᴇɴ já disse, estudar é a melhor solução para passar no teste: 3.
Considere as seguintes respostas para o teste de múltipla escolha:
ABCBCAAB
Aqui está uma tabela que indica se as respostas correspondem:
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
Isso nos dá os seguintes números:
10000110, 01010001, 00101000
O desafio é imprimir esses números binários. Mas é importante ver quais letras são usadas no teste de múltipla escolha. Por exemplo:
ABCDCDBCDABC
Esta carta mais alta é D
, que é a quarta letra do alfabeto . Portanto, precisamos gerar 4 números binários diferentes . Nomeadamente:
100000000100, 010000100010, 001010010001, 000101001000
Observe que você precisa olhar para a letra mais alta . Considere o seguinte exemplo:
AACCACAC
Embora o B
não seja usado, precisamos gerar o resultado binário para B
. Isso significa que a resposta seria:
11001010, 00000000, 00110101
Tarefa
Dadas as respostas para um teste de múltipla escolha, produza os números binários. Você pode supor que a entrada não esteja vazia e contenha apenas as letras[A-Z]
. Em vez de uns e zeros, você também pode usar verdadeiro e falso.
Casos de teste:
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
Isso é código-golfe , então a submissão com a menor quantidade de bytes ganha!
[a-z]
vez disso?Respostas:
Pitão, 12 bytes
Saídas como uma matriz aninhada de booleanos.
Experimente aqui .
fonte
Python 3, 71
Economizou 22 bytes graças a Ogaday.
Economizou 3 bytes graças ao DSM.
Salvei um monte de bytes, graças a uma matriz de bools sendo válida.
Toma entrada em linha de comando em maiúsculas.
fonte
*k,=map(ord,input())
PowerShell,
959473 bytesRecebe a entrada como uma sequência maiúscula, mas a lança imediatamente
[char[]]
. Em seguida, passamos0..
para o valor máximo de$a
tomadas em ordem alfabética (daí a-65
conversão de ASCII). Por exemplo, comADCEB
, isso pode ser considerado um loop deA
paraE
.A cada iteração, definimos uma variável auxiliar
$d
igual ao valor alfabético atual (não ASCII). Em seguida, percorremos todos$a
, cada vez que colocamos um0
ou1
no pipeline, com base em se$_-$d-65
é verdade ou falsey (isto é, se estamos no "slot" certo). Isso funciona porque qualquer valor diferente de zero no PowerShell é verdadeiro, ou seja, se nossa letra atual$_
não for "igual" em que slot estamos$d
, o!
que é$false
ou é0
.Cada uma dessas matrizes de
0
s e1
s ent-join
ed em conjunto e re-colocada em pipeline. Quando o loop externo termina, temos uma matriz de strings, que imprimirá uma string por linha.Exemplos
Edit 1 - salvou um byte usando Boolean-not em vez de -eq
Edit 2 - salvou outros 21 bytes ao eliminar a matriz extra $ b
fonte
LabVIEW,
302220 Primitivas do LabVIEWPassa de az até que a soma de todos os bools seja igual ao comprimento da entrada. transforma os bools em números.
Agora pega diretamente o max em vez de verificar a soma booleana.
Como os bools 2D são viáveis, agora estou salvando 2 Primitivas emitindo o fio verde na frente do que
?1:0
poderia refazê-lo, mas sou muito preguiçoso ...fonte
Cjam, 25 bytes
Suspiro,
Explicação
fonte
Haskell,
4634 bytesExemplo de uso:
g "ACDC"
->[[True,False,False,False],[False,False,False,False],[False,True,False,True],[False,False,True,False]]
.Como funciona:
fonte
Pitão,
2019171514 bytesExplicação:
Gera uma matriz 2D de bools
Experimente aqui
fonte
ES6, 92 bytes
Retorna uma matriz de matrizes de falsas e verdadeiras. Se você preferir uma matriz de seqüências de zeros e uns, então para 97 bytes:
fonte
Oitava, 19 bytes
Utiliza a transmissão automática da Octave no intervalo
A
até o elemento max na entrada para produzir uma matriz booleana 2D de elementos correspondentes.Exemplo:
Experimente aqui em ideone .
fonte
Lua,
208189 BytesIsso foi complicado na lua, como sempre, temos que fazer tudo do zero, e isso leva muito tempo! Este programa pega uma string como argumento e imprime o resultado :).
Edit: @Adnan me disse que agora podemos retornar uma matriz de booleanos, então aqui está uma nova versão! Agora é uma função que pega uma sequência de caracteres em maiúsculas e retorna a matriz :).
Versão antiga de 208 bytes
É esse que trabalha com argumentos e imprime resultados.
Ungolfed e explicações
Tentar imprimir uma matriz em Lua resultaria na impressão de seu endereço e a concatenação de bools é impossível. Então, aqui está uma função que irá ajudá-lo se você quiser testar este envio
fonte
Perl, 84 bytes
Oh, querida, parece que eu quebrei o marcador.
Versão não destruída:
fonte
PHP,
106929087 bytesUsa a codificação Windows-1252.
Execute assim (
-d
adicionado apenas para estética):$i=0
$x
em outro lugar e incrementando$c
para compensarfonte
C #, 68 bytes
Executar no C # Pad
Essa função anônima recebe a
char[]
como entrada e gera umIEnumerable<IEnumerable<int>>
, com apenas 0 e 1.fonte
k, 15 bytes
Experimente online!
fonte