Dada una lista de N
enteros, cada uno con N
dígitos, genera un número que difiere del primer número debido al primer dígito, el segundo número debido al segundo dígito, etc.
Ejemplo
Dada esta lista:
1234
4815
1623
4211
El número 2932
primer dígito del número es diferente del primer dígito del primer número, su segundo dígito es diferente del segundo dígito del segundo número, etc. Por lo tanto, sería una salida válida.
Entradas
- Puede tomar tanto la lista como
N
como la entrada, o solo la lista si lo desea. - Cada número entero en la lista necesariamente tendrá tantos dígitos como la longitud de la lista (
N
) - Los números no tendrán ceros a la izquierda
- La lista de entrada debe contener números y no cadenas.
- Puede tomar entradas como argumentos de función, a través de
STDIN
o cualquier cosa similar. - Puede suponer que la lista no tendrá más de 10 elementos (y ningún número en la lista será mayor que
2147483647
)
Salidas
- No es suficiente que la salida no esté en la lista. Los dígitos deben diferir como se explicó anteriormente.
- Puede usar cualquier estrategia de selección de dígitos que respete la restricción de diferentes dígitos.
- El número no puede tener ceros a la izquierda
- Puede enviar el número
STDOUT
, devolverlo desde una función, etc.
Casos de prueba
Input:
12345678
23456789
34567890
45678901
56789012
67890123
78901234
89012345
Possible output: 24680246
Input:
1
Possible output: 2
Puntuación
Este es el código de golf , por lo que gana la respuesta más corta en bytes.
code-golf
number
number-theory
Fatalizar
fuente
fuente
STDIN
entero antes de analizar?STDIN
es una cadena por defecto ...Respuestas:
Jalea,
87 bytes1 byte guardado gracias a Dennis.
Pruébalo en línea!
Explicación
Convierte cada dígito en
1
, excepto0
y se1
convierte en2
.fuente
CJam (
1514 bytes)Demostración en línea
Gracias a Adnan por un ahorro de un byte.
Disección
fuente
i2%)
podría49&)
trabajar directamente con caracteres en lugar de códigos ASCII.Python 2,
4745 bytes¡Gracias a @xnor por jugar 2 bytes!
Pruébalo en Ideone .
Cómo funciona
`x`
produce una representación de cadena de la lista x .Para el primer caso de prueba, esto da la cadena
[1::n+3]
recupera todos los caracteres (n + 3) th , donde n es la longitud de x que comienza con el segundo. Contando 2 caracteres para,
, recuperamos el primer dígito del primer número, el segundo dígito del segundo número, etc.Ahora tomamos el módulo número 10 n ÷ 2 para mapear el primer dígito en el rango [0, 4] .
Para 93579135 , obtenemos 93579135% 50000000 = 43579135 .
Finalmente, agregamos 10 n ÷ 9 al último resultado, que incrementa - pasando de 9 a 0 - todos los dígitos en 1 (sin acarreo) o 2 (con acarreo).
Para 43579135 , obtenemos 43579135 + 11111111 = 54690246 .
fuente
MATL,
11109 bytesToma solo un vector de columna de enteros como entrada.
N
No se proporciona.Pruébalo en línea
Explicación
fuente
2
: matl.tryitonline.net/…VXd9\QV!U
Pyth, 11 bytes
Bucle simple, cambie cada dígito a 1, excepto que 1 se convierte en 2.
fuente
Q
yk
! Sin embargo, puede guardar un byte durante la transformación de dígitos:s.eh-12@`b
Retina,
393837Guardado 1 byte gracias Martin!
Requiere un salto de línea final en la entrada.
Obtiene diagonales y traduce 0 y 2-9 a 1 y 1 a 2.
La idea básica para obtener las diagonales es empujar una captura para cada fila por encima de la fila actual y luego consumir una captura para que coincida con un personaje, luego mantener el siguiente carácter.
Pruébalo en línea
fuente
J,
2622 bytesEnfoque similar a los demás utilizando el método
<= 1
yincrement
de la diagonal.Uso
Solo requiere la lista de enteros como argumento.
fuente
Python 2, 54 bytes
fuente
-~n
Java, 94 bytes
¡Operaciones numéricas puras para la victoria! :)
Entrada / salida de muestra:
Programa completo (con código sin golf):
fuente
Java, 93 bytes
Sin golf
Salida
fuente
J, 37 bytes
Probablemente se pueda jugar golf, pero olvidé si había un comando para "diagonales".
fuente
n
usando<list> (#:~#&10) <n>
. La primera diagonal se puede encontrar con(< 0 1) |: <list>
where(< 0 1)
es un cuadro para que los ejes seleccionen, usando ambos, con|:
Reng v.3.3, 60 bytes
Para Reng, eso fue bastante simple. Pruébalo aquí! La entrada es una lista de números separados por espacios.
1: init
k
es el número de entradas (número de números), y disminuimos en 1 y restauramos para la etapa de bucle.aií
toma toda la entrada.r
invierte la pila para el procesamiento de la entrada.1ø
va a la siguiente línea2: bucle
1[
saca el elemento superior de la pila y lo coloca en una nueva pila.å
lo divide en dígitos.{$}
empuja un bloque de código que contiene la operación "soltar"; esto se repitek
veces (k*
) y el bloque de código se deja caer ($
.k1-#k
decrementosk
.)9(
pone9
en el STOS, y-
resta TOS del STOS.#o
almacena este número eno
ya$;
cae todos los miembros de la pila.]
cierra la pila de los padres.o
poneo
de vuelta en la parte superior; este es nuestro dígito que estamos guardando. lo)
mueve a la parte inferior para que podamos continuar nuestro bucle. Por los
general, verifica si no hay entrada (es decir, la igualdad a-1
), pero podemos usarlo para salir de nuestro bucle cuandok == -1
. Entoncess^
sube cuandok == -1
.$
caek
de la pila, y nuestro ciclo comienza de nuevo.3: final
<
dirige el puntero hacia la izquierda y$
caek
de la pila.b
es un espejo hacia la izquierda, por lo que ingresamos a través de él, pero se recupera cuando golpea;
, un espejo con condición de pila.!n
imprime un dígito si y solo si vamos a la izquierda.~
finaliza el programa cuando terminamos de imprimir.fuente
Mathematica 52 bytes
Esto sigue el enfoque de Peter Taylor y otros (sin usar códigos Ascii).
Ejemplo
fuente
ClojureScript, 58 caracteres
Los requisitos de tipo hicieron que esto fuera un poco más de lo necesario, y
map-indexed
ser tantos caracteres no ayudó.A menudo, mis presentaciones también son válidas para Clojure, pero esto está utilizando algunas de las fugas de ClojureScript con JavaScript. La resta de un número y una cadena obliga a la cadena a un número, es decir, es
(- 9 "5")
igual4
.fuente
PHP, 46/41/40 bytes
Varios selectores de dígitos para la comparación. Pensé que "9 dígitos" sería el más corto, pero el caso especial necesario para mantener un cero fuera del primer dígito lo abruma.
Fed de argumentos CLI:
fuente
Ruby, 21 bytes
Un programa completo Corre con la
-n
bandera. Utiliza la siguiente asignación:n -> n%2+1
.fuente
JavaScript (ES6), 41
El truco% 9 + 1 se toma prestado de la respuesta de Suever. Por una vez,
.reduce
late.map
. Tenga en cuenta que el+=
operador se utiliza para evitar paréntesis.fuente
Perl, 18 bytes
Incluye +1 para
-p
Ejecutar con las líneas de entrada en STDIN. La salida es 1 excepto 2 cuando la diagonal es 1
cantor.pl
fuente
Pyth, 14 bytes
Pruébalo en línea!
fuente