La "matriz ascendente" es una matriz infinita de números enteros (incluido 0) en la que cualquier elemento es el elemento más pequeño disponible que no se haya utilizado previamente en la fila y columna respectivas:
| 1 2 3 4 5 6 ...
--+----------------
1 | 0 1 2 3 4 5 ...
2 | 1 0 3 2 5 4 ...
3 | 2 3 0 1 6 7 ...
4 | 3 2 1 0 7 6 ...
5 | 4 5 6 7 0 1 ...
6 | 5 4 7 6 1 0 ...
. | ...............
Su tarea es escribir un programa que genere el elemento encontrado en la fila y columna especificada por la entrada. (entrada y salida estándar)
Casos de prueba:
5 3 -> 6
2 5 -> 5
Se aplican las reglas de Code Golf: gana el código más corto.
PD Incluso si esto tiene una naturaleza algorítmica, el código puede ser muy, muy conciso.
EDITAR: No esperaba ver la solución xor tan temprano. Realmente esperaba ver 10 publicaciones con un enfoque algorítmico y ENTONCES la solución xor. Ahora, teniendo en cuenta que no es muy divertido ver cómo escribir xor en diferentes idiomas, le recomiendo que también pruebe un enfoque algorítmico.
Entonces, sí, creo que nadie puede superar la marca de 5 caracteres ahora; por lo tanto, felicito a Ilmari Karonen por la solución más inteligente y más corta. Pero hay un nuevo desafío por delante: escribir la solución algorítmica más corta .
fuente
Respuestas:
GolfScript, 5 caracteres
De hecho, esta tarea es muy simple una vez que reconoce el patrón. El único bit incómodo es la indexación basada en 1: si los índices de entrada se basan en cero, esta solución de 2 caracteres sería suficiente:
Para explicar esto a los lectores que no están familiarizados con GolfScript, el
~
comando evalúa la entrada y deja los dos números en la pila.^
luego XOR junta los dos números superiores en la pila, dejando el resultado para la salida. Para manejar la entrada basada en 1, se necesitan dos comandos más:(
disminuye el número más alto en la pila en uno, mientras\
intercambia los dos elementos superiores en la pila.fuente
^
? Me referí a la página de GolfScript Built-ins y a la diferencia simétrica ; usar esta operación con dos conjuntos de matrices tiene sentido, pero no entiendo cómo funciona para solo dos números separados.^
operador devuelve su XOR bit a bit .Mathematica
1044Editar
Mi primera respuesta se basó en un malentendido sobre la naturaleza del desafío, como señaló Ilmari. Aquí hay otro intento.
Uso
fuente
K, 31
Robé la lógica XOR de Ilmari Karonen, que nunca me habría visto.
fuente
PHP, 38
Solo una implementación simple del XOR de Ilmari Karonen
<?php echo --$_GET['a']^--$_GET['b']?>
Uso:
... / xor.php? a = 4 & b = 7
imprimirá 6
fuente
Haskell 174
Pensé que haría una solución que no dependiera de XOR. Demasiado perezoso para jugar al golf correctamente.
Editar: Me di cuenta un día después de que esto es solo calcular XOR. Por lo tanto, si esto cuenta como una solución algorítmica, también debería hacerlo la de Ilmari Karonen.
fuente
Pitón 2, 36
Creo que desde que estoy empezando a aprender Python, este sería el momento perfecto para enviar mi primera respuesta usándola (y nadie ha respondido usando Python) y tal vez podría recibir algunos comentarios.
Gracias @IlmariKaronen por el atajo genial.
Gracias @Gareth por el código a continuación.
Pitón 3, 56
El programa original que había escrito.
IDEONE con 2 y 5
IDEONE con 3 y 3
fuente
input
ya evalúa la entrada, por loint()
que no debería ser necesario. Además, dado que está recibiendo un int directamente deinput()
usted, puede hacerlo de-1
inmediato. También puede deshacerse de las variables intermedias por completo e ir a la derechaprint(input()-1^input()-1)
. En cuanto a si la importación es necesaria o no, otros usuarios de Python en este sitio no la incluyen para los programas que usaninput()
, pero no soy un programador de Python, así que no podría decir si es necesario o no.print(input()-1^input()-1)
. ¡Gracias por la ayuda!sys
?MATL , 2 bytes
Pruébalo en línea!
MATL pospone el desafío por varios años, pero, ¡oye, la indexación natural basada en 1 y una función xor bit a bit lo hacen agradable y ordenado!
fuente
Perl 5 , 12 bytes
Pruébalo en línea!
fuente
Javascript 13 bytes
fuente
Japt , 5 bytes
Pruébalo en línea!
fuente