Aqui está um código simples de tamanho de mordida (tamanho de byte?): Dada uma lista não vazia de números inteiros positivos menores que 10, imprima um matriz diagonal de blocos, em que a lista especifica o tamanho dos blocos, em ordem. Os blocos devem consistir em números inteiros positivos menores que 10. Portanto, se você receber como entrada
[5 1 1 2 3 1]
Sua saída pode ser, por exemplo,
1 1 1 1 1 0 0 0 0 0 0 0 0
1 1 1 1 1 0 0 0 0 0 0 0 0
1 1 1 1 1 0 0 0 0 0 0 0 0
1 1 1 1 1 0 0 0 0 0 0 0 0
1 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 0 0 0 0
0 0 0 0 0 0 0 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 1 1 1 0
0 0 0 0 0 0 0 0 0 1 1 1 0
0 0 0 0 0 0 0 0 0 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 1
ou
1 2 3 4 5 0 0 0 0 0 0 0 0
6 7 8 9 1 0 0 0 0 0 0 0 0
2 3 4 5 6 0 0 0 0 0 0 0 0
7 8 9 1 2 0 0 0 0 0 0 0 0
3 4 5 6 7 0 0 0 0 0 0 0 0
0 0 0 0 0 8 0 0 0 0 0 0 0
0 0 0 0 0 0 9 0 0 0 0 0 0
0 0 0 0 0 0 0 1 2 0 0 0 0
0 0 0 0 0 0 0 3 4 0 0 0 0
0 0 0 0 0 0 0 0 0 5 6 7 0
0 0 0 0 0 0 0 0 0 8 9 1 0
0 0 0 0 0 0 0 0 0 2 3 4 0
0 0 0 0 0 0 0 0 0 0 0 0 5
ou algo assim. Os elementos na matriz devem ser separados por espaços (únicos) e as linhas separadas por novas linhas (únicas). Não deve haver espaços iniciais ou finais em nenhuma linha. Você pode ou não imprimir uma nova linha à direita.
Você pode escrever uma função ou programa, recebendo entrada via STDIN (ou alternativa mais próxima), argumento de linha de comando ou argumento de função, em qualquer formato conveniente de string ou lista (desde que não seja pré-processado). No entanto, o resultado deve ser impresso em STDOUT (ou alternativa mais próxima), em vez de retornar de uma função, digamos.
Você não deve usar nenhuma função interna projetada para criar matrizes diagonais de bloco.
Isso é código de golfe, então a submissão mais curta (em bytes) vence.
Classificação
Espero que as linguagens baseadas em array (como J e APL) tenham vantagem aqui, mas não quero que isso desencoraje as pessoas a tentarem fazer o melhor que puderem no idioma de sua escolha. Então, aqui está um snippet de pilha para gerar uma classificação regular e uma visão geral dos vencedores por idioma. Então, por que não tentar conseguir uma vaga nesse último?
Para garantir que sua resposta seja exibida, inicie-a com um título, usando o seguinte modelo de remarcação:
# Language Name, N bytes
onde N
está o tamanho do seu envio. Se você melhorar sua pontuação, poderá manter as pontuações antigas no título, identificando-as. Por exemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
[:=/~]#<\
contam para a sua pontuação. Além disso,=/~@#<\
por dois bytes extras cortados.