Notas Emoji
O professor Pedro precisa da tua ajuda. Enquanto escrevia um programa
de investigação, fez pipe das notas de Programação Competitiva
para um conversor de texto em emoji, sem guardar uma cópia do ficheiro
original. O programa substituiu letras e algarismos por símbolos Unicode
e acrescentou espaços no fim de cada linha. A seed do gerador
era 42.
Recupera a pauta e apresenta-a numa tabela legível. O professor pede
um programa em C, sem bibliotecas externas e com o
mesmo resultado independentemente da configuração regional do
computador.
A tua tarefa
Descodifica o cabeçalho e cada par nome/nota. Conserva a ordem dos
alunos e os espaços simples dentro dos nomes. Ignora os espaços
acrescentados à direita e volta a alinhar as colunas.
O conversor perdeu a distinção entre maiúsculas e minúsculas. Por
isso, todos os nomes e o cabeçalho de saída são escritos em
maiúsculas. Não é possível recuperar de forma inequívoca a
capitalização original.
Conversão dos símbolos
São aceites exclusivamente as seguintes formas:
A a Z |
A a Z |
Letras ASCII já descodificadas. |
| 🇦 a 🇿 |
A a Z |
Indicadores regionais U+1F1E6 a U+1F1FF, por ordem alfabética. Cada
ponto de código é uma letra, mesmo quando dois aparecem como uma
bandeira. |
| 🅰, 🅱, Ⓜ, 🅾, 🅿 |
A, B, M, O, P |
U+1F170, U+1F171, U+24C2, U+1F17E, U+1F17F. Cada símbolo pode ser
seguido de U+FE0F. |
0 a 9 |
0 a 9 |
Algarismos ASCII. |
| 0⃣ a 9⃣, ou 0️⃣ a 9️⃣ |
0 a 9 |
Algarismo ASCII, opcionalmente U+FE0F, seguido de U+20E3. |
| Espaço ASCII |
Espaço |
U+0020. |
U+FE0F é um seletor de apresentação: nas posições indicadas, altera o
desenho do símbolo, não o seu significado. Não é aceite isoladamente,
depois de um indicador regional, ou depois de um algarismo sem U+20E3.
Uma linha pode misturar todas as formas aceites. Não há acentos nem
letras minúsculas nos nomes.
Entrada
- Texto UTF-8 na entrada padrão, até ao fim do ficheiro. As linhas
terminam em LF ou CRLF; a última pode não ter terminador.
- A primeira linha não vazia contém
NOME, entre 2
e 32 espaços, e NOTA, nas formas acima.
- Seguem-se 1 a 10 000 alunos, um por linha. Cada
nome descodificado tem entre 1 e 80 caracteres, começa
e acaba numa letra e só contém letras A–Z e espaços simples entre
palavras.
- O nome e a nota são separados por 2 a 32 espaços. A nota tem um ou
dois algarismos e representa um inteiro de 0 a 20,
inclusive. Um zero inicial é permitido.
- Cada linha pode terminar em 0 a 16 espaços extra. Podem existir
linhas vazias ou só com espaços antes do cabeçalho e depois do último
aluno, mas não no meio da pauta.
- Os dados do juiz respeitam estas regras.
Saída
Seja W o máximo entre 4 e o comprimento do nome mais
longo, contado depois da descodificação. Escreve:
NOME, completado à direita com espaços até ocupar W
caracteres, seguido de dois espaços e NOTA.
- Para cada aluno, o nome completado até W caracteres, dois espaços e
a nota decimal sem zeros iniciais.
- A linha
Cumprimentos algorítmicos!.
Não acrescentes espaços depois das notas. Todas as linhas de saída,
incluindo a última, terminam em LF. A frase final mantém o acento e é
escrita em UTF-8.
Exemplo
Entrada:
🇳🅾️Ⓜ️🇪 🇳🅾️🇹🅰️
🅰️🇳🅰️ 2⃣0⃣
🇱🇺🇮🇸 0️⃣7️⃣
Saída:
NOME NOTA
ANA 20
LUIS 7
Cumprimentos algorítmicos!
ANA tem um espaço de preenchimento e dois espaços de
separação.
Limites
Tempo: 2 segundos. Memória: 64
MiB.
Exemplos para descarregar
Entrada · Saída esperada · Pauta de vinte alunos · Saída dessa pauta.
Diogo Peralta Cordeiro · Programação Competitiva (CC3036) · DCC/FCUP
· 2021