Introducción
Nota: este no es un tipo de método para fomentar las trampas. Como ya dijo Cᴏɴᴏʀ O'Bʀɪᴇɴ , estudiar es la mejor solución para aprobar un examen: 3.
Considere las siguientes respuestas a la prueba de opción múltiple:
ABCBCAAB
Aquí hay una tabla que indica si las respuestas coinciden:
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
Esto nos da los siguientes números:
10000110, 01010001, 00101000
El desafío es imprimir estos números binarios. Pero es importante ver qué letras se usan en la prueba de opción múltiple. Por ejemplo:
ABCDCDBCDABC
Esta letra más alta es D
, que es la cuarta letra del alfabeto . Por lo tanto, necesitamos generar 4 números binarios diferentes . A saber:
100000000100, 010000100010, 001010010001, 000101001000
Tenga en cuenta que debe mirar la letra más alta . Considere el siguiente ejemplo:
AACCACAC
Aunque B
no se usa, necesitamos generar el resultado binario para B
. Eso significa que la respuesta sería:
11001010, 00000000, 00110101
Tarea
Dadas las respuestas a una prueba de opción múltiple, genera los números binarios. Puede suponer que la entrada no estará vacía y solo contendrá las letras[A-Z]
. En lugar de unos y ceros, también puede usar verdadero y falso.
Casos de prueba:
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
Este es el código de golf , por lo que gana el envío con la menor cantidad de bytes.
[a-z]
en su lugar?Respuestas:
Pyth, 12 bytes
Salidas como una matriz anidada de booleanos.
Pruébalo aquí .
fuente
Pitón 3, 71
Guardado 22 bytes gracias a Ogaday.
Guardado 3 bytes gracias a DSM.
Ahorró un montón de bytes gracias a que una matriz de bools es válida.
Toma entrada de línea de comando en mayúscula.
fuente
*k,=map(ord,input())
PowerShell,
959473 bytesToma la entrada como una cadena en mayúscula, pero la emite inmediatamente
[char[]]
. Luego pasamos0..
al valor máximo de$a
tomado alfabéticamente (de ahí la-65
conversión de ASCII). Por ejemplo, conADCEB
, esto puede considerarse como un bucle deA
aE
.En cada iteración, establecemos una variable auxiliar
$d
igual al valor alfabético actual (no ASCII). Luego hacemos un bucle a través de todo$a
, cada vez que ponemos cualquiera0
o1
en la tubería, en función de si$_-$d-65
es verdadero o falso (es decir, si estamos en el "espacio" correcto). Esto funciona porque cualquier valor distinto de cero en PowerShell es verdadero, lo que significa que si nuestra letra actual$_
no es "igual" a la ranura en la que estamos$d
, entonces!
ese es$false
, o0
.Cada uno de estos conjuntos de
0
s y1
S es entonces-join
ed juntos y volver a poner en la tubería. Cuando finaliza el bucle externo, tenemos una serie de cadenas, que imprimirán una cadena por línea.Ejemplos
Edición 1: guardado un byte utilizando Boolean-not en lugar de -eq
Edición 2: guardado otros 21 bytes al eliminar la matriz adicional $ b
fuente
LabVIEW,
302220 Primitivas de LabVIEWPasa desde az hasta que la suma de todos los bools es igual a la longitud de entrada. luego transforma los bools en números.
Ahora toma directamente el máximo en lugar de verificar la suma de bool.
Dado que los bools 2D son viables ahora estoy ahorrando 2 primitivas al hacer salir el cable verde en frente de
?1:0
podría rehacerlo, pero soy demasiado vago ...fuente
Cjam, 25 bytes
Suspiro,
Explicación
fuente
Haskell,
4634 bytesEjemplo de uso:
g "ACDC"
->[[True,False,False,False],[False,False,False,False],[False,True,False,True],[False,False,True,False]]
.Cómo funciona:
fuente
Pyth,
2019171514 bytesExplicación:
Emite una matriz 2D de bools
Pruébalo aquí
fuente
ES6, 92 bytes
Devuelve una matriz de matrices de falsos y verdaderos. Si prefiere una matriz de cadenas de ceros y unos, entonces para 97 bytes:
fuente
Octava, 19 bytes
Utiliza la transmisión automática de Octave sobre el rango
A
al elemento máximo en la entrada para producir una matriz booleana 2D de elementos coincidentes.Ejemplo:
Pruébalo aquí en ideone .
fuente
Lua,
208189 BytesEso fue complicado en lua, como siempre, tenemos que hacer todo desde cero, ¡y ocupa mucho lugar! Este programa toma una cadena como argumento e imprime el resultado :).
Editar: @Adnan me dijo que ahora podemos devolver una matriz de booleanos, ¡así que aquí hay una nueva versión! Ahora es una función que toma una cadena de caracteres en mayúscula y devuelve la matriz :).
Versión antigua de 208 bytes
Este es el que funciona con argumentos e imprimir resultados.
Sin golfos y explicaciones
Intentar imprimir una matriz en Lua resultaría en imprimir su dirección y concatenar bools es imposible. Entonces, aquí hay una función que lo ayudará si desea probar esta presentación
fuente
Perl, 84 bytes
Oh querido, parece que he roto el marcador.
Versión sin golf:
fuente
PHP,
106929087 bytesUtiliza la codificación de Windows-1252.
Ejecutar así (
-d
añadido solo para estética):$i=0
$x
en otro lugar e incrementándolo$c
para compensarfuente
C #, 68 bytes
Ejecutar en C # Pad
Esta función anónima toma un
char[]
como entrada y emite unIEnumerable<IEnumerable<int>>
, con solo 0 y 1.fuente
k, 15 bytes
Pruébalo en línea!
fuente