Desafio
Mark é um aluno que recebe suas N
notas de forma concatenada em uma única linha.
O desafio é separar suas marcas, sabendo que cada marca só pode ser 0
ou 1
ou 2
ou 3
ou 4
ou 5
ou 6
ou 7
ou 8
ou 9
ou 10
.
Entrada
N
número natural e uma linha.
Saída
Um conjunto de números naturais.
Exemplo
N, One line------------------> Set of marks
3, '843'---------------------> [8, 4, 3]
1, '0'-----------------------> [0]
2, '1010'--------------------> [10,10]
3, '1010'--------------------> [1,0,10] or [10,1,0]
4, '1010'--------------------> [1,0,1,0]
9, '23104441070'-------------> [2, 3, 10, 4, 4, 4, 10, 7, 0]
12,'499102102121103'---------> [4, 9, 9, 10, 2, 10, 2, 1, 2, 1, 10, 3]
5, '71061'-------------------> [7, 1, 0, 6, 1]
11,'476565010684'------------> [4, 7, 6, 5, 6, 5, 0, 10, 6, 8, 4]
4, '1306'--------------------> [1, 3, 0, 6]
9, '51026221084'-------------> [5, 10, 2, 6, 2, 2, 10, 8, 4]
14,'851089085685524'---------> [8, 5, 10, 8, 9, 0, 8, 5, 6, 8, 5, 5, 2, 4]
11,'110840867780'------------> [1, 10, 8, 4, 0, 8, 6, 7, 7, 8, 0]
9, '4359893510'--------------> [4, 3, 5, 9, 8, 9, 3, 5, 10]
7, '99153710'----------------> [9, 9, 1, 5, 3, 7, 10]
14,'886171092313495'---------> [8, 8, 6, 1, 7, 10, 9, 2, 3, 1, 3, 4, 9, 5]
2, '44'----------------------> [4, 4]
4, '9386'--------------------> [9, 3, 8, 6]
Regras
- Quando várias saídas são possíveis, dê apenas uma saída.
- Somente a marca do valor
10
está em duas casas decimais, outras estão em uma casa decimal. - A entrada e saída podem ser fornecidas em qualquer formato conveniente
- Não há necessidade de lidar com entradas inválidas
- Um programa completo ou uma função são aceitáveis. Se uma função, você pode retornar a saída em vez de imprimi-la.
- Se possível, inclua um link para um ambiente de teste on-line para que outras pessoas possam experimentar seu código!
- As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
code-golf
string
array-manipulation
mdahmoune
fonte
fonte
n, 'string'
de código Python que eu usei para obter os pares do bloco de texto de exemplo copypasted:spl = [item.split('-')[0] for item in text.split('\n')]
Respostas:
Braquilog ,
2321 bytes-2 bytes graças a Fatalize
Experimente online!
A entrada é um par
[Line, N]
.Este é o meu primeiro programa Brachylog, então provavelmente há muito espaço para melhorias.
É muito lento quando o comprimento da linha> 7.
Explicação:
(*)
ịṫ?
verifica se não há zeros à esquerda. Ele converte a string em número inteiro e depois volta para a string e compara com a string original.fonte
ị
e para a verificação de zero:h~c.{ℕ≤10}ᵛ&t~l
. Provavelmente, isso é mais lento, pois a desconcatenação em números inteiros deve funcionar mesmo para números desconhecidos através de restrições, o que a torna ineficiente.h
et
obter o primeiro / último elemento é mais eficiente do que usar∋
para ambos (o que na maioria dos programas nem funciona)).Perl 6 , 25 bytes
Experimente online!
Bloco de código anônimo que pega um número e uma string e retorna como um objeto Match.
Explicação:
fonte
Python 3 , 47 bytes
Experimente online!
Pega a "linha única" como uma bytestring com bytes brutos
\x00 - \x09
. Se não for aceitável:Python 3 , 56 bytes
Experimente online!
Toma "uma linha" como bytestring.
fonte
V ,
17, 12 bytesExperimente online!
Eu estava contente com 17 bytes, mas 05AB1E veio com 13, e não pude deixar um desafio sem resposta. : D
Hexdump:
Solução alternativa:
Infelizmente, isso substitui
10
por1 0
fonte
Ruby , 57 bytes
Experimente online!
Pode não ser a abordagem mais eficiente, mas parece uma idéia divertida substituir temporariamente
10
um hexágonoA
, o que aliás também é uma marca alta (se considerarmos o sistema de classificação AF :))fonte
Haskell , 68 bytes
Experimente online!
Avidamente leva 10 segundos, desde que haja mais dígitos do que marcas restantes.
fonte
JavaScript,
5752 bytesExperimente Online
fonte
Python 3 ,
71 6859 bytesabaixo outros 9 bytes graças ao ovs.
Experimente online!
Eu estava inicialmente tentando usar
str.partition()
recursivamente, masreplace
me deu um tapa na cara pouco tempo depois. Alguém pode melhorar isso?Além disso, aqui está um link TIO que eu usei para transformar os casos de teste em algo mais copiável / colável
fonte
: [c
e'x' else
e10 for
<number>e
,<letter><number>
,f'
.lambda n,s:[int(c,11)for c in s.replace('10','a',len(s)-n)]
.Haskell , 98 bytes
Experimente online ou teste tudo!
Explicação
A função
s
faz todas as divisões possíveis, por exemplo:"1010"
torna - se[[1,0,1,0],[10,1,0],[1,0,10],[10,10]]
, observe como as divisões mais longas terminam no início (porque1:0:y
vem antes10:y
).Com isso em mente, podemos pegar todos esses valores e filtrar os pontos
y
ondey == take n y
também mantém divisões menores que o necessário. Por exemplo, com4
deixamos a lista igual[[1,0,1,0],[10,1,0],[1,0,10],[10,10]]
.Agora podemos apenas obter o primeiro elemento dessa lista porque as entradas sempre serão válidas (por exemplo
5!"1010"
,[1,0,1,0]
também dariam , mas não precisamos lidar com isso).Nota: De alguma forma, eu contei errado. Tem
y==take n y
o mesmo comprimento delength y==n
: Sfonte
Perl 5
-plF
, 39 bytesExperimente online!
fonte
Limpo , 128 bytes
Experimente online!
fonte
05AB1E , 13 bytes
Experimente online! ou como testes
Explicação
fonte
JavaScript (Nó Babel) ,
70 6959 bytesToma entrada como
(n)(line)
.Experimente online!
Comentado
JavaScript (ES6),
6459 bytesGuardado 5 bytes graças a @ guest271314
Toma entrada como
(n)(line)
.Experimente online!
Comentado
fonte
s.match()
retorna uma matriz de seqüências de caracteres, mas a"10"
pode ser dividida em[1,0]
(2 inteiros) na função de retorno de chamada deflatMap()
.eval(`[${s}]`.replace('1,0',10))
Java (OpenJDK 8) , 78 bytes
Um bom one-liner usando a API de fluxos.
Experimente online!
Como funciona
fonte
R , 63 bytes
Enquanto o comprimento da string for maior que
n
, substitua os próximos 10 que você alcançar por um":"
(o caractere ASCII após 9). Em seguida, divida em números, obtendo o valor ASCII de cada caractere na sequência.Experimente online!
fonte
Vermelho , 91 bytes
Experimente online!
fonte
Geléia , 18 bytes
Experimente online!
fonte