Desafio:
Entrada:
Uma lista classificada de números inteiros positivos.
Saída:
A quantidade de números inteiros que ainda estão exatamente no mesmo índice, depois de girar os dígitos em cada número inteiro, seu índice de vezes para a esquerda e classificar a lista modificada novamente.
Exemplo:
Entrada: [8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788]
Saída (indexação baseada em 0): 6
Saída (indexação baseada em 1):5
Por quê?
Indexação baseada em 0:
After rotating each: [8,94,73,102,592,276,8227,3338,9217,63784,89487,7887471]
Sorted again: [8,73,94,102,276,592,3338,8227,9217,63784,89487,7887471]
Input indices: 0 1 2 3 4 5 6 7 8 9 10 11
Original input-list: [8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788]
Modified list: [8,73,94,102,276,592,3338,8227,9217,63784,89487,7887471]
Modified indices: 0 2 1 3 5 4 7 6 8 9 10 11
Equal indices: ^ ^ ^ ^ ^ ^
So the output is: 6
Indexação baseada em 1:
After rotating each: [8,49,37,021,925,762,2278,3383,2179,37846,94878,8874717]
Sorted again: [8,(0)21,37,49,762,925,2179,2278,3383,37846,94878,8874717]
Input indices: 1 2 3 4 5 6 7 8 9 10 11 12
Original input-list: [8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788]
Modified list: [8,21,37,49,762,925,2179,2278,3383,37846,94878,8874717]
Modified indices: 1 4 3 2 6 5 9 7 8 10 11 12
Equal indices: ^ ^ ^ ^ ^
So the output is: 5
Regras do desafio:
- A lista de entrada é garantida para conter apenas números inteiros positivos.
- A lista de entrada é garantida para ser classificada do menor para o maior.
- A lista de entrada é garantida para conter pelo menos dois itens.
- Como você pode ver acima, a indexação com base em 0 e em 1 é permitida. Indique em sua resposta qual dos dois você usou, pois os resultados podem diferir de acordo!
- Os
0
s iniciais após a rotação são ignorados, o que pode ser visto no exemplo com base em 1 acima, onde o número inteiro102
se torna021
após a rotação e é tratado como21
. - Os números inteiros são garantidos exclusivos na lista de entrada e permanecem únicos após a conclusão das rotações.
- Observe que apenas observamos as posições dos números inteiros rotacionados em correlação com as posições da entrada, e não com os valores da lista de entradas. Para esclarecer o que quero dizer com isso: com a lista de entrada
[1234,3412]
e a indexação baseada em 1, a lista torna-se[2341,1234]
após a rotação de cada número inteiro, a quantidade de vezes que é o índice e, em seguida, quando a classificação se torna[1234,2341]
. Embora a lista de entrada original e a lista girada contenham o número inteiro1234
na posição inicial, elas não são as mesmas! O rodado1234
foi3412
antes. A saída indexada em 1 para esta lista de entrada é0
, portanto , uma vez que os dois números inteiros trocaram suas posições. - A entrada é flexível. Pode ser uma lista / fluxo / array de números inteiros / strings / matrizes de dígitos, etc. Por favor, indique o que você usou se não aceitar as entradas como números inteiros.
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta com as regras de E / S padrão , para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código (ou seja, TIO ).
- Além disso, é altamente recomendável adicionar uma explicação para sua resposta.
Casos de teste:
Input: [8, 49, 73, 102, 259, 762, 2782, 3383, 9217, 37846, 89487, 7471788]
0-based output: 6
1-based output: 5
Input: [1234, 3412]
0-based output: 2
1-based output: 0
Input: [2349, 2820, 17499, 21244, 29842, 31857, 46645, 56675, 61643, 61787]
0-based output: 3
1-based output: 0
Input: [4976, 11087, 18732, 22643, 52735]
0-based output: 2
1-based output: 3
Input: [4414, 5866, 7175, 8929, 14048, 16228, 16809, 19166, 24408, 25220, 29333, 44274, 47275, 47518, 53355]
0-based output: 4
1-based output: 4
Input: [11205, 16820, 63494]
0-based output: 1
1-based output: 3
Sinta-se à vontade para gerar mais casos de teste aleatórios com (ou inspirar-se) neste programa 05AB1E não usado , em que a entrada é do tamanho da lista aleatória (NOTA: a saída deste gerador pode não estar em conformidade com a regra "Os números inteiros são garantidos exclusivamente em a lista de entrada e é garantido que permaneça único após a conclusão das rotações ", lembre-se disso ao usá-lo.)
Respostas:
R ,
114107 bytes-5 bytes graças a Giuseppe.
Superado por digEmAll.
Experimente online!
Indexado a 0.
Versão não destruída:
Para girar os
b
dígitos de um número inteiro porj
posições, o código repete os dígitos várias vezes e, em seguida, leva os dígitos nas posiçõesj+1
paraj+b
. Por exemplo, para girar102
4 vezes, mantenha os valores marcados com umx
(posições 5 a 7):então o resultado é
021
.fonte
seq(a=...)
. Espero que exista algumaMap
mágica para executar, mas minhas tentativas deixaram a contagem de bytes inalterada na melhor das hipóteses.Map
pode ser um pouco caro, já que ofunction
padrão é de pelo menos 9 bytes, mas se você alternar para a indexação 0, podemos fazer 109 bytesseq(a=l)
pode serseq(l)
o tempo que a entrada tiver pelo menos 2 elementos (perguntei se isso está OK).05AB1E , 9 bytes
Experimente online!
Usa indexação baseada em 0.
Explicação:
fonte
Japonês
-x
,109 bytesBaseado em 0
Tente
fonte
Geléia , 9 bytes
Experimente online!
Link monádico que pega uma lista de números inteiros e retorna um número inteiro indicando o número de números inteiros que permanecem no local após a execução da rotação usando a indexação 1.
Explicação
fonte
Python 2 ,
1041009793 bytesExperimente online!
Indexação baseada em 0.
Primeiro gira cada número e depois compara o resultado com o resultado, mas classificado.
Salvou:
fonte
input()
:)def
imediatamente (eles são bastante inúteis no Python 2, ao contrário do Python 3).s
.R ,
908885 bytesExperimente online!
Código desenrolado com explicação:
fonte
J ,
2826 bytes-2 bytes graças a Jonah
Experimente online!
fonte
"0
( Experimente on-line! ), Mas fora isso, não vi uma maneira de jogar golfe.Stax ,
1110 bytesExecute e depure
Este programa usa a indexação baseada em 0 e recebe a entrada como uma matriz de seqüências de caracteres. Salvei um byte aproveitando a oportunidade dos novos esclarecimentos.
fonte
Perl 5
-pa
, 80 bytesExperimente online!
Recebe entrada como números separados por espaço no STDIN; dá um resultado baseado em 1.
fonte
Pitão , 15 bytes
Experimente online! Usa indexação baseada em 0.
fonte
s
- a versão original do código tevev
o mesmo efeito. Vou editá-lo de voltaAPL + WIN,
23, 2119 bytes2 bytes salvos inserindo os números inteiros como um vetor aninhado de caracteres
1 indexado.
Experimente online! Cortesia de Dyalog Classic
fonte
JavaScript (Node.js) ,
1079995 bytes-8 bytes Obrigado @Shaggy por aceitar a matriz de strings. Mais golfed 4 bytes disto. Não acionará erro de memória neste momento.
Experimente online!
JavaScript (Node.js) ,
111107 bytes-4 bytes Obrigado @Arnauld!
Experimente online!
JavaScript (Node.js) ,
113111 bytesExperimente online!
Indexado a 0. Pode acionar erro de memória para entradas muito grandes.
fonte
Perl 6 , 50 bytes
Experimente online!
Indexação baseada em 0. Também expôs um bug do Rakudo .
Explicação
fonte
PHP ,
159141134130 bytesExperimente online!
Indexação baseada em zero.
Ungolfed:
fonte
.=''
?K (Kona) ,
2521bytes-4 bytes graças a ngn!
Experimente online!
fonte
{.:y!x}'[$x;t:!#x]
->.:'(t:!#x)!'$x
Consulta T-SQL, 99 bytes
O sql não tem método rotativo, então tive que implementar minha própria sintaxe, já que essa é uma consulta, que tinha que ser feita sem loop.
Indexação baseada em 0.
Usando uma variável de tabela como entrada.
Experimente online
fonte
Ícone , 141 bytes
Experimente online!
Indexação baseada em 1
fonte
Perl 5 , 104 bytes
Experimente online!
Indexação baseada em 0 no Perl. Ungolfed e comentou:
fonte
Ruby
-ap
, 77 bytes1 indexado. O temp foi excluído anteriormente porque perdi parte das especificações.
-p
lê uma linha de STDIN e sai$_
no final.-a
divide essa linha de leitura por espaços e a salva como$F
.Experimente online!
fonte
[...].join.to_i
poreval [...]*''
eval
o interpretará como um número base-8, o que pode atrapalhar nossas contagens ...Wolfram Language (Mathematica) , 65 bytes
Experimente online!
Baseado em 1. Tomamos a entrada como uma lista de listas de dígitos, o que funciona porque o Mathematica ordena as listas por comprimento e, em seguida, lexicograficamente, ou seja, exatamente como os números originais.
fonte
Bash ,
204201 bytesA única coisa interessante aqui (possivelmente) é o uso de
eval
. O algoritmo também é desajeitado, pois cria uma lista classificada e a lê para determinar índices / índices alterados.Solução baseada em 1. Meus agradecimentos a @RobinRyder pelo algoritmo de rotação útil.
Experimente online!
Código revisado após os comentários de Kevin; Experimente online!
fonte
;}
. Além disso, você pode alterar seu primeiro loop parafor((i=0;++i<=$#;));
.Scala ,
200160 bytesExperimente online!
Indexado a 0. 160 caracteres após remover recuo e novas linhas. Isso imprime 6:
fonte