Dada uma lista de N
números inteiros, cada um com N
dígitos, produz um número que difere do primeiro número por causa do primeiro dígito, do segundo número por causa do segundo dígito, etc.
Exemplo
Dada esta lista:
1234
4815
1623
4211
O 2932
primeiro dígito do número é diferente do primeiro dígito do primeiro número, seu segundo dígito é diferente do segundo dígito do segundo número, etc. Portanto, seria uma saída válida.
Entradas
- Você pode pegar a lista e
N
como entrada, ou apenas a lista, se desejar. - Cada número inteiro na lista terá necessariamente tantos dígitos quanto o comprimento da lista (
N
) - Os números não terão zeros à esquerda
- A lista de entrada deve conter números e não cadeias.
- Você pode receber entradas como argumentos de função, através
STDIN
ou qualquer coisa semelhante. - Você pode assumir que a lista não terá mais de 10 elementos (e nenhum número na lista será maior que
2147483647
)
Saídas
- Não é suficiente que a saída não esteja na lista. Os dígitos devem diferir conforme explicado acima.
- Você pode usar qualquer estratégia de seleção de dígitos que respeite a restrição de dígitos diferentes.
- O número não pode ter zeros à esquerda
- Você pode enviar o número através de
STDOUT
, retornar de uma função, etc.
Casos de teste
Input:
12345678
23456789
34567890
45678901
56789012
67890123
78901234
89012345
Possible output: 24680246
Input:
1
Possible output: 2
Pontuação
Isso é código-golfe , então a resposta mais curta em bytes vence.
code-golf
number
number-theory
Fatalizar
fonte
fonte
STDIN
número inteiro para antes de analisar?STDIN
é uma string por padrão ...Respostas:
Geléia,
87 bytes1 byte economizado graças a Dennis.
Experimente online!
Explicação
Converte cada dígito em
1
, exceto0
e1
se torna2
.fonte
CJam (
1514 bytes)Demonstração online
Agradecemos a Adnan por economizar um byte.
Dissecação
fonte
i2%)
poderia49&)
trabalhar diretamente com caracteres em vez de códigos ASCII.Python 2,
4745 bytesGraças a @xnor por jogar fora 2 bytes!
Teste em Ideone .
Como funciona
`x`
produz uma representação em cadeia da lista x .Para o primeiro caso de teste, isso fornece a sequência
[1::n+3]
recupera cada (n + 3) th personagem - onde n é o comprimento de X começando com a segunda. Contabilizando 2 caracteres,
, recuperamos o primeiro dígito do primeiro número, o segundo dígito do segundo número, etc.Agora, pegamos o número módulo 10 n ÷ 2 para mapear o primeiro dígito no intervalo [0, 4] .
Para 93579135 , obtemos 93579135% 50000000 = 43579135 .
Finalmente, adicionamos 10 n ÷ 9 ao último resultado, que aumenta - passando de 9 para 0 - todos os dígitos em 1 (sem transporte) ou 2 (com transporte).
Para 43579135 , obtemos 43579135 + 11111111 = 54690246 .
fonte
MATL,
11109 bytesLeva apenas um vetor de coluna de números inteiros como entrada.
N
não é fornecido.Experimente Online
Explicação
fonte
2
: matl.tryitonline.net/…VXd9\QV!U
Pitão, 11 bytes
Loop simples, altere cada dígito para 1, exceto 1 se torna 2.
fonte
Q
ek
! Você pode salvar um byte durante a transformação de dígitos:s.eh-12@`b
Retina,
39.38.37.Guardado 1 byte obrigado Martin!
Requer um avanço de linha à direita na entrada.
Obtém diagonais e converte 0 e 2-9 para 1 e 1 para 2.
A idéia básica para obter as diagonais é empurrar uma captura para cada linha acima da linha atual e, em seguida, consumir uma captura para corresponder a um caractere, mantendo o próximo caractere.
Experimente online
fonte
J,
2622 bytesAbordagem semelhante às outras usando o método
<= 1
eincrement
da diagonal.Uso
Requer apenas a lista de números inteiros como argumento.
fonte
Python 2, 54 bytes
fonte
-~n
Java, 94 bytes
Operações numéricas puras para a vitória! :)
Entrada / saída de amostra:
Programa completo (com código não bloqueado):
fonte
Java, 93 bytes
Ungolfed
Saída
fonte
J, 37 bytes
Provavelmente pode ser jogado, mas esqueci se havia um comando para "diagonais".
fonte
n
usando<list> (#:~#&10) <n>
. A primeira diagonal pode ser encontrada com(< 0 1) |: <list>
onde(< 0 1)
está uma caixa para os eixos selecionar, usando ambos, com|:
Reng v.3.3, 60 bytes
Para Reng, isso foi bastante simples. Experimente aqui! Entrada é uma lista de números separada por espaço.
1: init
k
é o número de entradas (número de números) e decrementamos 1 e restauramos para o estágio do loop.aií
recebe toda a entrada.r
inverte a pilha para o processamento da entrada.1ø
vai para a próxima linha.2: loop
1[
tira o item superior da pilha e entra em uma nova pilha.å
divide em dígitos.{$}
empurra um bloco de código que contém a operação "drop"; isso é repetidok
vezes (k*
) e o bloco de código é descartado ($
.k1-#k
diminuik
.)9(
coloca9
no STOS e-
subtrai o TOS do STOS.#o
armazena esse númeroo
ea$;
remove todos os membros da pilha.]
fecha a pilha pai.o
coloca deo
volta em topo; esta é a nossa dígitos estamos economizando.)
move-o para a parte inferior para que possamos continuar a nossa looping.s
geralmente verifica a existência de não-entrada (ou seja, a igualdade de-1
), mas podemos usá-lo para interromper nosso loop quandok == -1
. Tãos^
sobe quandok == -1
.$
caik
da pilha e nosso loop começa novamente.3: final
<
direciona o ponteiro para a esquerda e$
caik
da pilha.b
é um espelho do lado esquerdo, então entramos nele, mas ele se recupera quando bate;
, um espelho de condição de pilha.!n
imprime um dígito se e somente se vamos para a esquerda.~
termina o programa quando terminarmos de imprimir.fonte
Mathematica 52 bytes
Isso segue a abordagem de Peter Taylor e outros (sem usar códigos Ascii).
Exemplo
fonte
ClojureScript, 58 caracteres
Os requisitos de tipo tornaram isso um pouco mais demorado do que o necessário, e o fato de
map-indexed
ter tantos caracteres não ajudou.Muitas vezes, meus envios também são válidos para o Clojure, mas isso está usando parte do vazamento do ClojureScript com JavaScript. Subtração de um número e seqüência de caracteres a força a um número - ou seja, é
(- 9 "5")
igual a4
.fonte
PHP, 46/41/40 bytes
Vários seletores de dígitos para comparação. Eu pensei que "9 dígitos" seria o mais curto, mas o caso especial necessário para manter um zero fora do primeiro dígito o sobrecarrega.
Alimentado pelos argumentos da CLI:
fonte
Ruby, 21 bytes
Um programa completo. Corra com a
-n
bandeira. Usa a seguinte mapeamento:n -> n%2+1
.fonte
JavaScript (ES6), 41
O truque% 9 + 1 é emprestado da resposta de Suever. Pela primeira vez,
.reduce
bate.map
. Observe que o+=
operador é usado para evitar parênteses.fonte
Perl, 18 bytes
Inclui +1 para
-p
Execute com as linhas de entrada no STDIN. A saída é 1, exceto 2, quando a diagonal é 1
cantor.pl
fonte
Pitão, 14 bytes
Experimente online!
fonte